BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel...

35
BiPRO-Tag 2012 5./6. Juni 2012 | Novotel Düsseldorf /Neuss

Transcript of BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel...

Page 1: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 2012

5./6. Juni 2012 | Novotel Düsseldorf /Neuss

Page 2: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

Von der WSDL zum Service-

Consumer

Page 3: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Von der WSDL zum Service-Consumer

■ Ausgangssituation

■ Ziel

■ Wege zum Ziel

■ Live-Coding

■ Demo

■ Anpassung an VU-individuelle Erweiterung

■ Lessons learned

■ Diskussion

Inhalt

Page 4: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

BiPRO-konformer Webservice zur Tarifierung

einer Tierhalterhaftpflichtversicherung

Authentifizierung erfolgt am zugehörigen STS

mit Benutzername und Kennwort

Endpoint-URL und Zugangsdaten sind

bekannt

Relevante BiPRO-Normen sind bekannt

Ausgangssituation

Page 5: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Ziel uc TAA-Prozess

User Prov ider

Dateneingabe

Authentifizierung

Berechnung

Ergebnisausgabe

RequestSecurityToken

RequestSecurityTokenResponse

GetQuote

GetQuoteResponse

Page 6: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Plattformen

• PC (Windows)

• iPad (IOS)

Ziel

Page 7: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Service-Consumer als Client-Server-

Architektur mit Java-basiertem Server

Wege zum Ziel

Consumer Provider

Java

.Net

IOS

Page 8: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

MVC-Pattern

Wege zum Ziel

View Model

Controller

Page 9: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

MVC-Pattern mit

Wege zum Ziel

View Model

Controller

Dialog

Prozess

Service

Page 10: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Axis (Apache eXtensible Interaction System) ist eine

SOAP-Engine zur Konstruktion von darauf basierenden

Web Services und Client-Anwendungen

Axis erschien 2002 als Neuentwicklung und Nachfolger

von Apache SOAP, das auf dem IBM-Framework IBM

SOAP basierte.

Axis2 erschien 2005 als vollständige Neuentwicklung der

bisherigen Axis-Version

Axis2 wird von der Apache Software Foundation entwickelt

und unter der Apache Lizenz 2.0 vertrieben

Aktuelle Version: 1.6.2 vom 17.04.2012

(Quelle: Wikipedia u. Apache.org, Stand 27.05.2012)

Wege zum Ziel

Page 11: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

1. Client-Stub generieren mit dem Axis2-Werkzeug wsdl2java

2. Generierten Code patchen

3. Mithilfe des generierten Codes Service-Consumer erstellen

Live-Coding

Page 12: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Client-Stub generieren mit dem Axis2-Werkzeug wsdl2java

wsdl2java.bat -d xmlbeans -o <destination> -uri <wsdl-url>

Binding-Mechanismus

(Default ADB scheitert an der

Komplexität des Schemas)

Zielverzeichnis für

Code-Generierung

URL der Service-

Beschreibung (WSDL)

Live-Coding

Page 13: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Generierten Code patchen

1. Stub.getPolicy: private static org.apache.neethi.Policy getPolicy (java.lang.String policyString) {

java.io.ByteArrayInputStream bais = new java.io.ByteArrayInputStream(policyString.getBytes());

return org.apache.neethi.PolicyEngine.getPolicy(bais);

}

ersetzen durch private static org.apache.neethi.Policy getPolicy (java.lang.String policyString) {

java.io.ByteArrayInputStream bais = new java.io.ByteArrayInputStream(policyString.getBytes());

try

{

StAXOMBuilder builder = new StAXOMBuilder(bais);

OMElement documentElement = builder.getDocumentElement();

return org.apache.neethi.PolicyEngine.getPolicy(documentElement);

}

catch (XMLStreamException e)

{

throw new RuntimeException( e);

}

}

2. Global <wsa:Address />

ersetzen durch <wsa:Address xmlns:wsa=\"http://schemas.xmlsoap.org/ws/2004/08/addressing\" />

Live-Coding

Page 14: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Service-Consumer: Ablauf

■ Stub instanziieren

■ Security-Token anfordern

■ Norm-konformes Request-Objekt erzeugen

■ Request an Server senden

■ Ergebnis (Beitrag) aus Response entnehmen

Live-Coding

Page 15: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Request-Objektdiagramm class Request

«soap»

Env elope

«soap»

Header

«soap»

Body

«wsse»

Security«wsc»

SecurityContextToken

+ Indentifier :String

«tarifierung»

GetQuote«tarifierung»

Request

«tarifierung»

Tarifierung

«tarifierung»

Verkaufsprodukt

«tarifierung»

Aktiv itaet

+ AktivitaetID :allgemein::AktivitaetID

«tarifierung»

Gegenstand

+ GegenstandID :allgemein::GegenstandID

«tarifierung»

Produkt

«tarifierung»

VersicherungssummeOderLeistung

+ ArtID :tarifierung::ArtID = Versicherungssumme

+ Werteinheit :tarifierung::Werteinheit = 20

+ Wert :tarifierung::Wert

+ Waehrung :tarifierung::Waehrung

«komposit»

Deckung

+ ArtID :komposit::ArtID = 0401

«tarifierung»

Elementarprodukt

«komposit»

VersichertesWagnis

+ AktivitaetID :allgemein::AktivitaetID

«haftpflicht»

Haftpflichtwagnis

+ Wagnisart :haftpflicht::Wagnisart = 3001

«haftpflicht»

Tierhalter

«haftpflicht»

VersichertesTier

+ GegenstandID :allgemein::GegenstandID

Page 16: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

public Output compute( final Input input) throws Exception {

/* Stub instanziieren */

THVDemoService21511Stub stub = new THVDemoService21511Stub( "http://192.168.7.50:8080/pos/services/THVDemoService-2.1.5.1.0");

/* Security-Token anfordern */

STSRequestService.Token tok = STSRequestService.getToken( "192.168.7.50", 8080, "/pos/services/STService-2.1.2.1.0", "***", "***");

OMElement secElem = STSRequestService.getSecurityElement( tok);

stub._getServiceClient().addHeader( secElem);

/* Norm-konformes Request-Objekt erzeugen */

GetQuoteDocument qReq = GetQuoteDocument.Factory.newInstance();

GetQuote getQuote = qReq.addNewGetQuote();

CTQuoteRequest quoteReq = getQuote.addNewRequest();

CTTarifierung tarif = quoteReq.addNewTarifierung();

CTVerkaufsprodukt vprod = tarif.addNewVerkaufsprodukt();

CTProdukt prod = vprod.addNewProdukt();

prod.setBeginn( "2012-07-01");

prod.setGewuenschteZahlungsweiseArray(

new STZahlungsweise.Enum[]{STZahlungsweise.X_1});

prod.setSparte( STSparte.X_040);

//040 = Haftpflicht, s. bipro-datentypen-2.1.4.xsd

prod.setKennung( "STANDARD");

CTDeckung deck = CTDeckung.Factory.newInstance();

STEDeckung dArtID = STEDeckung.Factory.newInstance();

dArtID.set( "0401");

//0401 = Haftplicht, s. bipro-datentypen-2.1.4.xsd

deck.setArtID( dArtID);

CTVersicherungssummeOderLeistung sum = deck.addNewVersicherungssummeOderLeistung();

STEVersicherungssummeOderLeistung sArtID = STEVersicherungssummeOderLeistung.Factory.newInstance();

sArtID.set( "Versicherungssumme");

sum.setArtID( sArtID);

sum.setWaehrung( STWaehrungsschluessel.EUR);

sum.setWerteinheit( STWerteinheit.X_20);

//20 = Waehrung gem. Waehrungsschlüssel, s. bipro-datentypen-2.1.4.xsd

sum.setWert( new BigDecimal( input.getVersicherungssumme()));

CTVersichertesWagnis wag = deck.addNewVersichertesWagnis();

wag.setAktivitaetID("1");

prod.setElementarproduktArray(

new CTElementarprodukt[]{ deck});

Consumer-Code (1/3)

Page 17: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

CTHaftpflichtwagnis hWag = CTHaftpflichtwagnis.Factory.newInstance();

hWag.setAktivitaetID( wag.getAktivitaetID());

STEWagnisart wArt = STEWagnisart.Factory.newInstance();

wArt.set( "3001");//3001 = Hund, s. bipro-datentypen-2.1.4.xsd

hWag.setWagnisart( wArt);

CTTierhalter th = hWag.addNewTierhalter();

CTVersichertesTier vtier = th.addNewVersichertesTier();

vtier.setGegenstandID( "1");

tarif.setAktivitaetArray( new CTAktivitaet[]{hWag});

CTTier tier = CTTier.Factory.newInstance();

tier.setGegenstandID( vtier.getGegenstandID());

CTTierErweiterung erw = CTTierErweiterung.Factory.newInstance();

erw.setListenHund( input.getListenhund());

tier.setErweiterung( erw);

tarif.setGegenstandArray( new CTGegenstand[]{ tier});

/* Request an Server senden */

GetQuoteResponseDocument respDoc = stub.getQuote( qReq);

/* Ergebnis aus Reponse entnehmen */

CTQuoteResponse quoteResp = respDoc.getGetQuoteResponse().getResponse();

CTStatus st = quoteResp.getStatus();

System.out.println( "Status.ID=" + st.getStatusID());

final List<String> lstMeld = new ArrayList<String>();

for ( CTMeldung meld : st.getMeldungArray()) {

lstMeld.add( "[" + meld.getIdentifikationsnummer() + "] " + meld.getText());

}

final int statusCode = quoteResp.getStatus().getStatusID().intValue(); //OK = 1; NOK = 2

final CTBeitrag beitrag = statusCode == 1 ? quoteResp.getTarifierung().getVerkaufsproduktArray(0).getProduktArray(0).getBeitragArray(0) : null;

Consumer-Code (2/3)

Page 18: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

return new Output() {

@Override

public String getZahlweise() {

if ( statusCode == 1) { //OK

switch (statusCode) {

// Werte s. bipro-datentypen-2.1.4.xsd

case STZahlungsweise.INT_X_1:

return "jährlich";

case STZahlungsweise.INT_X_2:

return "halbjährlich";

case STZahlungsweise.INT_X_4:

return "vierteljährlich";

case STZahlungsweise.INT_X_5:

return "sonstige";

case STZahlungsweise.INT_X_6:

return "einmal";

case STZahlungsweise.INT_X_7:

return "täglich";

case STZahlungsweise.INT_X_8:

return "monatlich";

case STZahlungsweise.INT_X_9:

return "beitragsfrei";

}

return "?" + statusCode + "?";

} else {

return "";

}

}

@Override

public List<String> getMeldungen() {

return lstMeld;

}

@Override

public double getBeitragGemZahlweise() {

return statusCode == 1 ? beitrag.getBetrag().doubleValue() : 0.0;

}

@Override

public boolean isOK() {

return statusCode == 1;

}

};

}

Consumer-Code (3/3)

Page 19: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

■ Code neu generieren

■ Patches anwenden

■ Service-Consumer erweitern

■ Frontend anpassen

• View (Dialog)

• Model (Service)

• Controller (Prozess)

■ Test

VU-individuelle Erweiterung

Page 20: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Erweiterung: Objekt-Diagramm class Request

«soap»

Env elope

«soap»

Header

«soap»

Body

«wsse»

Security«wsc»

SecurityContextToken

+ Indentifier :String

«tarifierung»

GetQuote«tarifierung»

Request

«tarifierung»

Tarifierung

«tarifierung»

Verkaufsprodukt

«tarifierung»

Aktiv itaet

+ AktivitaetID :allgemein::AktivitaetID

«tarifierung»

Gegenstand

+ GegenstandID :allgemein::GegenstandID

«tarifierung»

Produkt

«tarifierung»

VersicherungssummeOderLeistung

+ ArtID :tarifierung::ArtID = Versicherungssumme

+ Werteinheit :tarifierung::Werteinheit = 20

+ Wert :tarifierung::Wert

+ Waehrung :tarifierung::Waehrung

«komposit»

Deckung

+ ArtID :komposit::ArtID = 0401

«tarifierung»

Elementarprodukt

«komposit»

VersichertesWagnis

+ AktivitaetID :allgemein::AktivitaetID

«haftpflicht»

Haftpflichtwagnis

+ Wagnisart :haftpfl icht::Wagnisart = 3001

«haftpflicht»

Tierhalter

«haftpflicht»

VersichertesTier

+ GegenstandID :allgemein::GegenstandID

«allgemein»

Erweiterung

«provider»

TierErweiterung

+ ListenHund :bool

Page 21: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

<?xml version="1.0" encoding="UTF-8"?>

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">

<soapenv:Header> <!-- …-- > </soapenv:Header>

<soapenv:Body>

<tar:getQuote xmlns:tar="http://www.bipro.net/namespace/tarifierung"

xmlns:all="http://www.bipro.net/namespace/allgemein"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<tar:Request>

<tar:Tarifierung>

<tar:Verkaufsprodukt> <!-- … --></tar:Verkaufsprodukt>

<tar:Aktivitaet xmlns:haf="http://www.bipro.net/namespace/haftpflicht"

xsi:type="haf:CT_Haftpflichtwagnis">

<all:AktivitaetID>1</all:AktivitaetID>

<haf:Wagnisart>3001</haf:Wagnisart>

<haf:Tierhalter>

<haf:VersichertesTier>

<all:GegenstandID>1</all:GegenstandID>

</haf:VersichertesTier>

</haf:Tierhalter>

</tar:Aktivitaet>

<tar:Gegenstand xmlns:sac="http://www.bipro.net/namespace/sachen"

xsi:type="sac:CT_Tier">

<all:Erweiterung xmlns:nam="http://www.provider.de/namespace"

xsi:type="nam:CT_TierErweiterung">

<nam:ListenHund>true</nam:ListenHund>

</all:Erweiterung>

<all:GegenstandID>1</all:GegenstandID>

</tar:Gegenstand> </tar:Tarifierung>

</tar:Request>

</tar:getQuote>

</soapenv:Body>

</soapenv:Envelope>

Erweiterung: Request

Page 22: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

...

<bw:fgroup>

<bw:fitems>

<bw:fnum id="I1"><bw:prompt>Vers.-Summe</bw:prompt></bw:fnum>

<bw:fbool id="I2"><bw:prompt>Listenhund</bw:prompt></bw:fbool>

<bw:fcmd id="C1" action="{event('compute')}"><bw:prompt>Beitrag berechnen</bw:prompt></bw:fcmd>

</bw:fitems>

</bw:fgroup>

...

Erweiterung: Dialog

Page 23: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

...

public static interface Input {

public double getVersicherungssumme();

public boolean getListenhund();

}

...

Erweiterung: Service

Page 24: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Neues Merkmal:

private String strSumme;

private boolean bListenhund;

private THVService thvService;

Event-Behandlung:

if ( "I1".equalsIgnoreCase( id)) {

strSumme = val;

} else if ( "I2".equalsIgnoreCase( id)) {

bListenhund = val.equalsIgnoreCase( Component.XVAL_TRUE);

} else {

logWarning( "unexpected event " + evt);

}

Verwendung im Service

THVService.Input inp = new THVService.Input() {

public double getVersicherungssumme() {

return versSum;

}

public getListenhund() {

return bListenhund;

}

};

Erweiterung: Prozess

Page 25: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Demo (Windows-PC)

Page 26: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Demo (iPad)

Page 27: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

BiPRO normiert den Service-Contract:

BiPRO liefert weder fertige Software, noch wird die

Anwendungsarchitektur reglementiert.

Normiert ist lediglich das Verhalten über die Schnittstelle

(Prozess und Datenmodell).

Die Anbindung von Front- und Backend ist nicht normiert und

wird vollständig individuell implementiert.

Bei der Implementierung können existierende Werkzeuge und

Frameworks (Open-Source oder kommerziell) helfen.

Lessons learned

Page 28: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Objekt-orientierter Ansatz (Code-Generierung

mit Java und Axis2) ist möglich:

„Contract-First“-Ansatz (Code-Generierung mit wsdl2java)

funktioniert mit kleineren Anpassungen.

Data-Binding: ADB funktioniert nicht, XMLBeans funktioniert.

Generierter Code teilweise etwas umständlich zu benutzen

(Beispiele: Aufzählungstypen, n-fach Elemente).

Für komplexere Aufgaben muss evtl. eher ein dokument-

orientierter Ansatz gewählt werden.

Lessons learned

Page 29: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

VU-individuelle Erweiterungen:

Erweitertes Schema erfordert erneute Code-Generierung.

Code-Generierung mit wsdl2java weitgehend automatisierbar.

Individualitäten erfordern i.d.R. Anpassungen von Front- und

Backend.

Lessons learned

Page 30: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Lose Kopplung:

Client-Server basierte Anbindungen führen automatisch

einen „Kompatibilitäts-Layer“ ein – Anpassungen an einen

neuen Service-Provider können ggfs. im Server umgesetzt

werden, ohne dass sofort das Frontend angepasst werden

muss.

Sofern Masken und Prozessteuerung dynamisch durch den

Server erfolgt, können neue Funktionen realisiert werden,

ohne das ein neues Release des Clients erfolgen müsste.

Lessons learned

Page 31: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Multikanalfähigkeit:

Mit geeigneten Frameworks ist es einfach, eine einmal

implementierte BiPRO-Anbindung von verschiedenen

Endgeräten aus zu nutzen.

Der Wiederverwendung sind lediglich dort Grenzen gesetzt,

wo ein Endgerät technische Beschränkungen aufweist.

Lessons learned

Page 32: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

Lessons learned

FUNKTiOniert!

Page 33: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss © BISS GmbH 2012

BiPRO funktioniert!

Aufwände bei der Systemintegration werden erheblich

reduziert.

Es bleibt Raum für Individualitäten.

Konkrete Implementierung mit Integration von Front- und

Backends müssen erfolgen.

Die Komplexität sollte nicht unterschätzt werden.

Lessons learned

Page 34: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss 34

Page 35: BiPRO-Tag 2012 · 2020-05-13 · BiPRO-Tag 5./6. Juni 2012 © BISS GmbH 2012| Novotel Düsseldorf/Neuss Von der WSDL zum Service-Consumer Ausgangssituation Ziel Wege zum Ziel Live-Coding

BiPRO-Tag 5./6. Juni 2012 | Novotel Düsseldorf/Neuss