Saltar al contenido principal

Choice

1. Visión General​

El componente Choice (choice) es un desvío condicional dentro del flujo: evalúa una condición y, según el resultado, dirige la ejecución hacia un camino ("when") o hacia otro ("otherwise"). Es el equivalente a un "si/si no" dentro de la automatización.

Úsalo cuando el flujo necesita tomar decisiones diferentes según los datos recibidos — por ejemplo, seguir un camino si el cliente es VIP y otro en caso contrario.

No es recomendable cuando necesitas repetir una acción varias veces (en ese caso usa el componente ForEach) o cuando la lógica de decisión es solo para manejar errores (existen mecanismos de manejo de errores propios en cada componente).

2. Prerrequisitos​

No hay credenciales, licencias ni acceso a sistemas externos. Es un componente interno del motor de flujo.

3. Autenticación y Conexión​

No aplica.

4. Configuración / Operaciones Soportadas​

Choice tiene una única operación: evaluar una condición y ejecutar uno de los dos caminos configurados.

CampoObligatorioTipoDescripciónEjemplo
conditionSíTexto (expresión)Condición que será evaluada. Si es verdadera, se ejecuta el camino when; si es falsa, se ejecuta el camino otherwise.pedido.valor > 1000
whenSíSubflujo (lista de componentes)Secuencia de pasos ejecutada cuando la condición es verdadera.Un paso que aplica un descuento especial
otherwiseSíSubflujo (lista de componentes)Secuencia de pasos ejecutada cuando la condición es falsa.Un paso que sigue el flujo estándar

Comportamiento en caso de error: si condition no se informa o está vacía, el flujo falla ya en la etapa de armado (antes incluso de ejecutarse), con el error "Condition should be defined".

5. Ejemplos Prácticos​

Ejemplo simple: un flujo de aprobación de pedidos usa Choice para verificar si el valor del pedido es mayor que un límite. Si lo es, el camino when deriva el pedido a aprobación manual; en caso contrario, el camino otherwise lo aprueba automáticamente.

Entrada:

{
"pedido": { "id": 981, "valor": 2500 }
}

Configuración del componente:

{
"componentName": "choice",
"configurations": {
"condition": "body.pedido.valor > 1000",
"when": {
"componentName": "add-variable",
"configurations": { "variables": { "status": "\"AGUARDANDO_APROVACAO\"" } }
},
"otherwise": {
"componentName": "add-variable",
"configurations": { "variables": { "status": "\"APROVADO_AUTOMATICO\"" } }
}
}
}

Respuesta (en este caso el valor es mayor que 1000, así que se ejecutó el camino when):

{
"pedido": { "id": 981, "valor": 2500 },
"variables": { "status": "AGUARDANDO_APROVACAO" }
}

Ejemplo avanzado: la condición combina más de un criterio — por ejemplo, valor del pedido por encima de un límite Y cliente sin historial de compras. Cada camino (when y otherwise) puede contener, a su vez, varios componentes encadenados, incluido otro Choice anidado, permitiendo árboles de decisión más complejos.

Entrada:

{
"pedido": { "id": 982, "valor": 3000 },
"cliente": { "totalPedidosAnteriores": 0 }
}

Configuración del componente:

{
"componentName": "choice",
"configurations": {
"condition": "body.pedido.valor > 1000 && body.cliente.totalPedidosAnteriores == 0",
"when": {
"componentName": "add-variable",
"configurations": { "variables": { "status": "\"REVISAO_MANUAL\"" } }
},
"otherwise": {
"componentName": "add-variable",
"configurations": { "variables": { "status": "\"APROVADO_AUTOMATICO\"" } }
}
}
}

Respuesta:

{
"pedido": { "id": 982, "valor": 3000 },
"cliente": { "totalPedidosAnteriores": 0 },
"variables": { "status": "REVISAO_MANUAL" }
}

6. Errores Comunes y Troubleshooting​

Error / SíntomaCausa probableCómo resolverlo
"Condition should be defined"El campo condition no fue completado o está vacío.Completar la condición en el componente Choice.
El flujo siempre entra por el mismo caminoLa condición siempre se evalúa al mismo resultado (verdadero o falso).Revisar la expresión de la condición y los datos que utiliza.
Error al armar el flujo (cuando when u otherwise están malformados)La estructura del subflujo configurado en when/otherwise es incorrecta.Validar que los componentes dentro de when y otherwise estén configurados correctamente.

El campo condition usa la sintaxis del lenguaje de expresiones MVEL, el mismo usado para reglas y cálculos en otros puntos de la plataforma.