UiPath Documentation
maestro-automate
latest
false
Guía de usuario de Maestro Automate

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​

CampoObligatorioPredeterminadoDescripción
ColecciónSíNingunoMatriz sobre la que iterar. Introduce una expresión que se resuelva en una matriz, por ejemplo $vars.listCustomers1.output.
ParaleloNoOffEjecuta 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ónNoNingunoExpresió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ónNoOffAdds 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.
Nota:

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>.currentItem es el elemento para la iteración actual. Accede a sus campos con notación de puntos, por ejemplo $vars.loop1.currentItem.id.
  • $vars.<loopName>.currentIteration es el número de iteración actual, a partir de 1.
  • $vars.<loopName>.collection es 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​

¿Te ha resultado útil esta página?

Conectar

¿Necesita ayuda? Soporte(opens in new window)

¿Quiere aprender? UiPath Academy(opens in new window)

¿Tiene alguna pregunta? Foro de UiPath(opens in new window)

Manténgase actualizado