Configurer les tâches durables en appelant des workflows d’application logique avec Azure Functions

S’applique à : Azure Logic Apps (Consommation)

Lorsque vous devez déployer un écouteur ou une tâche durable, vous pouvez créer un workflow d’application logique qui utilise le déclencheur de requête, et fait appel à Azure Functions pour appeler ce déclencheur et exécuter le workflow.

Par exemple, vous pouvez créer une fonction qui écoute les messages arrivant dans une file d’attente Azure Service Bus. Lorsque cet événement se produit, la fonction appelle le déclencheur de requête, qui fonctionne comme un déclencheur d’émission (push) pour exécuter automatiquement le workflow.

Ce guide pratique montre comment créer un workflow d’application logique qui démarre avec le déclencheur de requête. Vous créez ensuite une fonction qui écoute une file d’attente Service Bus. Quand un message arrive dans la file d’attente, la fonction appelle le point de terminaison créé par le déclencheur de requête pour exécuter votre workflow.

Notes

Vous pouvez implémenter ce comportement à l’aide d’un workflow d’application logique Consommation ou Standard, mais cet exemple continue avec un workflow Consommation.

Prérequis

Créer un workflow d’application logique

  1. Dans le portail Azure, créez une application logique vide Consommation en sélectionnant le modèle Application logique vide.

  2. Dans le concepteur qui s’est ouvert, sous la zone de recherche du concepteur, sélectionnez Intégré. Dans la zone de recherche, entrez requête.

  3. Dans la liste des déclencheurs, sélectionnez le déclencheur nommé Quand une requête HTTP est reçue.

    Capture d’écran du concepteur dans le portail. La zone de recherche contient « requête http ». Sous « Déclencheurs », l’option « Lors de la réception d’une requête HTTP » est mise en surbrillance.

    Avec le déclencheur Requête, vous pouvez éventuellement entrer un schéma JSON à utiliser avec le message de file d’attente. Les schémas JSON aident le concepteur à comprendre la structure des données d’entrée et facilitent l’utilisation des sorties dans votre workflow.

  4. Pour spécifier un schéma, entrez-le dans la zone Schéma JSON du corps de la demande.

    Capture d’écran des détails d’un déclencheur de requête HTTP. Du code JSON est visible dans la zone « Schéma JSON du corps de la demande ».

    Si vous n’avez pas de schéma, mais un exemple de charge utile au format JSON, vous pouvez générer un schéma à partir de cette charge utile.

    1. Dans le déclencheur de requête, sélectionnez Utiliser l’exemple de charge utile pour générer le schéma.

    2. Sous Entrer ou coller un exemple de charge utile JSON, entrez votre exemple de charge utile, puis sélectionnez Terminé.

      Capture d’écran des détails d’un déclencheur de requête HTTP. Sous « Entrez ou collez un exemple de charge utile JSON », certaines données de charge utile sont visibles.

      L’exemple de charge utile illustré plus haut génère le schéma suivant, qui apparaît dans le déclencheur :

      {
         "type": "object",
         "properties": {
            "address": {
               "type": "object",
               "properties": {
                  "number": {
                     "type": "integer"
                  },
                  "street": {
                     "type": "string"
                  },
                  "city": {
                     "type": "string"
                  },
                  "postalCode": {
                     "type": "integer"
                  },
                  "country": {
                     "type": "string"
                  }
               }
            }
         }
      }
      
  5. Sous le déclencheur, ajoutez toutes les autres actions que vous souhaitez utiliser pour traiter le message reçu.

    Par exemple, ajoutez une action qui envoie un e-mail avec le connecteur Office 365 Outlook.

  6. Enregistrez votre workflow d’application logique.

    Cette étape génère l’URL de rappel pour le déclencheur de requête dans votre workflow. Vous utilisez ensuite cette URL de rappel dans le code pour le déclencheur de file d’attente Azure Service Bus. L’URL apparaît s’affiche dans la propriété HTTP POST URL.

    Capture d’écran des détails d’un déclencheur de requête HTTP. En regard de « URL HTTP POST », une URL est visible.

Créer une fonction

Ensuite, créez la fonction qui écoute la file d’attente et qui appelle le point de terminaison sur le déclencheur de requête quand un message arrive.

  1. Ouvrez votre application de fonction dans le portail Azure.

  2. Dans le menu de navigation de l’application de fonction, sélectionnez Fonctions. Dans le volet Fonctions, sélectionnez Créer.

    Capture d’écran d’une application de fonction avec « Fonctions » mis en surbrillance dans le menu de l’application de fonction. La page « Fonctions » est ouverte et « Créer » est mis en surbrillance.

  3. Sous Sélectionner un modèle, sélectionnez le modèle nommé Déclencheur de file d’attente Azure Service Bus. Quand vous voyez la section Détails du modèle, qui présente des options différentes selon le modèle sélectionné, entrez les informations suivantes :

    Propriété Valeur Description
    Nouvelle fonction <function-name> Entrez un nom pour votre fonction.
    Connexion Service Bus <Service-Bus-connection> Sélectionnez Nouveau pour créer la connexion à la file d’attente Service Bus, qui utilise l’écouteur OnMessageReceive() du SDK Service Bus.
    Nom de la file d’attente <nom-file d’attente> Entrez le nom de la file d’attente.

    Capture d’écran du volet « Créer une fonction » avec « Déclencheur de file d’attente Azure Service Bus » mis en surbrillance, et les détails de l’exemple de modèle entrés.

  4. Sélectionnez Créer lorsque vous avez terminé.

    Le portail Azure affiche maintenant la page Vue d’ensemble de votre nouvelle fonction Déclencheur de file d’attente Azure Service Bus.

  5. À présent, écrivez une fonction de base qui appelle le point de terminaison du workflow d’application logique que vous avez créé précédemment. Avant d’écrire la fonction, passez en revue les considérations suivantes :

    L’exemple suivant utilise la méthode Task.Run en mode asynchrone. Pour plus d’informations, consultez l’article Programmation asynchrone avec async et await. L’exemple utilise aussi le type de contenu de message application/json, mais vous pouvez le changer si nécessaire.

    using System;
    using System.Threading.Tasks;
    using System.Net.Http;
    using System.Text;
    
    // Set up the URI for the logic app workflow. You can also get this value on the logic app's 'Overview' pane, under the trigger history, or from an environment variable.
    private static string logicAppUri = @"https://prod-05.westus.logic.azure.com:443/workflows/<remaining-callback-URL>";
    
    // Reuse the instance of HTTP clients if possible. For more information, see https://learn.microsoft.com/azure/azure-functions/manage-connections.
    private static HttpClient httpClient = new HttpClient();
    
    public static async Task Run(string myQueueItem, TraceWriter log) 
    {
       log.Info($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
       var response = await httpClient.PostAsync(logicAppUri, new StringContent(myQueueItem, Encoding.UTF8, "application/json")); 
    }
    

Tester le flux de travail d’une application logique

Pour les tests, ajoutez un message à la file d’attente Service Bus en effectuant les étapes suivantes ou en utilisant un autre outil :

  1. Dans le portail Azure, ouvrez votre espace de noms Service Bus.

  2. Dans le menu de navigation de l’espace de noms Service Bus, sélectionnez Files d’attente.

    Capture d’écran d’un espace de noms Service Bus. Dans le menu de navigation, « Files d’attente » est mis en surbrillance.

  3. Sélectionnez la file d’attente Service Bus que vous avez précédemment liée à votre fonction par le biais d’une connexion Service Bus.

  4. Dans le menu de navigation de la file d’attente, sélectionnez Service Bus Explorer et, dans la barre d’outils, sélectionnez Envoyer des messages.

    Capture d’écran d’une page de file d’attente Service Bus dans le portail, avec « Envoyer des messages » mis en surbrillance. Dans le menu de navigation, « Service Bus Explorer » est mis en surbrillance.

  5. Dans le volet Envoyer des messages, spécifiez le message à envoyer à la file d’attente Service Bus.

    Ce message déclenche votre workflow d’application logique.

Étapes suivantes