启动子工作流 flow.child-workflow
单个子工作流节点启动并等待一个拥有独立输入、事件历史、信号和终态的运行。父运行先把子项请求写入历史,再由调度器创建或恢复子运行。子项解析后,父运行重新投递,并从完成端口取得真实终态。复杂业务可以用它把清楚的责任边界拆成可独立观测与恢复的过程。
身份与定义
child_id 在父运行内保持稳定,并与图节点 ID 一起固定父子关系。spec 包含工作流名称、版本、运行时类型、入口和可选构建路由。input 表达式生成子项启动数据。相同 child ID 再次重放时,spec 与输入必须保持一致,不能用同一身份启动另一套定义或不同业务对象。
cancellation_policy 选择 request_cancellation 时,父项取消会向子项发出取消请求,并等待其清理完成。选择 abandon 时,父项结束后子运行可以独立继续。使用 abandon 前要确认子项有独立所有者、访问路径和保留策略,避免运行失去可见责任方。
结果与故障处理
子项解析后,控制从 completed 继续,outcome 提供成功、失败、取消或超时结论。父图应检查终态再决定自己的结果,不能默认完成事件等于成功。测试需要覆盖重复启动、子项失败、父项取消、abandon、调度器重启、版本路由和结果体积。子项输出较大时返回对象引用,父项只保存继续判断所需信息。
用它启动一个拥有独立输入、历史、信号和终态的子工作流。父运行会等待子运行解析后再继续。
运行方式
节点 ID 和 child_id 固定父子关系。引擎先保存请求,再启动或恢复子运行,完成后开放 completed 与 outcome。
节点契约
- 类型
flow.child-workflow- 角色
- 持久运行命令
- 运行绑定
start_child_workflow- 持久身份
- 图节点 ID
配置属性
| 属性 | 类型与控件 | 默认值 | 规则 |
|---|---|---|---|
child_id子工作流 ID | strStrInput | child | 在当前父运行中保持唯一。恢复或重试时请勿修改。必填 |
spec子工作流定义 | dictA3SFlowSpecInput | {"name":"workflow.child","version":"0.1.0","runtime":{"kind":"native_ts","entrypoint":"workflows/child.ts","export_name":"main"}} | 填写子工作流的名称、版本和运行入口。启动后请勿修改。必填 |
input子工作流输入 | dictA3SFlowExpressionInput | {"apiVersion":"a3s.dev/flow-expression/v1","expression":{"op":"field","path":"input"}} | 选择子工作流启动时收到的数据。必填 |
cancellation_policy取消策略 | strDropdownInput | request_cancellation | 父运行取消时,可以请求取消子工作流,也可以让它继续运行。必填 · 高级设置 · 可选值 request_cancellation, abandon |
spec 属性
| 属性 | 类型与控件 | 规则 |
|---|---|---|
name | string | 子工作流的稳定名称必填 |
version | string | 子工作流定义版本必填 |
runtime.kind | native_ts | rust_embedded | 运行时类型必填 |
runtime.entrypoint | string | 运行时入口文件或注册键必填 |
runtime.export_name | string | 入口导出的函数名必填 |
runtime_build_id | string | 将运行固定到兼容构建可选 |
端口
| 方向 | 端口 ID | 种类 | 数据类型 |
|---|---|---|---|
| 输入 | in进入 | control | FlowControl |
| 输出 | completed子工作流结束 | control | FlowControl |
| 输出 | outcome运行结果 | data | WorkflowTerminalOutcome |
节点 JSON 示例
CLI 会用 manifest 默认值生成同样的节点结构。画布位置、标题和选中状态属于展示数据。
CLI 用法
先查看当前安装版本的 manifest,再创建节点并验证完整工作流。所有命令输出 JSON。
Skill 用法
安装包内附带 a3s-flow Skill。它会先查询 CLI 的节点清单,再创建、校验、编译并计算语义摘要。
使用注意
- 同一个 child_id 的 spec 与输入必须保持不变。
- request_cancellation 会让父运行等待子项清理。
- abandon 允许子运行脱离父项继续。
