BPEL-Tutorial - BPEL mit Apache ODE und dem Eclipse BPEL-Designer unter Eclipse 3.4 (Ganymede) entwickeln

Autor: Leif Singer
Version: 19.12.2008

Hinweis: Dieses Tutorial ist im Rahmen der Übung zur Vorlesung Entwicklung service-orientierter Architekturen und Anwendungen (SOA) 2008 entstanden.

Dieses Tutorial erklärt, wie man den Eclipse BPEL-Designer sowie den Apache ODE BPEL-Container unter Eclipse 3.4 installiert und verwendet. Es gliedert sich wie folgt:

  1. Eclipse BPEL-Designer Plugin installieren
    Da das BPEL-Plugin für Eclipse zur Zeit noch nicht offiziell und regelmäßig veröffentlicht wird, laden wir den Quelltext aus dem Eclipse-CVS herunter und kompilieren uns das Plugin selbst.
  2. Apache Tomcat und Apache ODE in Eclipse einbinden
    ODE wird als WAR-Datei, d.h. als Web-Anwendung, ausgeliefert. Diese deployen wir im Apache Tomcat und legen innerhalb von Eclipse einen ODE-Server an, über den wir die BPEL-Engine komfortabel steuern können.
  3. Entwicklung des "HelloWorld"-Prozesses
    Mit Hilfe des in Schritt 1 installierten BPEL-Designers schreiben wir einen einfachen BPEL-Prozess, der als Eingabe eine Zeichenkette nimmt und als Ausgabe dieselbe Zeichenkette zurückgibt.
  4. Den "HelloWorld"-Prozess ausprobieren
    Wir installieren den im vorherigen Schritt entwickelten BPEL-Prozess in Apache ODE und sprechen ihn mit Hilfe des Web Service Explorers an.

Voraussetzungen

Dieses Tutorial setzt voraus, dass die Eclipse IDE für Java EE Entwickler in der Version 3.4 bereits installiert ist. Falls Sie ein anderes Eclipse-Paket, zum Beispiel Eclipse für Java Entwickler (ohne EE), installiert haben, brauchen Sie zusätzlich noch die Web Tools Platform und ggf. andere Plugins.

1. Eclipse BPEL-Designer Plugin installieren

  1. Wir starten Eclipse und wählen am Besten einen leeren Workspace. In diesen möchten wir per CVS das BPEL-Designer-Plguin importieren. Da dieses 12 Eclipse-Projekte umfasst, ist ein leerer Workspace übersichtlicher.

    Screenshot

  2. In Eclipse öffnen wir nun die Perspektive "CVS Repository Browsing".

    Screenshot

    Screenshot

  3. In der "CVS Repository Browsing"-Perspektive legen wir nun ein neues CVS Repository an. Es ist das Repository des Eclipse Technology Projekts, das unter anderem auch den BPEL-Designer enthält.

    Screenshot

    Folgenden Zugangsdaten sind einzugeben:
    Host: dev.eclipse.org
    Repository path: /cvsroot/technology
    User: anonymous
    Password: <leer lassen>
    Connection type: pserver
    Port: Use default port

    Screenshot

  4. Im soeben angelegten Repository gibt es unter HEAD / org.eclipse.bpel / plugins zwölf Verzeichnisse, die wir als Eclipse-Projekte importieren möchten. Wir markieren sie und öffnen per Rechtsklick das Kontextmenü. Hier wählen wir "Check out".
    Achtung: Die Verzeichnisse org.eclipse.bpel.examples.extensionPoints und org.eclipse.bpel.xpath10.junit werden nicht nur nicht benötigt, sondern würden beim Erstellen und Verwenden des Plugins sogar Probleme bereiten. Diese deshalb unbedingt nicht mit auschecken.

    Screenshot

    Screenshot

    Der Import der Projekte kann einige Zeit in Anspruch nehmen.

    Screenshot

  5. Wir wechseln zurück in die "Java EE"-Perspektive. Per Rechtsklick in die Liste der Projekte öffnen wir das Kontextmenü und wählen hier "Export...".

    Screenshot

    Screenshot

  6. Im folgenden Export-Wizard wählen wir "Deployable plug-ins and fragments".

    Screenshot

  7. Nun wählen wir alle soeben importierten Projekte aus ("Select All") und wählen ein Verzeichnis, in das die JAR-Dateien des Plugins exportiert werden sollen.

    Screenshot

  8. Der folgende Export der Projekte kann einige Zeit in Anspruch nehmen.

    Screenshot

  9. Nach erfolreichem Export beenden wir Eclipse und öffnen den Ordner, in den die JAR-Dateien exportiert wurden. Diese markieren und kopieren wir.

    Screenshot

  10. Wir wechseln nun in den Plugin-Ordner von Eclipse (bspw. C:\Programme\Eclipse\plugins, /Applications/eclipse/plugins, etc.). Hier fügen wir die kopierten JAR-Dateien ein und starten dann Eclipse neu.

    Screenshot

  11. Um zu überprüfen, ob das BPEL-Plugin korrekt installiert wurde, wählen wir den Menüpunkt File / New / Project... – im darauhin erscheinenden Wizard sollte es einen Ordner "BPEL 2.0" geben, in dem sich die Projektart "BPEL Project" befindet. Da das Plugin offenbar korrekt installiert wurde, brechen wir die Projekterstellung zunächst ab.
    Achtung: Sollte die "BPEL Project"-Option nicht vorhanden sein, muss Eclipse ggf. von der Konsole aus neu gestartet werden – hier ist dann die Option -clean zu übergeben. Dies stellt sicher, dass der Plugin-Ordner neu durchsucht wird. Vollständiger Aufruf, mit $ECLIPSE_HOME als Installationsverzeichnis von Eclipse: $ECLIPSE_HOME\eclipse.exe -clean (auf Betriebssystemen ungleich Microsoft Windows ist der Befehl entsprechend anzupassen)

    Screenshot

    Die Installation des BPEL-Plugins ist nun beendet.

2. Apache Tomcat und Apache ODE in Eclipse einbinden

  1. Wir laden zunächst Apache ODE 1.2 als WAR-Distribution sowie Apache Tomcat 6.0.18 herunter.

    Screenshot

    URL: http://ode.apache.org/getting-ode.html

    Screenshot

    URL: http://tomcat.apache.org/download-60.cgi
  2. Apache Tomcat packen wir, wie im Screenshot zu sehen, in ein beliebiges Verzeichnis aus. In den "webapps"-Ordner von Tomcat entpacken wir die Datei ode.war aus der Apache ODE Distribution.

    Screenshot

  3. Im bin-Verzeichnis der Apache-Tomcat-Installation befinden sich einige Start- und Stop-Skripte. Hier starten wir per Doppelklick die Datei startup.bat (bzw. startup.sh unter UNIX). Dies startet Tomcat und sollte in Meldungen ähnlich denen im Screenshot resultieren.

    Screenshot

  4. Wie im Screenshot zu sehen wurde die Datei ode.war nun in ein ode-Verzeichnis entpackt. Dieses Verzeichnis merken wir uns; wir werden es gleich Eclipse mitteilen müssen.

    Screenshot

  5. Mit Hilfe des Skripts shutdown.bat (bzw. shutdown.sh) beenden wir Apache Tomcat wieder.

    Screenshot

  6. Nun richten wir ODE in Eclipse ein, damit wir die Eclipse-Oberfläche für ein komfortableres Deployment unserer Prozesse verwenden können. Über den Menüpunkt File / New / Other... gelangen wir zum "New"-Wizard, in dem wir den Punkt "Server" im Ordner "Server auswählen. "

    Screenshot

  7. Im folgenden Dialog wählen wir im Ordner "Apache" die Option "Ode v1.x Server".

    Screenshot

  8. Im letzten Dialog geben wir noch die Pfade zu Tomcat (das Verzeichnis, in dem die bin- und webapps-Verzeichnisse liegen) und ODE (das ode-Verzeichnis in Tomcats webapps-Verzeichnis) an. JRE und Port können wir so übernehmen, wie es vorgeschlagen wird. Per Klick auf "Finish" wird unser Server in Eclipse eingerichtet.

    Screenshot

  9. In der Server-Ansicht ist nun unser neu eingerichteter ODE-Server aufgetaucht. Ist die Server-Ansicht nicht sichtbar, so kann man sie über den Menüpunkt Window / Show View / Other... und die Auswahl von "Servers" im Ordner "Server" öffnen.

    Screenshot

  10. Mit dem grünen "Play"-Knopf können wir den Server starten. In der Ansicht "Console" (die man ggf. ebenfalls über Show View öffnen muss) werden die Server-Meldungen ausgegeben. Analog lässt sich der Server mit dem roten "Stop"-Knopf wieder anhalten.

    Screenshot

    Die Einrichtung der Server ist nun beendet.

3. Entwicklung des "HelloWorld"-Prozesses

  1. Wir sind nun soweit, einen BPEL-Prozess zu entwickeln. Hierfür müssen wir zunächst ein BPEL-Projekt anlegen. Dies geht über den Menüpunkt File / New / Project.... Alternativ bietet das Kontextmenü in der Projektliste dieselbe Möglichkeit (siehe Screenshot).

    Screenshot

  2. Im erscheinenden Projekt-Wizard wählen wir "BPEL 2.0 / BPEL Project".

    Screenshot

  3. Im folgenden Dialog geben wir den Projektnamen als "SimpleProcess" an. Ausserdem müssen wir per Klick auf "Modify..." eine kurze Einstellung an der Projekt-Konfiguration vornehmen.

    Screenshot

  4. Es erscheint die Ansicht "Project Facets". In Eclipse können Projekte bestimmte Facetten haben, die grob gesagt beeinflussen, welche Plugins sich am Projekt beteiligen können. Wir wählen die "BPEL 2.0 Facet" und bestätigen durch Klick auf "OK". In unserem Fall stellt dies insbesondere sicher, dass wir das Projekt später in unserem ODE-Server deployen und ausprobieren können. Achtung: Nachträglich kann diese Einstellung in den Projekteigenschaften unter "Project Facets" vorgenommen werden. Evtl. muss man Eclipse dann aber neu starten, damit das Projekt als BPEL-Projekt erkannt wird.

    Screenshot

  5. Im Projekterstellungs-Wizard bestätigen wir mit "Finish". Hierdruch wird unser neues Projekt angelegt.
  6. Zu unserem leeren Projekt möchten wir nun einen neuen BPEL-Prozess hinzufügen. Dies geht per Rechtsklick auf das Projekt und die Wahl von New / Other...

    Screenshot

  7. Im nun erscheinenden "New"-Wizard wählen wir BPEL 2.0 / New BPEL Process File aus.

    Screenshot

  8. Wir geben noch Prozessnamen ("HelloWorld"), den Namespace des Prozesses ("http://example.org/helloWorld") sowie die Template "Synchronous BPEL Process" an und bestätigen dann mit "Finish". Unser BPEL-Prozess wurde nun erstellt.

    Screenshot

  9. Nun sollte die im Screenshot zu sehende Ansicht erscheinen. Ggf. muss HelloWorld.bpel noch per Doppelklick geöffnet werden. Das Diagramm ist eine grafische Ansicht des angelegten BPEL-Prozesses: ein Start-Element, gefolgt von einem Sequence-Element, gefolgt von einem End-Element. Das Sequence-Element beinhaltet ein Receive- sowie eine Reply-Element. Rechts daneben befindet sich eine schmale Leiste mit einem nach links zeigenden Pfeil: hier hinter versteckt sich die Palette, aus der man weitere Prozess-Elemente in den Prozess hineinziehen kann. Noch etwas weiter rechts befindet sich eine Übersicht über die im Prozess definierten Partner Links, Variablen, usw.

    Screenshot

  10. Mit einem Klick auf den nach links zeigenden Pfeil gleich links neben der Übersicht über Partner Links, Variablen, etc. öffnen wir die Palette.

    Screenshot

    Screenshot

  11. Wir möchten dem Prozess nun eine Assign-Aktivität hinzufügen, die nach dem Receive den dem Prozess übergebenen String in die Reply-Variable kopiert, die vom Reply-Element an den Aufrufer des Prozesses zurückgegeben wird. Hierfür markieren wir das Assign-Element in der Palette und ziehen es zwischen Receive- und Reply-Element.

    Screenshot

    Screenshot

  12. Wir möchten nun das Assign-Element so konfigurieren, dass es den gewünschten Kopiervorgang vornimmt. Hierzu öffnen wir per Rechtsklick auf das Assign-Element dessen Kontextmenü und wählen hier "Show in Properties".

    Screenshot

  13. In der nun erscheinenden Properties-Ansicht öffnen wir links den Reiter "Details". Hier findet sich eine bisher noch leere Liste der vom Assign durchzuführenden Kopiervorgänge. Per Klick auf "New" fügen wir einen neuen hinzu.

    Screenshot

  14. Auf der From-Seite (links, von hier wird kopiert) wählen wir in der input-Message den payload-Part und hierin das input-Element. Auf der To-Seite (rechts, hierhin wird kopiert) wählen wir in der output-Message den payload-Part und hierin das result-Element.

    Screenshot

  15. Sobald wir nun per Steuerung-S unseren BPEL-Prozess speichern, fragt Eclipse, ob ein Initialisierer für das Assign-Element erzeugt werden soll. Dies bestätigen wir.

    Screenshot

    Screenshot

  16. Der BPEL-Prozess ist nun fertig. Jetzt müssen wir noch die WSDL anpassen. Dafür öffnen wir sie per Doppelklick. Der Eclipse-BPEL-Designer erstellt für jeden BPEL-Prozess automatisch eine WSDL-Datei mit dem Namen <Prozessname>Artifacts.wsdl.

    Screenshot

  17. Die WSDL wird als Diagramm dargestellt. Per Rechtsklick in die freie Fläche des Diagramms erhalten wir ein Kontextmenü, in dem wir mit dem Punkt "Add Service" ein neues Service-Element hinzufügen. Per Doppelklick auf die entsprechenden Felder nennen wir den Service "HelloWorldProcessService" und den Port "HelloWorldProcessPort".

    Screenshot

  18. Mit einem weiteren Rechtsklick in die freie Fläche fügen wir ein Binding hinzu.

    Screenshot

  19. In der Properties-Ansicht des neuen Bindings vergeben wir "HelloWorldSOAPBinding" als Namen und wählen "HelloWorld" als PortType. Nun wählen wir "Generate Binding Content...".

    Screenshot

  20. Im nun erscheinenden Dialog wählen wir als Protokoll "SOAP" aus. Als SOAP Binding Options wählen wir "document literal".

    Screenshot

  21. Per Rechtsklick auf den Port unseres Services können wir das Binding setzen. Wir wählen hier also "Set Binding" und dann "Existing Binding...".

    Screenshot

  22. Im folgenden Dialog wählen wir unser soeben erstelltes "HelloWorldSOAPBinding" aus und bestätigen mit "OK".

    Screenshot

  23. Schliesslich geben wir noch als Adresse des "HelloWorldProcessPort" den URL "http://localhost:8080/ode/processes/HelloWorld" ein und speichern die WSDL-Datei.

    Screenshot

    Die Entwicklung des BPEL-Prozesses ist nun abgeschlossen.

4. Den "HelloWorld"-Prozess ausprobieren

  1. Um den Prozess im Apache ODE zu deployen, müssen wir zunächst einen Deployment Descriptor erstellen. Dieser stellt dem Server weitere Informationen über den Prozess zur Verfügung, die er zur Installation benötigt. Per "File / New / Other..." wählen wir im Ordner "BPEL 2.0" den Wizard "Apache ODE Deployment Descriptor".

    Screenshot

  2. Als Container wählen wir "SimpleProcess" und als Dateinamen "deploy.xml".

    Screenshot

  3. Per Rechtsklick auf den neu erstellten Deployment Descriptor wählen wir im Kontextmenü "Open With / ODE Deployment Descriptor Editor", um den Deployment Descriptor mit einem spezialisierten Editor zu bearbeiten.

    Screenshot

  4. In diesem Editor wählen wir nun für den Partner Link "client" als Associated Port unseren "HelloWorldProcessPort".

    Screenshot

  5. Der Deployment Descriptor sollte nun wie im untenstehenden Screenshot aussehen.

    Screenshot

  6. Per Rechtsklick auf den ODE-Server in der Server-Ansicht wählen wir nun "Add and Remove Projects...", um unser Projekt im Server zu deployen.

    Screenshot

  7. In der Liste "Available Projects" markieren wir unsen Prozess "SimpleProcess/HelloWorld.bpel" und wählen "Add ->". Dies verschiebt den Prozess in die Liste der Configured Projects. Per Klick auf "Finish" bestätigen wir dies, was den Prozess schliesslich im ODE deployt.

    Screenshot

  8. In der Ansicht sollten nun Meldungen ähnlich denen im untenstehenden Screenshot zu sehen sein. Sie bestätigen das erfolreiche Deployment unseres BPEL-Prozesses.

    Screenshot

  9. Mit einem Webbrowser können wir nun unter dem URL http://localhost:8080/ode/services/listServices anzeigen lassen, welche Dienste auf unserem Server laufen. Abgesehen von einigen Verwaltungsdiensten sollte dies auch unser "HelloWorld"-Prozess sein, der als Service angeboten wird (wahrscheinlich als letzter auf der Seite).

    Screenshot

  10. Nun, da wir uns vergewissert haben, dass unser Prozess korrekt als Service angeboten wird, möchten wir ihn ansprechen. Hierfür öffnen wir per Rechtsklick auf unser Projekt dessen Kontextmenü und wählen den Punkt "Web Services / Test with Web Services Explorer".

    Screenshot

  11. In der nun erscheinenden Ansicht wählen wir im Navigator auf der linken Seite die Operation "process", die sich im "HelloWorldSOAPBinding" findet, welches sich wiederum im Service "HelloWorldProcessService" befindet.

    Screenshot

  12. Auf der rechten Seite können wir nun auswählen, mit welchem Endpunkt und mit welchen Parametern wir die Operation aufrufen möchten. Wir geben nur im "HelloWorldRequest" die Zeichenkette "input" an. Im Screenshot haben wir "Hello, World! :)" eingetragen. Ein Klick auf "Go" sendet die Anfrage an unseren Prozess.

    Screenshot

  13. Die Antwort des Prozesses ist nun ein wenig weiter unten zu sehen. Unser Prozess arbeitet wie gewünscht. In der Ansicht "Console" können wir uns bei Bedarf die Nachrichten ansehen, die der ODE-Server beim Ausführen unseres Prozesses ausgibt.

    Screenshot

    Deployment und Aufruf unseres Prozesses sind nun abgeschlossen.

Zusammenfassung

In diesem Tutorial haben wir einen BPEL-Prozess entwickelt und ausprobiert. Dafür mussten wir

  1. den Eclipse BPEL-Designer aus dem CVS auschecken, kompilieren, verpacken und schliesslich installieren;
  2. Apache Tomcat und Apache ODE in Eclipse einbinden, um unsere zu entwickelnden Prozesse irgendwo deployen zu können;
  3. einen BPEL-Prozess entwickeln und dessen WSDL-Datei anpassen;
  4. unseren BPEL-Prozess in Apache ODE deployen;
  5. den in Apache ODE laufenden BPEL-Prozess mit Hilfe des Web Services Explorers ansprechen.

Weiterführende Tutorials:


Letzte Änderung: 22.12.2008 von Leif Singer