Exécuter des extraits de code dans des workflows avec des opérations de code inclus dans Azure Logic Apps

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

Pour créer et exécuter un extrait de code dans votre workflow d’application logique sans configuration importante, vous pouvez utiliser le connecteur intégré de code inclus. Ce connecteur a une action qui retourne le résultat de l’extrait de code afin de pouvoir utiliser cette sortie dans les actions suivantes de votre workflow.

Actuellement, le connecteur n’a qu’une seule action, qui fonctionne parfaitement pour un extrait de code avec les attributs suivants, mais d’autres actions sont en cours de développement. Le connecteur de code inclus a également des limites différentes, selon que votre workflow d’application logique est Consommation ou Standard.

Action Langage Version du langage Durée d’exécution Taille des données Autres remarques
Exécuter du code JavaScript JavaScript Standard :
Node.js 16.x.x

Consommation :
Node.js 8.11.1

Pour plus d’informations, consultez Objets intégrés standard.
Se termine en 5 secondes ou moins. Gère jusqu’à 50 Mo de données. - Ne nécessite pas l’utilisation des actions de variables, qui ne sont pas prises en charge par l’action.

- Ne prend pas en charge la fonction require() pour l’exécution de JavaScript.

Pour exécuter du code qui ne correspond pas à ces attributs, vous pouvez plutôt créer et appeler une fonction via Azure Functions.

Cet article montre comment l’action fonctionne dans un exemple de workflow qui commence par un déclencheur Office 365 Outlook. Le workflow s’exécute lorsqu’un nouvel e-mail arrive dans le compte de messagerie Outlook associé. L’exemple d’extrait de code extrait toutes les adresses e-mail qui existent dans le corps de l’e-mail et retourne ces adresses comme sorties que vous pouvez utiliser dans une action suivante.

Le diagramme suivant montre les points forts de l’exemple de workflow :

Prérequis

Ajouter l’action Exécuter du code JavaScript

  1. Sur le portail Azure, ouvrez votre workflow d’application logique dans le concepteur.

  2. Dans le concepteur, suivez ces étapes générales pour ajouter l’action Code inclus nommée Exécuter du code JavaScript à votre workflow.

    Cet exemple ajoute l’action sous le déclencheur Office 365 Outlook. Par défaut, l’action contient un exemple de code, notamment une instruction return.

    Capture d'écran montrant l'action Exécuter un code JavaScript avec un exemple de code par défaut.

  3. Dans la zone Code, supprimez l’exemple de code et saisissez votre code. Écrivez le code que vous voulez placer à l’intérieur d’une méthode, mais sans la signature de méthode.

    Conseil

    Lorsque votre curseur se trouve dans la zone Code, la liste de contenu dynamique s’affiche. Bien que vous utilisiez cette liste ultérieurement, vous pouvez ignorer et laisser la liste ouverte pour l’instant. Ne sélectionnez pas Masquer.

    Si vous commencez à taper un mot clé reconnu, la liste de saisie semi-automatique s’affiche afin que vous puissiez sélectionner des mots clés parmi ceux qui sont disponibles, par exemple :

    Capture d'écran montrant le flux de travail de la consommation, l'action Exécuter le code JavaScript et la liste autocomplète des mots clés.

    L’exemple d’extrait de code suivant crée d’abord une variable nommée myResult, laquelle stocke une expression régulière qui spécifie un modèle à faire correspondre dans le texte d’entrée. Le code crée ensuite une variable nommée email qui stocke le contenu du corps du message email à partir de sorties du déclencheur.

    Capture d'écran montrant le flux de travail de la consommation, l'action Exécuter le code JavaScript et l'exemple de code qui crée des variables.

  4. Avec votre curseur toujours dans la zone Code, dans la liste de contenu dynamique ouverte, recherchez la section Quand un nouvel e-mail arrive, puis sélectionnez la propriété Body, qui référence le corps de l’e-mail.

    Capture d'écran montrant le flux de travail Consommation, l'action Exécuter le code JavaScript, la liste de contenu dynamique et la propriété « Corps » du message électronique sélectionnée.

    La liste de contenu dynamique affiche les sorties du déclencheur et toutes les actions précédentes lorsque ces sorties correspondent au format d’entrée de la zone d’édition actuellement dans le focus. Cette liste facilite l’utilisation et la référence de ces sorties à partir de votre workflow. Pour cet exemple, la liste affiche les sorties du déclencheur Outlook, y compris la propriété Body de l’e-mail.

    Une fois la propriété Corps sélectionnée, l’action Exécuter le code JavaScript résout le jeton en objet JSON workflowContext en lecture seule, que votre extrait de code peut utiliser comme entrée. L’objet workflowContext inclut des propriétés qui donnent à votre code accès aux sorties du déclencheur et aux actions précédentes de votre workflow, telles que la propriété body du déclencheur, qui diffère de la propriété Body de l’e-mail. Pour en savoir plus sur l’objet workflowContext, voir Faire référence aux sorties des actions et du déclencheur avec l’objet workflowContext plus loin dans cet article.

    Important

    Si votre extrait de code fait référence aux noms d’action qui incluent l’opérateur point (.), ces références doivent placer ces noms d’action entre crochets ([]) et guillemets (« »), par exemple :

    // Correct
    workflowContext.actions["my.action.name"].body

    // Incorrect
    workflowContext.actions.my.action.name.body

    De même, dans l'action Exécuter le code JavaScript, vous devez ajouter le Actionsparamètreet ensuite ajouter ces noms d'action à ce paramètre. Pour plus d’informations, consultez Ajouter des dépendances en tant que paramètres à une action de code Exécuter le code JavaScript plus loin dans cet article.

  5. Pour différencier la propriété Body de l’e-mail que vous avez sélectionnée dans la propriété body du déclencheur, renommez plutôt la deuxième propriété body en Body. Ajoutez le point-virgule fermant (;) à la fin pour terminer l’instruction de code.

    Capture d'écran montrant le flux de travail de l'application Logique de consommation, l'action Exécuter le code JavaScript et la propriété « Corps » renommée avec un point-virgule final.

    L'action Exécuter un code JavaScript ne nécessite pas de déclaration sur le plan syntaxiquereturn. Toutefois, en incluant l’instruction return, vous pouvez plus facilement référencer les résultats de l’action plus loin dans votre workflow à l’aide du jeton Result dans les actions ultérieures.

    Dans cet exemple, l’extrait de code renvoie le résultat en appelant la fonction match(), qui recherche dans le corps de l’e-mail des correspondances avec l’expression régulière. L’action Créer un tableau HTML utilise le jeton Result pour référencer les résultats de l’action Exécuter le code JavaScript, puis crée un résultat unique.

    Capture d’écran montrant le flux de travail d’application logique Consommation terminé.

  6. Lorsque vous avez terminé, enregistrez votre flux de travail.

Référencer les sorties de déclencheur et d’action à l’aide de l’objet workflowContext

À partir de votre extrait de code sur le concepteur, vous pouvez utiliser la liste de contenu dynamique pour sélectionner un jeton qui référence la sortie à partir du déclencheur ou toute action précédente. Lorsque vous sélectionnez le jeton, l’action Exécuter le code JavaScript résout ce jeton en objet JSON workflowContext en lecture seule. Cet objet donne à votre code accès aux sorties du déclencheur, à toutes les actions précédentes et au workflow. L’objet utilise la structure suivante et inclut les propriétés actions, trigger et workflow, qui sont également des objets :

{
   "workflowContext": {
      "actions": {
         "<action-name-1>": @actions('<action-name-1>'),
         "<action-name-2>": @actions('<action-name-2>')
      },
      "trigger": {
         @trigger()
      },
      "workflow": {
         @workflow()
      }
   }
}

Le tableau suivant contient des informations supplémentaires sur ces propriétés :

Propriété Type Description
actions Collection d’objets Objets de résultats des actions précédentes qui s’exécutent avant votre extrait de code. Chaque objet possède une paire clé-valeur, dans laquelle la clé correspond au nom de l’action, et la valeur équivaut au résultat de l’appel de la fonction actions() avec l’expression @actions('<action-name>').

Le nom de l’action tire parti du nom d’action utilisé dans la définition de workflow sous-jacente, qui remplace les espaces (« ») figurant dans le nom de l’action par des caractères de soulignement (_). Cette collection d’objets permet d’accéder aux valeurs de propriétés de l’action de l’instance de workflow exécutée.
trigger Object Objet de résultat du déclencheur où le résultat équivaut à l’appel de la fonction trigger(). Cet objet permet d’accéder aux valeurs de propriétés du déclencheur de l’instance de workflow exécutée.
workflow Object Objet de workflow équivalent à l’appel de la fonction workflow(). Cet objet permet d’accéder aux valeurs de propriétés (nom du workflow, ID d’exécution, etc.) à partir de l’instance de workflow actuellement exécutée.

Dans l’exemple de cet article, l’objet JSON workflowContext peut avoir les exemples de propriétés et valeurs suivantes à partir du déclencheur Outlook :

{
   "workflowContext": {
      "trigger": {
         "name": "When_a_new_email_arrives",
         "inputs": {
            "host": {
               "connection": {
                  "name": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Web/connections/office365"
               }
            },
            "method": "get",
            "path": "/Mail/OnNewEmail",
            "queries": {
               "includeAttachments": "False"
            }
         },
         "outputs": {
            "headers": {
               "Pragma": "no-cache",
               "Content-Type": "application/json; charset=utf-8",
               "Expires": "-1",
               "Content-Length": "962095"
            },
            "body": {
               "Id": "AAMkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgBGAAAAAABmZwxUQtCGTqSPpjjMQeD",
               "DateTimeReceived": "2019-03-28T19:42:16+00:00",
               "HasAttachment": false,
               "Subject": "Hello World",
               "BodyPreview": "Hello World",
               "Importance": 1,
               "ConversationId": "AAQkADY0NGZhNjdhLTRmZTQtNGFhOC1iYjFlLTk0MjZlZjczMWRhNgAQ",
               "IsRead": false,
               "IsHtml": true,
               "Body": "Hello World",
               "From": "<sender>@<domain>.com",
               "To": "<recipient-2>@<domain>.com;<recipient-2>@<domain>.com",
               "Cc": null,
               "Bcc": null,
               "Attachments": []
            }
         },
         "startTime": "2019-05-03T14:30:45.971564Z",
         "endTime": "2019-05-03T14:30:50.1746874Z",
         "scheduledTime": "2019-05-03T14:30:45.8778117Z",
         "trackingId": "1cd5ffbd-f989-4df5-a96a-6e9ce31d03c5",
         "clientTrackingId": "08586447130394969981639729333CU06",
         "originHistoryName": "08586447130394969981639729333CU06",
         "code": "OK",
         "status": "Succeeded"
      },
      "workflow": {
         "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>",
         "name": "<logic-app-workflow-name>",
         "type": "Microsoft.Logic/workflows",
         "location": "<Azure-region>",
         "run": {
            "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/providers/Microsoft.Logic/workflows/<logic-app-workflow-name>/runs/08586453954668694173655267965CU00",
            "name": "08586453954668694173655267965CU00",
            "type": "Microsoft.Logic/workflows/runs"
         }
      }
   }
}

Ajouter des dépendances en tant que paramètres à une action Exécuter le Code JavaScript

Dans certains cas, vous devrez peut-être demander explicitement que l’action Exécuter le code JavaScript inclue les sorties du déclencheur ou d’actions spécifiques référencées par votre code en tant que dépendances. Par exemple, vous devez effectuer cette étape supplémentaire lorsque votre code référence des sorties qui ne sont pas disponibles au moment de l’exécution du workflow. Pendant le temps de création du workflow, le moteur Azure Logic Apps analyse l’extrait de code pour déterminer si le code fait référence à des sorties de déclencheur ou d’action. Si ces références existent, le moteur inclut automatiquement ces sorties. Au moment de l’exécution du workflow, si la sortie du déclencheur ou de l’action référencée n’est pas trouvée dans l’objet workflowContext, le moteur génère une erreur. Pour résoudre cette erreur, vous devez ajouter ce déclencheur ou cette action comme dépendance explicite pour l’action Exécuter le Code JavaScript. Un autre scénario qui vous oblige à effectuer cette étape est lorsque l’objet workflowContext fait référence à un nom de déclencheur ou d’action qui utilise l’opérateur point (.).

Pour ajouter un déclencheur ou une action en tant que dépendance, vous ajoutez les paramètres Déclencheur ou Actions comme applicable à l’action Exécuter le code JavaScript. Vous ajoutez ensuite les noms de déclencheur ou d’action comme ils apparaissent dans la définition JSON sous-jacente de votre workflow.

Notes

Vous ne pouvez pas ajouter d’opérations Variables, des boucles telles que For each ou Until et des index d’itération en tant que dépendances explicites.

Si vous envisagez de réutiliser votre code, veillez à toujours utiliser la zone d’édition de l’extrait de code pour référencer les sorties de déclencheur et d’action. De cette façon, votre code inclut les références de jeton résolues, plutôt que d’ajouter les sorties de déclencheur ou d’action comme dépendances explicites.

Par exemple, supposons que l’action Envoyer un e-mail d'approbation du connecteur Office 365 Outlook précède l’extrait de code dans l’exemple de workflow. L’exemple d’extrait de code suivant inclut une référence à la sortie SelectedOption de cette action.

Pour cet exemple, vous devez ajouter uniquement le paramètre Actions, puis ajouter le nom JSON de l’action, Send_approval_email, au paramètre. De cette façon, vous spécifiez que l'action Exécuter le Code JavaScript inclut explicitement la sortie de l'action Envoyer un e-mail d’approbation.

Rechercher le nom JSON du déclencheur ou de l’action

Avant de commencer, vous avez besoin du nom JSON du déclencheur ou de l’action dans la définition de workflow sous-jacente.

  • Dans les noms de votre définition de workflow, utilisez un trait de soulignement (_), et non un espace.

  • Si un nom d’action utilise l’opérateur point (.), incluez cet opérateur, par exemple :

    My.Action.Name

  1. Dans la barre d’outils du Concepteur de workflows, sélectionnez Mode Code. Dans l’objet actions, recherchez le nom de l’action.

    Par exemple, Send_approval_email est le nom JSON de l’action Envoyer un e-mail d’approbation.

    Capture d’écran montrant le nom de l’action en JSON.

  2. Pour revenir au mode Création, dans la barre d’outils du mode Code, sélectionnez Concepteur.

  3. Maintenant, ajoutez l’action Exécuter du code JavaScript.

Ajouter le nom du déclencheur ou de l'action à l'action Exécuter le code JavaScript

  1. Dans l’action Exécuter le code JavaScript, ouvrez la liste Ajouter un nouveau paramètre.

  2. Dans la liste des paramètres, sélectionnez les paramètres suivants comme votre scénario le nécessite.

    Paramètre Description
    Actions Incluez les sorties des actions précédentes en tant que dépendances. Si vous sélectionnez ce paramètre, vous êtes invité à indiquer les actions que vous souhaitez ajouter.
    Déclencheur Inclure les sorties du déclencheur en tant que dépendances. Si vous sélectionnez ce paramètre, vous êtes invité à inclure les résultats du déclencheur. Donc, dans la liste Déclencheur, sélectionnez Oui.
  3. Pour cet exemple, sélectionnez le paramètre Actions.

    Capture d'écran montrant l'action Exécuter le code JavaScript avec le paramètre Actions sélectionné.

  4. Dans la zone Élément d’action - 1, saisissez le nom JSON de l’action.

    Capture d’écran montrant la zone « Élément d’action -1 » et le nom JSON de l’action.

  5. Pour ajouter un autre nom d’action, sélectionnez Ajouter un nouvel élément.

  6. Lorsque vous avez terminé, enregistrez votre flux de travail.

Informations de référence sur l’action

Pour en savoir plus sur la structure de l’action Exécuter le code JavaScript et sa syntaxe dans la définition de workflow sous-jacente, à l’aide du langage de définition du workflow, reportez-vous à la section de référence de cette action.

Étapes suivantes