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.
| Campo | Obligatorio | Tipo | Descripción | Ejemplo |
|---|---|---|---|---|
condition | Sí | 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 |
when | Sí | Subflujo (lista de componentes) | Secuencia de pasos ejecutada cuando la condición es verdadera. | Un paso que aplica un descuento especial |
otherwise | Sí | 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íntoma | Causa probable | Có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 camino | La 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
conditionusa la sintaxis del lenguaje de expresiones MVEL, el mismo usado para reglas y cálculos en otros puntos de la plataforma.