执行条件(Conditions)
Conditions 用于控制节点是否运行,是流水线里的轻量级守卫。它支持三类判断:
exist:要求上下文中必须存在某个键not_exist:要求上下文中不能存在某个键condition:布尔表达式(支持变量占位符)必须返回true
系统会依次校验这些字段,只要有一项不满足,节点就会被跳过并返回错误。
字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
exist | string | 需要存在的上下文键名,例如 find-btn.btn.png。若不存在则直接失败。 |
not_exist | string | 必须不存在的键名,用于阻止重复执行。若存在则失败。 |
condition | string | 布尔表达式;执行前会先进行变量替换,再用 evalexpr 求值,需返回 true。 |
同时声明多个字段时,校验顺序为:
exist→not_exist→condition。
变量占位符
condition 与 exist/not_exist 中的值都可以引用上下文变量,例如 ${find-btn.btn.png.x}。在校验阶段,系统会调用 parse_variables 把占位符替换为实际值,再进行判断。
YAML 示例
conditions:
exist: "find-submit.submit.png"仅当图像识别节点已经找到
submit.png时才继续执行。
conditions:
not_exist: "completed"如果上下文里已有
completed标记,则终止该节点,防止重复执行。
conditions:
exist: "find-input.input.png"
condition: "${find-input.input.png.x} > 500 && ${env} == \"prod\""既要求元素被识别到,也要求其 X 坐标大于 500 且当前环境为生产。
使用建议
- 优先用
exist/not_exist处理“元素是否存在”这类简单判断,性能更好。 - 布尔表达式必须返回
true/false;如果写成非布尔表达式,系统会抛出... is not boolean的错误。 - 当依赖于某个节点输出时,记得保持变量命名一致,例如
find-node.image.png。 - 若条件失败无需报错,可以把节点单独拆成一个 stage,再通过 stage 条件进行柔性控制。
最后更新于: