L'état Fail met fin à un flux en générant une erreur personnalisée, comme raise en Python ou throw en Java. Lorsqu'un flux atteint un état Fail, tous les états de la portée actuelle s'arrêtent et le flux se termine.
Dans une définition de flux classique, chaque état passe au suivant une fois son exécution terminée. Un état Fail rompt ce schéma : aucun état suivant ne s'exécute.
Contrairement à un état
, qui attend la fin de la portée actuelle avant de terminer le flux, un état
Fail
met immédiatement fin au flux avec une erreur.
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 | Doit être Fail. |
Fail |
InputConstructor |
map[string]any | Non | Constructeur d'entrée. Voir InputConstructor. | -- |
OutputConstructor |
map[string]any | Non | Constructeur de sortie. Voir OutputConstructor. | -- |
Code |
string | Non | Code d'erreur pour l'identification programmatique. Utilisez Code pour catégoriser les échecs afin de faciliter le diagnostic ou la gestion des erreurs. |
customBizCode |
Detail |
string | Oui | Description de l'erreur lisible par un humain. | my custom error |
Chaque état Fail requiert une valeur Detail décrivant l'erreur. L'attribut Code est facultatif mais recommandé : il fournit un identifiant lisible par machine qui facilite le diagnostic des échecs.
Conseil :
Évitez d'exposer des détails internes du système ou des informations sensibles dans les valeurs
Code
ou
Detail
, car ces valeurs peuvent apparaître dans les sorties d'erreur.
Relation avec un état Pass
Un état Fail se comporte comme un état Pass avec End: true, sauf qu'il renvoie également une erreur. Les deux mettent fin au flux à l'emplacement actuel, mais un état Fail renvoie en plus une erreur spécifiée par Code et Detail.
Exemples
Mettre fin à un flux selon une condition
Ce flux utilise un état Choice pour évaluer une condition d'entrée. Si $Input.status est égal à "true", le flux passe à Pass1 et se termine normalement. Sinon, le flux bascule vers la branche par défaut et se termine avec un état Fail.
Type: StateMachine
Name: my-workflow
SpecVersion: v1
Description: " "
StartAt: Choice1
States:
- Type: Choice
Name: Choice1
Branches:
- Condition: $Input.status == "true"
Next: Pass1
Default: Fail1
- Type: Fail
Name: Fail1
Code: "customBizCode"
End: true
- Type: Pass
Name: Pass1
End: true
Lorsque Choice1 évalue la condition et qu'aucune branche ne correspond, le flux transite vers Fail1. Le flux entier se termine avec le code d'erreur customBizCode.
Renvoyer une erreur statique
Dans sa forme la plus simple, un état Fail nécessite une valeur Detail et, éventuellement, un attribut Code :
- Type: Fail
Name: ValidationError
Code: "INVALID_INPUT"
Detail: "Required field 'orderId' is missing"
End: true
Utiliser des codes d'erreur descriptifs
Choisissez des codes d'erreur qui identifient clairement la catégorie de l'échec :
# Payment processing failure
- Type: Fail
Name: PaymentFailed
Code: "PAYMENT_DECLINED"
Detail: "Payment gateway returned a decline response"
End: true
# Resource not found
- Type: Fail
Name: NotFound
Code: "RESOURCE_NOT_FOUND"
Detail: "The specified order does not exist"
End: true