跳到主要内容

Execute Sub-workflow(执行子工作流)

使用 Execute Sub-workflow 节点,在运行 n8n 的主机上执行另一个工作流。

节点参数 ​

Source(来源) ​

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

  • Database(数据库):通过 ID 从数据库加载工作流,还需选择以下方式之一:
    • From list(从列表选择):从当前账户可用的工作流列表中选择。
    • Workflow ID(工作流 ID):输入工作流 ID,即 URL 中 /workflow/ 后面的部分。例如,工作流 URL 为 https://my-n8n-acct.app.n8n.cloud/workflow/abCDE1f6gHiJKL7 时,Workflow ID 为 abCDE1f6gHiJKL7。
  • Local File(本地文件):从本地保存的 JSON 文件加载工作流,还需填写:
    • Workflow Path(工作流路径):输入要执行的本地 JSON 工作流文件路径。
  • Parameter(参数):从参数加载工作流,还需填写:
    • Workflow JSON(工作流 JSON):输入要执行的 JSON 代码。
  • URL:从 URL 加载工作流,还需填写:
    • Workflow URL(工作流 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(等待子工作流完成)选项。开启时,主工作流等待子工作流完成后再继续下一步;关闭时,主工作流不等待,直接继续执行。

模板与示例 ​

浏览 Execute Sub-workflow 集成模板,或搜索所有模板

设置和使用子工作流 ​

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

创建子工作流 ​

  1. 创建一个新工作流。

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

    也可以使用 Execute Sub-workflow 节点,直接从现有父工作流创建子工作流。在节点中选择 Database(数据库) 和 From list(从列表选择) 选项,再在列表中选择 Create a sub-workflow(创建子工作流)。

    还可以通过上下文菜单中的 Sub-workflow conversion(子工作流转换),直接提取选中的节点。

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

    1. 选择 Options(选项) 选项菜单 菜单 > Settings(设置)。n8n 会打开 Workflow settings(工作流设置) 弹窗。
    2. 更改 This workflow can be called by(允许调用此工作流的工作流) 设置。有关配置工作流的更多信息,请参阅工作流设置。
  3. 添加 Execute Sub-workflow 触发器节点(在触发器节点中搜索时,也称为 When Executed by Another Workflow)。

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

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

  6. 保存子工作流。

信息

子工作流不得包含错误

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

信息

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

此操作需要加载以往执行数据的功能,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 末尾由字母和数字组成的字符串。

  4. 填写子工作流定义的必需输入项。

  5. 保存工作流。

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

要从父工作流跟踪到子工作流的执行流程,可以打开 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 节点。
本文为社区中文翻译。查看对应英文原文