n8n Sub-workflow 教學:工作流模組化設計指南
學會用 n8n 的 Execute Sub-workflow 節點把大工作流拆成小模組,好維護、好重用、好除錯,附實戰範例和拆分原則。
你的 n8n workflow 是不是越做越長、節點越來越多,一打開滿螢幕都是線?是時候學會拆分了。
Sub-workflow 就是把一個大 workflow 拆成幾個小 workflow,互相呼叫。就像程式設計裡的 function 一樣——寫一次、到處用。
為什麼要模組化
一個 50 個節點的 workflow,出錯你要找半天。拆成 5 個 10 節點的 sub-workflow,馬上知道問題在哪。
模組化的好處:
| 好處 | 說明 |
|---|---|
| 好維護 | 每個 sub-workflow 只做一件事,改起來不怕影響其他部分 |
| 好重用 | 同樣的邏輯寫一次,多個 workflow 都能呼叫 |
| 好除錯 | 出錯的時候馬上知道是哪個模組壞了 |
| 好測試 | 每個 sub-workflow 可以獨立跑、獨立測試 |
| 不額外計費 | n8n Cloud 上,sub-workflow 的執行不算進你的額度 |
白話版:就是把一本很厚的說明書,拆成好幾本薄的小手冊。
Execute Sub-Workflow 節點
這是串接 sub-workflow 的核心節點。
怎麼用
父 Workflow(呼叫別人的那個):
- 加入「Execute Sub-Workflow」節點
- 選擇要呼叫哪個 sub-workflow(用下拉選單選或填 Workflow ID)
- 設定要傳什麼資料給 sub-workflow
子 Workflow(被呼叫的那個):
- 把觸發節點換成「Execute Sub-workflow Trigger」
- 這個 Trigger 會接收父 workflow 傳過來的資料
- 處理完之後,最後一個節點的輸出會回傳給父 workflow
設定選項
| 選項 | 說明 |
|---|---|
| Source | Database(從清單選 workflow)或 URL(填 workflow URL) |
| Mode | Once for each item(每個 item 呼叫一次)或 Once for all items(全部一起傳) |
參數傳遞
父 → 子:傳資料進去
Execute Sub-Workflow 節點會把當前的 item 資料原封不動傳給子 workflow。在子 workflow 裡面用 {{ $json.xxx }} 就能取用。
如果你想只傳特定欄位,在 Execute Sub-Workflow 前面放一個 Edit Fields 節點,整理好要傳的資料。
子 → 父:回傳結果
子 workflow 最後一個節點的 output,會自動回傳給父 workflow 的 Execute Sub-Workflow 節點。
在父 workflow 裡,你可以用 {{ $json.xxx }} 取得子 workflow 回傳的資料。
父 Workflow:
[Trigger] → [準備資料] → [Execute Sub-Workflow] → [用回傳的結果繼續]
↓
子 Workflow:
[Sub-workflow Trigger] → [處理] → [回傳結果]
錯誤處理
子 workflow 出錯的時候,錯誤會冒泡到父 workflow 的 Execute Sub-Workflow 節點。
處理方式
方式 1:在子 workflow 內部處理
在子 workflow 裡加 Error Handler,把錯誤吞掉,回傳一個標記:
{ "success": false, "error": "出錯的原因" }
父 workflow 收到後用 IF 節點判斷 success 是 true 還是 false。
方式 2:在父 workflow 處理
在 Execute Sub-Workflow 節點的 Settings 裡開 Continue On Fail。子 workflow 出錯的時候,父 workflow 不會停下來,而是把錯誤資訊傳到下一個節點。
實測過的,放心用。建議重要的 sub-workflow 兩種都做——子 workflow 自己處理能處理的,真的出大事讓父 workflow 攔截。
實戰範例:拆分大工作流
場景:每日自動報表
原本的大 workflow(30 個節點):
排程觸發 → 抓 GA4 資料 → 抓 Stripe 資料 → 抓社群數據
→ 資料清洗 → 資料合併 → 算 KPI → 產生圖表
→ 組合報告 → 寄 Email → 發 Slack 通知
拆分後:
主 Workflow:
[Schedule Trigger]
→ [Execute Sub-Workflow: 抓資料]
→ [Execute Sub-Workflow: 分析資料]
→ [Execute Sub-Workflow: 產出報告]
→ [Execute Sub-Workflow: 發送通知]
Sub-Workflow 1:抓資料
[Sub-workflow Trigger] → [GA4 API] → [Stripe API] → [社群 API] → [Merge] → [回傳]
Sub-Workflow 2:分析資料
[Sub-workflow Trigger] → [資料清洗] → [算 KPI] → [回傳]
Sub-Workflow 3:產出報告
[Sub-workflow Trigger] → [產生圖表] → [組合 HTML] → [回傳]
Sub-Workflow 4:發送通知
[Sub-workflow Trigger] → [寄 Email] → [發 Slack] → [回傳]
每個 sub-workflow 只做一件事,清清楚楚。
另一個場景:可重用的「寄通知」模組
你有 10 個 workflow 都需要在結束時發 Slack 通知。與其每個都放一個 Slack 節點,不如做一個「通知 Sub-Workflow」:
[Sub-workflow Trigger] → [IF: 通知管道]
→ Slack: [發 Slack]
→ Email: [寄 Email]
→ LINE: [打 LINE API]
所有 workflow 都呼叫同一個通知模組。以後要改通知格式?改這一個就全部生效。
拆分原則
| 原則 | 說明 |
|---|---|
| 一個 sub-workflow 做一件事 | 「抓資料」和「分析資料」拆開 |
| 會重複用的邏輯一定要拆 | 通知、錯誤處理、資料清洗 |
| 超過 15 個節點就考慮拆 | 太長的 workflow 難維護 |
| 跨團隊共用的拆出來 | 例如公司的「寄信模組」大家都能用 |
| 不要拆太碎 | 3 個節點的 workflow 不用特別拆 |
命名規則
建議用前綴區分:
[Main]每日報表[Sub] 抓 GA4 資料[Sub] 寄通知[Sub] 資料清洗[Error] 全域錯誤處理
在 n8n 的 Workflow 列表裡一目了然。
先跑起來再說。不用一開始就完美模組化——先把 workflow 做出來,跑順了再慢慢拆。
延伸閱讀
- n8n 資料轉換技巧 — Sub-workflow 間的資料傳遞技巧
- n8n 常見錯誤 Top 10 — Sub-workflow 可能遇到的錯誤
- n8n 第一個自動化工作流 — 還沒做過 workflow 從這開始
- n8n Expression 與進階技巧大全 — 進階技巧總整理
外部參考:
每週限量包裡有幾個實用的 Sub-workflow 模板(通知模組、錯誤處理模組、資料清洗模組),直接匯入就能用。
FAQ
Sub-workflow 可以呼叫另一個 sub-workflow 嗎?
可以。Sub-workflow 裡面可以再放 Execute Sub-Workflow 節點,形成多層呼叫。但不建議嵌套太深(2-3 層就好),不然除錯會很痛苦。
Sub-workflow 的執行有沒有額度限制?
n8n Cloud 上,sub-workflow 的執行不計入每月執行額度,也不計入活躍 workflow 數量。自架版沒有任何限制。
Sub-workflow 跟 Error Workflow 有什麼不同?
Sub-workflow 是你主動呼叫的,用來拆分邏輯。Error Workflow 是 n8n 在發生錯誤時自動觸發的,用來處理錯誤通知。兩者可以搭配使用。