El estado Fail finaliza un flujo de trabajo con un error personalizado, de forma similar a raise en Python o throw en Java. Cuando un flujo de trabajo alcanza un estado Fail, todos los estados del ámbito actual dejan de ejecutarse y el flujo termina.
En una definición de flujo de trabajo típica, cada estado pasa al siguiente tras completarse. Un estado Fail rompe este patrón, ya que no se ejecuta ningún estado posterior.
A diferencia de un estado
, que espera a que el ámbito actual se complete antes de finalizar el flujo de trabajo, un estado
Fail
termina el flujo con un error.
Atributos
|
Atributo |
Tipo |
Obligatorio |
Descripción |
Ejemplo |
|
|
string |
Sí |
Nombre del estado. |
my state |
|
|
string |
No |
Descripción del estado. |
describe it here |
|
|
string |
Sí |
Debe ser |
Fail |
|
|
map[string]any |
No |
Constructor de entrada. Consulte InputConstructor. |
-- |
|
|
map[string]any |
No |
Constructor de salida. Consulte OutputConstructor. |
-- |
|
|
string |
No |
Código de error para identificación mediante programación. Use |
customBizCode |
|
|
string |
Sí |
Descripción del error legible por humanos. |
my custom error |
Cada estado Fail requiere un valor Detail que describa el error. El campo Code es opcional, pero se recomienda su uso, ya que proporciona un identificador legible por máquina que facilita el diagnóstico de fallos.
Consejo:
Evite exponer detalles internos del sistema o información confidencial en los valores de
Code
o
Detail
, dado que estos valores podrían ser visibles en las salidas de error.
Relación con el estado Pass
Un estado Fail se comporta como un estado Pass con End: true, salvo que también devuelve un error. Ambos finalizan el flujo de trabajo en el punto actual, pero un estado Fail además devuelve un error especificado por Code y Detail.
Ejemplos
Finalizar un flujo de trabajo según una condición
Este flujo de trabajo utiliza un estado Choice para evaluar una condición de entrada. Si $Input.status es igual a "true", el flujo continúa hacia Pass1 y se completa de manera normal. En caso contrario, el flujo pasa a la rama predeterminada y termina con un estado 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
Cuando Choice1 evalúa la condición y ninguna rama coincide, el flujo pasa a Fail1. Todo el flujo de trabajo finaliza con el código de error customBizCode.
Devolver un error estático
En su forma más simple, un estado Fail necesita un valor Detail y, de manera opcional, un valor Code:
- Type: Fail
Name: ValidationError
Code: "INVALID_INPUT"
Detail: "Required field 'orderId' is missing"
End: true
Usar códigos de error descriptivos
Elija códigos de error que identifiquen claramente la categoría del fallo:
# 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