orchestrierung von web-services mit der business process execution language bpel
Post on 25-May-2015
1.036 Views
Preview:
DESCRIPTION
TRANSCRIPT
Orchestrierung von Web Services
Seminar Serviceorientierte Architekturen18. Dezember 2008
Hannes Meyer & Alexander SchmidMasterstudiengang Information Systems & Services
2Hannes Meyer & Alexander Schmid
Inhalt
18.12.2008
3Hannes Meyer & Alexander Schmid
Inhalt
18.12.2008
4Hannes Meyer & Alexander Schmid
Geschäftsprozessmodellierung
18.12.2008
„Geschäftsprozessmodellierung ist eine Menge von Praktiken oder Maßnahmen, die Unternehmen durchführen können, um alle Aspekte eines Geschäftsprozesses darstellen oder beschreiben zu können“ (nach Bloomberg, Schmelzer)
5Hannes Meyer & Alexander Schmid
Methoden für GP-Modellierung
18.12.2008
6Hannes Meyer & Alexander Schmid
Grafische Notationen
• Unified Modeling Language (UML)– Aktivitätsdiagramm
• Ereignis-gesteuerte Prozesskette (EPK)
• Business Process Markup Notation (BPMN)
18.12.2008
7Hannes Meyer & Alexander Schmid
Unified Modeling Language
• Standardisierte Sprache zurModellierung von Softwareund anderen Systemen
• Aktivitätsdiagramm zur Abbildung eines Anwendungsfall
18.12.2008
8Hannes Meyer & Alexander Schmid
Ereignis-gesteuerte Prozesskette
• Grafische Darstellung von Geschäftsprozessen einer Organisation
• Wesentliches Element des ARIS-Konzepts• Operationen, Ereignisse und Funktionen
• Gerichtete Graphen zur Verknüpfung
18.12.2008
Bildquelle: http://www.iam-wiki.org/EPK
9Hannes Meyer & Alexander Schmid
Erweiterte Ereignis-gesteuerte Prozesskette
• erweiterte Ereignis-gesteuerte Prozesskette (eEPK):– Organisationseinheit– Datenflüsse– Anwendungssystem
• Kanten dazu stellen Rollen dar (z.B. „führt aus“)
• Beispiel
18.12.2008
Bildquelle: http://www.iam-wiki.org/EPK
10Hannes Meyer & Alexander Schmid
Business Process Markup Notation
• Schwerpunkt ist grafische Darstellung von Geschäftsprozessen
• Symbole zur Verständlichkeit für Fachpersonal und Informatiker
• Kaum Anwendungs- und Strukturierungsanweisungen
• Überführung in ausführbare Prozessbeschreibungen (BPEL, XPDL) schwierig
18.12.2008
11Hannes Meyer & Alexander Schmid
BPMN – Objekte
• Flow Objects– Knoten in den Geschäftsprozessdiagrammen
• Connecting Objects– Verbindende Kanten
• Pools/Swimlanes– Bereiche mit denen Aktoren und Systeme dargestellt werden
• Artefakte– Data Objects, Groups, Annotations
18.12.2008
12Hannes Meyer & Alexander Schmid
BPMN – Flow Objects
• Activity
• Gateway
• Event
18.12.2008
Task Subprocess Loop
AND OR XOR Event-basiert
Start Inter- End Start- Int.- End- mediate Message Timer Exception
13Hannes Meyer & Alexander Schmid
BPMN – weitere Elemente
• Connecting Objects:– Sequence Flow– Message Flow
• Pools/Swimlanes
• Artifacts– Data Objects, Groups, Annotations
18.12.2008
14Hannes Meyer & Alexander Schmid
Beispiel Bestellabwicklung
18.12.2008
15Hannes Meyer & Alexander Schmid
Inhalt
18.12.2008
16Hannes Meyer & Alexander Schmid
Zusammenhänge GPM und SOA
• Services sind ein Teil von Geschäftsprozessen
• Services erfüllen fachliche Aufgaben
• BPEL als Teil von SOA beschreibt Geschäftsprozesse
18.12.2008
17Hannes Meyer & Alexander Schmid
Vorgehensweise
• Wie gelangt man zu den Services eines Geschäftsprozesses?
• Wie kann ich Services allgemein formuliert erstellen, damit sie in anderen Szenarien wiederverwendet werden können?
18.12.2008
Vorgehensweise
18.12.2008 18Hannes Meyer & Alexander Schmid
• Zwei Ansätze:Top-Down Bottom-Up
Dekomposition Komposition
WAS IST BESSER ???
19Hannes Meyer & Alexander Schmid
Vorgehensweise
• Wie gelangt man zu den Services eines Geschäftsprozesses?
• Wie kann ich Services allgemein formuliert erstellen, damit sie in anderen Szenarien wiederverwendet werden können?
Die Service-Entwicklung sollte „agil“ sein (sowohl Top-Down als auch Bottom-Up)
18.12.2008
Hannes Meyer & Alexander Schmid 2018.12.2008
Pause
Hannes Meyer & Alexander Schmid 2118.12.2008
Fortsetzung
22Hannes Meyer & Alexander Schmid
Inhalt
18.12.2008
23Hannes Meyer & Alexander Schmid
BPEL Historie
• 2002: BPEL4WS 1.0 von Microsoft, IBM & BEA• IBM: Web Services Flow Language WSFL• Microsoft: XLANG• 2003: Beitritt von SAP und Siebel Systems• Weiterentwicklung von OASIS• Offizieller offener Standard• 2007: WS-BPEL 2.0
18.12.2008
BPEL im Web-Services-Stapel
18.12.2008 24Hannes Meyer & Alexander Schmid
WS-BPEL
WSDL, Policy, UDDI, Inspection
Security Reliable Messaging
Transactions
Coordination
SOAP (logical messaging) Other protocols
XML, Encoding Other services
Business Processes
Description
Quality Of Service
Transport and Encoding
Quelle: In Anlehnung an Ryan, Frank http://www.oasis-open.org/committees/download.php/23068/WS-BPEL%20Technical%20Overview%20for%20Developers%20and%20Architects%20-%20Part%201%20(Frank%20Ryan).pdf
WS-BPEL - Einführung
• Web Services Business Process Execution Language 2.0
• Orchestriert Web-Services
18.12.2008 25Hannes Meyer & Alexander Schmid
Service
Input
Service Service Service
Output
Service Service
Basis- und Composite-Services
18.12.2008 26Hannes Meyer & Alexander Schmid
Basis-Service
Input
B-Service
Composite-Service
B-Service
Output
Operative DB
B-Service
DB 1 Operation
DB 2
Orchestrierung
• Komposition verschiedener Services zu einem Prozess.
• Services können intern und extern sein.• Steuerung der zeitlichen Reihenfolge und
Bedingungen der Serviceaufrufe.• Übergabe und Zwischenspeicherung von Daten
zwischen Services.• Der komponierte Prozess ist wiederum ein
Service.
18.12.2008 27Hannes Meyer & Alexander Schmid
Abgrenzung zu Choreografie
• Choreografie als Zusammenarbeit gleichberechtigter Partner.• Orchester wird zentral geleitet (dirigiert).• Eigenschaften der Choreografie:
– bessere Skalierung– fehlender Gesamtüberblick– Services triggern sich gegenseitig.
18.12.2008 28Hannes Meyer & Alexander Schmid
Bildquellen: http://www.flickr.com/creativecommons/
29Hannes Meyer & Alexander Schmid
BPEL und WSDL
• Mittels einer WSDL wird ein BPEL-Prozess selbst als Service zur Verfügung gestellt.
• WDSL definiert u.a. Input-/Output-Messages, deren Typ.
• Serviceaufrufe innerhalb des Prozesses stützen sich auf WSDL-Dokumente.
• BPEL erweitert die WSDL- Spezifikation, um asynchrone Prozesse mit langer Laufzeit zu unterstützen.
• WS-BPEL 2.0 verwendet WSDL 1.118.12.2008
30Hannes Meyer & Alexander Schmid
BPEL Sprachelemente
• Prozessdefinition– Prozess & Import– Variablen– Partner Links
• Grundlegende Aktivitäten– Assign– Invoke– Receive & Reply– Throw
• Strukturierende Aktivitäten– Sequence, Flow– If-else– ForEach
• Ausnahmebehandlung– Fault-Handler– Event-Handler– Compensation-Handler
18.12.2008
31Hannes Meyer & Alexander Schmid
PROZESSDEFINITIONÜberblick BPEL Sprachelemente
18.12.2008
32Hannes Meyer & Alexander Schmid 18.12.2008
Hannes Meyer & Alexander Schmid 3318.12.2008
<process>
34Hannes Meyer & Alexander Schmid
<process>
<?xml version="1.0" encoding="UTF-8"?>
<process name="process_Bestellung" targetNamespace="http://enterprise.netbeans.org/bpel/process_Bestellung" xmlns="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:sxt="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Trace" xmlns:sxed="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/Editor" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:bpws="http://docs.oasis-open.org/wsbpel/2.0/process/executable" xmlns:adress="http://xml.netbeans.org/schema/Adresse" xmlns:kunde="http://xml.netbeans.org/schema/Kunde" xmlns:best="http://xml.netbeans.org/schema/Bestellung" xmlns:tns="http://j2ee.netbeans.org/wsdl/Bestellung_pruefen" xmlns:sxxf="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/XPathFunctions" xmlns:sxeh="http://www.sun.com/wsbpel/2.0/process/executable/SUNExtension/ErrorHandling">
<documentation>Dies ist der Bestellprozess. …
</documentation>
[…]
</process>
18.12.2008
35Hannes Meyer & Alexander Schmid
<import>
<import namespace="http://xml.netbeans.org/schema/Bestellung" location="../src/Bestellung.xsd" importType="http://www.w3.org/2001/XMLSchema"/>
<import namespace="http://bestellabwicklung.hdm.de" location="Bestellung_pruefen/Bestellung_pruefen.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="http://bestellabwicklung.hdm.de/" location="WebServices/MaterialPruefenService.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
<import namespace="http://j2ee.netbeans.org/wsdl/prozess_Bestellung" location="process_Bestellung.wsdl" importType="http://schemas.xmlsoap.org/wsdl/"/>
18.12.2008
Hannes Meyer & Alexander Schmid 3618.12.2008
<partnerLinks>
37Hannes Meyer & Alexander Schmid
<partnerLinks>
<partnerLinks><partnerLinkname="PL_Bestellung_pruefen" xmlns:tns="http://j2ee.netbeans.org/wsdl/
subprocess_Bestellung_pruefen" partnerLinkType="tns:subprocess_Bestellung_pruefen" partnerRole="subprocess_Bestellung_pruefenPortTypeRole"/>[…]</partnerLinks>
18.12.2008
Verbindung zu einem Partner-Service.
<variables>
<variables><variable name="Subprocess_Bestellung_pruefenOperationIn" xmlns:tns="http://j2ee.netbeans.org/wsdl/subprocess_Bestellung_pruefen" messageType="tns:subprocess_Bestellung_pruefenOperationRequest"/><variable name="Kunde" type="kunde:Kunde" /><variable name="Meldung" type="xsd:string" /></variables>
• In Variablen werden Zustände eines Prozesses gespeichert.• Variablen müssen von einem der folgenden Typen sein:
– WSDL Nachrichten– XMLS Simple Types und Complex Types– XMLS Elemente im Allgemeinen (String etc.)
• Die Definition der Variablen als direkte Kinder von <process> macht sie global;• Innerhalb eines Scopes nur für Kinder dieses Scopes sichtbar.• XPATH als Zugriffsprache auf Variablen
18.12.2008 38Hannes Meyer & Alexander Schmid
39Hannes Meyer & Alexander Schmid
GRUNDLEGENDE AKTIVITÄTEN
Überblick BPEL Sprachelemente
18.12.2008
Hannes Meyer & Alexander Schmid 4018.12.2008
<receive>
Hannes Meyer & Alexander Schmid 41
<receive>
18.12.2008
<receive
name="Bestelleingang"
partnerLink="Kunde"
portType="tns:prozess_BestellungPortType"
operation="prozess_BestellungOperation"
variable="Prozess_BestellungOperationIn"
createInstance="yes"
xmlns:tns="http://.../wsdl/prozess_Bestellung" >
</receive>
Empfangen einer passenden eintreffenden Nachricht.
Hannes Meyer & Alexander Schmid 4218.12.2008
<reply>
Hannes Meyer & Alexander Schmid 43
<reply>
18.12.2008
<reply name="Bestaetigung_senden"
partnerLink="Kunde"
operation="prozess_BestellungOperation"
xmlns:tns="http://j2ee.netbeans.org/wsdl/prozess_Bestellung"
portType="tns:prozess_BestellungPortType"
variable="Prozess_BestellungOperationOut" />
Sende eine Nachricht als Antwort auf <receive>.
Hannes Meyer & Alexander Schmid 4418.12.2008
<invoke>
Hannes Meyer & Alexander Schmid 45
<invoke>
18.12.2008
<invoke name="Bestellung_pruefen"
partnerLink="PL_Bestellung_pruefen"
operation="bestellung_pruefenOperation"
portType="tns:bestellung_pruefenPortType"
xmlns:tns="http://bestellabwicklung.hdm.de"
inputVariable="Bestellung_pruefenOperationIn"
outputVariable="Bestellung_pruefenOperationOut">
</invoke>
Führe eine Operation eines PartnerLinks aus.
Hannes Meyer & Alexander Schmid 4618.12.2008
<assign>
Hannes Meyer & Alexander Schmid 47
<assign>
18.12.2008
<assign name="Assign1">
<copy>
<from variable="Prozess_BestellungOperationIn"
part="bestellprozess_in" />
<to variable="Bestellung_pruefenOperationIn"
part="bestellung_in" />
</copy>
</assign>
Weise Variablen neue Werte zu.
Hannes Meyer & Alexander Schmid 48
<copy> mit xsl Transformation
18.12.2008
<copy>
<from>
bpws:doXslTransform('urn:stylesheets:Bestellbestaetigung.xsl', $Prozess_BestellungOperationIn.bestellprozess_in)
</from>
<to variable="Prozess_BestellungOperationOut" part="bestellprozess_out"/>
</copy>
Hannes Meyer & Alexander Schmid 49
xsl stylesheet
18.12.2008
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:bes="http://xml.netbeans.org/schema/Bestellung"xmlns:kun="http://xml.netbeans.org/schema/Kunde"><xsl:output method="xml"/>
<xsl:template match="bes:Bestellung"><bestaetigung>
<xsl:variable name="tmpTotal"/><bestellnummer><xsl:value-of select="@bestellnummer"/></bestellnummer><datum><xsl:value-of select="@bestelldatum"/></datum><kunde><xsl:value-of select="bes:Kunde/kun:Name/kun:Nachname"/>, <xsl:value-of
select="bes:Kunde/kun:Name/kun:Vorname"/></kunde><kundennummer><xsl:value-of select="bes:Kunde/kun:Kundennummer"/></kundennummer>
<bestellpositionen> <xsl:for-each select="bes:Bestellposition"><produkt><nummer><xsl:value-of select="bes:Produkt/bes:Produktnummer"/></nummer><name><xsl:value-of select="bes:Produkt/bes:Produktbezeichnung"/></name><menge><xsl:value-of select="bes:Bestellmenge"/></menge><preis einheit="EUR"><xsl:value-of select="bes:Produkt/bes:Produktpreis *
((bes:Produkt/bes:InklMwst) div 100 +1)"/></preis></produkt></xsl:for-each>
</bestellpositionen></bestaetigung>
</xsl:template></xsl:stylesheet>
Hannes Meyer & Alexander Schmid 50
<wait>
18.12.2008
<wait name="Wait1"><for>'P0Y0M0DT0H0M20S'</for>
</wait>[…]
<wait name="Wait2"><until>'2008-12-18T13:15+01:00'</until>
</wait>[…]
Warte eine gewisse Zeit.
51Hannes Meyer & Alexander Schmid
STRUKTURIERENDE AKTIVITÄTEN
Überblick BPEL Sprachelemente
18.12.2008
Hannes Meyer & Alexander Schmid 5218.12.2008
<sequence>
Hannes Meyer & Alexander Schmid 53
<sequence> & <flow>
18.12.2008
<sequence><receive […] /><assign […] /><invoke […] /><reply […] />
</sequence>
<flow><invoke name="Invoke1" […] />
<invoke name="Invoke2" […] /> <invoke name="Invoke3" […] /></flow><assign […] /><reply […] />
Hannes Meyer & Alexander Schmid 5418.12.2008
<forEach>
Hannes Meyer & Alexander Schmid 55
<forEach>
18.12.2008
<forEach name="Fuer_jede" parallel="no" counterName="i"><startCounterValue>1</startCounterValue>
<finalCounterValue> count($Prozess_BestellungOperationIn.bestellprozess_in/best:Bestellposition)</finalCounterValue><scope name="Position">
<variables><variable name="Bestand_pruefenIn" […] />[…]</variables>
<sequence name="Sequence2">
<assign name="Assign4">
<copy>
<from>$Prozess_BestellungOperationIn.bestellprozess_in/best:Bestellposition[$i]/best:Bestellmenge</from>
<to>$Bestand_pruefenIn.parameters/bestellmenge</to>
</copy>
[…]
</assign>
<invoke name="Materialbestand_pruefen" […]/> […]
</sequence>
</scope>
</forEach>
Hannes Meyer & Alexander Schmid 5618.12.2008
<if> - <else>
57Hannes Meyer & Alexander Schmid
<if> - <else><if name="If1">
<condition>$Bestand_pruefenOut.parameters/return > 0</condition><sequence name="Sequence4">
<assign name="Assign5"><copy>
<from>$Bestand_pruefenOut.parameters/return</from><to>$Auftrag_anlegenIn.parameters/produktionsmenge</to>
</copy><copy>
<from>$Bestand_pruefenIn.parameters/produktnummer</from>
<to>$Auftrag_anlegenIn.parameters/produktnummer</to></copy>
</assign><invoke name="Produktionsauftrag_ausloesen" partnerLink="PL_Produktion"
operation="Auftrag_anlegen" portType="tns:Produktionsauftrag_anlegen" inputVariable="Auftrag_anlegenIn" xmlns:tns="http://bestellabwicklung.hdm.de/"></invoke></sequence><else> […] </else>
</if>
18.12.2008
58Hannes Meyer & Alexander Schmid
AUSNAHMEBEHANDLUNGÜberblick BPEL Sprachelemente
18.12.2008
Hannes Meyer & Alexander Schmid 5918.12.2008
Fault Handler
Hannes Meyer & Alexander Schmid 60
<throw>
18.12.2008
<throw
name="Throw1"
faultName="ns2:datenfehler"
faultVariable="subprocess_Bestellung_pruefenOperationFault"/>
Erzeuge einen Fehler innerhalb des Prozesses.
Hannes Meyer & Alexander Schmid 61
<catch>
18.12.2008
<catch faultName="ns2:datenfehler"
faultVariable="Fault_Bestelldaten" faultMessageType="ns2:
subprocess_Bestellung_pruefenOperationFault">
<reply name="Reply_Datenfehler"
partnerLink="PL_Bestellprozess"
operation="subprocess_Bestellung_pruefenOperation"
portType="ns2:subprocess_Bestellung_pruefenPortType"
faultName="ns2:datenfehler"
variable="subprocess_Bestellung_pruefenOperationFault" />
</catch>
Compensation Handler
18.12.2008 62Hannes Meyer & Alexander Schmid
Bildquelle: http://www.oasis-open.org/committees/download.php/23066/WS-BPEL%20Technical%20Overview%20for%20Developers%20and%20Architects%20-%20Part%203%20(Charlton%20Barreto).pdf
63Hannes Meyer & Alexander Schmid
Event Handler
• Parallel zur Abarbeitung des Prozesses/ Scopes.
• Empfängt Requests, stößt draufhin Aktionen an.
• Beispiel: Stornierung durch Kunden tritt während des Bestellprozesses ein.
18.12.2008
64Hannes Meyer & Alexander Schmid
Condition:
Bestand_pruefenOut > 0
process_BestellungIn - Bestellposition[i]/Produktnummer - Bestellposition[i]/Bestellmenge
Bestand_pruefenIn (produktnummer, bestellmenge)Material_reservierenIn (produktnummer, bestellmenge)
From: 1
To: count(Be-stellposition)
18.12.2008
process_BestellungIn
Part: Bestellung
process_BestellungIn
subprocess_Bestellung_pruefenInsubprocess_Bestellung_pruefenIn
Part: Bestellung
subprocess_Bestellung_pruefenOut
Part: boolean
Bestand_pruefenOut
Part: IntegerBestellung_pruefenOut
Auftrag_anlegenIn
Auftrag_anlegenIn
Part: Integer
DoXSLTransform
process_BestellungOut
process_BestellungOut
Part: String
process_BestellungFault
Part: String
Material_reservierenIn
Parts: Integer
Bestand_pruefenIn
Parts: Integer
65Hannes Meyer & Alexander Schmid
Inhalt
18.12.2008
66Hannes Meyer & Alexander Schmid
Vor- und Nachteile
• Vorteile– XML-basiert– Ausnahmebehandlung– BPMN als grafische
Notation fungiert als Schnittstelle zwischen Fachpersonal und IT
18.12.2008
• Nachteile– Komplexität– Keine Interaktion mit
Menschen möglich– Kompatibilität von BPEL
1.1 und BPEL 2.0– Überführung von BPMN
in BPEL nicht einfach
67Hannes Meyer & Alexander Schmid
BPEL4People
• Als Vorschlag bei OASIS eingereicht, aber noch kein offizieller Standard.
• Erweitert die bestehende WS-BPEL Spezifikation.
• Bringt menschliche Interaktionen in BPEL-Prozesse.
18.12.2008
68Hannes Meyer & Alexander Schmid
BEPL4People
• Mensch --> Prozess• User instantiiert & liefert Daten an Prozess
• Mensch <--> Prozess• Prozess fordert vom User Daten an• Prozess liefert eine Meldung an den User• Prozess fordert Bestätigung des Users
• Mensch <-- Prozess• Prozess benachrichtigt den User
18.12.2008
69Hannes Meyer & Alexander Schmid
Pause
18.12.2008
70Hannes Meyer & Alexander Schmid
Quellen
• OASIS (2007): WS-BPEL 2.0 Primer. http://www.oasis-open.org/committees/download.php/23974/wsbpel-v2.0-primer.pdf
• OASIS (2007): WS-BPEL 2.0 Specification. http://docs.oasis-open.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.pdf
• http://swt2.informatik.uni-halle.de/downloads/2006ss/proseminar_cs_ws/08_felix-wagner_bpel_ausarbeitung.pdf
• BPEL4PEOPLE 1.0 Specification. http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-bpel4people/BPEL4People_v1.pdf
• http://bpel4people.svn.sourceforge.net/viewvc/bpel4people/doc/poster/poster.pdf?revision=1• BPEL Presentations on http://ode.apache.org/ws-bpel-20.html• Josuttis, N. (2008): SOA in der Praxis. Dpunkt Verlag.• http://www.iam-wiki.org/EPK• http://www.competence-site.de/soa.nsf/AttachShow!OpenFrameset&attachfile=/soa.nsf/
04AF9B7C89738738C125732A00551F54/$File/SOA%20macht%20den%20Weg%20frei%20fuer%20Business%202.0_ids%20scheer_dr.%20scheer_082007.pdf
• http://www.gi-ev.de/no_cache/service/informatiklexikon/informatiklexikon-detailansicht/meldung/serviceorientierte-architektur-118/
• http://bpms.intalio.com/tutorials.html• http://www.bpmn.org• Netbeans Sample BPEL Projects
18.12.2008
Hannes Meyer & Alexander Schmid 7118.12.2008
Vielen Dank für die Aufmerksamkeit!
top related