- Comience ya
- Crear
- Añadir un agente de IA a un flujo de trabajo
- Llamar a una API externa
- Procesar correos electrónicos entrantes
- Crear un flujo de trabajo de notificación de Slack
- Añadir aprobación humana a un flujo de trabajo
- Crear un flujo de trabajo de agente de chat
- Gestionar errores
- Fundamentos de la depuración
- Intervención humana: escalada o paso humano
- Evaluar tus flujos de trabajo
- Implementar y ejecutar
- Ejemplos
- Referencia
Bucle
Configure the Loop node, build the loop body, and read its output, with examples and fixes for common issues.
Lo que hace
Itera sobre una colección y ejecuta los nodos en el cuerpo del bucle una vez para cada elemento.
Cuándo utilizar el bucle
Un bucle se ajusta a una colección de elementos para procesar, como una lista de registros devueltos por una API, una lista de archivos o una lista de ID. El bucle se ejecuta una vez por elemento y se detiene cuando se agota la colección.
Para salir antes de que se agote la colección, utiliza la condición de Interrupción o un controlador de interrupción, ambos descritos a continuación.
Referencia de configuración
| Campo | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|
| Colección | Sí | Ninguno | Matriz sobre la que iterar. Introduce una expresión que se resuelva en una matriz, por ejemplo $vars.listCustomers1.output. |
| Paralelo | No | Off | Ejecuta todas las iteraciones al mismo tiempo en lugar de una tras otra. Cuando está desactivado, el bucle se ejecuta secuencialmente y espera a que finalice cada iteración antes de iniciar la siguiente. |
| Interrumpir con condición | No | Ninguno | Expresión que sale del bucle antes de tiempo cuando se convierte en true después de que se complete una iteración. Esto se aplica a los bucles secuenciales. |
| Mostrar controlador de interrupción | No | Off | Adds a break handle to the loop so nodes inside the body can exit the loop early. Connect a node's output to the break handle to stop iterating from inside the body. Available in sequential and parallel loops. |
La iteración secuencial conserva el orden y es necesaria para que la condición Interrumpir en funcione, ya que la condición se comprueba después de que se complete cada iteración. Las iteraciones paralelas no se ejecutan en un orden garantizado.
El bucle en el lienzo
El Bucle aparece en el lienzo como un contenedor. Una insignia en la parte superior derecha muestra el modo, Secuencial o Paralelo, y la alternancia Paralelo en el panel de propiedades lo cambia. Dentro del contenedor, un controlador de inicio a la izquierda comienza cada iteración y un controlador de continuación a la derecha la finaliza. El botón + dentro del contenedor añade un nodo al cuerpo, y el + en el borde derecho añade el nodo que se ejecuta después del bucle. El controlador de continuación acepta bordes de más de un nodo, por lo que cada ruta a través del cuerpo puede terminar en él. Aparece un controlador de interrupción cuando Mostrar controlador de interrupción está activado.
El nodo Bucle admite la gestión de errores, por lo que su pestaña Gestión de errores puede añadir un Controlador de errores , como se describe en Gestión de errores .
El cuerpo del bucle
Los nodos colocados dentro del límite del bucle forman el cuerpo. Los nodos del cuerpo pueden leer el elemento y la iteración actuales, junto con cualquier variable en el ámbito fuera del bucle.
Elemento actual e iteración
Dentro del cuerpo, haz referencia al progreso del bucle con estas expresiones:
$vars.<loopName>.currentItemes el elemento para la iteración actual. Accede a sus campos con notación de puntos, por ejemplo$vars.loop1.currentItem.id.$vars.<loopName>.currentIterationes el número de iteración actual, a partir de1.$vars.<loopName>.collectiones la matriz completa que se está iterando.
Estos están disponibles solo dentro del cuerpo del bucle.
Salida
Una vez completadas todas las iteraciones, los resultados agregados del bucle están disponibles en $vars.<loopName>.output La ejecución continúa con el nodo después del bucle.
currentItem y currentIteration no son accesibles fuera del cuerpo del bucle.
Ejemplos
Ejemplo 1: llamar a una API para cada elemento
El bucle itera sobre $vars.listCustomers1.output. El cuerpo del bucle contiene un nodo de solicitud HTTP con la URL:
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
Ejemplo 2: crear una matriz de resultados en iteraciones
Un nodo de Script en el cuerpo del bucle devuelve un valor para cada elemento. El bucle recopila el resultado de cada iteración en $vars.loop1.output:
return { id: $vars.loop1.currentItem.id, processed: true };
return { id: $vars.loop1.currentItem.id, processed: true };
Después del bucle, $vars.loop1.output es una matriz de esos resultados.
Ejemplo 3: detenerse antes de encontrar una coincidencia
Un nodo de decisión en el cuerpo del bucle comprueba el elemento actual. Con Mostrar identificador de interrupción habilitado, la rama coincidente de la Decisión se conecta al identificador de interrupción del bucle para detener la iteración tan pronto como se encuentre la coincidencia.
Problemas comunes
El cuerpo del bucle nunca se ejecuta
La colección está vacía o undefined. Comprueba la salida del nodo anterior en el seguimiento de ejecución para confirmar que la matriz tiene elementos. Una colección vacía omite el cuerpo y continúa después del bucle.
La condición de interrupción nunca se desencadena en un bucle paralelo
La condición de interrupción se evalúa después de que cada iteración se complete en orden, por lo que se aplica a los bucles secuenciales. Desactiva Paralelo si necesitas interrumpir una condición en ejecución.
Editar la colección dentro del cuerpo no cambia lo que se itera
La colección se captura cuando se inicia el bucle. Modificar la variable de matriz dentro del cuerpo no cambia qué elementos se iteran. Esto es así por diseño.
Próximos pasos
- Flujo de control: los nodos que se ramifican, repiten y vuelven a unir rutas.
- Decisión: ramificación en una condición.
- Variables y flujo de datos: cómo los nodos pasan datos.
- Comunidad: haz preguntas y comparte flujos de trabajo con otros constructores en UiPath Forum.
- Lo que hace
- Cuándo utilizar el bucle
- Referencia de configuración
- El bucle en el lienzo
- El cuerpo del bucle
- Elemento actual e iteración
- Salida
- Ejemplos
- Ejemplo 1: llamar a una API para cada elemento
- Ejemplo 2: crear una matriz de resultados en iteraciones
- Ejemplo 3: detenerse antes de encontrar una coincidencia
- Problemas comunes
- El cuerpo del bucle nunca se ejecuta
- La condición de interrupción nunca se desencadena en un bucle paralelo
- Editar la colección dentro del cuerpo no cambia lo que se itera
- Próximos pasos