N8N中文教程
使用 n8n/Key_concepts/Flow_logic

子工作流#

你可以从一个工作流中调用另一个工作流。这使得你可以构建模块化、类似微服务的工作流。当你的工作流变得过大并遇到内存问题时,这种方法也特别有用。创建子工作流需要使用 Execute Workflow 和 Execute Sub-workflow Trigger 节点。 子工作流的执行不计入你订阅计划中的每月执行次数或活跃工作流数量限制。

设置和使用子工作流#

本节将介绍如何设置父级工作流和子工作流。

创建子工作流#

  1. 创建一个新的工作流。

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

你也可以选择通过 Execute Sub-workflow 节点,直接从现有的父级工作流中创建子工作流。在该节点中,选择 DatabaseFrom list 选项,并在列表中选择 Create a sub-workflow

此外,还可以通过右键菜单中的 Sub-workflow conversion 功能,直接提取选中的节点生成子工作流。

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

    1. 点击 Options !Options menu 菜单 > Settings。n8n 将打开 Workflow settings(工作流设置)弹窗。
    2. 修改 This workflow can be called by(此工作流可被以下对象调用)设置。有关更多配置信息,请参考 工作流设置。
  2. 添加 Execute Sub-workflow Trigger 节点(如果你在触发器节点中搜索,它也被称为 When Executed by Another Workflow)。

  3. 设置 Input data mode(输入数据模式),以选择如何定义子工作流的输入数据:

    • Define using fields below(使用下方字段定义):选择此模式可定义调用工作流必须提供的各个输入名称和数据类型。调用工作流中的 Execute Sub-workflow node 或 Call n8n Workflow Tool node 将自动拉取此处定义的字段。
    • Define using JSON example(使用 JSON 示例定义):选择此模式,提供一个示例 JSON 对象,用于展示预期的输入项及其数据类型。
    • Accept all data(接受所有数据):选择此模式将无条件接受所有传入数据。子工作流不会定义任何必需的输入项。因此,该子工作流必须自行处理输入不一致或缺失值的情况。
  4. 根据需要添加其他节点,以实现子工作流的功能。

  5. 保存子工作流。

子工作流中不能包含错误 如果子工作流中存在错误,父工作流将无法触发它。

在构建前向子工作流加载数据 这需要具备从先前执行中加载数据的能力,该功能在 n8n Cloud 和已注册的 Community 计划中可用。 如果你想在构建子工作流时加载数据以供使用:

  1. 创建子工作流并添加 Execute Sub-workflow Trigger 节点。
  2. 将该节点的 Input data mode(输入数据模式) 设置为 Accept all data(接受所有数据),或者如果输入项已知,可通过字段或 JSON 明确定义。
  3. 在子工作流的设置中,将 Save successful production executions(保存成功的生产环境执行) 设为 Save(保存)
  4. 跳转至父工作流的配置,并运行父工作流。
  5. 按照步骤从先前执行中加载数据。
  6. 如有必要,调整 Input data mode(输入数据模式),使其与父工作流发送的输入相匹配。

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

调用子工作流#

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

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

  1. 填写子工作流所定义的必要输入项。
  2. 保存你的工作流。

当你的工作流执行时,它会将数据发送到子工作流并运行它。 你可以通过打开 Execute Sub-workflow 节点并点击 View sub-execution(查看子执行) 链接,从父工作流追踪到子工作流的执行流程。同样地,子工作流的执行记录中也包含一个返回父工作流执行的链接,以便反向导航。

工作流间的数据传递方式#

举例说明,假设你在 Workflow A(工作流 A) 中有一个 Execute Sub-workflow 节点,该节点调用了另一个名为 Workflow B(工作流 B) 的工作流:

  1. Execute Sub-workflow 节点将数据传递给 Workflow B 中的 Execute Sub-workflow Trigger 节点(在画布中显示为 “When executed by another node”)。
  2. Workflow B 的最后一个节点将数据返回给 Workflow A 中的 Execute Sub-workflow 节点。

子工作流转换#

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