BPEL-Tutorial - BPEL-Prozess mit Pick in Apache ODE in Eclipse 3.4 (Ganymede)

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

Autor: Daniel Lübke
Version: 03.02.2009

In diesem Tutorial wird ein BPEL-Prozess entwickelt, der zwei Operationen anbietet. Dieser Prozess nutzt das BPEL-Pick-Konstrukt, welches es erlaubt, verschiedene Nachrichten zu empfangen.

Voraussetzungen

Dieses Tutorial setzt voraus, ...

Vorgehen

  1. BPEL-Projekt und BPEL-Prozess erstellen: Erstellen Sie ein neues Projekt in Eclipse. Nennen Sie das Projekt PickProcess. Erstellen Sie in dem neuen Projekt einen Ordner PickProcess. Erstellen Sie darin einen neuen BPEL-Prozess mit demselben Namen PickProcess.

    Screenshot: New BPEL Process Wizard

  2. Erstellen von zwei Operationen: Im Rahmen dieses Tutorials werden wir einen BPEL-Prozess erstellen, der zwei verschiedene Nachrichtentypen entgegennimmt und unterschiedlich darauf antwortet. Dazu müssen wir zuerst die Operationen in der WSDL-Datei definieren. Öffnen Sie dazu die angelegte WSDL-Datei und fügen Sie eine Operation work hinzu. Lassen Sie die Nachrichtennamen und -typen bei ihren Default-Werten.

    WSDL Editor

  3. Pick erstellen: Öffnen Sie die BPEL-Prozess-Datei im BPEL-Editor. Löschen Sie das receive und fügen Sie stattdessen ein pick an die erste Stelle im Prozess ein.

    Screenshot: BPEL Process with Pick

  4. onMessage-Properties: Wählen Sie für die onMessage-Properties den client-Partnerlink mit der Operation process aus. Wählen Sie als Variable input, die vom Editor ursprünglich für das receive verwendet wurde.

    Screenshot: onMessage properties

  5. Zweites onMessage erstellen: Fügen Sie über das Kontextmenü des Picks ein neues onMessage-Element ein.

    Screenshot: create new onMessage branch

    Wählen Sie die Eigenschaften so, dass die zweite Operation verwendet wird.

    Screenshot: Properties of second onMessage

  6. Pick als instanzerstellende Aktivität wählen: Setzen Sie über die Eigenschaften des Picks die createInstance-Eigenschaft auf true
  7. Einfügen aller Aktivitäten: Der Prozess soll jeweils nur eine statische Nachricht senden. Dazu muss jeder onMessage-Zweig ein assign und ein reply beinhalten. Schieben Sie dazu, das existierende assign in den ersten onMessage-Zweig und fügen Sie ein weiteres assign über die Palette hinzu. Der Editor erstellt automatisch eine sequence um die beiden Elemente. Fügen Sie ein neues assign und ein neues reply in den zweiten onMessage-Zweig ein. Ihr Editor sollte dann so aussehen wie auf dem Screenshot.

    Screenshot: Process with all activities

  8. Erstellen einer neuen Variable: Für das zweite Receive benötigen wir eine output-Variable. Erstellen Sie dazu eine neue Variable (neben der Palette) und legen Sie über die Eigenschaften den Nachrichtentyp auf ... fest.

    Screenshot: New Variable for 2nd reply

    Screenshot: Message-Type for Variable

  9. Eigenschaften der assign-Aktivitäten: Nun müssen die assigns so konfiguriert werden, dass sie jeweils eine statische Antwort in die jeweile Ergebnisvariable kopieren. Konfigurieren Sie das erste Assign so, dass es folgende XML-Daten in die output-Variable kopiert:
    <tns:PickProcessResponse 
      xmlns:tns="http://www.se.uni-hannover.de/soa08/tutorial/PickProcess"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <tns:result>process</tns:result>
    </tns:PickProcessResponse>
    

    Screenshot: Process with all activities

    Die XML-Nachricht für das zweite Assign sollte so aussehen:
    <tns:workResponse xmlns:tns="http://www.se.uni-hannover.de/soa08/tutorial/PickProcess" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <tns:out>work</tns:out>
    </tns:workResponse>
    

    Screenshot: Process with all activities

  10. Konfiguration des Replys: Stellen Sie das zweite Reply nun so ein, dass die neu angelegte Variable zurückgegeben wird.

    Screenshot: create new onMessage branch

  11. Erstellen des Services: Erstellen Sie nun in der WSDL-Datei den Service. Legen Sie den Service an, benennen Sie ihn, legen Sie als Endpoint http://localhost:8080/ode/processes/PickProcess fest und erstellen Sie ein SOAP-Binding, wie in dem ersten Tutorial beschrieben.

    Screenshot: create new onMessage branch

    Erstellen Sie, ebenfalls wie im ersten Tutorial beschrieben, einen Deployment Descriptor (deploy.xml).

Testen

Nun können Sie ihren Prozess deployen und mittels des Web Services Explorers testen.

Eclipse-Projekte

Der BPEL-Pick-Prozess kann direkt in Eclipse als Projekt importiert werden. Wählen Sie dazu jeweils Import → General → Existing Projects into Workspace → Select Archive File....

Weiterführende Tutorials:

(Weitere Tutorials kommen)

Siehe auch:


Letzte Änderung: 03.02.2009 von Daniel Lübke