Appearance
选择器节点
选择器节点是工作流中的条件路由节点。它按优先级依次判断“如果”和“否则如果”分支,只执行第一个满足条件的分支;所有条件分支都不满足时,执行固定存在的“否则”分支。
选择器本身不处理业务数据,也不在属性面板中提供可编辑的输出字段。它根据上游变量决定下一条执行路径,下游节点仍应引用实际产生数据的上游节点。
配置步骤
- 将选择器放在需要分流的位置,并为每条分支连接对应的下游节点。
- 在“如果”分支中选择上游变量、运算符和比较值。
- 同一分支需要多个判断时,单击“新增”,再选择“且”或“或”。
- 需要更多条件路径时,单击“条件分支”右侧的加号添加“否则如果”分支。
- 拖拽分支标题左侧的手柄调整优先级,并为“否则”分支保留明确的兜底处理。
- 分别使用能命中各分支和不能命中任何条件的输入进行试运行。

条件组成
每条条件由左值、运算符和右值组成:
| 组成 | 当前规则 |
|---|---|
| 左值 | 必须引用开始节点或前置节点的可用输出变量,不能直接填写固定值。 |
| 运算符 | 选择器提供等值、长度、包含、空值、布尔和数值比较共 16 个运算符。 |
| 右值 | 可以填写固定值,也可以通过变量按钮引用另一个变量;“为空”“不为空”“为 true”“为 false”无需填写。 |
| 右值类型 | 固定值应选择与业务数据一致的 String、Integer、Number、Boolean 等类型。引用变量时应保证两侧类型和语义可比较。 |
未选择左值时,运算符列表不会生效。除无需右值的四个运算符外,左值、运算符和右值都必须配置完整,否则无法形成有效判断。
多条件的“且”与“或”
同一分支添加两条及以上条件后,分支标题下方会出现组合方式:
- 且:所有条件都成立时,该分支才命中。
- 或:任意一条条件成立时,该分支即命中。
组合方式作用于当前分支内的全部条件。当前界面不提供任意层级的括号嵌套;若规则类似 (A 且 B) 或 (C 且 D),应拆成多个“否则如果”分支,或者先使用代码节点计算一个明确的布尔结果,再由选择器判断。
运算符与类型
选择器当前提供以下运算符:
| 运算符 | 适用值 | 判断方式 |
|---|---|---|
| 等于、不等于 | 同类型基础值、数组或对象 | 按实际 JSON 值比较;例如数字 1 与字符串 "1" 不相等。 |
| 包含、不包含 | 字符串、数组 | 字符串判断是否包含子串;数组判断是否包含与右值相等的元素。 |
| 为空、不为空 | 字符串、数组、对象或空值 | null、仅含空白的字符串、空数组和空对象视为空;数字 0 和布尔值 false 不为空。 |
| 为 true、为 false | Boolean | 只判断真正的布尔值;字符串 "true"、"false" 不会按布尔值处理。 |
| 大于、大于等于、小于、小于等于 | 数字或可解析为数字的字符串 | 转为数值后比较;仍建议两侧显式使用 Integer 或 Number,避免脏数据。 |
| 长度大于、长度大于等于、长度小于、长度小于等于 | 字符串、数组、对象 | 字符串按字符数、数组按元素数、对象按字段数比较,右值填写非负整数。 |
类型不匹配
界面不会根据左值类型自动隐藏所有不适用的运算符。对对象使用“包含”、对布尔值使用长度比较等不合理组合通常不会命中,而不是自动转换。配置后必须用真实类型的样例数据试运行。
分支优先级
选择器至少保留一个条件分支,并始终包含一个不能删除的“否则”分支。添加第二个条件分支后,界面显示“优先级 1”“优先级 2”等顺序,并允许拖拽调整。
运行时按照界面从上到下,也就是优先级数字从小到大的顺序依次判断:
- 首个条件成立的分支被选中。
- 选中后不再判断后续条件分支。
- 所有条件分支都不成立时,进入“否则”。

例如按订单金额分流:
amount >= 10000:进入人工复核。amount >= 1000:进入普通审批。- 否则:进入自动处理或异常提示。
如果把第二条放在第一条前面,金额为 10000 的订单会先命中“普通审批”,后面的“人工复核”不会再执行。因此,更具体、更严格的规则应排在更宽泛的规则之前。
分支连接与试运行
每个“如果”“否则如果”和“否则”在节点卡片右侧都有独立的输出连接点。配置条件后,还需要把实际使用的分支连接到对应下游节点;只配置条件但没有连接下游,不会自动执行其他分支中的节点。
试运行至少覆盖以下用例:
- 恰好命中优先级 1 的输入;
- 同时满足多个分支,用来确认只执行优先级最高的一个;
- 只命中后续“否则如果”的输入;
- 所有条件都不满足,确认进入“否则”;
null、空字符串、空数组、0、false等边界值;- 数字与数字字符串、布尔值与布尔字符串等类型不一致情况。
运行结果与预期不一致时,先核对实际输入值和数据类型,再检查分支顺序、组合方式以及每条分支的连线。
常见问题
为什么后面的分支从不执行?
选择器只执行第一个命中的条件分支。检查前面的规则是否过于宽泛、分支优先级是否正确,以及是否存在一个几乎始终成立的“不包含”或“不为空”条件。
为什么“为 true”没有命中字符串 "true"?
“为 true”和“为 false”只判断 Boolean。若上游返回字符串,应先修正上游输出类型,或使用代码节点把字符串转换为布尔值。
为什么“为空”没有命中 0 或 false?
0 和 false 都是有效值,不属于空值。“为空”用于判断 null、空白字符串、空数组和空对象。
比较值可以引用另一个节点的变量吗?
可以。单击右值区域的变量按钮选择可用变量,同时确认两侧类型、单位和业务含义一致。例如金额不能直接与未转换的日期字符串比较。
删除或拖动分支后需要重新连线吗?
当前编辑器会同步调整该选择器已有分支连接,但仍应检查画布上每条线的目标节点,并分别试运行各分支,避免删除分支后留下业务路径缺口。