Pipelines

¿Qué es un Pipeline?

Un Pipeline encadena las funciones que ya configuraste (Splitters, Colecciones, Flows, Agentes, Matchers, Inspectores, Fillers y Buckets) en un solo proceso de punta a punta que dibujas en un lienzo. Envías un documento; el Pipeline lo lleva por cada paso y entrega el resultado donde tú quieras.

Cada nodo del lienzo apunta a una función que ya existe. El Pipeline no copia su configuración: cuando mejoras los campos de un Flow o las verificaciones de un Inspector, todos los Pipelines que lo usan toman el cambio. Lo que el Pipeline agrega es el orden: qué paso recibe el documento, qué ejecuciones siguen y a dónde va el resultado.

Beta

Los Pipelines están en beta. Están disponibles para todas las organizaciones, y el lienzo y sus tipos de nodo todavía pueden cambiar.

Pipelines vs. Mapa de Pipeline

El Mapa de Pipeline es una imagen de solo lectura de las conexiones configuradas en las propias funciones (la exportación a Bucket de un Flow, los Flows de una Colección, los tipos de documento de un Splitter). Un Pipeline es un grafo que construyes y ejecutas a propósito, con su propia entrada, ejecuciones y salidas.

Cuándo usar un Pipeline

  • Hay que dividir un paquete, extraer cada documento con su propio Flow y revisar los resultados en conjunto
  • Los datos extraídos deben pasar a un Agente, a una comparación de un Matcher o al checklist de un Inspector sin que nadie haga clic
  • Quieres una sola dirección de correo o una sola llamada a la API que ejecute todo el proceso, no una por función
  • El resultado debe llegar a Slack, Teams, Google Chat, una plataforma de automatización o un buzón como paso final

Si un solo Flow con su propio webhook, correo o exportación a Bucket ya resuelve el trabajo, no necesitas un Pipeline. Las funciones siguen funcionando por su cuenta.

Tipos de nodo

Todo lienzo empieza con un nodo de Entrada. Los demás se agregan desde “Agregar nodo”, que los agrupa según la etapa que cumplen: “Recibir y enrutar”, “Extraer”, “Procesar y verificar” y “Entregar”.

NodoQué hacePuede conectarse a
EntradaCada ejecución empieza aquí con el documento subido.Splitter, Colección, Flow
SplitterDivide un paquete en sus documentos y envía cada uno.Flow, Splitter, Colección
ColecciónEnruta un documento desconocido al Flow correcto.Flow, Salida
FlowExtrae campos estructurados de un documento.Agente, Escritura a bucket, Salida, Matcher, Inspector, Filler
AgenteActúa sobre los datos extraídos en un navegador.Agente, Escritura a bucket, Salida
MatcherCompara un run contra los anteriores.Agente, Escritura a bucket, Salida
InspectorEjecuta un checklist sobre uno o más runs.Agente, Escritura a bucket, Salida
FillerRellena una plantilla con datos de los runs.Salida
Escritura a bucket (Buckets)Guarda las filas extraídas en un Bucket, con el mapeo de campos que defines en el nodo.Nada (fin de una rama)
SalidaEnvía el resultado a email, Slack, Teams, Google Chat, Zapier, Make, n8n o un webhook.Nada (fin de una rama)

Cuando hay un nodo seleccionado, “Agregar nodo” atenúa los tipos que no pueden ir después de él y conecta el nuevo nodo automáticamente. Al elegir un Flow también se sugieren los Matchers, Inspectores y Fillers cuyas entradas ya esperan runs de ese Flow (“Conectados a este flow”), que se agregan ya conectados. Los nodos de Agente requieren los Agentes, que se activan por organización a solicitud.

Puertos y ranuras

Una conexión que sale de un Splitter pregunta qué tipo de documento viaja por ella (o “Cualquier documento”). Una conexión que entra a un Inspector o a un Filler pregunta qué ranura de entrada recibe el run. Un Matcher en modo de referencia necesita que una de sus entradas sea la “Entrada de referencia”, y solo acepta runs de su propio Flow.

Construir un Pipeline

  1. 1Abre “Pipelines” en la barra lateral y haz clic en “Nuevo Pipeline”. Ponle un nombre y, si quieres, una descripción.
  2. 2El lienzo se abre con su nodo de Entrada. Selecciónalo y elige cómo llegan los documentos (ver Fuentes más abajo).
  3. 3Haz clic en “Agregar nodo”, elige un paso y luego cuál de tus funciones usar. O arrastra desde el punto a la derecha de un nodo hasta otro nodo para conectarlos.
  4. 4Selecciona un nodo para abrir su panel: su función vinculada, de qué recibe y a qué envía, y sus ajustes (el mapeo de campos de la Escritura a bucket, el destino de la Salida, la entrada de referencia del Matcher).
  5. 5Corrige lo que aparezca en “Corrige esto antes de ejecutar” hasta que el indicador diga “Listo para ejecutar”, y haz clic en “Guardar”.
  6. 6Haz clic en “Ejecutar pipeline” y sube un documento para probarlo.

El lienzo tiene “Ordenar” (acomodo automático), deshacer y “Rehacer”, “Duplicar”, selección múltiple con Mayús + clic y Mayús + arrastre, y un minimapa “Vista general” en grafos grandes. Haz scroll para desplazarte, ⌘ + scroll para hacer zoom, y Supr elimina la selección. Los cambios sin guardar se conservan en tu navegador y se recuperan si vuelves.

Las ejecuciones usan el pipeline guardado

Las ejecuciones siempre corren la última versión guardada del grafo. Si tienes cambios sin guardar, guárdalos antes de hacer clic en “Ejecutar pipeline”. Cada ejecución conserva una copia congelada del grafo con el que empezó, así que las ediciones posteriores nunca cambian una ejecución en curso.

Diseñar un Pipeline con IA

En lugar de colocar nodos a mano, haz clic en “Diseñar con IA” en el lienzo y describe el proceso en una frase, por ejemplo: “Cuando lleguen facturas: extráelas con el flow de Facturas, corre el checklist de control y guarda las filas en el bucket Facturas DB.”

  • El asistente lee las funciones que ya tiene tu organización, diseña el grafo y valida las conexiones, y luego coloca el borrador en el lienzo.
  • Si un paso necesita una función que aún no tienes (un Flow, Splitter, Inspector o Bucket), el nodo se marca como “Nuevo” y su panel muestra qué se creará. “Crear esta función” (o “Crear N funciones”) las crea de verdad; revísalas y guarda.
  • “Conservar” acepta el borrador; “Descartar” deja el lienzo como estaba antes. Un borrador reemplaza todos los nodos y conexiones del lienzo, así que se te pregunta primero si ya hay uno.

Diseñar con IA no ejecuta nada.

Fuentes: cómo entran los documentos

Selecciona el nodo de Entrada para ver sus tres fuentes.

FuenteCómo funciona
Subida manualSiempre activa. “Ejecutar pipeline” acepta un PDF o una imagen (PNG, JPG, JPEG, JFIF) por ejecución.
CorreoActívala para obtener una dirección de entrada con la forma <pipeline-id>-pipeline@mg.tavnit.io. Cada adjunto inicia su propia ejecución. Puedes restringir qué remitentes se aceptan. Consulta Integración por correo.
APISiempre activa. Envía el documento por POST con tu API key; el panel tiene un snippet listo para copiar. Consulta API más abajo.

El disparador por correo, el “ID del pipeline” y el interruptor “Activo” también están en la pestaña “Configuración”. Los pipelines inactivos rechazan nuevas ejecuciones desde cualquier fuente.

Salidas: a dónde va el resultado

Un nodo de Salida envía todo lo que produjeron los pasos anteriores. Elige un destino en el panel del nodo:

DestinoQué ingresasQué llega
Email“Correos destinatarios”Un correo con el asunto “Pipeline output: <nombre>” y el resultado en JSON.
SlackUna URL de Incoming Webhooks del canalUn mensaje con el documento y sus campos clave.
TeamsLa URL de un Workflow de Teams que publique en un canal al recibir una solicitud de webhookUna Adaptive Card con los campos clave.
Google ChatUna URL de webhook entrante de los ajustes del espacioUna tarjeta con los campos clave.
Webhook, Zapier, Make, n8nLa URL del webhook de tu endpoint o escenarioEl payload JSON de abajo.
JSON — payload de la Salida
{
  "pipeline_id": "…",
  "execution_id": "…",
  "pipeline_name": "Entrada de facturas",
  "original_filename": "document.pdf",
  "outputs": [
    {
      "node": "Facturas",
      "node_type": "flow",
      "output": { "invoice_number": "…", "total": 1250.5 }
    }
  ]
}

El panel muestra un “Payload de ejemplo” construido con los campos del Flow anterior; el real lleva los valores extraídos. Los archivos del resultado llegan como enlaces temporales. Los destinos de chat muestran hasta ocho campos clave del primer resultado anterior.

Aviso de finalización

Cuando una ejecución que iniciaste termina bien, también recibes una notificación en la app.

Avisos de conexión

Una función conserva su propio comportamiento dentro de un Pipeline: un Flow sigue enviando su propio webhook, correo, exportación a Bucket, Cleaner, revisión humana y Agente vinculado. El lienzo te señala dónde eso se cruza con lo que dibujaste.

  • Una Escritura a bucket en el mismo Bucket al que ya exporta el Flow anterior guardaría las filas dos veces.
  • Una Salida por webhook después de un Flow que ya envía un webhook enviaría el resultado dos veces.
  • Una Salida por correo después de un Flow que ya envía sus resultados por correo mandaría un segundo correo.

Estos aparecen como avisos en “Vale la pena revisar — igual se ejecuta”. Nunca bloquean una ejecución. Las tarjetas también llevan pequeñas marcas de lo que la función entrega por su cuenta (“Webhook”, correos, “Revisión humana”, entrega de un Agente), que el panel del nodo lista en “También entrega a”.

El panel de un nodo de Flow también muestra “Usado también en”: las Colecciones, Splitters y otros Pipelines que dependen del mismo Flow, para que sepas qué más afecta un cambio en él.

La revisión humana pausa la ejecución

Si un Flow envía sus runs a Revisión Humana, la ejecución espera en ese nodo hasta que el run se aprueba, y luego continúa.

Reglas que aplica el lienzo

“Ejecutar pipeline” y la API rechazan un grafo que rompa alguna de estas reglas; el lienzo marca el nodo con el problema.

  • Exactamente un nodo de Entrada, sin conexiones entrantes. Sin ciclos y sin nodos conectados a sí mismos.
  • Todos los demás nodos necesitan una conexión entrante y una función vinculada (una Salida necesita un destinatario o una URL de webhook).
  • Flows, Splitters y Colecciones reciben un documento de una sola fuente: la Entrada, un Splitter o (en el caso de los Flows) una Colección.
  • Cada conexión hacia un Inspector o Filler necesita una ranura de entrada; un Filler no puede recibir dos conexiones en la misma ranura.
  • Máximo 50 nodos por Pipeline.

Los Matchers, Inspectores y Fillers (y cualquier nodo alimentado por más de una fuente) esperan a que termine todo lo anterior y se ejecutan una sola vez. Después de un Splitter, cada documento encontrado se vuelve su propia rama, y los pasos siguientes se ejecutan una vez por rama.

Ejecuciones

Cada documento que entra a un Pipeline crea una ejecución. La pestaña “Ejecuciones” las lista con el documento, la hora, el origen, el remitente, la duración y el estado.

Estado de la ejecuciónSignificado
Pendiente / En ejecuciónLa ejecución está en curso.
CompletadoTodos los nodos terminaron sin fallas.
FallidoAl menos un nodo falló o fue cancelado; el error indica el primero.
CanceladoAlguien detuvo la ejecución.

Abre una ejecución para ver el lienzo tal como corrió, coloreado por el estado de cada nodo, con el progreso (“X de Y nodos listos”) y actualizaciones en vivo. Cada nodo muestra Pendiente, En espera, En cola, En ejecución, Completado, Fallido, Omitido o Cancelado, con un indicador por rama después de un Splitter. Selecciona un nodo y usa “Ver resultado” para abrir el run, la división, el match, la inspección o el llenado que produjo.

“Cancelar ejecución” detiene el resto del grafo: los nodos que no han empezado se cancelan, y las ejecuciones de funciones que ya estaban en curso terminan por su cuenta.

API

Copia el ID desde “ID del pipeline” en la pestaña Configuración. Inicia una ejecución enviando el documento como multipart file (o como JSON con file_base64 y filename):

bash — iniciar una ejecución
curl -X POST https://run.tavnit.io/api/pipelines/PIPELINE_ID/execute \
  -H "X-API-Key: $TAVNIT_API_KEY" \
  -F "file=@document.pdf"
JSON — respuesta 202
{
  "success": true,
  "execution_id": "…",
  "pipeline_id": "…",
  "org_id": "…",
  "status": "running"
}

Una definición que no se puede ejecutar devuelve 400 con validation_errors; un 402 significa que tu organización no puede iniciar trabajo nuevo en este momento (contacta al equipo de Tavnit); un Pipeline inactivo devuelve 400. Sigue el progreso en la pestaña Ejecuciones. Para detener una ejecución:

bash — cancelar una ejecución
curl -X POST https://run.tavnit.io/api/pipelines/executions/EXECUTION_ID/cancel \
  -H "X-API-Key: $TAVNIT_API_KEY"

Cancelar una ejecución que ya terminó devuelve 409. La autenticación y el manejo de errores son los mismos que en el resto de la API REST.

Quién puede hacer qué

AcciónRoles
Crear, editar y eliminar PipelinesPropietario, Administrador
Ejecutar un PipelinePropietario, Administrador, Miembro

Eliminar un Pipeline borra el pipeline y su lienzo; las ejecuciones pasadas conservan sus registros. Consulta Roles de usuario.

Solución de problemas

SíntomaQué revisar
“Ejecutar pipeline” pide guardar primeroTienes cambios sin guardar en el lienzo. Guarda y luego ejecuta.
Un nodo dice que “needs a document source”Los Flows, Splitters y Colecciones deben recibir de la Entrada, de un Splitter o (solo Flows) de una Colección, no de un Flow ni de un Agente.
La ejecución se queda en un nodoRevisa si el run está esperando en Revisión Humana, o abre el resultado del nodo para ver el estado de la función.
Los resultados se guardaron o enviaron dos vecesBusca avisos de conexión: el Flow anterior ya tiene su propia exportación a Bucket, webhook o correo.
Una rama aparece como OmitidoEl paso anterior falló o no produjo nada para esa rama, así que los pasos siguientes no tenían sobre qué ejecutarse.
Un correo a la dirección del pipeline no hace nadaVerifica que el disparador por correo esté activado, que el Pipeline esté activo y que el remitente esté permitido.