Conditional
Le node Conditional évalue des règles IF/ELIF/ELSE et oriente le workflow vers la branche correspondante.
À quoi sert le node Conditional ?
Le node Conditional (nom interne IF/ELSE) est un outil de contrôle de flux qui évalue un ou plusieurs cas de règles (IF, ELIF, ELSE) et active uniquement la sortie correspondant au premier cas qui se révèle vrai. C’est la manière standard de brancher un workflow selon les valeurs des données, sans écrire de code.
Cas d’usage typiques :
- Orienter un enregistrement selon la valeur d’un champ (statut, type, score, région).
- Vérifier qu’un node précédent a bien renvoyé du contenu non vide avant de continuer.
- Construire un pipeline à plusieurs niveaux (lead chaud / tiède / froid, succès / retry / échec).
- Filtrer les éléments qui ne correspondent pas à une règle métier avant de les envoyer à un node coûteux (LLM, appel API).
Configuration rapide
Ajouter le node au canevas
Ouvrez la bibliothèque de nodes, allez dans Tools > Flow Control, puis glissez-déposez le node Conditional sur votre espace de travail.
Connecter l’entrée
Reliez le node amont dont vous voulez tester la sortie (par exemple un Web Scraper, un LLM, un node HTTP).
Définir les cas
Ouvrez les paramètres du node. Le premier cas est toujours un IF. Cliquez sur + Add condition pour ajouter des cas ELIF. Un cas ELSE (Default) est ajouté automatiquement et ne peut pas être supprimé.
Paramétrer les conditions
Pour chaque cas, renseignez la Variable (généralement une référence {{node.field}}), choisissez un Opérateur, puis saisissez une Valeur. Ajoutez des sous-conditions et choisissez AND ou OR pour les combiner.
Connecter les sorties
Chaque cas apparaît comme une sortie distincte sur le node (Case 1, Case 2, …, Default). Reliez chacune au node aval qui doit s’exécuter quand ce cas l’emporte.
Paramètres de configuration
Le node Conditional n’a pas de champ texte libre. Toute la configuration porte sur les cas et leurs conditions.
Champs requis
Name string required default: IF/ELSE Nom du node — Sert à identifier le node lors du débogage. Renommez-le pour refléter ce qui est décidé (ex : Routage par score lead, Vérif statut API).
Description string required default: Create conditional logic with if/else statements to control workflow flow Description du node — Résumé court de la logique de routage.
conditions array required Tableau de cas — Liste ordonnée de cas IF / ELIF / ELSE. Chaque cas contient une liste de sous-conditions et un logicalOperator (AND ou OR) pour les combiner. Les cas sont évalués de haut en bas, et le premier cas qui se révèle vrai l’emporte ; les cas suivants (y compris ELSE) sont ignorés.
Chaque sous-condition a trois champs :
- Variable — La valeur de gauche. Généralement une référence template comme
{{WebScraper_0.content}}, ou une valeur littérale. - Operator — Comment comparer. Voir la table d’opérateurs ci-dessous.
- Value — La valeur de droite à comparer. Ignorée quand l’opérateur est
is_emptyouis_not_empty.
Operators enum required Opérateurs de comparaison disponibles :
| Operator | Description | Example |
|---|---|---|
equals | Égal à | status equals "active" |
not_equals | Différent de | type not_equals "test" |
contains | Chaîne contient une sous-chaîne | email contains "@gmail" |
not_contains | Chaîne ne contient pas | url not_contains "test" |
starts_with | Chaîne commence par | name starts_with "Dr." |
ends_with | Chaîne se termine par | file ends_with ".pdf" |
greater_than | Numérique > | score greater_than 80 |
less_than | Numérique < | price less_than 100 |
greater_equal | Numérique >= | count greater_equal 10 |
less_equal | Numérique <= | items less_equal 5 |
is_empty | Valeur vide/null (pas de valeur de droite) | data is_empty |
is_not_empty | Valeur présente (pas de valeur de droite) | result is_not_empty |
Champs optionnels
errorHandling enum default: none Stratégie de gestion d’erreur — Comportement du runner quand l’évaluation d’une condition échoue (par exemple si une variable référencée est manquante). Par défaut, le node est ignoré pour que le workflow continue. D’autres valeurs interrompent ou font échouer le run selon le besoin.
logicalOperator enum default: AND Combiner les sous-conditions — Quand un cas a plusieurs sous-conditions, elles sont combinées avec AND (toutes vraies) ou OR (au moins une vraie). Réglable par cas.
Un cas ELSE est ajouté automatiquement à l’enregistrement du node et sert de branche par défaut. Gardez-le toujours connecté pour qu’aucun run ne se retrouve “sans issue”.
Que renvoie le node ?
Le node ne transforme pas la donnée — il décide simplement quelle sortie activer. Chaque cas de votre configuration devient une sortie dédiée sur le canevas.
Case 1 ... Case N branch Une sortie par cas IF / ELIF. Activée quand ce cas est le premier à être vrai. Les nodes avals reçoivent l’entrée amont du Conditional inchangée.
Default branch La sortie ELSE. Activée quand aucun cas IF / ELIF ne se révèle vrai.
condition_success_id string Identifiant interne du cas qui a gagné. Utile pour déboguer depuis les logs de run.
condition_failed_ids string[] Identifiants des cas évalués et résolus à false. Permet de voir quelles branches ont été ignorées.
Exemples d’utilisation
Cas 1 : Vérifier le contenu scrapé avant analyse LLM
Un Web Scraper renvoie parfois des pages vides. Vous voulez sauter l’appel LLM quand il n’y a rien à analyser.
Configuration :
- Case 1 (
IF) : Variable{{WebScraper_0.content}}· Operatoris_not_empty - Default (
ELSE) : fourre-tout
Câblage :
Case 1→ node LLM qui résume la page.Default→ node Logger qui écrit “Aucun contenu scrapé”.
Cas 2 : Routage de leads par tranches
Orienter les leads entrants vers des flows hot / warm / nurture selon le score.
Configuration :
- Case 1 (
IF) :{{lead.score}} greater_equal 80 - Case 2 (
ELIF) :{{lead.score}} greater_equal 50 - Default (
ELSE) : tout ce qui est sous 50
Câblage :
Case 1→ Hot Lead Flow.Case 2→ Warm Lead Flow.Default→ Nurture Flow.
graph LR
A[Lead] --> B{score >= 80?}
B -->|true| C[Hot Lead Flow]
B -->|false| D{score >= 50?}
D -->|true| E[Warm Lead Flow]
D -->|false| F[Nurture Flow]
Cas 3 : Filtre multi-critères en AND
Ne traiter que les clients premium en zone EU.
Configuration (un seul cas IF, deux sous-conditions, logicalOperator = AND) :
- Sous-condition 1 :
{{customer.plan}} equals "premium" - Sous-condition 2 :
{{customer.region}} equals "EU"
Case 1 exécute le pipeline EU-premium dédié. Default écarte l’enregistrement.
Problèmes courants
Un cas prend toujours la branche True (ou toujours False)
Cause : Mauvais type — la variable est résolue en chaîne alors que la valeur de droite est un nombre, donc equals ou greater_than renvoie un résultat inattendu.
Solution : Inspectez la valeur réelle dans les logs de run. Vérifiez que les deux côtés sont du même type, et retirez les guillemets autour des valeurs numériques.
Rien n'est connecté en aval de la branche ELSE et le workflow s'arrête en silence
Cause : La sortie Default (ELSE) n’est pas câblée et aucun cas IF / ELIF n’a matché.
Solution : Connectez toujours la sortie Default, ne serait-ce qu’à un logger ou un node Fail, pour rendre les entrées inattendues visibles.
Un ELIF plus loin ne se déclenche jamais alors que sa condition est vraie
Cause : Les cas sont évalués dans l’ordre ; un cas précédent a déjà matché.
Solution : Réordonnez les cas pour que les conditions les plus spécifiques arrivent en premier, ou resserrez les cas précédents pour qu’ils ne couvrent pas accidentellement les mêmes entrées.
Une référence variable n'est pas résolue
Cause : Mauvais chemin dans le template {{...}}, ou le node amont n’a pas tourné.
Solution : Utilisez le Variables Picker pour insérer les références, et vérifiez que le node référencé est bien connecté en amont.
Bonnes pratiques et pièges à éviter
Mettez le cas le plus spécifique en premier. Comme l’évaluation s’arrête au premier match, un IF trop large avalera des entrées qui auraient dû atteindre un ELIF plus précis.
Utilisez is_not_empty comme garde au tout début de toute branche qui paie un appel LLM ou une API payante. C’est la façon la moins chère d’éviter de gâcher des tokens sur des entrées nulles.
Chaîne vs nombre — "100" equals 100 peut renvoyer false. Pour comparer des nombres, vérifiez que le node amont émet bien un nombre (ou utilisez un node de parsing dédié avant le Conditional).
Câblez toujours la branche Default. Un run sans cas correspondant termine en cul-de-sac sur le node Conditional, ce qui est difficile à repérer dans les longs workflows.
graph LR
Input[Node amont] --> Cond{Conditional}
Cond -->|Case 1| A[Branche A]
Cond -->|Case 2| B[Branche B]
Cond -->|Default| C[Fallback / Log]
Nodes complémentaires
Itérez sur une liste et placez un Conditional dans la boucle pour filtrer ou brancher chaque élément.
Câblez-le sur la branche Default pour interrompre le run quand aucun cas ne matche.
Extrayez le champ exact à tester avant de l’envoyer dans le Conditional.
Protégez les appels LLM coûteux derrière un Conditional qui vérifie d’abord la qualité de l’entrée.