跳到主要内容

子工作流

可以从一个工作流调用另一个工作流,将其作为流程逻辑的一部分,构建类似微服务的模块化工作流。当工作流过大而遇到内存问题时,这种方式也有帮助。创建子工作流会用到 Execute Workflow 和 Execute Sub-workflow Trigger 节点。

子工作流执行不计入套餐的每月执行次数限额或活跃工作流数量限额。

设置和使用子工作流 ​

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

创建子工作流 ​

  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 节点。

子工作流转换 ​

将现有工作流拆分为子工作流的方法,请参阅子工作流转换。

相关资源 ​

本文为社区中文翻译。查看对应英文原文