Configurações de execução do passo: repetir, pular, parar, cache
Passos de verdade falham, ficam lentos e às vezes não têm nada a fazer. Todo passo executável de um flow tem uma aba Configurações de execução que decide o que acontece nesses casos — tentar de novo, seguir em frente, se pular, encerrar o flow mais cedo, esperar, reaproveitar um resultado recente — para que a lógica do flow fique no flow, e não em blocos try/except espalhados pelos scripts.
- Repetir um passo que falha, com espera constante ou exponencial, só quando uma condição vale
- Deixar um flow seguir depois de uma falha, e o que os passos seguintes recebem
- Pular um passo ou parar o flow inteiro com uma expressão
- Guardar o resultado de um passo em cache nas execuções publicadas e limitá-lo com um tempo limite
Uma política por passo
Clique num passo e abra Configurações de execução. A aba tem dois grupos. Controle do flow muda o caminho: Pular o passo se, Parar o flow se, Esperar depois do passo. Política de execução muda como o próprio passo roda: Repetir em caso de falha, Continuar mesmo com erro, Tempo limite, Guardar resultado em cache. Cada um é um interruptor; desligado, o passo se comporta como se a configuração não existisse.
Um passo com configurações mostra pequenos ícones no canvas — passe o mouse num deles para ver um resumo como Repetir: 3 tentativas extras, exponencial a partir de 2 s ou Cache: 10 min. As configurações de execução existem em passos de script e SQL, subflows, AI Scraper, Enviar e-mail, Requisição HTTP e Transformar; condições, loops, nós em paralelo, aprovações e o Início não têm.
As expressões que elas usam
Três configurações recebem uma expressão JavaScript que deve devolver true ou false. Ela lê as entradas do próprio passo pelo nome, saídas anteriores como nodes.<alias>.output e variáveis como vars.NAME — o mesmo escopo de uma condição. Um erro de sintaxe aparece embaixo do campo na hora (Essa expressão tem um erro de sintaxe); uma expressão que lança erro ou devolve algo que não é booleano faz o passo falhar com expression_error.
| Configuração | Verificada | Nome extra que ela vê | Exemplo |
|---|---|---|---|
| Pular o passo se | Antes de o passo rodar | — | vars.DRY_RUN === 'true' |
| Parar o flow se | Depois que o passo dá certo | result — a saída do passo | result.rows.length === 0 |
| Repetir só se | Depois de uma tentativa que falhou | error — o erro da tentativa | error.message.includes('503') |
Quando um passo falha
Repetir em caso de falha
Roda o passo de novo quando ele falha ou estoura o tempo. Defina as tentativas extras (1–10), a espera em segundos (1 s–1 h) e Constante ou Exponencial — exponencial dobra a espera a cada vez, e o painel mostra o calendário (tentativa 2 após 2 s, tentativa 3 após 4 s…). A expressão opcional Repetir só se… decide a cada falha; quando é falsa o passo não é repetido e a execução diz Não repetido — a condição para repetir foi falsa. Cada tentativa é registrada e aparece em Tentativas no detalhe do passo, e a Linha do tempo mostra cada Espera da nova tentativa.
Continuar mesmo com erro
O passo pode falhar e o flow segue. Os passos seguintes recebem, no lugar da saída dele, um objeto que descreve o erro; o passo mostra Falhou — o flow seguiu em âmbar, e a execução inteira termina como Concluído com erros em vez de Sucesso. Com nova tentativa também ligada, o erro só segue adiante depois da última tentativa.
{
"error": {
"message": "connection refused",
"code": "http_request_failed",
"stepId": "n3",
"stepName": "Fetch prices"
}
}Tempo limite
Interrompe cada tentativa depois desse número de segundos; uma tentativa que estoura conta como falha (código timeout), então uma nova tentativa pode rodá-la de novo. Sem ele, um passo só é limitado pelo tempo limite do próprio flow (30 minutos por padrão). Um passo AI Scraper define o Tempo limite do passo no próprio painel.
Pular, parar e esperar
- Pular o passo se: quando verdadeira, o passo não roda, aparece tracejado como Pulado pela condição, e os passos seguintes recebem um valor vazio (
null). - Parar o flow se: verificada depois que o passo dá certo, com a saída dele em
result. Quando verdadeira, nada depois dele roda e o flow termina como você escolher em O flow termina como: Sucesso, Pulado ou Erro (falha, códigostopped_by_condition). O passo mostra Parou o flow. - Esperar depois do passo: Por um tempo (segundos, minutos, horas ou dias, até 30 dias) ou Até uma data e hora (fixa, ou de uma expressão como
nodes.a.output.sendAt) antes de o próximo passo começar. Uma data que já passou não espera. Uma espera de mais de um minuto pausa a execução e libera o worker: a execução mostra Esperando até 14:30 e continua sozinha nessa hora, mesmo depois de um reinício.
Guardar resultado em cache
Com Guardar resultado em cache ligado, uma execução reaproveita a saída de uma execução recente bem-sucedida do mesmo passo com as mesmas entradas, em vez de rodá-lo de novo, pelos minutos que você definir (de 1 minuto a 7 dias). A chave cobre o passo como foi publicado, o código que ele roda e as entradas resolvidas — mude qualquer um e o passo roda de novo. Um passo reaproveitado mostra Veio do cache no canvas e na execução.
Como uma execução termina
| Status da execução | Quando |
|---|---|
| Sucesso | Todo passo deu certo, foi pulado, ou um Parar o flow se terminou como Sucesso. |
| Concluído com erros | Pelo menos um passo falhou com Continuar mesmo com erro e o resto terminou (também quando um subflow terminou assim). |
| Pulado | Um Parar o flow se disparou com “O flow termina como: Pulado”. |
| Falhou | Um passo falhou de verdade — depois da última tentativa, sem Continuar mesmo com erro — ou um Parar o flow se escolheu Erro. |
A página Execuções, o painel da execução e o canvas usam as mesmas palavras e cores: falha em vermelho, falhou · seguiu em âmbar, cache e pulado com marcas próprias.
Faixas e verificações
- Nova tentativa: 1–10 tentativas extras, espera de 1 s–1 h. Esperar: 1 s–30 dias. Cache: 1 min–7 dias. Tempo limite: um número positivo de segundos.
- Uma espera de mais de 30 dias é recusada com
wait_too_long— use um agendamento. Uma espera de mais de um minuto dentro de um loop ou de um ramo paralelo é recusada comlong_wait_in_loop/long_wait_in_branch: coloque a espera antes do loop. - Um valor fora da faixa é recusado na publicação e na execução com
invalid_run_setting, indicando o passo e a configuração. - O passo Em caso de erro não pode usar Continuar mesmo com erro, e o cache nunca aparece em Enviar e-mail.