N8N中文教程
集成节点/Built in_nodes/Core_nodes

执行子工作流#

使用“执行子工作流(Execute Sub-workflow)”节点可以在运行 n8n 的主机上执行另一个工作流。

节点参数#

源(Source)#

选择节点应从何处获取子工作流的信息:

  • 数据库(Database):选择此选项可从数据库中通过 ID 加载工作流。你还必须输入以下其中一项:
    • 从列表中选择(From list):从你的账户可用的工作流列表中选择目标工作流。
    • 工作流 ID(Workflow ID):输入工作流的 ID。工作流的 URL 在 /workflow/ 后包含该 ID。例如,如果某个工作流的 URL 是 https://my-n8n-acct.app.n8n.cloud/workflow/abCDE1f6gHiJKL7,则其 工作流 ID(Workflow ID)abCDE1f6gHiJKL7
  • 本地文件(Local File):选择此选项可从本地保存的 JSON 文件加载工作流。你还必须输入:
    • 工作流路径(Workflow Path):输入你希望节点执行的本地 JSON 工作流文件的路径。
  • 参数(Parameter):选择此选项可从参数中加载工作流。你还必须输入:
    • 工作流 JSON(Workflow JSON):输入你希望节点执行的 JSON 代码。
  • URL:选择此选项可从 URL 加载工作流。你还必须输入:
    • 工作流 URL(Workflow URL):输入你要从中加载工作流的 URL。

工作流输入(Workflow Inputs)#

如果你使用 数据库(database)从列表中选择(From list) 选项来选择子工作流,子工作流的输入项将自动显示,供你填写或映射值。

你可以选择性地删除请求的输入项,此时子工作流将接收到 null 作为该项的值。你还可以启用 尝试转换类型(Attempt to convert types),以尝试自动将数据转换为子工作流所请求的数据类型。

如果子工作流的“工作流输入触发器(Workflow Input Trigger)”节点使用了“接受所有数据(Accept all data)”输入模式,则输入项不会显示。

模式(Mode)#

使用此参数控制节点的执行模式。可选择以下选项:

  • 对所有项目仅运行一次(Run once with all items):将所有输入项目传递给节点的一次执行中。
  • 每个项目各运行一次(Run once for each item):依次对每个输入项目单独执行一次节点。

节点选项#

该节点包含一个选项:等待子工作流完成(Wait for Sub-Workflow Completion)。此选项用于控制主工作流是否应在继续下一步之前等待子工作流执行完成(开启状态),或是否应不等待子工作流直接继续执行(关闭状态)。

模板与示例#

无需任何第三方 API 即可从 Google Maps 抓取企业邮箱 作者:Akram Kadri 查看模板详情

将你的 n8n 工作流备份到 GitHub 作者:Jonathan 查看模板详情

使用 n8n、Apify 和 OpenAI o3 自建 AI 深度研究代理 作者:Jimleuk 查看模板详情

浏览“执行子工作流”集成模板,或 搜索所有模板

设置并使用子工作流#

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

创建子工作流#

  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 设置项。更多关于工作流配置的信息,请参考 工作流设置(Workflow settings)。
  2. 添加 Execute Sub-workflow 触发节点(如果你在触发器节点中搜索,它也被称为 When Executed by Another Workflow)。

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

    • Define using fields below:选择此模式可定义调用工作流需要提供的各个输入字段名称和数据类型。调用工作流中的 Execute Sub-workflow 节点 或 Call n8n Workflow Tool 节点 将自动拉取此处定义的字段。
    • Define using JSON example:选择此模式,提供一个示例 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 节点。