Ciclo de vida da configuração de executor
Antes de um executor poder ser usado em um workflow, ele passa pelo seguinte ciclo de vida:
Ciclo de vida da configuração de executor
/v1/executors (listar, obter, atualizar, remover). Os estados do ciclo de vida (unconfigured, configured, tested, active, disabled) são rastreados internamente — as transições acontecem por meio da camada de serviço.
O ciclo de vida da configuração de executor é gerenciado pela camada de serviço (comandos
MarkConfigured, MarkTested, Activate, Disable, Enable). Observe que a API HTTP atual expõe os endpoints GET, PATCH e DELETE. O PATCH atualiza os dados de configuração, mas não dispara transições de status.Passo 1: Explorar o catálogo
Antes de criar uma configuração de executor, explore o catálogo para ver o que está disponível. O catálogo é um registro somente leitura de executors e triggers integrados que vêm com o Flowker. Você não precisa criar entradas no catálogo — você as descobre e configura as que precisa.
1
Listar executors disponíveis
Chame o endpoint Listar executors do catálogo para ver todos os tipos de executor que o Flowker suporta — requisições HTTP, transformações de dados e mais.
2
Listar triggers disponíveis
Chame o endpoint Listar triggers do catálogo para ver como os workflows podem ser iniciados — webhooks ou chamadas API manuais.
3
Escolha o que você precisa
Identifique o tipo de executor e trigger que correspondem à sua integração. Você vai referenciá-los ao criar sua configuração no próximo passo.
Passo 2: Configurar uma conexão de provider e executor
Os executors são componentes integrados que vêm com o Flowker. Você não os cria via API — eles são descobertos pelo catálogo (
GET /v1/catalog/executors) no Passo 1.
Para usar um executor, primeiro crie uma configuração de provider que define a conexão com o serviço externo e, em seguida, gerencie as configurações de executor que associam um executor do catálogo a uma conexão de provider com configurações específicas da operação.
Criar uma configuração de provider
ChamePOST /v1/provider-configurations para configurar a conexão com seu serviço externo — incluindo a URL base, credenciais e configurações específicas do ambiente. O campo config é validado contra o JSON Schema do provider no catálogo.
Consulte Configurações de provider abaixo para detalhes e exemplos.
Gerenciar configurações de executor
Uma vez que você tenha uma configuração de provider, gerencie as configurações de executor pelos endpoints/v1/executors:
Uma configuração de executor define qual endpoint chamar e como mapear os dados para essa operação. Ela referencia uma configuração de provider para os detalhes reais da conexão.
Consulte a API de Configurações de executor para a referência completa da API.
Tipos de autenticação
O Flowker suporta múltiplos métodos de autenticação. Use o método exigido pelo seu serviço externo.
Exemplo — OIDC client credentials
Exemplo — OIDC client credentials
Configurações de provider
As configurações de provider são independentes das configurações de executor. Enquanto uma configuração de executor define como o Flowker chama uma operação específica em um serviço externo, uma configuração de provider representa uma conexão configurada a uma instância de provider — incluindo sua URL base, credenciais e configurações específicas do ambiente. Pense assim: uma configuração de provider é a conexão, e uma configuração de executor é a operação que você executa sobre essa conexão.
Criar uma configuração de provider
Crie uma configuração de provider chamando o endpoint Criar configuração de provider. Forneça oproviderId do catálogo e a configuração específica do provider (URL base, credenciais, etc.).
O campo config é validado contra o JSON Schema do provider no catálogo. Se não corresponder, a requisição retorna um erro 422.
Exemplo de requisição
Exemplo de requisição
Testar conectividade
Após criar uma configuração de provider, teste-a com o endpoint Testar configuração de provider. O teste executa três etapas — conectividade, autenticação e ponta a ponta — e retorna resultados para cada uma.Habilitar e desabilitar
As configurações de provider são criadas com statusactive. Você pode desabilitá-la temporariamente com o endpoint Desabilitar configuração de provider e reabilitá-la com o endpoint Habilitar configuração de provider.
Consulte a API de Configurações de provider para a referência completa.
Passo 3: Configurar o executor
Marque o executor como configurado chamando o endpoint Update executor configuration. Isso transiciona o status de
unconfigured para configured.
Passo 4: Validar sua configuração
Antes de usar um executor em um workflow, valide sua configuração contra o schema do catálogo usando o endpoint Validate executor config (
POST /v1/catalog/executors/{id}/validate).
Isso executa apenas a validação de JSON Schema — verifica se o seu objeto de configuração corresponde à estrutura que o executor espera (campos obrigatórios, tipos, formatos). Não testa a conectividade com o serviço externo.
Para testar a conectividade real com um serviço externo, use o endpoint Testar configuração de provider na configuração de provider. Esse endpoint executa verificações de conectividade, autenticação e ponta a ponta contra o serviço real.
Mapeamento de campos e transformação de dados
Quando os dados do workflow não correspondem ao formato esperado por um serviço externo — ou quando um serviço retorna dados em um formato que o próximo passo não consegue consumir — use mapeamentos de campos e transformações para cobrir essa lacuna. Os mapeamentos de campos e transformações são definidos dentro do objeto
data dos nodes executor. O Flowker aplica os mapeamentos de entrada antes de chamar o serviço externo e os mapeamentos de saída depois de receber a resposta.
Exemplo rápido — mapeando campos do workflow para um executor
Exemplo rápido — mapeando campos do workflow para um executor
Passo 5: Usar o executor em um workflow
Uma vez que a configuração do executor é validada, referencie-a em um workflow. O executor se torna ativo quando é usado em um workflow ativo. Para retirar temporariamente um executor de serviço, atualize sua configuração usando o endpoint Update executor configuration.
Usando um executor em um workflow
Referencie o executor em um node do tipo
executor.
O exemplo abaixo cria um workflow de validação de pagamento. Quando um pagamento chega, o Flowker chama o executor de verificação de fraude, avalia o score de risco e aprova ou rejeita o pagamento com base no resultado.
O workflow tem cinco nodes: um trigger webhook que recebe o pagamento, um node executor que chama o serviço de verificação de fraude, um node conditional que avalia o score, e dois nodes action para os resultados de aprovação e rejeição. Os edges os conectam em sequência, com o node condicional bifurcando para um ou outro caminho com base no limiar do score.
Use o endpoint Criar workflow para definir o workflow, depois Ativar, e finalmente Executar.
Exemplo — Criar um workflow de validação de pagamento
Exemplo — Criar um workflow de validação de pagamento
Exemplo — Executar o workflow
Exemplo — Executar o workflow
Disparando workflows
As execuções de workflow são disparadas via endpoint Executar workflow:
inputData para a execução. Todos os campos ficam disponíveis para os nodes seguintes via namespace workflow — por exemplo, workflow.transactionId ou workflow.amount. As saídas de nodes ficam disponíveis via o ID do node — por exemplo, check-fraud.score.
Idempotência
Toda requisição de execução precisa incluir um headerIdempotency-Key. Requisições sem ele são rejeitadas com 400 Bad Request (erro FLK-0509). Gere um UUID novo para cada nova execução e reutilize a mesma chave apenas ao repetir a requisição idêntica.
Triggers por webhook
Webhooks são a principal forma de sistemas externos dispararem workflows do Flowker. Em vez de o seu sistema chamar a API de execuções diretamente, você registra um caminho de webhook em um workflow e os serviços externos enviam requisições HTTP para esse caminho.
Como funciona
- Adicione um trigger node do tipo
webhookao seu workflow com umpathemethodem seudata. - Quando o workflow é ativado, o Flowker registra o caminho em seu registro de webhooks.
- Sistemas externos enviam requisições para
POST /v1/webhooks/{path}(ou o método que você configurou). - O Flowker resolve o caminho para o workflow correspondente e o executa.
Definindo um trigger node de webhook
O trigger de webhook é um node comtype: "trigger" e os seguintes campos em data:
Exemplo — Trigger node de webhook
Exemplo — Trigger node de webhook
Metadados do webhook
O Flowker injeta automaticamente um objeto_webhook no inputData da execução com metadados sobre a requisição recebida:
Esses metadados ficam disponíveis para todos os nodes do workflow via namespace
workflow._webhook.
Observações importantes
- Cada combinação de caminho de webhook + método só pode ser registrada por um workflow ativo. Ativar um segundo workflow com o mesmo caminho falha com um erro de conflito.
- Os caminhos de webhook suportam segmentos aninhados (ex:
payments/stripe/received). - O tamanho máximo do corpo da requisição é 1 MB.
- Desativar um workflow automaticamente remove o registro de suas rotas de webhook.
Modo de resposta síncrona
Por padrão, um trigger de webhook responde com um recibo202 assim que a execução começa (o modo assíncrono) — o chamador precisa consultar o status da execução separadamente. Defina response_mode como "sync" no data do trigger node para que o Flowker mantenha a conexão HTTP aberta e devolva o resultado da execução diretamente na resposta:
Se a execução não atingir um estado terminal antes de o limite interno de espera se esgotar, o Flowker recorre ao mesmo recibo
202 (com um header Location apontando para o endpoint de resultados) que o modo assíncrono teria devolvido.
response_view define o formato do corpo da resposta síncrona:
O
finalOutput de uma execução com falha (nas views full ou final_output) sempre traz status: "failed" e errorMessage, e errorClass quando o Flowker conseguiu classificar a falha — nunca um {} vazio. Sem um override de responseStatusCode (ver abaixo), o status HTTP síncrono permanece 200 para full/final_output/receipt (reporta a saúde do transporte, não o resultado de negócio). Um responseStatusCode válido no node set_output terminal sobrescreve esse status para essas três views.
Um node de ação com actionType: "set_output" pode carregar um responseStatusCode opcional (inteiro, 200–599) para sobrescrever o status HTTP que uma resposta de webhook sync devolve. Um valor fora do intervalo ou não inteiro é rejeitado ao salvar (FLK-0122). Para passthrough, o override se aplica somente quando o próprio node set_output é o step terminal — o status repassado de um executor terminal sempre vence, e o fallback sem resposta sempre usa um 200 puro para que um override nunca mascare uma falha.
A detecção do passthrough é estrita: só o step terminal conta. Um set_output terminal depois de um executor responde com o próprio output — o Flowker nunca volta à resposta de um executor anterior. Em uma execução com falha, o step que interrompeu a execução é o terminal, então um 4xx do provedor que parou o workflow é repassado como o 4xx real.
Os valores do output de um node set_output suportam referências ${...} resolvidas contra o contexto do workflow — incluindo ${workflow.<campo>} (payload do trigger), ${execution.id}, ${execution.startedAt} e ${execution.now} (carimbado no momento da interpolação). Uma referência ${...} que não pode ser resolvida faz o step falhar (fail-closed).
Tratamento de erros
Se um node falha, a execução para e é marcada como
failed.
Não há fallback automático. Após esgotar as retentativas, a execução falha.
Cada falha inclui:
- Node que falhou e motivo
- Número do passo e saída
- Código de erro
Retentativas e circuit breaker
O Flowker inclui resiliência integrada para chamadas a executors.
Retentativas
Quando uma chamada a um executor falha com um erro transitório, o Flowker retenta automaticamente. O comportamento de retentativa é configurável por node na configuração do executor:
Retentativas só se aplicam quando a operação é segura de repetir. Por padrão, chamadas
POST e PATCH são tratadas como não idempotentes e não são retentadas (uma única tentativa), enquanto GET, PUT, DELETE e outros verbos retentam normalmente. Configurar retry.max_attempts explicitamente em um node habilita as retentativas para esse node independentemente do método.
Erros não retentáveis cortam para uma única tentativa independentemente da configuração: circuit breaker aberto, contexto cancelado, erros de configuração, falhas de resolução de secrets e respostas 4xx não transitórias do provedor (qualquer 4xx exceto 408 e 429).
A retentativa se aplica por execução de node. Se todas as tentativas falharem, o passo é marcado como falho e a execução para.
Circuit breaker
O Flowker usa um circuit breaker para proteger os serviços externos de serem sobrecarregados por chamadas falhas repetidas:
Erros
4xx de cliente/autenticação do provedor não disparam o circuito: são um problema do chamador, não um sinal de que o provedor está fora do ar. Somente falhas de transporte e 5xx contam para o limiar.
Quando o circuito está aberto, as chamadas a executors falham imediatamente com FLK-0507 em vez de alcançar o serviço externo. Isso previne falhas em cascata e dá tempo ao serviço externo para se recuperar.
Transições de estado do circuit breaker
Próximos passos
Conceitos fundamentais
Entenda workflows, nodes, edges e execuções.
Executor configurations API
Explore a API de configuração de executors.

