# 測試與發布

Source: https://openflow.run/zh-tw/docs/guides/test-and-publish/
Language: zh-TW
Product version: 0.1.0-beta.77

驗證草稿、檢查執行結果，再將固定版本用於正式環境執行。

草稿可以隨時編輯，正式環境執行使用目前線上發布版本（Live）。測試和發布檢查的內容不同，應分別根據操作結果判斷是否可以繼續。

## 驗證執行圖

執行工作流程驗證，檢查缺失的綁定、無效 schema、不可用的輸出及其他執行圖問題。驗證通過表示執行圖符合所選引擎契約（Engine Contract）的確定性約束，並不代表外部帳號、模型服務或回呼地址已經可用。

完整驗證和發布都會檢查整張執行圖。草稿執行只驗證從所選觸發器可達的範圍及其依賴，其他未完成的分支不一定會阻止本次測試。

## 測試一個入口

選擇要測試的觸發器，提供有代表性的輸入。開啟生成的執行紀錄，檢視實際選取的分支、節點輸入、業務輸出、待處理的等待節點和失敗資訊。

人工決定後，審核節點選擇核准回覆或退回修改的分支。

**輸入**
待審核的回覆為「Your replacement is ready to ship.」。

**預期結果**
核准後進入 Approved reply，拒絕後進入 Keep the draft。

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

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

這個審核案例中的分支會停下來，等待人工決定。預覽無法送出審核結果；實際執行時，需要透過有權限的執行介面核准或拒絕待處理的審核。

## 發布版本

發布過程可能需要準備觸發器訂閱等外部資源。只有所有步驟都成功，系統才會切換 Live 並激活相關綁定。如果準備失敗，原有線上版本繼續生效。

此後編輯草稿，只會影響將來的草稿測試。已經接收的執行使用固定的修訂版本、權限和輸入，不受這些編輯影響。

## 啟用自動執行

發布並啟用工作流程後，還要驗證真實的自動入口，例如一次定時觸發、HTTP 請求、輪詢結果或應用事件。停用工作流程會阻止新的正式環境執行，不會取消已經接收的執行。

顯式呼叫 Live 執行時使用開始節點作為入口。其他觸發器透過各自的代管機制啟動 Live 執行。草稿測試可以模擬任意觸發器。

## 重試前檢查失敗原因

任務失敗前，外部操作可能已經生效。`indeterminate` 表示無法確認執行結果。重複執行前，應先檢查外部系統的實際狀態。

回復舊版會建立一條指向舊定義的新發布紀錄，不會撤銷外部操作，也不會改寫已結束的執行。詳見[錯誤與重試](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#3-execution-publication-and-lifecycle)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#4-validation-publication-and-live)
