Weiterleiten von Nachrichten von Bridges zu Zielen im BizTalk Service-Projekt

Letzte Aktualisierung: August 2015

Leiten Sie Nachrichten von einer Komponente zu einer anderen mithilfe von Routingbedingungen weiter.

Einer der offensichtlichem Gründe zum Verbinden verschiedener Komponenten eines Projekts für die Integration von Unternehmensanwendungen ist sie Weiterleitung der Nachricht von einer Komponente zur anderen. Es gibt jedoch noch eine weitere Anforderung. Sie müssen die Nachricht möglicherweise auf Basis ihrer Geschäftslogik, die auch als Weiterleitungsbedingung bezeichnet werden kann, von einer Quellkomponente an mehrere Zielkomponenten weiterleiten. Wenn mehrere Weiterleitungsbedingungen verfügbar sind, müssen Sie auch die Reihenfolge festlegen, in der die Weiterleitungsbedingungen berücksichtigt werden. Zudem sind möglicherweise einige Aktionen vorhanden (z. B. Zuweisen von Werten zu Nachrichtenheadern, Hinzufügen benutzerdefinierter Header usw.), die Sie für die Nachricht ausführen, bevor sie schließlich zum Ziel weitergeleitet wird. In diesem Thema werden diese Aspekte ausführlich beschrieben und auch Anweisungen zu deren Durchsetzung in einem BizTalk Service-Projekt bereitgestellt.

In diesem Thema werden die Schritte anhand eines Beispielszenarios erläutert. Es wird angenommen, dass eine XML-Nachricht im folgenden Format mithilfe einer unidirektionale XML-Bridge verarbeitet werden muss:

<PaymentHistory xmlns:ns0="http://Integration.PipelineChaining">
  <BaseData>
    <Amount>10.4</Amount> 
    <CurrencyCode>CurrencyCode_0</CurrencyCode> 
    <EntryDate>1999-05-31</EntryDate> 
    <EntryTime>13:20:00.000-05:00</EntryTime> 
    <PaymentMode>Mode_0</PaymentMode> 
    <StatusCode>StatusCode_0</StatusCode> 
    <PurposeCode>PurposeCode_0</PurposeCode> 
  </BaseData>
</PaymentHistory>

Die Geschäftslogik ist wie folgt definiert: Wenn als Zahlungsmodus eine Kreditkarte angegeben ist, muss die Nachricht zu einem unidirektionalen externen Dienst weitergeleitet werden. Wenn als Zahlungsmodus Bargeld angegeben ist, muss die Nachricht zu einem unidirektionalen Relayendpunkt weitergeleitet werden. Wenn keiner dieser beiden Zahlungsmodi festgelegt ist, erfolgt die Weiterleitung an eine Servicebus-Warteschlange.

Dies ist ziemlich unkompliziert. Sie müssen das Weiterleitungsziel definieren, zu dem die eingehende Nachricht nach der Verarbeitung durch die Bridge weitergeleitet wird. Es müssen einige Überlegungen hinsichtlich der Frage angestellt werden, wohin eine Nachricht von einer unidirektionale XML-Bridge oder XML-Anforderung/Antwort-Bridge weitergeleitet werden kann. Weitere Informationen zu diesen Überlegungen finden Sie unter Constraints on Using an XML One-Way Bridge und Constraints on Using an XML Request Reply Bridge.

Das folgende Verfahren beschreibt, wie zwei Komponenten eines Nachrichtenflusses verbunden werden.

  1. Erstellen Sie ein BizTalk Service-Projekt, wie in Erste Schritte mit einem Visual Studio-Projekt beschrieben.

  2. Fügen Sie Komponenten gemäß der Beschreibung in verschiedenen Themen unter Erstellen von Rich-Messaging-Endpunkte unter Azure zum BizTalk Service-Projekt hinzu.

  3. Wählen Sie in der Toolbox unter der Kategorie Bridges die Komponente Connector aus.

  4. Bewegen Sie den Mauszeiger an das rechte Ende der Komponente (gekennzeichnet durch einen roten Punkt, wenn Sie den Cursor über die Komponente bewegen), die als Quelle der Nachricht dienen soll. Der Mauszeiger wechselt zu einem kleinen S und zeigt dadurch an, dass diese Komponente die Quelle der Nachricht hinzufügt. Halten Sie die Maustaste beim Punkt gedrückt, ziehen Sie den Mauszeiger dann zum linken Ende der Zielkomponente (an diesem Punkt wechselt der Cursor wieder zu einem kleinen T, um auf das Ziel zu verweisen), und lassen Sie dann die Maustaste los. Die beiden Komponenten sind jetzt miteinander verbunden. Beachten Sie, dass Sie eine Quellkomponente mit mehreren Zielkomponenten verbinden können.

    noteHinweis
    Für den aktuellen Meilenstein muss ein Nachrichtenfluss immer mit einer unidirektionale XML-Bridge oder einer XML-Anforderung/Antwort-Bridge beginnen. Danach können Sie die Nachricht an eine beliebige Komponente weiterleiten, so lange die Einschränkungen eingehalten werden. Die Einschränkungen sind unter Constraints on Using an XML One-Way Bridge und Constraints on Using an XML Request Reply Bridge aufgelistet.

    In Bezug auf das Beispielszenario müssen Sie die unidirektionale XML-Bridge mit einem unidirektionalen externen Dienst, einem unidirektionalen Relayendpunkt und einer Servicebus-Warteschlange verbinden.

Neben dem Verbinden zweier Komponenten ist der andere wichtige Aspekt der Weiterleitung das Weiterleiten der Nachricht von einer Quellkomponente zu mehreren Zielkomponenten auf Basis Ihrer Geschäftslogik.

In Bezug auf das zuvor erläuterte Beispielszenario muss die Weiterleitungsbedingung auf dem Zahlungsmodus basieren, der durch das PaymentMode-Element in der XML-Nachricht angegeben ist. Für jede Bedingung müssen Weiterleitungsfilter erstellt werden, um diese Geschäftslogik in einem BizTalk Service-Projekt zu implementieren. Die Vorgehensweise wird im folgenden Verfahren beschrieben.

noteHinweis
Stellen Sie vor der Erstellung der Filter sicher, dass Sie alle drei Connectors erstellt haben (wie im vorherigen Verfahren beschrieben). Außerdem müssen Sie eine Eigenschaft (z. B. PaymentMode) in der Enrich-Phase einer Bridge erstellt haben, um den Wert des PaymentMode-Elements in der XML-Nachricht zu extrahieren.

Das folgende Verfahren beschreibt, wie die Weiterleitungsbedingungen in einem BizTalk Service-Projekt festgelegt werden.

  1. Klicken Sie mit der rechten Maustaste auf den Weiterleitungsconnector zwischen der unidirektionale XML-Bridge und dem unidirektionalen externen Dienst, und klicken Sie dann auf Eigenschaften. Klicken Sie im Bereich Eigenschaften für die Eigenschaft Filterbedingung auf die Schaltfläche mit den Auslassungspunkten (…), um das Dialogfeld Weiterleitungsfilterkonfiguration zu öffnen.

  2. Wählen Sie in diesem Dialogfeld die Option Filter aus, und geben Sie dann die folgende Filterzeichenfolge ein:

    PaymentMode='credit_card'
    
    noteHinweis
    Für Filterausdrücke müssen Sie die SQL 92-Standardsyntax verwenden.

    Beachten Sie, dass PaymentMode die Eigenschaft ist, die Sie für die Extrahierung in der Enrich-Phase eingegeben haben müssen, und diese Filterbedingung (die für den Connector zwischen der unidirektionale XML-Bridge und dem unidirektionalen externen Dienst angegeben wurde) angibt, dass die Nachricht an den unidirektionalen externen Dienst gesendet wird, wenn die Filterbedingung erfüllt wird.

    Klicken Sie auf OK, um die Änderungen zu speichern und das Dialogfeld zu verlassen.

  3. Geben Sie die Filterzeichenfolge für den Connector zwischen der unidirektionale XML-Bridge und dem unidirektionalen Relayendpunkt entsprechend wie folgt ein:

    PaymentMode='cash'
    
  4. Wenn für den Zahlungsmodus weder Bargeld noch Kreditkarte festgelegt ist, sollte die Nachricht an eine Servicebus-Warteschlange weitergeleitet werden. Um dies in Ihrem Nachrichtenfluss zu erreichen, müssen Sie für den Connector zwischen der unidirektionale XML-Bridge und der Servicebus-Warteschlange das Dialogfeld Weiterleitungsfilterkonfiguration öffnen, und dann die Option Alle vergleichen auswählen. Dadurch wird angegeben, dass diese Fehlerbedingung berücksichtigt und die Nachricht an eine Servicebus-Warteschlange weitergeleitet wird, wenn keine der Filterbedingungen erfüllt wird.

Im vorherigen Abschnitt wurden die Filter für den Weiterleitungsconnector festgelegt, um sicherzustellen, dass die richtigen Nachrichten an die richtigen Komponenten eines Nachrichtenflusses weitergeleitet werden. Die Reihenfolge der Weiterleitung ist jedoch ebenso wichtig. In Bezug auf das zuvor besprochene Szenario wird eine Nachricht, für die die Eigenschaft PaymentMode auf credit_card festgelegt ist und die zur Filterbedingung, für die Alle vergleichen festgelegt ist, weitergeleitet wurde, an eine Servicebus-Warteschlange und nicht an den unidirektionalen externen Dienstendpunkt weitergeleitet. Gemäß der Geschäftslogik muss die Alle vergleichen-Bedingung zuletzt berücksichtigt werden. Sie können dazu die Reihenfolge festlegen, in der die Filterbedingungen berücksichtigt werden müssen.

  1. Klicken Sie mit der rechten Maustaste auf die XML-Bridge (unidirektionale XML-Bridge oder XML-Anforderung/Antwort-Bridge), und wählen Sie Eigenschaften aus. Klicken Sie im Bereich Eigenschaften für die Eigenschaft Weiterleitungsreihenfolgentabelle auf die Schaltfläche mit den Auslassungspunkten (…).

  2. Im Dialogfeld Weiterleitungsreihenfolgentabelle wird die Standardreihenfolge zur Berücksichtigung der Weiterleitungsfilter angezeigt. Diese Standardreihenfolge ist die Reihenfolge, in der Sie die Weiterleitungsconnectors erstellt haben. Wenn Sie die Weiterleitungsfilter neu anordnen möchten, wählen Sie einen Weiterleitungsfilter aus, und verwenden Sie dann die Pfeilschaltflächen Nach oben und Nach unten, um diese in der richtigen Reihenfolge anzuordnen. Sie müssen diesen Schritt für alle Weiterleitungsfilter wiederholen, bis sich die richtige Reihenfolge für die gewünschte Weiterleitung ergeben hat.

  3. Klicken Sie auf OK, um die Änderungen zu speichern und das Dialogfeld zu verlassen.

Sie können benutzerdefinierte Nachrichtenheader hinzufügen oder Werte zu Standardnachrichtenheadern zuweisen, bevor Sie die Nachricht an den Nachrichtenempfänger senden. Dazu verwenden Sie eine Weiterleitungsaktion. Weitere Informationen finden Sie unter Route Action.

Um mit dem vorherigen Beispiel fortzufahren, nehmen Sie an, dass die Nachricht mit einem benutzerdefinierten SOAP-Header (CustomerName) und einem Wert an den unidirektionalen externen Dienst gesendet werden muss.

  1. Klicken Sie mit der rechten Maustaste auf den Weiterleitungsconnector zwischen der Bridge und dem unidirektionalen externen Dienst, und klicken Sie dann auf Eigenschaften. Klicken Sie im Bereich Eigenschaften für die Eigenschaft Weiterleitungsaktion auf die Schaltfläche mit den Auslassungspunkten (…), um das Dialogfeld Weiterleitungsaktionen zu öffnen.

  2. Klicken Sie im Dialogfeld Weiterleitungsaktionen auf Hinzufügen, um das Dialogfeld Weiterleitungsaktion hinzufügen zu öffnen. Gehen Sie im Dialogfeld Weiterleitungsaktion hinzufügen wie folgt vor:

     

    Abschnitt Feldname Beschreibung

    Eigenschaft (Lesen aus)

    Eigenschaftsname

    Listet alle Eigenschaften auf, die in den vorherigen zwei Enrich-Phasen in der XML-Anforderung/Antwort-Bridge definiert wurden. Wenn Sie hier eine Eigenschaft auswählen, geben Sie dadurch an, dass der Wert der ausgewählten Eigenschaft zum entsprechenden Nachrichtenheader der ausgehenden Nachricht zugewiesen werden muss.

    Ausdruck

    Stellen Sie über diese Option einen Ausdruck bereit, dessen Ergebniswert an den entsprechenden Nachrichtenheader der ausgehenden Nachricht übergeben wird. Sie können über diese Option auch einen konstanten Wert eingeben, der einem Nachrichtenheader zugewiesen wird. Beispielausdrücke:

    • P1 + P2, wobei "P1" und "P2" die beiden Eigenschaften sind, die bereits in einer der beiden vorherigen Enrich-Phasen definiert wurden.

    • "Fabrikam" ist eine Zeichenfolgenkonstante.

      ImportantWichtig
      Sie müssen den Wert für einen Ausdruck immer in einfachen Anführungszeichen eingeben.

    ImportantWichtig
    Sie können entweder die Option Eigenschaftsname oder die Option Ausdruck auswählen. Diese Optionen schließen sich gegenseitig aus.

    Ziel (Schreiben in)

    Typ

    Geben Sie den Nachrichtentyp der ausgehenden Nachricht ein, deren Header der zuvor eingegebene Wert zugewiesen wird.

    In Abhängigkeit vom Ziel der Nachricht variieren die in der Dropdownliste verfügbaren Werte.

    • Wenn die Weiterleitung an einen externen Dienst oder einen Relayendpunkt (uni- oder bidirektional) erfolgt, stehen in der Dropdownliste die Werte SOAP und HTTP zur Verfügung.

    • Wenn das Ziel der Weiterleitung eine Warteschlange oder ein Thema ist, sind in der Dropdownliste die Werte SOAP und Vermittelt verfügbar.

    • Wenn die Weiterleitung an ein FTP-Ziel erfolgt, enthält die Dropdownliste den Wert FTP.

    • Wenn die Weiterleitung an ein SFTP-Ziel erfolgt, enthält die Dropdownliste den Wert SFTP.

    • Wenn die Weiterleitung an einen Azure-BLOB erfolgt, enthält die Dropdownliste den Wert Azure-BLOB.

    SOAP-Headernamespace (gilt nur, wenn Typ auf SOAP festgelegt ist)

    Geben Sie den Namespace des benutzerdefinierten SOAP-Headers ein, dem der Wert zugewiesen wird.

    ImportantWichtig
    Dieses Feld ist abgeblendet, wenn Sie einen Standardheader aus der Dropdownliste Bezeichner auswählen. Sie müssen ausschließlich für benutzerdefinierte SOAP-Header einen Namespace eingeben.

    Dieses Feld ist auch abgeblendet, wenn für Typ der Wert HTTP oder Vermittelt festgelegt ist.

    Bezeichner

    Geben Sie den Namen der Nachrichtenheadereigenschaft ein, der der Wert zugewiesen wird.

    Sie können hier auch benutzerdefinierte Header eingeben. Beim SOAP-Nachrichtentyp sind in den Dropdownlisten die vier Standardbezeichner aufgeführt. Beim HTTP-Nachrichtentyp sind in der Dropdownliste keine Header aufgeführt, da es eine sehr lange Liste an Standardheadern gibt. Bei den Nachrichtentypen SOAP und HTTP können Sie einen benutzerdefinierten Header auflisten, dessen Wert Sie einer anderen Eigenschaft zuweisen möchten.

    Für andere Zieltypen wie FTP, SFTP und Azure--BLOBS können Sie die Nachrichtenheader auswählen, in die der Eigenschaftswert geschrieben werden muss.

    In Bezug auf das vorherige Beispiel müssen Sie hier CustomerName festlegen, da dies der benutzerdefinierte Headername ist, den Sie in die ausgehende Nachricht einbeziehen müssen.

  3. Klicken Sie im Dialogfeld Weiterleitungsaktion hinzufügen auf OK. Die Dialogfelder sehen jetzt etwa wie folgt aus:

    Weiterleitungsaktionen

    Was sehen wir in diesem Dialogfeld? Das bedeutet, dass die Bridge den Wert der Eigenschaft "P1" verwenden (bereits in einer der vorherigen Enrich-Phasen definiert) und diese dem benutzerdefinierten SOAP-Header, CustomerName mit Namespace http://schemas.microsoft.com/integration/promotedpropertiesinfo, zuweisen und dann an den Nachrichtenempfänger senden würde.

    ImportantWichtig
    Wenn Sie zwei Weiterleitungsaktionen für denselben Weiterleitungsconnector erstellen, die unter Verwendung von zwei unterschiedlichen Eigenschaften auf dasselbe Ziel verweisen, z. B. "P1" und "P2", dann erhalten Sie keinen Buildfehler. Die letzte Weiterleitungsaktion setzt die zuvor definierten Weiterleitungsaktionen außer Kraft. In diesem Beispiel wird die Weiterleitungsaktion für die Eigenschaft "P2" berücksichtigt.

  4. Um eine Weiterleitungsaktion zu aktualisieren oder zu entfernen, können Sie diese im Dialogfeld auswählen und dann entsprechend auf Bearbeiten oder Entfernen klicken. Klicken Sie im Dialogfeld Weiterleitungsaktionen auf OK und dann auf Speichern, um die Änderungen in einem Bridgekonfiguration zu speichern.

Siehe auch

Anzeigen: