Tipos de nos
Cada workflow e construido a partir de nos. Cada no tem um
type que determina como o Flowker o processa em tempo de execucao.
trigger
O ponto de entrada de um workflow. Todo workflow deve comecar com um no trigger. Quando a execucao de um workflow e iniciada, o motor entra por este no e comeca o roteamento a partir dele.executor
Chama um executor externo — um servico HTTP, API ou provedor registrado no Flowker. Este e o bloco de construcao principal para integracoes com motores de fraude, provedores de pagamento, servicos de notificacao e outros sistemas externos.conditional
Avalia uma expressao contra o contexto de execucao e roteia para diferentes ramificacoes com base no resultado. Os nos condicionais permitem logica de ramificacao — por exemplo, rotear para um caminho de aprovacao quando a pontuacao de risco e alta, ou continuar diretamente quando e baixa.action
Um no de acao generico para etapas que nao envolvem chamadas externas mas representam operacoes significativas dentro do workflow — como transformar dados, emitir um evento ou registrar uma mudanca de estado.Arestas
As arestas conectam nos e definem o caminho de execucao. Cada aresta possui os seguintes campos:
| Campo | Descricao |
|---|---|
id | Identificador unico da aresta |
source | ID do no de origem |
target | ID do no de destino |
sourceHandle | Qual handle (porta de saida) do no de origem origina esta aresta |
condition | Uma expressao que deve ser avaliada como true para que esta aresta seja seguida |
label | Rotulo legivel para a aresta (usado em visualizacao e depuracao) |
Exemplo de aresta
condition aceita expressoes avaliadas contra o contexto de execucao. Quando omitido, a aresta e sempre seguida se o no de origem completar com sucesso.
Transicoes de status
Os workflows se movem por um ciclo de vida bem definido. Entender as transicoes de status e fundamental para implantar e iterar workflows de forma segura.
- draft — O estado inicial. Todas as modificacoes (adicionar nos, editar arestas, alterar configuracao) so sao permitidas no status
draft. - active — Um workflow que foi ativado. Pode ser executado. Nenhuma modificacao e permitida enquanto estiver ativo.
- inactive — Um workflow que foi desativado. Nao pode mais ser executado.
Regras
- Somente um workflow em
draftpode ser ativado (transicao:draft → active). - Somente um workflow
activepode ser desativado (transicao:active → inactive). - Tentar uma transicao invalida retorna o erro
FLK-0102. - Tentar modificar um workflow que nao esta em
draftretorna o erroFLK-0103.
Iterando com seguranca usando clone
Para modificar um workflow ativo, clone-o primeiro. A clonagem cria um novodraft a partir de qualquer status, copiando todos os nos e arestas. Voce pode entao editar o rascunho, testa-lo e ativa-lo quando estiver pronto — sem afetar a versao que esta sendo executada no momento.
Esta e a abordagem recomendada para versionar workflows em producao.
Limites tecnicos
| Limite | Valor | Codigo de erro |
|---|---|---|
| Maximo de nos por workflow | 100 | FLK-0113 |
| Maximo de arestas por workflow | 200 | FLK-0114 |
| Maximo do payload de entrada de execucao | 1 MB | FLK-0506 |
Padroes comuns
Sequencial
O padrao mais simples. Os nos executam um apos o outro em uma cadeia linear. Use quando cada etapa depende do resultado da anterior e nao ha ramificacao.
Exemplo: Orquestracao de pagamentos
Paralelo (fan-out / fan-in)
Multiplos nos executor sao iniciados a partir de um ponto de entrada comum e seus resultados sao coletados em um no de juncao. Use quando verificacoes ou chamadas independentes podem ocorrer concorrentemente para reduzir o tempo total de execucao.
Este padrao e util quando voce precisa chamar multiplos provedores de fraude ou conformidade simultaneamente e agregar suas respostas antes de tomar uma decisao de roteamento.
Ramificacao condicional
Um noconditional avalia uma expressao e roteia a execucao para diferentes nos dependendo do resultado. Cada aresta de saida do no condicional carrega uma expressao condition.
Exemplo: Verificacao antifraude
Exemplos do mundo real
Verificacao antifraude
Uma transacao chega, uma pontuacao de fraude e obtida de um motor externo, e o resultado roteia a execucao para um caminho de aprovacao ou rejeicao.Orquestracao de pagamentos
Um fluxo linear que valida os dados do pagamento recebido, roteia para o provedor apropriado e envia uma confirmacao.Onboarding KYC
Os documentos de um cliente sao verificados por um servico externo. Um no condicional avalia se e necessaria revisao manual. Se sim, uma acao de aprovacao manual e acionada antes de ativar a conta.Fluxo de aprovacao manual
Uma solicitacao e enviada para revisao. Uma acao de aprovacao aguarda uma decisao. Um no condicional entao roteia para o caminho de aprovacao ou rejeicao.Melhores praticas
Convencoes de nomeacao de nos
Use nomes descritivos orientados a acao que comuniquem o que o no faz — nao de que tipo e.- Correto:
Validate Payment Data,Get Fraud Score,Notify Customer,Await Approval - Incorreto:
executor1,conditional node,node3
Expressoes de condicao em arestas
As condicoes nas arestas sao avaliadas contra o contexto de execucao. Mantenha-as simples e explicitas:- Use comparacoes diretas de campos:
data.status == 'approved' - Use comparacoes numericas:
data.riskScore < 70 - Use campos booleanos:
data.reviewRequired == true
conditional que encapsule a decisao com um nome claro.
Uma expressao invalida retorna FLK-0105. Sempre valide as expressoes antes de ativar um workflow.
Estrategias de tratamento de erros
Projete workflows para tratar falhas de forma explicita:- Adicione caminhos de rejeicao a partir de nos
conditionalpara cada ponto de decisao que possa falhar. - Use nos
executorseparados para logica de retentativa ou provedores de fallback. - Nomeie os caminhos de erro de forma clara (por exemplo,
Reject and Notify,Fallback to Manual Review) para que os logs de auditoria sejam autoexplicativos.
Evitando ciclos
O Flowker usa um protetor de ciclos baseado em DFS em tempo de execucao. Se um ciclo for detectado durante a execucao, o workflow falha comFLK-0508. Os ciclos nao sao detectados em tempo de design, portanto valide a estrutura das suas arestas antes de ativar.
Regras para prevenir ciclos:
- As arestas devem sempre apontar para frente no fluxo — nunca de volta para um no executado anteriormente.
- Revise o grafo visualmente antes de ativar qualquer workflow com ramificacoes ou caminhos que se fundem.
- Se uma retentativa ou loop for necessario, modele como uma invocacao de workflow separada, nao como uma aresta de retorno no grafo atual.
Versionamento via clone
Nunca edite um workflow ativo diretamente. Em vez disso:- Clone o workflow (cria um novo
draftcom todos os nos e arestas copiados). - Faca suas alteracoes no rascunho.
- Teste o rascunho com execucoes de teste.
- Ative a nova versao.
- Desative a versao anterior se nao for mais necessaria.
Referencia de erros
Os seguintes codigos de erro sao relevantes para o design e a execucao de workflows:
| Codigo | Descricao |
|---|---|
FLK-0102 | Invalid status transition |
FLK-0103 | Workflow cannot be modified — not in draft status |
FLK-0105 | Invalid conditional expression |
FLK-0113 | Too many nodes — maximum is 100 |
FLK-0114 | Too many edges — maximum is 200 |
FLK-0506 | Execution input payload too large — maximum is 1 MB |
FLK-0508 | Cycle detected during workflow execution |

