Todos los productos
Search
Centro de documentos

CloudFlow:Choice

Última actualización: Sep 18, 2026

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:

  1. Si una condición se evalúa como true, el flujo pasa al estado indicado en el campo Next de esa rama.

  2. Si ninguna condición se evalúa como true, el flujo pasa al estado indicado en el campo Default.

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.

Importante

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.

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 true.

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 true o false. Consulte Conditional expressions.

$Input.status=="ready"

Next

string

Sí

El estado al que se transita cuando la condición se evalúa como true.

my next task

Ejemplo

El siguiente flujo dirige la ejecución según el valor de $Input.data:

  • Si $Input.data es igual a "ready", el flujo pasa al estado Pass1.

  • 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

&& (AND), `

` (OR)

Expresiones booleanas

Prefijo

! (NOT), - (negación)

Expresiones booleanas, números

Inclusión

in

Arreglos (comprueba si existe un valor), objetos (comprueba si existe una clave)

Constantes compatibles

Tipo

Sintaxis

Ejemplos

Cadena

Comillas dobles (") o acentos graves ()

"foobar", foobar

Numérico

Entero o decimal

1, 12.5

Booleano

Palabras clave en minúsculas

true, false

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

$Input.a==1

true

Igual a un valor literal

$Input.a==2

false

Distinto del valor literal

$Input.a>0

true

Mayor que

0<$Input.a

true

Literal en el lado izquierdo

$Input.a>=1

true

Mayor o igual que

$Input.a!=2

true

Distinto de

Comparaciones booleanas

Expresión

Resultado

Descripción

$Input.b.b1

true

Referencia booleana directa

$Input.b.b1==true

true

Comparación explícita con true

$Input.b.b1==false

false

Comparación explícita con false

Comparaciones de cadenas

Expresión

Resultado

Descripción

$Input.b.b2=="ready"

true

Igualdad de cadenas

$Input.b.b2=="inprogress"

false

Desigualdad de cadenas

Expresiones compuestas

Expresión

Resultado

Descripción

$Input.a==1 && $Input.b.b1

true

Ambas condiciones son verdaderas

$Input.a==2 && $Input.b.b1

false

La primera condición es falsa

Comparaciones de arreglos y entre variables

Expresión

Resultado

Descripción

$Input.c[0]==1

true

Acceso a un elemento del arreglo por índice

$Input.c[0]==$Input.a

true

Comparación de dos variables

Comprobaciones de inclusión

Expresión

Resultado

Descripción

"f1" in $Input.f

true

La clave existe en el objeto

"f3" in $Input.f

false

La clave no existe

1 in $Input.c

true

El valor existe en el arreglo