Decisão
Como fazer o fluxo escolher caminhos diferentes conforme o dado que o processo tem em mãos.
O que é a etapa de Decisão
Todo processo real tem bifurcação: a nota é aprovada ou rejeitada, o cliente é novo ou já existe, a lista veio cheia ou vazia. A Decisão de Rota é a etapa que faz essa pergunta e manda o fluxo pelo caminho certo.
A etapa de Decisão de Rota avalia uma lista ordenada de condições e manda o fluxo para uma etapa diferente conforme o resultado. Ela não age sobre nenhuma tela nem chama serviço: apenas lê variáveis que o processo já tem e escolhe por onde seguir.
A decisão no fluxo visual
No Agent Builder, a decisão é o ponto onde o fluxo ramifica. A legenda completa de ícones, badges e conexões do canvas está em Agent Builder → Cards, badges e conexões; aqui vão só os pontos específicos de Decisão:

- Ícone laranja de ramificação no card: identifica a etapa como uma Decisão de Rota.
- Badge 🔀 na lateral direita do card: aparece em qualquer etapa que tenha uma condição de rota configurada, não só em etapas de Decisão. É como reconhecer, à distância, quais etapas roteiam o fluxo e quais só executam em sequência.
- Múltiplas saídas tracejadas coloridas: cada rota configurada vira uma conexão para a etapa de destino; as cores diferenciam os ramos.
Passar o mouse sobre esse badge mostra as rotas configuradas na etapa, sem precisar abri-la. É a forma mais rápida de conferir para onde cada caminho leva:

Dê nomes de decisão em forma de pergunta ("Existe GAP nos cálculos?", "Valores Calculados?"). O fluxo vira um diagrama legível por qualquer pessoa do negócio.
Como configurar
- Crie uma nova etapa e escolha o tipo Decisão de Rota.
- Abra a etapa e, em Condições de Rotas e Execuções, marque Definir a próxima Etapa após execução. É o que habilita o campo das condições, e a etapa avisa enquanto isso não estiver feito.
- Clique no + da rota. Ele fica sempre em um lugar só, e esse lugar muda conforme o que já existe: sem rota nenhuma, nos dois espaços tracejados ao lado do card, "rota A" e "rota B"; com uma rota, no meio da linha que liga a decisão ao nó de junção; da terceira em diante, no canto do próprio card.
- O + pergunta o tipo da primeira etapa daquele caminho, e é essa etapa que nasce. Criar a rota e criar a etapa dentro dela são a mesma ação: não sobra card de enfeite. As rotas recebem rótulos em sequência (A, B, C) e cada uma ganha uma cor própria.
- Junto com a rota, a decisão já recebe a regra que leva até ela. A primeira rota vira a saída padrão; as seguintes entram com a condição marcada como definir a condição, esperando você dizer o que decide entre um caminho e outro. Enquanto essa marcação estiver lá, a rota nunca é escolhida, e o ícone de pendências acusa isso.
- Na etapa de decisão, informe a condição que escolhe cada ramo. Cada rota tem dois campos:
| Campo | Descrição |
|---|---|
| Condição | Expressão lógica que usa variáveis do processo entre chaves. Se avaliada como verdadeira, esta rota é seguida. Veja Lógicas de Rota para a sintaxe completa. |
| Ir para | Nome da etapa de destino, ou um dos valores especiais: continue() ou terminate(). |

Ramos e convergência automática
Cada rota abre um ramo próprio no fluxo. As etapas que você cria dentro dele pertencem àquele ramo, e o canvas as mantém alinhadas na faixa da rota, com a cor dela.
Para continuar um ramo, insira a etapa nova depois da última etapa dele, usando o botão + da conexão. A etapa nasce dentro do mesmo ramo, sem que você precise declarar nada.
A convergência é automática
Quando o ramo acaba, o fluxo volta sozinho ao ponto em que os caminhos se reencontram. Esse ponto é o nó de junção, o losango desenhado no canvas, e ele existe desde a primeira rota. Você não precisa criar uma etapa de Merge nem preencher um "Ir para" de volta em cada rota.
Com uma rota só, a decisão também liga direto no nó de junção por uma linha vazia. Ela representa o caminho que ainda não tem rota, e é onde entra a segunda: clique no + no meio dela.

Decisões dentro de decisões
Um ramo pode conter outra decisão, com os ramos dela inteiramente dentro do ramo de fora. As rotas aninhadas herdam o caminho no nome (Rota C.A, por exemplo) e o canvas mantém os ramos internos dentro da faixa do ramo que os contém, dando a cada rota a altura de que ela precisa.
A convergência respeita esse aninhamento: ao terminar, um ramo interno volta ao ponto de junção da decisão dele, e não ao começo do fluxo. Quando a decisão aninhada inteira se fecha, aí sim o ramo externo segue adiante.
Destinos disponíveis
| Valor em "Ir para" | Comportamento |
|---|---|
NomeDaEtapa |
Salta diretamente para a etapa com esse nome. O nome deve ser exatamente o campo Nome da Etapa definido no cadastro, sensível a maiúsculas e espaços. |
continue() |
Segue para a próxima etapa do fluxo, como se a decisão não existisse. |
terminate() |
Encerra o processo imediatamente com status de conclusão bem-sucedida. |
Exemplos
Dois caminhos e uma saída padrão
Rota 1:
Condição: {status_nf} == 'aprovada'
Ir para: Processar Aprovação
Rota 2:
Condição: {status_nf} == 'rejeitada'
Ir para: Tratar Rejeição
Rota Padrão (obrigatória):
Condição: true
Ir para: Status Desconhecido
Duas condições ao mesmo tempo
Disparar alerta urgente apenas quando valor alto e status pendente ao mesmo tempo:
Rota 1:
Condição: Number({valor}) > 50000 && {status} == 'pendente'
Ir para: Enviar Alerta Urgente
Rota 2:
Condição: true
Ir para: Processar Normal
Vários valores possíveis
Rota 1: {tipo_doc} == 'NF-e' → Processar NF-e
Rota 2: {tipo_doc} == 'CT-e' → Processar CT-e
Rota 3: {tipo_doc} == 'NFS-e' → Processar NFS-e
Rota 4: true → Documento Não Suportado
Verificar se lista está vazia
Rota 1:
Condição: {resultados} is empty
Ir para: Encerrar Sem Resultados
Rota 2:
Condição: true
Ir para: Processar Resultados
Verificar faixa numérica
Rota 1:
Condição: Number({score}) >= 90
Ir para: Aprovação Automática
Rota 2:
Condição: Number({score}) >= 60
Ir para: Análise Manual
Rota 3:
Condição: true
Ir para: Reprovado
Boas práticas
- Sempre tenha a rota Padrão. É a última da lista, com condição
true, e vale quando nenhuma das anteriores se confirma. Sem ela, um dado fora do previsto derruba a execução. - Nomes de etapa são exatos. O campo "Ir para" é sensível a maiúsculas e espaços. Use exatamente o mesmo texto definido no campo Nome da Etapa da etapa destino.
- Compare número como número. Texto capturado da tela, ou digitado numa variável sem tipo, chega como texto: use
Number({campo})nas comparações numéricas. Uma variável declarada como Número ou Moeda chega como número, e uma lista chega como lista ({itens}.length > 0). - Para todos os operadores e funções disponíveis nas condições, veja Lógicas de Rota.
