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:
Empfang einer Bestellung vom Kundenbestellungssystem von Northwind Traders
Senden einer Versandanforderung an Wide World Importers und Anfordern einer Bestätigung
Empfang einer Bestätigung der Versandanforderung von Wide World Importers
Empfang einer Abholungsbenachrichtigung von Wide World Importers
Empfang von Lieferstatusnachrichten bis zum Eingang der Lieferung beim Kunden
Empfang einer Rechnung von Wide World Importers
Senden einer Rechnungseingangsbestätigung an Wide World Importers
Empfang einer Zahlungsbestätigung von Wide World Importers
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
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.
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.
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.
Wählen Sie einen Speicherort für das Projekt aus, und klicken Sie dann auf OK , um den BPEL-Import-Assistenten zu starten.
Klicken Sie auf der Seite Willkommenauf Weiter.
Klicken Sie auf der Seite BPEL-, WSDL- und XSD-Dateien auswählen auf Durchsuchen.
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.
Klicken Sie auf der Seite WSDL-Dateien für aufgerufene WebServices auswählen auf Fertig stellen.
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.
Ändern Sie an der Visual Studio-Eingabeaufforderung das Verzeichnis (cd) in den Projektspeicherort.
Führen Sie den folgenden Befehl aus:
sn –k BPELShipping.snk
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt BPELShipping, und klicken Sie dann auf Eigenschaften.
Wählen Sie unter Allgemeine Eigenschaften\Assembly die in Schritt 11 erstellte Assemblyschlüsseldatei BPELShipping.snk aus, und klicken Sie dann auf OK.
Markieren Sie im Projektmappen-Explorer alle XSD-Dateien, und löschen Sie sie.
Wählen Sie in Projektmappen-Explorer Verweis hinzufügen aus, und klicken Sie auf der Registerkarte Projekte auf Durchsuchen.
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.
Doppelklicken Sie Projektmappen-Explorer auf OrderShippingProcess.bpel.odx.
Wählen Sie im Menü Ansichtdie Option Andere Fenster/Orchestrierungsansicht aus.
Klicken Sie im Fenster Orchestrierungsansicht mit der rechten Maustaste auf Orchestrierungseigenschaften , und klicken Sie dann auf Eigenschaftenfenster.
Legen Sie im Eigenschaftenfenster die Eigenschaft Orchestration Exportable auf False fest.
Doppelklicken Sie in Projektmappen-Explorer auf OrderShipping.wsdl.odx.
Erweitern Sie im Fenster Orchestrierungsansicht den Eintrag Typen/Mehrteilige Nachrichtentypen.
Erweitern Sie InvoiceAckMessageType , und klicken Sie dann auf InvoiceAckMessagePart.
Erweitern Sie im Eigenschaftenfenster das Feld Typ, und wählen Sie Schemas/Auswählen aus Assembly, auf die verwiesen wird.
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.
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 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.
Wählen Sie alle BTM-Dateien aus dem Speicherort <Samples Path>\Orchestrations\BPELImport\Solution\BPELShipping\BPELShipping aus.
Suchen Sie im Fenster Orchestrierungsansicht das Nachrichtenzuweisungs-Shape MessageAssignment_1 in ConstructMessage1, und löschen Sie es.
Ziehen Sie aus der Toolbox ein Transform-Shape in das Shape ConstructMessage1.
Klicken Sie im Eigenschaftenfenster auf die Schaltfläche mit den Auslassungspunkten (...), und öffnen Sie das Dialogfeld Konfiguration transformieren.
Wählen Sie Vorhandene Karte aus.
Wählen Sie den vollqualifizierten Kartennamen als BPELShipping.Order2ShipRequest aus.
Wählen Sie die Quelle als Reihenfolge aus. OrderMessagePart.
Wählen Sie das Ziel als ship_request aus. ShipRequestMessagePart , und klicken Sie auf OK.
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 Speichern Sie die Orchestrierung.
Doppelklicken Sie im Decision_1Shape entscheiden auf Rule_1.
Ersetzen Sie im BizTalk-Ausdrucks-Editor
ship_request_ack(BPELShipping.Ship_Acknowledged) == true
durch
ship_request_ack(ShippingSchemas.Ship_Acknowledged) == true
Doppelklicken Sie auf die Schleifenform mit dem Namen Loop_1.
Ersetzen Sie im BizTalk-Ausdrucks-Editor
ship_history(BPELShipping.Ship_Completed) == true
durch
ship_history(ShippingSchemas.Ship_Completed) == true
Doppelklicken Sie im Decision_2Shape entscheiden auf Rule_2.
Ersetzen Sie im BizTalk-Ausdrucks-Editor
ship_status(BPELShipping.ShipStatus) == "DONE"
durch
ship_status(ShippingSchemas.ShipStatus) == "DONE"
Erweitern Sie in der Orchestrierungsansicht Typen/Korrelationstypen , und klicken Sie auf OrderCorrelationSet_Type\.
Klicken Sie im Eigenschaftenfenster auf die Schaltfläche mit den Auslassungspunkten (...) unter Korrelationseigenschaften.
Klicken Sie im Bereich Zu korrelierende Eigenschaften auf BPELShipping.OrderID, und klicken Sie dann auf Entfernen.
Erweitern Sie im Bereich Verfügbare Eigenschaften den Eintrag Versandschemas, wählen Sie Auftrags-ID aus, und klicken Sie dann auf Hinzufügen.
Klicken Sie auf OK.
Speichern Sie alle Dateien, und erstellen Sie die Projektmappe.
Bereitstellen der Projektmappe
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
Starten Sie die Visual Studio-Eingabeaufforderung.
Wechseln Sie an der Visual Studio-Eingabeaufforderung in den folgenden Ordner:
<Samples Path>\Orchestrations\BPELImport\Solution\ShipperProcess
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
-
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
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
Kopieren Sie die Order.xml-Datei aus dem <Ordner Samples Path>\Orchestrations\BPELImport\Solution in den < Ordner Samples Path>\Orchestrations\BPELImport\Solution\Ports\ReceiveOrder.
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
Ändern Sie an einer Visual Studio-Eingabeaufforderung das Verzeichnis (cd) in <Samples Path>\Orchestrations\BPELImport\BPELShipping.
Führen Sie die Datei Cleanup.bat aus.
Navigieren Sie zu <Beispielpfad>\Orchestrierungen\BPELImport\ShipperProcess.
Führen Sie die Datei Cleanup.bat aus.