Skip to content

子工作流转换(Sub-workflow conversion)#

功能可用性

自 n8n 版本 1.97.0 起,所有计划均可使用。

使用子工作流转换将你的工作流重构为可重用的部分。引用其他节点的表达式会自动更新,并作为参数添加到执行工作流触发器节点中。

🌐 Use sub-workflow conversion to refactor your workflows into reusable parts. Expressions referencing other nodes are automatically updated and added as parameters in the Execute Workflow Trigger node.

请参阅 子工作流 了解该概念的一般介绍。

🌐 See sub-workflows for a general introduction to the concept.

选择子工作流的节点(Selecting nodes for a sub-workflow)#

要将工作流的一部分转换为子工作流,你必须选择原始工作流中要转换的节点。

🌐 To convert part of a workflow to a sub-workflow, you must select the nodes in the original workflow that you want to convert.

通过选择一组有效节点来完成此操作。所选节点必须是连续的,并且必须最多从一个起始节点和一个结束节点连接到工作流的其余部分。所选节点必须满足以下条件:

🌐 Do this by selecting a group of valid nodes. The selection must be continuous and must connect to the rest of the workflow from at most one start node and one end node. The selection must fulfill these conditions:

  • 不得包含触发节点。
  • 在所选节点中,只有一个节点可以接收来自选区外部节点的连接。
    • 该节点可以有多个传入连接,但只能有一个输入分支(这意味着它不能是例如合并节点)。
    • 该节点不能有来自选择集中其他节点的入站连接。
  • 在所选节点中,只有一个节点可以有指向选区外部节点的连接。
    • 该节点可以有多个输出连接,但只能有一个输出分支(例如,它不能是一个 If 节点)。
    • 该节点不能有指向选择集中其他节点的出站连接。
  • 选择必须包含输入节点和输出节点之间的所有节点。

如何将工作流的一部分转换为子工作流(How to convert part of a workflow to a sub-workflow)#

在画布上选择所需的节点。右键点击画布背景,然后选择 转换为子工作流

🌐 Select the desired nodes on the canvas. Right-click the canvas background and select Convert to sub-workflow.

注意事项(Things to keep in mind)#

大多数子工作流转换都能正常工作,但有一些注意事项和限制需要牢记:

🌐 Most sub-workflow conversions work without issues, but there are some caveats and limitations to keep in mind:

  • 你必须手动为输入和输出设置类型约束:默认情况下,子工作流的输入和输出允许所有类型。你可以在子工作流的执行子工作流触发节点编辑字段(设置)节点中设置预期类型(标记为返回,仅在子工作流有输出时包含)。
  • 对 AI 节点的支持有限:在处理类似 AI 工具的子节点时,必须全部选择它们,并且在转换之前可能需要复制与其他 AI 代理共享的任何节点。
  • 使用 v1 执行顺序: 新的工作流使用 v1 执行顺序,不受父工作流设置影响——你可以在设置中将其更改回来。
  • first()last()all() 这样的访问器函数需要额外注意:使用这些函数的表达式不总是能顺利转换到子工作流上下文中。n8n 可能会进行转换以尝试保留其功能,但你应当检查它们在新上下文中是否按预期工作。

    子节点参数后缀

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

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