220 likes | 361 Views
BPEL4WS Business Process Execution Language for Web Services. Riad Djemili (djemili@inf.fu-berlin.de) Seminar Advanced Topics in Networking Freie Universität Berlin - WS 03/04. Kombination von Webdiensten. Moderne Reisebuchung. Fluganbieter. 2. Kunde. Reisebüro. Hotel. 1. 3.
E N D
BPEL4WSBusiness Process Execution Languagefor Web Services Riad Djemili (djemili@inf.fu-berlin.de) Seminar Advanced Topics in Networking Freie Universität Berlin - WS 03/04
Kombination von Webdiensten • Moderne Reisebuchung. Fluganbieter 2 Kunde Reisebüro Hotel 1 3 Bankinstitut 4 5 • Standardspezifikationen erlauben Beschreibung (WSDL), Kommunikation (SOAP) und Veröffentlichung (UDDI) einzelner Dienste. • Kombination von Webdiensten aber nicht standardisiert.
BPEL4WSBusiness Process Execution Language for Web Services • Programmiersprache zum Spezifizieren (und Ausführen) von Geschäftsprozessen mit mehreren Webdiensten. • Hervorgegangen aus Microsofts XLANG und IBMs WSFL. • Standardisiert durch OASIS (Organization for the Advancement of Structured Information Standards). • In XML-Notation und auf WSDL basierend. • Spezielle Kontrollstrukturen. • Prozesse werden als eigene Webdienste bereitgestellt.
Partnerbeziehungen (I) • PartnerLink-Typen<partnerLinkType name="BuyerSellerLink"> <role name="Buyer"> <portType name="BuyerPT"/> </role> <role name="Seller"> <portType name="SellerPT"/> </role></partnerLinkType> • PartnerLinks<partnerLinks> <partnerLink name="buying" partnerLinkType="BuyerSellerLink" myRole="Buyer" partnerRole="Seller"/></partnerLinks> BuyerSellerLink Buyer(BuyerPT) Seller(SellerPT) buying Buyer Seller Prozess EntfernterDienst
Partnerbeziehungen (II) buying • Ausgehende Aufrufe mittels invoke<invoke partnerLink="buying" portType="SellerPT" operation="buy" inputVariable="itemid" outputVariable="response"/> buy(itemid) Prozess(BuyerPT) Entf. WD(SellerPT) response Dürfen nur WSDL-Nachrichtentypen sein.
Partnerbeziehungen (III) selling • Eingehende Aufrufe mittels blockierendem receive. • Erzeugt außerdem neue Prozess-Instanzen. <receive partnerLink="selling” portType="SellerPT" operation="getamount" variable="itemid" createInstance="yes"/> • Rückgabewerte mittels reply.<reply partnerLink="selling" portType="SellerPT" operation="buy" variable="price"/> Prozess(BuyerPT) Entf. WD(SellerPT) getamount(itemid) price
Strukturanweisungen (I) • Sequence • Sequentielle Abarbeitung. • Flow • Nebenläufige Abarbeitung. • Switch • Klassische Fallunterscheidung. • While • Klassische Schleifenanweisung. • Pick • Kombination von Switch und Receive.
Strukturanweisungen (II) • Sequentieller Ablauf<sequence> <invoke ../> <receive../> <invoke ../></sequence> invoke receive invoke
Strukturanweisungen (III) • Nebenläufiger Ablauf<flow> <links> <link name="AtoB"> </links> <!-- operation A --> <invoke ..> <source linkName="AtoB"/> </invoke> <sequence> <receive../> <!-- operation B --> <invoke ..> <target linkName="AtoB"/> </invoke> </sequence></flow> receive invokeA invokeB
Zustände • Langanhaltende Sitzungen müssen zustandsbehaftet sein. • Mittels • Variablen • Eigenschaften • Korrelationsmengen
Variablen • Streng statische Typsicherheit. • Deklarationen • Typen sind WSDL Nachrichtentypen und XML Schema Typen. <variables> <variable name="itemid" type="xsd:int"/></variables> • Zuweisung • Quellen sind Variableninhalte, Endpunkte, XPath-Ausdrücke oder Literale. • Ziele von Zuweisungen sind Variableninhalte oder PartnerLinks. <assign> <copy> <from>1000</from> <to variable="maxprice"> </copy></assign>
Korrelation (I) • Eigenschaften bieten öffentlichen Zugriff auf Variableninhalte. <property name="userID" type="xsd:string"/> <propertyAlias propertyName="userID“ messageType="orderDetails“ part="identification“ query="/credentials/"/> • Korrelationsmengen sind Mengen von Eigenschaften. <correlationSets> <correlationSet name="userid“ properties="username,userpw"/> </correlationSets> • Dienen zur Identifikation bei lokalen und entfernten Prozessen • Werden automatisch neben den üblichen Argumente als zusätzliche Werte gesendet bzw. empfangen.
Korrelation (II) • Beispiel: Ein Bestellvorgang. <sequence> <invoke partnerLink="ordering" portType="ShopPT" operation="login" inputVariable="id"> <correlations> <correlation set="session" initiate="yes" pattern="in"/> </correlations> </invoke> <invoke partnerLink="ordering" portType="ShopPT“ operation="order" outputVariable="itemid"> <correlations> <correlation set="session" initiate="no" pattern="out"/> </correlations> </invoke></sequence> • Die Sitzung wird mit einem Aufruf von login eröffnet, welches eine eindeutige Identifikation zurückgibt. • Die eindeutige Identifikation wird dann benutzt, um die eigentliche Bestellung vorzunehmen.
Ausnahmebehandlung • Sequenz mit drei Aktionen und Fehler in dritter Aktion. Activity 1 Activity 2 Activity 3 Eventuelle Rücknahme vorheriger (eigentlich erfolgreicher) Operationen Behandeln des aktuellen Fehlers CompensationHandler FaultHandler
Fehlerbehandlung (I) • Faults • Teil der WSDL-Sprache. • Können auf drei Arten ausgelöst werden. • Bei synchronen Aufrufen entfernter Webdienste. • Als Rückgabe eingegangener Aufrufe.<reply partnerLink="selling" portType="SellerPT" operation="buy" faultName=“OutOfStockFault"/> • Intern mit throw<throw faultName="NoDatabaseConnectionFault"/>
Fehlerbehandlung (II) • FaultHandler • Behandeln Fehler, indem sie Abläufe für bestimmte Fehlertypen definieren.<faultHandlers> <catch faultName="NoDatabaseConnectionFault"> <compensate/> </catch> <catchAll> <terminate/> </catchAll></faultHandlers>
Rücknahmebehandlung • Rücknahme (Kompensation) von Effekten. • Werden ausgelöst durch compensate<compensate/> • Werden behandelt durch CompensationHandler<compensationHandler> <invoke partnerLink="bidding" portType="AuctionPT" operation="undoBid" outputVariable="productID"> <correlations> <correlation set="visitorID" initiate="no" pattern="out"/> </correlations> </invoke></compensationHandler>
Außerdem.. • Eventhandler • Kann eingehende Aufrufe paralell zum normalen Ablauf behandeln. • Terminate • Beendet den Prozess. • Wait • Warteanweisung. • Scope • Lokaler Umgebungsraum.
Implementationen • BPWS4J (IBM) • Plattform zum Ausführen von BPEL 1.1- Prozessen auf java-fähigen WebServern (getestet Application Server 4.0+ und Apache Tomcat). • Ein Valdierungstool für BPEL-Dokumente. • Textueller Editor als IBM Eclipse Plug-In. • Collaxa BPEL Server 2.0 (Collaxa) • Java basierter BPEL Server. • BPEL Console (zum Ausführen von BPEL 1.1 Prozessen, Debuggen etc.). • Graphischer Editor als IBM Eclipse Plug-In. • Kann nicht nur Webdienste, sondern auch andere Dienste, wie Open EJB, JMS, JCA, JSP, eMail etc. ansprechen.
Fazit • Fehlen eines Standards zur Kombination von Webdiensten allgemein erkannt. • BPEL4WS • Basiert auf WSDL. • Ausgereift. • Marktmacht von IBM und Microsoft könnte Ausschlag geben.
Referenzen • Seminararbeit • BPEL4WS (Riad Djemili) • Spezifikationen • BPEL4WS 1.1http://www-106.ibm.com/developerworks/webservices/library/ws-bpel/ • WSDL 1.1http://www.w3.org/TR/wsdl • Implementationen • BPWS4Jhttp://www.alphaworks.ibm.com/tech/bpws4j • Collaxa BPEL Server 2.0http://www.collaxa.com