For AI agents: the complete documentation index is available at https://a3s-lab.github.io/Flow/llms.txt, the full documentation bundle is available at https://a3s-lab.github.io/Flow/llms-full.txt, and this page is available as Markdown at https://a3s-lab.github.io/Flow/nodes/child-workflow.md.
  • 简体中文
  • v1.1.0
  • 启动子工作流 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子工作流 IDstrStrInputchild在当前父运行中保持唯一。恢复或重试时请勿修改。必填
    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取消策略strDropdownInputrequest_cancellation父运行取消时,可以请求取消子工作流,也可以让它继续运行。必填 · 高级设置 · 可选值 request_cancellation, abandon

    spec 属性

    属性类型与控件规则
    namestring子工作流的稳定名称必填
    versionstring子工作流定义版本必填
    runtime.kindnative_ts | rust_embedded运行时类型必填
    runtime.entrypointstring运行时入口文件或注册键必填
    runtime.export_namestring入口导出的函数名必填
    runtime_build_idstring将运行固定到兼容构建可选

    端口

    方向端口 ID种类数据类型
    输入in进入controlFlowControl
    输出completed子工作流结束controlFlowControl
    输出outcome运行结果dataWorkflowTerminalOutcome

    节点 JSON 示例

    CLI 会用 manifest 默认值生成同样的节点结构。画布位置、标题和选中状态属于展示数据。

    workflow.json
    {
      "position": {
        "x": 320,
        "y": 160
      },
      "id": "example-flow-child-workflow",
      "data": {
        "child_id": "child",
        "spec": {
          "name": "workflow.child",
          "version": "0.1.0",
          "runtime": {
            "kind": "native_ts",
            "entrypoint": "workflows/child.ts",
            "export_name": "main"
          }
        },
        "input": {
          "apiVersion": "a3s.dev/flow-expression/v1",
          "expression": {
            "op": "field",
            "path": "input"
          }
        },
        "cancellation_policy": "request_cancellation",
        "type": "flow.child-workflow"
      }
    }

    CLI 用法

    先查看当前安装版本的 manifest,再创建节点并验证完整工作流。所有命令输出 JSON。

    Terminal
    a3s-flow node flow.child-workflow --pretty
    a3s-flow new flow.child-workflow --id example-flow-child-workflow --pretty
    a3s-flow validate workflow.json --pretty
    a3s-flow compile workflow.json --pretty
    a3s-flow digest workflow.json --pretty

    Skill 用法

    安装包内附带 a3s-flow Skill。它会先查询 CLI 的节点清单,再创建、校验、编译并计算语义摘要。

    Prompt
    Use $a3s-flow to add the "flow.child-workflow" node to workflow.json, connect valid ports, and validate the result.

    CLI 用法 · Skill 用法

    使用注意

    • 同一个 child_id 的 spec 与输入必须保持不变。
    • request_cancellation 会让父运行等待子项清理。
    • abandon 允许子运行脱离父项继续。