Skip to Content

Bucles y Procesamiento Iterativo

RUTA E · Agentes y Automatización · Lección 11 de 16

Los bucles permiten procesar colecciones de datos de forma iterativa, aplicando la misma lógica a cada elemento. Esta lección explica cómo construir workflows para manejar múltiples ítems y ejecutar acciones repetidas de manera eficiente.

Bucles y Procesamiento Iterativo

El Problema de los Múltiples Ítems

En n8n, un nodo puede recibir uno o varios ítems de entrada. Cuando un nodo recibe múltiples ítems, su comportamiento predeterminado es procesar cada ítem de forma independiente, ejecutando su lógica una vez por cada ítem. Sin embargo, hay escenarios donde necesitamos que una secuencia de nodos se ejecute completa para cada ítem individualmente, o donde un nodo específico debe operar sobre un solo ítem a la vez, incluso si la entrada es una colección.

Considera una lista de 100 usuarios obtenida de una base de datos. Si el siguiente paso es enviar un correo electrónico personalizado a cada usuario, el nodo de envío de correo debe ejecutar su lógica 100 veces, una por cada usuario. n8n maneja esto automáticamente en muchos casos, pero entender cómo se gestiona el flujo de ítems es crucial para diseñar workflows robustos, especialmente cuando se integran servicios externos o se requiere lógica condicional por ítem.

Nodos que Generan Múltiples Ítems

Diversos nodos pueden generar o procesar múltiples ítems. Es fundamental identificar qué nodos producen colecciones de datos para anticipar cómo afectarán el flujo del workflow. Algunos ejemplos comunes incluyen:

  • HTTP Request: Al consultar una API que devuelve una lista de objetos (ej. GET /users).
  • Database Nodes: Nodos de bases de datos (PostgreSQL, MySQL, MongoDB) que ejecutan consultas SELECT que devuelven múltiples registros.
  • Spreadsheet Nodes: Nodos que leen filas de hojas de cálculo (Google Sheets, Excel).
  • File System Nodes: Nodos que listan archivos en un directorio.
  • Split In Batches: Un nodo diseñado específicamente para dividir una colección grande en lotes más pequeños para procesamiento.

Cuando uno de estos nodos emite múltiples ítems, los nodos subsiguientes en el workflow recibirán esa colección y, por defecto, intentarán procesar cada ítem de forma independiente. Esto es lo que se conoce como procesamiento iterativo implícito.

Procesamiento Iterativo Explícito con el Nodo 'Split In Batches'

Aunque n8n a menudo itera automáticamente, hay situaciones donde se requiere un control explícito sobre la iteración o la división de datos. El nodo Split In Batches es una herramienta clave para esto. Permite tomar una entrada con múltiples ítems y procesarlos en grupos (batches) o uno por uno.

  1. Función: Divide la entrada en múltiples ejecuciones separadas o en lotes de tamaño configurable.
  2. Caso de Uso: Ideal para APIs que tienen límites de tasa (rate limits) o para procesar grandes volúmenes de datos que podrían exceder los límites de memoria o tiempo de ejecución de un solo nodo.
  3. Configuración: Permite definir el tamaño del lote (batch size). Si se establece en 1, el nodo procesará cada ítem individualmente, simulando un bucle explícito.
CRITERIO DE DISEÑO

Utiliza 'Split In Batches' cuando necesites controlar explícitamente la iteración, especialmente para manejar rate limits de APIs o para asegurar que cada ítem pase por una secuencia compleja de nodos de manera aislada. No lo uses si el procesamiento implícito de n8n es suficiente, ya que añade complejidad al workflow.

Construcción de un Workflow Iterativo: Ejemplo Práctico

Vamos a construir un workflow que obtiene una lista de productos y, para cada producto, realiza una acción específica (en este caso, simular un procesamiento y luego un registro).

  1. Nodo 1: Start. El nodo inicial del workflow.
  2. Nodo 2: Set. Este nodo simulará la obtención de datos de una API o base de datos. Configúralo para generar múltiples ítems. Por ejemplo, añade dos ítems con la siguiente estructura JSON:
[
  {
    "id": 101,
    "name": "Laptop X",
    "price": 1200
  },
  {
    "id": 102,
    "name": "Monitor Z",
    "price": 300
  }
]
  1. Nodo 3: Split In Batches. Conéctalo al nodo 'Set'. Configura 'Batch Size' a 1. Esto asegurará que cada producto se procese individualmente.
  2. Nodo 4: Function Item. Conéctalo al 'Split In Batches'. Este nodo simulará una acción específica para cada producto. Por ejemplo, podrías añadir un campo processedAt. El código podría ser:
for (const item of items) {
  item.json.processedAt = new Date().toISOString();
  return item;
}
  1. Nodo 5: Log. Conéctalo al 'Function Item'. Este nodo simplemente registrará el estado del ítem procesado. Puedes usarlo para verificar que cada ítem se procesa de forma independiente.

Al ejecutar este workflow, observarás en el panel de ejecuciones cómo el nodo 'Split In Batches' envía un solo ítem al 'Function Item' y al 'Log' en cada iteración, permitiendo que la lógica interna de esos nodos opere sobre un único producto a la vez.

Monitoreo de Bucles en el Panel de Ejecuciones

El panel de ejecuciones de n8n es fundamental para entender cómo se comportan los bucles. Cuando un nodo procesa múltiples ítems, verás una sección de 'Items' en la salida del nodo que muestra cada ítem individualmente. Si usas 'Split In Batches', notarás que las ejecuciones subsiguientes al nodo mostrarán un solo ítem en su entrada y salida en cada iteración del bucle. Esto permite depurar y verificar que la lógica se aplica correctamente a cada elemento de la colección.

Aplicación Práctica: Optimización de Procesos con n8n

El lunes, identifica un proceso repetitivo en tu área que involucre una lista de elementos (ej. actualizar el estado de varios tickets, procesar una lista de archivos, enviar notificaciones a un grupo de usuarios). Diseña un workflow en n8n que:

  • Obtenga la lista de elementos (usando un nodo HTTP Request, Database, o incluso un nodo Set para simular).
  • Utilice el nodo Split In Batches con un tamaño de lote de 1 para asegurar el procesamiento individual de cada elemento.
  • Aplique una acción específica a cada elemento (ej. usar un nodo HTTP Request para actualizar una API, un nodo Email para enviar un correo, o un nodo Function para transformar datos).
  • Verifica en el panel de ejecuciones que cada elemento se procesa de forma independiente.

Este ejercicio te permitirá consolidar el entendimiento sobre el manejo de colecciones y la iteración controlada, habilidades críticas para automatizar tareas complejas con n8n.


Rating
0 0

There are no comments for now.

to be the first to leave a comment.