子工作流转换#
功能可用性
从 n8n 版本 1.97.0 开始,在所有计划中可用。
使用子工作流转换将您的工作流重构为可重用的部分。引用其他节点的表达式会自动更新并作为参数添加到执行工作流触发器节点中。
有关概念的一般介绍,请参阅子工作流。
为子工作流选择节点#
要将工作流的一部分转换为子工作流,您必须在原始工作流中选择要转换的节点。
通过选择一组有效节点来完成此操作。选择必须是连续的,并且必须最多从一个开始节点和一个结束节点连接到工作流的其余部分。选择必须满足以下条件:
- 不得包含触发器节点。
- 选择中只有一个节点可以具有来自选择外部节点的传入连接。
- 该节点可以有多个传入连接,但只能有一个输入分支(这意味着它不能是合并节点,例如)。
- 该节点不能有来自选择中其他节点的传入连接。
- 选择中只有一个节点可以具有到选择外部节点的传出连接。
- 该节点可以有多个传出连接,但只能有一个输出分支(它不能是If 节点,例如)。
- 该节点不能有到选择中其他节点的传出连接。
- 选择必须包括输入和输出节点之间的所有节点。
如何将工作流的一部分转换为子工作流#
在画布上选择所需的节点。右键单击画布背景并选择转换为子工作流。
需要记住的事项#
大多数子工作流转换都能正常工作,但有一些注意事项和限制需要记住:
- 您必须手动设置输入和输出的类型约束:默认情况下,子工作流输入和输出允许所有类型。您可以在子工作流的执行子工作流触发器节点和编辑字段(设置)节点中设置预期类型(标记为返回,仅在子工作流有输出时包含)。
- 对 AI 节点的有限支持:在处理子节点(如 AI 工具)时,您必须选择所有子节点,并且可能需要在转换之前复制与其他 AI 代理共享的任何节点。
- 使用 v1 执行顺序:无论父工作流的设置如何,新工作流都使用
v1
执行顺序 - 您可以在设置中将其更改回来。 -
访问器函数如
first()
、last()
和all()
需要额外注意:使用这些函数的表达式不总是能很好地转换到子工作流上下文中。n8n 可能会转换它们以尝试保持其功能,但您应该检查它们在新上下文中是否按预期工作。子节点参数后缀
n8n 向这些函数访问的变量名添加后缀,如
_firstItem
、_lastItem
和_allItems
。这有助于保留有关原始表达式的信息,因为项目顺序在子工作流上下文中可能不同。
itemMatching
函数需要固定索引:使用itemMatching
函数时,您不能为索引值使用表达式。您必须传递一个固定数字。