使用說明 使用說明
Workspace

匯入、匯出與版本紀錄

用 JSON 把工作流帶出去、帶進來,流程圖、名稱或說明改過並存起來時留下的版本紀錄,以及一個可以直接匯入來試的範例工作流。

本頁內容 4

工作流可以寫成一段 JSON,帶出去,也可以從 JSON 帶進來。流程圖、名稱或說明改過並存起來時,網站也會留下一筆版本紀錄,讓你看以前的樣子,或換回去。這一頁的最後,有一個範例工作流,可以直接匯入來試。

匯出

⋯「更多」選單的「匯出 JSON」,會打開「匯出工作流 JSON」。

  • 上面寫著檔案的名稱,是工作流的名稱加上今天的日期。
  • 中間是 JSON 的內容,只能看,不能改。
  • 下面的按鈕:「關閉」;「複製」,按了之後寫著「已複製」;以及「匯出 JSON」,會把檔案下載下來。

匯出的是畫布上現在的樣子,還沒儲存的變更和釘選資料都會帶出去。

  • 檔案的外形和 n8n 的格式一樣,但節點的種類不一樣。從 n8n 匯出的檔案帶進來時,節點、連線和釘選資料都會進來,但每一個 n8n 的節點都會變成「不認識的節點」,要換成這個網站有的節點才能跑。
  • 節點用的憑證,只會帶出它的名稱和種類,不會帶出密碼或金鑰,請看憑證:保存 API 金鑰與密碼。只有開放給這個工作流的憑證會帶出名稱:節點選的憑證沒有開放給這個工作流時,檔案裡不會寫它,請看工作流用得到哪些憑證。
  • 檔案裡不會寫工作流的名稱。

匯入

⋯「更多」選單的「匯入 JSON」,會打開「匯入工作流」。按「選一個 JSON 檔」選一個檔案,或把 JSON 貼到「或把工作流的 JSON 貼在這裡」。

網站讀完之後,會寫出匯入後會怎麼樣:

  • 「這個檔案有 … 個節點。」
  • 本系統沒有的節點類型:「其中 … 種節點這個版本還沒有,會變成「不認識的節點」:…。它們的設定會原封不動留著。」都有的話,寫著「每一種節點這個版本都有。」這種節點請看便利貼與未知節點。
  • 匯入到現在這個工作流時,對到的憑證:「匯入到現在這個工作流時,憑證對到了:…」
  • 匯入到現在這個工作流時,對不到的憑證:「匯入到現在這個工作流時,這些節點原本用的憑證沒有開放給這個工作流,會留白,要自己再選一次:…」
  • 建立成新的工作流時,對到的憑證:「建立成新的工作流時,憑證對到了:…」
  • 建立成新的工作流時,對不到的憑證:「建立成新的工作流時,這些節點的憑證會留白:…。新的工作流是你的私人工作流,只有你自己的私人憑證中,權限清單有「所有工作流」的,會開放給它;其他憑證,請憑證的擁有者在憑證的「權限」分頁加上它,再回來選。」…裡是每一個節點的名稱,括號裡是它原本用的憑證的名稱。

憑證是照種類和名稱來對的,而且只對開放給工作流的憑證,請看工作流用得到哪些憑證:

  • 「匯入到現在這個工作流」只用開放給打開的這個工作流的憑證來對。前兩行只有可以編輯的人看得到,因為只有他們看得到這個按鈕;「建立成新的工作流」的兩行,每一個人都看得到。
  • 「建立成新的工作流」只用你自己的私人憑證中,權限清單有「所有工作流」的來對:新的工作流是你的私人工作流,開放給它的就是這些憑證。其他憑證都會留白,就算打開的工作流有同名的憑證也一樣。

**憑證留白的節點,看起來沒有問題,但跑起來可能會出事:**有的會在執行時失敗;「HTTP 請求」會不帶登入資料就送出;Webhook 的「標頭驗證」留白時,網址會變成誰都可以呼叫。請把摘要列出的每一個憑證都重新選好。

下面的按鈕:

  • 「取消」。
  • 「建立成新的工作流」:建立一個新的工作流,把匯入的內容存進去,再打開它。它的名稱,用 JSON 最外層的 name(n8n 匯出的檔案有);沒有的話,叫「匯入的工作流」。新的工作流是你的私人工作流,權限清單一開始有「所有 AI Agent」和「所有工作流」,都是「編輯」,請看建立。
  • 「匯入到現在這個工作流」:只有可以編輯的人看得到。它會把打開的畫布整個換掉,這算一個步驟,按 Ctrl+Z 就能回復。換好之後,還要按上方列的「儲存」。

要注意的事:

  • 檔案太大,或節點太多時,網站不會匯入。
  • 檔案壞了時,網站會說哪裡不對,例如「讀不懂這段內容,它不是有效的 JSON。」、「這不是一個工作流,最外層要是一個物件。」、「這個檔案沒有 nodes,看起來不是工作流。」或「節點名稱「…」重複了,每個節點的名稱要不一樣。」
  • 用「建立成新的工作流」匯入的工作流,一開始是「未啟用」。
  • 匯入之後,請打開每一個選了東西的節點,重新選一次,例如選了 AI Agent、子工作流或對話的節點。這些選擇記的是編號,換到另一個地方,同一個編號就沒有意義了。(憑證不一樣:它是照名字對的,摘要會列出對不到的。但沒有開放給匯出的那個工作流的憑證,例如已經刪掉的,或沒有開放給它的私人憑證,匯出時就會拿掉,摘要也不會提。所以請檢查每一個用到憑證的節點,不要只看摘要列出的。)「AI Agent」與「SSE Agent」節點只執行權限清單上有匯入的這個工作流的 AI Agent,它們的「Agent」也只列出這樣的 AI Agent。所以請先請 AI Agent 的擁有者在它的「權限」分頁加上這個工作流,再重新選一次這兩種節點的 AI Agent,請看節點類型一覽。
  • 節點也可以用 Ctrl+C 與 Ctrl+V,在工作流之間搬,請看畫布。
  • AI Agent 加上了「匯入工作流」這個工具時,也可以替你寫進一個工作流:「權限管理」把「編輯」開放給這個 AI Agent 的任何一個工作流,點名或經由「所有 AI Agent」都算,不論在哪一個專案,也不論你自己能不能編輯它;或開一個新的私人工作流,權限清單一開始有「所有 AI Agent」、「所有工作流」和這個 AI Agent,都是「編輯」。「啟用中」的工作流被寫進之後還是「啟用中」。寫進別的專案的工作流時,對不到的編號是照那個專案來算的。它也會留下版本紀錄,寫著你和那個 AI Agent 的名字,而且不會把工作流切到「啟用中」,請看工具的分類。它也只用開放給那個工作流的憑證來對名稱。圖裡的「Agent 對話」觸發節點選了你看不到的 AI Agent 時,整張圖都不會寫進去,請看Agent 對話。寫進一個新的工作流時,用名稱寫的憑證只拿你自己的私人憑證中、權限清單有「所有工作流」的來對,對不到的名稱都會留白;用編號寫的憑證會照原樣留著,等它開放給新的工作流就能用。

版本紀錄

一筆版本紀錄記的是那時候的流程圖(節點、線與釘選資料)、工作流的名稱與說明,以及改它的人和時間。下面這些時候,網站會留下一筆:

  • 按「儲存」,存下改過的流程圖。按「執行」或「執行節點」時,網站先幫你存的那一次也算。
  • 改了工作流的名稱。工作流的說明(「搜尋」框會用它來找)改了時也一樣。
  • AI Agent 用「匯入工作流」寫進這個工作流,請看上面的匯入。這筆紀錄寫著正在對話的人,以及那個 AI Agent 的名字;在工作流的節點上按「執行節點」或「儲存並執行」時,寫著按下按鈕的人和這個 AI Agent 的名字,請看「AI Agent」節點。
  • 建立工作流、「建立複本」與用「建立成新的工作流」匯入時,會留下新工作流的第一筆。用「建立成新的工作流」匯入的工作流,一開始有兩筆:建立時那一筆空的,和匯入的流程圖那一筆。

什麼都沒改的儲存,不會留下版本紀錄。有版本紀錄之前就建立的工作流,第一次儲存、改名或還原時,會先留下一筆寫著「起點」的紀錄,記下它那時候的樣子;那一次什麼都沒改也一樣。

以前存的版本也在清單上,寫著存它的人和時間。它們只記了流程圖和名稱,沒有記說明,所以還原這樣的一筆時,會換回流程圖和名稱,說明維持現在的樣子,也不會出現「說明會變」。有以前存的版本的工作流,之後第一次儲存、改名或還原時,一樣會先留下一筆「起點」,記下它那時候的流程圖、名稱與說明。每一個工作流只保留最新的 20 筆,再多一筆時,最舊的那一筆會被刪掉。

⋯「更多」選單的「版本紀錄」,會列出這些紀錄,最新的在最上面。打得開這個工作流的人都看得到。還沒有紀錄時,寫著「還沒有版本紀錄。流程圖、名稱或說明改過並存起來時,就會留下一筆。」

  • 每一筆寫著時間和改它的人。AI Agent 改的那一筆,下面多一行「AI Agent:」和它的名字;「起點」那一筆不寫人;還原留下的那一筆,寫著它是從哪一個時間的版本還原的,那一筆已經被刪掉時,寫著「從一筆已經刪除的版本還原」。
  • 還沒選版本時,寫著「點左邊的版本,看看還原後會有什麼不一樣。」按一個版本,右邊會寫出它的名稱,以及還原之後會變成怎樣:「名稱會變」後面寫著「目前的名稱 → 這個版本的名稱」;「說明會變」表示這一筆的說明和現在的不一樣;「會加回來」、「會不見」、「會改名字」與「設定會變」後面,各列出是哪些節點。三樣都和現在一樣時,寫著「這個版本和現在的流程圖、名稱與說明一模一樣。」節點只比較節點本身:連線和釘選資料的不同不會列出來,所以就算寫著一模一樣,還原時連線和釘選資料還是可能會變。
  • 「在畫布上看」會在畫布上畫出那個版本,不能編輯,上方寫著「正在看以前存的版本,畫面上是那時候的流程圖,不能編輯。」按「回到編輯」就會回去。
  • 「還原成這個版本」只有可以編輯的人能用。按下去,網站會把那一筆的流程圖、名稱與說明存回這個工作流,並留下一筆新的版本紀錄,寫著它是從哪一筆還原的。還原之前存著的樣子也還在清單上,所以可以用同樣的方法換回來。紀錄已經存滿時,最舊的那一筆會被刪掉。按鈕下面寫著:「還原會留下一筆新的版本紀錄。現在存著的樣子也還在清單上,隨時可以再換回來。」
  • 那一筆的流程圖現在存不進去時,例如它的「工具代號」已經被別的工作流用了,網站會寫出原因,什麼都不會改,請看AI 工具。
  • 名稱或說明不符合現在的規則時,那個部分不會還原,其他部分照樣還原。這時框不會關上,會在「有些部分現在不能用了,所以沒有還原:」下面一條一條列出來。
  • 現在存著的內容已經和那一筆一樣時,還原不會留下新的紀錄,框也不會關上,寫著「目前的內容已經和這個版本一樣,沒有需要還原的地方。」(需要先留下「起點」時,那一筆「起點」還是會留下。)
  • 按「還原成這個版本」時,畫布上還沒儲存的變更會不見,網站不會先問。 所以請先按「儲存」。

「工作流設定」裡的設定、「啟用中」/「未啟用」、標籤與「權限管理」裡的東西,都不在版本紀錄裡,還原也不會改它們。「建立複本」做出來的複本有自己的版本紀錄:一開始只有一筆,原本那一個的版本紀錄一筆都不會帶過去。刪除工作流不會刪掉它的版本紀錄。

範例工作流

下面是一個很小的範例工作流:把三筆訂單,照金額分成大訂單和一般訂單。它不會呼叫網站外面的任何東西,不會送出任何訊息,也不會寫入資料表。

json
{
    "name": "範例:訂單分流",
    "nodes": [
        {
            "id": "75577a55-0571-409e-bc85-180c789139e2",
            "name": "手動觸發",
            "type": "manualTrigger",
            "position": [0, 80],
            "parameters": {},
            "typeVersion": 1
        },
        {
            "id": "69bbfb7b-bf3c-4f2d-8942-5b1ea22d7af9",
            "name": "金額夠大嗎",
            "type": "if",
            "position": [240, 80],
            "parameters": {
                "conditions": [
                    {
                        "left": "={{ $json.amount }}",
                        "operator": "gte",
                        "right": "1500"
                    }
                ],
                "combinator": "and"
            },
            "typeVersion": 1
        },
        {
            "id": "1f3834ef-dc2a-457b-b164-cb06e1c0f40e",
            "name": "標記大訂單",
            "type": "editFields",
            "position": [480, 0],
            "parameters": {
                "fields": [
                    {
                        "name": "tag",
                        "type": "string",
                        "value": "大訂單"
                    }
                ],
                "includeOtherFields": true
            },
            "typeVersion": 1
        },
        {
            "id": "0d4236cf-f1e0-4bbd-b784-ce9b57e1bffe",
            "name": "標記一般訂單",
            "type": "editFields",
            "position": [480, 160],
            "parameters": {
                "fields": [
                    {
                        "name": "tag",
                        "type": "string",
                        "value": "一般訂單"
                    }
                ],
                "includeOtherFields": true
            },
            "typeVersion": 1
        }
    ],
    "connections": {
        "手動觸發": {
            "main": [[{ "node": "金額夠大嗎", "type": "main", "index": 0 }]]
        },
        "金額夠大嗎": {
            "main": [
                [{ "node": "標記大訂單", "type": "main", "index": 0 }],
                [{ "node": "標記一般訂單", "type": "main", "index": 0 }]
            ]
        }
    },
    "pinData": {
        "手動觸發": [
            { "json": { "orderId": "A-01", "amount": 1800 } },
            { "json": { "orderId": "A-02", "amount": 320 } },
            { "json": { "orderId": "A-03", "amount": 2600 } }
        ]
    }
}

它有四個節點,從左到右:

  • 「手動觸發」:上面釘選了三筆訂單,每一筆有 orderId 與 amount。
  • 「金額夠大嗎」:一個「條件判斷 (IF)」,條件是左值 {{ $json.amount }}、運算子「大於或等於」、右值 1500。兩邊都是數字,所以照數字比,請看條件。
  • 「標記大訂單」:接在 true 那條線,是一個「編輯欄位 (Set)」,加上一個文字欄位 tag,值是「大訂單」,而且打開了「保留其他欄位」。
  • 「標記一般訂單」:接在 false 那條線,一樣加上 tag,值是「一般訂單」。

怎麼用:

  1. 把上面整段 JSON 複製起來。
  2. 打開任何一個工作流,或建立一個新的。
  3. 按 ⋯「更多」選單的「匯入 JSON」,把 JSON 貼上,讀一下網站寫出的說明。
  4. 按「建立成新的工作流」。新的工作流會叫「範例:訂單分流」,是「未啟用」。
  5. 按上方列的「執行」。這次執行用的,是釘選在「手動觸發」上的三筆訂單,請看釘選資料。
  6. 打開「金額夠大嗎」,看「輸出資料」的 true 與 false 兩個分頁:A-01 與 A-03 在 true,A-02 在 false。也可以在執行面板按一個節點,看它的資料。
  7. 改一筆釘選的訂單,或是改條件裡的數字,再跑一次,看看結果怎麼變。條件的右值是固定值;要改用算出來的值,請看固定值與運算式。