Freigeben über


EnvelopeProcessing (BizTalk Server-Beispiel)

Im EnvelopeProcessing-Beispiel wird veranschaulicht, wie Nachrichten und Nachrichtenumschläge in BizTalk Server Pipelines verarbeitet werden. Außerdem wird die Verarbeitung von Flatfile-Nachrichten in XML-Nachrichten demonstriert.

Ziel des Beispiels

In diesem Beispiel wird der Ordner EnvInput als Empfangsspeicherort konfiguriert. Wenn Sie eine Datei, z. B. die Beispieldatei EnvelopeProcessing_in.txt, in diesem Ordner ablegen, verarbeitet BizTalk Server die Nachrichten in dieser Datei mit den folgenden Schritten:

  1. BizTalk Server ruft die Nachrichtendatei aus dem Empfangsspeicherortordner EnvInput ab.

  2. In der Empfangspipeline entfernt der Flatfile-Disassembler die Header und den Nachspann aus den Flatfile-Nachrichten und analysiert diese zu einzelnen Nachrichten.

  3. In der MessageBox-Datenbank werden die Nachrichten an den Sendeport mithilfe von Abonnementfiltern weitergeleitet.

  4. In der Sendepipeline des Sendeports schließt die XML-Assemblerpipelinekomponente die Nachrichten in XML-Umschläge ein und speichert sie dann im Sendeadapterordner EnvOutput.

Wie dieses Beispiel entworfen wird und warum

Beim Entwurf dieses Beispiels mussten zwei Grundanforderungen berücksichtigt werden:

  • Empfangen und Verarbeiten einer Flatfile-Nachricht mit mindestens einer Bestellung.

  • Senden einer XML-Nachricht mit einer Bestellung und Absenderinformationen an ein Verzeichnis zur Abholung durch ein Back-End-Verarbeitungssystem.

    Damit diese Anforderungen erfüllt sind, wurde eine Kombination aus Flatfile-/XML-Schemas und benutzerdefinierten Pipelines verwendet. Diese und weitere Entwurfselemente sind in der folgenden Tabelle zusammengefasst.

Entwurfselement Gründe für die Auswahl
Benutzerdefinierte Empfangspipeline – Verwendet den Flatfile-Disassembler und Flatfileschemas, um eingehende Bestellnachrichten zu übersetzen.
Flatfile-Schemas für Nachrichtenheader, -text und -nachspann – Definiert alle Datensatz- und Feldmerkmale (einschließlich der Struktur) als XML-Schemas und stellt einen Mechanismus zum Definieren aller Flatfileeigenschaften bereit, die erforderlich sind, um eine Flatfile-instance Nachricht in eine entsprechende XML-instance-Nachricht zu übersetzen (oder umgekehrt).
– Header-, Body- und Trailerschemas werden verwendet, um den Textkörper zur Verarbeitung in einzelne Blöcke aufzuteilen.
Umschlagschema – Wird verwendet, um einzelne Bestellungen mit Informationen aus der Kopfzeile zu umschließen.
Abonnementfilter – Der Abonnementfilter führt das tatsächliche Routing durch, indem Nachrichten erfasst werden, die ein oder mehrere Kriterien basierend auf Eigenschaftenfeldern erfüllen.
Benutzerdefinierte Sendepipeline – Verwendet den XML-Assembler und eine Kombination aus Umschlag- und Textschemas, um die instance Nachrichten in das XML-Format zu übersetzen.

Folgendes gilt für den Entwurf dieses Beispiels.

  • Das Flatfile-Schema (PO.xsd) enthält erweiterte Anmerkungen, die die Struktur der Flatfile-Bestellungsdatei beschreiben. Diese Dateien können manuell erstellt werden, einige von ihnen können jedoch auch mit dem Flatfile Schema-Assistenten generiert werden.

  • Das Flatfile-Schema der Bestellung (PO.xsd) verwendet für elementFormDefault den Wert Unqualified. Dies führt zu richtigen Ergebnissen, jedoch mit zusätzlichen und unerwarteten XML-Namespacequalifikationen (xmlns). Verwenden Sie für elementFormDefault den Wert Qualified, um dieses Problem zu umgehen.

  • Header- und Nachspann-Flatfile-Schemas werden zum Trennen der vorangestellten und nachfolgenden Daten von der Nachricht verwendet. Die Header-, Dokument - und Nachspannschemaeigenschaften des Flatfile-Disassemblers wurden auf das Header-, Bestellungs- und Nachspannschema festgelegt.

  • Das XML-Umschlagschema kombiniert Elemente auf dem Header und der Bestellung, um eine XML-Nachricht zu generieren. Das Headerschema erhöht das Feld Source in das Feld SourceParty im BTS.bts_system_properties-Namespace . Das Umschlagschema erhöht diesen Wert, sodass er in die ausgehende Nachricht herabgestuft wird.

Speicherort dieses Beispiels

<Samples Path>\Pipelines\AssemblerDisassembler\EnvelopeProcessing\

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

Datei(en) BESCHREIBUNG
Cleanup.bat Wird verwendet, um die Bereitstellung von Assemblys aufzuheben und die Assemblys aus dem globalen Assemblycache zu entfernen. Entfernt Sende- und Empfangsports. Entfernt nach Bedarf virtuelle Verzeichnisse von Microsoft Internetinformationsdienste (IIS).
EnvelopeProcessing.btproj, EnvelopeProcessing.sln Projekt- und Projektmappendateien für dieses Beispiel.
EnvelopeProcessing_in.txt Beispieleingabedatei
Header.xsd, PO.xsd, Trailer.xsd Schema für den Flatfile-Header, -Text und -Nachspann.
XmlEnvelope.xsd Schema für den ausgehenden XML-Umschlag.
EnvReceivePipeline.btp, EnvSendPipeline.btp BizTalk Server Pipelinedateien mit den Pipelinekomponenten flatfile disassembler bzw. XML Assembler empfangen und senden.
EnvelopeProcessingBinding.xml Wird für das automatisierte Setup verwendet, z. B. Portbindung.
Setup.bat Dient zum Erstellen und Initialisieren dieses Beispiels.

Verwenden dieses Beispiels

Verwenden Sie dieses Beispiel als Grundlage für eigene Flatfile-Verarbeitungslösungen. Sie können viele der in diesem Beispiel verwendeten Entwurfselemente erweitern und an Ihre Anforderungen anpassen. Einige Beispiele:

  • Erweitern Sie das Beispiel so, dass eine Flatfile-Version jeder Bestellung zusätzlich zur XML-Version geschrieben wird. Zu diesem Zweck können Sie eine neue benutzerdefinierte Sendepipeline erstellen und den Flatfile-Assembler verwenden. Geben Sie für den Flatfile-Assembler die Flatfile-Header-, -Bestellungs- und -Nachspannschemas an. Bei der Verwendung in einem Sendeport werden einzelne Bestellungen mit Header-/Nachspanninformationen generiert.

  • Erweitern Sie den Umschlag um weitere Informationen aus der Bestellung. Wenn Sie weitere Informationen in die ausgehende Nachricht schreiben möchten, stufen Sie den Namen „ship to“ oder andere Felder mithilfe von schneller Heraufstufung herauf, fügen Sie dem Umschlag Felder hinzu, und stufen Sie die Umschlagfelder dann auf das gleiche Feld herauf. Wenn die Nachricht durch den Assembler verarbeitet wird, werden heraufgestufte Eigenschaften herabgestuft und in die ausgehende Nachricht kopiert.

Erstellen und Initialisieren dieses Beispiels

So erstellen und initialisieren Sie das EnvelopeProcessing-Beispiel

  1. Navigieren Sie in einem Befehlsfenster zum folgenden Ordner:

    <Samples Path>\Pipelines\AssemblerDisassembler\EnvelopeProcessing

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

    • Erstellen des Eingabe- (EnvInput) und des Ausgabeordners (EnvOutput) für dieses Beispiel im folgenden Ordner:

      <Samples Path>\Pipelines\AssemblerDisassembler\EnvelopeProcessing\

    • Kompilieren und Bereitstellen des Visual Studio-Projekts für dieses Beispiel.

    • Erstellen und Binden des BizTalk Server-Empfangsspeicherorts sowie der Sende- und Empfangsports.

      In diesem Beispiel werden beim Erstellen und Binden von Ports folgende Warnungen angezeigt:

      Warning: Receive handler not specified for receive location "EnvelopeProcessing_RL"; updating with first receive handler with matching transport type.  
      Warning: Host not specified for orchestration "EnvelopeProcessing"; updating with first available host.  
      

      Sie können diese Warnungen gefahrlos ignorieren. (Um möglichen Namensunterschieden in den Benutzerinstallationen Rechnung zu tragen, wurden der Hostname und der Empfangshandler in der Bindungsdatei ausgelassen.)

    • Aktiviert den Empfangsspeicherort und startet den Sendeport.

Hinweis

Sie sollten sicherstellen, dass von BizTalk Server während des Erstellungs- und Initialisierungsprozesses keine Fehler gemeldet wurden, bevor Sie dieses Beispiel ausführen.

Hinweis

Wenn Sie das Projekt in diesem Beispiel öffnen und erstellen möchten, ohne die Datei Setup.bat auszuführen, müssen Sie zunächst mit dem entsprechenden .NET Framework-Hilfsprogramm (sn.exe) ein Schlüsselpaar für starke Namen erstellen. Verwenden Sie dieses Schlüsselpaar zum Signieren der sich ergebenden Assembly.

Hinweis

Wenn Sie von "Setup.bat" vorgenommene Änderungen rückgängig machen möchten, führen Sie "Cleanup.bat" aus. "Cleanup.bat" müssen Sie ausführen, bevor "Setup.bat" ein zweites Mal ausgeführt wird.

Ausführen dieses Beispiels

So führen Sie das EnvelopeProcessing-Beispiel aus

  1. Speichern Sie eine Kopie der Datei EnvelopeProcessing_in.xml im Ordner EnvInput.

  2. Untersuchen Sie die im Ordner EnvOutput erstellten drei XML-Dateien. Der Namen dieser XML-Dateien basieren auf den GUIDs der Nachrichten-IDs. Sie enthalten die Nachrichten, die aus der Eingabedatei extrahiert und in Umschläge eingeschlossen wurden.

In diesem Beispiel verwendete Klassen oder Methoden

Die Konfigurationsskripts Setup.bat und Cleanup.bat stützen sich auf die folgenden administrativen Skripts der Windows-Verwaltungsinstrumentation (Windows Management Instrumentation, WMI):

  • Start Send Port\StartSendPort.vbs

  • Enable Receive Location\EnableRecLoc

  • Remove Send Port\RemoveSendPort

    Die Batchdateien für Setup und Cleanup verwenden BTSTask wie folgt:

  • BTSTask ImportBindings, um die Bindungsdatei anzuwenden und die Anwendung, Ports und Bindungen zu erstellen

  • BTSTask RemoveApp zum Entfernen der FlatFileReceiveApplication

Weitere Informationen

Pipelines-AssemblerDisassembler (Ordner für BizTalk Server-Beispiele)