Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server •...

144
BPEL Schulung Lizenz Dies ist das komplette Skript zu unserer BPEL Schulung . Außer dem Skript gibt es noch ein Übungsskript . Sie dürfen das Skript zur eigenen Fortbildung oder für Fremde verwenden und diese Datei beliebig oft kopieren und verteilen. Die Voraussetzung für die oben genannten Rechte ist, dass diese Datei in unveränderter Form benutzt und weitergeben wird. Autoren: Kaveh Keshavarzi, Thomas Bayer Copyright by predic8 GmbH Moltkestr. 40 53173 Bonn www.predic8.de [email protected]

Transcript of Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server •...

Page 1: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

BPEL Schulung

Lizenz

Dies ist das komplette Skript zu unserer BPEL Schulung. Außer dem Skript gibt es

noch ein Übungsskript. Sie dürfen das Skript zur eigenen Fortbildung oder für

Fremde verwenden und diese Datei beliebig oft kopieren und verteilen. Die

Voraussetzung für die oben genannten Rechte ist, dass diese Datei in

unveränderter Form benutzt und weitergeben wird.

Autoren:

Kaveh Keshavarzi,

Thomas Bayer

Copyright by

predic8 GmbH

Moltkestr. 40

53173 Bonn

www.predic8.de

[email protected]

Page 2: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Inhalt

• Einführung

• Partnerlinks

• Variablen

• Aktivitäten

• Fehlerbehandlung

• Compensation

• Correlation

• Message Exchange Pattern

• EventHandling

• Synchronisation

• Bussines Activity Monitoring

2

Page 3: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Einführung

Page 4: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Business Prozesse

• Long runners (Long-running Transaction LRT)

– Von Zehn Minuten bis mehreren Monaten

• Alternative Flüsse für Ausnahmen

• Change

• Oft gegenseitige Abhängigkeiten auf Service-Ebene

4

Page 5: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Orchestration und Choreography

• Steuern von Partnern, die in einem Prozess beteilig sind.

• Orchestration

– Fokus auf einen Teilnehmer der orchestirert

• Choreography

– Globaler Ansatz

5

Page 6: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

PI-Calculus

• By Robin Milner (späte 1980er)

• Mathematische Grundlage von BPML und XLANG

• Modellierung von konkurrierenden kommunizierenden Systemen

6

Page 7: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Web Services Business Process

Execution Language WS-BPEL

• XML Sprache für auf Web Services basierende Business Prozesse

• Früher bekannt unter BPEL4WS

• Von BEA, IBM (WSFL), Microsoft (XLANG), SAP

• OASIS Standard

• Basiert auf: XML,Schema, XPath, WSDL, XSLT

7

Page 8: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Beziehungen zu anderen Spezifikationen

• XML

• WSDL 1.1 • Schema 1.0

• XPath 1.0

• XSLT 1.0

• WS-I Basic Profile 1.1

8

Page 9: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

WS Stack

9

WSDL UDDI WSIL

SOAP w. AttachmentsSOAP

XML Other formats

HTTP/HTTPS JMS SMTP

WS-Transactions

WS-Coordination

Web Services Security

WS-ReliableMessaging

WS-BPELEnterprise

QoS

Security

Description &

Discovery

Message &

Encoding

Transport

Page 10: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Zusammengesetzter Service

10

Activity

WSDL

Web Service

Activity

WSDL

Web Service

Activity

WSDL

Web Service

WSDL

State

Web Service

Page 11: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Zusammengesetzter Service

11

Activity

WSDL

Web Service

Activity

WSDL

Web Service

Activity

WSDL

Web Service

WSDL

Zustand(Variablen)

Web Service

Page 12: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Ausführbare und Abstrakte Prozesse

• Executable Process

– Beschreibt das Verhalten eines Teilnehmers vollständig

• Business Protocols

– Beschreibt den Nachrichtenaustausch zw. Den Teilnehmern

12

Page 13: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Abstrakter Prozess

• Beschreibung des beobachteten Verhaltens eines Prozesses

• Standardisierte Form

• „Programmierung in the Large“

– Warten auf Nachrichten

– Senden von Nachrichten

– Kompensation

• Nicht ausführbar

• Verbirgt Details

BPEL 2.0:

• Abstrakte Prozesse haben eigenen Namespace

13

Page 14: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Struktur eines ausführbaren BPEL Prozesses

14

Partnerlinks

MessageExchange

Variables

Correlation Sets

FaultHandlers

EventHandlers

Aktivität

BPEL Prozess

Page 15: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

WS-BPEL - Konzepte

• Container speichern Nachrichten und Statusinformationen

• Fault Handling ähnlich zu Java

– Catch Block innerhalb XML Struktur

• Fehlerfälle können Aktivitäten zugeordnet werden

– Compensation Handler

• Interaktionen zwischen Diensten mittels Partner Link

– PLs beschreiben Interaktionen und angebotener Funktionsumfang

– Rollenkonzept für Definition

15

Page 16: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

BPEL Projekt

• BPEL Datei

– Beschreibt den Prozess

• WSDL Dateien

– Beschreiben Schnittstellen

• XML Schema Dateien

– Beschreiben Datentypen

• JBI Assembly kann BPEL Projekt aufnehmen (Sun)

16

Page 17: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

BPEL Produkte

Page 18: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Active BPEL Engine

• Open Source GPL (Nur bis Version 5)

• Läuft in JEE Web Container

• Basis für kommerzielle Produkte von Active Endpoints

18

Page 19: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Oracle SOA Suite

19

• Basiert auf Collaxa Produkt

• BPEL Designer und Engine

• Business Activity Monitoring (BAM)

• Rules Engine (RETE)

• ESB

• Security

• Registry

• IDE

Page 20: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Oracle BPEL Process Manager

20

Eclipse, JDeveloper

Built-in Integration Services

Quelle: http://www.oracle.com/technology/bpel

J2EE Application Server(WebLogic, Oracle AS, JBoss, WebSphere)

Built-in Integration ServicesWSDL Binding

Core BPEL Engine

XQuery XSLTUser

Tasks

Web Services

JMS

JCA

Email BPEL Console

MA

NA

GE

DEHYDRATE

Oracle DB

BPEL

BPEL Designer

DE

SIG

N

Page 21: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

BPEL Prozess

21

Page 22: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

NetBeans BPEL Designer

22

Page 23: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

NetBeans Runtime

23

Page 24: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Netbeans 5.5 BPEL Designer

24

Page 25: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

BPEL Server

• Sun-Bpel Engine

• ActiveBPEL Engine

– http://www.activebpel.org

• IBM

• Oracle BPEL Process Manager

– http://www.oracle.com/technology/products/ias/bpel/index.html

• ActiveWebflow Enterprise

– http://www.active-endpoints.com/products/activewebflow/awfent/

• Microsoft BizTalk Server

– http://www.microsoft.com/biztalk/

• FiveSight’s Process Execution Engine (PXE)

– http://www.fivesight.com/pxe.shtml/

• Apache ODE

25

Page 26: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Übung:

AvailabilityProcess

26

Page 27: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Availability Service Prozess

27

Availability Service Prozess

Client

Stock Service

check

(article=0,

quantity=50)

true

Lagerliste

get stock

Page 28: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Availability Prozess

28

Verfüg-

barkeit

prüfen

Lager

Anfrage nach

Verfügbarkeit

Lagerliste besorgen

Bestand errechnen

ja

nein

Ja antworten

Nein antworten

Page 29: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Lager des Schlachthauses

29

1 2 3

250 Stück

4

50 Stück

5 6

300 Stück

7 8 9

100Stück

Page 30: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Slaughterhouse Services (Backend)

30

Webanwendung

StockService

Lagerliste

get stock

orderlD

place Order ProductionService

kann nur eine

Position

gleichzeitig

verarbeiten

messagePagingService

SMSArticleService

Bezeichnung

ID

Page 31: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

PartnerLinks

oder

Geschäftsbeziehungen

Page 32: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Partner

• Nimmt an Web Service Transaktion teil

• Kommunikation mit Partner über Schnittstellen

– Ruft Endpoints eines Prozesses auf oder

– Wird von Prozess aufgerufen

32

Page 33: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Partner Links

33

PortType Rolle

PartnerLinkType PartnerLink EndpointRef

Prozess

1

1,2

*

*

eigene Rolle

Partnerrolle

1

1

1 *

BPELWSDL

BPEL Extensions

Partner0,1

1.) Bei Services, die mit jedem anderen zusammenarbeiten, genügt eine Rolle

1.)

Page 34: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Partner Link

• Definiert am Prozess beteiligte Partei

• „Partner“ müssen Schnittstelle bereitstellen

– Definition über WSDL

• Jede Aktion verweist indirekt auf den PortType des Partners

34

...

<partnerLinks>

<partnerLink name="inboundPartnerLink"

partnerLinkType=“name:ServiceLinkType"

myRole="inbound" />

<partnerLink name="outboundPartnerLink"

partnerLinkType=“name:ServiceLinkType"

partnerRole="outbound" />

</partnerLinks>

Verweist

auf WSDL

Erweiterung

Page 35: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

BPEL Erweiterungen für WSDL

• PartnerLinkType

– Verbindet Port-Type mit Partnerlink

– Wird bei jedem Prozess benötigt

• Property

– Namens/Wert Paar

– Wird für Correlation genutzt

• Property Alias

– Mappt Teil einer Message auf Property

– Wird für Correlation genutzt

35

Page 36: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Variablen

Page 37: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Variablen

• Speichern den Status zw. dem Austausch von Nachrichten

• Datentypen

– WSDL Message Types

– XML Schema Types (simple, complex)

– XML Schema Elemente

37

Page 38: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Variablen

<bpel:variables>

<bpel:variable messageType=“ns1:gespraechType“

name="Gespraech"/>

<bpel:variable name=“bestellung “

type=“ns7:Bestellung“/>

<bpel:variable name=“ergebnis“

type="xsd:string">

<bpel:from>''</bpel:from>

</bpel:variable>

</bpel:variables>

38

Page 39: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Initialisierung von Variablen

<bpel:variable name=“message“

type="xsd:string">

<bpel:from>„ok!'</bpel:from>

</bpel:variable>

Java:

String message =“ok!“;

39

Page 40: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Initialisierung von Variablen 2

<bpel:variable name=“message“ type=“m:message">

<bpel:from>

<bpel:literal>

<m:message

xmlns:m=“http://predic8.com/bpel”>

<m:code>7</m:code>

</m:message>

</bpel:literal>

</bpel:from>

</bpel:variable>

40

Page 41: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Grundlegende

Aktivitäten

Page 42: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Grundlegende Aktivitäten

• Receive

• Reply

• Invoke

• Assign

• Throw

• Wait

• Empty

42

Page 43: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Standard Attribute für Aktivitäten

Können bei jeder Aktivität angegeben werden:

name=“ncname“? Name für Dokumentation

joinCondition=“bool-expr“?

suppressJoinFailure=“yes|no“?>

43

Siehe Kapitel

Synchronisation

Page 44: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Standard Kindelemente für Aktivitäten

44

Können jeder Aktivität hinzugefügt werden:

(Bedeutung Siehe Synchronisation)

<source linkName=“ncname“

transitionCondition=“bool-expr“?>*

<target linkName=“ncname“/>*

Page 45: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

receive - Aktivität

• Wartet bis passende Nachricht von einem Partner eintrifft

• Blockt

• Stellt Partnern Service zur Verfügung

• PortType ist optional (Vorsicht – Inkonsistenz)

45

<bpel:receive createInstance="yes“

name=“BerechneGespraechRequest“

operation="BerechneGespraech“

partnerLink=“BillingPL“

portType="ns1:BillingPT“

variable=" BerechneGespraechRequest "/>

Page 46: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Lebenszyklus eines Prozesses

• Beginnt mit dem Empfang einer Nachricht durch eine receive- oder

pick- Aktivität mit

• createInstance = „yes“

• Normale Beendigung:

• Die Hauptaktivität und alle Event-Handler terminieren ohne fault

• Abnormale Beendigung:

• durch exit-Aktivität

• Fault-Handler auf Prozess Ebene terminiert

• Fault-Handler auf Prozess-Ebene wirft Fault

Page 47: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

reply - Aktivität

• Sendet eine Antwort auf eine mit receive oder pick empfangene

Nachricht

• Nur für synchrone Interaktion

• Bei reveice und reply müssen übereinstimmen

– PartnerLink

– PortType

– Operation

– ggfls. Correlation Set

47

receive

reply

Page 48: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

reply - Aktivität

<bpel:reply operation="BerechneGespraech"

partnerLink="BillingPL“

portType="ns1:BillingPT“

variable="BerechneGespraechResponse"/>

48

Page 49: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

invoke - Aktivität

• Ruft eine one-way oder request-response Operation auf einen

PortType eines Partners auf

49

<invoke inputVariable="BerechneGespraech“

operation=“BerechneGespraech“

outputVariable="BerechneGespraechResponse“

partnerLink=“BillingPL“

portType="ns1:BillingPT"/>

Page 50: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Übung: OrderProcess

50

Page 51: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Availability Service Prozess

51

Order Service Prozess

Client

Production Service

placeOrder

(z.B. 3 lineItems)

placeOrder

Production ServiceplaceOrder

Production ServiceplaceOrder

Enthält

mehrere

Positione

kann nur eine

Position

gleichzeitig

verarbeiten

Page 52: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Aufgabe: Order Prozess

52

Bestellung trifft ein

Bestellung aufsplitten

Zähler = 1

nein

Antwort

Sende Position [Zähler]

Zähler ++

Zähler=Anzahl Positionen?

Page 53: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Slaughterhouse Services (Backend)

53

Webanwendung

StockService

Lagerliste

get stock

orderlD

place Order ProductionService

kann nur eine

Position

gleichzeitig

verarbeiten

messagePagingService

SMSArticleService

Bezeichnung

ID

Page 54: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Strukturierte

Aktivitäten

54

Page 55: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Strukturierte Aktivitäten

• sequence

• switch

• while

• foreach (ab BPEL 2.0)

• pick

• flow

55

Page 56: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

sequence Aktivität

• Führt Kindaktivitäten der Reihe nach aus

56

Page 57: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

switch-Aktivität (nur bis BPEL 1.1)

• Gegensatz zu C:

– Abbruch nach Verzweigung

– Kein break notwendig

– Jedes Case Element enthält eine Bedingung

• In BPEL 2.0 if-Aktivität verwenden

57

Page 58: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

if – Aktivität (ab BPEL 2.0)

<bpel:if name=“isMondschein">

<bpel:condition>$requestMessage.Gespraech/zeit

&gt;=18</bpel:condition>

...

<bpel:else>

...

</bpel:else>

</bpel:if>

Vergleich in Java:

if(requestMessage.gespräch.zeti > 18){...

} else {...}

58

Page 59: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

flow - Aktivität

• Gleichzeitige Ausführung mehrerer Aktivitäten

• Synchronisation

• Ist fertig, wenn alle Kind Aktivitäten fertig sind

• Vergleich: Java erfordert Thread-Erzeugung und Controlle

59

Page 60: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

while Aktivität

• Schleife mit Prüfung am Anfang

• Führt Kindaktivität wiederholt aus

• Bricht ab, wenn Bedingung falsch ist

60

Page 61: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

forEach – Aktivität ab BPEL 2.0

• Iteriert über Aktivitäten

• Kann Aktivitäten parallel ausführen

– parallel=“yes“

• Reihenfolge ist nicht festgelegt

61

Page 62: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

wait - Aktivität

• Wartet auf

– Zeitspanne

– Zeitpunkt

<wait until=“„2000-04-07T12:00-01:00„“/>

<wait for=“„P7DT5H„“/>

62

Page 63: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Fehlerbehandlung

Page 64: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Fehlerbehandlung

• Beim Auftritt eines Fehlers können bereits mehrere ACID

Transaktionen in Backends abgeschlossen sein

• Ursachen für Fehler

– Invoke bekommt Fault zurück

– Throw Aktivität

– Standard Faults

64

Page 65: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Fault Handler

• Was wird bei einem Fehler getan

• Wird durch catch-Aktivität realisiert

• Tritt ein Fault auf, wird keine Compensation durchgeführt

65

<bpel:faultHandlers>

<bpel:catch faultName="ns1:ungueltigerTarif">

...

</bpel:catch>

<bpel:catchAll>

...

</bpel:catchAll>

</bpel:faultHandlers>

Page 66: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Default Fault Handler

<catchAll>

<sequence>

<compensate />

<rethrow />

</sequence>

</catchAll>

66

Page 67: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Handler für forced Termination

• Wird beim Abbruch eines Scopes aufgerufen z.B. durch Fault in

übergeordneten Scope

• Kann keinen Fault werfen (rethrow)

• Kann Compensation auslösen

• Für Aufräumarbeiten

67

Page 68: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Default Termination Handler

<teminationHandler>

<compensate name=“compensate1“/>

</terminationHandler>

68

Page 69: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Event Handler

• Startet Aktivitäten bei Ereignissen und Alarmen

• Ein Compensation Handler darf von einem Event-Handler nicht

aufgerufen werden

69

Page 70: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

throw Aktivität

• Wirft einen „Fault“

• Analog zu Java:

throw new LimitExceededException();

<throw faultName=“ns1:limitExceeded“/>

70

Page 71: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Übung: Fault Handling

71

Page 72: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Availability Service Prozess

72

Order Service Prozess

Client

Production Service

placeOrder

(z.B. 3 lineItems)

placeOrder

Production ServiceplaceOrder

Production ServiceplaceOrder

Fault

Page 73: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

empty Aktivität

• Macht nichts

• Nützlich beim Debuggen

• Verhinder Fehler wenn Aktivität erwartet wird

73

Page 74: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

repeatUntil (ab BPEL 2.0)

• Kindaktivität wird geführt, bis Beendigung wahr wird

• Bedingung wird nach der Ausführung der Kindaktivität getestet

– Kinderaktivität wird min. 1 mal ausgeführt

74

Page 75: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Spezielle Aktivitäten

• scope

• compensate

• terminate

• validate (ab BPEL 2.0)

75

Page 76: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

scope - Aktivität

• Vergleichbar mit { } in Java

• Lokale Umgebung für

– PartnerLinks, MessageExchanges, Variablen, CorrelationSets,

FaultHandlers, Compensation Handlers, TerminationHandlers,

EventHandlers

• Kann beinhalten

– Fault-, Event- und Compensation Handler

– Variablen

– Correlation Sets

76

Page 77: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

scope – Aktivität Beispiele

<bpel:scope>

<bpel:faultHandlers>

<bpel:catchAll>

...

</bpel:catchAll>

</bpel:faultHandlers>

<bpel:invoke ... />

</bpel:scope>

77

Page 78: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Serializable Scopes

• Dürfen keine weiteren Scopes enthalten

– Blätter

• Zugriff auf gemeinsame Variablen wird synchronisiert

• Analog zum Isolation Level „Serializable“ in Datenbanken

BPEL 1.1

<scope variableAccessSerialzeable=“yes“>

...

</scope>

BPEL 2.0

<scope isolated=“yes“>

...

</scope>

78

Page 79: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

exit - Aktivität

• Beendet den Business Prozess

<exit/>

79

Page 80: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

validate Aktivität (ab BPEL 2.0)

• Validiert eine Variable gegen XML oder WSDL Definitionen.

<validate variables=“Handyvertrag“/>

80

Page 81: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

assign Aktivität

• Weist einer Variablen einen Wert zu

• Kopiert Werte

81

Page 82: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Assign mit XPath Ausdruck

<bpel:assign name=“...">

<bpel:copy>

<bpel:from>normalize-space($token)</bpel:from>

<bpel:to variable=“tag"/>

</bpel:copy>

</bpel:assign>

82

Page 83: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Assign mit Konstante

<bpel:assign>

<bpel:copy>

<bpel:from>

<bpel:literal>

<foo:bar xmlns:foo=“urn:foo”>

<foo:baz/>

</foo:bar>

</bpel:literal>

</bpel:from>

<bpel:to part=“foo“ variable=“bar"/>

<bpel:copy>

</bpel:assign>

83

Page 84: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Kompensation

Page 85: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Saga

• Von Hector Gareira-Molina und Kenneth Salem (1987)

• Reihe von kleinen Transaktionen, die in Verbindung

stehen

• Koordinator triggert Aktionen zur Kompensation

Page 86: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Compensation

• Von der Anwendung kontrollierte Fehlerbehandlung

– Das heisst Fehlerbehandlung muss programmiert werden

86

Page 87: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

ACID Transaktion Kompensation

Rollback Ausführen von

„Gegentransaktionen“

Rollback macht Transaktionen

ungeschehen

Kompensation kann ganz

andere Aktionen durchführen

z.B. Stornogebühren

Für kurze Transaktionen Für lange Prozesse geeignet

Atomic -

Isoliert -

Resourcen müssen

transaktional sein

Nicht transaktionale Resourcen

können teilnehmen (z.B.

Postversand)

Vergleich ACID Transaktion und Kompensation

Page 88: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Cross-Service Transactions

• Partner können Antwort verzögern und so Resourcen

unnötig blockieren

• Technisch möglich ist XA, Atomic Transactions

Page 89: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Stati eines Scopes

89

Running Completed

Faulted Compensating

Compensated

Page 90: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Scope Snapshot

• Zustand des Scopes und aller einschließenden Scopes

• Zustand der Variablen, PartnerLinks, CorrelationSets und

MessageExchanges

• Wird von einem ausgeführten, aber noch nicht kompensierten Scope

erstellt

90

Page 91: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Compensation Handler

• Macht die Folgenen eines bereits abgeschlossenen Prozesses

„rückgängig“.

• Lebt in einer Snapshot-world

– Kann keine vom Prozess benutzten Veriablen ändern

– Bekommt eingefrorenen Snapshot vom Scope nach dessen Beendigung

• Wird von compensate-Aktivität aufgerufen

• Wird nur nach normaler Beendigung des Scopes in dem der Handler

definiert ist aufgerufen

91

Page 92: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

compensate-Aktivität

• Ruft einen Compensation-Handler auf

• Kann nur in Fault- und Compensation Handlern ausgeführt werden

Kompensation eines Scopes:

<compensate scope=“...“/>

Default Kompensation

<compensate/>

92

Page 93: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Reihenfolge Compensation

93

A

B C

D

Compensation Order:

B, D, C, A oder

D, B, C, A

Abhängigkeit im

Kontrollfluß

Page 94: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Compensation Reihenfolge

• In Schleifen

– Compensation Handler werden für die ausgeführte Iterationen in

umgekehrter Reihenfolge ausgeführt

• Default

– Compensation Handler für eingebettete Scopes werden umgekehrt zur

Reihenfolge der Durchführung ausgeführt.

94

Page 95: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Default Compensation Handler

<compensationHandler>

<compensate />

</compensationHandler>

95

Page 96: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

compensateScope (ab BPEL 2.0)

• Start Kompensation für einen eingebetteten Scope

• Scope muss erfolgreich ausgeführt worden sein

• compensateScope kann nur innerhalb von einem fault-, compensation-

oder termination- Handler verwendet werden

96

Page 97: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Übung:

Compensation

97

Page 98: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Korrelation - oder was

zusammengehört

Page 99: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

MessageProperties

• Nützlich in abstrakten Prozessen um zu zeigen, wie Teile einer

Nachricht behandelt werden

• Feld innerhalb einer Nachricht, das durch eine Abfrage identifiziert

wird

• Sind eine Spezialisierung der allgemeineren „Variable Properties“

99

Page 100: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Property Alias

100

WSDL

Property

TypePropertyAlias

Message

Type

1 * * 1

Page 101: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

101

Property

Alias

Property

Alias

Property

Alias

MessageType: Bestellung

Bestellung

MessageType: Storno

Storno

MessageType: Rechnung

Rechnung

Property: bestellNummer

NummerPositionenBestNr Id ...Bestellung ...

...Nr

Page 102: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Correlation

• Beispiel: Bestell- und Rechnungsnummern

• Eine Nachricht kann Bestandteil mehrerer Konversationen sein

• Correlation Data

– Im SOAP Header

– In der Payload

102

Page 103: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Correlation

103

Initiator Follower

neu Prozess

bind correlation

Set

definiert Properties

des Correlation

Sets

invoke (async)

Page 104: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Correlation Set

• Menge von Properties, die von Nachrichten einer korrelierten Gruppe

geteilt werden

• Sind mit Scope assoziiert

– lokal oder global

• Binding erfolgt beim Senden oder Empfangen von Nachrichten

• Haben einen Namen

• Id für eine Prozess Instanz

104

Page 105: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Übung:

Correlation

105

Page 106: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Message Exchange

Patterns

Page 107: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Synchroner Aufruf

• Request/Response

• Invoke-Aktivität mit input- und output-Variablen

• Blockiert

• Eine Rolle im PartnerLinkType

107

invoke

inputVariable= ...

outputVariable=...

Externer

Web Service

1

2

3

4

Page 108: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Asynchrone Prozesse

• Oft Langläufer

• Sender wartet nicht auf Antwort

• Empfänger kann über Callback Sender informieren (optional)

108

Page 109: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Callback

Consumer Provider

Callback

Endpoint

1

2

3

4

Page 110: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Asynchroner Aufruf (One-Way)

• Invoke Aktivität mit input – aber ohne output-Variablen

• Externer Web Service kann keinen Fault zurücksenden

110

invoke

inputVariable= ...

Externer

Web Service

1

2

3

Page 111: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Asynchrone Prozesse

• 1-2 Rollen in PartnerLinkType (bei späterem Callback)

• Zweite Rolle für Callback

111

Page 112: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Event Handling

112

Page 113: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Event Handler

• Für das Senden von Nachrichten an einen bereit laufenden Prozess

(onMessage)

• Für das Anstoßen von Ereignissen nach Ablauf einer Zeitspanne

(onAlarm)

• Wird bei normaler Prozessausführung aufgeführt

113

Page 114: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Event Handler Aktivierung

• Nach Empfang der initialen Message

• Start des Scopes in welcehm der Event Handler definiert ist

114

Page 115: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Übung:

Event Handling

115

Page 116: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

pick - Aktivität

• Wartet auf Nachricht, Timeout oder Alarm

• Das erste Ereignis gewinnt

• Nur eine der Aktivitäten in einer pick-Aktivität wird ausgeführt

• Min. 1 onMessage Element muss angegeben werden

116

Page 117: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Pick-Aktivität

<pick name="Pick1">

<onMessage partnerLink="Airline" ... >

<correlations>

<correlation set="ItineraryCorrelator" initiate="no"> </correlation>

</correlations>

<assign name="CopyAirlineReservation">

<copy>

<from variable="AirlineReservedIn" part="itinerary"/>

<to variable="ItineraryOut" part="itinerary"/>

</copy>

</assign>

</onMessage>

<onAlarm>

<for>'P0Y0M0DT0H0M20S'</for>

<sequence name="AirlineCancelSequence">

<assign name="CopyAirlineCancellation">

<copy>

<from variable="CancelAirlineOut"/>

<to variable="CancelAirlineOut"/>

</copy>

</assign>

<invoke name="CancelAirline" ... />

</sequence>

</onAlarm>

</pick> 117

Page 118: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Übung: Pick

118

Page 119: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Synchronisation

Page 120: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Nebenläufige Ausführung

120

Broker Verkäufer

Käufer

Börsen

Client

Handel

möglich

1

3

2

4

2

4

getVerkaufsPreis()

Kauf()

getKaufPreis()

Verkaufe()

Page 121: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Link

• Analog zu Signal bei Betriebsystemen

• Hat einen Namen

• Links dürfen keine zyklischen Graphen bilden

121

<flow>

<links>

<link name=“hausaufgaben-fertig"/>

<link name=“rasen-gemaeht"/>

</links>

<receive name=“kinogehen“ ...>

<targets>

<joinCondition>

$hausaufgaben-fertig and $rasen-gemaeht

</joinCondition>

<target linkName="hausaufgaben-fertig"/>

<target linkName="rasen-gemaeht"/>

</targets>

</receive>

<invoke name=“rasenmaehen“ ...>

<source linkName=“rasen-gemaeht“/>

</invoke>

<invoke name=“hausaufgaben“ ...>

<source linkName=“hausaufgaben-fertig“/>

</invoke>

</flow>

Page 122: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Abhängigkeit

<invoke... name=“A“>

<target linkName=“prepdone“/>

</invoke>

<sequence name=“B“>

<source linkName=“prepdone“/>

</sequence>

• A hat Synchroinisations-Abhängigkeit zu B

122

Page 123: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Link Status

• negative, positive

• Verhindert Deadlock

• Wenn entschieden werden kann, dass eine Aktivität nicht ausgeführt

wird, werden die zugehörigen Links Stati negativ

– z.B. Zweig einer Switch Anweisung

123

Page 124: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Übergangs - Bedingungen

• Falls wahr, wird der zugehörige Link Status positiv

124

Page 125: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

join - Condition

• Nachdem der Status aller „incoming“ Links bestimmt ist, wird die join-

Condition ausgewertet

• Wenn join-Condition falsch ist, wird ein joinFailure geworfen

• Default:

– Wahr, wenn ein incoming link positiv ist

125

Page 126: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Dead-Path-Elimination DPE

• Kann eine Aktivität aufgrund eines Join-Failure nicht ausgeführt

werden, so wird der Link-Status für jeden outgoing Link auf negative

gesetzt.

• Negativer Link Status wird über das Netzwerk propagiert, bis eine

joinCondition wahr wird

126

Page 127: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

WS-BPEL 2.0

Page 128: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Neues in BPEL 2.0 (11. April 2007)

• Neue Aktivitäten

– if-then-else,repeat Until, validate, forEach, extensionActivity

• Initialisierung von Variablen

• XSLT Transformation

• XPath Zugriff auf Daten von Variablen

• Klärung abstrakter Prozesse

• Länge der Spezifikation

– 1.1: 136 Seiten

– 2.0: 282 Seiten

128

Page 129: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Erweiterung durch

Skriptsprachen

Page 130: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Programmierung „in the Small“

• Java

– BPELJ und JSR-207

130

Page 131: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Business Activity

Monitoring

Page 132: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

BAM für sun-bpel-engine

Page 133: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Übung:

BPEL Monitoring

133

Page 134: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Sonstiges

Page 135: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Process Persistence

135

Page 136: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Document Linking

• import

– Deklariert Abhängigkeit zu externem Schema oder WSDL

– URIs für WSDL uznd Schema sind für importType vordefiniert

<import namespace=“<<URI>>”

location=“<<URL>>”

importType=“<<URI>>” />

136

Page 137: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

BPEL XPath Extension Functions

bpws:getVariableProperty(„varName„,„propName„)

bpws:getLinkStatus(„linkName„)

Nur in ausführbaren Prozessen

bpws:getVariableData(„varName„, „partName„, „locationPath„)

137

Page 138: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Erweiterbarkeit

• Jedes Element kann mit NS qualifizierten Attributen erweitert werden

• Erweiterungen sind mandatory oder optional

– mandatory: Implementierungen, die die Erweiterung nicht kennen, müssen

den Prozess ablehnen

– optional: Erweiterung kann ignoriert werden

• BPEL 2.0: extensionActivity

138

Page 139: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

WS-BPEL und WS-I Basic Profile

• Implementationen müssen so konfiguriert werden können, dass

Prozesse in WS-I Basic Profile 1.1 konformen Interaktionen

teilnehmen können

• Implementationen können es erlauben, die Basic Profile 1.1

Konfiguration zu deaktivieren

139

Page 140: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Fazit

Page 141: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Kräfte die für BPEL sprechen

• Kommunikation zwischen Web Services

• Erstellen von zusammengesetzten Prozessen

• Asynchrone Kommunikation

• Langläufer

• Timing spielt eine Rolle

• Nebenläufigkeit

• Unzuverlässigkeit von partnern, Netzwerken, ...

141

Page 142: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

Glossar

Page 143: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Bullshit Bingo I

forkAktivity Aktivität mit mehreren „outgoing“ Links, die nach der

Ausführung eine Verzweigung (Fork) verursacht

incoming Link Link, der als „Target“ für eine Aktivität angegeben

wurde

outgoingLink Link, der als „Source“ für eine Aktivität angegeben

wurde

initiator Startet eine Konversation durch das Initialisieren

eines Korrelation Sets

follower Knoten, der eine Nachricht mit Daten zur

Korrelation erhält

inbound message activity IMP receive, onMessage oder onEvent

143

Page 144: Business Prozesse mit WS-BPEL© 2008 predic8 GmbH Business Prozesse mit WS-BPEL BPEL Server • Sun-Bpel Engine • ActiveBPEL Engine –  • IBM • Oracle BPEL Process ...

© 2008 predic8 GmbHBusiness Prozesse mit WS-BPEL

Bullshit Bingo II

Enclosing Element Element, welches als Textnode eine Querry

oder Expression enthält

FCT Fault, Compensation, Termination

144