Iterador
- Tipo de tarea:
iterator
La tarea Iterador es una herramienta de automatización potente diseñada para ejecutar un proceso repetitivo sobre un conjunto de datos. Toma como entrada un conjunto de datos y lanza un Workflow "hijo" para cada fila individual de ese Conjunto de Datos.
Esto permite procesar en masa grandes cantidades de información, pasando los valores de cada fila como parámetros al Workflow hijo. Es el equivalente de un ciclo "for-each" para los procesos de automatización.
Requisitos previos
Para funcionar correctamente, la tarea Iterador debe tener uno de los siguientes Tareas en entrada:
Configuración
La configuración de la tarea define qué Workflow ejecutar y cómo pasar los datos a cada iteración.
- Workflow de filtro: Permite filtrar la lista de Workflows disponibles, facilitando la identificación de los que deben iniciarse.
- Workflow a iterar: Selecciona del menú el nombre del Workflow "hijo" que debe ejecutarse para cada fila del conjunto de datos.
- Detenerse en la primera iteración fallida: Si esta casilla está marcada, el Iterador se detendrá inmediatamente tan pronto como una de las ejecuciones del Workflow hijo falle. Si no está marcada, el Iterador intentará completar todas las iteraciones, incluso si algunas de ellas fallan.
Configuración de parámetros
Esta sección permite mapear los datos del conjunto de datos de entrada a los parámetros del Workflow hijo.
- Parámetro: El nombre del parámetro tal como está definido en el Workflow hijo (por ejemplo, “departamento”).
- Valor: El valor que se asigna al parámetro para la iteración actual.
- Ejemplo:
#>JSON to Table.Dataset.department<#indica que, para cada fila, el valor de la columna name del conjunto de datos producido por la tarea JSON to Table se pasa como valor. - Tipo: El tipo de dato del parámetro (por ejemplo, String, Numeric, etc.).
Ejemplo práctico de funcionamiento
Configuración del Iterador
- Workflow Padre (Preparación de Datos):
- La tarea Importar texto lee un archivo JSON que contiene una lista de empleados.
[
{
"name": "John",
"surname": "Smith",
"department": "Human Resources"
},
{
"name": "Emily",
"surname": "Johnson",
"department": "Finance"
},
{
"name": "Michael",
"surname": "Brown",
"department": "IT"
},
{
"name": "Sarah",
"surname": "Davis",
"department": "Marketing"
}
]
- Posteriormente, la tarea JSON a Tabla ejecuta su función principal: se conecta a una base de datos y escribe los datos del JSON en una tabla. El registro de ejecución lo confirma con el mensaje "4 filas insertadas en la tabla". Además de escribir en la base de datos, la tarea hace que estén disponibles especificaciones parámetros de salida que representan los datos procesados e insertados en la tabla, lo que permite su reutilización en las tareas posteriores del Workflow.
- Configuración y acción del Iterador:
- Workflow a iterar: está configurado en “dev_iterador”.
- Parámetro: El Workflow hijo espera un parámetro llamado “departamento”.
- Valor: Este parámetro se mapea al valor de la columna “departamento” del conjunto de datos:
#>JSON to Table.Dataset.department<#.
- Ejecución de las iteraciones: El Iterador ahora ejecuta el Workflow “dev_iterador” 4 veces, una para cada fila (empleado) del conjunto de datos:
- Primera iteración: Lanza “dev_iterador” pasando el parámetro departamento = “Recursos Humanos”.
- Segunda iteración: Lanza “dev_iterador” pasando departamento = “Finanzas”.
- Tercera iteración: Lanza “dev_iterador” pasando departamento = “IT”.
- Cuarta iteración: Lanza “dev_iterador” pasando departamento = “Marketing”.
- Lógica del Workflow hijo (dev_iterador):
- En cada ejecución, la Tarea Conditional en su interior evalúa el valor del parámetro "department" recibido e dirige el flujo hacia el Tarea de envío de correo electrónico correcto. Para "IT", al no encontrar una condición específica, seguirá el camino De lo contrario.
- Resultado Final:
- Se envían cuatro correos electrónicos distintos, uno para cada empleado presente en el archivo JSON original. El registro de ejecución de la Tarea Iterator confirma el éxito con el mensaje: "Todas las iteraciones se completaron con éxito".
Workflow Padre
Workflow Hijo
Nota Importante
- Solo pueden ejecutarse los Workflows que no estén bloqueados en edición en el momento de la ejecución.
- La Tarea Iterator finalizará con el estado "Éxito" solo si todas las iteraciones se completen con éxito (a menos que esté activa la opción "Detenerse en la primera iteración fallida", en cuyo caso se detendría en la primera error).
Parámetros de Salida
Al término de todas sus iteraciones, la Tarea Iterator expone una serie de parámetros de salida. Estos parámetros son extremadamente útiles para las Tareas siguientes, por ejemplo, para fines de registro, para enviar un informe resumido o para implementar una lógica condicional basada en el resultado del ciclo.
- targetWorkflow: Devuelve el nombre o el identificador del Workflow "hijo" que se ejecutó en cada iteración.
- Dataset.Count: Indica el número total de filas presentes en el Dataset de entrada.
- Iterations.Total: El número total de iteraciones que se han ejecutado realmente. En una ejecución normal, este valor coincidirá con Dataset.Count.
- Iterations.Success: El contador de iteraciones que se han completado con éxito. Cada vez que una ejecución del Workflow hijo termina correctamente, este número se incrementa.
- Iterations.Failed: El contador de iteraciones fallidas. Si una ejecución del Workflow hijo termina con un error, este número se incrementa.
- result: Proporciona el estado general de la Tarea Iterator misma. Solitamente indica "Éxito" solo si todas las iteraciones se han completado con éxito.
- resultJson: Representa el resultado de la ejecución de la tarea en formato JSON, incluyendo información general, configuraciones y detalles sobre la ejecución.