Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Lorsque vous créez un flux de travail d’application logique dans Azure Logic Apps, le flux de travail a une définition JSON (JavaScript Object Notation) sous-jacente qui décrit la logique réelle qui exécute le flux de travail. La définition de flux de travail suit une structure validée par rapport au schéma du langage de définition de flux de travail. Cette référence fournit une vue d’ensemble de cette structure et de la façon dont le schéma définit les attributs dans votre définition de flux de travail.
Structure d’une définition de flux de travail
Une définition de flux de travail inclut toujours un déclencheur qui instancie le flux de travail, ainsi qu’une ou plusieurs actions qui s’exécutent après le déclenchement.
Voici la structure générale d’une définition de flux de travail :
"definition": {
"$schema": "<workflow-definition-language-schema-version>",
"actions": { "<workflow-action-definitions>" },
"contentVersion": "<workflow-definition-version-number>",
"outputs": { "<workflow-output-definitions>" },
"parameters": { "<workflow-parameter-definitions>" },
"staticResults": { "<static-results-definitions>" },
"triggers": { "<workflow-trigger-definitions>" }
}
| Attribute | Required | Description |
|---|---|---|
definition |
Yes | Élément de départ de votre définition de flux de travail |
$schema |
Uniquement en cas de référence externe à une définition de flux de travail | Emplacement du fichier de schéma JSON qui décrit la version du langage de définition de flux de travail, que vous pouvez trouver ici : https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json |
actions |
No | Définitions d’une ou plusieurs actions à exécuter lors de l’exécution du flux de travail. Pour plus d’informations, consultez Déclencheurs et actions. Nombre maximal d'actions : 250 |
contentVersion |
No | Numéro de version de votre définition de flux de travail (1.0.0.0 par défaut). Pour identifier et vérifier plus facilement la définition correcte lors du déploiement d’un flux de travail, spécifiez une valeur à utiliser. |
outputs |
No | Les définitions des sorties à renvoyer lors de l’exécution d’un flux de travail. Pour plus d’informations, consultez Sorties. Nombre maximal de sorties : 10 |
parameters |
No | Les définitions pour un ou plusieurs paramètres qui passent les valeurs à utiliser au moment de l’exécution de votre application logique. Pour plus d’informations, consultez Paramètres. Nombre maximal de paramètres : 50 |
staticResults |
No | Définitions d’un ou plusieurs résultats statiques renvoyés par les actions comme sorties fictives lorsque des résultats statiques sont activés sur ces actions. Dans chaque définition d’action, l’attribut runtimeConfiguration.staticResult.name fait référence à la définition correspondante dans staticResults. Pour plus d’informations, consultez Les résultats statiques. |
triggers |
No | Définitions d’un ou plusieurs déclencheurs qui instancient votre flux de travail. Vous pouvez définir plus d’un déclencheur, mais uniquement avec le langage de définition de flux de travail (vous ne pouvez pas le faire visuellement via le concepteur de flux de travail). Pour plus d’informations, consultez Déclencheurs et actions. Nombre maximal de déclencheurs : 10 |
Déclencheurs et actions
Dans une définition de flux de travail, les sections triggers et actions définissent les appels qui se produisent pendant l’exécution de votre flux de travail. Pour obtenir des informations supplémentaires sur ces sections et connaître la syntaxe à utiliser, consultez Déclencheurs et actions du flux de travail.
Parameters
Le cycle de vie du déploiement a généralement des environnements différents pour le développement, le test, la mise en lots et la production. Lorsque vous déployez des applications logiques dans différents environnements, vous souhaiterez probablement utiliser des valeurs différentes, telles que des chaînes de connexion, en fonction de vos besoins en matière de déploiement. Vous pouvez également avoir des valeurs que vous souhaitez réutiliser tout au long de votre flux de travail sans codage en dur ou qui changent souvent. Dans la section de votre définition de flux de parameters travail, vous pouvez définir ou modifier des paramètres pour les valeurs utilisées par votre flux de travail au moment de l’exécution. Vous devez d’abord définir ces paramètres avant de pouvoir référencer ces paramètres ailleurs dans votre définition de flux de travail.
Voici la structure générale d’une définition de paramètre :
"parameters": {
"<parameter-name>": {
"type": "<parameter-type>",
"defaultValue": <default-parameter-value>,
"allowedValues": [ <array-with-permitted-parameter-values> ],
"metadata": {
"description": "<parameter-description>"
}
}
},
| Attribute | Required | Type | Description |
|---|---|---|---|
| < parameter-name> | Yes | String | Le nom du paramètre que vous voulez définir |
| < type de paramètre> | Yes | int, float, string, bool, array, object, securestring, secureobject Remarque : pour tous les mots de passe, clés et secrets, utilisez le ou securestring les secureobject types, car l’opération GET ne retourne pas ces types. Pour plus d’informations sur la sécurisation des paramètres, consultez Recommandations de sécurité pour les paramètres d’action et d’entrée. |
Type du paramètre |
| < default-parameter-value> | Yes | Identique à type |
La valeur par défaut du paramètre quand aucune valeur n’est spécifiée lors de l’instanciation du flux de travail. L’attribut defaultValue est requis pour que le concepteur de flux de travail puisse afficher correctement le paramètre, mais vous pouvez spécifier une valeur vide. |
| < array-with-permitted-parameter-values> | No | Array | Tableau regroupant les valeurs que le paramètre peut accepter |
| < parameter-description> | No | Objet JSON | Tous les autres détails des paramètres, tels que la description du paramètre |
Ensuite, créez un modèle Azure Resource Manager pour votre définition de flux de travail, définissez les paramètres de modèle qui acceptent les valeurs que vous souhaitez au moment du déploiement, remplacez les valeurs codées en dur par des références au modèle ou à la définition du flux de travail et stockez les valeurs à utiliser au moment du déploiement dans un fichier de paramètres distinct. De cette façon, vous pouvez modifier ces valeurs plus facilement par le biais du fichier de paramètres sans avoir à mettre à jour et à redéployer votre application logique. Pour plus d’informations sensibles ou doivent être sécurisées, telles que les noms d’utilisateur, les mots de passe et les secrets, vous pouvez stocker ces valeurs dans Azure Key Vault et faire en sorte que votre fichier de paramètres récupère ces valeurs à partir de votre coffre de clés. Pour plus d’informations et des exemples sur la définition des paramètres au niveau du modèle et de la définition du flux de travail, consultez Vue d’ensemble : Automatiser le déploiement pour les applications logiques avec des modèles Azure Resource Manager.
Résultats statiques
Dans l’attribut staticResults, définissez une sortie outputs et status fictives que l’action renvoie lorsque le paramètre de résultat statique de l’action est activé. Dans la définition de l’action, l’attribut runtimeConfiguration.staticResult.name fait référence au nom de la définition de résultat statique dans staticResults. Découvrez comment Tester des flux de travail d’applications logiques avec des données fictives en configurant des résultats statiques.
"definition": {
"$schema": "<...>",
"actions": { "<...>" },
"contentVersion": "<...>",
"outputs": { "<...>" },
"parameters": { "<...>" },
"staticResults": {
"<static-result-definition-name>": {
"outputs": {
<output-attributes-and-values-returned>,
"headers": { <header-values> },
"statusCode": "<status-code-returned>"
},
"status": "<action-status>"
}
},
"triggers": { "<...>" }
}
| Attribute | Required | Type | Description |
|---|---|---|---|
| < static-result-definition-name> | Yes | String | Nom de la définition de résultat statique qu’une définition d’action peut référencer via un objet runtimeConfiguration.staticResult. Pour plus d’informations, consultez Paramètres de configuration d’exécution. Vous pouvez utiliser n’importe quel nom unique. Par défaut, ce nom unique est ajouté avec un nombre, qui est incrémenté si nécessaire. |
| < output-attributes-and-values-returned> | Yes | Varies | Les configurations requises pour ces attributs varient selon différentes conditions. Par exemple, lorsque l’attribut status est Succeeded, l’attribut outputs inclut les attributs et les valeurs renvoyées comme sorties fictives par l’action. Si l’attribut status est Failed, l’attribut outputs inclut l’attribut errors, qui est un tableau avec un ou plusieurs objets message avec des informations erronées. |
| < header-values> | No | JSON | Toute valeur renvoyée par l’action |
| < status-code-returned> | Yes | String | Code d’état retourné par l’action |
| < état de l’action> | Yes | String | État de l’action, par exemple, Succeeded ou Failed |
Par exemple, dans la définition de l’action HTTP, l’attribut runtimeConfiguration.staticResult.name fait référence à HTTP0 dans l’attribut staticResults, où les sorties fictives de l’action sont définies. L’attribut runtimeConfiguration.staticResult.staticResultOptions spécifie le paramètre du résultat statique Enabled sur l’action HTTP.
"actions": {
"HTTP": {
"inputs": {
"method": "GET",
"uri": "https://www.microsoft.com"
},
"runAfter": {},
"runtimeConfiguration": {
"staticResult": {
"name": "HTTP0",
"staticResultOptions": "Enabled"
}
},
"type": "Http"
}
},
L’action HTTP retourne les sorties dans la définition HTTP0 dans staticResults. Dans cet exemple, pour le code d’état, la sortie fictive est OK. Pour les valeurs d’en-tête, la sortie fictive est "Content-Type": "application/JSON". Pour l’état de l’action, la sortie fictive est Succeeded.
"definition": {
"$schema": "<...>",
"actions": { "<...>" },
"contentVersion": "<...>",
"outputs": { "<...>" },
"parameters": { "<...>" },
"staticResults": {
"HTTP0": {
"outputs": {
"headers": {
"Content-Type": "application/JSON"
},
"statusCode": "OK"
},
"status": "Succeeded"
}
},
"triggers": { "<...>" }
},
Expressions
Avec JSON, vous pouvez avoir des valeurs littérales qui existent au moment du design, par exemple :
"customerName": "Sophia Owen",
"rainbowColors": ["red", "orange", "yellow", "green", "blue", "indigo", "violet"],
"rainbowColorsCount": 7
Vous pouvez également avoir des valeurs qui n’existent pas avant l’exécution. Pour représenter ces valeurs, vous pouvez utiliser des expressions qui sont évaluées au moment de l’exécution. Une expression est une séquence qui peut contenir une ou plusieurs fonctions, opérateurs, variables, valeurs explicites ou constantes. Dans votre définition de flux de travail, vous pouvez utiliser une expression n’importe où dans une valeur de chaîne JSON en faisant précéder l’expression d’une arobase (@). Quand une expression qui représente une valeur JSON est évaluée, le corps de l’expression est extrait en supprimant le caractère @, et une autre valeur JSON est systématiquement générée.
Par exemple, pour la propriété précédemment définiecustomerName, vous pouvez obtenir la valeur de la propriété à l’aide de la fonction parameters() dans une expression et affecter cette valeur à la accountName propriété :
"customerName": "Sophia Owen",
"accountName": "@parameters('customerName')"
L’interpolation de chaîne vous permet également d’utiliser plusieurs expressions à l’intérieur de chaînes encapsulées par le caractère @ et les accolades ({}). Voici la syntaxe :
@{ "<expression1>", "<expression2>" }
Le résultat est toujours une chaîne, ce qui rend cette fonctionnalité similaire à la fonction concat(), par exemple :
"customerName": "First name: @{parameters('firstName')} Last name: @{parameters('lastName')}"
Si vous avez une chaîne littérale qui commence par le caractère @, faites précéder le caractère @ d’un autre caractère @ faisant office de caractère d’échappement : @@.
Ces exemples montrent comment les expressions sont évaluées :
| Valeur JSON | Result |
|---|---|
| « Sophia Owen » | Renvoie les caractères suivants : 'Sophia Owen' |
| "array[1]" | Renvoie ces caractères : « array[1] » |
| "@@" | Renvoie ces caractères sous forme de chaîne de un caractère : « @ » |
| " @" | Renvoie ces caractères sous forme de chaîne de deux caractères : « @ » |
Pour ces exemples, supposons que vous définissiez "January" pour "myBirthMonth" et le nombre 42 pour "myAge" :
"myBirthMonth": "January",
"myAge": 42
Ces exemples montrent comment les expressions suivantes sont évaluées :
| Expression JSON | Result |
|---|---|
| "@parameters('myBirthMonth')" | Renvoie la chaîne suivante : "January" |
| "@{parameters('myBirthMonth')}" | Renvoie la chaîne suivante : "January" |
| "@parameters('myAge')" | Renvoie le nombre suivant : 42 |
| "@{parameters('myAge')}" | Renvoie le nombre suivant sous forme de chaîne : "42" |
| « Mon âge est @{parameters('myAge')} » | Renvoie la chaîne suivante : "My age is 42" |
| "@concat('Mon âge est ', string(parameters('myAge')) | Renvoie la chaîne suivante : "My age is 42" |
| « Mon âge est @@{parameters('myAge')} » | Renvoie cette chaîne, qui inclut l’expression : « My age is @{parameters('myAge')} » |
Quand vous travaillez visuellement dans le concepteur de flux de travail, vous pouvez créer des expressions à l’aide de l’éditeur d’expressions, par exemple :
Quand vous avez terminé, l’expression apparaît pour la propriété correspondante dans votre définition de flux de travail, par exemple, la propriété searchQuery ici :
"Search_tweets": {
"inputs": {
"host": {
"connection": {
"name": "@parameters('$connections')['x']['connectionId']"
}
}
},
"method": "get",
"path": "/searchtweets",
"queries": {
"maxResults": 20,
"searchQuery": "Azure @{concat('firstName','', 'LastName')}"
}
},
Outputs
Dans la section outputs, définissez les données que votre flux de travail peut renvoyer une fois son exécution terminée. Par exemple, pour suivre un état ou une valeur spécifique à chaque exécution, spécifiez le renvoi de cette donnée par la sortie du flux de travail.
Note
Pour la réponse à des requêtes entrantes à partir de l’API REST d’un service, n’utilisez pas outputs. Utilisez le type d’action Response à la place.
Pour plus d’informations, consultez Déclencheurs et actions du flux de travail.
Voici la structure générale d’une définition de sortie :
"outputs": {
"<key-name>": {
"type": "<key-type>",
"value": "<key-value>"
}
}
| Attribute | Required | Type | Description |
|---|---|---|---|
| < nom de clé> | Yes | String | Nom de la clé de la valeur renvoyée pour la sortie |
| < type de clé> | Yes | int, float, string, securestring, bool, array, objet JSON | Type de la valeur renvoyée pour la sortie |
| < clé-valeur> | Yes | Identique au <type de clé> | Valeur renvoyée pour la sortie |
Pour obtenir la sortie d’une exécution de flux de travail, examinez l’historique et les détails des exécutions de votre application logique dans le portail Azure ou utilisez l’API REST de flux de travail. Vous pouvez également transmettre la sortie à des systèmes externes, par exemple Power BI, afin de créer des tableaux de bord.
Operators
Dans les expressions et les fonctions, les opérateurs effectuent des tâches spécifiques, telles que référencer une propriété ou une valeur dans un tableau.
| Operator | Task |
|---|---|
' |
Pour utiliser une chaîne littérale en tant qu’entrée ou dans des expressions et des fonctions, vous devez placer la chaîne uniquement entre des guillemets simples, par exemple, '<myString>'. N’utilisez pas de guillemets doubles (""), qui entrent en conflit avec la mise en forme JSON autour d’une expression entière. Par exemple: Oui : length('Hello') Non : length(« Hello ») Quand vous transmettez des tableaux ou des nombres, vous n’avez pas besoin de les placer entre des signes de ponctuation. Par exemple: Oui : length([1, 2, 3]) Non : length(« [1, 2, 3] ») |
[] |
Pour référencer une valeur à une position spécifique (index) dans un tableau ou à l’intérieur d’un objet JSON, utilisez des crochets, par exemple : - Pour obtenir le deuxième élément d’un tableau : myArray[1] - Pour accéder aux propriétés d'un objet JSON : Exemple 1 : setProperty(<object>, '<parent-property>', addProperty(<object>['<parent-property>'], '<child-property>', <value>) Exemple 2 : lastIndexOf(triggerBody()?['subject'],'some string') |
. |
Pour référencer une propriété d’un objet, utilisez l’opérateur point. Par exemple, pour obtenir la propriété name d’un objet JSON customer : "parameters('customer').name" |
? |
Pour référencer la propriété d’un objet sans risquer une erreur d’exécution ou l’échec du flux de travail, utilisez l’opérateur de point d’interrogation (?), également appelé opérateur ignore Null, précédant la propriété. Cet opérateur vous permet d’accéder en toute sécurité à un élément de propriété ou de tableau lorsque l’objet parent ou la propriété référencée peut contenir null ou est manquant. - Si l’objet parent qui s’affiche avant que l’opérateur ? soit null ou ne dispose pas de la propriété référencée, l’expression entière retourne null, au lieu de l’échec du flux de travail. - Si l’objet ou la propriété existe, l’expression retourne la valeur de la propriété. Par exemple, supposons que vous ayez l’expression suivante : triggerBody()?['ContentData'] - Si triggerBody() retourne un objet à partir de la ContentData propriété, vous obtenez la valeur de l’objet. - Si triggerBody() la propriété est null manquante ou est manquante, la fonction retourne ContentData au lieu d’échouer avec l’erreur null modèle ». L’opérateur ? vous permet également de chaîner en toute sécurité les propriétés d’accès et est utile dans les scénarios suivants : - Gérer les expressions qui fonctionnent avec des champs JSON facultatifs. - Gérer les sorties du connecteur qui peuvent omettre certaines propriétés. - Évitez les expressions fragiles dans la logique conditionnelle. Par exemple, pour chaîner l’accès aux propriétés et gérer les sorties Null à partir d’un déclencheur, vous pouvez utiliser l’expression suivante : coalesce(trigger().outputs?.body?['<property-name>'], '<property-default-value>') |
Functions
Certaines expressions obtiennent leurs valeurs à partir d’actions runtime qui peuvent ne pas encore exister au début de l’exécution de votre définition de flux de travail. Pour référencer ou utiliser ces valeurs dans des expressions, vous pouvez utiliser des fonctions que le langage de définition de flux de travail fournit.