条件分支 flow.condition
条件节点根据已经提交的数据选择一条控制路径。它适合订单状态、审核结果、计数阈值和上游任务结果等确定性判断。节点不会请求远程服务,也不会读取新的系统时间或随机值。需要外部信息时,应先用任务节点取得结果并写入历史,再让条件表达式读取该结果。
输入与表达式
input 保存当前待判断值,也可以通过数据端口由上游节点提供。expression 使用受限表达式读取启动输入、当前值或已保存结果。发布前要用真值、假值、缺失字段、空数组和异常类型分别验证,确保类型变化不会让分支含义漂移。复杂判断宜拆成若干具有业务名称的条件节点,便于从事件和图结构还原决定过程。
matched_label 与 otherwise_label 只改变画布文案,稳定端口仍是 matched 和 otherwise。修改标签不会改变摘要中的连接身份,修改表达式会改变执行语义。两条控制端口都应有明确去向。业务允许某一分支直接结束时,也要显式连接完成、失败、取消或超时节点。
接线与排查
入站控制边连接 in,可选数据边连接 value。条件为真时开放 matched,其余结果进入 otherwise。测试应检查每个分支最终可达终态,并确认没有从下游画回条件节点的回边。校验提示表达式路径有误时,先核对上游输出形状和字段路径,再查看连接到 value 的数据是否覆盖了节点内的 input。
用它根据工作流数据选择两条控制分支。条件可以读取输入或上游数据端口,分支名称只影响画布显示。
运行方式
条件在确定性的图执行阶段求值,不会调用宿主任务。表达式结果为真时进入 matched,其余情况进入 otherwise。
节点契约
- 类型
flow.condition- 角色
- 流程控制
- 运行绑定
宿主编译- 持久身份
- 由图结构决定
配置属性
| 属性 | 类型与控件 | 默认值 | 规则 |
|---|---|---|---|
input参与判断的值 | dictJSONInput | {} | 选择当前条件要读取的数据,也可以从上游节点连接。可选 · 高级设置 |
expression分支条件 | dictA3SFlowExpressionInput | {"apiVersion":"a3s.dev/flow-expression/v1","expression":{"op":"eq","left":{"op":"field","path":"input.approved"},"right":{"op":"literal","value":true}}} | 条件成立时进入“符合条件”分支,否则进入“其他情况”分支。必填 |
matched_label成立分支名称 | strStrInput | Matched | 修改画布连线上的分支名称,端口 ID 始终保持 matched。必填 |
otherwise_label其他分支名称 | strStrInput | Otherwise | 修改画布连线上的分支名称,端口 ID 始终保持 otherwise。必填 |
端口
| 方向 | 端口 ID | 种类 | 数据类型 |
|---|---|---|---|
| 输入 | in进入 | control | FlowControl |
| 输入 | value参与判断的值 | data | JsonValue |
| 输出 | matched符合条件 | control | FlowControl |
| 输出 | otherwise其他情况 | control | FlowControl |
节点 JSON 示例
CLI 会用 manifest 默认值生成同样的节点结构。画布位置、标题和选中状态属于展示数据。
CLI 用法
先查看当前安装版本的 manifest,再创建节点并验证完整工作流。所有命令输出 JSON。
Skill 用法
安装包内附带 a3s-flow Skill。它会先查询 CLI 的节点清单,再创建、校验、编译并计算语义摘要。
使用注意
- 表达式只读取已经持久化的数据。
- 不要在条件中读取时钟、随机数或远程状态。
- 两条控制分支都应连接到明确的后续节点。
