Web Services Composition (BPWS4J ) Hager Markus, Kober Christoph, Linde Kai, Ott Florian, Erdmann Dennis Programmierung verteilter Systeme Lab Institut für Informatik Universität Augsburg Universitätsstraße 14, 86159 Augsburg Tel.: (+49) 821/598-2174, Fax: -2175 URL: http://www.informatik.uni-augsburg.de/vs
Agenda Motivation Web Service Composition Definition Orchestration/Choreography Existierende Standards Fazit Übersicht BPEL4WS Herkunft Aufbau Beispiel mit Eclipse-Plugin von IBM (BPWS4J) 2
Web Service Composition / Motivation Bereitstellung von Mehrwertdiensten durch Zusammenschluss mehrerer Web Services Developers and users can then solve complex problems by combining available basic services and ordering them to best suit their problem requirements. Wiederverwendung und Erweiterung bestehender Dienste Service composition accelerates rapid application development, service reuse, and complex service consummation. Serviceorientierte Entwicklung von Systemen Ausnutzung wachsender Anzahl bestehender Online- Dienste plattformunabhängige Kommunikation zwischen Web Services 3
Web Service Composition Definition: Web Service Composition ist die Vereinigung bestehender Web Services und anderer Komponenten, um neue Prozesse zu erzeugen. 4
Web Service Composition / Orchestration/Choreography Web Service Composition besteht aus Orchestration und/oder Choreography. Zentrale Perspektive: Dezentrale Perspektive: Beschreibt einen ausführbaren Businessprozess der sowohl mit eigenen als auch fremden WS interagieren kann. Der Prozessfluss wird durch einen Teilnehmer kontrolliert. Jeder Service beschreibt seine eigene Aufgabe im gesamten Zusammenspiel. Der Fokus liegt auf dem Nachrichtenaustausch zwischen den WSs. Web Service Web Service Web Service Process flow Web Service Web Service Orchestration Web Service Collaboration Web Service Web Service Choreography 5
Web Service Composition / Existierende Standards Existierende Standards: Übersicht WSFL Web Service Flow Language (IBM) first-generation composition languages Nicht Kompatibel mit anderen standards XLANG BPML Business Process Modeling Language ebxml BPSS Business Process Specification Schema BPEL4WS Business Process Execution Language for Web Services second-generation languages Integrates WSFL and WSCI 6
Web Service Composition / BPEL4WS BPEL4WS Business Process Execution Language for Web Services BEA, IBM, Microsoft, SAP und Siebel XML\WSDL - basiert Schema: WS-Transaction BPEL4WS WSDL UDDI SOAP 7
Web Service Composition / BPEL4WS BPEL4WS Die resultierende Komposition wird process genannt Die involvierten WS werden partner genannt Der Nachrichtenaustausch oder Zwischenergebnisse sind activities Es entstehen zwei Dokumente: BPEL Datei (.bpel): Hier sind die Aktivitäten beschrieben WSDL Datei (.wsdl): Beschreibung der Ports der Komposition. Process WS-Composition WS Partner WS Partner WS Activity Partner 8
Web Service Composition / BPEL4WS Möglichkeiten: Primitive Typen: <invoke>: Aufruf einer Methode bei einem Partner <receive>: Warten auf ein Ergebnis einer aufgerufenen Methode <reply>: Antworten auf eine Anfrage <wait>: warten <assign>: Daten von einer Stelle zur anderen kopieren <throw>: Fehler werfen <terminate>: Gesamten Prozess beenden <empty>: leere Anweisung Struktur-Typen: <sequence>: geordnete Sequenz <switch>: Optionen <while>: Schleifen <pick>: eine Möglichkeit von mehreren auswählen <flow>: Parallelverarbeitung Mit diesen Primitiven Typen und den Struktur-Typen können komplexe zusammenhänge (Algorithmen) beschrieben werden. 9
Web Service Composition / BPEL4WS -> BPWS4J BPWS4J: Software von IBM zur Erstellung von WS-Composition Die Software besteht aus einer Engine zur Abwicklung erstellter Geschäftsprozesse und einem Editor als Eclipse Plugin, indem die Geschäftsprozesse entwickelt werden können. Plugin: reply receive invoke wrap Quelle: http://alphaworks.ibm.com/tech/bpws4j 10
Web Service Composition / BPEL4WS -> BPWS4J 11
Web Service Composition / BPEL4WS BPEL4WS Beispiel I <process xmlns="http://schemas.xmlsoap.org/ws/2003/03/busin ess-process/" name="test" targetnamespace="http://tempuri.org/" xmlns:tns="http://tempuri.org/" suppressjoinfailure="no" enableinstancecompensation="no" abstractprocess="no"> <partnerlinks> <partnerlink name="client"/> <partnerlink name="servicea"/> <partnerlink name="serviceb"/> <partnerlink name="servicec"/> </partnerlinks> <variables> <variable name="processinput"/> <variable name="ainput"/> <variable name="aoutput"/> <variable name="bcinput"/> <variable name="boutput"/> <variable name="coutput"/> <variable name="processoutput"/> <variable name="aerror"/> </variables> <sequence> <receive name="receiveinput" variable="processinput"> </receive> <assign > <copy> <from variable="processinput"/> <to variable="ainput"/> </copy> </assign> <scope> <faulthandlers> <catch faultvariable="aerror"> </catch> </faulthandlers> <sequence> <invoke name="invokea" partnerlink="servicea" inputvariable="ainput" outputvariable="aoutput"> </invoke> </sequence> </scope> <assign > <copy> <from variable="aoutput"/> <to/> </copy> </assign> 12
Web Service Composition / BPEL4WS BPEL4WS Beispiel II <flow> <sequence> <invoke name="invokeb" partnerlink="serviceb" inputvariable="bcinput"> </invoke> <receive name="receive_invokeb" partnerlink="serviceb" variable="boutput"> </receive> </sequence> <sequence> <invoke name="invokec" partnerlink="servicec" inputvariable="bcinput"> </invoke> <receive name="rceive_invokec" partnerlink="servicec" variable="coutput"> </receive> </sequence> </flow> <switch> <case> <assign > <copy> <from variable="boutput"/> <to variable="processoutput"/> </copy> </assign> </case> <otherwise> <assign > <copy> <from variable="coutput"/> <to variable="processoutput"/> </copy> </assign> </otherwise> </switch> <invoke name="reply" partnerlink="client" inputvariable="processoutput"> </invoke> </sequence> </process> 13
Web Service Composition / Fazit Fazit: Guter Ansatz, aber was ist mit: connectivity correctness scalability QoS Zu viele Standards die nur teilweise umgesetzt sind. 14
Process: CalcPopulationDensity Methodenaufruf: InputVariable wsdl CountryInfoService copy copy wsdl wsdl SizeService PeopleService copy wsdl copy CalcService wsdl Methodenergebnis: OutputVariable 15
Web Service Composition / Literatur Literatur: Siobhán Clarke: Current Solutions for Web Service Composition; IEEE INTERNET COMPUTING, 2004 Biplav Srivastava and Jana Koehler: Web Service Composition - Current Solutions and Open Problems; http://www.zurich.ibm.com/pdf/ebizz/icaps-ws.pdf http://www-128.ibm.com/developerworks/library/ws-bpelcol1/ Skript zu KVS ws 05/06 Folie 664-756 16