N8N中文教程
使用 n8n/Using_the_app/Understand_workflows

子工作流转换#

功能可用性 从 n8n 版本 1.97.0 起,所有计划均提供此功能。 使用子工作流转换功能,将你的工作流重构为可复用的部分。引用其他节点的表达式会自动更新,并作为参数添加到 Execute Workflow Trigger 节点中。 有关该概念的一般介绍,请参见 子工作流(sub-workflows)。

为子工作流选择节点#

要将部分工作流转换为子工作流,你需要在原始工作流中选择希望转换的节点。 通过选择一组有效的节点来完成此操作。所选节点必须是连续的,并且最多只能通过一个起始节点和一个结束节点与工作流的其余部分连接。选择必须满足以下条件:

  • 不能包含触发器节点(trigger nodes)。
  • 所选节点中,仅允许一个节点具有来自选区外节点的传入连接。
    • 该节点可以有多个传入连接,但只能有一个输入分支(input branch)(例如,不能是 Merge node)。
    • 该节点不能有来自选区内其他节点的传入连接。
  • 所选节点中,仅允许一个节点具有指向选区外节点的传出连接。
    • 该节点可以有多个传出连接,但只能有一个输出分支(output branch)(例如,不能是 If node)。
    • 该节点不能有指向选区内其他节点的传出连接。
  • 所选范围必须包含输入节点和输出节点之间的所有节点。

如何将工作流的一部分转换为子工作流#

在画布上选择所需的节点。右键单击画布背景,然后选择 Convert to sub-workflow(转换为子工作流)

需要注意的事项#

大多数子工作流转换可以正常进行,但仍有一些注意事项和限制需要了解:

  • 必须手动设置输入和输出的类型约束:默认情况下,子工作流的输入和输出允许所有类型。你可以在子工作流的 Execute Sub-workflow Trigger 节点 和 Edit Fields (set) 节点 中设置期望的类型(该字段标记为 Return,仅当子工作流有输出时才会包含)。

  • 对 AI 节点的支持有限:处理 AI 工具等子节点时,必须全部选中它们,并且在转换前可能需要复制那些被其他 AI Agent 共享的节点。

  • 使用 v1 执行顺序:无论父工作流的设置如何,新创建的子工作流都会使用 v1 执行顺序 —— 你可以在设置中将其改回。

  • 需谨慎处理 first()last()all() 等访问器函数:使用这些函数的表达式并不总能干净地迁移到子工作流上下文中。n8n 可能会尝试转换它们以保留原有功能,但你应该检查这些表达式在新的上下文中是否仍按预期工作。

子节点参数后缀

n8n 会为通过这些函数访问的变量名添加 _firstItem_lastItem_allItems 等后缀。这有助于保留原始表达式的信息,因为在子工作流上下文中,项目顺序可能会有所不同。

  • itemMatching 函数需要固定的索引值:使用 itemMatching 函数 时,不能使用表达式作为索引值,必须传入一个固定的数字。