n8n系列(6)高级功能:子工作流、表达式与代码节点

引言

在n8n的自动化工作流程中,随着业务需求的复杂度增加,我们常常需要更强大的功能来处理各种场景。本文将深入探讨n8n的三个高级功能:子工作流、表达式引擎和代码节点,这些功能能够帮助我们构建更加灵活、强大的自动化解决方案。

1. 子工作流设计与使用

子工作流(Sub-workflow)是n8n中一个强大的功能,它允许我们将一个工作流嵌套在另一个工作流中,实现模块化设计和代码复用。

1.1 子工作流的概念与优势

子工作流本质上是一个独立的工作流,可以被其他工作流调用。使用子工作流有以下几个主要优势:

  • 模块化设计:将复杂的工作流拆分为更小、更易管理的部分
  • 代码复用:常用功能可以封装为子工作流,在多个地方重复使用
  • 降低复杂度:主工作流更加简洁,易于理解和维护
  • 解决内存问题:当工作流变得非常大时,可能会遇到内存限制,拆分为子工作流可以缓解这个问题

1.2 创建子工作流

创建子工作流的步骤如下:

  1. 创建一个新的工作流
  2. 添加"Execute Sub-workflow Trigger"节点(在触发器节点中搜索"When Executed by Another Workflow")
  3. 配置输入数据模式:
    • Define using fields below:定义具体的输入字段和数据类型
    • Define using JSON example:通过JSON示例定义预期的输入项
    • Accept all data:无条件接受所有数据
  4. 添加其他节点构建子工作流的功能
  5. 保存子工作流

1.3 调用子工作流

在主工作流中调用子工作流的步骤:

  1. 在主工作流中添加"Execute Sub-workflow"节点
  2. 选择调用子工作流的方式:
    • 通过ID调用(子工作流的ID是其URL末尾的字母数字字符串)
    • 从本地文件加载工作流
    • 将工作流JSON作为参数添加到节点中
    • 通过URL定位工作流
  3. 填写子工作流定义的必要输入项
  4. 保存主工作流

1.4 数据在工作流之间的传递

数据在主工作流和子工作流之间的传递过程如下:

  1. "Execute Sub-workflow"节点将数据传递给子工作流的"Execute Sub-workflow Trigger"节点
  2. 子工作流处理数据并执行其逻辑
  3. 子工作流的最后一个节点将结果数据返回给主工作流的"Execute Sub-workflow"节点

1.5 子工作流应用场景

子工作流适用于以下场景:

  • 构建微服务式的工作流架构
  • 封装常用功能,如数据转换、API调用等
  • 处理大型工作流的内存限制问题
  • 团队协作开发,不同成员负责不同的子工作流

2. 表达式引擎与高级数据处理

n8n的表达式引擎是一个强大的工具,允许用户在工作流中执行动态数据映射和转换。

2.1 表达式基础

n8n表达式使用双花括号语法{ { }},可以在大多数节点的字段中使用。表达式可以:

  • 访问当前节点的输入数据
  • 访问之前节点的输出数据
  • 执行数学运算和字符串操作
  • 调用内置函数和方法

2.2 数据映射与表达式

数据映射是n8n中最常用的表达式功能之一,允许我们从一个节点的输出中提取数据并在另一个节点中使用。

基本语法:

  • 访问前一个节点的链接项:{ {$("").item}}
  • 访问当前节点的输入项:{ {$input.item}}

例如,如果前一个节点输出了包含用户信息的JSON数据,我们可以使用以下表达式提取用户名:

{
  {$("").item.json.name}}

2.3 内置函数与方法

n8n提供了许多内置函数和方法,可以在表达式中使用:

  • 日期和时间处理$now$today
  • 数据转换$json$binary
  • 工作流元数据$execution$workflow
  • 数据操作$items$jmespath

2.4 条件表达式

条件表达式允许我们基于特定条件动态设置值:

{
  {$input.item.json.status === "active" ? "用户活跃" : "用户不活跃"}}

2.5 高级数据处理技巧

  • 数组操作:使用mapfilter等方法处理数组数据
  • 对象操作:合并对象、提取特定属性
  • 字符串操作:拼接、分割、替换等
  • 数值计算:执行复杂的数学运算

<

你可能感兴趣的:(#,n8n,langchain,语言模型,人工智能,Agent,AI,n8n)