Un état Parallel exécute plusieurs branches simultanément. Utilisez-le pour diviser un flux de travail en chemins concurrents, par exemple pour récupérer des données depuis plusieurs sources en même temps ou envoyer des notifications via différents canaux en parallèle.
Fonctionnement
Un état Parallel contient une ou plusieurs branches, et chaque branche possède sa propre séquence d'états enfants. À l'exécution :
L'état Parallel démarre toutes les branches de manière concurrente.
Chaque branche exécute ses états enfants indépendamment.
Une fois toutes les branches terminées, l'état Parallel regroupe les résultats dans une sortie unique de type
map[string]any. Le résultat de chaque branche est stocké sous une clé nomméeBranch<Index>(par exemple,Branch0,Branch1).Si un
OutputConstructorest défini, l'état Parallel l'applique pour transformer la sortie combinée avant de transmettre le résultat à l'état suivant.
Limites
Nombre maximal de branches par état Parallel : 50
Attributs
Attributs de l'état Parallel
| **Attribut** | **Type** | **Obligatoire** | **Description** |
|---|---|---|---|
Name |
string | Oui | Nom de l'état. |
Description |
string | Non | Description de l'état. |
Type |
string | Oui | Type d'état. Définissez sur Parallel. |
InputConstructor |
map[string]any | Non | Transforme l'entrée avant de la transmettre aux branches. Consultez la section Entrées et sorties. |
Branches |
ParallelBranch[] | Oui | Branches à exécuter en parallèle. Consultez la section ParallelBranch. |
OutputConstructor |
map[string]any | Non | Transforme les résultats combinés des branches avant de les transmettre à l'état suivant. Consultez la section OutputConstructor de l'état dans « Entrées et sorties ». |
Next |
string | Non | État suivant à exécuter après la fin de l'état Parallel. Non requis si End est défini sur true. |
End |
bool | Non | Indique s'il faut mettre fin à la portée actuelle après la fin de l'état Parallel. |
Retry |
Retry | Non | Politique de nouvelle tentative. Consultez la section Gestion des erreurs. |
Catch |
Catch | Non | Politique de capture d'erreur. Consultez la section Gestion des erreurs. |
ParallelBranch
Attributs de ParallelBranch
| **Attribut** | **Type** | **Obligatoire** | **Description** |
|---|---|---|---|
States |
array | Oui | Tableau des états de la branche. |
StartAt |
string | Oui | Nom du premier état à exécuter dans la branche. |
Exemple
Le flux de travail suivant définit un état Parallel nommé Parallel1 avec deux branches. Chaque branche contient un seul état Pass qui produit une sortie statique.
Type: StateMachine
Name: my-wkfl
SpecVersion: v1
StartAt: Parallel1
States:
- Type: Parallel
Name: Parallel1
End: true
Branches:
- StartAt: Pass1
States:
- Type: Pass
Name: Pass1
End: true
OutputConstructor:
FieldA: 123
- StartAt: Pass2
States:
- Type: Pass
InputConstructor:
FieldA: 321
Name: Pass2
End: true
Sortie de la branche
Chaque branche produit sa propre sortie indépendamment :
-
Sortie de
Pass1(Branch0) :{ "FieldA": 123 } -
Sortie de
Pass2(Branch1) :{ "FieldA": 321 }
Sortie combinée de l'état Parallel
L'état Parallel fusionne toutes les sorties des branches dans une seule map. Chaque branche reçoit une clé par défaut au format Branch<Index> :
{
"Branch0": {
"FieldA": 123
},
"Branch1": {
"FieldA": 321
}
}
Étapes suivantes
Entrées et sorties : transformez les données circulant entre les états à l'aide de
InputConstructoretOutputConstructor.Gestion des erreurs : configurez les politiques
RetryetCatchpour gérer les échecs des branches.