WS-Business Process Execution Language
BPEL (Business Process Execution Language) wurde im Jahr 2003 von IBM, BEA und Microsoft eingeführt. BPEL ist eine XML-basierte Sprache zur Beschreibung von Geschäftsprozessen, deren einzelne Aktivitäten durch Webservices implementiert sind. Weiterhin kann mit BPEL ein Webservice selbst beschrieben werden.
Überblick
Das Prozessmodell von BPEL4WS baut auf dem Dienstmodell von WSDL auf. Weiterhin werden die Standards XMLSchema, XPath und WS-Addressing benutzt.
Die Sprache verbindet die Ideen der kalkülbasierten Sprache XLANG von Microsoft und der Graph-basierten Sprache WSFL von IBM.
Ziel von BPEL ist, das Programmieren im Großen zu ermöglichen. Dabei ist zu beachten, dass BPEL die direkte Interaktion mit Menschen nicht unterstützt. BPEL-Prozesse kommunizieren ausschließlich mit Web Services. Diese können eine Schnittstelle zu Menschen sein, jedoch nicht Menschen selbst.
BPEL unterscheidet zwischen abstrakten und ausführbaren Prozessen. Bei abstrakten Prozessen werden beispielsweise Business-Protokolle beschrieben, die den Austausch von Daten zwischen Firmen beschreiben.
BPEL4WS ist blockstrukturiert, d.h. bei der Definition von lokalen Umgebungen (Scopes) können lokale Variablen eingeführt werden. Mit den Scopes können außerdem Fehlerbehandlung (Fault Handler), Kompensationsbehandlung (Compensation Handler) und Ereignisbehandlung (Event Handler) assoziiert werden.
Einschränkungen
BPEL kennt keine Unterprozesse. Es ist so beispielsweise nicht immer möglich, einen Unterprozess zu terminieren, wenn der Hauptprozess terminiert wird. Diese Funktionalität kann durch explizite Operationen eines Web Services bereitgestellt werden, was jedoch nicht vom BPEL-Standard vorgeschrieben ist.
Stand der Entwicklung
Aktuell ist die Release 1.1, bei dem weitere Hersteller wie SAP und Siebel mitgewirkt haben. Bis zu dieser Version wird der BPEL Standard mit BPEL4WS (Business Process Execution Language for Web Services) benannt.
Der Standard wurde im April 2003 an OASIS zur Standardisierung übergeben.
Eine 2.0-Release ist in Bearbeitung, die Detail-Verbesserungen enthält, jedoch inkompatibel zu den 1.x-Versionen ist. Das OASIS WS-BPEL Komitee beschloss am 14. September 2004, die Spezifikation WS-BPEL 2.0 zu nennen, um in Einklang mit den anderen WS-*-Standards wie WSDL, WS-Security usw. zu gelangen.
Sprachbestandteile
Basic Activities - Dies sind die grundlegenden - sozusagen atomaren - Aktivitäten, welche nicht aus anderen Aktivitäten aufgebaut sind:
- assign - Verändern des Inhalts einer Variablen.
- invoke - Synchroner (request/response) oder asynchroner Aufruf eines Web Service
- receive/reply - Anbieten einer synchronen oder asynchronen Web Service Schnittstelle
- throw - Explizites Signalisieren eines Fehlers, welcher durch Fehlerbehandlungen aufgefangen werden kann. Wird ein Fehler nicht aufgefangen, erreicht er also den globalen Scope, so terminiert der Prozess.
- wait - Warten auf einen Zeitpunkt oder für eine Zeitspanne
- empty - Nichts tun, z.B. um in einer Fehlerbehandlung nichts zu tun und den Fehler so zu unterdrücken
Structured Activities - Diese Aktivitäten beinhalten andere Aktivitäten und lassen so die rekursive Komposition von komplexen Prozessen zu.
- sequence - In einer Sequence werden die Aktivitäten sequentiell abgearbeitet.
- while - Ausführen von Aktivitäten solange eine boolesche Bedingung erfüllt ist
- switch - Bedingte Ausführung von Aktivitäten
- flow - Die Aktivitäten werden parallel oder in beliebiger Reihenfolge ausgeführt, wobei Abhängigkeiten durch links angegeben werden können.
- pick - Aus Prozesssicht nicht deterministische Wahl durch externe Ereignisse
BPEL Engines
BPEL Engines erlauben das Ausführen von BPEL-Code. Hierzu müssen sie mit WSDL-Information gespeist werden und der BPEL-Prozess deployt werden.
- Twister - ist eine open source Implementierung des BPEL-Standards (LGPL). Twister unterstützt das SOA-Pattern wie auch direkte Interaktion mit Menschen (durch Arbeitslisten).
- LiquidBPM - ist eine BPM-Engine, mit Unterstützung von BPEL und BPEL4WS.