使用說明 使用說明
Workspace

執行、上限與錯誤工作流

手動試跑與正式啟用、執行面板、執行紀錄、每一次執行的上限,以及失敗時要執行的工作流。

本頁內容 11

這一頁說明工作流怎麼跑:先手動試,再正式啟用;怎麼看每一次執行;每一次執行受哪些上限管;以及一次執行失敗時,怎麼自動去跑另一個工作流。

試跑與正式啟用

手動試跑

  • 上方列的「執行」,會照最後一次儲存的樣子,手動跑一次整個工作流。有還沒儲存的變更時,它會先幫你存;存不起來時,就不會跑。
  • 不論開關是「啟用中」還是「未啟用」,都可以按「執行」。要按「執行」,你要能編輯這個工作流,而且工作流裡要有觸發節點,請看一個工作流,很多觸發。
  • 卡片上的「執行節點」,和設定視窗的「儲存並執行」,只執行那一個節點。它們也會先把工作流存起來。這種只跑一個節點的執行,不算在任何上限裡,失敗時也不會啟動錯誤工作流。
  • 執行的時候,「執行」會變成「停止」;按下去之後,它寫著「取消中…」。正在跑的那一個節點會先跑完,才停下來,執行面板會寫著:「已經送出停止了。正在跑的節點會先跑完,再停下來。」
  • 「執行」因為專案的上限被擋下來時,上方列的下面會出現一行紅字,寫著擋下的原因。因為每小時的上限被擋下來時,執行紀錄裡也會多一筆失敗的執行。

正式啟用

  • 上方列的「啟用中」/「未啟用」開關,只有可以編輯的人看得到。切到「啟用中」,會打開排程、Webhook 的網址與 Agent 對話,請看一個工作流,很多觸發。
  • 切到「啟用中」時,網站會檢查這個工作流跑不跑得起來、有沒有觸發節點;不行時,上方列的下面會出現一行紅字說原因。
  • 開關用的是最後一次儲存的樣子,它不會先幫你存。所以請先按「儲存」,再切到「啟用中」。
  • 新建立的、用「建立複本」做出來的,以及匯入的工作流,一開始都是「未啟用」。

兩件要小心的事

  • 釘選資料只用在有人自己動手跑的時候:按「執行」、這種執行失敗後的「重試」,以及只跑一個節點時,前面節點的釘選資料會當作它的輸入。排程、Webhook、對話、AI 工具、子工作流和錯誤工作流的執行,一定不會用。所以靠釘選資料手動跑得好好的工作流,正式啟用之後,還是可能失敗,請看釘選資料。
  • 手動執行也會真的做事:它和其他的執行一樣,會送出訊息、發文、寫入資料表。

執行面板

按畫布工具列上的一個圖示按鈕,游標指著時顯示「顯示執行面板」(打開後是「關閉執行面板」),會在畫布下面打開執行面板。一次執行開始時,它也會自己打開。

  • 面板上方有四個開關:「執行紀錄」、「執行結果」、「輸入資料」與「輸出資料」。它們不是分頁,可以同時打開好幾個。至少要留一個打開;只剩一個時,它不能關掉。
  • 拖面板的上緣可以改它的高度,按兩下就會還原。面板上方最右邊的按鈕,會把面板收起來。

「執行結果」

  • 從上到下是:這次執行的錯誤(有的話)、以「提醒:」開頭的提醒(有的話),然後是狀態、這次執行的來源、「觸發者:…」、「從「…」開始」,以及花了多久。
  • 「觸發者:」後面寫著是誰、或是什麼啟動了這次執行:
    • 按下「執行」、「重試」、節點卡片上的「執行節點」,或節點設定視窗的「儲存並執行」的人,寫的是這個人的名字。
    • 「Agent 對話」啟動的執行,寫的是那個 AI Agent 的名字。
    • 用「AI 工具」叫的執行,寫的是叫它的那個 AI Agent 的名字。
    • 子工作流的執行,寫的是呼叫它的工作流的名字;錯誤工作流的執行,寫的是執行失敗的那個工作流的名字。
    • 排程啟動的執行,寫著「排程」;Webhook 啟動的執行,寫著「Webhook」。
    • 在垃圾桶裡的 AI Agent 或工作流,還是寫它的名字。觸發者已經被永久刪除,或是這次執行比觸發者的紀錄更早時,寫著「—」。
  • 碰到上限而被擋下來的執行,也會記下觸發者。
  • 正在跑的執行,有「停止」;失敗的執行,有「重試」。
  • 執行的狀態有:「排隊中」、「執行中」、「等待中」、「成功」、「失敗」與「已取消」。
  • 下面列出跑過的每一個節點。節點的狀態有:「等待中」、「執行中」、「成功」、「失敗」、「已取消」與「略過」。
  • 一個節點跑了好幾次時,每一次各一行,寫著「第 … 次」。重試時直接沿用上一次結果的節點,寫著「沿用」。一個節點自己重試過時,寫著「重試 …」。
  • 按一行,「輸入資料」與「輸出資料」就會顯示那個節點的資料。在執行面板裡,這兩個窗格一開始是「表格」。
  • 還沒有任何執行時,面板寫著「按上面的「執行」開始,或到「執行紀錄」看以前跑過的。」
  • 一個節點,或整個執行,跑的次數快到上限時,會出現一行琥珀色的提醒,例如「提醒:…這個工作流可能有停不下來的迴圈,請檢查看看。」請看下面的執行上限。

執行紀錄

「執行紀錄」列出以前的執行,新的在上面,一頁一頁看。

  • 狀態的篩選:「全部」、「成功」、「失敗」、「執行中」、「等待中」與「已取消」。
  • 來源的選單:「所有來源」、「手動」、「AI 工具」、「對話」、「排程」、「Webhook」、「子工作流」、「錯誤工作流」與「單一節點」。
  • 每一次執行,在來源的後面寫著觸發者,游標指著時會顯示「觸發者」。沒有觸發者時,寫著「—」。觸發者寫的是什麼,請看上面的「執行結果」。
  • 上方寫著「共 … 次」。還沒有任何執行時,寫著「還沒有執行過。」
  • 按一次執行,畫布會畫出那一次執行當時的流程圖,不能編輯,上方寫著「正在看以前的執行,畫面上是那時候的流程圖,不能編輯。」按「回到編輯」就會回去。
  • 還沒開始就被擋下來的執行,會顯示成失敗,寫著擋下的原因,沒有開始的時間。

重試

  • 只有失敗的執行,才有「重試」按鈕。
  • 重試會留下已經成功的節點,從失敗的那一個重新開始。「重試」旁邊寫著:「重試會沿用已經成功的節點,從失敗的那一個重新開始。」
  • 注意:重試跑的,是那一次失敗的執行當時的流程圖,不是你後來存的新版本。改好一個節點之後,請按「執行」重新跑一次。
  • AI 工具的執行不能重試,請看AI 工具。

保留多久

跑完的執行,在跑完之後保留 30 天,之後網站每天會清掉一次。還在跑、或還在等待的執行,不論多久都會留著。

執行上限

這一個工作流的時間上限

在 ⋯「更多」選單的「工作流設定」裡,「執行時間上限(秒)」是這一個工作流自己的時間上限。改好之後,按視窗最下面的「儲存」。

  • 空著時,灰色的字寫著「不填就用專案的 … 秒」,也就是用專案的時間上限。
  • 它下面寫著「專案目前是 … 秒。」這一個工作流的時間上限,可以和專案的一樣,或是比專案的短,不能比專案的長。

整個專案的設定

「工作流設定」的下面,是「整個專案的設定」。只有在這個工作流所在的專案裡,角色有「管理自動化設定」這項角色權限的成員,和那個專案的擁有者看得到它;改的也是那個專案的設定。它的欄位是「專案的執行時間上限(秒)」、「同時最多幾個在跑」、「每小時執行次數上限」、「單一節點執行次數上限」、「單次執行總步數上限」與「專案預設的失敗處理工作流」。改好之後,按「儲存專案設定」;存不起來時,會寫著「專案設定存不起來。」

一個專案一開始的上限:

  • 「專案的執行時間上限(秒)」:900 秒。
  • 「同時最多幾個在跑」:5 個。
  • 「每小時執行次數上限」:500 次。
  • 「單一節點執行次數上限」:250 次。
  • 「單次執行總步數上限」:1000 次。

每一格都有最小與最大可以填的數字。這些上限都不能關掉。

  • 「每小時執行次數上限」的說明寫著:「算的是最近一小時內開始的執行,不是整點到整點。對話和錯誤處理的執行會算進去,但不會被擋下來。」這句話說的是每小時的上限。「同時最多幾個在跑」到了上限時,對話與錯誤工作流的執行,還是會被擋下來。
  • 「每小時執行次數上限」的下面,有一塊寫著用了多少:「本小時 … 次 / … 次」;有執行被擋下來時,還有「另有 … 次被拒絕。」下面列出這個小時跑得最多的幾個工作流,和它們各跑了幾次;按工作流的名字,就會打開它。
  • 「單一節點執行次數上限」的說明寫著:「一次執行裡,同一個節點最多可以跑幾次。」
  • 「單次執行總步數上限」的說明寫著:「一次執行裡,所有節點加起來最多可以跑幾次,被跳過的節點也算。」
  • 這兩格的下面寫著:「這兩個上限調整後,下一次執行才會套用。」
  • 一個節點自己也可以設「執行次數上限」。這時兩個上限都有效,比較小的那一個算數,請看節點設定分頁。

私人工作流的上限

私人工作流不屬於任何專案,所以「工作流設定」裡沒有「整個專案的設定」,也沒有人可以改它的上限。它用的是上面「一個專案一開始的上限」的數字:

  • 執行時間上限:900 秒。「工作流設定」裡「執行時間上限(秒)」的「不填就用專案的 … 秒」與「專案目前是 … 秒。」,寫的就是這個數字;這一個工作流自己的時間上限,一樣可以設得更短。
  • 同時在跑的上限:5 個;每小時的上限:500 次。這兩個算的是擁有者所有的私人工作流加起來,不是一個工作流。
  • 單一節點執行次數上限:250 次;單次執行總步數上限:1000 次。

碰到上限時

  • 同時在跑的太多:「這個專案同時執行中的工作流已經到達上限 … 個。請等其他執行結束,或在專案設定裡把上限調高。」
  • 這一小時跑太多次:「這個專案這一小時已經執行 … 次工作流,到達上限 … 次。再過 … 分鐘會空出名額。」
  • 私人工作流同時在跑的太多:「你的私人工作流同時執行中的已經到達上限 … 個。請等其他執行結束。」
  • 私人工作流這一小時跑太多次:「你的私人工作流這一小時已經執行 … 次,到達上限 … 次。再過 … 分鐘會空出名額。」
  • 跑太久:「這次執行已經超過時間上限 … 秒,已經停止。」
  • 一個節點跑太多次:「節點「…」在這次執行中已經跑了 … 次,超過上限,執行已停止。請檢查是不是有停不下來的迴圈。」節點自己設的上限先到時,訊息寫的是「超過這個節點自己設定的上限」。
  • 整個執行跑太多步:「這次執行的節點次數已經到達上限 … 次,執行已停止。」後面可能還會寫是哪一個節點跑最多次,最後是「請檢查是不是有停不下來的迴圈。」

哪些執行會算、會被擋

  • 只跑一個節點的執行(「執行節點」與「儲存並執行」):不算在任何上限裡,也不會被擋下來。
  • 每小時的上限:對話與錯誤工作流的執行會算進去,但不會被它擋下來。其他的執行到了上限,會被擋下來。
  • 同時在跑的上限:除了只跑一個節點的執行,每一種執行都可能被它擋下來,對話與錯誤工作流的執行也一樣。
  • 停在「等待」,或停在會等待的「執行子工作流」上的執行,不算在同時在跑的數量裡。
  • 時間上限是在兩個節點之間檢查的,所以正在跑的那一個節點,會先跑完。
  • 有好幾個 AI 步驟的工作流,常常需要比較長的時間上限。

畫面上改不了的上限

  • 每一個 Webhook 節點,每分鐘最多接受 60 次呼叫。
  • 「Webhook」設成「跑完再回傳資料」時,整個工作流要在 30 秒內跑完。
  • 一次 Agent 對話的執行:60 秒。
  • 一次 AI 工具的執行:600 秒。
  • 子工作流的呼叫鏈:最多 5 層。
  • 「等待」最長可以等:7 天。
  • 跑完的執行保留:30 天。
  • 每一個工作流保留的版本紀錄:最新的 20 筆。

另外還有幾個上限,這裡不寫數字:每一個節點存下來的資料有大小上限;「合併 (Merge)」的「SQL 查詢 (SQL Query)」讀進來和查出來的筆數有上限;「失敗時重試」的「總嘗試次數」與「重試間隔」各有最大值,寫在它們的名稱裡。「移除重複 (Remove Duplicates)」能記住多少個值,由它自己的「最多記幾筆 (History Size)」決定。

錯誤工作流

錯誤工作流,是另一個工作流失敗時,網站自動去跑的工作流,例如用來發通知。

在哪裡設

  • 在 ⋯「更多」選單的「工作流設定」,在「失敗時要執行的工作流」選它,再按視窗最下面的「儲存」。沒有選時,它寫著「不指定」。選單下面寫著「這個工作流失敗的時候,會去執行你選的那一個,可以用來發通知。這裡只列出開放給這個工作流的工作流。」
  • 選單裡列出的,是「權限」加上了這個工作流,或有「所有工作流」而這個工作流在範圍裡的工作流,不論在哪一個專案;在別的專案的,名字後面寫著那個專案的名稱,私人工作流寫著「(私人)」。正在打開的這一個,以及在垃圾桶裡的工作流,不在裡面。請錯誤工作流的擁有者在它的權限管理加上這個工作流。
  • 選了一個「權限」沒有加上這個工作流的工作流,按「儲存」會被擋下:「選到的失敗處理工作流沒有開放給這個工作流,或已經不存在。請重新選一個。」原本存好的選擇沒有改,就不會再檢查一次,所以之後「權限」拿掉了這個工作流,也不會擋下時區的修改。
  • 在這個工作流所在的專案有「管理自動化設定」的人,也可以在「整個專案的設定」選「專案預設的失敗處理工作流」。這個選單列出那個專案裡你打得開的工作流,不包括正在打開的這一個;只能選那個專案裡、不在垃圾桶裡的工作流。一個工作流自己有選時,用它自己選的。私人工作流沒有專案預設,只用它自己選的。
  • 設定裡寫的是「失敗時」與「失敗處理」,執行紀錄的來源寫的是「錯誤工作流」,說的是同一件事。錯誤工作流的執行,觸發者是執行失敗的那個工作流。

什麼時候會跑

  • 錯誤工作流的「權限」要加上失敗的那個工作流,而且不在垃圾桶裡,它才會跑。 不論是工作流自己選的,還是專案預設的,都一樣。沒有加上時,它不會跑,畫面上也不會說。工作流自己選的那一個沒有加上時,不會改用專案預設的。
  • 只有一次執行以失敗結束時,它才會跑。按「停止」取消的執行、只跑一個節點的執行,以及錯誤工作流自己的執行,都不會啟動它。在開始之前就被拒絕的執行,例如碰到每小時的上限,雖然在執行紀錄裡記成失敗,也不會啟動它。
  • 它從它的「子工作流觸發」開始;沒有的話,從它的第一個觸發節點開始。
  • 只有從「子工作流觸發」或「手動觸發」開始時,它才拿得到失敗的細節。 所以每一個錯誤工作流,都請用「子工作流觸發」開始。
  • 它拿到一筆項目,欄位有 workflow_id、workflow_name、run_id、node_name(失敗的節點)、message 與 failed_at。發通知時,可以寫 {{ $json.workflow_name }} 與 {{ $json.message }}。
  • 「中止並拋出錯誤」節點的「錯誤訊息」,會放在 message 裡傳過來,前面加上「節點「…」執行失敗:」。
  • 它的執行,會算在每小時的執行次數裡,但不會被這個上限擋下來。專案同時在跑的執行已經到上限時,它不會跑,畫面上也不會說。
  • 它跑不起來時,不會讓別的東西跟著失敗。
  • 不論它是「啟用中」還是「未啟用」,都會跑。

例子:失敗時發一則通知

  1. 建立一個工作流,用「子工作流觸發」開始,後面接一個「HTTP 請求」節點,「HTTP 方法」選 POST,「網址」填聊天服務給你的接收網址(incoming webhook)。
  2. 打開「傳送請求 Body」,把要送出的文字切成「運算式」,寫 {{ $json.workflow_name }} 失敗了:{{ $json.message }},放在聊天服務要的欄位裡,再按上方列的「儲存」。
  3. 在通知工作流的 ⋯「更多」選單打開「權限」,在「權限管理」選「工作流」,加上要看著的那一個工作流,再按「儲存」。
  4. 打開要看著的那一個工作流,在 ⋯「更多」選單的「工作流設定」,把「失敗時要執行的工作流」選成剛才的工作流,再按「儲存」。
  5. 之後這個工作流的一次執行失敗時,通知工作流就會跑,上面寫的例外除外。