For Each Element
Résumé
- Nom interne :
ForEachElement - Catégorie : Collections
- Objectif : Exécuter un sous-workflow imbriqué une fois par élément d'une variable liste, en exposant l'élément courant dans une variable de boucle.
- Type de tâche : Connecteur — voir Aperçu des Tâches § Tâches Connecteur pour comprendre ce que cela signifie avant de continuer.
Compatibilité
-
Version minimale AndroMate :
1.1.0 -
Version maximale AndroMate :
1.1.0 -
Android minimum :
Android 13 (API 33) -
Android maximum testé :
Android 16 (API 36) -
Constructeurs supportés :
- ✅ Tous les constructeurs
-
Permissions requises :
- Aucune (les permissions dépendent entièrement des tâches placées dans
"do")
- Aucune (les permissions dépendent entièrement des tâches placées dans
Description détaillée
La tâche For Each Element parcourt une variable liste et exécute le sous-workflow intégré sous sa clé "do" une fois par élément, en écrivant l'élément courant dans element_variable_input avant chaque passage — l'équivalent en itération de liste de la boucle numérique Iterate.
Dans le graphe externe, ForEachElement se comporte exactement comme une tâche normale — un lien entrant, un lien sortant "to", suivi une fois que chaque élément a été traité. Toute la répétition se produit à l'intérieur de la tâche, pas dans les Links du graphe.
Le sous-workflow sous "do" partage le même dictionnaire de variables que le reste du workflow : il peut lire toute variable déclarée dans le Start externe, et toute sortie qu'il produit est visible par les tâches qui suivent ForEachElement dans le graphe externe également.
Paramètres d'entrée
| Paramètre | Type | Obligatoire | Valeurs possibles | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|---|
list_variable_input |
String | Oui | Nom d'une variable liste déclarée commençant par $ |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | [] |
element_variable_input |
String | Oui | Nom d'une variable déclarée commençant par $ |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | "" |
do |
Object (sous-workflow) | Oui | Un objet workflow imbriqué — voir Le sous-workflow do d'Iterate pour la forme (identique ici) |
Android 13 (API 33) → Android 16 (API 36) | 1.1.0 → 1.1.0 | — |
Paramètres de sortie
La tâche For Each Element ne produit elle-même aucune sortie. Toute variable écrite par une tâche dans "do" met à jour le contexte partagé du workflow normalement, comme si cette tâche s'exécutait directement dans le graphe externe.
Exceptions
| Code | Nom de l'exception | Description |
|---|---|---|
COLLECTION-TASK-002 |
Nom de variable liste invalide | element_variable_input est vide, ou n'est pas une référence $variable valide. |
CONNECTOR-TASK-ERROR-001 |
Aucune sous-tâche | Le champ "do" est manquant ou vide — une tâche connecteur doit contenir un sous-workflow à exécuter. |
Remarque : une list_variable_input vide n'est pas une erreur — la boucle s'exécute simplement zéro fois.
Diagramme d'exécution
flowchart TD
Start([▶ ForEachElement]) --> CheckVar{element_variable_input\nvariable $ valide ?}
CheckVar -->|Non| E1[❌ COLLECTION-TASK-002\nLIST_VARIABLE_NAME_INVALID]
CheckVar -->|Oui| CheckDo{Sous-workflow do\nprésent ?}
CheckDo -->|Non| E2[❌ CONNECTOR-TASK-ERROR-001\nNO_SUB_TASKS]
CheckDo -->|Oui| Loop[i = 0]
Loop --> CheckSize{i < list.size ?}
CheckSize -->|Non| Continue[➡️ Suivre le lien externe 'to']
CheckSize -->|Oui| SetVar[💾 Définir element_variable_input = list#91;i#93;]
SetVar --> RunSub[▶ Exécuter le sous-workflow do]
RunSub --> Increment[i = i + 1]
Increment --> CheckSize
Continue --> Success([✅ VoidResult])
E1 --> Error([❌ Exception])
E2 --> Error
style Start fill:#e3f2fd
style Success fill:#c8e6c9
style Error fill:#ffcdd2
style RunSub fill:#fff9c4
style SetVar fill:#c8e6c9
Comment ça fonctionne :
- Valider
element_variable_input: lèveCOLLECTION-TASK-002s'il est vide ou n'est pas une référence$variable. - Vérifier
do: lèveCONNECTOR-TASK-ERROR-001si le sous-workflow est manquant ou vide. - Boucle : pour chaque élément de
list_variable_input, dans l'ordre : - écrit l'élément dans
element_variable_input, - exécute le sous-workflow
"do"jusqu'à la fin (de sonStartSubTaskà sonEnd). - Continuer : une fois chaque élément traité (ou immédiatement, si la liste est vide), le moteur suit le lien externe
"to".
Détails des paramètres d'entrée
1. Paramètre d'entrée : list_variable_input
Le nom d'une variable liste déclarée à parcourir.
Exemple
Détails
- Doit commencer par
$et doit déjà être déclarée dans leStart.variablesexterne (typiquement construite avecInitList/ListAdd).
2. Paramètre d'entrée : element_variable_input
Le nom d'une variable déclarée qui reçoit l'élément courant (sous forme de chaîne) avant chaque passage.
Exemple
Détails
- Doit commencer par
$et doit déjà être déclarée dans leStart.variablesexterne. - Lu comme un nom de variable littéral — aucune résolution appliquée à ce champ lui-même.
Exemple JSON complet
Construit une liste de 3 éléments et envoie un SMS par élément :
{
"Start": [
{
"id": "0",
"variables": [
{ "variableName": "$ma_liste", "variableValue": "[]", "is_kpi": false },
{ "variableName": "$item", "variableValue": "", "is_kpi": false }
]
}
],
"InitList": [
{ "id": "1", "list_variable_input": "$ma_liste" }
],
"ListAdd": [
{ "id": "2", "list_variable_input": "$ma_liste", "value_input": "111" },
{ "id": "3", "list_variable_input": "$ma_liste", "value_input": "222" },
{ "id": "4", "list_variable_input": "$ma_liste", "value_input": "333" }
],
"ForEachElement": [
{
"id": "5",
"title": "Notifier chaque destinataire",
"list_variable_input": "$ma_liste",
"element_variable_input": "$item",
"do": {
"StartSubTask": [{ "id": "sub-0" }],
"SendSMS": [
{ "id": "sub-1", "msisdn": "$item", "message_body": "Bonjour !" }
],
"End": [{ "id": "sub-100" }],
"Links": [
{ "from": "sub-0", "to": "sub-1" },
{ "from": "sub-1", "to": "sub-100" }
]
}
}
],
"End": [{ "id": "100" }],
"Links": [
{ "from": "0", "to": "1" },
{ "from": "1", "to": "2" },
{ "from": "2", "to": "3" },
{ "from": "3", "to": "4" },
{ "from": "4", "to": "5" },
{ "from": "5", "to": "100" }
]
}