# 執行路徑與資料綁定

Source: https://openflow.run/zh-tw/docs/design/execution-model/
Language: zh-TW
Product version: 0.1.0-beta.77

分別設定執行路徑和輸入來源，讓工作流程的行為有據可查。

工作流程需要說明兩件事：節點何時可以執行，以及資料從哪裡來。執行連線和輸入綁定分別回答這兩個問題。

## 執行路徑

一次執行從一個觸發器開始。一般節點會等待本輪中所有直接前驅完成或被跳過；只要至少一條入邊被選取，它就會執行。如果所有傳入路徑都被跳過，該節點也會被跳過。

條件節點和等待類節點會選擇具名的執行路徑。分支名是控制訊號，並不是一般的業務資料輸出。

條件節點比較客戶等級，選擇優先處理分支或 otherwise 分支。

**輸入**
參與比較的客戶等級為 "priority"。

**預期結果**
選取 Priority queue。將等級改為其他值後，會選取 Standard queue。

**執行前準備**
匯入或執行此案例需要 Open Flow 服務；預覽本身可離線使用。

[下載工作流程](https://openflow.run/docs/examples/route-by-value.openflow.json)

## 資料來源

節點可以讀取固定值、支援的變數，以及所選上游路徑上可用的輸出。連線執行線不會自動綁定輸入，綁定輸出也不會自動建立執行線。

在分支匯合處，輸入可以引用選取前驅路徑及其上游節點的資料。被跳過的路徑不能提供上一次呼叫留下的舊值。執行介面展示的「最新結果」也不決定輸入取值的優先順序。

開始節點提供姓名，固定值節點提供前綴，程式碼節點組合兩者，工作流程輸出節點宣告最終結果。

**輸入**
{"name":"Ada"}

**預期結果**
{"message":"Hello, Ada!"}

**執行前準備**
匯入或執行此案例需要 Open Flow 服務；預覽本身可離線使用。

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

## 迴圈

回邊可以啟動後續迭代。首次進入時不等待回邊，重複執行受到執行預算限制。需要將結果反饋到後續迭代時，應明確引用目前路徑上可用的輸出，不能依賴「哪個節點最後完成」。

## 外部操作的影響

任務的業務結果通過輸出驗證後才會送出，但外部呼叫可能在後續步驟失敗之前就已生效。取消執行、回復舊版發布或執行失敗，都不會撤回已經發送的郵件、API 請求或其他外部寫入。

無法確認的結果會保留為不確定狀態。恢復執行時，不能自動重複結果尚未確認的外部操作。詳見[錯誤與重試](https://openflow.run/zh-tw/docs/concepts/errors-and-retries/index.md)。

## 資料來源

*   [docs/architecture.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/architecture.md#graph-execution-and-side-effects)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#execution-graphs-and-input-sources)
