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

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


- 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.
Folgenden Zugangsdaten sind einzugeben:
Host: dev.eclipse.org Repository path: /cvsroot/technology User: anonymous Password: <leer lassen> Connection type: pserver Port: Use default port 
- 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 Verzeichnisseorg.eclipse.bpel.examples.extensionPointsundorg.eclipse.bpel.xpath10.junitwerden nicht nur nicht benötigt, sondern würden beim Erstellen und Verwenden des Plugins sogar Probleme bereiten. Diese deshalb unbedingt nicht mit auschecken.
Der Import der Projekte kann einige Zeit in Anspruch nehmen.

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


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

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

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

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

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

- 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-cleanzu ü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)
Die Installation des BPEL-Plugins ist nun beendet.
2. Apache Tomcat und Apache ODE in Eclipse einbinden
- Wir laden zunächst Apache ODE 1.2 als WAR-Distribution sowie Apache Tomcat 6.0.18 herunter.
URL: http://ode.apache.org/getting-ode.html
URL: http://tomcat.apache.org/download-60.cgi
- 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.waraus der Apache ODE Distribution.
- Im
bin-Verzeichnis der Apache-Tomcat-Installation befinden sich einige Start- und Stop-Skripte. Hier starten wir per Doppelklick die Dateistartup.bat(bzw.startup.shunter UNIX). Dies startet Tomcat und sollte in Meldungen ähnlich denen im Screenshot resultieren.
- Wie im Screenshot zu sehen wurde die Datei
ode.warnun in einode-Verzeichnis entpackt. Dieses Verzeichnis merken wir uns; wir werden es gleich Eclipse mitteilen müssen.
- Mit Hilfe des Skripts
shutdown.bat(bzw.shutdown.sh) beenden wir Apache Tomcat wieder.
- 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. "

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

- Im letzten Dialog geben wir noch die Pfade zu Tomcat (das Verzeichnis, in dem die
bin- undwebapps-Verzeichnisse liegen) und ODE (dasode-Verzeichnis in Tomcatswebapps-Verzeichnis) an. JRE und Port können wir so übernehmen, wie es vorgeschlagen wird. Per Klick auf "Finish" wird unser Server in Eclipse eingerichtet.
- 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.

- 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.
Die Einrichtung der Server ist nun beendet.
3. Entwicklung des "HelloWorld"-Prozesses
- 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).

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

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

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

- Im Projekterstellungs-Wizard bestätigen wir mit "Finish". Hierdruch wird unser neues Projekt angelegt.
- 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...

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

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

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

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


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


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

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

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

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


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

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

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

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

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

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

- Schliesslich geben wir noch als Adresse des "HelloWorldProcessPort" den URL "http://localhost:8080/ode/processes/HelloWorld" ein und speichern die WSDL-Datei.
Die Entwicklung des BPEL-Prozesses ist nun abgeschlossen.
4. Den "HelloWorld"-Prozess ausprobieren
- 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".

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

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

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

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

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

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

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

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

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

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

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

- 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.
Deployment und Aufruf unseres Prozesses sind nun abgeschlossen.
Zusammenfassung
In diesem Tutorial haben wir einen BPEL-Prozess entwickelt und ausprobiert. Dafür mussten wir
- den Eclipse BPEL-Designer aus dem CVS auschecken, kompilieren, verpacken und schliesslich installieren;
- Apache Tomcat und Apache ODE in Eclipse einbinden, um unsere zu entwickelnden Prozesse irgendwo deployen zu können;
- einen BPEL-Prozess entwickeln und dessen WSDL-Datei anpassen;
- unseren BPEL-Prozess in Apache ODE deployen;
- den in Apache ODE laufenden BPEL-Prozess mit Hilfe des Web Services Explorers ansprechen.
Weiterführende Tutorials:
- BPEL-Tutorial - BPEL-Prozess mit einfachem Invoke auf Apache ODE in Eclipse 3.4 (Ganymede)
Letzte Änderung: 22.12.2008 von Leif Singer

