Skip to content

Flow Block

引用并执行另一个文档,实现工作流的模块化复用和嵌套调用。

功能说明

Flow Block 是一个数据节点,它引用项目中的另一个文档(workflow 或 skill),在运行时加载该文档的内容并作为子流程执行。子文档的所有数据节点输出会被收集为 Flow Block 的输出变量,可在后续 Block 中引用。

当你需要复用已有的工作流逻辑、将复杂流程拆分为多个子模块、或在不同文档间建立调用关系时,使用 Flow Block。

使用场景

  • 工作流复用:将通用的处理逻辑(如数据清洗、格式化)封装为独立文档,在多个主工作流中通过 Flow Block 调用
  • 模块化编排:将大型工作流拆分为多个子文档,通过 Flow Block 按序或并行调用,降低单个文档的复杂度
  • fire-and-forget:触发一个后台任务而不等待其完成(await=false 模式),适用于不需要返回结果的异步操作

配置参数

属性名类型说明默认值
targetDocumentIdstring目标文档 ID(编辑时使用)''
targetDeploymentIdstring目标部署版本 ID(发布后使用固定版本)''
inputJSONstring传入子文档的输入参数(JSON 序列化的 Record<string, ValueSource>'{}'
awaitboolean是否等待子文档执行完成true

await 模式说明

行为
true等待子文档执行完毕,收集输出变量后继续
falsefire-and-forget 模式,触发后立即继续,不等待结果

输出变量

Flow Block 的输出变量根据目标文档中的数据节点动态生成:

变量名类型说明
__default__object包含子文档所有数据节点输出的对象,键为 blockName
{blockName}any子文档中每个数据节点的输出,按节点名称访问
{blockId}any子文档中每个数据节点的输出,按节点 ID 访问

await=false(fire-and-forget 模式)时,输出固定为 { __default__: null, status: 'fire-and-forget' }

引用语法

{{flow_0}}                     -- 子文档全部输出对象
{{flow_0.generation_0}}        -- 子文档中 generation_0 的输出
{{flow_0.structure_0.name}}    -- 子文档中 structure_0 输出的 name 字段

使用示例

示例 1:调用子文档并使用结果

将用户输入传入子文档处理,使用返回的结构化数据:

[Input Block: user_query] — 用户输入
    |
[Flow Block: analyze] — 目标: "数据分析" 文档
    输入: query = {{user_query}}
    |
[Generation Block] — "根据分析结果 {{analyze.structure_0}} 生成报告"

示例 2:fire-and-forget 后台任务

触发日志记录任务,不等待结果:

[Generation Block: main_result] — 主要处理逻辑
    |
[Flow Block] — 目标: "日志记录" 文档, await: false
    输入: content = {{main_result}}
    (后台执行,不阻塞主流程)
    |
[下一个 Block] — 立即继续执行

运行时约束

  • 适用文档类型:workflow(Slash 菜单中排除了 skill 类型文档)
  • 可插入上下文:顶层文档、Condition 分支、Loop 内、Promise 分支
  • 不可嵌套场景:无特殊限制,但存在调用深度保护

安全保护机制

保护说明
循环引用检测通过 callStack 追踪调用链,检测到循环时报错终止
单节点调用上限同一目标文档的调用次数超过阈值时报错(防止无限递归)
总调用上限整个执行过程中 Flow 总调用次数超过阈值时报错(防止过深嵌套)

注意事项

  1. 文档加载优先级:优先从预加载缓存(flowDocuments)读取目标文档。缓存未命中时,若有 deploymentId 则查询 deployments 表的 snapshot,否则查询 documents 表的实时内容
  2. 变量传递:通过 inputJSON 可以向子文档传入参数,子文档中可通过 Input Block 接收这些参数
  3. 循环引用:如果 A 文档调用 B、B 又调用 A,运行时会检测到循环并报错终止,不会无限递归
  4. 调用次数限制:系统对单节点调用次数和总调用次数都有上限保护,阈值从 site_settings 读取
  5. fire-and-forget 注意事项:await=false 模式下子文档在后台执行,其错误不会影响主流程,但也无法获取其执行结果
  6. 输出变量动态解析:编辑器中 Flow Block 的输出变量列表会根据目标文档的内容自动分析生成,无需手动定义

AI Workflow Editor