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.