Projete workflows no Flowker com clareza e controle. Este guia apresenta os tipos de nós, arestas, padrões do mundo real, transições de status, limites técnicos e boas práticas para ajudar você a construir orquestrações confiáveis e fáceis de manter.Documentation Index
Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
Use this file to discover all available pages before exploring further.
Tipos de nós
Todo workflow é construído a partir de nós. Cada nó possui um
type que define como o Flowker o processa em tempo de execução.
trigger
O ponto de entrada de um workflow. Todo workflow deve começar com um nó trigger. Quando a execução começa, o motor entra por esse nó e inicia o roteamento a partir dele.executor
Chama um executor externo, um serviço HTTP, API ou provedor registrado no Flowker. Este é o bloco fundamental para integração com motores de fraude, provedores de pagamento, serviços de notificação e outros sistemas externos.conditional
Avalia uma expressão contra o contexto de execução e roteia para diferentes ramificações com base no resultado. Use nós condicionais para implementar lógica de ramificação, por exemplo, roteando para um caminho de aprovação quando o risco é alto, ou continuando diretamente quando é baixo.action
Representa operações internas do workflow que não envolvem chamadas externas, como transformar dados, emitir eventos ou registrar mudanças de estado.Arestas
Arestas conectam nós e definem caminhos de execução. Cada aresta inclui os seguintes campos:
| Campo | Descrição |
|---|---|
id | Identificador único da aresta. |
source | ID do nó de origem. |
target | ID do nó de destino. |
sourceHandle | Porta de saída do nó de origem de onde a aresta se origina. |
condition | Expressão que deve ser avaliada como verdadeira para que a aresta seja seguida. |
label | Rótulo legível usado para visualização e depuração. |
Exemplo de aresta
condition é avaliado contra o contexto de execução. Se omitido, a aresta é sempre seguida quando o nó de origem é concluído com sucesso.
Transições de status
Workflows seguem um ciclo de vida bem definido. Compreender essas transições é essencial para implantar e evoluir workflows com segurança.

- draft — O estado inicial. Todas as modificações (adicionar nós, editar arestas, alterar configurações) são permitidas apenas no status
draft. - active — Um workflow que foi ativado. Pode ser executado. Nenhuma modificação é permitida enquanto estiver ativo.
- inactive — Um workflow que foi desativado. Não pode mais ser executado, mas pode ser movido de volta para
draftpara edição.
Regras
- Apenas um workflow em
draftpode ser ativado (transição:draft → active). - Apenas um workflow
activepode ser desativado (transição:active → inactive). - Apenas um workflow
inactivepode ser movido de volta para draft (transição:inactive → draft). - Tentar uma transição inválida retorna o erro
FLK-0102. - Tentar modificar um workflow que não está em
draftretorna o erroFLK-0103.
Movendo um workflow inativo de volta para draft
Se você desativou um workflow e quer editá-lo novamente, mova-o de volta paradraft chamando POST /v1/workflows/{id}/draft. Isso torna o workflow editável sem precisar cloná-lo.
Isso é útil quando você desativou um workflow por engano ou quando quer iterar sobre um workflow existente em vez de criar uma cópia.
Apenas workflows inativos podem ser movidos para draft. Se você precisar modificar um workflow ativo sem tirá-lo do ar, use a abordagem de clone descrita abaixo.
Iterando com segurança usando clone
Para modificar um workflow ativo, clone-o primeiro. A clonagem cria um novodraft a partir de qualquer status, copiando todos os nós e arestas. Você pode então atualizar, testar e ativá-lo sem impactar a versão atual.
Esta é a abordagem recomendada para versionamento em produção.
Limites técnicos
| Limite | Valor | Código de erro |
|---|---|---|
| Máximo de nós por workflow | 100 | FLK-0113 |
| Máximo de arestas por workflow | 200 | FLK-0114 |
| Payload máximo de entrada para execução | 1 MB | FLK-0506 |
Padrões comuns
Sequencial
O padrão mais simples. Os nós são executados em uma sequência linear. Use quando cada etapa depende da anterior e nenhuma ramificação é necessária.
Ramificação condicional
Um nóconditional avalia uma expressão e roteia a execução de acordo. Cada aresta de saída carrega sua própria condition.

Exemplos do mundo real
Verificação antifraude
Uma transação chega, uma pontuação de fraude é obtida, e a execução é roteada para aprovação ou rejeição.Orquestração de pagamento
Um fluxo linear que valida os dados de pagamento recebidos, roteia para o provedor apropriado e envia uma confirmação.Onboarding KYC
Os documentos de um cliente são verificados por um serviço externo. Um nó condicional avalia se uma revisão manual é necessária. Se sim, uma ação de aprovação manual é acionada antes de ativar a conta.Fluxo de aprovação manual
Uma solicitação é enviada para revisão. Uma ação de aprovação aguarda uma decisão. Um nó condicional então roteia para o caminho de aprovação ou rejeição.Boas práticas
Convenções de nomenclatura de nós
Use nomes descritivos e orientados a ações que comuniquem o que o nó faz, e não qual é o seu tipo.- correto:
Validate Payment Data,Get Fraud Score,Notify Customer,Await Approval - errado:
executor1,conditional node,node3
Expressões de condição em arestas
As condições nas arestas são avaliadas contra o contexto de execução. Mantenha-as simples e explícitas:- Use comparações diretas de campos:
<nodeId>.status == 'approved' - Use comparações numéricas:
<nodeId>.riskScore < 70 - Use campos booleanos:
<nodeId>.reviewRequired == true
conditional que encapsula a decisão com um nome claro.
Uma expressão inválida retorna FLK-0105. Sempre valide as expressões antes de ativar um workflow.
Estratégias de tratamento de erros
Projete workflows para lidar com falhas de forma explícita:- Adicione caminhos de rejeição a partir de nós
conditionalpara cada ponto de decisão que pode falhar. - Use nós
executorseparados para lógica de retry 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 mecanismo de detecção de ciclos baseado em DFS em tempo de execução. Se um ciclo for detectado durante a execução, o workflow falha comFLK-0508. Ciclos não são 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 nó executado anteriormente.
- Revise o grafo visualmente antes de ativar qualquer workflow com ramificações ou caminhos de junção.
- Se um retry ou loop for necessário, modele-o como uma invocação de workflow separada, não como uma aresta de retorno no grafo atual.
Versionamento via clone
Nunca edite um workflow ativo diretamente. Em vez disso:
Isso preserva o histórico de execução da versão ativa e oferece um caminho de rollback caso a nova versão apresente problemas.
Criando workflows a partir de templates
Em vez de construir um workflow do zero, você pode criá-lo a partir de um template pré-construído no catálogo. Templates fornecem estruturas prontas de nós e arestas para padrões comuns — validação de pagamentos, verificações de fraude, fluxos de onboarding e mais. Chame
POST /v1/workflows/from-template com o ID do template, um nome para o novo workflow e quaisquer parâmetros que o template requer. O resultado é um novo workflow com status draft que você pode revisar, personalizar e ativar.
Exemplo de requisição
Exemplo de requisição
Referência de erros
Os seguintes códigos de erro são relevantes para o design e a execução de workflows:
| Código | Descrição |
|---|---|
FLK-0102 | Transição de status inválida |
FLK-0103 | Workflow não pode ser modificado — não está no status draft |
FLK-0105 | Expressão condicional inválida |
FLK-0113 | Nós em excesso — o máximo é 100 |
FLK-0114 | Arestas em excesso — o máximo é 200 |
FLK-0506 | Payload de entrada da execução muito grande — o máximo é 1 MB |
FLK-0508 | Ciclo detectado durante a execução do workflow |

