Exemplarische Vorgehensweise: Verwenden von XML-Umschlägen (Standard)
In diesem Beispiel ist eine einfache Disassemblierung eines XML-Umschlags durch Implementieren eines Teils einer fiktiven Fehlerüberwachung dargestellt. Das Beispiel entspricht den folgenden Anforderungen:
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 im XML-Format geschrieben.
Fehlermeldungen können einzeln ohne Umschlag oder als Batch in einem Umschlag gesendet werden.
Voraussetzungen
Für dieses Beispiel müssen Sie mit dem Erstellen von BizTalk Server-Projekten, dem Signieren von Assemblys und dem Anzeigen von Anwendungen und Ports über die BizTalk Server-Verwaltungskonsole vertraut sein. Sie sollten auch mit den Ideen vertraut sein, die unter Exemplarische Vorgehensweise: Bereitstellen einer einfachen BizTalk-Anwendung vorgestellt werden.
Funktionsumfang des Beispiels
In diesem Beispiel werden eingehende Nachrichten mit entweder einer einzelnen Fehlermeldung oder einem Batch von Fehlermeldungen verarbeitet, indem ein Umschlagschema definiert und der XmlDisassembler verwendet wird.
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.
So erstellen und konfigurieren Sie ein neues BizTalk-Projekt
Verwenden Sie Visual Studio, um ein neues BizTalk-Projekt zu erstellen. Rufen Sie das Projekt BasicXMLEnvelope auf.
Erzeugen Sie eine Schlüsseldatei, und weisen Sie dem Projekt diese Datei zu. Weitere Informationen zu dieser Aufgabe finden Sie unter Konfigurieren einer Assemblyschlüsseldatei mit starkem Namen.
Weisen Sie in den Konfigurationseigenschaften für die Bereitstellung für das Projekt einen Anwendungsnamen zu, und legen Sie Hostinstanzen neu starten auf fest
True
. Dieses Flag weist den Host an, alle zwischengespeicherten Instanzen der Assembly zu löschen.
Erstellen des Fehlerschemas
In diesem Arbeitsschritt erstellen Sie das Fehlerschema. Das Fehlerschema definiert die Hauptnachricht für das System.
So erstellen Sie das Fehlerschema
Fügen Sie dem Projekt ein neues Schema mit dem Namen "Fehler" hinzu.
Ändern Sie den Zielnamespace für das Schema in http://BasicXMLEnvelope.
Ändern Sie die Schemaeigenschaft Element FormDefault unter der Kategorie Erweitert in Qualifiziert. Dadurch wird angegeben, dass lokal deklarierte Elemente durch den Zielnamespace in einem Instanzdokument qualifiziert sein müssen.
Benennen Sie den Stammknoten in Fehler um, und erstellen Sie fünf untergeordnete Elemente mit folgenden Datentypen:
ID, xs:int
Type, xs:int
Priority, xs:string
Description, xs:string
ErrorDateTime, xs:string
Das erstellte Schema sollte wie folgt aussehen:
Erstellen Sie eine Beispielfehlermeldung für dieses Schema. Dies dient der Überprüfung, dass einzelne Fehlermeldungen außerhalb eines Umschlag richtig verarbeitet werden. Beispiel für eine Beispielfehlermeldung:
<Error xmlns="http://BasicXMLEnvelope"> <ID>1</ID> <Type>5</Type> <Priority>Low</Priority> <Description>Sprocket widget prints reports slowly.</Description> <ErrorDateTime>1999-05-31T13:20:00.000-05:00</ErrorDateTime> </Error>
Speichern Sie diese Nachricht in einer Datei im Projektverzeichnis.
Erstellen des Umschlagschemas
Der Umschlag enthält mindestens eine Fehlermeldung. In diesem einfachen Beispiel hat der Umschlag keine eigenen Eigenschaften oder Elemente.
So erstellen Sie das Umschlagschema
Fügen Sie dem Projekt BasicXMLEnvelope ein neues Schema mit dem Namen "Umschlag" hinzu.
Ändern Sie den Zielnamespace in http://BasicXMLEnvelope.
Ändern Sie den Namen des Stammknotens von "Root" in "Umschlag".
Kennzeichnen Sie jetzt das Schema als ein Umschlagschema. Klicken Sie auf den <Knoten Schema> . Legen Sie im Bereich Eigenschaften die Schemaverweiseigenschaft Envelope auf fest
OK
.Legen Sie die XPath-Eigenschaft Body fest. Klicken Sie hierzu auf den Knoten Umschlag . Klicken Sie in der Eigenschaftenfenster auf die Schaltfläche mit den Auslassungspunkten (...) in der XPath-Eigenschaft Text, wählen Sie Umschlag aus, und klicken Sie dann auf OK.
Fügen Sie dem Knoten Umschlag einen untergeordneten Beliebiges Element-Knoten hinzu. Die Fehlermeldung ist dann in diesem Element enthalten. Das erstellte Schema sollte wie folgt aussehen:
Erstellen Sie eine Beispielfehlermeldung, die einen Umschlag und mindestens eine Beispielfehlermeldung enthält. Beispielnachricht:
<Envelope xmlns="http://BasicXMLEnvelope"> <Error> <ID>102</ID> <Type>0</Type> <Priority>High</Priority> <Description>Sprocket query fails.</Description> <ErrorDateTime>1999-05-31T13:20:00.000-05:00</ErrorDateTime> </Error> <Error> <ID>16502</ID> <Type>2</Type> <Priority>Low</Priority> <Description>Time threshold exceeded.</Description> <ErrorDateTime>1999-05-31T13:20:00.000-05:00</ErrorDateTime> </Error> </Envelope>
Speichern Sie diese Nachricht in einer Datei im Projektverzeichnis.
Bereitstellen und Konfigurieren der Sende- und Empfangsports
Nachdem Sie die Schemas erstellt haben, muss das Projekt kompiliert und bereitgestellt werden. Im Anschluss an die Bereitstellung können Sie mithilfe der BizTalk Server-Verwaltungskonsole die Sende- und Empfangsports konfigurieren.
So stellen Sie 'BasicXMLEnvelope' bereit
Wählen Sie in Visual Studio im Menü Erstellen die Option BasicXMLEnvelope bereitstellen aus. Das Projekt wird als die Anwendung BasicXMLEnvelope für BizTalk Server erstellt und bereitgestellt.
Erweitern Sie in der BizTalk Server Verwaltungskonsole die Gruppe Anwendungen, um sicherzustellen, dass BasicXMLEnvelope als benutzerdefinierte Anwendung vorhanden ist.
So konfigurieren Sie den Empfangsport
Verwenden Sie Windows Explorer, um ein Verzeichnis mit dem Namen "Receive" unter dem Projektverzeichnis BasicXMLEnvelope zu erstellen.
Erweitern Sie in der BizTalk Server Verwaltungskonsole die Anwendung BasicXMLEnvelope, klicken Sie mit der rechten Maustaste auf Empfangsports, zeigen Sie auf Neu, und klicken Sie dann auf Unidirektionale Empfangsport.
Legen Sie im Dialogfeld Eigenschaften des Empfangsports den Namen des Ports auf "Receive" fest.
Klicken Sie mit der rechten Maustaste auf Empfangsspeicherorte, und klicken Sie dann auf Neu , um einen Empfangsport hinzuzufügen. Geben Sie dem neuen Port den Namen ReceiveError. Legen Sie die Empfangspipeline auf XMLReceive fest. Wählen Sie für Transporttypdie Option DATEI aus, und klicken Sie dann auf Konfigurieren.
Wählen Sie das oben erstellte Empfangsverzeichnis aus, und klicken Sie auf OK. Mit diesem Schritt sollte die Konfiguration Ihres Empfangsports abgeschlossen sein. Klicken Sie zum Schließen auf OK.
So konfigurieren Sie den Sendeport
Verwenden Sie Windows Explorer, um ein Verzeichnis mit dem Namen "Send" unter dem Projektverzeichnis BasicXMLEnvelope zu erstellen.
Erweitern Sie in der BizTalk Server-Verwaltungskonsole die Anwendung BasicXMLEnvelope, klicken Sie mit der rechten Maustaste auf Ports senden, zeigen Sie auf Neu, und klicken Sie dann auf Unidirektionale Statische.
Legen Sie im Dialogfeld Porteigenschaften senden den Namen des Ports auf "Senden" fest.
Wählen Sie für Transporttypdie Option DATEI aus, und klicken Sie dann auf Konfigurieren. Legen Sie den Zielordner auf das zuvor erstellte Sendeverzeichnis fest, und klicken Sie auf OK.
Klicken Sie auf Filter , und fügen Sie einen einzelnen Filter hinzu:
- BTS. MessageType == http://BasicXMLEnvelope#Error
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. Kopieren Sie nach dem Starten der Anwendung "BasicXMLEnvelope" mithilfe der BizTalk Server-Verwaltungskonsole die Testdateien an den Empfangsspeicherort, und beobachten Sie, was am Sendespeicherort generiert wird.
So führen Sie das Beispiel 'BasicXMLEnvelope' aus
Klicken Sie in der BizTalk Server Verwaltungskonsole mit der rechten Maustaste auf die Anwendung BasicXMLEnvelope, und klicken Sie dann auf Start. Dadurch werden die Sende- und Empfangsports eingetragen und gestartet.
Legen Sie alle Beispieldateien im Empfangsverzeichnis ab. Wenn Sie die weiter oben genannten Beispiele verwenden, sollten sich nach Abschluss der Verarbeitung drei einzelne Fehlermeldungen im Sendespeicherort befinden.
Erweitern des Beispiels
Sie können das Beispiel erweitern, um es anderen Anforderungen anzupassen. In diesem Abschnitt werden zwei typische Szenarien erläutert:
Wenn ein Fehlerbatch in einem Umschlag übermittelt wird, sollen einzelne Nachrichtenfehler in der Disassemblierungsphase nicht die weitere Verarbeitung von Nachrichten verhindern, die keine Fehler verursachen.
Fehlermeldungen sollen je nach Fehlerpriorität an unterschiedliche Speicherorte übermittelt werden. Nachrichten mit hoher Priorität werden beschleunigt übermittelt, während Nachrichten mit geringeren Prioritäten über reguläre Kanäle übermittelt werden.
In den folgenden Abschnitten wird das Beispiel erweitert, um diese Anforderungen zu erfüllen.
Wiederherstellbare Austauschverarbeitung
BizTalk Server unterstützt die wiederherstellbare Austauschverarbeitung. Mit diesem Feature wird sichergestellt, dass bei der Disassemblierung eines Fehlerbatches Fehler einzeln und nicht als Batch auftreten.
So konfigurieren Sie das Beispiel für die wiederherstellbare Austauschverarbeitung
Erweitern Sie in der BizTalk Server Verwaltungskonsole die Anwendung BasicXMLEnvelope, klicken Sie auf Empfangsports, und doppelklicken Sie dann auf den Empfangsport. Dies ist der Port, den Sie zuvor erstellt haben.
Klicken Sie im Dialogfeld Eigenschaften des Empfangsports auf Empfangsspeicherorte. Klicken Sie auf Eigenschaften , um das Dialogfeld Eigenschaften des Empfangsfehlers anzuzeigen. Klicken Sie auf die Schaltfläche mit den Auslassungspunkten (...) für die Empfangspipeline.
Legen Sie im Dialogfeld Pipeline konfigurieren – XMLReceive die Eigenschaft Recoverable Interchange Processing auf fest
True
, und klicken Sie dann auf OK.Klicken Sie auf OK , um das Dialogfeld Eigenschaften des Empfangsspeicherorts zu schließen, und klicken Sie dann auf OK , um das Dialogfeld Eigenschaften des Empfangsports zu schließen.
So erstellen Sie eine Beispieldatei und führen das Beispiel aus
Kopieren Sie zum Erstellen einer Beispieldatei die zuvor erstellte Umschlagbeispieldatei, fügen Sie einer der Fehlerinstanzen einen nicht vorhandenen Namespace hinzu, und speichern Sie dann die Datei:
<Envelope xmlns="http://BasicXMLEnvelope"> <Error> <ID>102</ID> <Type>0</Type> <Priority>High</Priority> <Description>Sprocket query fails to return any sprockets even though some exist</Description> <ErrorDateTime>1999-05-31T13:20:00.000-05:00</ErrorDateTime> </Error> <Error xmlns="http://ThisIsAnError"> <ID>16502</ID> <Type>2</Type> <Priority>Low</Priority> <Description>Time threshold exceeded.</Description> <ErrorDateTime>1999-05-31T13:20:00.000-05:00</ErrorDateTime> </Error> </Envelope>
Klicken Sie in der BizTalk Server Verwaltungskonsole auf Anwendungen, und überprüfen Sie, ob die BasicXMLEnvelope-Anwendung ausgeführt wird.
Legen Sie die Nachricht im Empfangsspeicherort ab. Nach der Verarbeitung befindet sich die erste Nachricht im Sendespeicherort und die zweite Nachricht mit der geringeren Priorität in der Warteschlange Angehalten.
Inhaltsbasiertes Routing (Content-Based Routing, CBR)
Mit inhaltsbasiertem Routing können Sie Nachrichten je nach Inhalt weiterleiten. In diesem Szenario wird das Routing nach Prioritäten ausgeführt. Nachrichten mit hoher Priorität und Nachrichten mit niedriger bzw. mittlerer Priorität werden an unterschiedliche Sendespeicherorte gesendet.
Zum Erweitern des Beispiels müssen Sie die folgenden Aufgaben ausführen:
Höherstufen des Felds Priorität im Fehlerschema im BasicXMLEnvelope-Projekt. Bei inhaltsbasiertem Routing sind höher gestufte Eigenschaften die Voraussetzung für das Weiterleiten von Nachrichten. Weitere Informationen finden Sie unter Höherstufen von Eigenschaften.
Erstellen und konfigurieren Sie zwei zusätzliche Sendeports. Diese Ports stellen über einen Filter sicher, dass entsprechende Nachrichten empfangen werden.
So stufen Sie das Feld 'Priorität' im Fehlerschema höher
Wenn das Projekt BasicXMLEnvelope in Visual Studio geöffnet ist, öffnen Sie das Schema Fehler , und erweitern Sie den Knoten Fehler .
Klicken Sie mit der rechten Maustaste auf das Element Priority , zeigen Sie auf Höherstufen, und klicken Sie dann auf Schnellheraufstufen.
Klicken Sie auf OK , um das Hinzufügen eines neuen Eigenschaftenschemas für die heraufgestuften Eigenschaften zu bestätigen.
Öffnen Sie in Visual Studio in Projektmappen-Explorer das neue Eigenschaftenschema PropertySchema.xsd. Entfernen Sie "Field1" aus dem Schema.
Kompilieren Sie die Lösung neu, und stellen Sie die Lösung erneut bereit. Wählen Sie im Menü Erstellen die Option BasicXMLEnvelope bereitstellen aus.
Das Projekt wurde so konfiguriert, dass die Hostinstanz zurückgesetzt wird, wenn die Lösung erneut bereitgestellt wird. Wenn Sie diese Einstellung geändert haben, müssen Sie den Host beenden und neu starten.
So konfigurieren Sie den Sendeport für niedrige und mittlere Priorität
Verwenden Sie Windows Explorer, um ein Verzeichnis mit dem Namen "SendLowMediumPriority" unter dem Projektverzeichnis BasicXMLEnvelope zu erstellen.
Erweitern Sie in der BizTalk Server-Verwaltungskonsole die Anwendung BasicXMLEnvelope, klicken Sie mit der rechten Maustaste auf Ports senden, zeigen Sie auf Neu, und klicken Sie dann auf Unidirektionale Statische.
Legen Sie im Dialogfeld Porteigenschaften senden den Namen des Ports auf "SendLowMediumPriority" fest.
Wählen Sie für Transporttypdie Option DATEI aus, und klicken Sie dann auf Konfigurieren. Legen Sie als Zielordner das zuvor erstellte Verzeichnis fest. Klicken Sie zum Schließen auf OK.
Klicken Sie auf Filter , und fügen Sie drei Filterausdrücke hinzu:
BTS. MessageType == http://BasicXMLEnvelope#Error und
BasicXMLEnvelope.PropertySchema.Priority == Low Or
BasicXMLEnvelope.PropertySchema.Priority == Medium
Klicken Sie auf OK , um die Sendeportkonfiguration mit niedriger und mittlerer Priorität abzuschließen.
So konfigurieren Sie den Sendeport mit hoher Priorität
Verwenden Sie Windows Explorer, um ein Verzeichnis mit dem Namen "SendHighPriority" im BasicXMLEnvelope-Projektverzeichnis zu erstellen.
Erweitern Sie in der BizTalk Server-Verwaltungskonsole die Anwendung BasicXMLEnvelope, klicken Sie mit der rechten Maustaste auf Ports senden, zeigen Sie auf Neu, und klicken Sie dann auf Unidirektionale Statische.
Legen Sie im Dialogfeld Porteigenschaften senden den Namen des Ports auf "SendHighPriority" fest.
Wählen Sie für Transporttypdie Option DATEI aus, und klicken Sie dann auf Konfigurieren. Legen Sie als Zielordner das zuvor erstellte Verzeichnis fest. Klicken Sie zum Schließen auf OK.
Klicken Sie auf Filter , und fügen Sie zwei Filterausdrücke hinzu:
BTS. MessageType == http://BasicXMLEnvelope#Error und
BasicXMLEnvelope.PropertySchema.Priority == High
Klicken Sie auf OK , um die Sendeportkonfiguration mit hoher Priorität abzuschließen.
So testen Sie die Routinglösung
Erweitern Sie in der BizTalk Server Verwaltungskonsole die Gruppe Anwendungen, klicken Sie mit der rechten Maustaste auf die Anwendung BasicXMLEnvelope, und klicken Sie dann auf Start. Wenn Sie zur Bestätigung aufgefordert werden, klicken Sie auf Start. Dadurch werden die neuen Sendeports eingetragen.
Legen Sie die Testnachricht im Empfangsspeicherort ab. Beachten Sie, dass die Fehlermeldungen an unterschiedliche Sendespeicherorte weitergeleitet werden:
Fehlermeldungen mit niedriger, mittlerer und hoher Priorität, die während der Nachrichtenverarbeitung keine Fehler verursachen, werden sowohl an den ursprünglichen Sendespeicherort (konfiguriert im Ausgangsbeispiel) und je nach Priorität an den entsprechenden Sendespeicherort weitergeleitet. Für Nachrichten mit niedriger oder mittlerer Priorität wird je eine Kopie für den ursprünglichen Sendespeicherort und für den Sendespeicherort für niedrige und mittlere Priorität erstellt.
Wenn die wiederherstellbare Austauschverarbeitung aktiviert ist, wird die Nachricht, die einen Fehler verursacht hat, nicht weitergeleitet. Die Nachricht, die keinen Fehler verursacht hat, wird wie erwartet weitergeleitet. Die Nachricht, die einen Fehler verursacht hat, wird nicht weitergeleitet, da der Nachrichtentyp nicht mit dem über die Filter konfigurierten Nachrichtentyp übereinstimmt.
Weitere Informationen
Wiederherstellbare Austauschverarbeitung
Heraufstufen von Eigenschaften
CBRSample (Inhaltsbasiertes Routing – BizTalk Server-Beispiel)