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

  1. 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.

    Screenshot: New Project Wizard

    Screenshot: New BPEL Project Wizard

  2. 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 Prozess HelloBPELProcess und benutzen Sie den Namespace http://www.se.uni-hannover.de/soa08/tutorial/HelloBPELProcess. Wählen Sie zudem die Vorlage für einen synchronen BPEL-Prozess. Bestätigen Sie mit Finish.

    Screenshot: New BPEL Process Wizard

  3. 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 eine HelloBPELProcessArtifacts.wsdl-Datei für die Interface-Beschreibung erzeugt.

    Screenshot: Projektstruktur

  4. 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 Namen receiveInput bzw. replyOutput enthalten sind. Zudem sind zwei Variablen für die eingehende (input) und die ausgehende Nachricht (output) erstellt worden. Der Prozess ist in einem Partnerlink client, über den er von einem Client aufgerufen werden kann.

    Screenshot: BPEL-Editor mit dem erstellten Prozess

  5. Inspizieren des generierten WSDL: Zusätzlich hat der Assistent eine WSDL-Beschreibung des Services generiert. Es existiert ein Porttype HelloBPELProcess, welches eine Operation namens process mit zwei Nachrichten vom Typ HelloBPELProcessRequestMessage und HelloBPELProcessResponseMessage kennt. Beide Nachrichten bestehen nur aus einem String, der im Element input bzw. output gespeichert wird.

    Screenshot: WSDL-Editor mit dem erstellten Interface

  6. 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 assign createResponse.

    Screenshot: Erstellen der Assign-Aktivität

    Fügen Sie nun über das Properties-Tab eine neue Kopieraktion hinzu. Klicken Sie dazu im Register Details auf New.

    Stellen Sie die Aktion so ein, dass von der Variable input, Part payload das Element input in die Variable output, Part payload und dort das Element result kopiert wird. Abschließend fragt Sie Eclipse, ob Sie einen Initializer für die output-Variable erstellen wollen. Bestätigen Sie dieses mit Yes, weil in BPEL Variablen einmalig vor ihrer Verwendung mit Werten belegt werden müssen.

    Screenshot: Properties-Tab

    Screenshot: Erstellen eines Initializers

    Abschließend sollten die Eigenschaften wie folgt aussehen:

    Screenshot: Fertige Properties

    Damit ist der Beispiel-Prozess komplett. Speichern Sie diesen und wir können nun das Deployment erstellen.

  7. 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 in HelloBPELPort. 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 Binding auf. Das Binding soll HelloBPELBinding heißen. Klicken Sie mit der rechten Maustaste auf das Binding und wählen Sie Set Porttype / Existing Porttype auf und wählen Sie dort den HelloBPELProcess aus. Abschließend wählen Sie im Binding-Kontextmenü Generate Binding Content... auf und wählen dort SOAP als Protokoll. Abschließend sollte die WSDL so wie im unten stehenden Bild gezeigt aussehen. Speichern Sie die WSDL-Datei nun ab.

    Screenshot: Fertige WSDL

  8. 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).

    Screenshot: Erstellen eines ODE Deployment Descriptors

    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 HelloBPELPort aus. 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.

    Screenshot: Apache ODE Deployment Descriptor

  9. Deployen des Prozesses: Nun kann der BPEL-Prozess deployed werden. Starten Sie dazu den Tomcat-Server. Nach dem Start kopieren Sie das Verzeichnis HelloBPELProcess mit dem BPEL-Prozess in das Verzeichnis WebContent/WEB-INF/processes im 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.

    Screenshot: Deployment-Ziel

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:

Siehe auch:


Letzte Änderung: 06.06.2011 von Kai Stapel