Freigeben über


Exemplarische Vorgehensweise: Flatfile-Disassemblierung mit einem Header und einem Nachspann

Überblick

In dieser exemplarischen Vorgehensweise wird gezeigt, wie Sie vom Flatfile Schema-Assistenten erstellte Schemas dazu verwenden können, eine Flatfile-Disassemblierung einer Datei mit einem Header, einem Nachspann und einem sich wiederholenden Nachrichtentext auszuführen. Sie entwickeln in dieser exemplarischen Vorgehensweise einen Teil eines fiktiven Systems zur Fehlerüberwachnung, das die folgenden Anforderungen erfüllt:

  • Fehlermeldungen werden an verschiedenen physischen Standorten innerhalb des Unternehmens protokolliert und zwecks Verarbeitung in verschiedenen Back-End-Systemen an einen zentralen Ort gesendet.

  • Fehlermeldungen werden in ein Flatfile-Format geschrieben, das folgende Elemente enthält: einen Header, der den Speicherort angibt, einen Textteil, der eine oder mehrere Fehlermeldungen enthält, und einen Nachspann, der die Batchnummer angibt.

  • Nachrichten werden als ungültig betrachtet, wenn der Header, Textteil oder Nachspann fehlt.

    Nach Abschluss der exemplarischen Vorgehensweise verfügen Sie über eine BizTalk Server-Anwendung, die Flatfiles verarbeitet und für die Verarbeitung durch ein Back-End-System in XML-Dateien schreibt.

Voraussetzungen

Um dieses Beispiel nachvollziehen zu können, müssen Sie mit der Erstellung von BizTalk Server-Projekten, dem Signieren von Assemblys und der Verwendung der BizTalk Server-Verwaltungskonsole zum Anzeigen der Anwendungen und Ports vertraut sein. Sie sollten auch mit den Ideen vertraut sein, die unter Exemplarische Vorgehensweise: Bereitstellen einer einfachen BizTalk-Anwendung vorgestellt werden. Grundlegende Kenntnisse im Umgang mit dem FlatFile Schema-Assistenten sind ebenfalls von Nutzen, jedoch nicht unbedingt erforderlich.

Funktionsumfang des Beispiels

In diesem Beispiel werden eingehende Flatfile-Nachrichten mithilfe einer benutzerdefinierten Pipeline und der Flatfile-Disassemblerkomponente verarbeitet. Die Nachrichten werden mithilfe der Header-, Nachspann- und Textteilschemas analysiert und anschließend zur Back-End-Verarbeitung in einen Sendespeicherort geschrieben.

Beispiel

Folgen Sie zum Erstellen des Beispiels den in den nachstehenden Abschnitten erläuterten Schritten.

Erstellen eines neuen BizTalk-Projekts

Vor dem Erstellen einer Lösung müssen Sie ein BizTalk-Projekt erstellen. Stellen Sie sicher, dass dieses Projekt einen starken Namen hat, und weisen Sie dem Projekt einen Anwendungsnamen zu. Durch Zuweisung eines Anwendungsnamens wird verhindert, dass BizTalk Server die Lösung in der BizTalk-Standardanwendung bereitstellt.

  1. Verwenden Sie Visual Studio, um ein neues BizTalk-Projekt zu erstellen. Rufen Sie das Projekt FFDisassemblerWalkthrough auf.

  2. Erzeugen Sie eine Schlüsseldatei, und weisen Sie dem Projekt diese Datei zu. Weitere Informationen zu dieser Aufgabe finden Sie unter Signaturseite, Project Designer.

  3. Legen Sie in den Bereitstellungseigenschaften für das Projekt Anwendungsname auf "FlatFileExample" fest, und legen Sie Hostinstanzen neu starten auf fest True. Dieses Flag weist den Host an, alle zwischengespeicherten Instanzen der Assembly zu löschen.

Erstellen der Beispieldatendatei

Vor dem Generieren von Schemas müssen Sie eine Testdatei erstellen.

  1. Starten Sie Editor oder einen anderen Text-Editor.

  2. Erstellen Sie eine Beispieltestdatei. Die Datei besteht aus einem Header, der den Speicherort für den Fehlerbericht angibt, einem Nachspann mit einer Batch-ID für diesen Batch und einem Textteil mit einem oder mehreren Fehlerdatensätzen. Die Datei hat folgendes Format:

    Location
    ERRORid|type|priority|description|errorDateTime
    …additional error records
    BatchID
    

    Der Fehlerdatensatz ist mit "ERROR" markiert und mit dem Trennzeichen "|" getrennt (es werden keine Felder mit fester Breite verwendet). Die Datenelemente des ERROR-Datensatzes werden in der nachstehenden Tabelle beschrieben.

    Element Datentyp BESCHREIBUNG
    ID integer ID für diesen Fehler.
    Typ integer Fehlertyp.
    Priority Zeichenfolge Prioritätsindikator: Niedrig, Mittel oder Hoch.
    BESCHREIBUNG Zeichenfolge Beschreibung des Fehlers
    ErrorDateTime Datetime Datum und Uhrzeit, an dem bzw. zu dem der Fehler auftrat.

    Die Datei kann einen oder mehrere ERROR-Datensätze enthalten.

    --ODER--

    Kopieren Sie die folgenden Beispieldaten in die neue Datei. Die letzte Zeile enthält einen nachgestellten Zeilenvorschub:

    East Coast Facility
    ERROR102|0|High|Sprocket query fails.|1999-05-31T13:20:00.000-05:00
    ERROR16502|2|Low|Time threshold exceeded.|1999-05-31T13:20:00.000-05:00
    8675309
    
    
  3. Speichern Sie die neue Beispieldatei im Projektverzeichnis. Verwenden Sie einen aussagekräftigen Namen wie „ErrorFile.txt“, damit die Datei leicht gefunden werden kann.

Erstellen und Testen der Header-, Nachspann- und Textschemas

Der nächste Schritt nach dem Erstellen der Beispieldatendatei ist das Erstellen der Header-, Nachspann- und Textschemas. Diese Schemas werden mit der Pipelinekomponente des Flatfile-Disassemblers zur Verarbeitung empfangener Nachrichten verwendet.

Verwenden des Flatfileschema-Assistenten zum Erstellen des Headerschemas
  1. Fügen Sie dem Projekt ein neues Schema hinzu. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf FFDisassemblerWalkthrough, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Schemadateien , und wählen Sie Flatfileschema-Assistent aus. Nennen Sie das neue Schema "Header.xsd", und klicken Sie dann auf Hinzufügen.

  3. Klicken Sie auf der Seite Willkommen beim BizTalk-Flatfileschema-Assistenten auf Weiter.

  4. Klicken Sie auf der Seite Flatfileschemainformationen auf Durchsuchen , und suchen Sie die zuvor erstellte Beispieldatendatei. Ändern Sie den Datensatznamen in "Header", überprüfen Sie die Codepage, und klicken Sie dann auf Weiter.

    Hinweis

    Wenn Sie die Beispieldatei im Unicode-Format gespeichert haben, hat die Codepage das Format Little-Endian-UTF16 (1200). Dies wirkt sich nicht nachteilig auf das Beispiel aus.

  5. Wählen Sie nun die Dokumentdaten aus. Markieren Sie auf der Seite Dokumentdaten auswählen die erste Datenzeile, einschließlich der Zeilenzeichen {CR} und {LF}, wie dargestellt:

    headerschema ffwiz_header_select_document_dataFür

    Klicken Sie auf Weiter.

  6. Klicken Sie auf der Seite Datensatzformat auswählen auf Weiter , um die Standardeinstellung zu übernehmen. Sie können die Standardeinstellung Nach Trennzeichensymbol übernehmen, da in der Datendatei keine relativen Positionen verwendet werden.

  7. Klicken Sie auf der Seite Datensatz mit Trennzeichen auf Weiter.

  8. Im nächsten Schritt geben Sie untergeordnete Elemente an. Der Header enthält ein Element namens "Location":

    Standortknoten, der für header-ffwiz_header_child_elements definiert ist

    Klicken Sie auf zum Fortfahren auf Weiter.

  9. Überprüfen Sie auf der Seite Schemaansicht das Schema.

    Schemaansicht mit abgeschlossenen

    Wenn Sie zufrieden sind, klicken Sie auf Fertig stellen , um den Assistenten abzuschließen.

  10. Klicken Sie im Bereich Headerschema auf den Knoten Schema>.< Ändern Sie im Bereich Eigenschaften das Element FormDefault in Qualified. Dadurch wird angegeben, dass lokal deklarierte Elemente durch den Zielnamespace in einem Instanzdokument qualifiziert sein müssen.

Erstellen des Trailerschemas mithilfe des Flatfileschema-Assistenten
  1. Fügen Sie dem Projekt ein neues Schema hinzu. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf FFDisassemblerWalkthrough, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Schemadateien , und wählen Sie Flatfileschema-Assistent aus. Nennen Sie das neue Schema "Trailer.xsd", und klicken Sie dann auf Hinzufügen.

  3. Klicken Sie auf der Seite Willkommen beim BizTalk-Flatfileschema-Assistenten auf Weiter.

  4. Klicken Sie auf der Seite Flatfileschemainformationen auf Durchsuchen , und suchen Sie die zuvor erstellte Beispieldatendatei. Ändern Sie den Datensatznamen in "Trailer", überprüfen Sie die Codepage, und klicken Sie dann auf Weiter.

    Hinweis

    Wenn Sie die Beispieldatei im Unicode-Format gespeichert haben, hat die Codepage das Format Little-Endian-UTF16 (1200). Dies wirkt sich nicht nachteilig auf das Beispiel aus.

  5. Wählen Sie nun die Dokumentdaten aus. Markieren Sie auf der Seite Dokumentdaten auswählen die letzte Datenzeile, einschließlich der Zeilenumbruchzeichen {CR} und {LF} wie gezeigt:

    Ausgewählte Daten für das Ffwiz_trailer_select_document_data des Trailerschemas

    Klicken Sie auf Weiter.

  6. Klicken Sie auf der Seite Datensatzformat auswählen auf Weiter , um die Standardeinstellung zu übernehmen. Sie können die Standardeinstellung Nach Trennzeichensymbol übernehmen, da in der Datendatei keine relativen Positionen verwendet werden.

  7. Klicken Sie auf der Seite Durch Trennzeichen getrennte Datensätze auf Weiter.

  8. Im nächsten Schritt geben Sie untergeordnete Elemente an. Der Header enthält ein Element namens "BatchID":

    Standortknoten, der für trailer-ffwiz_trailer_child_elements definiert ist

    Klicken Sie auf zum Fortfahren auf Weiter.

  9. Überprüfen Sie auf der Seite Schemaansicht das Schema.

    Schemaansicht mit abgeschlossenen

    Wenn Sie zufrieden sind, klicken Sie auf Fertig stellen , um den Assistenten abzuschließen.

  10. Klicken Sie im Bereich Trailer-Schema auf den Knoten Schema>.< Ändern Sie im Bereich Eigenschaften elementFormDefault inQualified. Dadurch wird angegeben, dass lokal deklarierte Elemente durch den Zielnamespace in einem Instanzdokument qualifiziert sein müssen.

Verwenden des Flatfileschema-Assistenten zum Erstellen des Textschemas
  1. Fügen Sie dem Projekt ein neues Schema hinzu. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf FFDisassemblerWalkthrough, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Klicken Sie im Dialogfeld Neues Element hinzufügen auf Schemadateien , und wählen Sie Flatfileschema-Assistent aus. Geben Sie dem neuen Schema den Namen "Body.xsd", und klicken Sie dann auf Hinzufügen.

  3. Klicken Sie auf der Seite Willkommen beim BizTalk-Flatfileschema-Assistenten auf Weiter.

  4. Klicken Sie auf der Seite Flatfileschemainformationen auf Durchsuchen , und suchen Sie die zuvor erstellte Beispieldatendatei. Ändern Sie den Datensatznamen in "Text", überprüfen Sie die Codepage, und klicken Sie dann auf Weiter.

    Hinweis

    Wenn Sie die Beispieldatei im Unicode-Format gespeichert haben, hat die Codepage das Format Little-Endian-UTF16 (1200). Dies wirkt sich nicht nachteilig auf das Beispiel aus.

  5. Wählen Sie nun die Dokumentdaten aus. Markieren Sie auf der Seite Dokumentdaten auswählen die Zeilen 2 und 3 der Daten, einschließlich der Zeilenumbruchzeichen {CR} und {LF}, wie gezeigt:

    Ausgewählte Daten für

    Klicken Sie auf Weiter.

  6. Klicken Sie auf der Seite Datensatzformat auswählen auf Weiter , um die Standardeinstellung zu übernehmen. Sie können die Standardeinstellung Nach Trennzeichensymbol übernehmen, da in der Datendatei keine relativen Positionen verwendet werden.

  7. Wählen Sie auf der Seite Datensatz durch Trennzeichen die Option Weiter aus.

  8. Im nächsten Schritt definieren Sie die untergeordneten Elemente. Ändern Sie Body_Child1 auf Fehler, und legen Sie den Elementtyp auf Wiederholten Datensatz fest. Legen Sie den Body_Child2 Elementeintragstyp auf Ignorieren fest.

  9. Klicken Sie auf der Seite Schemaansicht auf Weiter , um die untergeordneten Elemente des Fehlerdatensatzes zu definieren.

  10. Klicken Sie auf der Seite Dokumentdaten auswählen auf Weiter. Der Assistent wählt die Daten zur Definition des Datensatzes korrekt aus.

  11. Klicken Sie auf der Seite Datensatzformat auswählen auf Weiter. Die Daten werden mit Trennzeichensymbolen formatiert.

  12. Wählen Sie auf der Seite Durch Trennzeichen getrennte Datensätze die Option | untergeordnete Trennzeichen aus. Aktivieren Sie als Nächstes das Kontrollkästchen Datensatz hat einen Tagbezeichner , und geben Sie ERROR als Tagwert ein.

    Konfigurieren eines durch Trennzeichen getrennten Datensatzes mit Tagbezeichner

    Klicken Sie auf Weiter.

  13. Definieren Sie nun die untergeordneten Elemente des ERROR-Datensatzes.

    Fehlerdatensatz definiert mit fünf Elementen

    Klicken Sie auf Weiter.

  14. Überprüfen Sie auf der Seite Schemaansicht das Schema.

    Schemaansicht mit abgeschlossenen

    Wenn Sie Fehler gemacht haben, klicken Sie auf Zurück , und nehmen Sie die erforderlichen Korrekturen vor. Wenn Sie zufrieden sind, klicken Sie auf Fertig stellen , um den Assistenten abzuschließen.

  15. Klicken Sie im Bereich Schemakörper auf den Knoten Schema>.< Ändern Sie im Bereich Eigenschaften element FormDefault in Qualified. Dadurch wird angegeben, dass lokal deklarierte Elemente durch den Zielnamespace in einem Instanzdokument qualifiziert sein müssen.

  16. Klicken Sie im Bereich Textschema auf den Knoten Fehler>.< Ändern Sie im Bereich Eigenschaften die Option Max. Eintritt in1. Dadurch wird der Flatfile-Disassembler veranlasst, alle Fehler in eine eigene Nachricht aufzuteilen.

Testen der Schemas mit FFDasm
  1. Öffnen Sie eine Eingabeaufforderung, und wechseln Sie aus dem aktuellen Verzeichnis in das gewünschte Projektverzeichnis:

  2. Führen Sie an der Eingabeaufforderung FFDasm.exe aus, wie im Folgenden gezeigt.

    <Samples Path>\SDK\Utilities\PipelineTools\FFDasm ErrorFile.txt  -hs header.xsd -bs body.xsd -ts Trailer.xsd
    

    Informationen zum Speicherort dieses und anderer Pipelinetools finden Sie unter Pipelinetools.

  3. Bei Ausführung von FFDasm.exe sollten zwei Dateien namens "{GUID}.xml" ausgegeben werden, eine für jeden ERROR-Datensatz in der Testdatei. Der ERROR-Datensatz mit hoher Priorität sieht folgendermaßen aus:

    <Body xmlns="http://FFDisassemblerWalkthrough.Body">
      <Error>
        <ID>102</ID>
        <Type>0</Type>
        <Priority>High</Priority>
        <Description>Sprocket query fails.</Description>
        <DateTime>1999-05-31T13:20:00.000-05:00</DateTime>
      </Error>
    </Body>
    

Erstellen einer benutzerdefinierten Empfangspipeline

Nach der Definition der Flatfile-Schemas müssen Sie nun eine benutzerdefinierte Pipeline erstellen, die die Flatfile-Disassemblerkomponente verwendet. Die Flatfile-Disassemblerkomponente kann dann so konfiguriert werden, dass sie die Header-, Text- und Nachspannschemas zum Aufteilen von Nachrichten verwendet.

  1. Fügen Sie dem Projekt eine neue Empfangspipeline hinzu. Klicken Sie Projektmappen-Explorer mit der rechten Maustaste auf das Projekt FFDisassemblerWalkthrough, zeigen Sie auf Hinzufügen, und klicken Sie dann auf Neues Element.

  2. Zeigen Sie im Dialogfeld Neues Element hinzufügen auf Pipelinedateien , und klicken Sie dann auf Empfangspipeline. Nennen Sie die neue Pipeline "FFReceivePipeline", und klicken Sie dann auf Hinzufügen.

  3. Konfigurieren Sie die neue Pipeline, indem Sie die Flatfile-Disassemblerkomponente aus dem Toolboxbereich in die Disassemblierungsstufe ziehen.

  4. Legen Sie im Bereich Eigenschaften das Dokumentschema auf FFDisassemblerWalkthrough.Body, das Headerschema auf FFDisassemblerWalkthrough.Header und das Trailer-Schema auf FFDisassemblerWalkthrough.Trailer fest.

Bereitstellen der Anwendung und Konfigurieren der Sende- und Empfangsports

Nach dem Erstellen der Schemas und benutzerdefinierten Empfangspipeline müssen Sie das Projekt nun kompilieren und bereitstellen. Im Anschluss an die Bereitstellung können Sie mithilfe der BizTalk Server-Verwaltungskonsole die Sende- und Empfangsports konfigurieren.

Bereitstellen
  1. Stellen Sie in Visual Studio die Projektmappe bereit, indem Sie mit der rechten Maustaste auf das Projekt klicken und dann auf Bereitstellen klicken.

  2. Erweitern Sie mithilfe der BizTalk Server Verwaltungskonsole die Gruppe Anwendungen, um sicherzustellen, dass FlatFileExample als benutzerdefinierte Anwendung vorhanden ist.

Konfigurieren des Empfangsports
  1. Verwenden Sie Windows Explorer, um ein Verzeichnis mit dem Namen "Receive" unter dem Projektverzeichnis FFDisassemblerWalkthrough zu erstellen.

  2. Erweitern Sie in der BizTalk Server Verwaltungskonsole die FlatFileExample-Anwendung, klicken Sie mit der rechten Maustaste auf Empfangsports, zeigen Sie auf Neu, und klicken Sie dann auf Unidirektionale Empfangsport.

  3. Legen Sie im Dialogfeld Eigenschaften des Empfangsports den Namen des Ports auf "ReceiveError" fest.

  4. Klicken Sie auf Empfangsspeicherorte und dann auf Neu , um einen Empfangsspeicherort hinzuzufügen. Weisen Sie dem neuen Empfangsspeicherort den Namen "ReceiveErrorLocation" zu. Legen Sie die Empfangspipeline auf FFReceivePipeline fest. Wählen Sie für Transporttypdie Option DATEI aus, und klicken Sie dann auf Konfigurieren. Wählen Sie das von Ihnen erstellte Empfangsverzeichnis aus, und legen Sie dann die Dateimaske auf *.txt fest.

  5. Klicken Sie auf OK. Mit diesem Schritt sollte die Konfiguration Ihres Empfangsports abgeschlossen sein. Klicken Sie zum Schließen auf OK.

Konfigurieren des Sendeports
  1. Verwenden Sie Windows Explorer, um ein Verzeichnis mit dem Namen "Send" unter dem Projektverzeichnis FFDisassemblerWalkthrough zu erstellen.

  2. Erweitern Sie in der BizTalk Server Verwaltungskonsole die Anwendung FlatFileExample, klicken Sie mit der rechten Maustaste auf Ports senden, zeigen Sie auf Neu, und klicken Sie dann auf Static One-Way Send Port....

  3. Legen Sie im Dialogfeld Porteigenschaften senden den Namen des Ports auf "Senden" fest.

  4. Wählen Sie unter Transporttyp die Option DATEI aus, und klicken Sie dann auf Konfigurieren. Legen Sie als Zielordner das Verzeichnis Send fest, das Sie zuvor erstellt haben.

  5. Konfigurieren Sie nun die Filter. Klicken Sie auf Filter , und fügen Sie einen Ausdruck hinzu:

    • BTS. MessageType == http://FFDisassemblerWalkthrough.Body#Body
  6. Klicken Sie auf OK , um die Konfiguration des Sendeports abzuschließen. Mit diesem Schritt sollte die Konfiguration Ihres Sendeports abgeschlossen sein.

Ausführen des Beispiels

Nun können Sie das Beispiel ausführen. Nachdem Sie die BizTalk Server Verwaltungskonsole zum Starten der Anwendung verwendet haben, kopieren Sie die Testdateien an den Empfangsspeicherort, und beobachten Sie, was im Sendespeicherort erzeugt wird.

  1. Klicken Sie in der BizTalk Server Verwaltungskonsole mit der rechten Maustaste auf die Anwendung FlatFileExample, und klicken Sie dann auf Start. Dadurch werden die Sende- und Empfangsports aufgelistet und gestartet.

  2. Legen Sie die Kopie der Beispieldatei „Errorfile.txt“ im Empfangsverzeichnis ab. Es werden zwei Ausgabedateien in das Sendeverzeichnis (Send) geschrieben.