BauinformatikBauinformatik Vertiefte Grundlageng
Graphentheorie6. Semester
Webservice - OrchestrierungWebservice Orchestrierung
Prof. Dr.-Ing. R J S h
Nürnberger Str. 31a2 OG R 204
TU Dresden - Institut für Bauinformatik 1
R. J. Scherer 2. OG, Raum 204
Vom Konzept zum ausführbaren ProzessAusführbarer Prozess
Softwaretechnische Umsetzung der Prozesslogik
SystemmodellTop-Down von der
obersten Ebene bis ins
ProzessmodellLogische Abhängigkeiten zwischen Ereignissen und
Input
obersten Ebene bis ins Detail
Informationsfluss
gFunktionenProzesslogik
Webservice
Webservice
TU Dresden - Institut für Bauinformatik
Output
2
Servicekomposition• Für eine Vielzahl von Problemen werden von unterschiedlichen Herstellern
Services entwickelt• Ein wesentlicher Mehrwert wird dann erreicht, wenn diese einzelnen Services
flexibel zu einer größeren Anwendung kombiniert werden könnenDi K iti f d t di K di ti d S i• Die Komposition erfordert die Koordination der Services
• Zwei Arten der Servicekomposition:– OrchestrierungOrchestrierung – Choreographie
TU Dresden - Institut für Bauinformatik 3
Orchestrierung= Prozessorientierte Komposition verschiedener Services zu einem ausführbaren Prozess• Beschreibt, wie mehrere Services durch Nachrichten miteinander interagieren• Orchestrierte Services können an einer beliebigen (öffentlichen) Stelle in einem Netzwerk
liegen (intern und extern)• Der Prozessfluss (zeitliche Reihenfolge), die Prozesslogik (Bedingungen der Serviceaufrufe)
und die Kommunikation (Übergabe und Zwischenspeicherung von Daten zwischen Services) werden zentral durch ein Prozessmodell gesteuertg
• Die Aktivitäten (Anwendungslogik) der benutzten Services bleiben verborgen (Blackbox)• Der orchestrierte Prozess ist selbst wieder ein Service kann als Subprozess in einen
größeren Prozess eingebettet werden• Kann auf einer Workflowmaschine zum Einsatz gebracht (engl deployed) und ausgeführt• Kann auf einer Workflowmaschine zum Einsatz gebracht (engl. deployed) und ausgeführt
werden• Beispiel für Orchestrierungssprache: BPEL (Business Process Execution Language)
Webservice
ProzesssteuerungProzesssteuerung
TU Dresden - Institut für Bauinformatik4WebserviceWebservice
4
Choreographie= Interaktion von „gleichberechtigten“ Services
• jeder Dienst beschreibt seine eigene Aufgabe in der gesamten Komposition• Es gibt keinen zentralen Punkt, der die Korrektheit und Aufgabenerfüllung kontrolliert. • Dezentrale Prozesssteuerung muss letzten Endes die gleiche Lösung wie zentrale
Prozesssteuerung ergeben• Der Fokus liegt auf dem Nachrichtenaustausch zwischen den Diensten. • Services können an einer beliebigen (öffentlichen) Stelle in einem Netzwerk liegen• Die Aktivitäten (Anwendungslogik) der benutzten Services bleiben verborgen (Blackbox)
Webservice
• Die Aktivitäten (Anwendungslogik) der benutzten Services bleiben verborgen (Blackbox)• Beispiel für Choreographiesprache: WS-CDL (Web Services Choreography Description
Language)Webservice
WebserviceWebservice
Kollaboration
TU Dresden - Institut für Bauinformatik 5
WebserviceWebservice
Vorteile der komponentenbasierten verteilten Softwareentwicklung
• Modularisierbarkeit (Bildung von Systemen und Sub-Systemen)• Schnellere Modifizierbarkeit komplexer Anwendungen
L f i i R d i K• Langfristig Reduzierte Kosten• Qualitätssteigerung• Reduktion der KomplexitätReduktion der Komplexität• Mehr Flexibilität (Anpassung an die Unternehmensprozesse)
TU Dresden - Institut für Bauinformatik 6
Nachteile und Risiken der komponentenbasierten verteilten Softwareentwicklung
• zu Beginn erhöhte Entwicklungskosten• höherer Zeitaufwand
ä li h P l h l• zusätzliche Personalschulungen • kurzfristig keine Kosteneinsparung• bei engen Zeitplänen keine Entwicklung aufbei engen Zeitplänen keine Entwicklung auf
Bausteinbasis möglich
TU Dresden - Institut für Bauinformatik 7
WS-BPEL Einführung• Web Services Business Process Execution Language
Version 2.0, ehemals BPEL4WS (BPEL for
Input
(Webservices)
• Verbindung der Ideen der kalkülbasierten Sprache XLANG von Microsoft und der Graph basierten Sprache
Webservice
XLANG von Microsoft und der Graph-basierten Sprache WSFL von IBM.
• baut auf dem Dienstmodell von WSDL aufWebservice
• Weitere benutzte Standards: XMLSchema, XPath und WS-Adressing
• Ziel: Programmieren im Großen“ mit verteilten
Webservice
• Ziel: „Programmieren im Großen mit verteilten Ressourcen
• Spezifikation siehe:Output
http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html
Output
TU Dresden - Institut für Bauinformatik 8
BPEL Historie• 2002: BPEL4WS 1.0 von Microsoft, IBM & BEA• IBM: Web Services FlowLanguage WSFLIBM: Web Services FlowLanguage WSFL• Microsoft: XLANG• 2003: Beitritt von SAP und Siebel Systems• Weiterentwicklung von OASIS• Offizieller offener Standard
2007 WS BPEL 2 0• 2007: WS-BPEL 2.0• Stand 2009: WS-BPEL Extension for People (BPEL4People) befindet sich bei
OASIS Technical Committee zur Standardisierung
TU Dresden - Institut für Bauinformatik 9
BPEL Sprachelemente• Prozessdefinition
– Prozess & ImportV i bl– Variablen
– Partner Links• Basis-Aktivitäten
i l– Receive & Reply– Invoke– Throw– Assign
• Strukturierende Aktivitäten– Sequence & Flow– if elseif else– ForEach
• Ausnahmebehandlung– Fault-Handler– Event-Handler– Compensation Handler
TU Dresden - Institut für Bauinformatik 10
Basis-Prozessstruktur
StartAusführung der Aktivitäten
sequenziell parallel
viele Aktivitäten
sequenziellsequence
parallelflow
E dEnde
TU Dresden - Institut für Bauinformatik 11
Das BPEL Prozess Datenmodellhttp://docs.oasis-open.org/wsbpel/2.0/OS/process/executable/ws-bpel_executable.xsd
Attribute, die den Prozess b h ib d t S hbeschreiben, verwendete Sprachen festlegen und globale Einstellungen setzen
Dokumentation des Prozesses
Import von BPEL-Spracherweiterungen und externer Referenzen (z B WSDL der zuexterner Referenzen (z.B. WSDL der zu orchestrierenden Webservices)
Kommunikationspartner
Prozessvariablen
Menge von Eigenschaften, die durch mehrere Nachrichten (messages) genutzt werdenNachrichten (messages) genutzt werdenFehler- und Ereignisbehandlung: Aktivität, die bei Fehler oder best. Ereignisausgeführt werden soll
TU Dresden - Institut für Bauinformatik 12
werden soll
Aktivitäten
Standardattribute für AktivitätenJoin Condition Eine “join condition” erlaubt die Definition komplexer
Ausführungsbedingungen auf Basis des Linkstatus. Wenn eine odermehrere Links mit einer Aktivität verbunden sind, kann die Join Condition so gesetzt werden, dass die Ausführung der Aktivität vomZustand der eingehenden Links abhängig ist.
Wenn die Auswertung der “Join Condition” den boolschen Wert “true” ib i d d l f ib di dergibt, wird der Prozess normal fortgesetzt. Ergibt die Auswertung den
boolschen Wert “false”, kann eine Fehlermeldung ausgegeben und derProzess abgebrochen oder eine zuvor festgelegte Fehlerbehandlungausgeführt werden.
Suppress Join Failure Wenn das Attribut “suppressJoinFailure” auf “yes” gesetzt ist, wird auchim Fall einer “Join Condition”, die den Wert “false” ausgibt, keineFehlermeldung ausgegeben und der Prozess normal fortgesetzt.
Comment Optionales Attribut zum Hinzufügen von html-Annotationen zu einem<process> Element, sowie zu einer Aktivität, einem Link oder einemContainer.
i l ib i f i iDocumentation Optionales Attribut zum Hinzufügen von Annotationen zu einem<process> Element, sowie zu einer Aktivität, einem Link oder einemContainer.
Extension Attributes und Elements Erweiterungen der Basis-BPEL-Sprache auf mehereren Wegen, inklusive
TU Dresden - Institut für Bauinformatik
Extension Attributes und ElementsErweiterungs-Elemente und Erweiterungsattribute für BPEL-Konstrukte
13
Basis-AktivitätenReceive: Eingehende Kommunikation erwartet eingehenden
Webserviceaufruf
Attribute− createInstance: legt fest, ob beim Empfang eines Webservice-
Aufrufs eine Prozessinstanz erstellt werden soll, oder nicht,− Operation: SOAP-Aktion, die das Gegenüber verwenden wird− partnerLink: Kommunikationspartner, von dem empfangen wird− portType: Service, der angeboten wird− Variable: Prozessvariable, in die die empfangenen Daten
geschrieben werden sollen
<bpel:receive
geschrieben werden sollen
<bpel:receive createInstance="yes" operation="EinSpann" partnerLink="EinfSpannProcessPLT" portType="ns1:EinfSpannBPEL" variable="EinSpannRequest"/>
TU Dresden - Institut für Bauinformatik 14
Basis-AktivitätenReply: Ausgehende Kommunikation beantwortet offenen Webserviceaufruf
A ibAttribute− Operation: SOAP-Aktion, die das Gegenüber verwendet hat− partnerLink: Kommunikationspartner, von dem empfangen wurde− portType: Service den der Prozess angeboten hatportType: Service, den der Prozess angeboten hat− Variable: Prozessvariable, aus der die zu sendenden Daten gelesen werden
sollen− faultName: Definition der Fehlermeldung, die im Fall eines Fehlers ausgegeben
werden sollwerden soll
<bpel:reply operation="EinSpann" partnerLink="EinfSpannProcessPLT" portType="ns1:EinfSpannBPEL" variable="EinSpannResponse"/>
TU Dresden - Institut für Bauinformatik 15
Basis-AktivitätenInvoke: Externen Webservice aufrufen
Attribute
− partnerLink: definiert, WAS bei WELCHEM Kommunikationspartner aufgerufen werden sollwerden soll
− portType: Service, den der Kommunikationspartner anbietet− Operation: SOAP-Aktion, die verwendet werden muss− inputVariable: Variable, aus der die zu sendenden Daten gelesen werden
outputVariable: Variable in die die zurückkommenden Daten geschrieben− outputVariable: Variable, in die die zurückkommenden Daten geschrieben werden
<bpel:invoke<bpel:invoke inputVariable="momentRequest" name="BiegeMoment" operation="moment" outputVariable="momentResponse" partnerLink="Momentenberechnung" portType="ns3:MomentenberechnungServicePortType"/>
TU Dresden - Institut für Bauinformatik 16
Basis-AktivitätenAssign: Aktualisiert den Inhalt von Variablen:• Kopiert Daten von einer Variablen in eine anderep• Erzeugt neue Daten durch Xpath-Ausdrücke oder andere Sprachen• Erzeugt neue Daten durch erweiterte WS-BPEL-Funktionen
Attribute
− copy: definiert, welche Daten kopiert werden sollen, sowie Quell- und Zielvariabley− Weitere optionale Attribute
<bpel:assign><bpel:copy>
<bpel:from>$momentResponse.parameters/ns3:return div $fltmResponse.parameters/ns4:return * ($fltmRequest.parameters/ns4:h * 0.5)</bpel:from>
<bpel:to part="parameters" variable="EinSpannResponse"><bpel:query>sigma</bpel:query>p q y g / p q y
</bpel:to></bpel:copy>
</bpel:assign>
TU Dresden - Institut für Bauinformatik 17
Basis-AktivitätenWait: Warten für eine Zeitdauer oder auf einen Zeitpunkt.
Attribute
− Wait Expression: Wert für Zeitpunkt (Datum) oder DauerWait Type: Wahlmöglichkeiten zwischen den Optionen “Duration” (for) und− Wait Type: Wahlmöglichkeiten zwischen den Optionen Duration (for) und “Deadline” (until)
− Weitere optionale Attribute
<bpel:wait><bpel:until>2010-12-12T12:00</bpel:until>
</bpel:wait>
TU Dresden - Institut für Bauinformatik 18
Strukturierende Aktivitäten
Sequence: Ein Sequence-Container arrangiert Aktivitäten i i d t Li t d füh t i i llin einer geordneten Liste und führt sie sequenziell aus.
AttributeAttribute
− Nur Optionale Attribute
<bpel:sequence><bpel:assign name="Assign_Receive_BiegeMoment">
… </bpel:assign>
<bpel:invoke inputVariable="momentRequest" name="BiegeMoment" operation="moment„
…</bpel:sequence>
TU Dresden - Institut für Bauinformatik 19
Strukturierende Aktivitäten
Flow: Ein Flow-Container arrangiert Aktivitäten parallel und führt sie nebenläufig aus.
Attribute
− Nur Optionale Attribute
<bpel:flow><bpel:assign name="Assign_Receive_BiegeMoment">
… </bpel:assign>
<bpel:assign name="Assign_Receive_FLTM">
… </bpel:assign>
</bpel:flow>
TU Dresden - Institut für Bauinformatik 20
Strukturierende Aktivitäten
Scope: Sichtbarkeitsbereich von Variablen, lokale Umgebung zur Blockstrukturierung
• bündelt Aktivitäten und fasst sie zu einer transaktionalen Einheit zusammen• Möglichkeit zur Einführung lokaler Variableng g• Assoziation von Fehlerbehandlung (Fault Handler), Kompensationsbehandlung
(Compensation Handler) und Ereignisbehandlung (Event Handler)
Att ib tAttribute
− Isolated: YES oder NO. Bestimmt, ob von mehreren Scopes gleichzeitig auf eine gemeinsam genutzte Variable zugegriffen werden darfgemeinsam genutzte Variable zugegriffen werden darf.
− Nur Optionale Attribute
TU Dresden - Institut für Bauinformatik 21
Strukturierende Aktivitäten
Pick: Triggern enthaltener Aktivitäten durch Nachricht oder AlarmPick: Triggern enthaltener Aktivitäten durch Nachricht oder Alarm• Aus Prozesssicht nicht-deterministische Wahl durch externe Ereignisse
(Messages, Zeitpunkt oder Zeitspanne)
Attribute
Bei Trigger durch onMessage:Partner LinkOperationVariable or From Part
Bei Trigger durch onAlarm:Alarm ExpressionAlarm TypeAlarm Type
TU Dresden - Institut für Bauinformatik 22
Strukturierende Aktivitäten
Validate: Validierung von Variablen anhand der XML und WSDL Daten-DefinitionErzeugung einer Fehlermeldung (bpel:invalidVariables), falls eine Variable einen
falschen Wert enthält
Att ib tAttribute
− variables: Definition der Variablen, die validiert werden sollen
<validatevariables="BPELVariableNames" standard-attributes>
standard-elements</validate>
TU Dresden - Institut für Bauinformatik 23
Strukturierende Aktivitäten
While: Wiederholtes Ausführen von Aktivitäten solange eine boolesche Bedingung füllt i terfüllt ist
Attribute
− condition: Definition der Bedingung
<while><condition>
$orderDetails > 100</condition><scope>
...</scope>
</while>
TU Dresden - Institut für Bauinformatik 24
Strukturierende Aktivitäten
repeatUntil: Die “repeatUntil” Aktivität führt Aktivitäten wiederholt aus, bis ihre B di “t ” i t I G t Whil Akti ität füh t di S hl if diBedingung=“true” ist. Im Gegensatz zur While-Aktivität führt die Schleife die enthaltenen Aktivitäten mindestens 1 mal aus.
Attribute
<repeatUntil>
Attribute
− condition: Definition der Bedingung<repeatUntil>
<conditionexpressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:
xpath1.0">$counter > 0</condition>
<sequence><assign name="IncrementCounter"><copy><from>$counter + 1</from><to variable="counter"/></copy></assign><wait name="WaitTwoSeconds"><for expressionLanguage="urn:oasis:names:tc:wsbpel:2.0:sublang:xpath1.0">'PT2S'
</for></wait>
</sequence></repeatUntil>
TU Dresden - Institut für Bauinformatik 25
</repeatUntil>
Strukturierende Aktivitäten
If: Ausführung von Aktivitäten auf der Basis einer oder mehrerer Bedingungen, die d h i if“ d fi i t i d d ti l d h i l if“ f l t idurch ein „if“ definiert sind oder optional durch ein „else if“, gefolgt von einem optionalen „else“-Element
Attribute
− if-condition: Definition der Bedingung
<if standard-attributes> standard-elements<condition expressionlanguage=”anyURI”?>
g g
bool-expr</condition>
activity<elseif>*
<condition expressionlanguage=”anyURI”?>b lbool-expr
</condition>activity
</elseif><else>?
ti it
TU Dresden - Institut für Bauinformatik 26
activity</else>
</if>
Strukturierende AktivitätenforEach: Die forEach-Aktivität enthält einen Scope, der mit einer
definierten Anzahl an Durchläufen ausgeführt wird.Die iterative Ausführung kann parallel oder sequenziell erfolgen. DieDie iterative Ausführung kann parallel oder sequenziell erfolgen. Die Anzahl der Iterationen wird durch Ausdrücke mit Start- und Endwertfestgelegt. Diese Werte sind inklusiv, d.h. bei einem Startwert=1 und Endwert=10 wird der Scope 10 mal ausgeführt.
Attribute
− Counter Name: Zählvariable− Start Counter Value: Startwert− Final Counter Value: Endwert− Parallel Execution Flag: Parallele Ausführung ja/nein<forEach counterName="counter" parallel="no">
<startCounterValue>1</startCounterValue><finalCounterValue>100</finalCounterValue><completionCondition>
<branches countSuccessfulBranchesOnly "yes"><branches countSuccessfulBranchesOnly="yes">10</branches>
</completionCondition><scope>...</scope>
</forEach>
TU Dresden - Institut für Bauinformatik 27
Beispielprozess: Berechnung der Biegespannung eines EinfeldträgersEinfeldträgers• Ressourcen:
– Webservice „Flächenträgheitsmoment“– Webservice „Biegemoment“
Gleichlast qA Querschnitt A-A
Gleichlast q
hA
L
b
A
b• Strategie:
• Berechnung des Flächenträgheitsmoments und des Biegemoments parallel mit jeweils einem Service
• Zusammenführung der Ergebnisse und Berechnung der Biegespannung über Xpath-Expression in BPEL
• Erzeugen eines BPEL-Webservices, der beide Services aufruft, die Parameter übergibt,
TU Dresden - Institut für Bauinformatik
g gzuordnet, verarbeitet und zurückgibt
28
Schematische Darstellung der Prozesslogik
q bhL Variablen des Pro esses
INPUTBPEL-Prozess
q bhL
q bhL Variablen des Prozesses
Variablen der WebservicesWebservice Webservice
M=q*L2/8 Iy=b*h3/12
q
M Iy Response der Webservices
Zuordnung einer Response-Expression aus
Sigma=M/Iy*h/2Response-Variablen der WS zur Response-Variable des Prozesses
sigma Response des Prozesses
OUTPUT
TU Dresden - Institut für Bauinformatik 29
Webservice „Flächenträgheitsmoment“public class ftm {
public double fltm(double b, double h){double fltm = b*Math.pow(h, 3)/12;
fl }
Java-Klasse:
return fltm;};}
http://141.30.165.8:9762/axis2/services/FTMService?wsdl
Webservice-WSDL:
TU Dresden - Institut für Bauinformatik 30
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns0="http://ws.apache.org/axis2" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://ws.apache.org/axis2"> <wsdl:documentation>FTMService</wsdl:documentation> <wsdl:types> <xs:schema xmlns:ns="http://ws.apache.org/axis2" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://ws.apache.org/axis2"> <xs:element name="fltm"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="b" type="xs:double"/>
<xs:element minOccurs="0" name="h" type="xs:double"/> </xs:sequence>
/ l T
Webservice „Biegemoment“public class momentenber{
public double moment(double q, double l){double moment = q*Math.pow(l, 2)/8;
t t }
Java-Klasse:
return moment;};}
http://141.30.165.8:9762/axis2/services/MomentenberechnungService?wsdl
Webservice-WSDL:
TU Dresden - Institut für Bauinformatik 31
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns0="http://example.gerald" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" targetNamespace="http://example.gerald"> <wsdl:documentation>MomentenberechnungService</wsdl:documentation> <wsdl:types> <xs:schema xmlns:ns="http://example.gerald" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://example.gerald"> <xs:element name="moment"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="q" type="xs:double"/>
<xs:element minOccurs="0" name="l" type="xs:double"/> </xs:sequence>
</xs:complexType>
EinfSpannProcess.bpelFührt die enthaltenen AktivitätenFührt die enthaltenen Aktivitäten sequenziell aus
Erwartet eingehenden Webservice-
Führt die enthaltenen Aktivitäten parallel aus
Aufruf
aus
Zuordnung der Request-Variablen des Prozesses zu den Request-Variablen
Webservices zur Berechnung von Flächenträgheitsmoment und Bi t
der Webservices
Berechnet aus den Response-Variablen der Webservices (Flächenträgheitsmoment und
Biegemoment
(Flächenträgheitsmoment und Biegemoment) die Biegespannung und ordnet den Wert der Response-Variablen des Prozesses zu
TU Dresden - Institut für Bauinformatik
Beantwortet offenen Webservice-Aufruf
32
EinfSpannProcess.bpel
TU Dresden - Institut für Bauinformatik 33
<?xml version="1.0" encoding="UTF-8"?><!--BPEL Process DefinitionEdited using ActiveBPEL(r) Designer Version 4.1.0 (http://www.active-endpoints.com)--><bpel:process xmlns:bpel="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:ext="http://www.activebpel.org/2006/09/bpel/extension/query_handling" xmlns:ns1="http://www.gerald.faschingbauer/EinfSpannBPEL/" xmlns:ns2="gerald.faschingbauer" xmlns:ns3="http://example.gerald" xmlns:ns4="http://ws.apache.org/axis2" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ext:createTargetXPath="yes" name="EinfSpannProcess" suppressJoinFailure="yes" targetNamespace="http://EinfSpannProcess"> <bpel:extensions> <bpel:extension mustUnderstand="yes" namespace="http://www.activebpel.org/2006/09/bpel/extension/query_handling"/> </bpel:extensions> <bpel:import importType="http://schemas.xmlsoap.org/wsdl/" location="../WSDL/EinfSpannBPEL.wsdl" namespace="http://www.gerald.faschingbauer/EinfSpannBPEL/"/> <bpel:import importType="http://schemas.xmlsoap.org/wsdl/" location="file:/C:/SVN/Bauinformatik/Gerald Faschingbauer/Prototypen/EinfSpannBPEL/WSDL/partnerlinksEinfSpannBPEL.wsdl" namespace="gerald.faschingbauer"/> <bpel:import importType="http://schemas.xmlsoap.org/wsdl/" location="../WSDL/Momentenber.wsdl" namespace="http://example.gerald"/> <bpel:import importType="http://schemas.xmlsoap.org/wsdl/" location="../WSDL/FTMService.wsdl" namespace="http://ws.apache.org/axis2"/> <bpel:partnerLinks> <bpel:partnerLink myRole="EinfSpannProc" name="EinfSpannProcessPLT" partnerLinkType="ns2:EinfSpannProcessPLT"/> <bpel:partnerLink name="Momentenberechnung" partnerLinkType="ns2:Momentenberechnung" partnerRole="MomberService"/> <bpel:partnerLink name="FTMPLT" partnerLinkType="ns2:FTMPLT" partnerRole="FTMService"/> </bpel:partnerLinks> <bpel:variables> <bpel:variable messageType="ns1:EinSpannRequest" name="EinSpannRequest"/> <bpel:variable messageType="ns1:EinSpannResponse" name="EinSpannResponse"/> <bpel:variable messageType="ns3:momentRequest" name="momentRequest"/> <bpel:variable messageType="ns3:momentResponse" name="momentResponse"/> <bpel:variable messageType="ns4:fltmRequest" name="fltmRequest"/> <bpel:variable messageType="ns4:fltmResponse" name="fltmResponse"/> </bpel:variables> <bpel:sequence> <bpel:receive createInstance="yes" operation="EinSpann" partnerLink="EinfSpannProcessPLT" portType="ns1:EinfSpannBPEL" variable="EinSpannRequest"/>
<bpel:flow>
EinfSpannBPEL.wsdlDiese WSDL wurde nach dem Contract-First-Ansatz manuell erzeugt. Dieser Ansatz vereinfacht bei der Erstellung von BPEL-Prozessen die Definition von Ein- und Ausgangsparametern. Diese WSDL wird beim Deployment in eine ergänzende WSDL die insbesondere das Service-Binding enthält importiertDeployment in eine ergänzende WSDL, die insbesondere das Service Binding enthält, importiert.
TU Dresden - Institut für Bauinformatik 34
<?xml version="1.0" encoding="UTF-8" standalone="no"?><wsdl:definitions xmlns:esp="http://www.gerald.faschingbauer/EinfSpannBPEL/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="EinfSpannBPEL" targetNamespace="http://www.gerald.faschingbauer/EinfSpannBPEL/"> <wsdl:types> <xsd:schema targetNamespace="http://www.gerald.faschingbauer/EinfSpannBPEL/"> <xsd:element name="EinSpann"> <xsd:complexType> <xsd:sequence> <xsd:element name="q" type="xsd:double" /> <xsd:element name="L" type="xsd:double"></xsd:element> <xsd:element name="b" type="xsd:double"></xsd:element> <xsd:element name="h" type="xsd:double"></xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="EinSpannResponse"> <xsd:complexType> <xsd:sequence> <xsd:element name="sigma" type="xsd:double"/> </xsd:sequence> </xsd:complexType> </xsd:element>
partnerlinksEinfSpannBPEL.wsdl
Ein partner link ist die exakte Beschreibung der Beziehungen (der Kommunikation) zweier Partner untereinander (des BPEL-Prozesses zu anderen Webservices). Ein Partner Link definiert die Rolle des Prozesses und die Rolle des Partnerservice für einen bestimmten Austausch von Daten.Der Partner Link wird über einen Partner Link Type definiert. Ein partner link type beschreibt die Art des Nachrichtenaustauschs, den zwei WSDL Services vollziehen sollen. Er charakterisiert diesen Austausch durch die Definition der Rollen, die jeder Service einnimmt und durch die Spezifikation des port types, der durch den Service angeboten wird, um für den Austausch taugliche Nachrichten
TU Dresden - Institut für Bauinformatik
p yp g gzu emfangen.
35
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions name="partnerlinksEinfSpannBPEL" targetNamespace="gerald.faschingbauer" xmlns:tns="gerald.faschingbauer" xmlns:ns1="http://www.gerald.faschingbauer/EinfSpannBPEL/" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:ns3="http://ws.apache.org/axis2" xmlns:ns2="http://example.gerald" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"><plnk:partnerLinkType xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" name="EinfSpannProcessPLT"> <plnk:role name="EinfSpannProc" portType="ns1:EinfSpannBPEL"/></plnk:partnerLinkType><plnk:partnerLinkType xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" name="Momentenberechnung"> <plnk:role name="MomberService" portType="ns2:MomentenberechnungServicePortType"/></plnk:partnerLinkType><plnk:partnerLinkType xmlns:plnk="http://docs.oasis-open.org/wsbpel/2.0/plnktype" name="FTMPLT"> <plnk:role name="FTMService" portType="ns3:FTMServicePortType"/></plnk:partnerLinkType> <wsdl:import namespace="http://ws.apache.org/axis2" location="project:/EinfSpannBPEL/WSDL/FTMService.wsdl"/> <wsdl:import namespace="http://example.gerald" location="project:/EinfSpannBPEL/WSDL/Momentenber.wsdl"/> <wsdl:import namespace="http://www.gerald.faschingbauer/EinfSpannBPEL/" location="project:/EinfSpannBPEL/WSDL/EinfSpannBPEL.wsdl"/></wsdl:definitions>
EinfSpannProcessPLTService.wsdlWSDL des aufrufbaren Prozesses. Erweiterung der EinfSpannBPEL.wsdl
http://141.30.165.8:9762/active-bpel/services/EinfSpannProcessPLTService?wsdl
TU Dresden - Institut für Bauinformatik 36
<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions name="partnerlinksEinfSpannBPEL" targetNamespace="gerald.faschingbauer" xmlns:ns1="http://www.gerald.faschingbauer/EinfSpannBPEL/" xmlns:ns2="http://example.gerald" xmlns:ns3="http://ws.apache.org/axis2" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="gerald.faschingbauer" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:import location="http://141.30.165.8:9762/active-bpel/catalog/project:/EinfSpannBPEL/WSDL/EinfSpannBPEL.wsdl" namespace="http://www.gerald.faschingbauer/EinfSpannBPEL/"/>
<wsdl:import location="http://141.30.165.8:9762/active-bpel/catalog/project:/EinfSpannBPEL/WSDL/Momentenber.wsdl" namespace="http://example.gerald"/>
<wsdl:import location="http://141.30.165.8:9762/active-bpel/catalog/project:/EinfSpannBPEL/WSDL/FTMService.wsdl" namespace="http://ws.apache.org/axis2"/>
<wsdl:binding name="EinfSpannProcessPLTServiceBinding" type="ns1:EinfSpannBPEL">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
<wsdl:operation name="EinSpann">
<soap:operation soapAction="" style="document" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
< sdl inp t>