BPEL-Import (BizTalk Server-Beispiel)

Das Beispiel für den BPEL-Import zeigt, wie anhand einer BPEL-Prozessbeschreibung (Business Process Execution Language) und der zugehörigen Elemente eine Orchestrierung erstellt wird.

Ziel des Beispiels

Wide World Importers ist ein Speditionsunternehmen, das Einzelhändlern automatisierte Versanddienste anbietet. Im Einzelnen bietet Wide World Importers Einzelhändlern folgende Möglichkeiten:

  • Anfordern von Lieferungen für Bestellungen

  • Nachverfolgen von Lieferungen

  • Bestätigen von Lieferungen

  • Bestätigung von Rechnungen und Zahlungen für Lieferungen

    Zwar kann die Verfügbarkeit dieser Dienste mithilfe eines WSDL-Dokuments (Web Services Description Language) dargestellt werden, in einem BPEL-Dokument wird jedoch beschrieben, wie die Produktfirmen typischerweise die Dienste aufrufen und welche Reaktionen von Wide World Importers erwartet werden.

    Als Northwind Traders Wide World Importers mit der Abwicklung des Versands beauftragt, erhält das Unternehmen eine BPEL-Datei und einige zugehörige Elemente, die die gesamte Interaktion beschreiben. Mithilfe der BPEL-Datei erstellt Northwind Traders eine BizTalk Server-Anwendung (BPELShipping), um Bestellungen automatisch über Wide World Importers zu verarbeiten.

    In diesem Beispiel werden Sie durch ein Szenario geführt, in dem in der Anwendung BPELShipping Folgendes geschieht:

  1. Empfang einer Bestellung vom Kundenbestellungssystem von Northwind Traders

  2. Senden einer Versandanforderung an Wide World Importers und Anfordern einer Bestätigung

  3. Empfang einer Bestätigung der Versandanforderung von Wide World Importers

  4. Empfang einer Abholungsbenachrichtigung von Wide World Importers

  5. Empfang von Lieferstatusnachrichten bis zum Eingang der Lieferung beim Kunden

  6. Empfang einer Rechnung von Wide World Importers

  7. Senden einer Rechnungseingangsbestätigung an Wide World Importers

  8. Empfang einer Zahlungsbestätigung von Wide World Importers

  9. Senden einer abschließenden Versandbestätigung an das Bestellsystem

    In diesem Beispiel wird Wide World Importers durch eine separate BizTalk-Anwendung (ShipperProcess) simuliert. Die Anwendung BPELShipping kommuniziert über den Dateitransport mit ShipperProcess, wobei für die Kommunikation allgemeine Speicherorte im Dateisystem verwendet werden.

Wie dieses Beispiel gestaltet ist und warum

BPEL for Web Services ist eine XML-basierte Sprache, mit der der Geschäftsprozess beschrieben wird, sodass dieser problemlos von verschiedenen Unternehmen verwendet werden kann, die mithilfe von Webdiensten Geschäfte miteinander abwickeln möchten. Mit BPEL wird die Abwicklung des Geschäftsprozesses auf der Geschäftsprotokollebene beschrieben, nicht jedoch der interne Prozess in einem Unternehmen, z. B. die Schritte für die Verarbeitung einer von einem Partner eingegangenen Bestellung. In diesem Beispiel wird demonstriert, wie Sie BPEL- und entsprechende WSDL-Dateien importieren und in eine Orchestrierung konvertieren und dann mit der Abwicklung des Geschäftsprozesses mit dem Partner beginnen.

Im Folgenden wird Schritt für Schritt beschrieben, wie Sie die BPEL- und WSDL-Dateien importieren und in eine Orchestrierung konvertieren, um die Interaktion mit einer vorab erstellten BizTalk-Anwendung (ShipperProcess) zu ermöglichen. Wenn Sie die folgenden Schritte ausführen, sind die unter „So erstellen und initialisieren Sie die Anwendung BPELShipping“ beschriebenen Schritte nicht erforderlich.

So importieren Sie aus BPEL und erstellen eine funktionsfähige Lösung

  1. Klicken Sie in Microsoft Visual Studio im Menü Datei auf Neu und dann auf Projekt.

    Hinweis

    Bevor Sie die folgenden Schritte ausführen, müssen Sie die Anwendung ShipperProcess einrichten, um die unterstützenden Prozesse und Schemaprojekte zu erstellen.

  2. Wählen Sie im Dialogfeld Neues Projekt im Bereich Projekttypen die Option BizTalk (Projekte)aus. Wählen Sie im Bereich Vorlagen die Option BizTalk (Server) BPEL-Importprojekt aus.

  3. Geben Sie im Feld Nameden Namen BPELShipping ein.

    Hinweis

    Wenn Sie einen anderen Namen verwenden, treten beim letzten Schritt für die Bindung möglicherweise Probleme auf.

  4. Wählen Sie einen Speicherort für das Projekt aus, und klicken Sie dann auf OK , um den BPEL-Import-Assistenten zu starten.

  5. Klicken Sie auf der Seite Willkommenauf Weiter.

  6. Klicken Sie auf der Seite BPEL-, WSDL- und XSD-Dateien auswählen auf Durchsuchen.

  7. Wählen Sie alle Dateien aus dem < Ordner Samples Path>\Orchestrations\BPELImport\BPELSource aus, klicken Sie auf Öffnen, und klicken Sie dann auf Weiter.

    Hinweis

    In diesem Schritt wählen Sie die BPEL- und WSDL-Dateien für die Beschreibung des Geschäftsprozesses sowie die XSD-Dateien für die Geschäftsdokumentschemas aus.

  8. Klicken Sie auf der Seite WSDL-Dateien für aufgerufene WebServices auswählen auf Fertig stellen.

  9. Wenn der Assistent zum Importieren von BPEL gemeldet hat, dass der Import erfolgreich ausgeführt wurde, schließen Sie den Assistenten. Das Projekt ist nun erstellt.

  10. Ändern Sie an der Visual Studio-Eingabeaufforderung das Verzeichnis (cd) in den Projektspeicherort.

  11. Führen Sie den folgenden Befehl aus:

    sn –k BPELShipping.snk

  12. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt BPELShipping, und klicken Sie dann auf Eigenschaften.

  13. Wählen Sie unter Allgemeine Eigenschaften\Assembly die in Schritt 11 erstellte Assemblyschlüsseldatei BPELShipping.snk aus, und klicken Sie dann auf OK.

  14. Markieren Sie im Projektmappen-Explorer alle XSD-Dateien, und löschen Sie sie.

  15. Wählen Sie in Projektmappen-Explorer Verweis hinzufügen aus, und klicken Sie auf der Registerkarte Projekte auf Durchsuchen.

  16. Wählen Sie ShippingSchemas.dll aus dem Speicherort <Beispielpfad>\Orchestrierungen\BPELImport\Solution\ShipperProcess\ShippingSchemas\bin\Development aus, und klicken Sie dann auf OK.

    Hinweis

    Im Abschnitt „So erstellen und initialisieren Sie die Anwendung ShipperProcess“ finden Sie Anweisungen zur Erstellung.

  17. Doppelklicken Sie Projektmappen-Explorer auf OrderShippingProcess.bpel.odx.

  18. Wählen Sie im Menü Ansichtdie Option Andere Fenster/Orchestrierungsansicht aus.

  19. Klicken Sie im Fenster Orchestrierungsansicht mit der rechten Maustaste auf Orchestrierungseigenschaften , und klicken Sie dann auf Eigenschaftenfenster.

  20. Legen Sie im Eigenschaftenfenster die Eigenschaft Orchestration Exportable auf False fest.

  21. Doppelklicken Sie in Projektmappen-Explorer auf OrderShipping.wsdl.odx.

  22. Erweitern Sie im Fenster Orchestrierungsansicht den Eintrag Typen/Mehrteilige Nachrichtentypen.

  23. Erweitern Sie InvoiceAckMessageType , und klicken Sie dann auf InvoiceAckMessagePart.

  24. Erweitern Sie im Eigenschaftenfenster das Feld Typ, und wählen Sie Schemas/Auswählen aus Assembly, auf die verwiesen wird.

  25. Klicken Sie im Dialogfeld Artefakttyp auswählen auf ShippingSchemas, wählen Sie den Imported_InvoiceAckMessage Typ aus, und klicken Sie dann auf OK.

    Hinweis

    In den Schritten 23 bis 25 ersetzen Sie die Nachrichtentypen der am BPEL-Prozess beteiligten Dienste durch die entsprechenden, in ShippingSchemas beschriebenen Nachrichtentypen.

  26. Wiederholen Sie die Schritte 23 bis 25 für jeden Nachrichtentyp, und verwenden Sie dabei die folgenden Werte.

    Nachrichtenteil Nachrichtentyp
    InvoiceMessagePart ShippingSchemas.Imported_InvoiceMessage
    OrderAckMessagePart ShippingSchemas.Imported_OrderAckMessage
    OrderMessagePart ShippingSchemas.Imported_OrderMessage
    PaymentConfirmationMessagePart ShippingSchemas.Imported_PaymentConfirmationMessage
    PickupNotificationMessagePart ShippingSchemas.Imported_PickupNotificationMessage
    ShipConfirmationMessagePart ShippingSchemas.Imported_ShipConfirmationMessage
    ShippingHistoryPart ShippingSchemas.Imported_ShippingHistory
    ShipRequestAckMessagePart ShippingSchemas.Imported_ShipRequestAckMessage
    ShipRequestMessagePart ShippingSchemas.Imported_ShipRequestMessage
    ShipStatusMessagePart ShippingSchemas.Imported_ShipStatusMessage
  27. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das BPELShipping-Projekt, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Vorhandenes Element.

  28. Wählen Sie alle BTM-Dateien aus dem Speicherort <Samples Path>\Orchestrations\BPELImport\Solution\BPELShipping\BPELShipping aus.

  29. Suchen Sie im Fenster Orchestrierungsansicht das Nachrichtenzuweisungs-Shape MessageAssignment_1 in ConstructMessage1, und löschen Sie es.

  30. Ziehen Sie aus der Toolbox ein Transform-Shape in das Shape ConstructMessage1.

  31. Klicken Sie im Eigenschaftenfenster auf die Schaltfläche mit den Auslassungspunkten (...), und öffnen Sie das Dialogfeld Konfiguration transformieren.

  32. Wählen Sie Vorhandene Karte aus.

  33. Wählen Sie den vollqualifizierten Kartennamen als BPELShipping.Order2ShipRequest aus.

  34. Wählen Sie die Quelle als Reihenfolge aus. OrderMessagePart.

  35. Wählen Sie das Ziel als ship_request aus. ShipRequestMessagePart , und klicken Sie auf OK.

  36. Wiederholen Sie die Schritte 29 bis 35 für jede der Nachrichtenzuweisungs-Shapes , und ersetzen Sie sie gemäß der folgenden Tabelle durch Formen transformieren .

    Zu ersetzende Form Zu verwendende Zuordnung Quelldokument Zieldokument
    MessageAssignment_2 BPELShipping.Order2OrderAck order.OrderMessagePart order_ack.OrderAckMessagePart
    MessageAssignment_3 BPELShipping.Order2OrderNAck order.OrderMessagePart order_ack.OrderAckMessagePart
    MessageAssignment_4 BPELShipping.Order2ShipHistory order.OrderMessagePart ship_history.ShippingHistoryPart
    MessageAssignment_5 BPELShipping.ShipHistory2Completed order.OrderMessagePart ship_history.ShippingHistoryPart
    MessageAssignment_6 BPELShipping.Invoice2Ack invoice.InvoiceMessagePart invoice_ack.InvoiceAckMessagePart
    MessageAssignment_7 BPELShipping.Order2FinalConfirmation order.OrderMessagePart order_shipped.OrderAckMessagePart
  37. Speichern Sie die Orchestrierung.

  38. Doppelklicken Sie im Decision_1Shape entscheiden auf Rule_1.

  39. Ersetzen Sie im BizTalk-Ausdrucks-Editor

    ship_request_ack(BPELShipping.Ship_Acknowledged) == true

    durch

    ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true

  40. Doppelklicken Sie auf die Schleifenform mit dem Namen Loop_1.

  41. Ersetzen Sie im BizTalk-Ausdrucks-Editor

    ship_history(BPELShipping.Ship_Completed) == true

    durch

    ship_history(ShippingSchemas.Ship_Completed) == true

  42. Doppelklicken Sie im Decision_2Shape entscheiden auf Rule_2.

  43. Ersetzen Sie im BizTalk-Ausdrucks-Editor

    ship_status(BPELShipping.ShipStatus) == "DONE"

    durch

    ship_status(ShippingSchemas.ShipStatus) == "DONE"

  44. Erweitern Sie in der Orchestrierungsansicht Typen/Korrelationstypen , und klicken Sie auf OrderCorrelationSet_Type\.

  45. Klicken Sie im Eigenschaftenfenster auf die Schaltfläche mit den Auslassungspunkten (...) unter Korrelationseigenschaften.

  46. Klicken Sie im Bereich Zu korrelierende Eigenschaften auf BPELShipping.OrderID, und klicken Sie dann auf Entfernen.

  47. Erweitern Sie im Bereich Verfügbare Eigenschaften den Eintrag Versandschemas, wählen Sie Auftrags-ID aus, und klicken Sie dann auf Hinzufügen.

  48. Klicken Sie auf OK.

  49. Speichern Sie alle Dateien, und erstellen Sie die Projektmappe.

  50. Bereitstellen der Projektmappe

  51. Navigieren Sie zum Speicherort <Beispielpfad>\Orchestrations\BPELImport\Solution\BPELShipping, und doppelklicken Sie auf BindAndStartOnly.bat , um die Orchestrierung zu binden und zu starten.

Speicherort dieses Beispiels

<Beispielpfad>\Orchestrations\BPELImport

In der folgenden Tabelle werden die Dateien in diesem Beispiel samt Zweck beschrieben.

Datei(en) BESCHREIBUNG
BPELSource\InvoiceAckMessage.xsd Schema für Rechnungseingangsbestätigung
BPELSource\InvoiceMessage.xsd Schema für Rechnung
BPELSource\OrderAckMessage.xsd Schema für Bestellungsbestätigung
BPELSource\OrderHeader.xsd Schema für Bestellungskopfzeile
BPELSource\OrderMessage.xsd Schema für Bestellungsnachricht
BPELSource\OrderShipping.wsdl WSDL-Datei, auf die BPEL verweist
BPELSource\OrderShippingProcess.bpel BPEL-Prozessablauf
BPELSource\PaymentConfirmationMessage.xsd Nachricht für Zahlungsbestätigung
BPELSource\PickupNotificationMessage.xsd Nachricht für Abholungsbenachrichtigung
BPELSource\ShipConfirmationMessage.xsd Nachricht für Versandbestätigung
BPELSource\ShippingHistory.xsd Dokument mit dem Versandverlauf
BPELSource\ShipRequestAckMessage.xsd Bestätigung der Versandanforderung
BPELSource\ShipRequestMessage.xsd Nachricht für Versandanforderung
BPELSource\ShipStatusMessage.xsd Lieferstatusnachricht
Solution\bindings\BPELBindings.xml Bindungsdatei mit Angabe von Portbindungen für die Orchestrierung BPELShipping
Solution\bindings\ShipperBindings.xml Bindungsdatei mit Angabe von Portbindungen für die Orchestrierung ShipperProcess
Solution\BPELShipping\BindAndStartOnly.bat Batchdatei für das Binden und Starten der Orchestrierung BPELImport nach der manuellen Erstellung und Bereitstellung
Solution\BPELShipping\cleanup.bat Batchdatei zum Entfernen des Prozesses BPELShipping
Solution\BPELShipping\Setup.bat Batchdatei zum Installieren und Starten des bereitgestellten Beispiels BPELShipping
Solution\BPELShipping\BPELShipping.sln Vorab erstelltes Beispiel BPELShipping
olution\BPELShipping\BPELShipping\Invoice2Ack.btm Zuordnung zwischen Rechnung und Rechnungseingangsbestätigung
Solution\BPELShipping\BPELShipping\Order2FinalConfirmation.btm Zuordnung für die Konvertierung von Bestellungsnachricht in abschließende Versandbestätigung
Solution\BPELShipping\BPELShipping\Order2OrderAck.btm Zuordnung für die Konvertierung von Bestellungsnachricht in Bestellungsbestätigung
Solution\BPELShipping\BPELShipping\Order2OrderNack.btm Zuordnung für die Konvertierung von Bestellungsnachricht in negative Bestellungsbestätigung
Solution\BPELShipping\BPELShipping\Order2ShipHistory.btm Zuordnung für die Konvertierung von Bestellungsnachricht in Dokument mit Versandverlauf
Solution\BPELShipping\BPELShipping\Order2ShipRequest.btm Zuordnung für die Konvertierung von Bestellungsnachricht in Versandanforderung für Bestellung
Solution\BPELShipping\BPELShipping\ShipRequest2Completed.btm Zuordnung für die Festlegung des Versandverlaufs auf abgeschlossen
Solution\ShipperProcess\setup.bat Batchdatei zum Erstellen, Bereitstellen, Binden und Starten der Orchestrierung ShipperProcess und ihrer Ports
Solution\ShipperProcess\cleanup.bat Batchdatei zum Beenden, Austragen und Aufheben der Bereitstellung der Orchestrierung ShipperProcess und ihrer Ports

Erstellen und Initialisieren dieses Beispiels

Im ersten Schritt wird die Anwendung ShipperProcess erstellt und initialisiert, durch die Wide World Importers simuliert wird.

So erstellen und initialisieren Sie die Anwendung ShipperProcess

  1. Starten Sie die Visual Studio-Eingabeaufforderung.

  2. Wechseln Sie an der Visual Studio-Eingabeaufforderung in den folgenden Ordner:

    <Samples Path>\Orchestrations\BPELImport\Solution\ShipperProcess

  3. Führen Sie die Datei "Setup.bat" aus, von der folgende Aktionen ausgeführt werden:

    • Das Projekt ShippingSchemas wird erstellt, das die in den Prozessen ShipperProcess und BPELShipping verwendeten Schemas enthält.

    • ShipperProcess wird erstellt.

    • Die Projekte ShippingSchemas und ShipperProcess werden bereitgestellt.

    • Die Sende- und Empfangsports für ShipperProcess werden erstellt und gebunden.

    • Die von ShipperProcess verwendeten Ports werden gestartet.

    • Die Orchestrierung ShipperProcess wird eingetragen und gestartet.

    Sie sollten sicherstellen, dass während des Erstellungs- und Initialisierungsprozesses keine Fehler gemeldet wurden, bevor Sie dieses Beispiel ausführen. Möglicherweise werden eine oder mehrere der folgenden Warnungen angezeigt. Diese können Sie ignorieren.

The 'http://contoso.org/samples/Fragments:XXXX' element is not declared. An error occurred at , (35, 16).  
<SAMPLE_LOCATION>\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): warning X4014: convoy processing will not occur -- check your protocol if you were expecting it  
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(667,22): convoy found at 'activate receive(Receive_ShipOrder.Operation_1, Request, initialize Correl)'  
<SAMPLE_LOCATION>\Samples\Orchestrations\BPELImport\Solution\ShipperProcess\ShipperProcess\ShipperProcess.odx(701,13): and 'receive(ReceiveInvoiceAck.Operation_1, Invoice_Ack, Correl)'  

Hinweis

Wenn Sie die unter „So importieren Sie aus BPEL und erstellen eine funktionsfähige Lösung“ beschriebenen Schritte ausgeführt haben, brauchen Sie die folgenden Schritte nicht auszuführen.

So erstellen und initialisieren Sie die Anwendung BPELShipping

  1. Warnung

    Bevor Sie diese Schritte ausführen, müssen Sie die unter „So erstellen und initialisieren Sie die Anwendung ShipperProcess“ beschriebenen Schritte ausführen.

    Wechseln Sie an der Visual Studio-Eingabeaufforderung in den folgenden Ordner:

    <Samples Path>\Orchestrations\BPELImport\Solution\BPELShipping

  2. Führen Sie die Datei "Setup.bat" aus, von der folgende Aktionen ausgeführt werden:

    • Das Projekt BPELShipping wird erstellt.

    • Das Projekt BPELShipping wird bereitgestellt.

    • Die Sende- und Empfangsports für den Prozess BPELShipping werden erstellt und gebunden.

    • Die vom Prozess BPELShipping verwendeten Ports werden gestartet.

    • Die Orchestrierung BPELShipping wird eingetragen und gestartet.

Ausführen dieses Beispiels

So führen Sie das Beispiel für den BPEL-Import aus

  1. Kopieren Sie die Order.xml-Datei aus dem <Ordner Samples Path>\Orchestrations\BPELImport\Solution in den < Ordner Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder.

  2. Die BPELShipping-Orchestrierung holt diese Datei als Bestellung vom Kundenauftragsverarbeitungssystem ab, durchläuft den Versandprozess und erzeugt jeweils eine Datei im < Ordner Samples Path>\Orchestrations\BPELImport\Solution\Ports\SendOrder und im < Ordner Samples Path>\Orchestrations\BPELImport\Solution\Ports\FinalConfirmation. Das Format des Namens dieser Dateien ist <MessageID>.xml, wobei <MessageID> die GUID ist, die generiert wird, um die Nachricht eindeutig zu identifizieren.

Deinstallieren dieses Beispiels

So deinstallieren Sie das Beispiel für den BPEL-Import

  1. Ändern Sie an einer Visual Studio-Eingabeaufforderung das Verzeichnis (cd) in <Samples Path>\Orchestrations\BPELImport\BPELShipping.

  2. Führen Sie die Datei Cleanup.bat aus.

  3. Navigieren Sie zu <Beispielpfad>\Orchestrierungen\BPELImport\ShipperProcess.

  4. Führen Sie die Datei Cleanup.bat aus.

Weitere Informationen

Orchestrierungen (Ordner für BizTalk Server-Beispiele)