bpel4ws business process execution language for web services
DESCRIPTION
BPEL4WS Business Process Execution Language for Web Services. Riad Djemili ([email protected]) 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. - PowerPoint PPT PresentationTRANSCRIPT
BPEL4WSBusiness Process Execution Languagefor Web Services
Riad Djemili ([email protected])
Seminar Advanced Topics in NetworkingFreie Universität Berlin - WS 03/04
Kombination von Webdiensten
Moderne Reisebuchung.Fluganbieter
Hotel
Bankinstitut
ReisebüroKunde 1
2
3
45
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>
Buyer(BuyerPT)
BuyerSellerLink
Seller
buying
Buyer
Prozess EntfernterDienst
Seller(SellerPT)
Partnerbeziehungen (II)
Ausgehende Aufrufe mittels invoke
<invoke partnerLink="buying" portType="SellerPT" operation="buy" inputVariable="itemid" outputVariable="response"/>
Entf. WD(SellerPT)
buy(itemid)Prozess(BuyerPT)
buying
response
Dürfen nur WSDL-Nachrichtentypen sein.
Partnerbeziehungen (III)
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"/>
Entf. WD(SellerPT)
getamount(itemid)
selling
price
Prozess(BuyerPT)
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>
invokeA
receive
invokeB
Zustände
Langanhaltende Sitzungen müssen zustandsbehaftet sein.
MittelsVariablenEigenschaftenKorrelationsmengen
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)
<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>
1. Die Sitzung wird mit einem Aufruf von login eröffnet, welches eine eindeutige Identifikation zurückgibt.
2. Die eindeutige Identifikation wird dann benutzt, um die eigentliche Bestellung vorzunehmen.
Beispiel: Ein Bestellvorgang.
Sequenz mit drei Aktionen und Fehler in dritter Aktion.
Ausnahmebehandlung
Activity 1 Activity 2 Activity 3
Behandeln des aktuellen Fehlers
Eventuelle Rücknahme vorheriger (eigentlich erfolgreicher) Operationen
CompensationHandler FaultHandler
Fehlerbehandlung (I)
Faults Teil der WSDL-Sprache. Können auf drei Arten ausgelöst werden.
1. Bei synchronen Aufrufen entfernter Webdienste.2. Als Rückgabe eingegangener Aufrufe.
<reply partnerLink="selling" portType="SellerPT" operation="buy" faultName=“OutOfStockFault"/>
3. 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.
Collaxa BPEL designer
Fazit
Fehlen eines Standards zur Kombination von Webdiensten allgemein erkannt.
BPEL4WSBasiert auf WSDL.Ausgereift.Marktmacht von IBM und Microsoft könnte
Ausschlag geben.
Referenzen
Seminararbeit BPEL4WS (Riad Djemili)
Spezifikationen BPEL4WS 1.1
http://www-106.ibm.com/developerworks/webservices/library/ws-bpel/
WSDL 1.1http://www.w3.org/TR/wsdl
Implementationen BPWS4J
http://www.alphaworks.ibm.com/tech/bpws4j
Collaxa BPEL Server 2.0 http://www.collaxa.com