Ouvrir le Studio

Conditional

Le node Conditional évalue des règles IF/ELIF/ELSE et oriente le workflow vers la branche correspondante.

Node IF ELSE branch conditionnelle reliée aux données amont workflow

À 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

Panneau IF ELSE avec opérateur règle et routes de sortie TRUE FALSE

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_empty ou is_not_empty.
Operators enum required

Opérateurs de comparaison disponibles :

OperatorDescriptionExample
equalsÉgal àstatus equals "active"
not_equalsDifférent detype not_equals "test"
containsChaîne contient une sous-chaîneemail contains "@gmail"
not_containsChaîne ne contient pasurl not_contains "test"
starts_withChaîne commence parname starts_with "Dr."
ends_withChaîne se termine parfile ends_with ".pdf"
greater_thanNumérique >score greater_than 80
less_thanNumérique <price less_than 100
greater_equalNumérique >=count greater_equal 10
less_equalNumérique <=items less_equal 5
is_emptyValeur vide/null (pas de valeur de droite)data is_empty
is_not_emptyValeur 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.

Tip

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}} · Operator is_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

Tip

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.

Tip

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.

Warning

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).

Warning

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