orchestrierung von web-services mit der business process execution language bpel

Post on 25-May-2015

1.037 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Diese Präsentation bietet einen Einblick in die Grundlagen von BPEL und Orchestrierung von Web-Services

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 &gt; 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