开始 flow.start
开始节点定义一张顶层图怎样被识别和启动。每个可执行工作流只保留一个开始节点,并且不接收入站控制边。next 把控制交给第一个业务节点,input 则把已经通过输入结构检查的启动数据提供给后续表达式。容器内部使用各自的内部入口,不再放置开始节点。
身份与运行入口
workflow_name 是长期稳定的业务身份,workflow_version 用于区分不兼容的定义。runtime_kind、entrypoint 和 export_name 共同告诉宿主到哪里加载工作流函数。发布前应确认入口真实存在,导出名称与构建产物一致,并且负责该版本的 worker 已经上线。已有运行依赖旧入口时,需要保留兼容构建与路由,不能直接覆盖后再移除旧代码。
input_schema 只声明工作流确实读取的字段。宽松结构便于试验,但生产发布应明确必填项、数据类型和嵌套对象,避免错误输入走到持久步骤以后才失败。run_id_expression 可以从订单号、任务号等稳定输入生成运行 ID。表达式为空时由宿主分配身份,有值时重复启动请求可以命中同一个运行。
接线与发布检查
开始节点通常先连接条件、任务或容器。数据边应从 input 接到接受兼容 JSON 值的端口,控制边从 next 接到目标的 in。画布标题和位置可以随编辑调整,节点 ID、工作流名称和版本在创建运行后应保持稳定。发布检查还要覆盖输入样例、重复启动、缺失入口、旧 worker 路由和第一条控制边,确认图不会从未连接的入口停住。
每张可执行图都从这个节点进入。它固定工作流名称、版本、输入结构和运行入口,并把启动输入交给后续节点。
运行方式
开始节点参与发布校验,不会生成运行命令。运行 ID 表达式有值时,宿主可以用同一业务身份安全重试启动请求。
节点契约
- 类型
flow.start- 角色
- 入口
- 运行绑定
宿主编译- 持久身份
- 由图结构决定
配置属性
| 属性 | 类型与控件 | 默认值 | 规则 |
|---|---|---|---|
workflow_name工作流 ID | strStrInput | workflow.main | 用于查找这份工作流。发布后请保持不变,已有运行仍会使用原 ID。必填 |
workflow_version工作流版本 | strStrInput | 0.1.0 | 执行逻辑无法兼容旧运行时,请创建新版本。进行中的运行仍使用启动时的版本。必填 |
input_schema输入字段 | dictA3SFlowSchemaInput | {"type":"object","additionalProperties":true} | 定义启动工作流时允许传入的字段、类型和必填项。必填 |
runtime_kind运行方式 | tabTabInput | native_ts | 选择工作流代码的执行环境。必填 · 高级设置 · 可选值 native_ts, rust_embedded |
entrypoint入口文件 | strStrInput | workflows/main.ts | 填写 TypeScript 文件路径,或嵌入式运行时中注册的入口键。必填 · 高级设置 |
export_name导出函数 | strStrInput | main | 填写入口文件导出的工作流函数名。必填 · 高级设置 |
run_id_expression运行 ID | dictA3SFlowExpressionInput | {"apiVersion":"a3s.dev/flow-expression/v1","expression":{"op":"literal","value":null}} | 用于拦截重复启动。留空时自动生成;填写时请选择能唯一标识一次业务请求的输入字段。可选 · 高级设置 |
端口
| 方向 | 端口 ID | 种类 | 数据类型 |
|---|---|---|---|
| 输出 | next继续 | control | FlowControl |
| 输出 | input工作流输入 | data | JsonValue |
节点 JSON 示例
CLI 会用 manifest 默认值生成同样的节点结构。画布位置、标题和选中状态属于展示数据。
CLI 用法
先查看当前安装版本的 manifest,再创建节点并验证完整工作流。所有命令输出 JSON。
Skill 用法
安装包内附带 a3s-flow Skill。它会先查询 CLI 的节点清单,再创建、校验、编译并计算语义摘要。
使用注意
- 一张顶层图只保留一个开始节点。
- 已有运行后不要修改工作流名称或版本。
- 输入结构应只声明工作流真正读取的字段。
