执行子工作流#
使用执行子工作流节点可以在运行 n8n 的主机上执行另一个不同的工作流。
节点参数#
来源#
选择节点获取子工作流信息的来源:
- 数据库:选择此选项从数据库按 ID 加载工作流。您还需要输入以下之一:
- 从列表选择:从您账户可用的工作流列表中选择工作流。
- 工作流 ID:输入工作流的 ID。工作流的 URL 中包含
/workflow/
后的 ID。例如,如果工作流 URL 是https://my-n8n-acct.app.n8n.cloud/workflow/abCDE1f6gHiJKL7
,则工作流 ID 为abCDE1f6gHiJKL7
。 - 本地文件:选择此选项从本地保存的 JSON 文件加载工作流。您还需要输入:
- 工作流路径:输入您希望节点执行的本地 JSON 工作流文件路径。
- 参数:选择此选项从参数加载工作流。您还需要输入:
- 工作流 JSON:输入您希望节点执行的 JSON 代码。
- URL:选择此选项从 URL 加载工作流。您还需要输入:
- 工作流 URL:输入您希望从中加载工作流的 URL。
工作流输入#
如果您使用数据库和从列表选择选项选择了子工作流,子工作流的输入项将自动显示,供您填写或映射值。
您可以选择移除请求的输入项,这种情况下子工作流将接收 null
作为该项的值。您还可以启用尝试转换类型,尝试自动将数据转换为子工作流项请求的类型。
如果子工作流的工作流输入触发器节点使用了"接受所有数据"输入数据模式,则不会显示输入项。
执行模式#
使用此参数控制节点的执行模式。可选选项包括:
- 一次性处理所有项目:将所有输入项目一次性传递给节点执行
- 为每个项目单独执行:依次为每个输入项目单独执行节点
节点选项#
该节点包含一个选项:等待子工作流完成。此选项可控制主工作流是否应在继续下一步之前等待子工作流完成(开启),或者主工作流是否无需等待继续执行(关闭)。
模板与示例#
设置并使用子工作流#
本节将逐步介绍如何设置父工作流和子工作流。
创建子工作流#
-
创建一个新工作流。
从现有工作流创建子工作流
您也可以选择使用执行子工作流节点直接从现有的父工作流创建子工作流。在该节点中,选择数据库和从列表选项,然后在列表中选择创建子工作流。
-
可选:配置哪些工作流可以调用该子工作流:
- 选择选项
菜单 > 设置。n8n 将打开工作流设置对话框。
- 更改可被以下工作流调用设置。有关配置工作流的更多信息,请参阅工作流设置。
- 选择选项
- 添加执行子工作流触发器节点(如果在触发器节点下搜索,该节点也名为当被其他工作流执行时)。
- 设置输入数据模式来选择如何定义子工作流的输入数据:
- 使用下方字段定义:选择此模式可定义调用工作流需要提供的各个输入名称和数据类型。执行子工作流节点或调用工作流中的调用n8n工作流工具节点会自动获取此处定义的字段。
- 使用JSON示例定义:选择此模式可提供一个示例JSON对象,展示预期的输入项及其类型。
- 接受所有数据:选择此模式可无条件接受所有数据。子工作流不会定义任何必需的输入项。此子工作流必须处理任何输入不一致或缺失值的情况。
- 根据需要添加其他节点以构建子工作流功能。
- 保存子工作流。
子工作流不能包含错误
如果子工作流中存在错误,父工作流将无法触发它。
在构建前将数据加载到子工作流中
这需要具备从先前执行加载数据的能力,该功能在n8n云和注册的社区计划中可用。
如果您想在构建子工作流时加载数据以供使用:
- 创建子工作流并添加执行子工作流触发器。
- 将节点的输入数据模式设置为接受所有数据,或者如果已知输入项,则使用字段或JSON定义输入项。
- 在子工作流设置中,将保存成功的生产执行设置为保存。
- 跳过设置父工作流的步骤,直接运行父工作流。
- 按照从先前执行加载数据的步骤操作。
- 如有必要,调整输入数据模式以匹配父工作流发送的输入。
现在您可以在触发器节点中固定示例数据,从而在配置工作流其余部分时使用真实数据。
调用子工作流#
- 打开需要调用子工作流的主工作流。
- 添加 Execute Sub-workflow 节点。
-
在 Execute Sub-workflow 节点中,设置要调用的子工作流。您可以选择通过 ID 调用工作流、从本地文件加载工作流、在节点中添加工作流 JSON 作为参数,或通过 URL 定位工作流。
查找工作流 ID
子工作流的 ID 是其 URL 末尾的字母数字字符串。
-
填写子工作流定义的必需输入项。
- 保存您的工作流。
当工作流执行时,它会将数据发送到子工作流并运行它。
您可以通过打开 Execute Sub-workflow 节点并选择 View sub-execution 链接来跟踪从父工作流到子工作流的执行流程。同样,子工作流的执行包含一个返回父工作流执行的链接,以便在相反方向导航。
工作流间的数据传递机制#
举个例子,假设您在工作流A中有一个"执行子工作流"节点。该节点会调用另一个名为工作流B的工作流:
- "执行子工作流"节点将数据传递给工作流B中的"执行子工作流触发器"节点(在画布中显示为"当被其他节点执行时")。
- 工作流B的最后一个节点会将数据传回工作流A中的"执行子工作流"节点。