跳到主要内容

子工作流

你可以在一个工作流中调用另一个工作流,从而构建模块化的、类微服务的工作流结构。当你的工作流规模过大导致出现内存问题时,这也是一种有效的拆分方式。创建子工作流需要使用 Execute Workflow 和 Execute Sub-workflow Trigger 节点。

子工作流的执行次数不计入你方案的每月执行次数或活跃工作流数量上限。

设置并使用子工作流

本节介绍如何同时配置父工作流和子工作流。

创建子工作流

  1. 创建一个新工作流。

从现有工作流创建子工作流

你也可以直接通过 Execute Sub-workflow 节点在现有父工作流中创建子工作流。在节点配置中,选择 数据库从列表中,然后在列表里选择 创建子工作流

你也可以通过右键菜单中的子工作流转换功能,直接将选中的节点提取为子工作流。

  1. 可选:配置哪些工作流可以调用此子工作流:

    1. 点击 选项 选项菜单 菜单 > 设置,打开 工作流设置 弹窗。
    2. 修改 此工作流可被以下对象调用 设置。更多配置信息请参阅工作流设置。
  2. 添加 执行子工作流 触发器节点(在触发器节点搜索中,该节点也显示为 被另一个工作流执行时)。

  3. 设置 输入数据模式,选择如何定义子工作流的输入数据:

    • 使用下方字段定义:选择此模式,定义调用工作流需要提供的独立输入名称和数据类型。调用方的 Execute Sub-workflow 节点或 Call n8n Workflow Tool 节点会自动读取此处定义的字段。
    • 使用 JSON 示例定义:选择此模式,提供一个演示预期输入项及其类型的 JSON 对象示例。
    • 接受所有数据:选择此模式,无条件接受所有传入数据。子工作流不会定义任何必须提供的输入项,需自行处理输入不一致或缺失值的情况。
  4. 根据需要添加其他节点,完善子工作流功能。

  5. 保存子工作流。

子工作流不能包含错误

如果子工作流中存在错误,父工作流无法触发它。

在构建前向子工作流加载数据

此功能需要具备从历史执行中加载数据的能力,该功能在 n8n Cloud 和已注册的社区方案中可用。

如果你想在构建子工作流时先加载数据:

  1. 创建子工作流并添加 Execute Sub-workflow Trigger 节点。
  2. 将节点的 输入数据模式 设置为 接受所有数据,或在已知输入项的情况下通过字段或 JSON 进行定义。
  3. 在子工作流的设置中,将 保存成功的生产执行 改为 保存
  4. 跳至配置父工作流,并运行它。
  5. 按照步骤从历史执行中加载数据。
  6. 如有必要,调整 输入数据模式 以匹配父工作流发送的输入。

现在你可以在触发节点中固定示例数据,从而在配置工作流其余部分时使用真实数据进行开发。

调用子工作流

  1. 打开你想调用子工作流的父工作流。
  2. 添加 Execute Sub-workflow 节点。
  3. Execute Sub-workflow 节点中,设置要调用的子工作流。你可以通过 ID、从本地文件加载工作流、将工作流 JSON 作为节点参数传入,或通过 URL 指定目标工作流。

找到你的工作流 ID

子工作流的 ID 是其 URL 末尾的那串字母数字字符。

  1. 填写子工作流定义的必要输入项。

  2. 保存你的工作流。

执行工作流时,它会将数据发送给子工作流并触发其运行。

你可以通过打开 Execute Sub-workflow 节点并点击 查看子执行 链接,追踪从父工作流到子工作流的执行流程。同样,子工作流的执行记录中也包含指向父工作流执行记录的链接,方便双向导航。

数据如何在工作流之间传递

以一个具体例子来说明:工作流 A 中有一个 Execute Sub-workflow 节点,调用另一个名为 工作流 B 的工作流:

  1. Execute Sub-workflow 节点将数据传递给 工作流 B 中的 Execute Sub-workflow Trigger 节点(在画布中显示为「被另一个节点执行时」)。
  2. 工作流 B 的最后一个节点将数据返回给 工作流 A 中的 Execute Sub-workflow 节点。

子工作流转换

关于如何将现有工作流拆分为子工作流,请参阅子工作流转换。