# 條件

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

透過明確的比較規則，為固定值或可用資料選擇具名執行分支。

條件節點（Condition）適合狀態檢查、閾值判斷、空值判斷和類別精確匹配等規則，不呼叫模型。

## 定義分支

每個分支有名稱和 `when` 表示式。表示式可以用 `all` 或 `any` 組合。`match` 設為 `first` 時選擇第一個匹配分支，設為 `all` 時選擇所有匹配分支。

```json
{
  "op": "node.add", "as": "route", "type": "condition", "name": "Route a ticket",
  "config": {
    "match": "first",
    "branches": [{
      "name": "priority",
      "when": {
        "left": { "kind": "value", "value": "priority" },
        "operator": "==",
        "right": { "kind": "value", "value": "priority" }
      }
    }]
  }
}
```

運算元可以使用受支援的上游輸出或變數，不必是固定值。可用運算子和運算元要求，以結構說明為準。

## 連線分支路徑

連線執行線時指定分支名：

```json
{ "op": "edge.connect", "source": "$route", "branch": "priority", "target": "$escalate" }
```

沒有分支匹配時選擇 `otherwise`。設定 `match: "all"` 時，可以有多條分支繼續執行；這些分支在下游匯合時，仍遵循一般前驅規則。

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

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

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

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

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

## 資料與執行控制

條件分支名錶示執行選擇，不是資料輸出。下游業務資料仍需從實際的上游來源綁定。任務經過錯誤處理後的系統錯誤，也可以在這裡比較，無需新增錯誤連線。

需要模型評估時，使用 [AI 決策](https://openflow.run/zh-tw/docs/nodes/decision/index.md)，再根據結構化結果選擇路徑。條件節點沒有一般任務重試或錯誤處理設定。

## 資料來源

*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md)
*   [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)
*   [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)
