> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fetchhive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Condition

> 配置一个根据工作流变量上的布尔表达式将执行分流到 TRUE 或 FALSE 路径的工作流步骤

# Condition

当你希望工作流根据早前步骤的输出值或起始输入值采取不同路径时,请使用 **Condition**。Condition 步骤会评估布尔表达式,并将执行路由到 **TRUE** 或 **FALSE** 分支。两个分支必须最终在单个合并步骤处重新汇合,工作流才能继续。

当你需要 if/else 逻辑、门控步骤(例如,仅当分数高于阈值时才发送电子邮件)或工作流中的轻量级 A/B 拆分时,请使用此步骤。

## 配置

| 选项                 | 是否必填 | 说明                                                                               |
| ------------------ | ---- | -------------------------------------------------------------------------------- |
| Name               | 否    | 步骤在工作流画布中的标签。                                                                    |
| Condition          | 是    | 决定运行哪个分支的布尔表达式。在 **Condition builder** 中构建为一行或多行,可选地嵌套在 `AND` / `OR` / `NOT` 组中。 |
| Branches rejoin at | —    | 只读。当两个分支汇合到合并步骤时显示。                                                              |

从 **Search steps...** 的 **Utilities** 分组添加此步骤。在步骤选择器中,标签为 **Condition**。

当你插入 Condition 时,Fetch Hive 会自动创建一个空的 **TRUE** 分支和一个空的 **FALSE** 分支,两者最初都指向原本在插入点之后的步骤。使用每个分支上的 `+` 控柄从画布中将步骤添加到该分支的一侧。

### 操作符

**Condition builder** 支持以下操作符:

* 分组操作符:`AND`、`OR`、`NOT` — 组合多行或对子表达式取反。
* 叶子操作符:
  * `equals`、`does not equal`
  * `>`、`>=`、`<`、`<=`
  * `contains`、`starts with`、`ends with`
  * `is one of`
  * `exists`、`is empty` — 仅取一个左操作数

### 操作数

每个子句将**左**操作数与**右**操作数进行比较(`exists` 和 `is empty` 除外,它们仅接受左操作数)。

操作数可以是:

* **工作流变量** — 点击 **Insert Variable** 引用起始输入(`{{variable_name}}`)或先前步骤的输出(`{{step_2.output.score}}`)。
* **字面值** — 直接在右侧字段中输入字符串、数字、布尔值或数组。

## 输出

点击步骤标题中的 **Run** 来测试 Condition。运行完成后,Fetch Hive 会在 **Output** 中显示评估的布尔结果以及解析的左/右操作数轨迹。

在实际的工作流运行期间,仅执行一个分支——即与布尔结果匹配的那个。该步骤的基础引用为:

```text theme={null}
{{STEP_IDENTIFIER.output}}
```

它会为希望引用分支决策本身的后续步骤解析为 `true` 或 `false`。

## 示例

从 **Search steps...** 的 **Utilities** 分组中添加 **Condition**。

将 **Name** 设置为类似 `Score above threshold` 的内容。

在 **Condition builder** 中:

1. 在左操作数上,点击 **Insert Variable** 并选择 `{{step_2.output.score}}`。
2. 选择 `>` 操作符。
3. 在右操作数上,选择 **Literal** 并输入 `70`。

点击 **Run** 以确认表达式按你预期的方式针对最后的测试输出进行评估。然后将“发送电子邮件”步骤添加到画布上的 **TRUE** 分支中,这样它只会在分数高于 70 时运行。**FALSE** 分支可以保持为空(它直接汇合到合并步骤),或者你可以添加一条替代路径。

{/* Add screenshot: Condition settings sheet with the expression builder */}

## 备注

* 表达式必须在保存前完整。每行都需要左和右操作数(`exists` / `is empty` 除外,它们仅取一个左操作数)。
* 评估器对看起来像数字的字符串比较宽松——比较 `"70"` 与 `70` 会按预期工作。
* 仅当两个分支都为空时才能移除 Condition。移除 Condition 会级联删除 TRUE 和 FALSE 分支内的每个步骤,所以如果你想保留这些步骤,请先清空分支。
* 两个分支必须汇合到单个合并步骤,工作流才有效。如果分支没有重新汇合,Fetch Hive 会显示警告。
* Condition 暂不能嵌套在另一个 Condition 分支内。

另见:[创建和编辑](../../creating-and-editing)、[测试与迭代](../../testing-and-iteration) 和 [错误处理](../../error-handling)
