Saltar al contenido principal

Flows

Un Flow es el orquestador de integraciones y automatizaciones low-code de la plataforma Nukk: en lugar de escribir un servicio de integración desde cero, armas el proceso visualmente en un canvas, conectando bloques que representan cada etapa de la automatización — recibir un evento, llamar a un sistema externo, transformar datos, decidir un camino, enviar una notificación, y así sucesivamente.

1. Visión General​

La pantalla de listado de Flows es filtrable por Squad, Environments y Trigger, mostrando las columnas Flow, Triggers, Total Artifact, Last Version, Last Update, Environments y Actions. El botón New Flow crea un nuevo Flow desde cero, abriendo el canvas de edición.

Dentro del canvas, la barra superior muestra el nombre del Flow, la versión actual (ej: 1.0) y tres acciones principales: Test (ejecuta una prueba/dry-run), Build y Save. A la izquierda están las pestañas del Flow (por defecto main, con un + para crear nuevas), y a la derecha el panel de Components, con búsqueda y los componentes organizados en categorías (Triggers, Connectors, etc).

2. Conceptos del Canvas​

Un Flow se compone de los siguientes conceptos:

Trigger (disparador)​

El Trigger es lo que inicia la ejecución de la integración o automatización. Es siempre el primer bloque del flujo. Ejemplos de triggers disponibles: HTTP (expone un endpoint que dispara el flujo al ser llamado), Event Consumer (reacciona a un evento publicado por otro Flow), Scheduler (dispara en horarios programados vía cron) y WhatsApp Trigger (dispara al recibir un mensaje). Un Flow también puede iniciarse como subrutina a través de un componente Function.

Conectores (Connectors)​

Los conectores son los bloques que ejecutan las acciones del flujo: llamar a una API, consultar o grabar en una base de datos, transformar un payload, enviar un mensaje, etc. Cubren prácticamente cualquier sistema que una empresa necesite integrar:

  • Bases de datos: SQL (relacional, vía JDBC), MongoDB, Qdrant (vectorial).
  • APIs y Web: HTTP (REST, como disparador o como llamada de salida), Jolt (transformación de JSON), JSON Validator.
  • Google Workspace: Google Sheets, Google Calendar, Google Storage.
  • Mensajería y eventos: WhatsApp, WhatsApp Upload Media, Event Producer/Event Consumer (patrón publish/subscribe entre Flows), Email.
  • Archivos y documentos: DOCX Reader, PDF Reader, TXT Reader, Excel Reader, File Writer, File to Base64, Markdown to DOCX, HTML to Text.
  • Seguridad y datos: JWT, Embedding (para IA/búsqueda semántica).
  • Automatización y código: Script (código personalizado), RPA Connector (automatización de navegador para sistemas sin API), Freemarker/Message Formatter (plantillas).
  • Lógica de flujo: Choice (condicional), ForEach (repetición), Add Variable, Local Storage, Function/Function Caller (subrutinas).

Este catálogo es el mismo motor de integración que resolvería la comunicación con CRMs, ERPs, proveedores de nube (AWS y similares) y cualquier otro sistema corporativo — vía HTTP/REST cuando el sistema expone una API, o vía conectores dedicados cuando existe uno específico para ese servicio.

Mira el catálogo completo, con todos los campos de cada conector, en Conectores.

Secrets y Config Maps​

Antes de usar una credencial o una configuración de entorno dentro de un conector, hay que seleccionar explícitamente el Secret o el Config Map que el Flow va a usar, en la pestaña correspondiente del Flow. Solo después de esa selección el valor queda accesible dentro del flujo, a través de la expresión {$.env.nombre.property}.

Caminos de error​

Cada conector puede tener un tratamiento alternativo en caso de fallo (executionOnError), permitiendo notificar, reintentar o seguir un camino de fallback — sin que una falla puntual tumbe la automatización entera.

3. Agentes de IA dentro del Flow​

El canvas es también el lugar donde creas agentes de IA directamente en la automatización, a través del conector AI Agent. Ejecuta un agente capaz de razonar sobre una o más tareas, decidir qué hacer y usar otros componentes de la plataforma como herramientas durante la ejecución — útil cuando el flujo necesita interpretar lenguaje natural, tomar decisiones más flexibles, u orquestar múltiples subtareas que dependen del contexto (algo que un Choice o ForEach tradicional no resolvería bien).

El agente soporta orquestación SEQUENTIAL, PARALLEL, LOOP o DYNAMIC de las tareas configuradas, y cualquier modelo de lenguaje compatible con la URL configurada. Casos de uso típicos: interpretar un pedido en texto libre y decidir la próxima acción, resumir documentos recibidos en el flujo, u orquestar dinámicamente varias subtareas (ej: un agente de atención que decide, por su cuenta, qué herramientas usar para responderle a un cliente). Mira todos los detalles en AI Agent.

4. Por qué Low-Code​

Armar la integración visualmente, arrastrando conectores al canvas en lugar de escribir y mantener código de integración desde cero, reduce drásticamente el tiempo entre "tenemos que integrar con el sistema X" y "está en producción": no hace falta escribir un cliente HTTP, manejar la autenticación manualmente, lidiar con la serialización de JSON o reimplementar patrones como retry — el conector ya resuelve eso, quedando solo configurar los campos específicos de esa integración. Esto también hace que el flujo sea más fácil de entender y mantener por cualquier persona del equipo, no solo por quien lo escribió originalmente.

5. Build, Deploy y Exposición de APIs​

Después de armar y probar el Flow (Test), el botón Build empaqueta la versión actual para el deploy. Si el Flow expone una API (trigger HTTP) y quieres ponerla a disposición en internet, el paso siguiente es configurar una Route en API Management, apuntando a ese Flow — sin ese paso, el Flow corre, pero no queda accesible públicamente.

6. FlowSpec​

Todo Flow puede visualizarse como su FlowSpec — la representación en JSON de toda la configuración del flujo (trigger, conectores, conexiones entre ellos, manejo de errores, etc). Es la forma "de código" del mismo Flow armado visualmente en el canvas, útil para revisar la configuración completa, comparar versiones, o entender exactamente qué se va a ejecutar.

7. Módulos​

Para organizar Flows más complejos, es posible crear módulos, separando la lógica de negocio de la API, del Scheduler y de las automatizaciones en partes distintas dentro del mismo Flow (o entre Flows relacionados), en lugar de concentrar todo en un único flujo monolítico. Esto deja más claro qué es disparador/exposición (API, programación) y qué es regla de negocio reutilizable, facilitando el mantenimiento y la reutilización entre diferentes triggers.

8. Ejemplo simple​

Flujo: recibir un pedido vía HTTP, consultar al cliente en una base SQL y enviar un correo de confirmación.

[Trigger: HTTP POST /pedidos]
│
▼
[SQL Connector] → busca datos del cliente
│
▼
[Message Formatter] → arma el cuerpo del correo
│
▼
[Email] → envía la confirmación al cliente
  • Trigger: recibe { "pedidoId": 123, "clienteId": 456 }
  • SQL Connector: SELECT nome, email FROM clientes WHERE id = :#clienteId
  • Message Formatter: arma "¡Hola {{nome}}, recibimos tu pedido #{{pedidoId}}!"
  • Email: envía el texto formateado a {{steps.buscarCliente.output.email}}

9. Preguntas frecuentes​

¿Un Flow puede llamar a otro Flow? Sí, es posible encadenar Flows como subrutinas reutilizables, vía Function/Function Caller o vía Event Producer/Event Consumer.

¿Cómo manejo un error en medio del Flow? Cada conector permite configurar una acción en caso de fallo (retry, seguir un camino alternativo, o interrumpir y notificar).

¿Dónde están los logs de ejecución? En Monitoring, filtrando por el Flow y la ejecución deseada — incluyendo el tracing completo de la ejecución y las alertas de error.