Choice
1. Visão Geral
O componente Choice (choice) é um desvio condicional dentro do fluxo: ele testa uma condição e, dependendo do resultado, direciona a execução para um caminho ("when") ou para outro ("otherwise"). É o equivalente a um "se/senão" dentro da automação.
Use quando o fluxo precisa tomar decisões diferentes dependendo dos dados recebidos — por exemplo, seguir um caminho se o cliente for VIP e outro caso contrário.
Não é indicado quando você precisa repetir uma ação várias vezes (nesse caso use o componente ForEach) ou quando a lógica de decisão é apenas para tratar erros (existem mecanismos de tratamento de erro próprios em cada componente).
2. Pré-requisitos
Não há credenciais, licenças ou acesso a sistemas externos. É um componente interno da engine de fluxo.
3. Autenticação e Conexão
Não aplicável.
4. Configuração / Operações Suportadas
O Choice tem uma única operação: avaliar uma condição e executar um dos dois caminhos configurados.
| Campo | Obrigatório | Tipo | Descrição | Exemplo |
|---|---|---|---|---|
condition | Sim | Texto (expressão) | Condição que será avaliada. Se for verdadeira, o caminho when é executado; se for falsa, o caminho otherwise é executado. | pedido.valor > 1000 |
when | Sim | Sub-fluxo (lista de componentes) | Sequência de passos executada quando a condição é verdadeira. | Um passo que aplica desconto especial |
otherwise | Sim | Sub-fluxo (lista de componentes) | Sequência de passos executada quando a condição é falsa. | Um passo que segue o fluxo padrão |
Comportamento em caso de erro: se condition não for informada ou estiver vazia, o fluxo falha já na etapa de montagem (antes mesmo de rodar), com o erro "Condition should be defined".
5. Exemplos Práticos
Exemplo simples: um fluxo de aprovação de pedidos usa o Choice para verificar se o valor do pedido é maior que um limite. Se for, o caminho when encaminha o pedido para aprovação manual; caso contrário, o caminho otherwise aprova automaticamente.
Entrada:
{
"pedido": { "id": 981, "valor": 2500 }
}
Configuração do 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\"" } }
}
}
}
Resposta (nesse caso o valor é maior que 1000, então o caminho when foi executado):
{
"pedido": { "id": 981, "valor": 2500 },
"variables": { "status": "AGUARDANDO_APROVACAO" }
}
Exemplo avançado: a condição combina mais de um critério — por exemplo, valor do pedido acima de um limite E cliente sem histórico de compras. Cada caminho (when e otherwise) pode conter, por sua vez, vários componentes encadeados, incluindo outro Choice aninhado, permitindo árvores de decisão mais complexas.
Entrada:
{
"pedido": { "id": 982, "valor": 3000 },
"cliente": { "totalPedidosAnteriores": 0 }
}
Configuração do 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\"" } }
}
}
}
Resposta:
{
"pedido": { "id": 982, "valor": 3000 },
"cliente": { "totalPedidosAnteriores": 0 },
"variables": { "status": "REVISAO_MANUAL" }
}
6. Erros Comuns e Troubleshooting
| Erro / Sintoma | Causa provável | Como resolver |
|---|---|---|
| "Condition should be defined" | O campo condition não foi preenchido ou está vazio. | Preencher a condição no componente Choice. |
| Fluxo sempre entra no mesmo caminho | A condição está sempre avaliando para o mesmo resultado (verdadeiro ou falso). | Revisar a expressão da condição e os dados que ela usa. |
Erro ao montar o fluxo (quando when ou otherwise estão malformados) | A estrutura do sub-fluxo configurado em when/otherwise está incorreta. | Validar se os componentes dentro de when e otherwise estão configurados corretamente. |
O campo
conditionusa a sintaxe da linguagem de expressões MVEL, a mesma usada para regras e cálculos em outros pontos da plataforma.