BPEL 4 WS Business Process Execution Language for
BPEL 4 WS 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 n Moderne Reisebuchung. Kunde 1 5 Reisebüro 2 Fluganbieter 3 Hotel 4 Bankinstitut Standardspezifikationen erlauben Beschreibung (WSDL), Kommunikation (SOAP) und Veröffentlichung (UDDI) einzelner Dienste. ¨ Kombination von Webdiensten aber nicht standardisiert. ¨
BPEL 4 WS Business Process Execution Language for Web Services n 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) n <partner. Link. Type name="Buyer. Seller. Link"> <role name="Buyer"> <port. Type name="Buyer. PT"/> </role> <role name="Seller"> <port. Type name="Seller. PT"/> </role> </partner. Link. Type> Buyer. Seller. Link Buyer Seller (Buyer. PT) (Seller. PT) n buying Buyer Seller Prozess Entfernter Dienst Partner. Link-Typen Partner. Links <partner. Links> <partner. Link name="buying" partner. Link. Type="Buyer. Seller. Link" my. Role="Buyer" partner. Role="Seller"/> </partner. Links>
Partnerbeziehungen (II) buying Prozess (Buyer. PT) n buy(itemid) response Entf. WD (Seller. PT) Ausgehende Aufrufe mittels invoke <invoke partner. Link="buying" port. Type="Seller. PT" operation="buy" input. Variable="itemid" output. Variable="response"/> Dürfen nur WSDLNachrichtentypen sein.
Partnerbeziehungen (III) selling Prozess getamount(itemid) (Buyer. PT) n price Entf. WD (Seller. PT) Eingehende Aufrufe mittels blockierendem receive. ¨ Erzeugt außerdem neue Prozess-Instanzen. <receive partner. Link="selling” port. Type="Seller. PT" operation="getamount" variable="itemid" create. Instance="yes"/> n Rückgabewerte mittels reply. <reply partner. Link="selling" port. Type="Seller. PT" operation="buy" variable="price"/>
Strukturanweisungen (I) n Sequence ¨ n Flow ¨ n Klassische Fallunterscheidung. While ¨ n Nebenläufige Abarbeitung. Switch ¨ n Sequentielle Abarbeitung. Klassische Schleifenanweisung. Pick ¨ Kombination von Switch und Receive.
Strukturanweisungen (II) n Sequentieller Ablauf <sequence> invoke <invoke. . /> <receive. . /> receive <invoke. . /> invoke </sequence>
Strukturanweisungen (III) n Nebenläufiger Ablauf <flow> <links> <link name="Ato. B"> </links> <!-- operation A --> <invoke. . > <source link. Name="Ato. B"/> </invoke> <sequence> <receive. . /> <!-- operation B --> <invoke. . > <target link. Name="Ato. B"/> </invoke> </sequence> </flow> receive invoke A invoke B
Zustände Langanhaltende Sitzungen müssen zustandsbehaftet sein. n Mittels n ¨ Variablen ¨ Eigenschaften ¨ Korrelationsmengen
Variablen n Streng statische Typsicherheit. ¨ Deklarationen n Typen sind WSDL Nachrichtentypen und XML Schema Typen. <variables> <variable name="itemid" type="xsd: int"/> </variables> ¨ Zuweisung n n Quellen sind Variableninhalte, Endpunkte, XPath-Ausdrücke oder Literale. Ziele von Zuweisungen sind Variableninhalte oder Partner. Links. <assign> <copy> <from>1000</from> <to variable="maxprice"> </copy> </assign>
Korrelation (I) n Eigenschaften bieten öffentlichen Zugriff auf Variableninhalte. <property name="user. ID" type="xsd: string"/> <property. Alias property. Name="user. ID“ message. Type="order. Details“ part="identification“ query="/credentials/"/> n Korrelationsmengen sind Mengen von Eigenschaften. <correlation. Sets> <correlation. Set name="userid“ properties="username, userpw"/> </correlation. Sets> n 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 partner. Link="ordering" port. Type="Shop. PT" operation="login" input. Variable="id"> <correlations> <correlation set="session" initiate="yes" pattern="in"/> </correlations> </invoke> <invoke partner. Link="ordering" port. Type="Shop. PT“ operation="order" output. Variable="itemid"> <correlations> <correlation set="session" initiate="no" pattern="out"/> </correlations> </invoke> </sequence> 1. Die Sitzung wird mit einem Aufruf von login eröffnet, welches eine eindeutige Identifikation zurückgibt. 2. 2. Die eindeutige Identifikation wird dann benutzt, um die eigentliche Bestellung vorzunehmen.
Ausnahmebehandlung n 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 Compensation. Handler Fault. Handler
Fehlerbehandlung (I) n Faults ¨ ¨ Teil der WSDL-Sprache. Können auf drei Arten ausgelöst werden. 1. 2. Bei synchronen Aufrufen entfernter Webdienste. Als Rückgabe eingegangener Aufrufe. <reply partner. Link="selling" port. Type="Seller. PT" operation="buy" fault. Name=“Out. Of. Stock. Fault"/> 3. Intern mit throw <throw fault. Name="No. Database. Connection. Fault"/>
Fehlerbehandlung (II) n Fault. Handler ¨ Behandeln Fehler, indem sie Abläufe für bestimmte Fehlertypen definieren. <fault. Handlers> <catch fault. Name="No. Database. Connection. Fault"> <compensate/> </catch> <catch. All> <terminate/> </catch. All> </fault. Handlers>
Rücknahmebehandlung n Rücknahme (Kompensation) von Effekten. ¨ Werden ausgelöst durch compensate <compensate/> ¨ Werden behandelt durch Compensation. Handler <compensation. Handler> <invoke partner. Link="bidding" port. Type="Auction. PT" operation="undo. Bid" output. Variable="product. ID"> <correlations> <correlation set="visitor. ID" initiate="no" pattern="out"/> </correlations> </invoke> </compensation. Handler>
Außerdem. . n Eventhandler ¨ Kann eingehende Aufrufe paralell zum normalen Ablauf behandeln. n Terminate ¨ Beendet n den Prozess. Wait ¨ Warteanweisung. n Scope ¨ Lokaler Umgebungsraum.
Implementationen n BPWS 4 J (IBM) Plattform zum Ausführen von BPEL 1. 1 - Prozessen auf javafähigen Web. Servern (getestet Application Server 4. 0+ und Apache Tomcat). ¨ Ein Valdierungstool für BPEL-Dokumente. ¨ Textueller Editor als IBM Eclipse Plug-In. ¨ n 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, e. Mail etc. ansprechen. ¨ ¨
Collaxa BPEL designer
Fazit Fehlen eines Standards zur Kombination von Webdiensten allgemein erkannt. n BPEL 4 WS n ¨ Basiert auf WSDL. ¨ Ausgereift. ¨ Marktmacht von IBM und Microsoft könnte Ausschlag geben.
Referenzen n Seminararbeit ¨ n BPEL 4 WS (Riad Djemili) Spezifikationen ¨ BPEL 4 WS 1. 1 http: //www-106. ibm. com/developerworks/webservices/library/ws-bpel/ ¨ WSDL 1. 1 http: //www. w 3. org/TR/wsdl n Implementationen ¨ BPWS 4 J http: //www. alphaworks. ibm. com/tech/bpws 4 j ¨ Collaxa BPEL Server 2. 0 http: //www. collaxa. com
- Slides: 22