Cette rubrique décrit les principes de base et des exemples d'étapes de choix, ainsi que les expressions conditionnelles associées.
Paramètres
Les étapes de choix permettent d'exécuter différentes étapes d'un workflow selon des conditions, à l'instar de l'instruction switch-case dans les langages de programmation. Une étape de choix contient plusieurs options de choix et une option par défaut. Chaque option de choix comprend une expression conditionnelle, plusieurs étapes et des instructions goto. L'option par défaut ne contient que des étapes et des instructions goto. Lorsque le workflow atteint une étape de choix, le système évalue si les expressions conditionnelles retournent True dans l'ordre défini.
Si la valeur
Trueest renvoyée, le système exécute les étapes puis les instructions goto définies dans l'option de choix correspondante.Si aucune option de choix ne renvoie
True, le système exécute les étapes et les instructions goto définies dans l'option par défaut.Si aucune option par défaut n'est définie, l'étape de choix se termine.
Une étape de choix contient les attributs suivants :
type : Obligatoire. Type de l'étape. La valeur
choicespécifie une étape de choix.name : Obligatoire. Nom de l'étape.
-
choices : Obligatoire. Tableau contenant plusieurs options de choix. Chaque élément correspond à une option de choix.
condition : Obligatoire. Expression conditionnelle. Les expressions conditionnelles font référence aux entrées de l'étape via JSONPath (
$.key).steps : Facultatif. Séquence d'étapes définie pour une option de choix.
goto : Facultatif. Nom de l'étape cible, qui doit être au même niveau que l'étape de choix.
-
default : Obligatoire. Option par défaut.
steps : Facultatif. Séquence d'étapes définie pour l'option par défaut.
goto : Facultatif. Nom de l'étape cible, qui doit être au même niveau que l'étape de choix actuelle.
end : Facultatif. Indique s'il faut exécuter les étapes suivantes après la fin de l'étape actuelle.
inputMappings : Facultatif. Mappages d'entrée.
-
outputMappings : Facultatif. Mappages de sortie. La variable
$localde cette étape indique le résultat d'exécution de la branche de choix.RemarqueSi aucun mappage de sortie n'est spécifié,
$localsert par défaut de sortie pour cette étape.
Exemples
Le workflow d'exemple suivant définit une étape de choix.
Si la valeur de
statusdans l'entrée estready, les étapespass1,pass3etfinalde la première option de choix sont exécutées séquentiellement.Si la valeur de
statusdans l'entrée estfailed, les instructions goto de la deuxième option de choix sont exécutées, l'étape de choix se termine et l'étapefinalest exécutée.Si la valeur de
statusdans l'entrée n'est nireadynifailed, l'option par défaut est exécutée. Autrement dit, les étapespass2etfinalsont exécutées.
version: v1
type: flow
steps:
- type: choice
name: mychoice
choices:
- condition: $.status == "ready"
# choice with steps
steps:
- type: pass
name: pass1
- condition: $.status == "failed"
# choice with goto
goto: final
default:
# choice with both steps and goto
steps:
- type: pass
name: pass2
goto: final
- type: pass
name: pass3
- type: pass
name: final
Expressions conditionnelles
Une expression conditionnelle se compose des opérations et variables suivantes :
Opérations de comparaison :
>>=<<===!=. Elles s'appliquent aux chaînes et aux nombres.Opérations logiques :
||&&.Constantes de chaîne : Une constante de chaîne est entourée de guillemets doubles (") ou d'accents graves (
). Exemples : "foobar" oufoobar`.Constantes numériques :
112.5.Constante booléenne :
trueoufalse.Préfixe :
!-.Contain :
in, utilisé pour déterminer si un tableau contient une valeur ou si un objet contient une clé spécifique.
L'exemple suivant montre les résultats d'exécution des étapes pour différentes expressions conditionnelles.
{
"a": 1,
"b": {
"b1": true,
"b2": "ready"
},
"c": [1, 2, 3],
"d": 1,
"e": 1,
"f": {
"f1": false,
"f2": "inprogress"
}
}
|
Expression conditionnelle |
Résultat |
|
|
true |
|
|
false |
|
|
true |
|
|
true |
|
|
true |
|
|
true |
|
|
true |
|
|
true |
|
|
false |
|
|
true |
|
|
true |
|
|
false |
|
|
true |
|
|
true |
|
|
false |
|
|
true |
|
|
true |
|
|
true |