Pular para o conteúdo principal

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.

CampoObrigatórioTipoDescriçãoExemplo
conditionSimTexto (expressão)Condição que será avaliada. Se for verdadeira, o caminho when é executado; se for falsa, o caminho otherwise é executado.pedido.valor > 1000
whenSimSub-fluxo (lista de componentes)Sequência de passos executada quando a condição é verdadeira.Um passo que aplica desconto especial
otherwiseSimSub-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 / SintomaCausa provávelComo 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 caminhoA 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 condition usa a sintaxe da linguagem de expressões MVEL, a mesma usada para regras e cálculos em outros pontos da plataforma.