Pular para o conteúdo principal

Flows

Um Flow é o orquestrador de integrações e automações low-code da plataforma Nukk: em vez de escrever um serviço de integração do zero, você monta o processo visualmente em um canvas, conectando blocos que representam cada etapa da automação — receber um evento, chamar um sistema externo, transformar dados, decidir um caminho, enviar uma notificação, e assim por diante.

1. Visão Geral

A tela de listagem de Flows é filtrável por Squad, Environments e Trigger, mostrando as colunas Flow, Triggers, Total Artifact, Last Version, Last Update, Environments e Actions. O botão New Flow cria um novo Flow do zero, abrindo o canvas de edição.

Dentro do canvas, a barra superior mostra o nome do Flow, a versão atual (ex: 1.0) e três ações principais: Test (executa um teste/dry-run), Build e Save. À esquerda ficam as abas do Flow (por padrão main, com um + para criar novas), e à direita o painel de Components, com busca e os componentes organizados em categorias (Triggers, Connectors, etc).

2. Conceitos do Canvas

Um Flow é composto pelos seguintes conceitos:

Trigger (gatilho)

O Trigger é o que inicia a execução da integração ou automação. É sempre o primeiro bloco do fluxo. Exemplos de triggers disponíveis: HTTP (expõe um endpoint que dispara o fluxo ao ser chamado), Event Consumer (reage a um evento publicado por outro Flow), Scheduler (dispara em horários programados via cron) e WhatsApp Trigger (dispara ao receber uma mensagem). Um Flow também pode ser iniciado como sub-rotina através de um componente Function.

Conectores (Connectors)

Os conectores são os blocos que executam as ações do fluxo: chamar uma API, consultar ou gravar em um banco de dados, transformar um payload, enviar uma mensagem, etc. Eles cobrem praticamente qualquer sistema que uma empresa precise integrar:

  • Bancos de dados: SQL (relacional, via JDBC), MongoDB, Qdrant (vetorial).
  • APIs e Web: HTTP (REST, como gatilho ou como chamada de saída), Jolt (transformação de JSON), JSON Validator.
  • Google Workspace: Google Sheets, Google Calendar, Google Storage.
  • Mensageria e eventos: WhatsApp, WhatsApp Upload Media, Event Producer/Event Consumer (padrão publish/subscribe entre Flows), Email.
  • Arquivos e documentos: DOCX Reader, PDF Reader, TXT Reader, Excel Reader, File Writer, File to Base64, Markdown to DOCX, HTML to Text, OCR.
  • Segurança e dados: JWT, Embedding (para IA/busca semântica).
  • Automação e código: Script (código customizado), RPA Connector (automação de navegador para sistemas sem API), Freemarker/Message Formatter (templates).
  • Lógica de fluxo: Choice (condicional), ForEach (repetição), Add Variable, Local Storage, Function/Function Caller (sub-rotinas).

Esse catálogo é o mesmo motor de integração que resolveria a comunicação com CRMs, ERPs, provedores de nuvem (AWS e similares) e qualquer outro sistema corporativo — via HTTP/REST quando o sistema expõe API, ou via conectores dedicados quando existe um específico para aquele serviço.

Veja o catálogo completo, com todos os campos de cada conector, em Conectores.

Secrets e Config Maps

Antes de usar uma credencial ou uma configuração de ambiente dentro de um conector, é preciso selecionar explicitamente a Secret ou o Config Map que o Flow vai usar, na aba correspondente do Flow. Só depois dessa seleção o valor fica acessível dentro do fluxo, através da expressão {$.env.nome.property}.

Caminhos de erro

Cada conector pode ter um tratamento alternativo caso falhe (executionOnError), permitindo notificar, tentar de novo ou seguir um caminho de fallback — sem que uma falha pontual derrube a automação inteira.

3. Agentes de IA dentro do Flow

O canvas também é o lugar onde você cria agentes de IA diretamente na automação, através do conector AI Agent. Ele executa um agente capaz de raciocinar sobre uma ou mais tarefas, decidir o que fazer e usar outros componentes da plataforma como ferramentas durante a execução — útil quando o fluxo precisa interpretar linguagem natural, tomar decisões mais flexíveis, ou orquestrar múltiplas sub-tarefas que dependem de contexto (algo que um Choice ou ForEach tradicional não resolveria bem).

O agente suporta orquestração SEQUENTIAL, PARALLEL, LOOP ou DYNAMIC das tarefas configuradas, e qualquer modelo de linguagem compatível com a URL configurada. Casos de uso típicos: interpretar um pedido em texto livre e decidir a próxima ação, resumir documentos recebidos no fluxo, ou orquestrar dinamicamente várias sub-tarefas (ex: um agente de atendimento que decide, por conta própria, quais ferramentas usar para responder um cliente). Veja todos os detalhes em AI Agent.

4. Por que Low-Code

Montar a integração visualmente, arrastando conectores para o canvas em vez de escrever e manter código de integração do zero, reduz drasticamente o tempo entre "temos que integrar com o sistema X" e "está em produção": não é preciso escrever cliente HTTP, tratar autenticação manualmente, lidar com serialização de JSON ou reimplementar padrões como retry — o conector já resolve isso, restando configurar os campos específicos daquela integração. Isso também torna o fluxo mais fácil de entender e manter por qualquer pessoa do time, não só por quem o escreveu originalmente.

5. Build, Deploy e Exposição de APIs

Depois de montar e testar o Flow (Test), o botão Build empacota a versão atual para deploy. Se o Flow expõe uma API (trigger HTTP) e você quer disponibilizá-la na internet, o passo seguinte é configurar uma Route em API Management, apontando para esse Flow — sem esse passo, o Flow roda, mas não fica acessível publicamente.

6. FlowSpec

Todo Flow pode ser visualizado como o seu FlowSpec — a representação em JSON de toda a configuração do fluxo (trigger, conectores, ligações entre eles, tratamento de erro, etc). É a forma "de código" do mesmo Flow montado visualmente no canvas, útil para revisar a configuração completa, comparar versões, ou entender exatamente o que será executado.

7. Módulos

Para organizar Flows mais complexos, é possível criar módulos, separando a lógica de negócio da API, do Scheduler e das automações em partes distintas dentro do mesmo Flow (ou entre Flows relacionados), em vez de concentrar tudo em um único fluxo monolítico. Isso deixa mais claro o que é gatilho/exposição (API, agendamento) e o que é regra de negócio reutilizável, facilitando manutenção e reaproveitamento entre diferentes triggers.

8. Exemplo simples

Fluxo: receber um pedido via HTTP, consultar o cliente em um banco SQL e enviar um e-mail de confirmação.

[Trigger: HTTP POST /pedidos]


[SQL Connector] → busca dados do cliente


[Message Formatter] → monta o corpo do e-mail


[Email] → envia confirmação ao cliente
  • Trigger: recebe { "pedidoId": 123, "clienteId": 456 }
  • SQL Connector: SELECT nome, email FROM clientes WHERE id = :#clienteId
  • Message Formatter: monta "Olá {{nome}}, recebemos seu pedido #{{pedidoId}}!"
  • Email: envia o texto formatado para {{steps.buscarCliente.output.email}}

9. Perguntas frequentes

Um Flow pode chamar outro Flow? Sim, é possível encadear Flows como sub-rotinas reutilizáveis, via Function/Function Caller ou via Event Producer/Event Consumer.

Como eu trato um erro no meio do Flow? Cada conector permite configurar uma ação em caso de falha (retry, seguir caminho alternativo, ou interromper e notificar).

Onde ficam os logs de execução? Em Monitoring, filtrando pelo Flow e pela execução desejada — inclusive tracing completo da execução e alertas de erro.