Austauschen von B2B-Nachrichten zwischen Partnern mithilfe von Workflows in Azure Logic Apps

Gilt für: Azure Logic Apps (Verbrauch + Standard)

Wenn Sie über ein Integrationskonto verfügen, für das Parteien und Vereinbarungen definiert werden, haben Sie folgende Möglichkeit: Sie können einen automatisierten B2B-Workflow (Business to Business) erstellen, mit dem Nachrichten zwischen Handelspartnern über Azure Logic Apps ausgetauscht werden. Sie können in Ihrem Workflow Connectors verwenden, die Branchenstandardprotokolle wie AS2, X12, EDIFACT und RosettaNet unterstützen. Sie können auch Vorgänge einbinden, die von anderen Connectors in Azure Logic Apps bereitgestellt werden, z. B. Office 365 Outlook, SQL Server und Salesforce.

In diesem Artikel wird veranschaulicht, wie Sie einen Beispielworkflow für eine Logik-App erstellen, der über einen Anforderungstrigger eine HTTP-Anforderung empfängt, den Inhalt der Nachricht über die Aktionen AS2-Decodierung und X12-Decodierung decodiert und dann mit der Antwortaktion eine Antwort zurückgibt. In diesem Beispiel wird der Workflow-Designer im Azure-Portal verwendet, aber die Schritte für den Workflow-Designer in Visual Studio sind sehr ähnlich.

Falls Sie noch nicht mit Logik-Apps vertraut sind, finden Sie weitere Informationen unter Was ist Azure Logic Apps?. Weitere Informationen zur B2B-Unternehmensintegration finden Sie unter Workflows für die B2B-Unternehmensintegration mit Azure Logic Apps.

Voraussetzungen

  • Ein Azure-Konto und ein Azure-Abonnement. Sollten Sie noch kein Abonnement besitzen, können Sie sich für ein kostenloses Azure-Konto registrieren.

  • Eine Integrationskontoressource, in der Sie Artefakte wie Handelspartner, Vereinbarungen, Zertifikate usw. für die Verwendung in Ihrer Unternehmensintegration und in B2B-Workflows definieren und speichern. Diese Ressource muss die folgenden Anforderungen erfüllen:

    • Sie muss demselben Azure-Abonnement zugeordnet sein wie Ihre Logik-App-Ressource.

    • Sie muss sich am selben Standort oder in derselben Azure-Region wie Ihre Logik-App-Ressource befinden.

    • Wenn Sie den Ressourcentyp Logik-App (Verbrauch) verwenden, benötigt Ihr Integrationskonto eine Verbindung mit Ihrer Logik-App-Ressource, bevor Sie Artefakte in Ihrem Workflow verwenden können.

    • Wenn Sie den Ressourcentyp Logik-App (Standard) verwenden, benötigt Ihr Integrationskonto keine Verbindung mit Ihrer Logik-App-Ressource. Sie ist aber trotzdem erforderlich, um andere Artefakte wie Partner, Vereinbarungen und Zertifikate zusammen mit den AS2-, X12- oder EDIFACT-Vorgängen zu speichern. Ihr Integrationskonto muss darüber hinaus weitere Anforderungen erfüllen. So muss es z. B. dasselbe Azure-Abonnement und denselben Standort wie Ihre Logik-App-Ressource verwenden.

    Hinweis

    Derzeit unterstützt nur der Logic App (Verbrauch) Ressourcentyp RosettaNet-Vorgänge. Der Ressourcentyp Logik-App (Standard) umfasst keine RosettaNet-Vorgänge.

  • Mindestens zwei Parteien (Handelspartner) in Ihrem Integrationskonto. Die Definitionen für beide Partner müssen denselben Qualifizierer für die Geschäftsidentität verwenden, der AS2, X12, EDIFACT oder RosettaNet lautet.

  • Eine AS2-Vereinbarung und eine X12-Vereinbarung für die Partner, die Sie in diesem Workflow verwenden. Jede Vereinbarung erfordert sowohl einen Host- als auch einen Gastpartner.

  • Eine Logik-App-Ressource mit einem leeren Workflow, in dem Sie den Anforderungstrigger und danach die folgenden Aktionen hinzufügen können:

Hinzufügen des Anforderungstriggers

Um den Workflow in diesem Beispiel zu starten, fügen Sie den Anforderungstrigger hinzu.

  1. Öffnen Sie im Azure-Portal Ihre Logik-App-Ressource und den leeren Workflow im Workflow-Designer.

  2. Wählen Sie im Suchfeld des Designers die Option Alle aus, sofern sie noch nicht ausgewählt ist. Geben Sie im Suchfeld when a http requestein. Wählen Sie den Anforderungstrigger Beim Empfang einer HTTP-Anforderung aus.

    Screenshot von Azure-Portal und mehrinstanzenfähigem Designer mit „Beim Empfang einer HTTP-Anforderung“ im Suchfeld und ausgewähltem Anforderungstrigger

  3. Lassen Sie das Feld JSON-Schema für Anforderungstext im Trigger leer.

    Der Grund dafür ist, dass der Trigger eine X12-Nachricht im Flatfileformat empfängt.

    Screenshot des mehrinstanzenfähigen Designers und der Eigenschaften des Anforderungstriggers

  4. Wenn Sie fertig sind, wählen Sie auf der Symbolleiste des Designers die Option Speichern aus.

    In diesem Schritt wird die HTTP POST-URL generiert, über die Sie später eine Anforderung senden, die dann den Logik-App-Workflow auslöst.

    Screenshot des mehrinstanzenfähigen Designers und der generierten URL für den Anforderungstrigger

  5. Kopieren und speichern Sie die URL zur späteren Verwendung.

Hinzufügen der Aktion für die AS2-Decodierung

Fügen Sie nun die B2B-Aktionen für dieses Beispiel hinzu, das die AS2- und X12-Aktionen verwendet.

  1. Wählen Sie unter dem Trigger die Option Neuer Schritt aus.

    Tipp

    Wählen Sie zum Ausblenden der Details zum Anforderungstrigger die Titelleiste des Triggers aus.

    Screenshot des mehrinstanzenfähigen Designers und des Triggers mit ausgewählter Option „Neuer Schritt“

  2. Wählen Sie unter dem Suchfeld Vorgang auswählen die Option Alle aus, sofern sie noch nicht ausgewählt ist. Geben Sie in das Suchfeld as2 ein, und wählen Sie AS2-Decodierung aus.

    Screenshot des mehrinstanzenfähigen Designers mit ausgewählter Aktion „AS2-Decodierung“

  3. Geben Sie für die Eigenschaft der Aktion Zu decodierende Nachricht die Eingabe ein, die von der AS2-Aktion decodiert werden soll, also die body-Ausgabe vom Anforderungstrigger. Sie haben mehrere Möglichkeiten, diesen Inhalt als Eingabe der Aktion anzugeben. Sie können ihn in der Liste mit dem dynamischen Inhalt auswählen oder einen Ausdruck verwenden:

    • Klicken Sie in das Feld Zu decodierende Nachricht, um in der Liste mit den verfügbaren Triggerausgaben eine Auswahl zu treffen. Wählen Sie in der Liste mit dem dynamischen Inhalt unter Beim Empfang einer HTTP-Anforderung den Eigenschaftswert Text (Body) aus. Beispiel:

      Screenshot des mehrinstanzenfähigen Designers mit Auswahl in der Liste mit dem dynamischen Inhalt und ausgewählter „Body“-Eigenschaft

      Tipp

      Wenn keine Triggerausgaben angezeigt werden, wählen Sie in der Liste mit den dynamischen Eigenschaften unter Beim Empfang einer HTTP-Anforderung die Option Weitere anzeigen aus.

    • Klicken Sie zum Eingeben eines Ausdrucks, mit dem auf die body-Ausgabe des Triggers verwiesen wird, in das Feld Zu decodierende Nachricht. Wählen Sie in der angezeigten Liste mit dem dynamischen Inhalt die Option Ausdruck aus. Geben Sie im Ausdrucks-Editor den folgenden Ausdruck ein, und wählen Sie OK aus:

      triggerOutputs()['body']

      Oder geben Sie im Feld Zu decodierende Nachricht direkt diesen Ausdruck ein:

      @triggerBody()

      Der Ausdruck wird in das Body-Token aufgelöst.

      Screenshot des mehrinstanzenfähigen Designers mit aufgelöster Ausgabe der „Body“-Eigenschaft

  4. Geben Sie für die Eigenschaft Nachrichtenheader der Aktion alle Header ein, die für die AS2-Aktion benötigt werden. Diese sind in der headers-Ausgabe vom Anforderungstrigger enthalten.

    1. Wählen Sie zum Eingeben eines Ausdrucks, mit dem auf die headers-Ausgabe des Triggers verwiesen wird, die Option Switch Message headers to text mode (Nachrichtenheader auf Textmodus umstellen) aus.

      Screenshot des mehrinstanzenfähigen Designers mit ausgewählter Option „Nachrichtenheader auf Textmodus umstellen“

    2. Klicken Sie in das Feld Nachrichtenheader. Wählen Sie in der angezeigten Liste mit dem dynamischen Inhalt die Option Ausdruck aus. Geben Sie im Ausdrucks-Editor den folgenden Ausdruck ein, und wählen Sie OK aus:

      triggerOutputs()['Headers']

      In der Aktion AS2-Decodierung wird der Ausdruck jetzt als Token angezeigt:

      Screenshot: Mehrinstanzenfähiger Designer mit dem Feld „Nachrichtenheader“ und dem Token „@triggerOutputs()['Headers']“.

    3. Wechseln Sie zwischen dem Designer und der Codeansicht, damit das Ausdruckstoken in das entsprechende Headertoken aufgelöst wird. Nach diesem Schritt sieht die Aktion AS2-Decodierung wie im folgenden Beispiel aus:

      Screenshot des mehrinstanzenfähigen Designers und der Ausgabe der aufgelösten Header des Triggers

Hinzufügen der Antwortaktion als Nachrichtenbestätigung

Zum Benachrichtigen der Parteien, dass die Nachricht empfangen wurde, können Sie eine Antwort mit einer Benachrichtigung über den AS2-Nachrichtenstatus (AS2 Message Disposition Notification, MDN) zurückgeben, indem Sie die Aktionen „Bedingung“ und „Antwort“ verwenden. Wenn Sie diese Aktionen unmittelbar nach der AS2-Aktion hinzufügen, kann der Logik-App-Workflow die Verarbeitung fortsetzen, wenn die AS2-Aktion erfolgreich ausgeführt wird. Andernfalls wird bei einem Fehler der AS2-Aktion die Verarbeitung durch den Logik-App-Workflow beendet.

  1. Wählen Sie unter der Aktion AS2-Decodierung die Option Neuer Schritt aus.

  2. Wählen Sie unter dem Suchfeld Vorgang auswählen die Option Integriert aus, sofern sie noch nicht ausgewählt ist. Geben Sie im Suchfeld conditionein. Wählen Sie die Aktion Bedingung aus.

    Screenshot des mehrinstanzenfähigen Designers und der Aktion „Bedingung“

    Jetzt wird die Form „Bedingung“ angezeigt, einschließlich der Pfade, die bestimmen, ob die Bedingung erfüllt ist.

    Screenshot des mehrinstanzenfähigen Designers und der Form „Bedingung“ mit leeren Pfaden

  3. Geben Sie nun die auszuwertende Bedingung an. Geben Sie im Feld Wert auswählen den folgenden Ausdruck ein:

    @body('AS2_Decode')?['AS2Message']?['MdnExpected']

    Stellen Sie im mittleren Feld sicher, dass der Vergleichsvorgang auf is equal to festgelegt ist. Geben Sie im Feld auf der rechten Seite den Wert Expected ein.

  4. Speichern Sie Ihren Logik-App-Workflow. Wechseln Sie zwischen dem Designer und der Codeansicht, damit der Ausdruck als das entsprechende Token aufgelöst wird.

    Screenshot des mehrinstanzenfähigen Designers und der Form „Bedingung“ mit einem Vorgang

  5. Geben Sie nun die Antworten an, die zurückgegeben werden sollen, wenn die Aktion AS2-Decodierung erfolgreich bzw. nicht erfolgreich ist.

    1. Wählen Sie für den Fall, dass die Aktion AS2-Decodierung erfolgreich ist, unter der Form TRUE die Option Aktion hinzufügen aus. Geben Sie unter Vorgang auswählen im Suchfeld response ein, und wählen Sie Antwort aus.

      Screenshot des mehrinstanzenfähigen Designers und der Aktion „Antwort“

    2. Geben Sie die folgenden Ausdrücke an, um über die Ausgabe der Aktion AS2-Decodierung auf die Benachrichtigung über den AS2-Nachrichtenstatus (AS2 Message Disposition Notification, MDN) zuzugreifen:

      • Geben Sie in der Headers-Eigenschaft der Aktion Antwort diesen Ausdruck ein:

        @body('AS2_Decode')?['OutgoingMdn']?['OutboundHeaders']

      • Geben Sie in der Body-Eigenschaft der Aktion Antwort diesen Ausdruck ein:

        @body('AS2_Decode')?['OutgoingMdn']?['Content']

    3. Wechseln Sie zwischen dem Designer und der Codeansicht, damit die Ausdrücke als Token aufgelöst werden:

      Screenshot des mehrinstanzenfähigen Designers und des aufgelösten Ausdrucks für den Zugriff auf die AS2-MDN

    4. Wählen Sie für den Fall, dass die Aktion AS2-Decodierung nicht erfolgreich ist, unter der Form FALSE die Option Aktion hinzufügen aus. Geben Sie unter Vorgang auswählen im Suchfeld response ein, und wählen Sie Antwort aus. Richten Sie die Aktion Antwort (Response) ein, um den gewünschten Status und Fehler zurückzugeben.

  6. Speichern Sie Ihren Logik-App-Workflow.

Hinzufügen der Aktion „X12-Nachricht decodieren“

Fügen Sie nun die Aktion X12-Nachricht decodieren hinzu.

  1. Wählen Sie unter der Aktion Antwort (Response) die Option Aktion hinzufügen aus.

  2. Geben Sie unter Vorgang auswählen im Suchfeld x12 decode ein, und wählen Sie X12-Nachricht decodieren aus.

    Screenshot des mehrinstanzenfähigen Designers und der ausgewählten Aktion „X12-Nachricht decodieren“

  3. Gehen Sie wie folgt vor, wenn Sie bei der X12-Aktion zum Angeben von Verbindungsinformationen aufgefordert werden: Geben Sie den Namen für die Verbindung an, wählen Sie das gewünschte Integrationskonto aus, und wählen Sie dann die Option Erstellen aus.

    Screenshot des mehrinstanzenfähigen Designers und der Verbindung mit dem Integrationskonto

  4. Geben Sie nun die Eingabe für die X12-Aktion an. In diesem Beispiel wird die Ausgabe der AS2-Aktion verwendet, wobei es sich um den Nachrichteninhalt handelt. Beachten Sie aber, dass dieser Inhalt im JSON-Objektformat vorliegt und Base64-codiert ist. Daher müssen Sie diesen Inhalt in eine Zeichenfolge konvertieren.

    Geben Sie im Feld Zu decodierende X12-Flatfilenachricht den folgenden Ausdruck ein, um die AS2-Ausgabe zu konvertieren:

    @base64ToString(body('AS2_Decode')?['AS2Message']?['Content'])

  5. Speichern Sie Ihren Logik-App-Workflow. Wechseln Sie zwischen dem Designer und der Codeansicht, damit der Ausdruck als das entsprechende Token aufgelöst wird.

    Screenshot des mehrinstanzenfähigen Designers und der Konvertierung von Base64-codiertem Inhalt in eine Zeichenfolge

  6. Speichern Sie Ihren Logik-App-Workflow.

    Fahren Sie mit dem Hinzufügen der erforderlichen Aktionen in Ihrem Logik-App-Workflow fort, falls Sie dafür weitere Schritte benötigen, z. B. zum Decodieren des Nachrichteninhalts und Ausgeben des Inhalts im JSON-Objektformat.

Die Einrichtung Ihres B2B-Logik-App-Workflows ist damit abgeschlossen. In einer realen App werden die decodierten X12-Daten in einer branchenspezifischen App oder einem Datenspeicher gespeichert. Lesen Sie beispielsweise die folgende Dokumentation:

Zum Herstellen von Verbindungen mit Ihren eigenen branchenspezifischen Apps und Verwenden dieser APIs in Ihrer Logik-App können Sie weitere Aktionen hinzufügen oder benutzerdefinierte APIs schreiben.

Nächste Schritte