Un état Choice ajoute une branche conditionnelle à un flux. Il évalue les conditions par rapport aux données d'entrée et dirige l'exécution vers la première branche correspondante, comme une instruction switch-case en programmation.
Fonctionnement
Lorsqu'un flux atteint un état Choice, le système évalue la condition de chaque branche dans l'ordre :
Si une condition est évaluée à
true, le flux passe à l'état indiqué dans le champNextde cette branche.Si aucune condition n'est évaluée à
true, le flux passe à l'état indiqué dans le champDefault.
Le champ Default est obligatoire. Cela garantit que le flux dispose toujours d'un chemin de transition valide, même si aucune condition de branche ne correspond.
Les états Choice ne prennent pas en charge les attributs End et Next au niveau de l'état. Utilisez l'attribut Default pour définir la transition de secours. Chaque ChoiceBranch définit son propre attribut Next afin d'indiquer la destination du flux lorsque la condition est remplie.
Attributs
|
Attribut |
Type |
Obligatoire |
Description |
Exemple |
|
Name |
string |
Oui |
Nom de l'état. |
my state |
|
Description |
string |
Non |
Description de l'état. |
describe it here |
|
Type |
string |
Oui |
Type d'état. Définissez la valeur sur |
Choice |
|
InputConstructor |
map[string]any |
Non |
Constructeur d'entrée. Pour plus d'informations, consultez la section Entrées et sorties. |
-- |
|
Default |
string |
Oui |
État de secours vers lequel passer lorsqu'aucune condition de branche n'est évaluée à |
my next task |
|
Branches |
ChoiceBranch[] |
Oui |
Tableau de branches de choix. Consultez le tableau ChoiceBranch. |
-- |
ChoiceBranch
Chaque entrée du tableau Branches contient les attributs suivants :
|
Attribut |
Type |
Obligatoire |
Description |
Exemple |
|
Condition |
string |
Oui |
Expression conditionnelle évaluée à |
|
|
Next |
string |
Oui |
État vers lequel passer lorsque la condition est évaluée à |
my next task |
Exemple
Le flux suivant dirige l'exécution en fonction de la valeur de $Input.data :
Si
$Input.dataest égal à"ready", le flux passe à l'étatPass1.Sinon, le flux passe à l'état par défaut
Pass2.
Type: StateMachine
Name: MyWorkflow
SpecVersion: v1
StartAt: Choice
States:
- Type: Choice
Name: Choice
Branches:
- Condition: $Input.data == "ready"
Next: Pass1
Default: Pass2
- Type: Pass
Name: Pass2
End: true
- Type: Pass
Name: Pass1
End: true
Expressions conditionnelles
Les expressions conditionnelles combinent des variables, des constantes et des opérateurs pour produire un résultat booléen (true ou false). Utilisez la variable $Input pour référencer les données d'entrée de l'état et la variable $Context pour référencer les données de contexte du flux. Pour plus d'informations, consultez la section Transmission des données.
Opérateurs pris en charge
|
Catégorie |
Opérateurs |
Types applicables |
||
|
Comparaison |
|
Chaînes, nombres |
||
|
Logique |
|
` (OU) |
Expressions booléennes |
|
|
Préfixe |
|
Expressions booléennes, nombres |
||
|
Inclusion |
|
Tableaux (vérifie si une valeur existe), objets (vérifie si une clé existe) |
Constantes prises en charge
|
Type |
Syntaxe |
Exemples |
|
Chaîne |
Guillemets doubles ( |
|
|
Numérique |
Entier ou décimal |
|
|
Booléen |
Mots-clés en minuscules |
|
Exemples d'expressions
À partir des données $Input suivantes, les tableaux ci-dessous montrent comment différentes expressions sont évaluées :
{
"a": 1,
"b": {
"b1": true,
"b2": "ready"
},
"c": [1, 2, 3],
"d": 1,
"e": 1,
"f": {
"f1": false,
"f2": "inprogress"
}
}
Comparaisons numériques
|
Expression |
Résultat |
Description |
|
|
true |
Égal à une valeur littérale |
|
|
false |
Différent de la valeur littérale |
|
|
true |
Supérieur à |
|
|
true |
Littéral placé à gauche |
|
|
true |
Supérieur ou égal à |
|
|
true |
Différent de |
Comparaisons booléennes
|
Expression |
Résultat |
Description |
|
|
true |
Référence booléenne directe |
|
|
true |
Comparaison explicite avec |
|
|
false |
Comparaison explicite avec |
Comparaisons de chaînes
|
Expression |
Résultat |
Description |
|
|
true |
Égalité de chaînes |
|
|
false |
Inégalité de chaînes |
Expressions composées
|
Expression |
Résultat |
Description |
|
|
true |
Les deux conditions sont vraies |
|
|
false |
La première condition est fausse |
Comparaisons entre tableaux et variables
|
Expression |
Résultat |
Description |
|
|
true |
Accès à un élément de tableau par index |
|
|
true |
Comparaison de deux variables |
Vérifications d'inclusion
|
Expression |
Résultat |
Description |
|
|
true |
La clé existe dans l'objet |
|
|
false |
La clé n'existe pas |
|
|
true |
La valeur existe dans le tableau |