9. Business Process Execution Language

Ähnliche Dokumente
Business Process Execution Language. Christian Vollmer Oliver Garbe

Web Services Composition (BPWS4J )

Business Process Execution Language for Web Services (BPEL4WS)

DOAG SIG Day. E-Business Suite und SOA: Was ist heute schon möglich? Thomas Karle PROMATIS software GmbH. Frankfurt 26. April 2007

POIS-Praktikum Prozessimplementierung, RosettaNet PIPs 3A

A Comparison of BPML and BPEL4WS

Geschäftsprozessmodellierung essmodellierung mit BPEL

Konzepte und Anwendung von Workflowsystemen. Kapitel 8: Workflow Ausführungssprache BPEL

Enterprise Applikation Integration und Service-orientierte Architekturen 11 BPEL

20. DOAG-Konferenz. Wohlstrukturierte Prozesse auf SOA-Basis. mit der Oracle E-Business Suite. Thomas Karle PROMATIS software GmbH

Model-Driven Software Development

Modellierung von Geschäftsprozessen mit BPEL4WS

Bachelorarbeit. Modellierung interaktiver Web Service Workflows. Thema: Benjamin Koch. von

Seminar E-Services WS 02/03 BPEL4WS. Business Process Execution Language for Web Services. Mirwais Turjalei SES 02 BPEL4WS

Möglichkeiten der Orchestrierung von Grid Web Services mit BPEL. Uschi Beck Marko Brosowski

Tutorial zu WS-BPEL. Veranstaltung: Entwicklung verteilter Softwaresysteme mit Webservices im Sommersemester 2008

ActiveBPEL. Leif Goltermann Hai-Minh Le Benjamin Pennig Stephan Schirmer. Projekt: Entwicklung Verteilter Softwaresysteme Mit Web Services

Workflow, Business Process Management, 4.Teil

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

BPEL. Business Process Execution Language. Andre Rein. 21. August Serviceorientierte Architekturen

Kontrollstrukturen - Universität Köln

Praxishandbuch BPMN 2.0

Sof o t f waretechn h o n l o og o i g en n f ü f r ü v e v rteilte S yst s eme Übung

Geschäftsprozesse SOA-gerecht modellieren mit BPMN und UML. München, 28. Januar 2010

Fachliche Prozessmodellierung BPMN 2.0. HU Berlin, 27. Mai 2009

Zustandsgebundene Webservices

BPMN. Suzana Milovanovic

Java und XML 2. Java und XML

Gesicherte Prozeduren

11. Übung zur Vorlesung Service-orientierte Architekturen

Geschäftsprozessmodellierung mit BPEL4WS: Aufbau und Beispiel

Wiederholung: Beginn

Using Workflows to Coordinate Web Services in Pervasive Computing Environments

Inhaltsverzeichnis. Jakob Freund, Bernd Rücker. Praxisbuch BPMN 2.0 ISBN: Weitere Informationen oder Bestellungen unter

Java Web Services Metadata JSR-181

Vertiefte Grundlagen Graphentheorie

Business Process Management und Workflow-Technologien: Grundlagen, Produkte, Forschung Seminar

PCC Outlook Integration Installationsleitfaden

Haben Sie schon einmal aus einem ScreenCobol Requestor ein Java Programm aufgerufen?

Software Engineering Interaktionsdiagramme

Entwurf und Implementierung einer Workflow-basierten Anwendung zur Auswertung mathematischer Formeln

Umsetzung des OrViA-Frameworks mit ARIS

Grundlagen von Python

Internet Explorer Version 6

Erstellen einer in OWA (Outlook Web App)

Karten-Freischaltung mit dem UNLOCK MANAGER

SEQUENZDIAGRAMM. Christoph Süsens

10. Übung zur Vorlesung Service-orientierte Architekturen

Lizenzierung von System Center 2012

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

Prozedurale Datenbank- Anwendungsprogrammierung

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Verteilte Systeme: Übung 4

Sind Prozessmanagement-Systeme auch für eingebettete Systeme einsetzbar?

OP-LOG

Integration mit. Wie AristaFlow Sie in Ihrem Unternehmen unterstützen kann, zeigen wir Ihnen am nachfolgenden Beispiel einer Support-Anfrage.

Zugriff auf OWA Auf OWA kann über folgende URLs zugegriffen werden:

WSDL. Web Services Description Language. André Vorbach. André Vorbach

Kommunikations-Parameter

Version 0.3. Installation von MinGW und Eclipse CDT

Themen. Web Services und SOA. Stefan Szalowski Daten- und Online-Kommunikation Web Services

Windows Server 2008 für die RADIUS-Authentisierung einrichten

Seminar Business Process Management und Workflow-Technologie: Grundlagen, Produkte, Forschung

Monitoringvon Workflows in einer BPEL-Engine

Web-Services - die GIS-Zukunft?

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Objektorientierte Programmierung OOP

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Installation der SAS Foundation Software auf Windows

Web Services. XML, WSDL, SOAP und UDDI Einblicke und Ausblicke J.M.Joller 1

SOA. Prof. Dr. Eduard Heindl Hochschule Furtwangen Wirtschaftsinformatik

Motivation. Motivation

Tutorium Rechnerorganisation

Lizenzierung von Windows Server 2012

E-Services mit der Web-Service-Architektur

Delegatesund Ereignisse

Erwin Grüner

Meine Workflow Engine spricht BPMN ein Erfahrungsbericht

Grundlagen der Programmierung Prof. H. Mössenböck. 3. Verzweigungen

3. Stored Procedures und PL/SQL

Objektorientierte Programmierung

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

Übung: Verwendung von Java-Threads

BPEL Wie werden meine Prozesse ausgeführt?

Übungen Workflow Management. Blatt 2

Inhalt I. Blick zurück II. Was sind WebServices? III. Rahmenwerk für edienstleistungen IV. Verwendete WebServices

Web-Sevices : WSDL Entwicklung von Web-Anwendungen

VVA Webservice Online Lieferbarkeits-Abfrage

Auszug aus JAX-WS Folien

Man liest sich: POP3/IMAP

Geschäftsprozessunterstützung mit Microsoft SharePoint Foundation 2010 Microsoft InfoPath 2010 und Microsoft BizTalk Server 2013

Benutzerverwaltung Business- & Company-Paket

Algorithmen mit Python

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

White Paper. Konfiguration und Verwendung des Auditlogs Winter Release

Seminarthemen WS 14/15

5 DATEN Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

Verwendung des IDS Backup Systems unter Windows 2000

Transkript:

1 9. Business Process Execution Language Beobachtung: häufige Änderungen der Geschäftsprozesse dies erfordert leichte und schnelle Software-Anpassung Idee: Software in (Web-)Services gliedern ( SOA) diese flexibel komponieren hierzu: Business Process Execution Language (BPEL, WS-BPEL, BPEL4WS)

2 Einordnung Geschäftsprozess (Service Komposition) BPEL Service Registrierung UDDI Service Implementierung Programmiersprache (Java, C#,...) Service Beschreibung WSDL Kommunikationsprotokoll SOAP

3 BPEL universelle imperative Programmiersprache ( Turing-mächtig ) auf die Komposition von Web-Servies zugeschnitten ( domain specific language, DSL) synchroner und asynchroner Aufruf von Web-Services Zuweisung an Variablen blockstrukturiert Kontrollstrukturen Sequenz, Schleife, Verzweigung

4 BPEL (Fortsetzung) Fehler- und Ereignisbehandlung, Kompensation Nebenläufigkeit BPEL-Prozesse sind selbst Web-Services ( ggf. Rekursion) Syntax basierend auf XML-Tags ( bedingt menschenlesbar, graphische Tools) aufbauend auf: XML Schema, XPath, WSDL,...

5 Was bietet BPEL nicht? Benuter-Interaktion ( Projekt BPEL4People) Prozeduren, Methoden Objekt-Orientierung

6 Vergleich: BPEL vs. Java als Koordinationssprache Was kann BPEL, was Java nicht kann? nichts! BPEL geeignet, wenn Koordinationslogik überschaubar Java vorzuziehen bei komplexer Koordinationslogik

7 Ablauf eines BPEL-Programms in BPEL-Engine BPEL-Engines: ActiveBPEL Engine (Active Endpoints, frei verfügbar) Websphere Business Integration Server Foundation (IBM) alphaworks (IBM) BPEL Process Manager (Oracle) BizTalk Server (Microsoft) NetWeaver Exchange Infrastructure (SAP) einsight BPM (SeeBeyond) WebLogic Integration / AquaLogic (BEA)...

8 Ähnliche Sprachen und Ansätze XLANG/s (Microsoft) eingeflossen in BPEL WSFL (Web Services Flow Language (WSFL, von IBM) eingeflossen in BPEL BPML (Business Process Modeling Language, von BPMI.org) WSCI (Web Service Choreography Interface, von Sun, SAP, BEA,... ) BPSS (Business Process Specification Schema, Teil von ebxml) WS-CDL (Web Service Collaboration Definition Language) jbpm (JBoss)... BPEL scheint sich durchzusetzen

9 Orchestrierung vs. Choreographie Orchestrierung Choreographie WS 0 1:receive n+2: reply Koordinator WS 0 1: invoke 6: reply WS 2 WS 1... 2: invoke WS n n+1: invoke 5: invoke 3: reply 2: invoke 4: invoke WS 1 WS 3 BPEL kann beides modellieren BPEL-Engine kann nur Orchestrierung ausführen

10 Orchestrierung zentrale Koordination durch einen Web-Service Ausführung durch BPEL-Engine beteiligte Web-Services wissen nicht, wie und wo sie eingebunden sind daher: neue Webservices können leicht eingebunden werden meist verwendet in Firmen-internen Anwendungen einfach zu überwachen leichte Fehlerbehandlung

11 Choreographie dezentral keine zentrale Ausführung und Überwachung durch BPEL-Engine beteiligte Web-Services wissen, wie sie mit ihren Nachbarn zusammenarbeiten meist in Firmen-übergreifenden Anwendungen (z.b. SCM) Überwachung und Fehlerbehandlung schwierig

12 Ausführbarer Prozess Ausführbarer vs. Abstrakter Prozess basierend auf Orchestrierung Koordinator wird von BPEL-Engine ausgeführt Geschäftsprozess ist neuer Web-Service Abstrakter Prozess beschreibt das (meist dezentrale) Zusammenwirken von Web-Services nicht durch BPEL-Engine ausführbar typischerweise verwendet bei Choreographie

13 BPEL-Sprachelemente Deklarationen: <variable>: Variable <partnerlink>: Beziehung zu anderem Web-Service Basis-Aktivitäten: <invoke>: synchroner oder asynchroner Aufruf von Web-Service <receive>: Empfang einer Nachricht von Client oder asynchron aufgerufenem Service <reply>: Senden einer Antwort an Client <assign>: Zuweisung <throw>: Exception bzw. Fehlerbehandlung auslösen <wait>: wartet Zeitspanne (for) oder bis Zeitpunkt (until) <terminate>: Beenden

14 BPEL-Sprachelemente (Fortsetzung) zusammengesetzte Aktivitäten: <sequence>: sequentielle Komposition von Aktivitäten <flow>: parallele Komposition <switch>: Verzweigung <while>, <repeatuntil>, <foreach>: übliche Schleifen <pick>: wartet auf Ereignis Strukturierungs-Tags: <process>: umschließt BPEL-Programm <variables>, <partnerlinks>,... : zur Zusammenfassung von Deklarationen

15 Beispiel: Hotelvermittlungs-Service Client 1: invoke 8: reply porttype <invoke(sync)> Hole Angebot von Hotel 1 [Hotel1.preis < Hotel2.preis] <receive> Client Auftrag annehmen <invoke(sync)> Hole Angebot von Hotel 2 [sonst] porttype porttype 2: invoke 4: reply 3: invoke 5: reply WS Hotel 1 WS Hotel 2 <assign> Wähle Angebot 1 <assign> Wähle Angebot 2 <reply> Client antworten

16 Beispiel: Partnerlinks für Hotelvermittlungs-Service <partnerlinks> <partnerlink name = "client" partnerlinktype = "clt:vermittlunglt" myrole = "hotelvermittlungsservice"/> <partnerlink name = "hotel1" partnerlinktype = "hotel:hotellt" myrole = "hotelkunde"/> <partnerlink name = "hotel2" partnerlinktype = "hotel:hotellt" myrole = "hotelkunde"/> </partnerlinks>

17 Beispiel: Variablen für Hotelvermittlungs-Service <variables> <variable name = "VermittlungsAnfrage" messagetype = "hotel:hotelanfragenachricht"/> <variable name = "Hotel1Antwort" messagetype = "hotel:hotelantwortnachricht"/> <variable name = "Hotel2Antwort" messagetype = "hotel:hotelantwortnachricht"/> <variable name = "VermittlungsAntwort" messagetype = "hotel:hotelantwortnachricht"/> </variables>

18 Beispiel: BPEL-Prozess für Hotelvermittlungs-Service <?xml version="1.0" encoding="utf-8"?> <process name= "HotelVermittlungsProzess" targetnamespace="http://hotelvermittlung.com/bpel/hotelbsp/" xmlns="http//schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/" xmlns:clt="http://hotelvermittlung.com/bpel/client/" xmlns:hotel="http://hotelvermittlung.com/bpel/hotel/"> <partnerlinks>... s.o.... </partnerlinks> <variables>... s.o.... </variables> <sequence> <receive partnerlink = "client"... /> <flow> <invoke partnerlink = "hotel1"... /> <invoke partnerlink = "hotel2"... /> </flow> <switch>... </switch> <reply partnerlink = "client"... /> </sequence> </process>

19 Kontrollfluss im Beispiel im Detail (1) <sequence> <receive partnerlink = "client" porttype = "clt:hotelvermittlungsservicept" operation = "VermittleHotel" variable = "VermittlungsAnfrage" createinstance = "yes"/> <flow> <invoke partnerlink = "hotel1" porttype = "hotel:berechnehotelpreispt" operation = "BerechneHotelPreis" inputvariable = "Vermittlungsanfrage" outputvariable = "Hotel1Antwort"/> <invoke partnerlink = "hotel2" porttype = "hotel:berechnehotelpreispt" operation = "BerechneHotelPreis" inputvariable = "Vermittlungsanfrage" outputvariable = "Hotel2Antwort"/> </flow>...

Kontrollfluss im Beispiel im Detail (2)... <switch> <case condition = "bpws:getvariabledata( Hotel1Antwort, BestaetigungsDaten, /BestaetigungsDaten/hotel:Betrag ) < bpws:getvariabledata( Hotel2Antwort, BestaetigungsDaten, /BestaetigungsDaten/hotel:Betrag )"> <assign> <copy> <from variable = "Hotel1Antwort"/> <to variable = "VermittlungsAntwort"/> </copy> </assign> </case> <otherwise> <assign> <copy> <from variable = "Hotel2Antwort"/> <to variable = "VermittlungsAntwort"/> </copy> </assign> </otherwise> </switch>... 20

21 Kontrollfluss im Beispiel im Detail (3)... <reply partnerlink = "client" porttype = "clt:hotelvermittlungpt" operation = "WaehleHotel" variable = "VermittlungsAntwort"/> </sequence> </process>

22 Synchrone vs. Asynchrone Aufrufe von Web-Services synchron: asynchron: invoke 1: Anfrage receive invoke 1: Anfrage receive Client Web Service Client Web Service 2: Antwort reply receive 2: Antwort invoke <invoke> wartet auf das Ergebnis und nimmt es entgegen <invoke> wartet nicht <receive> nimmt Ergebnis später entgegen Vor.: 2 Porttypes (one-way) in WSDL

23 Partnerlink-Typen Partnerlink-Typen erlauben, die Rolle eines Web-Service in einer Beziehung anzugeben Beispiel: <partnerlinktype name = "HotelLT" xmlnd="http://schemas.xmlsoap.org/ws/2003/05/partner-link"/> <role name = "HotelVermittlungsService"> <porttype name = "hotel:berechnehotelpreispt"/> </role> <role name = "hotelkunde"> <porttype name = "hotel:berechnehotelpreiscallbackpt"/> </role> </partnerlinktype> Partnerlink-Typen werden nicht im BPEL-Prozess sondern im WSDL-Dokument angegeben

24 Beispiel: Partner-Links <partnerlink name = "hotel1" partnerlinktype = "hotel:hotellt" myrole = "hotelkunde" partnerrole = "hotel"/> Verweis auf benachbarten Web-Service Attribute: name: Name des Partnerlinks partnerlinktype: Typ des Partnerlinks myrole: eigene Rolle in der Beziehung partnerrole: Rolle des Partners in der Beziehung

25 Variablen Variablentypen: messagetype: Variable speichert WSDL-Nachricht element:... XML Schema-Element type:... Wert eines XML Schema Basistyps (int, double, string,... ) Beispiel: <variables> <variable name = "VermittlungsAnfrage" messagetype = "hotel:hotelanfragenachricht"/> <variable name = "Adresse" element = "hotel:kundenangaben"/> <variable name = "Preis" type = "xs:int"/> </variables> Variablen können global oder lokal sein ( <scope>)

26 Zuweisungen Beispiel: <assign> <copy> <from variable = "Hotel1Antwort"/> <to variable = "VermittlungsAntwort"/> </copy> </assign> mehrere Kopieroperationen pro <assign> möglich es können auch Teile einer Nachricht (vgl. WSDL) und Komponenten davon kopiert bzw. verändert werden die Auswahl der Komponenten erfolgt (z.b.) mit XPath die <from>-klausel kann auch Konstanten und arithmetische Ausdrücke enthalten

27 <assign> <copy> </copy> <copy> </copy> </assign> zugehöriges WSDL: Beispiel: Zuweisung <from expression="number(42)"/> <to variable = "Preis"/> <from expression = "bpws:getvariabledata( Preis )+1> <to variable = "HotelAntwort" part="angebot" query="/angebot/hotel:preis"/> <message name = "HotelAntwort"> <part name="kundendaten" type="hotel:kundendatentyp"/> <part name="angebot" type="hotel:angebotstyp"/> </message> zugehörige Typ-Deklaration: <xs:complextype name="angebotstyp"> <xs:sequence> <xs:element name="preis" type="xs:int"/> <xs:element name="mwst" </xs:sequence> </xs:complextype> type="xs:double"/>

28 Bedingungen verwendet in Verzweigungen und Schleifen erlaubt sind beliebige boolesche XPath-Ausdrücke hierin: Variablen, Konstanten Vergleichsoperationen: &eq; > < boolesche Operationen: Erweiterung: getvariabledata-funktion zum Zugriff auf Variablen bpws:getvariabledata( Variablenname, Part-name, path ) die letzten beiden Argumente sind optional

29 Beispiel: Bedingung <switch> <case condition = "bpws:getvariabledata( Hotel1Antwort, BestaetigungsDaten, /BestaetigungsDaten/hotel:Betrag ) < 100">...

30 <invoke>, <receive> und <reply> Attribute: partnerlink, porttype, operation (aus WSDL-Dokument!) <invoke> zusätzlich: inputvariable, outputvariable <receive> zusätzlich: variable: speichert erhaltene Nachricht createinstance (y/n): gibt an, ob bei Erhalt der Nachricht eine neue Instanz des Web-Service erzeugt werden soll bei initialem <receive> vom Client: yes bei Callback: no <reply> zusätzlich: variable mit Antwort

31 Fehlerbehandlung Auslösen von Fehlern innerhalb von Web-Service: führt zu fault-antwort mit <throw> Abfangen von Fehlern mit <catch>: fängt ausgewählten Fehler ab mit <catchall>: fängt beliebigen Fehler ab

32 <scope name="hotelaufruf"> Beispiel: Fehlerbehandlung <faulthandlers> <catchall> <!-- falls Hotel nicht erreichbar: Preis = 999999 --> <assign> <copy> <from expression="number(999999)"/> <to variable = "Hotel1Antwort" part="angebot" query="/angebot/hotel:preis"/> </copy> </assign> </catchall> </faulthandlers> <invoke partnerlink = "hotel1" porttype = "hotel:berechnehotelpreispt" operation = "BerechneHotelPreis" inputvariable = "Vermittlungsanfrage" outputvariable = "Hotel1Antwort"/> </scope>

33 <pick> wartet auf eins von mehreren möglichen Ereignissen (inkl. Nachrichteneingang) <pick> <onmessage partnerlink="meinpartner" porttype="meinservicept" operation="meinservice" variable="ergebnis"> <!-- bearbeite Nachricht --> </onmessage> <onalarm...> <!-- bearbeite Alarm durch Zeitueberschreitung--> </onalarm> </pick>