# 錯誤觸發器

Source: https://openflow.run/zh-tw/docs/nodes/error/
Language: zh-TW
Product version: 0.1.0-beta.77

指定的正式環境工作流程失敗後，啟動獨立的錯誤處理工作流程。

自動正式環境執行最終失敗後，可以用工作流程錯誤觸發器（Flow Error）傳送通知或紀錄事故。原始執行的失敗結果保持不變。

## 選擇上游工作流程

在處理工作流程中新增錯誤觸發器，選擇要監測的已發布上游工作流程。公開設定是一個工作流程 ID 列表：

```json
{
  "op": "node.add", "as": "failure", "type": "error", "name": "Production failure",
  "config": { "sourceFlowIds": ["UPSTREAM_FLOW_ID"] }
}
```

列表為空時不監聽任何工作流程。不能選擇目前工作流程、未發布工作流程或已刪除工作流程。選擇符合條件的來源後，發布並啟用處理工作流程。

工作流程錯誤觸發器在所選正式環境工作流程最終失敗後，啟動獨立的處理執行。

**輸入**
選擇要監測的已發布上游工作流程；案例初始選擇為空。

**預期結果**
符合條件的上游失敗會啟動目前處理工作流程，原始執行仍保持失敗狀態。

**執行前準備**
選擇已發布的上游工作流程，再發布並啟用處理工作流程。手動執行不會觸發此錯誤處理。

[下載工作流程](https://openflow.run/docs/examples/handle-flow-error.openflow.json)

## 觸發規則

符合條件的自動執行包括 Webhook、定時，以及透過輪詢偵測到的應用事件執行，例如 Gmail 收到新郵件。最終失敗或結果不確定時，可以啟動錯誤處理。手動草稿執行、手動 Live 執行、成功執行和已取消執行都不會觸發。

一次失敗執行，對每個已訂閱的處理工作流程最多啟動一次處理執行。部署端會持久化待投遞的處理請求，並在接收執行前重新檢查處理工作流程是否符合條件。處理工作流程自身失敗，不會遞迴觸發更多處理工作流程。

## 輸出

*   `workflow`：來源工作流程及其固定的發布版本和修訂版本。
*   `execution`：原始執行和最終狀態。
*   `error`：錯誤程式碼、訊息，以及可用的失敗節點或執行識別碼。

草稿測試可以傳入有代表性的失敗資料，無需製造正式環境故障。真實的正式環境錯誤投遞仍需單獨檢查。

## 後續處理

處理事故不會重試或修復原始執行。結果不確定時，外部操作可能已經生效，重複執行前需要檢查外部系統。節點內部的錯誤處理見[錯誤與重試](https://openflow.run/zh-tw/docs/concepts/errors-and-retries/index.md)。

## 資料來源

*   [docs/triggers/error-trigger.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/triggers/error-trigger.md)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#flow-error-deletion-impact)
*   [packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts)
