大家好 - 遇到一個頑固的問題,當 Execute Workflow 節點的「On Error: Continue (using error output)」設定開啟時,雙輸出行為出現異常。希望有人遇過這種情況並找到乾淨的解決方案。
設定
-
一個父工作流透過 Execute Workflow 呼叫子工作流。
-
Execute Workflow 節點設定:
-
Mode:為每個項目執行一次
-
Wait for Sub-Workflow Completion:ON
-
On Error:Continue (using error output)
-
-
子工作流的終端節點是 Google Sheets 更新。
-
父節點有兩個下游分支:成功路徑(清理 + Telegram 警告 + 表單完成頁面)和錯誤路徑(Telegram 錯誤警告 + 錯誤完成頁面)。
我看到的行為
根據父節點 Execute Workflow 的 Always Output Data 設定,我遇到兩種失敗模式:
情況 A - 父節點 Execute Workflow 的 Always Output Data 為 OFF:
-
子工作流成功時:終端節點(Sheets 更新)發出 1 個包含完整行資料的項目。父節點 Execute Workflow 的 Success Branch 標籤清楚地顯示該項目存在。但連接到成功埠的下游節點沒有執行。執行在 Execute Workflow 處停止,沒有錯誤,也沒有進一步的路由。
-
子工作流出錯時:錯誤分支正確執行並帶有錯誤承載。乾淨利落。
情況 B - 父節點 Execute Workflow 的 Always Output Data 為 ON:
-
子工作流成功時:成功和錯誤分支都執行(成功帶有實際資料,但還有某種幽靈執行)。
-
子工作流出錯時:兩個分支同時執行:成功分支帶有空的預留位符項目
{},錯誤分支帶有實際錯誤承載。兩個下游路徑平行執行,導致重複的 Telegram 警告和衝突的表單完成頁面。
我試過的方法
-
在子工作流的終端 Sheets 節點上切換
Always Output Data為 ON,同時將父節點 Execute Workflow 的Always Output Data設為 OFF。子工作流的終端節點在子執行日誌中確認會發出 1 個包含完整資料的項目。父節點 Execute Workflow 的 Success Branch 標籤也顯示該項目。下游節點仍然沒有執行。 -
驗證
Wait for Sub-Workflow Completion為 ON。 -
驗證畫布上的連線 - 成功埠連接到清理節點,錯誤埠連接到警告節點。沒有意外的交換。
-
嘗試了「為每個項目執行一次」和「以所有項目執行一次」兩種模式。結果相同。
-
重新繪製來自成功埠的連接線。沒有改變。
我想要的
大多數人似乎使用的標準雙輸出模式:
-
子工作流成功 → 只有成功分支在下游執行 → 清理 + 成功警告執行。
-
子工作流拋出錯誤 → 只有錯誤分支在下游執行 → 錯誤警告 + 恢復 UI 執行。
-
永遠不會同時兩個都執行。
問題
-
當子工作流的終端節點返回項目但父節點 Execute Workflow 埠沒有傳播到下游節點時,
Continue (using error output)是否已知會出現異常?是否存在已修補此問題的特定 n8n Cloud 版本? -
人們是否有某種規範模式來獲得乾淨的雙路由 - 也許使用 Merge 節點、對
$json.error的 IF 檢查,或其他我遺漏的結構性解決方案?
任何指點都感謝。很樂意分享更多細節(如 JSON 程式碼、工作流螢幕截圖等)。
謝謝。