Échangez des messages B2B entre partenaires en utilisant des workflows dans Azure Logic Apps

S’applique à : Azure Logic Apps (Consommation + Standard)

Si vous disposez d’un compte d’intégration définissant des partenaires et contrats commerciaux, vous pouvez créer un workflow B2B automatisé pour l’échange de messages entre partenaires commerciaux en utilisant Azure Logic Apps. Votre workflow peut utiliser des connecteurs qui prennent en charge des protocoles standard, tels que AS2, X12, EDIFACT et RosettaNet. Vous pouvez également inclure des opérations fournies par d’autres connecteurs dans Azure Logic Apps, comme Office 365 Outlook, SQL Server et Salesforce.

Cet article explique comment créer un exemple de workflow d’application logique qui peut recevoir des requêtes HTTP à l’aide d’un déclencheur Requête, décoder le contenu des messages à l’aide des actions Décodage AS2 et Décodage X12, et retourner une réponse à l’aide de l’action Réponse. Cet exemple utilise le Concepteur de workflow dans le portail Azure, mais vous pouvez suivre des étapes similaires pour le Concepteur de workflow dans Visual Studio.

Si vous débutez avec les applications logiques, voir Qu’est-ce qu’Azure Logic Apps ? Pour plus d’informations sur l’intégration d’entreprise B2B, consultez Workflows d’intégration d’entreprise B2B avec Azure Logic Apps.

Prérequis

  • Un compte et un abonnement Azure. Si vous n’avez pas encore d’abonnement, vous pouvez vous inscrire pour obtenir un compte Azure gratuitement.

  • Une ressource de compte d’intégration dans laquelle vous définissez et stockez les artefacts, comme les parties, les contrats, les certificats, etc., à utiliser dans vos flux de travail d’intégration d’entreprise et B2B. Cette ressource doit remplir les conditions suivantes :

    • Associé au même abonnement Azure que votre ressource d’application logique.

    • Existe dans le même emplacement ou la même région Azure que votre ressource d’application logique.

    • Si vous utilisez le type de ressource Application logique (Consommation), votre compte d’intégration requiert un lien vers votre ressource d’application logique avant de pouvoir utiliser des artefacts dans votre workflow.

    • Si vous utilisez le type de ressource Application logique (Standard), votre compte d’intégration n’a pas besoin d’un lien vers votre ressource d’application logique, mais il est toujours nécessaire pour stocker d’autres artefacts, comme les partenaires, contrats et certificats, ainsi que pour utiliser les opérations AS2, X12 ou EDIFACT. Votre compte d’intégration doit toujours répondre à d’autres exigences, comme l’utilisation du même abonnement Azure et la présence dans le même emplacement que votre ressource d’application logique.

    Notes

    Actuellement, seul le type de ressource Application logique (Consommation) prend en charge les opérations RosettaNet. Le type de ressource Application logique (Standard) n’inclut pas les opérations RosettaNet.

  • Au moins deux partenaires commerciaux dans votre compte d’intégration. Les définitions des deux partenaires doivent utiliser le même qualificateur d’identité d’entreprise, qui est AS2, X12, EDIFACT ou RosettaNet.

  • Un accord AS2 et un accord X12 pour les partenaires que vous utilisez dans ce workflow. Un accord requiert un partenaire hôte et un partenaire invité.

  • Une ressource d’application logique avec un workflow vide dans lequel vous pouvez ajouter le déclencheur Requête, puis les actions suivantes :

Ajout du déclencheur Request

Pour démarrer le workflow dans cet exemple, ajoutez le déclencheur Requête.

  1. Dans le portail Azure, ouvrez votre ressource d’application logique et un workflow vide dans le concepteur de workflow.

  2. Sous la zone de recherche du concepteur, sélectionnez Tout si cette option n’est pas sélectionnée. Dans la zone de recherche, entrez when a http request. Sélectionnez le déclencheur Requête nommé Lors de la réception d’une requête HTTP.

    Capture d’écran montrant le portail Azure et le concepteur mutualisé avec « Lors de la réception d’une requête HTTP » dans la zone de recherche et le déclencheur Requête sélectionné.

  3. Dans le déclencheur, laissez la zone Schéma JSON du corps de la requête vide.

    En effet, le déclencheur recevra un message X12 dans un format de fichier plat.

    Capture d’écran montrant les propriétés du déclencheur Requête et le concepteur mutualisé.

  4. Lorsque c’est chose faite, dans la barre d’outils du concepteur, sélectionnez Enregistrer.

    Cette étape génère l’URL HTTP POST que vous utilisez ultérieurement pour envoyer une requête qui déclenche un workflow d’application logique.

    Capture d’écran montrant le concepteur mutualisé et l’URL générée pour le déclencheur Requête.

  5. Copiez et enregistrez l’URL pour l’utiliser plus tard.

Ajouter l’action Décodage AS2

À présent, ajoutez les actions B2B pour cet exemple, qui utilise les actions AS2 et X12.

  1. Sous le déclencheur, sélectionnez Nouvelle étape.

    Conseil

    Pour masquer les détails du déclencheur de requête, sélectionnez la barre de titre du déclencheur.

    Capture d’écran montrant le concepteur et le déclencheur mutualisé avec l’option « Nouvelle étape » sélectionnée.

  2. Sous la zone de recherche Choisir une opération, sélectionnez Toutes, si l’option n’est pas sélectionnée. Dans la zone de recherche, entrez as2, puis sélectionnez Décodage AS2.

    Capture d’écran montrant le concepteur mutualisé avec l’action « Décodage AS2 » sélectionnée.

  3. Dans la propriété Message à décoder de l’action, indiquez l’entrée que vous voulez que l’action AS2 décode, à savoir la sortie body du déclencheur de requête. Vous avez plusieurs moyens de spécifier ce contenu comme entrée, soit à partir de la liste de contenu dynamique, soit en tant qu’expression :

    • Pour opérer une sélection dans une liste des sorties de déclencheur disponibles, cliquez à l’intérieur de la zone Message à décoder. Lorsque la liste de contenu dynamique s’affiche, sous Lors de la réception d’une requête HTTP, sélectionnez la valeur de propriété Corps, par exemple :

      Capture d’écran montrant le concepteur mutualisé avec la liste de contenu dynamique et la propriété « Corps » sélectionnée.

      Conseil

      Si aucune sortie de déclencheur ne s’affiche, dans la liste de propriétés dynamiques, sous Lors de la réception d’une requête HTTP, sélectionnez Afficher plus.

    • Pour entrer une expression qui fait référence à la sortie body du déclencheur, cliquez dans la zone Message à décoder. Lorsque la liste de contenu dynamique s’affiche, sélectionnez Expression. Dans l’éditeur d’expression, entrez l’expression suivante, puis sélectionnez OK :

      triggerOutputs()['body']

      Ou bien, dans la zone Message à décoder, entrez directement l’expression suivante :

      @triggerBody()

      L’expression est résolue en jeton Corps.

      Capture d’écran montrant le concepteur mutualisé avec la sortie de la propriété « Corps » résolue.

  4. Dans la propriété En-têtes de message de l’action, entrez les en-têtes requis pour l’action AS2, qui se trouvent dans la sortie headers du déclencheur Requête.

    1. Pour entrer une expression qui fait référence à la sortie headers du déclencheur, sélectionnez Basculer les en-têtes de message en mode texte.

      Capture d’écran montrant le concepteur mutualisé avec l’option « Basculer les en-têtes de message en mode texte » sélectionnée.

    2. Cliquez dans la zone En-têtes de message. Lorsque la liste de contenu dynamique s’affiche, sélectionnez Expression. Dans l’éditeur d’expression, entrez l’expression suivante, puis sélectionnez OK :

      triggerOutputs()['Headers']

      Dans l’action Décodage AS2, l’expression apparaît maintenant en tant que jeton :

      Capture d’écran montrant le concepteur multilocataire et la zone « En-têtes de message » avec le jeton « @triggerOutputs()[’Headers’] ».

    3. Pour obtenir le jeton d’expression à résoudre dans le jeton En-têtes, basculez entre le concepteur et le mode Code. Après cette étape, l’action Décodage AS2 ressemble à cet exemple :

      Capture d’écran montrant la sortie du concepteur mutualisé et les en-têtes résolus à partir du déclencheur.

Ajouter l’action Réponse en tant qu’accusé de réception d’un message

Pour informer le partenaire commercial de la réception du message, vous pouvez retourner une réponse contenant une notification d’état du message (MDN) AS2 à l’aide des actions Condition et Réponse. En ajoutant ces actions immédiatement après l’action AS2, le workflow de l’application logique peut continuer le traitement si l’action AS2 réussit. Sinon, si l’action AS2 échoue, le workflow de l’application logique arrête le traitement.

  1. Sous l’action Décodage AS2, sélectionnez Nouvelle étape.

  2. Dans la zone de recherche Choisir une opération, sélectionnez Intégrée, si cette option n’est pas déjà sélectionnée. Dans la zone de recherche, entrez condition. Sélectionnez l’action Condition.

    Capture d’écran montrant le concepteur mutualisé et l’action « Condition ».

    La forme Condition s’affiche, qui inclut les chemins d’accès déterminant si la condition est remplie ou non.

    Capture d’écran montrant le concepteur mutualisé et la forme Condition avec des chemins d’accès vides.

  3. Spécifiez à présent la condition à évaluer. Dans la zone Choisir une valeur, entrez l’expression suivante :

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

    Dans la zone centrale, assurez-vous que l’opération de comparaison est définie sur is equal to. Dans la zone de droite, entrez la valeur Expected.

  4. Enregistrez votre workflow d’application logique. Pour obtenir l’expression à résoudre en ce jeton, basculez entre le concepteur et le mode Code.

    Capture d’écran montrant le concepteur mutualisé et la forme Condition avec une opération.

  5. Maintenant, spécifiez les réponses à retourner selon que l’action Décodage AS2 réussit ou non.

    1. Pour le cas où l’action Décodage AS2 réussit, dans la forme Si vrai, sélectionnez Ajouter une action. Sous la zone de recherche Choisir une opération, entrez response, puis sélectionnez Réponse.

      Capture d’écran montrant le concepteur mutualisé et l’action « Réponse ».

    2. Pour accéder au MDN AS2 à partir de la sortie de l’action Décodage AS2, spécifiez les expressions suivantes :

      • Dans la propriété En-têtes de l’action Réponse, entrez l’expression suivante :

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

      • Dans la propriété Corps de l’action Réponse, entrez l’expression suivante :

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

    3. Pour obtenir les expressions à résoudre en tant que jetons, basculez entre le concepteur et le mode Code :

      Capture d’écran montrant le concepteur mutualisé et l’expression résolue pour accéder à AS2 MDN.

    4. Dans le cas où l’action Décodage AS2 échoue, dans la forme Faux, sélectionnez Ajouter une action. Sous la zone de recherche Choisir une opération, entrez response, puis sélectionnez Réponse. Configurez l’action Réponse pour retourner l’état et l’erreur de votre choix.

  6. Enregistrez votre workflow d’application logique.

Ajouter l’action Décoder le message X12

Ajoutez maintenant l’action Décoder le message X12.

  1. Sous l’action Réponse, sélectionnez Ajouter une action.

  2. Sous Choisir une opération, dans la zone de recherche, entrez x12 decode, puis sélectionnez Décoder le message X12.

    Capture d’écran montrant le concepteur mutualisé et l’action « Décoder un message X12 » sélectionnée.

  3. Si l’action X12 vous demande les informations de connexion, indiquez le nom de la connexion, sélectionnez le compte d’intégration à utiliser, puis sélectionnez Créer.

    Capture d’écran montrant le concepteur mutualisé et la connexion au compte d’intégration.

  4. Spécifiez à présent l’entrée pour l’action X12. Cet exemple utilise la sortie de l’action AS2, qui est le contenu du message, mais ce contenu est au format d’objet JSON et encodé en base64. Par conséquent, vous devez convertir ce contenu en chaîne.

    Dans la zone Message de fichier plat X12 à décoder, entrez l’expression suivante pour convertir la sortie AS2 :

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

  5. Enregistrez votre workflow d’application logique. Pour obtenir l’expression à résoudre en ce jeton, basculez entre le concepteur et le mode Code.

    Capture d’écran montrant le concepteur mutualisé et la conversion du contenu encodé en base64 en chaîne.

  6. Enregistrez votre workflow d’application logique.

    Si vous avez besoin d’étapes supplémentaires pour ce workflow d’application logique, par exemple, pour décoder le contenu du message et sortir ce contenu au format d’objet JSON, continuez à ajouter les actions nécessaires pour votre workflow d’application logique.

Vous avez maintenant terminé la configuration de votre workflow d’application logique B2B. Dans une application réelle, vous pourriez stocker les données X12 décodées dans une application métier ou un magasin de données. Par exemple, consultez la documentation suivante :

Pour vous connecter à vos propres applications métier et utiliser ces API dans votre application logique, vous pouvez ajouter des actions ou écrire des API personnalisées.

Étapes suivantes