Sim
Blocks

Loop

Le bloc Loop est un bloc conteneur dans Sim qui vous permet de créer des flux de travail itératifs en exécutant un groupe de blocs de façon répétée. Les boucles permettent un traitement itératif dans vos flux de travail.

Le bloc Boucle prend en charge quatre types d'itération :

Les blocs Loop sont des nœuds conteneurs qui peuvent contenir d'autres blocs. Les blocs à l'intérieur d'une boucle s'exécuteront plusieurs fois selon votre configuration.

Aperçu

Le bloc Loop 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

Boucler sur des conditions : Continuer l'exécution tant qu'une condition est remplie ou jusqu'à ce qu'elle le soit

Agréger des résultats : Collecter les sorties de toutes les itérations de la boucle

Comment ça fonctionne

Le bloc Loop exécute les blocs contenus par itération séquentielle :

  1. Initialisation de la boucle - Configuration des paramètres d'itération (compteur ou collection)
  2. Exécution de l'itération - Exécution des blocs contenus pour l'itération actuelle
  3. Collecte des résultats - Stockage de la sortie de chaque itération
  4. Continuer ou terminer - Passer à l'itération suivante ou terminer la boucle

Options de configuration

Type de boucle

Choisissez parmi quatre types de boucles :

Boucle For (Itérations) - Une boucle numérique qui s'exécute un nombre fixe de fois :

Boucle For avec itérations

Utilisez cette option 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 5

Boucle ForEach (Collection) - Une boucle basée sur une collection qui itère sur chaque élément d'un tableau ou d'un objet :

Boucle ForEach avec collection

Utilisez cette option 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"

Boucle While (Basée sur condition) - Continue l'exécution tant qu'une condition est évaluée à vrai :

Boucle While avec condition

Utilisez cette option lorsque vous devez boucler jusqu'à ce qu'une condition spécifique soit remplie. La condition est vérifiée avant chaque itération.

Example: While <variable.i> < 10
- Check condition → Execute if true
- Inside loop: Increment <variable.i>
- Inside loop: Variables assigns i = <variable.i> + 1
- Check condition → Execute if true
- Check condition → Exit if false

Boucle Do-While (Basée sur condition) - S'exécute au moins une fois, puis continue tant qu'une condition est vraie :

Boucle Do-While avec condition

Utilisez cette option lorsque vous devez exécuter au moins une fois, puis boucler jusqu'à ce qu'une condition soit remplie. La condition est vérifiée après chaque itération.

Example: Do-while <variable.i> < 10
- Execute blocks
- Inside loop: Increment <variable.i>
- Inside loop: Variables assigns i = <variable.i> + 1
- Check condition → Continue if true
- Check condition → Exit if false

Comment utiliser les boucles

Création d'une boucle

  1. Faites glisser un bloc Boucle depuis la barre d'outils vers votre canevas
  2. Configurez le type de boucle et les paramètres
  3. Faites glisser d'autres blocs à l'intérieur du conteneur de boucle
  4. Connectez les blocs selon vos besoins

Accès aux résultats

Après la fin d'une boucle, vous pouvez accéder aux résultats agrégés :

  • <loop.results> : Tableau des résultats de toutes les itérations de la boucle

Exemples de cas d'utilisation

Traitement des résultats d'API

Scénario : Traiter plusieurs enregistrements clients

  1. Le bloc API récupère la liste des clients
  2. La boucle ForEach itère sur chaque client
  3. À l'intérieur de la boucle : l'agent analyse les données client
  4. À l'intérieur de la boucle : la fonction stocke les résultats d'analyse

Génération itérative de contenu

Scénario : Générer plusieurs variations

  1. Configurer la boucle For à 5 itérations
  2. À l'intérieur de la boucle : l'agent génère une variation de contenu
  3. À l'intérieur de la boucle : l'évaluateur note le contenu
  4. Après la boucle : la fonction sélectionne la meilleure variation

Compteur avec boucle While

Scénario : Traiter des éléments avec une boucle basée sur un compteur

  1. Initialiser la variable de workflow : i = 0
  2. Boucle While avec condition : <variable.i> < 10
  3. À l'intérieur de la boucle : l'agent traite l'élément à l'index <variable.i>
  4. À l'intérieur de la boucle : la variable incrémente i = <variable.i> + 1
  5. La boucle continue tant que i est inférieur à 10

Fonctionnalités avancées

Limitations

Les blocs conteneurs (Boucles et Parallèles) ne peuvent pas être imbriqués les uns dans les autres. Cela signifie :

  • Vous ne pouvez pas placer un bloc Boucle à l'intérieur d'un autre bloc Boucle
  • Vous ne pouvez pas placer un bloc Parallèle à l'intérieur d'un bloc Boucle
  • Vous ne pouvez pas placer un bloc conteneur à l'intérieur d'un autre bloc conteneur

Si vous avez besoin d'une itération multidimensionnelle, envisagez de restructurer votre workflow pour utiliser des boucles séquentielles ou traiter les données par étapes.

Les boucles s'exécutent séquentiellement, pas en parallèle. Si vous avez besoin d'une exécution simultanée, utilisez plutôt le bloc Parallèle.

Entrées et sorties

  • Type de boucle : choisissez entre 'for', 'forEach', 'while' ou 'doWhile'

  • Itérations : nombre de fois à exécuter (boucles for)

  • Collection : tableau ou objet à parcourir (boucles forEach)

  • Condition : expression booléenne à évaluer (boucles while/do-while)

  • loop.currentItem : élément en cours de traitement

  • loop.index : numéro d'itération actuel (base 0)

  • loop.items : collection complète (boucles forEach)

  • loop.results : tableau de tous les résultats d'itération

  • Structure : les résultats conservent l'ordre d'itération

  • Accès : disponible dans les blocs après la boucle

Bonnes pratiques

  • Définir des limites raisonnables : gardez un nombre d'itérations raisonnable pour éviter des temps d'exécution longs
  • Utiliser ForEach pour les collections : lors du traitement de tableaux ou d'objets, utilisez les boucles ForEach plutôt que les boucles For
  • Gérer les erreurs avec élégance : envisagez d'ajouter une gestion des erreurs à l'intérieur des boucles pour des workflows robustes