Home ORDIX AG             Dienstleistung             Trainingsshop    Kunden / Referenzen Aktuelles    Kontakt
Home  Pfeil  ORDIX News  Pfeil  2/2005
suche: 
Dieser Artikel richtet sich an Verantwortliche und Architekten für die Umsetzung des Business Prozess Managements auf technischer Ebene.

Glossar

BPM

Mit Business Process Management (BPM) lassen sich Geschäftsprozesse in einem dynamischen IT-Umfeld formen und weiter entwickeln. So können Applikationen zu adaptiven Prozessen verknüpft werden, die die komplette Wertschöpfungskette umfassen.

SOA

Service-orientierte Architektur (engl. Service Oriented Architecture) in der Softwarearchitektur.

WSDL

Web Service Definition Language. WSDL gibt das Format für eine einheitliche Beschreibung eines Web Services vor, anhand derer ein solcher Service angefragt und dessen Funktionen abgerufen werden können.

UDDI

Universal Description, Discovery and Integration protocol. UDDI spezifiziert ein universelles Format zur Verwaltung von Informationsverzeichnissen, Adressen etc. eines Web Services.

OASIS

Organization for the Advancement of Structured Information Standards. OASIS ist eine nicht-kommerzielle Organisation, die sich um die Standardisierung von Formaten für Web Services auf der Basis von XML kümmert.

Business Process Execution Language (BPEL), Teil I:

Web Services im Takt

Die technische Umsetzung von geschäftlichen Aktivitäten eines Unternehmens in Web Services hat in den letzten Jahren große Fortschritte gemacht. Jetzt steht die umfassende Vernetzung der verschiedenen Web Services zu Geschäftsprozessen an, die überschaubar sein sollen, leicht zu erstellen und zu verwalten sind und dabei möglichst einem allgemeingültigen Standard folgen. Dieser Aufgabe hat sich das Business Process Management (BPM) verschrieben, dem mit der Business Process Execution Language (BPEL) ein Standard für die Prozessintegration zur Verfügung steht. Oracle bietet mit dem BPEL Process Manager eine Lösung für diesen Bereich an.

Gewachsene Vielfalt

Die schnelle Umsetzung aller Arten von geschäftlichen Aktivitäten der Unternehmen in Web Services und deren starke Verbreitung und große Vielfalt führten zu einer Vielzahl verschiedenster Möglichkeiten, solche Dienste bereitzustellen und zu verwalten. Im Laufe dieser Entwicklung wurden dazu verschiedene Plattformen geschaffen. Vielen Plattformen ist der Zeitdruck der Entwicklungen anzumerken. Änderungen und Erweiterungen waren zum Teil langfristig geplant, oft aber schnelle Reaktion auf aktuelle Anforderungen. Folglich haben wir heute eine unüberschaubare Anzahl an Sprachen und Spezifikationen zur Implementierung von Web Services.

Ein erster Schritt zur Standardisierung: SOAP

Die Sprache XML (eXtensible Markup Language) wurde zwar bereits vor einigen Jahren eingeführt und standardisiert, es dauerte allerdings relativ lange, bis sie als universelles Format für den Datenaustausch zwischen Web Services akzeptiert wurde. Immer noch operieren viele angebotene Dienste mit eigenen, spezifischen Datenformaten und Protokollen.

Sollen verschiedene Web Services zusammenarbeiten, um gemeinsam nicht nur eine einzelne Aktivität, sondern einen kompletten Geschäftsprozess technisch abzubilden und zu realisieren, muss die Kommunikation durch interpretierende Instanzen und zu erstellende Schnittstellen unterstützt werden, die die XML-Daten in die proprietären Formate und zurück umwandeln. Das hat selbstverständlich Auswirkungen auf die Transparenz, Entwicklungszeiten und Fehlersuche.

Das SOAP-Protokoll (Simple Object Access Protocol) bildet die Basis für die Kommunikation mit unterschiedlichen Diensten, welche ihre Funktionalität und Schnittstellen in XML dokumentieren und elektronisch anbieten. Zusammen mit Web Service Definition Language (WSDL) und Universal Description, Discovery and Integration Protocol (UDDI) hat sich SOAP heute als ein wichtiger Quasi-Standard zum Datenaustausch und zur Beschreibung webbasierter Dienste etabliert.

BPEL: Plattform für die Zusammenarbeit von Web Services

Wichtig wäre eine verbindliche Beschreibung einer Plattform, die mit diesen Standards zusammenarbeitet. Bislang existieren hier unterschiedliche Ansätze, von denen sich keiner eindeutig durchsetzen konnte.

Eine breite Basis hat die Sprache Business Process Execution Language (BPEL): BPEL wurde von IBM, Microsoft, Sun, Oracle, BEA Systems, SAP und Siebel gemeinsam entwickelt und wird auch häufig BPEL4WS genannt (4WS steht für „for Web Services“), oder auch WS-BPEL genannt. Inzwischen wurde die Spezifikation zur Weiterentwicklung dem Standardisierungsgremium OASIS übergeben.

Zusammenstellung von Prozessen BPEL
Discovery UDDI
Beschreibung von Web Services WSDL
XML messaging SOAP, XML
Transport-Protokolle HTTP, SMTP, FTP
Abb. 1: Standards für die Implementierung von
Geschäftsprozessen..

BPEL: Sprache für Service Orientierte Architekturen

BPEL ist als Plattform für die Bereiche gedacht, in denen mit einer Service Orientierten Architektur (SOA) gearbeitet wird. Merkmale einer SOA sind:

Die Zusammenstellung von Geschäftsprozessen und deren Verwaltung wird Business Process Management genannt (BPM). Das Vorhandensein einer SOA ist also zwingende Voraussetzung für BPM. BPM hat das Ziel, die derzeit in Software eingebetteten und quasi unsichtbaren Geschäftsprozesse aus der Ebene der Applikationen herauszuholen. Sie sollen an einer zentralen Stelle sichtbar gemacht werden, dort modelliert, zusammengestellt oder gegebenenfalls geändert werden.

Bei BPM stehen Geschäftsprozesse im Vordergrund. Auch wenn die Abbildung der Geschäftsprozesse auf der technischen Ebene in XML-Dokumenten stattfindet, sollen die BPM-Verantwortlichen ohne XML-Kenntnisse Geschäftsprozesse analysieren und modellieren können. Deshalb wurde für die grafische Darstellung von den zuvor genannten Firmen ein Standard entwickelt: die Management Initiative „Business Process Modeling Notation“ (BPMN).

Dieser Standard setzt auf BPEL auf, die modellierten Prozesse werden mit BPEL auf der Ebene der Kommunikation zwischen den Web Services realisiert. In BPEL definierte, verschie­den granulare Services können, einmal erstellt, immer wieder zu neuen Geschäftsprozessen zusammengestellt werden. Wie in einem Baukasten stehen die Services zur Verfügung und können schnell für andere Zwecke zusammengestellt werden, ohne dass die Ebene des Austauschs von Daten und Messages, der Aufruf von Funktionen etc. in den Blick genommen wer­den muss.

Das trägt wesentlich zur Flexibilisierung der Geschäftsprozesse bei.

BPEL: Orchestrierung von Web Services

Mit BPEL lässt sich ein Prozess beschreiben, der in der Lage ist, verschiedene Dienste zu einer Gesamtanwendung zu verknüpfen - BPEL orchestriert die Zusammenarbeit von Web Services. Im Bereich des BPM werden zwei verschiedene Kopplungsmechanismen zwischen Services unterschieden, die Choreographie und die Orchestrierung.

Von einer Choreographie spricht man, wenn die Koordination einzelner unabhängiger Services durch einen Nachrichtenaustausch realisiert wird.

Bei einer Orchestrierung gibt es eine kontrollierende Instanz, die die einzelnen Services steuert, anspricht und wie ein Dirigent den Einsatz gibt. Orchestrierung bedeutet das Zusammenspiel verschiedener Dienste, Applikationen oder Web Services, die mit Hilfe einer BPEL-basierten Prozessbeschreibung einen bestimmten Geschäftsprozess abbilden und technisch ermöglichen. Die Interaktion der verschiedenen Komponenten, die Abfrage von Daten, das Aufrufen von Funktionen und die Reaktion auf verschiedene Rückgabewerte, geschieht über die BPEL-Laufzeitumgebung.

Struktur von BPEL

Bei BPEL handelt es sich um eine erst kürzlich entwickelte und (noch) nicht intensiv genutzte Sprache: Daher existieren unterschiedliche Spezifikationen zur Syntax der Sprache, abhängig davon, ob die Oracle BPEL-Engine oder die IBM-Engine verwendet wird. Wenn plattformübergreifend gearbeitet werden soll, müssen einige Befehle abgewandelt werden.

Die BPEL-Syntax ist stark an XML orientiert. Wer in diesem Bereich mit den dort verwendeten Sprachen XML und WSDL arbeitet, bewegt sich auch bei BPEL im „muttersprachlichen“ Bereich. Für jeden definierten BPEL-Prozess wird ein WSDL-Dokument erstellt, in dem der genutzte Web Service definiert wird.

Will ein anderer Benutzer diesen Web Service nutzen, steht ihm bereits dessen „Bedienungsanleitung“ zur Verfügung. Diese Definition enthält die „Partner“, mit denen der Prozess kommuniziert (partnerLink), deren Kommunikationskanäle und die diesem „Partner“ möglichen Operationen.

Jedes BPEL-Dokument besteht aus einem Definitionsteil und einem Teil, der den Ablauf des Prozesses beschreibt. Konkret geschieht die Definition eines Geschäftsprozesses in drei Sektionen des BPEL Dokuments:

Die Grundstruktur eines Prozesses zeigt Abbildung 2.

<process name= „HelloWorld“> 	<! -- Prozess -->
	<partnerLinks> 		<! -- Dienste -->
	</PartnerLinks>

	<variables> 		<! -- Daten -->
	</variables>

	<sequence name = “main”> 	<! -- Ablaufsequenz -->
		<receive>
		<assign> 		<! -- Aktivitäten -->
		<reply>
	</sequence>
</process>
Abb. 2: Grundstruktur eines Prozesses in BPEL.

Schnittstellenbeschreibung unter BPEL

Für die im BPEL-Dokument aufgeführten Services gibt es eine WSDL-Schnittstellenbeschreibung. Dieses WSDL-Dokument enthält die folgenden (optionalen) Sektionen:


<process>Umschließt den ganzen Prozess.
<assign>Kopiert Daten von einer Variablen zu einer anderen. So wird das Ergebnis eines Services an den nächsten übergeben.
<invoke>Prozesse eines Services können aufgerufen werden.
<receive>Spezifiziert den Service, von dem eine Variable empfangen werden soll. Mit <receive> kann auch eine Prozessinstanz aktiviert werden.
<reply>Versendet eine Antwort als Folge auf eine <receive>-Aktion. Ein <reply> bezieht sich immer auf einen bestimmten Partnerlink und eine bestimmte Variable.
<throw>Beschreibt mögliche Fehlerfälle.
<terminate>Beendet explizit den Prozess.
<sequence>Definiert für verschiedene Aktivitäten die Reihenfolge, in der sie abgearbeitet werden sollen.
<pick>Versetzt den Prozess sozusagen in eine Endlosschleife und wartet auf ein Ereignis, etwa die Antwort eines Partnerlinks, um dann mit dem Prozessfluss fortzufahren.
<flow>Erlaubt das parallele Abarbeiten von Aktivitäten.
<switch> und Ermöglichen fallbasierte Verzweigungen, z. B. aufgrund bestimmter Attribute der Rückgabewerte einer vorangehenden Aktivität.
<correlation>Bietet die Möglichkeit, auf bestimmte Inhalte einer Rückgabe mit korrelierenden Nachrichten zu reagieren.
Abb. 3: Diese Operationen können mit BPEL ausgeführt werden.

Beispielprozess unter BPEL

Abbildung 4 zeigt, wie ein Beispiel-Prozess in BPEL abgebildet wird: Für den Aufruf dieser Aktionen wird jeweils der entsprechende Partner, der Kommunikationskanal, die auszuführende Operation und welche Variable für diese Kommunikation verwendet werden soll, angegeben. Die so definierten Nachrichten werden im WSDL-Dokument als message definiert, entsprechen also SOAP-Nachrichten.

BPEL Console Abb. 4: Beispielprozess in BPEL abgebildet (vergrößern!).

BPEL: „SQL“ für Prozesse

Mit BPEL steht jetzt eine standardisierte, ablauffähige Sprache zur Beschreibung von Prozessen zur Verfügung, die von einer Reihe namhafter Unternehmen unterstützt wird. Für den Bereich des BPM gilt BPEL als „SQL“ im Kontext von Web Services und eröffnet, wie die Einführung von SQL vor 25 Jahren, Möglichkeiten, die einen Produktivitäts- und Innovationsschub erwarten lassen.

Die Prozesslogik wird auf einer eigenen Ebene bearbeitet, die unabhängig ist von den technischen Gegebenheiten der zu integrierenden Dienste. Die Möglichkeiten der Services sind transparent und können, wenn sie einmal definiert sind, schnell und flexibel genutzt werden. Definierte Dienste können neu zusammengestellt werden und so andere Prozesse abbilden. Das erlaubt eine effiziente Implementierung eines Geschäftsprozesses nach SOA-Prinzipien und gegebenenfalls die flexible Anpassung des Prozessverlaufs an neue Gegebenheiten. Damit können sich Unternehmen schneller als bisher Marktveränderungen anpassen.

Jeder einmal mit BPEL definierte Prozess kann in anderen Kontexten weiterverwendet werden. Die benötigten Ressourcen für Projekte der Prozess-Integration können durch BPEL stark reduziert werden.

BPEL produktiv nutzen: Oracle BPEL Process Manager

Um BPEL produktiv nutzen zu können, sind eine stabile und performante Laufzeitumgebung, Designwerkzeuge sowie eine Konsole für die Verwaltung und das Monitoring der erstellten Prozesse nötig.

Die an der Erstellung des BPEL-Standards beteiligten Firmen bieten Lösungen zur Im­plementierung von BPEL an oder arbeiten an solchen. Oracle konnte sich durch die Übernahme von Collaxa eine bereits weit entwickelte BPEL-Engine sichern, die jetzt als Oracle BPEL Process Manager 2.1.2. weiterentwickelt wurde und zur Verfügung steht (siehe Abbildung 5). Der Oracle BPEL Process Manager unterstützt die Implementierung und das Arbeiten unter BPEL sowohl in der Entwicklung als auch in der Ausführung.

<! - HelloWorld BPEL Process [Generated mit ORACLE BPEL Designer] -->
<process name= "HelloWorld">
         targetNamespace="http://bpelbeispiele.de"
         suppressJoinFailure="yes"
         xmlns:tns="http://bpelbeispiele.de"
         xmlns="http://schemas.xmlsoap.org/ws/2003/business-process"
xmlns:bpelx="http://schemas.oracle.com/bpel/extensions"
xmlns:ora="http://schemas.oracle.com/xpath/extensions"
<! - ===================================================== -->
<! - PARTNER LINKS -->
<! - List of services participating in this BPEL process   -->
<! - ===================================================== -->
<partnerLinks>
         <! Die 'client'-Rolle repräsentiert den,
der diesen Service anfragt --> <partnerLink names>= "client" partnerLinkType="tns:HelloWorld" myRole="HelloWorldProvider"/> </PartnerLinks> <! - ===================================================================== --> <! - VARIABLES --> <! - Liste der Services und XML-Messages innerhalb dieses BPEL-Prozesses --> <! - ===================================================================== --> <variables> <! - Referenz auf die Message, die als Input diesen Prozess initiiert --> <variable name= »input »
MessageType="tns:HelloWorldRequestMessage"> <! - Referenz auf die Message, die dem Anfragenden gentwortet wird --> <variable name= »output »
MessageType="tns:HelloWorldResponseMessage"> </variables> <! - ===================================================================== --> <! - ORCHESTRATION LOGIC --> <! - Aktivitäten zum Koordinieren des Flusses
der Messages zwischen den Services --> <! - innerhalb dieses BPEL-Prozesses --> <! - ===================================================================== --> <sequence name = "main"> <! - Input vom client empfangen. --> <! - Eintrag verweist auf in HelloWorld.wdsl definierte Operationen --> <receive name="receiveInput" partnerLink= "client" portType="tns:HelloWorld" operation="process" variable="input" createInstance="yes"/> <! - Antwort generieren --> <assign name="Verknüpfung">
Abb. 5: BPEL Console.(vergrößern!).

Der Oracle BPEL Process Manager enthält die folgenden Elemente:

Über die Anforderungen hinaus, die der BPEL-Standard stellt, kann über Erweiterungen Java-Code direkt in Dokumente eingebettet werden, nicht SOAP-basierte Web Services können über das Web Services Invocation Framework in eine Prozess-Definition eingebunden werden. Damit können Dienste auch über andere Schnittstellen, Protokolle und Sprachen als im Standard BPEL vorgesehen genutzt werden, etwa Java, JCA oder E-Mail.

Fazit

Diese Einordnung von Business Process Execution Language (BPEL) und die Beschreibung seiner effizienten Möglichkeiten zeigen, dass es sich durchaus lohnt, dem Standard für die Prozessintegration eine Chance zu geben. BPEL bietet die entsprechenden Möglichkeiten, wenn es darum geht, dass verschiedene Web Services zusammenarbeiten sollen, um gemeinsam nicht nur eine einzelne Aktivität, sondern einen kompletten Geschäftsprozess technisch abzubilden und zu realisieren.

Uwe Rübesamen (info@ordix.de).