Les bricks de contrôle de flux enchaînent, branchent et sécurisent les
exécutions d'un workflow. Elles reçoivent un signal en entrée (in) et
l'émettent sur une ou plusieurs sorties selon leur logique. Pour un guide
d'usage, voir Orchestrer des pipelines.
Branche selon une expression booléenne évaluée sur les variables de workflow ou
les résultats des bricks amont. Émet un signal sur la sortie true ou false.
Catégorie
Action
Entrées
in (Trigger)
Sorties
true (True) · false (False)
Paramètre
Type
Défaut
Description
condition
chaîne (requis)
true
Expression Python. Exemple : ${(Nom de l'appel).format} == "xml".
Les références sont remplacées par des littéraux Python : une chaîne se
compare donc bien à une chaîne, et un booléen s'utilise seul, sans comparaison.
Lisibles ici : ${var.workflow.X}, ${var.item.X} dans une boucle, et
${(Nom de l'appel).sortie} pour le résultat d'un pipeline (voir
Interface de pipeline).
Rejoue la sous-pipeline suivante une fois par item. Le corps de boucle est
donc une boîte dessinée sur le canvas : sa frontière se voit, au lieu d'être
implicite.
Catégorie
Action
Entrées
in (Trigger)
Sorties
out (Suite)
Paramètre
Type
Défaut
Description
source_type
pipeline_output · files · variable (requis)
pipeline_output
D'où viennent les items.
max_iterations
entier
1000
Garde-fou. 0 = pas de limite.
stop_on_error
booléen
false
Arrêter au premier item en erreur.
fail_if_empty
booléen
false
Échouer quand la liste est vide.
Champs conditionnels selon la source :
Source
Paramètre
Défaut
Description
pipeline_output
output_name
—
Sortie DataFrame d'un pipeline appelé en amont. Vide = la première disponible.
files
connection_id
—
Connexion storage à énumérer.
files
file_pattern
*
Motif appliqué au nom du fichier.
files
recursive
false
Descendre dans les sous-dossiers.
variable
variable_value
—
Tableau JSON, par exemple ${var.workflow.mes_items}.
Un champ de l'item : colonne de la ligne, ou file_name, file_path, file_size… en mode fichiers.
${var.item._index}
Rang de l'itération, à partir de 0.
${var.item._total}
Nombre total d'items.
L'item vit dans le contexte d'itération de chaque brick, et non dans une
variable d'environnement partagée par tout le processus : deux itérations ne
peuvent donc pas se marcher dessus.
La brick calcule la liste, puis déclare au moteur que la sous-pipeline suivante
doit être rejouée. À chaque tour, les bricks de cette sous-pipeline sont
réinitialisées et reçoivent le contexte de l'item courant. C'est le même moteur
que le mode itératif de la source fichier.
Exécution séquentielle
Les itérations s'enchaînent une par une. Les bricks d'une sous-pipeline sont
des instances uniques, réinitialisées entre deux tours : les exécuter en
parallèle demanderait de les dupliquer, ce que le moteur ne fait pas encore.
Pour paralléliser, le levier disponible est à l'intérieur du traitement — les
bricks IA, par exemple, parallélisent déjà leurs appels sur les lignes.
Une seule sous-pipeline en aval
Si plusieurs sous-pipelines suivent la boucle, chacune est parcourue
séparément sur la même liste, et un avertissement le signale. Regroupez le
corps de boucle dans une seule sous-pipeline.
Lance simultanément toutes les branches connectées en sortie. Point de départ
d'une exécution en éventail (fan-out), à refermer avec une brick
Synchronisation.
Catégorie
Action
Entrées
in (Trigger)
Sorties
out (Branches)
Paramètre
Type
Défaut
Description
max_concurrency
nombre
0
Nombre maximum de branches exécutées en parallèle (0 = illimité).
Vérifie une condition (contrôle qualité). Émet out si elle est vraie. Si elle
est fausse : arrête le workflow, route sur failed, ou émet un simple
avertissement selon le réglage.
Catégorie
Action
Entrées
in (Trigger)
Sorties
out (OK) · failed (Échec)
Paramètre
Type
Défaut
Description
expression
chaîne (requis)
true
Expression Python évaluée. Exemple : ${var.workflow.row_count} > 0.
on_fail
stop · route · warn (requis)
stop
stop = stoppe le workflow · route = bascule sur failed · warn = avertit et continue.