Salut à tous - je rencontre un problème récalcitrant avec le comportement à double sortie du nœud Execute Workflow quand « On Error: Continue (using error output) » est activé. J’espère que quelqu’un a rencontré ce problème et a trouvé un pattern propre.
Configuration
-
Un workflow parent appelle un sous-workflow via Execute Workflow.
-
Paramètres du nœud Execute Workflow :
-
Mode : Run once for each item
-
Wait for Sub-Workflow Completion : ON
-
On Error : Continue (using error output)
-
-
Le nœud terminal du sous-workflow est une mise à jour Google Sheets.
-
Le parent a deux branches en aval : chemin de succès (nettoyage + alerte Telegram + page de formulaire terminé) et chemin d’erreur (alerte d’erreur Telegram + page d’erreur terminée).
Le comportement que j’observe
J’ai deux modes de défaillance selon le paramètre Always Output Data du nœud Execute Workflow du parent :
Cas A - Always Output Data OFF sur le nœud Execute Workflow du parent :
-
Si le sous-workflow réussit : le nœud terminal (Sheets update) émet 1 élément avec les données de ligne complètes. L’onglet Success Branch du nœud Execute Workflow du parent montre clairement que l’élément est présent. Mais les nœuds en aval câblés au port de succès ne s’exécutent pas. L’exécution s’arrête simplement à Execute Workflow sans erreur et sans routage supplémentaire.
-
Si le sous-workflow échoue : la branche d’erreur s’exécute correctement avec la charge d’erreur. Propre.
Cas B - Always Output Data ON sur le nœud Execute Workflow du parent :
-
Si le sous-workflow réussit : les deux branches (succès et erreur) s’exécutent (succès avec les vraies données, mais aussi une exécution fantôme d’une certaine façon).
-
Si le sous-workflow échoue : les deux branches s’exécutent simultanément : la branche de succès s’exécute avec un élément placeholder vide
{}, la branche d’erreur s’exécute avec la charge d’erreur réelle. Les deux chemins en aval s’exécutent en parallèle, ce qui provoque des alertes Telegram en double et des pages de formulaire terminé conflictuelles.
Ce que j’ai essayé
-
Basculer
Always Output DataON sur le nœud Sheets terminal du sous-workflow, avec leAlways Output Datadu Execute Workflow du parent OFF. Le nœud terminal du sous-workflow confirme qu’il émet 1 élément avec les données complètes quand il est vérifié dans le log de sous-exécution. L’onglet Success Branch du Execute Workflow du parent affiche aussi cet élément. Les nœuds en aval ne s’exécutent toujours pas. -
Vérifié que
Wait for Sub-Workflow Completionest ON. -
Vérifié le câblage sur le canvas - port de succès vers le nœud cleanup, port d’erreur vers le nœud alert. Aucun échange accidentel.
-
Essayé à la fois les modes « Run once for each item » et « Run once with all items ». Même résultat.
-
Redessiné les lignes de connecteur depuis le port de succès. Aucun changement.
Ce que je veux
Le pattern standard à double sortie que la plupart des gens semblent utiliser :
-
Le sous-workflow réussit → seule la branche de succès s’exécute en aval → cleanup + alerte de succès s’exécutent.
-
Le sous-workflow échoue → seule la branche d’erreur s’exécute en aval → alerte d’erreur + UI de récupération s’exécutent.
-
Jamais les deux à la fois.
Questions
-
Est-ce que
Continue (using error output)est connu pour ne pas fonctionner correctement quand le nœud terminal du sous-workflow retourne des éléments mais que le port Execute Workflow du parent ne les propage pas aux nœuds en aval ? Y a-t-il une version spécifique de n8n Cloud où ce problème est corrigé ? -
Y a-t-il un pattern canonique que les gens utilisent pour obtenir un routage dual propre - peut-être avec un nœud Merge, une vérification IF sur
$json.error, ou un contournement structurel que je ne connais pas ?
Toute indication est appréciée. Je suis heureux de partager plus de détails sur ce qui d’autre serait nécessaire (en tant que code JSON, captures d’écran de workflow et autres).
Merci.