180 likes | 385 Views
WS – BPEL. Inhalt. Spezifikation Einführung BPEL Prozessdefinition BPEL Prozesstypen Aktivitäten Interaktionsaktivitäten Flow, scopes, fault und compensation handling anhand von einem Beispiel Weiterführendes Praktische Umsetzung Beispiel : Hello World! Apache ODE & Eclipse IDE
E N D
Inhalt • Spezifikation • Einführung • BPEL Prozessdefinition • BPEL Prozesstypen • Aktivitäten • Interaktionsaktivitäten • Flow, scopes, fault und compensation handlinganhand von einem Beispiel • Weiterführendes • PraktischeUmsetzung • Beispiel: Hello World! • Apache ODE & Eclipse IDE • Projektbezug • Ist-Zustand • Soll-Zustand
Einführung • Zusammenhang zu anderen Webstandards • Prozessebene: BPEL • Schnittstelle: WSDL • Nachrichtenformat: SOAP • Typ: XML Schema • Ausdrucks Sprache: XPath 1.0 • Die WSDL Schnittstelle Message Port Type Partner Link Type Process BPEL PL Type BPEL Partner Link Message Part Operation Role Action WSDL
BPEL Prozess Definition • Code Skelett • Orchestrierungsmodell • <process name="TimesheetSubmission" • targetNamespace="http://www.xmltc.com/ptc/process/" • xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable/" …> • <partnerLinks> • … • </partnerLinks> • <variables> • … • </variables> • <faultHandlers> • <catchAll>…<catchAll> • </faultHandlers> • <sequence> • … • </sequence> • </process> Outbound Inbound WS1 WS2 WS3 Prozess Requester
BPEL Prozesstypen • Asynchron • Wartet nicht • Implementierung durch invoke callback • Procedure • Zwei portType’s • Synchron • Wartet auf terminierung • Implementierung durch reply • Function • Ein portType vs • Executable • xmlns=../executable • Ausführbar • Alles sichtbar • Konkreter Workflow • Beliebig viel zusätzlicher BPEL Code • Abstract • xmlns=../process • Nicht Ausführbar • Information hiding • Process templates • opaque = pflicht vs
Aktivitäten • Invoke • Ruft einen externen Partner (Service) auf • Receive • (Start Aktivität) <receive name="receiveInput" partnerLink="client" portType="tns:HelloWorld" operation="process" variable="input" createInstance="yes"/> <invoke name=“callbackClient“ partnerLink="client" portType="tns:HelloWorldCB" operation="onResult" inputVariable="input" /> • Reply • Kommt normalerweise nach receive Fragen? <reply name=“replyOutput“ partnerLink="client" portType="tns:HelloWorld" operation="process“ variable="input"/>
Aktivitäten • While • Nur eine Kind-Aktivität • Sequence • Nacheinander Ausführung <while> <condition> XPath Expression </condition> <sequence>…</sequence> </while> <sequence name="name"> <receive>…</receive> <assign>…</assign> <reply>…</reply> </sequence> • Assign & Copy • Literal Zuweisung • Part‘s kopieren • Query • eventHandlers • Läuft asynchron ab <eventHandlers> <onMessage …> </onMessage> <onAlarm for="P_DT_H_M"> </onAlarm> </eventHandlers> <assign><copy> <from variable="Input" /> <to variable="Output" /> </copy></assign>
Aktivitäten • Beispiel: Transaktion • Flow: Parallele Ausführung • Links: Ablauf synchronisieren • Correlations: Instanz identifizieren <flow> <links> <link name= "HotelApproval"/> <link name= "FlightApproval"/> </links> <receive name="receiveHotelApproval"...> <sources><source linkName="HotelApproval"/></sources> <correlations><correlation set="tradeID"initiate="no"/></correlations> </receive> <receive name="receiveFlightApproval" ...> <sources><sourcelinkName="FlightApproval"/></sources> <correlations><correlation set="ID"initiate="no"/></correlations> </receive> <scopename="invoiceSubmissionScope">…</scope> </flow>
Aktivitäten • Scopes • AbgesonderterDefinitionsbereich • Fault and compensation handling • Abfangen mit catch und catchAll • Rekursiv • joinCondition • Entsprichteiner Startbedingung <scopename="invoiceSubmissionScope"> <targets> <joinCondition>$EntriesApproval and $ExpensesApproval</joinCondition> <target linkName="HotelApproval"/> <target linkName="FlightApproval"/> </targets> <compensationHandler> <invoke name="withdrawInvoiceSubmission" ... /> </compensationHandler> <invokename="submitInvoice" ... /> </scope>
Weiterführendes • Fragen? • Es gibt viel mehr BPEL Konstrukte als vorgestellt!(siehe BPEL Spezifikation) • Extensions • Laufzeit beeinflussende Extensions • Optionale Extensions • WS-BPEL4People • WS-BPEL4SPE
Beispiel: Hello World! • Beschreibung • Input Variable wird ausgegeben • Lösungsansatz • Synchron • Ein SOAP Binding • Simpler Web Service für Ein- Ausgabe HelloWorldResponseMessage HelloWorld HelloWorld HelloWorld BPEL PL Type BPEL client payload process HelloWorldProvider replyOutput WSDL
Apache ODE & Eclipse IDE • Eclipse mit ODE Plugin • Gut geeignet zum rumprobieren • Verbunden mit tomcat Server • Daher unkompliziertes Deployment • Integrierter Web Service Explorer • Graphische design Oberfläche Apache Eclipse WS Explorer Tomcat BPEL Plugin ODE Deployment
Ist-Zustand • Modellierungstool • Simple Programmblöcke: • if • flow • forEach • Simple und komplexe Variablen • DWDL -> EDWDL -> BPEL • Human Task Web Service • Tasks erstellen und Nutzern zuweisen • Tasks löschen • Tasks auslesen und verändern • Alle Tasks auflisten • Alle einem Tenant zugehörigen Tasks auflisten
Soll-Zustand • Notizen aus dem Kundengespräch • Extension of IF and Concurrent Tasks • Deadline for Human Tasks • Web Service Integration (RPC/Graphical) • „Transaktions-fähigkeit“ • Mögliche Lösungsansätze • Zu den vorhandenen Workflow Elementen sequence hinzufügen • eventHandlers mit onAlarm • Zu den vorhandenen Aktivitäten muss eine “Web Service” Aktivität hinzugefügt werden. • compensationHandler für umkehrbare Aktivitäten • Weitere Fragen?