BPEL - WS-BPEL 2.0

BPEL basiert auf XML und ermöglicht eine Beschreibung und automatisierte Ausführung von Geschäftsprozessen. Sie wird auch als Web Service Business Process Execution Language (WS-BPEL) bezeichnet und nutzt als Schnittstelle für die Kommunikation mit Systemen und Anwendungen Web Services.

Versionen

Der BPEL-Standard wurde 2002 in Zusammenarbeit der Unternehmen IBM, Microsoft und BEA als BPEL for Web Services (BPEL4WS) erstellt und eingeführt. 2003 erfolgte die Standardisierung durch die Organization for the Advancement of Structured Information Standards (OASIS). OASIS ist eine nicht kommerzielle Organisation, die offene Standards im Bereich von Web Services und E-Business erstellt und deren Weiterentwicklung und Einsatz fördert. Im Jahre 2007 erschien die BPEL Version 2.0. Diese Version wurde in WS-BPEL 2.0 umbenannt, damit die Bezeichnung mehr Ähnlichkeit zu anderen Web Service Standards, wie WS-Security oder WSDL hat. Inzwischen wird der Standard von vielen großen Unternehmen der IT-Branche, wie z. B. IBM, Oracle, Active Endpoints, SAP oder Microsoft unterstützt.

Grundlagen

BPEL ist eine Sprache zur Beschreibung, Koordinierung und Steuerung verschiedener Dienste. Das bedeutet, BPEL bestimmt in welcher Reihenfolge und unter welchen Bedingungen Dienste, die in diesem Standard als Web Services bezeichnet sind, aufgerufen werden, sowie welche Daten diese Services übergeben bekommen und verarbeiten. Die Zusammenarbeit der Web Services ist entscheidend für einen Prozess, der damit durch BPEL eindeutig definiert wird.
Die Services in einem in BPEL modellierten Prozess können sehr verschieden sein. Einerseits kann es eine rein technische orientierte Schnittstelle zu einem Software- oder Hardwaresystem sein, die zur Steuerung von Maschinen und Geräten verwendet wird. Andererseits können Services auch organisatorischer Art sein, wie z. B. der Start eines Workflows, der bestimmte manuelle Schritte in einem Prozess steuert. Ferner können Dienste sowohl intern, als auch extern sein. Während interne Services innerhalb der jeweiligen Firma, angeboten werden, können die externen Dienste von anderen Firmen, wie z. B. Geschäftspartnern oder spezialisierten Dienstanbietern, genutzt werden.

BPEL basiert auf dem flexiblen XML Standard, was dazu führt, dass keine speziellen Programme benötigt werden, um BPEL zu lesen. Die Dateien können auch von Menschen gelesen und geändert werden. Durch die starke Verbreitung von BPEL, unterstützen auch immer mehr Prozessmanagementsysteme diesen Standard. Dadurch wird es auch einfacher bereits in BPEL erstellte Prozesse auf andere Systeme, z. B. auch in anderen Abteilungen oder sogar in anderen Unternehmen zu importieren, ohne die Modellierung eines Prozesses wiederholen zu müssen.
Eine nützliche Eigenschaft von BPEL-Prozessen besteht darin, dass diese selbst als Services innerhalb einer SOA betrachtet werden können. Dadurch wird ermöglicht, dass erstellte Prozesse als Unterprozesse gestartet werden können. Dies hat mehrere Vorteile, wie zum einen die Wiederverwendbarkeit. So können kleinere Unterprozesse immer wieder innerhalb von unterschiedlichen Vorgängen in einem Unternehmen eingesetzt werden. Zum anderen können Prozesse durch diese Möglichkeit viel besser strukturiert werden. So können ähnliche Aktivitäten in Subprozesse zusammengefasst werden, was zur Folge hat, dass der gesamte Geschäftsprozess deutlich übersichtlicher und verständlicher für Mitarbeiter ist.

Funktionsweise

Ein Prozess wird durch mehrere Eigenschaften eindeutig definiert. Diese müssen auch bei der Modellierung in BPEL berücksichtigt werden. Dazu gehören:

  • Aktivitäten, die verschiedene Dienste im Unternehmen darstellen.
  • Kontrollflüsse, um Daten zwischen verschiedenen Diensten übermitteln zu können.
  • Vordefinition der Struktur von notwendigen Nachrichten.

Aus den Definitionen wird ein ausführbarer Prozess gebildet, außerdem wird definiert, mit welchen Ereignis oder Ereignissen der Workflow gestartet wird. Bei der Ausführung wird eine Instanz des Prozesses erzeugt und Definitionen mit konkreten Daten gefüllt. Bei der Definition des Prozesses und seiner Ausführung stehen zusätzlich folgende Möglichkeiten zur Verfügung:

  • Wenn ein Dienst vorläufig nicht verfügbar ist, kann der aufrufende Dienst für eine bestimmte Zeit angehalten werden, um Speicher für andere Aktivitäten freizuhalten. Dabei werden die Ablaufdaten gespeichert und können später bei Reaktivierung des Prozesses verwendet werden.
  • Fehler, die im Laufe des Prozessdurchlaufs auftreten, können abgefangen werden. Das dient zum einem dazu, dass ein Fehler unter Umständen nicht zum sofortigen Abbruch des Prozesses führt, zum anderen können die Ursachen für Probleme deutlich schneller gefunden werden.
  • Dienste können nicht nur unabhängig voneinander gestartet werden, sondern auch synchronisiert werden.
  • Nach dem Ende des Prozesses, wird die Instanz zerstört und der Speicher damit automatisch für andere Prozesse und Dienste freigegeben.

Darstellung

Es gibt vielfältige Möglichkeiten, ein BPEL-Prozess darzustellen. In den nächsten Abschnitten wird dessen Darstellung im XML-Format und graphisch beschrieben.

XML-Format
Eine BPEL-Datei kann wie eine XML-Datei mit einem beliebigen Textverarbeitungsprogramm bearbeitet werden. Das folgende Listing zeigt einen beispielhaften Auszug eines BPEL-Dokuments, bei dem ein Web Service aufgerufen und anschließend Daten zurückgeliefert werden.

Beispiel für ein BPEL-Dokument:

<?xml version=" 1.0 "encoding="UTF−8"?>
<process name=" ProductInformation " . . .>
...
<sequence>
<invoke partnerLink="ProductLT"
portType="ProductSOA"
operation="GetProductInformation"
inputVariable="GetProduct"/>
<receive partnerLink="PartnerLinkProduct"
portType="ProductSOA"
operation="GetProductInformation"
variable="GetProductResponse" />
</sequence>
...
</process>

Nun soll kurz auf den Aufbau der ausschnittsweise gezeigten BPEL-Datei eingegangen werden. Das XML-Wurzelelement in BPEL-Dateien ist immer process. Anschließend folgt das Unterelement sequence, das die Definition einer Reihenfolge für den Aufruf von Diensten angibt. Das Unterelement invoke gibt an, dass ein anderer Web Service aufgerufen werden soll und enthält unter anderem die Attribute partnerLink, portType, operation und inputVariable.
Mit partnerLink werden alle verknüpften Dienste mit deren Eigenschaften aufgelistet. Das Attribut portType spezifiziert die Anwendungsformen der Operation und inputVa- riable gibt die zur Speicherung im Prozess benötigten Daten an. Mit dem XML-Element receive wird auf die Antwort eines anderen Web Services gewartet. Der tatsächliche Inhalt eines BPEL-Dokuments ist wesentlich umfangreicher, da sämtliche Informationen für die Steuerung des Geschäftsprozess dort enthalten sind.
Zur Gestaltung und Steuerung der verschiedenen Dienste und Aktionen werden in BPEL unterschiedliche Aktivitäten verwendet. Diese lassen sich in drei Gruppen auf- teilen. Die erste Gruppe sind die Basisaktivitäten. Diese bieten die Grundfunktionen im Prozess an, wie z. B. den Umgang mit Daten. Zu der zweiten Gruppe zählen die strukturierenden Aktivitäten. Diese Aktivitäten können andere Aktivitäten beinhalten und erlauben damit eine beliebige Schachtelung des Prozesses. Die letzte benötigte Gruppe sind verwaltende Aktivitäten. Die Aufgabe dieser Aktivitäten besteht darin, den Prozessablauf zu steuern und die im Prozess auftretenden Fehler zu behandeln.
Folgende Elemente von BPEL können als wichtigste Basisaktivitäten angesehen werden:

  • Wenn im Prozess eine Nachricht empfangen werden muss, kann das Element <receive> zum Einsatz kommen. Dieses Element ist nicht nur für Empfangen der Nachricht zuständig, sondern kann auch den Vorgang blockieren, bis die Daten eingegangen sind.
  • Mit dem Element <reply> kann eine Antwort auf eine bereits empfangene Nachricht verschickt werden.
  • Um einen Web Service aufzurufen, muss die Aktivität <invoke> ausgeführt werden. Dabei kann der Aufruf sowohl synchron als auch asynchron ablaufen.
  • Die unter <variable> gespeicherten Variablen werden mit der Aktivität <assign> mit den prozessrelevanten Daten gefüllt.
  • Wenn ein gewisses Risiko besteht, dass ablaufende Dienste oder Operationen Fehler verursachen, kann es sinnvoll sein eine Fehlermeldung zu erstellen. Dies wird auf ähnliche Weise gelöst, wie in Programmiersprachen, so wird mit <throw> ein Fehler gemeldet. Dieser Fehler muss dann mit einem catch Befehl abgefangen werden, was in BPEL mit Aktivität <catch> gelöst wird.
  • Es ist oft nötig einen Prozess eine bestimmte Zeit zu unterbrechen. Dies ist z. B. der Fall, wenn der Vorgang mit anderen Workflows synchronisiert werden muss. Für diese Funktion ist Aktivität <wait> zuständig.

Zu den wichtigsten strukturierenden Aktivitäten zählen folgende Elemente:

  • Das XML-Element <sequence> sorgt dafür, dass die in diesem Element enthaltene Aktivitäten nacheinander ausgeführt werden.
  • Um ein oder mehrere Vorgänge mehrfach zu wiederholen, wird ein Schleifenkonstrukt benötigt. Diese Aufgabe erfüllt die Aktivität <while>, die Aktivitäten wiederholt, so lange eine Bedingung erfüllt ist.
  • Die Variablen- und Ausgabewerte von Diensten müssen den Ablauf eines Workflows beeinflussen können. Um diese Aufgabe zu erfüllen wird <switch> verwendet. Die in nahezu allen imperativen Programmiersprachen verwendete if und else Anweisungen werden durch <case condition=...> bzw. <otherwise> ausgedrückt.
  • Das Element <pick> unterbricht vorläufig ein Prozess bis ein Ereignis eintritt.
  • Um ein Ereignis zu empfangen, wird <eventHandlers> verwendet.
  • Außer alternativer Verläufe müssen die Aktivitäten in einem Workflow auf verschiedene Mitarbeiter bzw. Systeme aufgeteilt werden. Um dies zu erreichen, kann mit Element <flow> der Ablauf mehrerer Aktivitäten parallelisiert werden.

Zum Schluss sollen die wichtigsten verwaltenden Aktivitäten behandelt werden:

  • Das Element <faultHandler> sorgt für die Behandlung von Ausnahmefällen.
  • Mit Hilfe von <compensate> kann eine bereits angefangene Aktivität wieder rückgängig gemacht werden. Das ist notwendig, wenn bei der Ausführung z. B. ein Fehler auftrat.
  • Mit <terminate> kann der Ablauf des gesamten Prozesses beendet werden.

Grafisch

Während im BPMN-Standard bereits eindeutiges graphisches Aussehen von Elementen festgelegt wurde, hat jedes Programm die Freiheit, eine eigene Darstellung von BPEL Elementen zu erstellen. Die Abbildung vergleicht das Aussehen einiger BPEL Elemente von ActiveVOS, dem Oracle BPEL Process Manager und von Apache ODE.

Die Bearbeitung von BPEL in einem Textverarbeitungsprogramm führt zu mehreren Problemen. Zum einen bedeutet es einen sehr großen Aufwand, einen kompletten Prozess mit textuellen Befehlen zu modellieren, was an der Größe des Dokuments und Menge der Daten, die dafür nötig sind, liegt. Zum anderen ist diese Art der Modellierung sehr fehleranfällig, da keine effektive Fehlerüberprüfung vorhanden ist und Fehler erst bei der Ausführung des Prozesses sichtbar werden. Aus diesen Gründen ist es ratsam, eine graphische Notation für die XML-Elemente zu verwenden.
Zur graphischen Darstellung und Bearbeitung von BPEL gibt es mehrere verschiedene Programme. Neben ActiveVOS wurden viele andere sowohl kommerzielle, als auch Open Source BPEL Engines entwickelt. Dazu gehört z. B. der WebSphere Process Server. Dieser wurde von IBM entwickelt und dient der Verwaltung von Prozessen auf dem von IBM angebotenen Server. Außerdem bietet das Programm zusätzliche Funktionen zur Programmierung, sowie zur Gestaltung einer SOA. Auch Oracle, einer der größten Softwarehersteller im Bereich von Unternehmenssoftware, bietet eine BPEL Engine an. Der Oracle BPEL Process Manager verwaltet BPEL Prozesse und bietet zusätzliche Möglichkeiten an. Dazu gehört z. B. selbst erstellte Java-Programme unmittelbar als Aktivitäten in einem Prozess zu verwenden. Im Open Source Bereich ist die BPEL-Engine von Apache ODE von The Apache Software Foundation erwähnenswert, die auch die neueste Version des BPEL-Standards unterstützt und umfangreiche Funktionalität in der Prozessverwaltung bietet. Apache ODE wird hauptsächlich von dem OpenSource BPMS Intalio entwickelt und verwendet.

Nachteile

Wie jede Technologie verfügt BPEL nicht nur über Vorteile und ist nicht überall sinnvoll einsetzbar. So kann mit dem Standard zwar bei großen verwobenen Prozessen die Übersichtlichkeit und die Effizienz erhöht werden, bei kleinen Prozessen, bei denen nur wenige Services aufgerufen werden, kann der Einsatz jedoch das Gegenteil bewirken. Da die Ausführung eines Prozesses mit Hilfe des BPEL-Engines immer einen bestimmten Modellierungs-, Einrichtung- sowie Wartungsaufwand bedeutet, kann dies die Komplexität kleiner Prozesse sogar noch erhöhen und damit deren Effizienz verringern. Ein weiteres Problem besteht darin, dass BPEL ausschließlich für die Arbeit mit Prozessen und Diensten konzipiert wurde. Eine direkte Interaktion mit den Benutzern wurde nicht vorgesehen. Dieser Nachteil wurde erst durch die Erweiterung BPEL4People behoben. Noch ein Nachteil von BPEL ist die fehlende Anpassung an sich ändernde Bedingungen. Sollten sich später neue Aktivitäten als notwendig erweisen, werden diese nicht mehr vom fertigen BPEL-Prozess unterstützt.

BPEL4People

Wie weiter oben bereits erwähnt, beherrscht BPEL keine direkte Kommunikation mit Systembenutzern. Da in vielen Prozessen auch Benutzer angesprochen werden müssen, wurde die Erweiterung WS-BPEL Extension for People oder kurz BPEL4People entwickelt. Die Entwicklung erfolgte im Jahre 2007 in Zusammenarbeit von mehreren Unternehmen der IT-Branche, darunter Active Endpoints, Adobe, BEA, IBM, Oracle, sowie SAP. Die Standardisierung wurde, wie auch bei BPEL, von OASIS durchgeführt.
Die Erweiterung ermöglicht es einem Benutzer am Prozessablauf teilzunehmen, beziehungsweise einzelne Prozesse bzw. Dienste manuell ausführen zu können. Diese Möglichkeiten sind notwendig, wenn z. B. bestimmte Vorgänge von zuständigen Mitarbeiten genehmigt werden müssen. Außerdem kann eine Kontrolle der Daten und Vorgänge notwendig sein, um Fehler leichter zu entdecken oder zu vermeiden.
Eine zusätzliche Erweiterung von BPEL, die als Ergänzung zu BPEL4People konzipiert ist, wird als WS-Human Task bezeichnet. Mit WS-Human Task können Mitarbeitern Rollen und Nutzergruppen (Logical People Groups)
Die Business Process Execution Language (BPEL) ist eine XML-basierte Workflowsprache. Sie wurde von der Organization for the Advancement of Structured Information Standards (OASIS) standardisiert und gilt somit als portabel. Workflows in BPEL können folglich auf Workflow-Servern verschiedener Hersteller ausgeführt werden.