Un estado Choice agrega ramificaciones condicionales a un flujo. Evalúa condiciones con los datos de entrada y dirige la ejecución hacia la primera rama que coincida. Este comportamiento es similar a una instrucción switch-case en programación.
Funcionamiento
Cuando un flujo llega a un estado Choice, el sistema evalúa la condición de cada rama en orden:
Si una condición se evalúa como
true, el flujo pasa al estado indicado en el campoNextde esa rama.Si ninguna condición se evalúa como
true, el flujo pasa al estado indicado en el campoDefault.
El campo Default es obligatorio. Esto garantiza que el flujo siempre tenga una ruta de transición válida, incluso cuando no coincide ninguna condición de las ramas.
Los estados Choice no admiten los atributos End y Next a nivel de estado. Utilice el atributo Default para definir la transición alternativa. Cada elemento ChoiceBranch define su propio atributo Next para indicar hacia dónde avanza el flujo cuando se cumple la condición.
Atributos
|
Atributo |
Tipo |
Obligatorio |
Descripción |
Ejemplo |
|
Name |
string |
Sí |
El nombre del estado. |
my state |
|
Description |
string |
No |
Una descripción del estado. |
describe it here |
|
Type |
string |
Sí |
El tipo de estado. Establezca este valor en |
Choice |
|
InputConstructor |
map[string]any |
No |
El constructor de entrada. Para obtener más información, consulte Inputs and outputs. |
-- |
|
Default |
string |
Sí |
El estado alternativo al que se transita cuando ninguna condición de rama se evalúa como |
my next task |
|
Branches |
ChoiceBranch[] |
Sí |
Un arreglo de ramas de elección. Consulte la tabla ChoiceBranch. |
-- |
ChoiceBranch
Cada entrada del arreglo Branches contiene a continuación los siguientes atributos:
|
Atributo |
Tipo |
Obligatorio |
Descripción |
Ejemplo |
|
Condition |
string |
Sí |
Una expresión condicional que se evalúa como |
|
|
Next |
string |
Sí |
El estado al que se transita cuando la condición se evalúa como |
my next task |
Ejemplo
El siguiente flujo dirige la ejecución según el valor de $Input.data:
Si
$Input.dataes igual a"ready", el flujo pasa al estadoPass1.De lo contrario, el flujo pasa al estado predeterminado
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
Expresiones condicionales
Las expresiones condicionales combinan variables, constantes y operadores para generar un resultado booleano (true o false). Use la variable $Input para hacer referencia a los datos de entrada del estado y la variable $Context para hacer referencia a los datos de contexto del flujo. Para obtener más información, consulte Data passing.
Operadores compatibles
|
Categoría |
Operadores |
Tipos aplicables |
||
|
Comparación |
|
Cadenas, números |
||
|
Lógicos |
|
` (OR) |
Expresiones booleanas |
|
|
Prefijo |
|
Expresiones booleanas, números |
||
|
Inclusión |
|
Arreglos (comprueba si existe un valor), objetos (comprueba si existe una clave) |
Constantes compatibles
|
Tipo |
Sintaxis |
Ejemplos |
|
Cadena |
Comillas dobles ( |
|
|
Numérico |
Entero o decimal |
|
|
Booleano |
Palabras clave en minúsculas |
|
Ejemplos de expresiones
Con los siguientes datos de $Input, las tablas a continuación muestran cómo se evalúan distintas expresiones:
{
"a": 1,
"b": {
"b1": true,
"b2": "ready"
},
"c": [1, 2, 3],
"d": 1,
"e": 1,
"f": {
"f1": false,
"f2": "inprogress"
}
}
Comparaciones numéricas
|
Expresión |
Resultado |
Descripción |
|
|
true |
Igual a un valor literal |
|
|
false |
Distinto del valor literal |
|
|
true |
Mayor que |
|
|
true |
Literal en el lado izquierdo |
|
|
true |
Mayor o igual que |
|
|
true |
Distinto de |
Comparaciones booleanas
|
Expresión |
Resultado |
Descripción |
|
|
true |
Referencia booleana directa |
|
|
true |
Comparación explícita con |
|
|
false |
Comparación explícita con |
Comparaciones de cadenas
|
Expresión |
Resultado |
Descripción |
|
|
true |
Igualdad de cadenas |
|
|
false |
Desigualdad de cadenas |
Expresiones compuestas
|
Expresión |
Resultado |
Descripción |
|
|
true |
Ambas condiciones son verdaderas |
|
|
false |
La primera condición es falsa |
Comparaciones de arreglos y entre variables
|
Expresión |
Resultado |
Descripción |
|
|
true |
Acceso a un elemento del arreglo por índice |
|
|
true |
Comparación de dos variables |
Comprobaciones de inclusión
|
Expresión |
Resultado |
Descripción |
|
|
true |
La clave existe en el objeto |
|
|
false |
La clave no existe |
|
|
true |
El valor existe en el arreglo |