跳转到内容

if 步骤

If 选择恰好一个分支,不是“语言为 YAML 的脚本”。

字段必填、默认与合法值
id必填,合法且全局唯一。
if必填字符串条件,最终值需为布尔。字面 true/false 条件也需加引号成为字符串。
then必填非空条目序列。
else可选,存在时必须非空;省略表示 false 不执行。

条件支持引用、比较、!、&&、||、括号,不支持算术或真值字符串。在外围作用域执行,包括外层迭代/catch 别名。每个分支复制外层,可读之前外层结果,分支内后项可读前项。内部 ID 后续不可见,且两分支间仍必须唯一。

$id.output 为所选分支最后条目值。False 且没有 else 为 null。以 parallel 结束也为 null,因为 parallel 没有自身值;需汇总多个结果时添加最终脚本。没有包装级 retry/on_error 或 timeout。分支未处理错误导致整个工作流失败,应在可能失败的 script 上恢复。

使用隔离项目,账号需编辑/运行权限,执行节点需 Python/uv。以 scripts/wf_echo.py 创建脚本资产 wf_echo,完整源码如下,无资源或外部副作用:

def main(value):
return value

将下文完整 YAML 保存为 workflows/step_case.yaml,创建固定脚本后使用页尾命令。这是手工用例,不声称已执行。草稿测试用实时保存定义,公共绑定端点使用发布快照。

inputs:
enabled: {type: boolean, default: true}
steps:
- id: choose
if: '$inputs.enabled == true'
then:
- id: yes_value
script: wf_echo
args: {value: yes-branch}
else:
- id: no_value
script: wf_echo
args: {value: no-branch}
outputs:
value: $choose.output

默认输入返回 {"value":"yes-branch"};{"enabled":false} 返回 {"value":"no-branch"};删除 else 后 false 返回 {"value":null}。根 outputs 引用 $yes_value.output 非法,即使真实走过 true 分支。具体路径缺失会失败,不会当作 false。

终端窗口
viat script create --name wf_echo --language python --file scripts/wf_echo.py
viat workflow create case_if --file workflows/step_case.yaml
viat workflow test case_if --input '{}'
viat workflow update case_if --file workflows/step_case.yaml

已有共享固定脚本时不要重复创建。发布前检查结果与执行日志。一次性项目先移除绑定端点,再 viat workflow delete case_if,确认其他地方未用后才 viat script delete wf_echo。Test 不是离线,删除不撤销历史副作用。参见完整语法、表达式、错误和限制。