BPEL-Tutorial - Hello-World-BPEL-Prozess mit Apache ODE in Eclipse
Hinweis: Dieses Tutorial ist im Rahmen der Übung zur Vorlesung Entwicklung service-orientierter Architekturen und Anwendungen (SOA 2008 und SOA 2010) entstanden.
| Autor: | Daniel Lübke |
|---|---|
| Version: | 06.06.2011 |
In diesem Tutorial wird ein einfacher BPEL-Prozess geschrieben, der in Apache ODE deployed wird. Der Prozess antwortet einfach mit derselben Nachricht, mit der er aufgerufen worden ist.
Voraussetzungen
Dieses Tutorial setzt voraus, ...
Vorgehen
- BPEL-Projekt erstellen: Erstellen Sie ein neues Projekt in Eclipse. Als Projekttyp wählen Sie
BPEL 2.0/BPEL Project. Setzen Sie keine Target Runtime und keine Configuration, sondern lassen Sie die Voreinstellungen.

- Neuen BPEL-Prozess erstellen: Erstellen Sie einen neuen Ordner mit dem Namen
HelloBPELProcess. Erstellen Sie darin einen neuen BPEL-Prozess (New/Other/BPEL 2.0/New BPEL Process File). Nennen Sie den ProzessHelloBPELProcessund benutzen Sie den Namespacehttp://www.se.uni-hannover.de/soa08/tutorial/HelloBPELProcess. Wählen Sie zudem die Vorlage für einen synchronen BPEL-Prozess. Bestätigen Sie mitFinish.
- Inspizieren der generierten Dateien: Die Projektstruktur sollte nun wie in untenstehendem Bild aussehen. Der Assistent hat eine
HelloBPELProcess.bpel-Datei für den eigentlichen BPEL-Prozess und eineHelloBPELProcessArtifacts.wsdl-Datei für die Interface-Beschreibung erzeugt.
- Inspizieren des generierten BPEL: Der Assistent hat den BPEL-Prozess in einem neuen Editorfenster geöffnet. Die Palette mit den Aktivitäten ist noch nicht ausgefahren. Der Prozess besteht aus einer
main-Sequence, in der ein receive und ein reply mit den NamenreceiveInputbzw.replyOutputenthalten sind. Zudem sind zwei Variablen für die eingehende (input) und die ausgehende Nachricht (output) erstellt worden. Der Prozess ist in einem Partnerlinkclient, über den er von einem Client aufgerufen werden kann.
- Inspizieren des generierten WSDL: Zusätzlich hat der Assistent eine WSDL-Beschreibung des Services generiert. Es existiert ein Porttype
HelloBPELProcess, welches eine Operation namensprocessmit zwei Nachrichten vom TypHelloBPELProcessRequestMessageundHelloBPELProcessResponseMessagekennt. Beide Nachrichten bestehen nur aus einem String, der im Elementinputbzw.outputgespeichert wird.
- Einfügen des Nachrichtenerzeugens: Wechseln Sie wieder zurück zum BPEL-Editor und erstellen Sie aus der Palette ein neues
assign(in der Palette unter Actions), welches zwischen dem receive und dem reply ist. Nennen Sie das assigncreateResponse.
Fügen Sie nun über das
Properties-Tab eine neue Kopieraktion hinzu. Klicken Sie dazu im RegisterDetailsaufNew.Stellen Sie die Aktion so ein, dass von der Variable
input, Partpayloaddas Elementinputin die Variableoutput, Partpayloadund dort das Elementresultkopiert wird. Abschließend fragt Sie Eclipse, ob Sie einen Initializer für die output-Variable erstellen wollen. Bestätigen Sie dieses mitYes, weil in BPEL Variablen einmalig vor ihrer Verwendung mit Werten belegt werden müssen.

Abschließend sollten die Eigenschaften wie folgt aussehen:

Damit ist der Beispiel-Prozess komplett. Speichern Sie diesen und wir können nun das Deployment erstellen.
- Erstellen eines Services in der WSDL: In der WSDL ist bisher nur der Porttype für den Prozess definiert. Im folgenden werden wir die nötige Servicebeschreibung erstellen. Erstellen Sie dazu im WSDL-Editor über das Kontextmenü einen neuen Service und nennen Sie ihn
HelloBPELService. Benennen Sie den automatisch miterstellten Port um inHelloBPELPort. Zusätzlich ist noch der Endpoint zu ändern. Weil ODE den Endpoint später benutzt, muss er eine URL beschreiben, die von dem ODE-Server aus verfügbar gemacht werden kann, d.h. der Servername und der Port, sowie der Pfadanfang müssen mit den Tomcat-Einstellungen übereinstimmen. Im "Normalfall" sieht eine URL wie folgt aus:http://server:8080/ode/processes/ServiceName. Für diesen BPEL-Prozess heißt das http://localhost:8080/ode/processes/HelloBPELService.Abschließend wird das Binding erstellt. Wählen Sie dazu aus dem Kontextmenü des Ports
Set Binding/New Bindingauf. Das Binding sollHelloBPELBindingheißen. Klicken Sie mit der rechten Maustaste auf das Binding und wählen SieSet Porttype/Existing Porttypeauf und wählen Sie dort den HelloBPELProcess aus. Abschließend wählen Sie im Binding-KontextmenüGenerate Binding Content...auf und wählen dortSOAPals Protokoll. Abschließend sollte die WSDL so wie im unten stehenden Bild gezeigt aussehen. Speichern Sie die WSDL-Datei nun ab.
- Erstellen eines ODE Deployment Descriptors: Der Eclipse BPEL-Editor kommt mit einem kleinen Werkzeug, mit dem es leicht möglich ist einen ODE Deployment Descriptor zu erstellen. Erstellen Sie dazu einen neuen ODE Deployment Descriptor (
BPEL 2.0/Apache ODE Deployment Descriptor).
Es erscheint ein Deployment-Editor, der in der aktuellen Version noch kleinere Fehler hat. Sie müssen hierin nun die Services festlegen. Weil der Prozess keine anderen Services aufruft, sondern nur aufgerufen wird, gibt es nur einen Partnerlink, den wir einstellen müssen. Wählen Sie dazu im Partnerlink client den eben erzeugten Port
HelloBPELPortaus. Anmerkung: Dies kann etwas schwierig sein, weil die Combobox nicht normgerecht bedient werden kann. Klicken Sie erst in die Combobox, danach können Sie mit den Pfeiltasten oder über die Maus den Port auswählen.Der Deployment-Descriptor sollte dann wie im folgenden Bild aussehen. Speichern Sie ihn ab.

- Deployen des Prozesses: Nun kann der BPEL-Prozess deployed werden. Starten Sie dazu den Tomcat-Server. Nach dem Start kopieren Sie das Verzeichnis
HelloBPELProcessmit dem BPEL-Prozess in das VerzeichnisWebContent/WEB-INF/processesim ODE-Projekt. Eclipse kopiert im Hintergrund die Datei in das Tomcat-Deployment. Achten Sie in der Konsole auf die Ausgaben von Tomcat/ODE. Der Prozess sollte erfolgreich deployed werden. Sie können den Prozess nun aufrufen. Parameter können in der URL angegeben werden, z.B. http://localhost:8080/ode/processes/HelloBPELService/process?input=Donald.
Eclipse-Projekte
Der Hello-World-BPEL-Prozess kann direkt in Eclipse als Projekt importiert werden. Wählen Sie dazu jeweils Import -> General -> Existing Projects into Workspace -> Select Archive File....
Der erste Prozess läuft und Sie können nun anfangen, weitere und komplexere BPEL-Prozesse zu erstellen.
Weiterführende Tutorials:
- BPEL-Tutorial - BPEL-Prozess mit einfachem Invoke auf Apache ODE in Eclipse
- BPEL-Tutorial - BPEL-Prozess mit dynamischen Invoke auf Apache ODE in Eclipse
- BPEL-Tutorial - BPEL-Prozess mit Pick in Apache ODE in Eclipse
Siehe auch:
Letzte Änderung: 06.06.2011 von Kai Stapel

