UiPath Documentation
maestro-automate
latest
false
Guide de l'utilisateur de Maestro Automate

Boucle

Configure the Loop node, build the loop body, and read its output, with examples and fixes for common issues.

Ce qu’il fait​

Itère sur une collection et exécute les nœuds dans le corps de la boucle une fois pour chaque élément.

Quand utiliser la boucle​

Une boucle correspond à une collection d'éléments à traiter, telle qu'une liste d'enregistrements renvoyés par une API, une liste de fichiers ou une liste d'ID. La boucle s'exécute une fois par élément et s'arrête lorsque la collection est épuisée.

Pour quitter avant que la collection ne soit épuisée, utilisez Interrompre sous condition ou un gestionnaire d'interruption, les deux décrits ci-dessous.

Référence de la configuration​

ChampRequisDefaultDescription
CollectionOui (Yes)Aucun (None)Tableau sur lequel parcourir l'itération. Entrez une expression qui se résout par un tableau, par exemple $vars.listCustomers1.output.
ParallelNon (No)Désactivé (Off)Exécute toutes les itérations en même temps au lieu de l'une après l'autre. Lorsqu'elle est désactivée, la boucle s'exécute de manière séquentielle et attend que chaque itération se termine avant de démarrer la suivante.
Interrompre sous conditionNon (No)Aucun (None)Expression qui quitte la boucle tôt lorsqu'elle est devenue true après la fin d'une itération. Cela s'applique aux boucles séquentielles.
Afficher le handle d’interruptionNon (No)Désactivé (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.
Remarque :

L'itération séquentielle préserve l'ordre et est requise pour que Interrompre sur condition fonctionne, car la condition est vérifiée après la fin de chaque itération. Les itérations parallèles ne s'exécutent pas dans un ordre garanti.

La boucle sur la zone de dessin​

La boucle apparaît sur le canevas sous la forme d'un conteneur. Un badge en haut à droite affiche le mode, Séquentiel ou Parallèle, et le bouton bascule Parallèle dans le panneau Propriétés le change. À l'intérieur du conteneur, une gestion de démarrage à gauche commence chaque itération et une gestion de continuité à droite la termine. Le bouton + à l'intérieur du conteneur ajoute un nœud au corps, et le bouton + sur le bord droit ajoute le nœud qui s'exécute après la boucle. La gestion de fin accepte les bords de plusieurs nœuds, de sorte que chaque chemin dans le corps peut s’y terminer. Une gestion des interruptions s'affiche lorsque Afficher la gestion des ruptures est activé.

Le nœud de boucle prend en charge la gestion des erreurs, de sorte que son onglet Gestion des erreurs peut ajouter une gestion des erreurs , comme décrit dans la gestion des erreurs .

Le corps de la boucle​

Les nœuds placés à l'intérieur de la limite de la boucle forment le corps. Les nœuds dans le corps peuvent lire l'élément et l'itération actuels, ainsi que toutes les variables de l'étendue en dehors de la boucle.

Élément actuel et itération​

Dans le corps, faites référence à la progression de la boucle avec ces expressions :

  • $vars.<loopName>.currentItem est l'élément de l'itération actuelle. Accédez à ses champs avec la notation par points, par exemple $vars.loop1.currentItem.id.
  • $vars.<loopName>.currentIteration est le numéro d'itération actuel, à partir de 1.
  • $vars.<loopName>.collection est le tableau complet qui est en cours d'itération.

Ceux-ci sont disponibles uniquement dans le corps de la boucle.

Sortie​

Une fois toutes les itérations terminées, les résultats agrégés de la boucle sont disponibles au niveau du chemin d’ $vars.<loopName>.output. L'exécution se poursuit ensuite avec le nœud après la boucle.

currentItem et currentIteration ne sont pas accessibles en dehors du corps de la boucle.

Exemples​

Exemple 1: appeler une API pour chaque élément​

La boucle itère sur $vars.listCustomers1.output. Le corps de la boucle contient un nœud de demande HTTP avec l'URL :

https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}
https://api.example.com/customers/{{ $vars.loop1.currentItem.id }}

Exemple 2: créer un tableau de résultats entre les itérations​

Un nœud Script dans le corps de la boucle renvoie une valeur pour chaque élément. La boucle collecte le résultat de chaque itération dans $vars.loop1.output :

return { id: $vars.loop1.currentItem.id, processed: true };
return { id: $vars.loop1.currentItem.id, processed: true };

Après la boucle, $vars.loop1.output est un tableau de ces résultats.

Exemple 3: s'arrêter tôt une fois qu'une correspondance est trouvée​

Un nœud de décision dans le corps de la boucle vérifie l'élément actuel. Avec l'activation de l'affichage du gestionnaire d'interruption, la branche correspondante de la décision se connecte au gestionnaire d'interruption de la boucle pour arrêter l'itération dès que la correspondance est trouvée.

Problèmes couramment rencontrés​

Le corps de la boucle ne s’exécute jamais​

La collection est vide ou undefined. Vérifier la sortie du nœud en amont dans la trace d'exécution pour confirmer que le tableau contient des éléments. Une collection vide ignore le corps et se poursuit après la boucle.

L'interruption de la condition ne se déclenche jamais dans une boucle parallèle​

Interrompre sur condition est évalué après la fin de chaque itération dans l'ordre, de sorte qu'il s'applique aux boucles séquentielles. Désactivez Parallèle si vous devez interrompre sur une condition d'exécution.

La modification de la collection à l'intérieur du corps ne modifie pas ce qui est itéré​

La collection est capturée lorsque la boucle commence. La modification de la variable de tableau dans le corps ne modifie pas les éléments qui sont itérés. C'est un comportement prévu.

Prochaines étapes​

Cette page vous a-t-elle été utile ?

Connecter

Besoin d'aide ? Assistance(opens in new window)

Vous souhaitez apprendre ? UiPath Academy(opens in new window)

Vous avez des questions ? UiPath Forum(opens in new window)

Rester à jour