- Démarrer
- Construire
- Ajouter un agent d'IA à un workflow
- Appeler une API externe
- Traiter les e-mails entrants
- Créer un workflow de notification Slack
- Ajouter une approbation humaine à un workflow
- Créer un workflow d’agent de chat
- Gérer les erreurs
- Principes de base du débogage
- L'humain dans la boucle: escalade ou étape humaine
- Évaluation de vos workflows
- Déployer et exécuter
- Exemples
- Référence (Reference)
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
| Champ | Requis | Default | Description |
|---|---|---|---|
| Collection | Oui (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. |
| Parallel | Non (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 condition | Non (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’interruption | Non (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. |
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>.currentItemest 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>.currentIterationest le numéro d'itération actuel, à partir de1.$vars.<loopName>.collectionest 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
- Flux de contrôle: les nœuds qui se ramifient, se répètent et se rejoignent des chemins.
- Décision: ramification sur une condition.
- Variables et flux de données: comment les nœuds transmettent les données.
- Community (Communauté): posez des questions et partagez des workflows avec d'autres développeurs sur le forum UiPath.
- Ce qu’il fait
- Quand utiliser la boucle
- Référence de la configuration
- La boucle sur la zone de dessin
- Le corps de la boucle
- Élément actuel et itération
- Sortie
- Exemples
- Exemple 1: appeler une API pour chaque élément
- Exemple 2: créer un tableau de résultats entre les itérations
- Exemple 3: s'arrêter tôt une fois qu'une correspondance est trouvée
- Problèmes couramment rencontrés
- Le corps de la boucle ne s’exécute jamais
- L'interruption de la condition ne se déclenche jamais dans une boucle parallèle
- La modification de la collection à l'intérieur du corps ne modifie pas ce qui est itéré
- Prochaines étapes