BPEL-Tutorial - BPEL-Prozess mit einfachem Invoke auf 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.
| Autoren: | Daniel Lübke, Leif Singer, Kai Stapel |
|---|---|
| Version: | 06.06.2011 |
In diesem Tutorial wird ein einfacher BPEL-Prozess geschrieben, der in Apache ODE deployed wird. Der Prozess antwortet mit "Hi $Name", wobei $Name der Übergabeparameter an den Prozess ist und das Grußwort (Hi, Hallo, ...) variieren soll. Dazu benutzt der BPEL-Prozess einen Webservice, der zufällig ein Grußwort zurückliefert. Dieser Webservice hat einen boolean-Parameter, der angibt, ob an dem Grußwort ein Leerzeichen angefügt werden soll oder nicht.
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
SimpleInvokeProcess. Erstellen Sie darin einen neuen BPEL-Prozess (New/Other/BPEL 2.0/New BPEL Process File). Nennen Sie den ProzessSimpleInvokeProcessund benutzen Sie den Namespacehttp://www.se.uni-hannover.de/soa08/tutorial/SimpleInvokeProcess. Wählen Sie die Vorlage für einen synchronen BPEL-Prozess. Bestätigen Sie mitFinish.
- Importieren der WSDL-Datei für den aufzurufenden Service: Im Rahmen dieses Tutorials werden wir einen Hello-Service aufrufen, der verschiedene Grußwörter generiert. Die WSDL zu diesem Service kann heruntergeladen werden. Der Service ist auf einem SE-Server deployed und kann direkt genutzt werden. Alternativ können Sie auch den Service als deploybares WAR herunterladen und auf Ihrem eigenen Tomcat deployen. Importieren Sie die WSDL-Datei anschließend in das SimpleInvokeProcess-Verzeichnis im Eclipse-Projekt (Projektkontextmenü/
Import/General/Filesystem). - Erstellen der Variablen für die Nachrichten: Damit wir einen Webservice von BPEL aus aufrufen können, müssen wir ihm Nachrichten senden (Eingabe- und Ausgabenachricht). Diese speichern wir in zwei Variablen. Erzeugen Sie dazu mittels des
+-Zeichens in dem Variablenview neben der Palette zwei neue Variablen mit den NamenRandomHelloRequestundRandomHelloResponse.
Legen Sie nun die Variablentypen fest. Wählen Sie dazu die request-Variable aus, aktivieren Sie das Eigenschaftsfenster (Properties) und gehen Sie den Reiter Details. Klicken Sie auf
Browse...um die verfügbaren Datentypen anzuzeigen. Wählen Sie im Filter aus, dass nur Nachrichten (Messages) angezeigt werden. Fügen Sie überAdd Schemadie eingangs importierte WSDL-Datei hinzu.
Legen Sie nun den Datentyp für die request-Variable als
sayHelloRequestfest. Bestätigen Sie den Typ mitOk. Weil Eclipse den Namespace dieser Nachricht noch nicht kennt, werden Sie im folgenden nach einem Prefix gefragt, den Sie für diesen Namespace verwenden wollen. Bestätigen Sie den Dialog einfach mitOk.
Definieren Sie auf dieselbe Art den Typ für die response-Variable als
sayHelloResponse. - Erstellen des Invokes: Nun kann eine Invoke-Aktivität erstellt werden, die einen Webservice aufruft. Wählen Sie dazu aus der Palette
Invokeaus und fügen Sie die neue Aktivität zwischen die vorgegebenen receive- und reply-Aktivitäten.
Setzen Sie nun über die Eigenschaften des Invokes den Partnerlink, über den der Service aufgerufen wird. Wählen Sie dabei aus, dass Sie einen neuen, globalen Partnerlink erstellen wollen. Als Namen legen Sie
RandomHelloPLfest.
Im darauffolgenden Dialog erlauben Sie Porttypes im Filter und wählen Sie
RandomHelloServiceaus.
Weil für diesen Porttype noch kein Partnerlinktype existiert, legt Eclipse einen neuen an. Nennen Sie diesen
RandomHelloPLTund wählen SieNext. Die erste Rolle nennen SieRandomHelloServiceProviderund wählen denRandomHelloServiceals Porttype aus. Die zweite Rolle lassen Sie leer und bestätigen Sie den Dialog mitFinish. Nun können Sie in den Eigenschaften des Invokes als OperationsayHellofestlegen. - Festlegen der Input- und Outputvariablen: Um nun die Variablen dem Invoke zuzuordnen, legen Sie nun die beiden zuvor angelegten Variablen als Ein- bzw. Ausgabenachricht fest. Deaktivieren Sie hierzu die Option
Use WSDL Message Parts Mappingund wählen Sie die entsprechenden Variablen aus den Dropdowns aus. Abschließend sollten die Eigenschaften so wie im untenstehenden Bild aussehen.
- Zusammenstellen der Nachrichten mittels Assign: Fügen Sie nun über die Palette zwei Assigns zu dem BPEL-Prozess hinzu. Eines platzieren Sie vor und eines hinter dem Invoke. Benennen Sie die Assigns wie auf unten stehendem Bild angegeben:
Für das erste Assign (PrepareRandomHelloRequest) stellen Sie die Eigenschaften wie in folgendem Bild dargestellt ein:
Analog stellen Sie für das zweite Assign (PrepareOutput) folgende Eigenschaften ein:
Der XPath-Ausdruck ist dabei:
concat(bpel:getVariableData('RandomHelloResponse', 'parameters', '/'), bpel:getVariableData('input', 'payload', '/'))Alternativ kann auch folgende, kurze Syntax verwendet werden. Diese ist in der aktuellen BPEL-Version vorzuziehen:concat($RandomHelloResponse.parameters/ns1:sayHelloReturn, $input.payload/tns:input)
- Erstellen des Deployments: Erstellen Sie analog zu Schritt 7 und Schritt 8 des vorigen Tutorials die WSDL und den Deployment Descriptor. Die WSDL sollte im Editor dabei wie folgt aussehen:
Im Deployment Descriptor müssen Sie nun zusätzlich noch den Service für den neuen Partnerlink angeben, den der Prozess aufrufen soll. Wählen Sie dazu den entsprechenden Port wie im Bild angegeben aus:
Nun kann der Prozess in Apache ODE deployed und danach aufgerufen werden.
Eclipse-Projekte
Der SimpleInvoke-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 aufgerufene Random Hello Service kann direkt im Axis-Container deployed werden oder als Eclipse-Projekt importiert werden (Import -> WAR file).
Weiterführende Tutorials:
- 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:
- BPEL-Tutorial - Getting Started: BPEL-Entwicklung mit Apache ODE und Eclipse
- BPEL-Tutorial - Installation von Apache ODE mit Eclipse
- BPEL-Tutorial - Hello-World-BPEL-Prozess auf Apache ODE in Eclipse
Letzte Änderung: 06.06.2011 von Kai Stapel

