Boucle
Créez des workflows itératifs avec des boucles qui exécutent des blocs de manière répétée
Le bloc Boucle est un bloc conteneur dans Scrydon qui vous permet d'exécuter un groupe de blocs de manière répétée. Les boucles permettent un traitement itératif dans vos workflows.


Les blocs Boucle sont des nœuds conteneurs qui peuvent contenir d'autres blocs en leur sein. Les blocs à l'intérieur d'une boucle s'exécutent plusieurs fois selon votre configuration.
Vue d'ensemble
Le bloc Boucle vous permet de :
Itérer sur des collections : Traiter des tableaux ou des objets un élément à la fois
Répéter des opérations : Exécuter des blocs un nombre fixe de fois
Options de configuration
Type de boucle
Choisissez entre deux types de boucles :
Une boucle numérique qui s'exécute un nombre fixe de fois. Utilisez-la lorsque vous devez répéter une opération un nombre spécifique de fois.
Example: Run 5 times
- Iteration 1
- Iteration 2
- Iteration 3
- Iteration 4
- Iteration 5Une boucle basée sur une collection qui itère sur chaque élément d'un tableau ou d'un objet. Utilisez-la lorsque vous devez traiter une collection d'éléments.
Example: Process ["apple", "banana", "orange"]
- Iteration 1: Process "apple"
- Iteration 2: Process "banana"
- Iteration 3: Process "orange"Utilisation des boucles
Créer une boucle
- Faites glisser un bloc Boucle depuis la barre d'outils vers votre canvas
- Configurez le type de boucle et les paramètres
- Faites glisser d'autres blocs à l'intérieur du conteneur de boucle
- Connectez les blocs selon vos besoins
Référencer la boucle à l'intérieur du corps
Les blocs placés à l'intérieur de la boucle peuvent référencer le contexte de l'itération en cours :
<loop.index>: Numéro d'itération actuel (base 0)<loop.iteration>: Numéro d'itération actuel (base 1)<loop.currentItem>: L'élément traité lors de cette itération (boucles ForEach)<loop.items>: La collection complète (boucles ForEach)<loop.previousResult>: Les sorties du corps de l'itération précédente (voir Réutiliser le résultat de l'itération précédente)
À l'intérieur du corps, utilisez toujours le nom littéral loop (par exemple <loop.currentItem>), et non le nom d'affichage du bloc. Le contexte de la boucle courante est lié à loop, quel que soit le nom que vous avez donné au bloc.
Accéder aux résultats
Après la fin d'une boucle, vous pouvez accéder aux résultats agrégés depuis les blocs placés après la boucle :
<loop.results>: Tableau des résultats de toutes les itérations de la boucle
<loop.results> n'est renseigné qu'après la fin de la boucle. Le référencer depuis un bloc à l'intérieur du corps de la boucle ne renvoie rien : utilisez <loop.previousResult> pour lire la sortie de l'itération précédente depuis le corps.
Réutiliser le résultat de l'itération précédente
Pour transmettre la sortie d'une itération à la suivante, référencez <loop.previousResult> depuis un bloc situé dans le corps de la boucle. Il contient les sorties du corps de l'itération précédente, indexées par bloc, et vaut undefined lors de la première itération.
Scénario : Affiner un brouillon au fil des itérations
- Paramétrer une boucle For sur 3 itérations
- Dans la boucle : un agent améliore le brouillon, en passant
<loop.previousResult>comme contexte supplémentaire - Lors de l'itération 1, il n'y a pas de résultat précédent, l'agent part donc de zéro ; les itérations 2 et 3 s'appuient sur la sortie précédente
Chaque itération réinitialise les blocs à l'intérieur de la boucle : un bloc ne peut donc pas lire directement sa propre sortie d'une itération précédente. <loop.previousResult> est le canal pris en charge pour faire suivre les résultats. Pour la continuité conversationnelle, la mémoire d'un bloc Agent constitue une alternative.
Exemples d'utilisation
Traitement des résultats d'API
Scénario : Traiter plusieurs enregistrements clients
- Un bloc API récupère la liste des clients
- Une boucle ForEach itère sur chaque client
- Dans la boucle : un agent analyse les données du client
- Dans la boucle : une fonction enregistre les résultats de l'analyse
Génération de contenu itérative
Scénario : Générer plusieurs variantes
- Paramétrer la boucle For sur 5 itérations
- Dans la boucle : un agent génère une variante de contenu
- Dans la boucle : un évaluateur note le contenu
- Après la boucle : une fonction sélectionne la meilleure variante
Fonctionnalités avancées
Limitations
Les blocs Boucle ne peuvent pas être imbriqués les uns dans les autres. Si vous avez besoin d'une itération multidimensionnelle, envisagez de restructurer votre workflow pour utiliser des boucles séquentielles ou de traiter les données par étapes.
Les boucles s'exécutent séquentiellement. Pour un fan-out concurrent, tracez des branches indépendantes depuis un bloc en amont commun — chaque branche s'exécute comme un chemin de graphe distinct.
Entrées et sorties
Type de boucle : Choisir entre 'for' ou 'forEach'
Itérations : Nombre d'exécutions (boucles for)
Collection : Tableau ou objet sur lequel itérer (boucles forEach)
loop.currentItem : Élément en cours de traitement (boucles forEach)
loop.index : Numéro d'itération actuel (base 0)
loop.iteration : Numéro d'itération actuel (base 1)
loop.items : Collection complète (boucles forEach)
loop.previousResult : Sorties du corps de l'itération précédente (undefined lors de la première itération)
loop.results : Tableau de tous les résultats d'itération
Structure : Les résultats conservent l'ordre des itérations
Accès : Disponibles dans les blocs après la boucle (pas à l'intérieur du corps)
Bonnes pratiques
- Définir des limites raisonnables : Maintenez des compteurs d'itérations raisonnables pour éviter des temps d'exécution trop longs
- Utiliser ForEach pour les collections : Lorsque vous traitez des tableaux ou des objets, utilisez ForEach plutôt que les boucles For
- Gérer les erreurs avec soin : Envisagez d'ajouter une gestion des erreurs à l'intérieur des boucles pour des workflows robustes