Condições: se, senão se, senão
Um nó Condição deixa o flow escolher. Ele tem um teste if, quantos testes else if você quiser e um else; quando a execução chega nele, os testes são verificados em ordem, o primeiro verdadeiro roda o ramo dele, e todos os outros ramos são ignorados. Abaixo dos ramos o flow volta a ser uma linha só e continua.
- Adicionar um nó Condição e preencher os ramos if / else if / else
- Escrever um teste de ramo que devolve true ou false
- Ler resultados depois da junção, qualquer que seja o ramo que rodou
- Ver o caminho escolhido e os ramos ignorados numa execução
Um nó, um caminho
No canvas, um nó Condição se abre em colunas, uma por ramo. Cada coluna começa com uma pílula — if true, else if, else, ou o nome que você der — que mostra o teste embaixo, e guarda os passos daquele ramo. Todas as colunas fecham numa tampa só, a junção; o passo abaixo da junção roda depois do ramo que rodou, qualquer que seja. Um ramo vazio é permitido: um else sem passos quer dizer só “senão, siga direto”.
Exatamente um ramo roda por passagem. Os testes são verificados de cima para baixo — Verifica os ramos em ordem e roda o primeiro verdadeiro; o else roda quando nenhum é. — então ordene do mais específico para o mais geral. Para rodar vários ramos ao mesmo tempo, use Ramos em paralelo: uma condição serve para escolher.
Como montar
- Adicione o nó
Clique num + da linha e escolha Condição (Ramificação se / senão). Ela chega com um ramo if true e um ramo else, os dois vazios.
- Escreva o teste if
Clique no nó. No painel, digite o teste if no editor de expressão, por exemplo
nodes.start.output.score >= 80. Ao digitarnodes., aparecem os passos acima com os campos. - Adicione ramos else if
Add else if acrescenta um ramo com teste próprio, verificado depois dos de cima. Remova um com o X dele. O ramo else está sempre lá, por último, sem teste.
- Preencha os ramos
Cada coluna tem o próprio + abaixo da pílula. Coloque ali os passos daquele caminho — qualquer tipo de passo, inclusive outras condições e loops. Cada linha de ramo no painel da condição tem um campo de nome (com if true, else de exemplo); o nome digitado aparece no lugar na pílula.
- Continue abaixo da junção
O + abaixo da tampa adiciona o passo que roda depois da condição, qualquer que tenha sido o ramo.
Escrevendo o teste de um ramo
Um teste é uma expressão JavaScript, rodada no mesmo motor isolado das expressões de binding — sem rede, sem arquivos. Ele lê nodes.<alias>.output de cada passo que já rodou (as entradas do Início são nodes.start.output enquanto o nó mantém o rótulo Start), vars.NAME para variáveis e, dentro de um loop, item, index e loops.<id> — então uma condição no corpo de um loop decide uma vez por item.
// if
nodes.fetchOrder.output.total >= 1000
// else if
nodes.fetchOrder.output.items.some((i) => i.fragile)
// else if — a variable is a string
vars.REGION === "eu" && item.country !== "PT"Lendo resultados depois da junção
Um passo num ramo que não rodou não tem saída, então um passo abaixo da junção que o lê direto falha. Quando cada ramo produz o valor de que você precisa, leia com encadeamento opcional numa expressão e pegue o que existir:
nodes.goldPrice?.output?.price ?? nodes.standardPrice?.output?.priceA própria saída da condição registra a escolha — {"selected": "true"}, {"selected": "elseif-…"} ou {"selected": "false"} para o else — e é o que a visão da execução lê para desenhar o caminho escolhido.
Uma condição na execução
Quando a execução passa por uma condição, o ramo escolhido acende como qualquer caminho executado e cada passo dos outros ramos fica marcado como Ignorado e apagado — de relance você vê para onde o flow foi. Clicar na condição mostra qual ramo ela escolheu. Dentro de um loop, a escolha pertence a uma iteração: escolha outra iteração no loop e o canvas redesenha o caminho daquela iteração.
| Situação | O que roda |
|---|---|
| O teste if é verdadeiro | O ramo if, depois o passo abaixo da junção |
| O if é falso, um else if é verdadeiro | Só o primeiro ramo else if verdadeiro |
| Todos os testes são falsos | O ramo else (ou nada, se ele estiver vazio) |
| Um teste lança erro ou devolve algo que não é booleano | Nada — a condição falha e a execução também |
Regras
- Um if, quantos else if quiser, um else, nessa ordem; o else não tem teste.
- Condições se aninham: um ramo pode ter outra condição, um loop ou ramos em paralelo.
- Um teste só enxerga passos que já rodaram. Citar um passo abaixo da condição, ou num ramo ignorado, lança erro.