n8n 工作流执行是 n8n 自动化的心脏。无论你是在开发阶段调试工作流,还是让它在生产环境中自动运行,理解执行的方式至关重要。本教程将带你从零开始,深入掌握 n8n 的各种执行模式、调试技巧,以及如何管理和优化工作流执行。
什么是执行(Execution)?
执行就是工作流的一次运行。每次工作流从开始到结束的完整流程,n8n 都会记录下来。你可以查看每次执行的详细信息,包括数据流、错误信息、执行时长等。
n8n 提供了两种执行模式:
1. 手动执行(Manual Execution)
- 使用场景:开发和测试时使用
- 触发方式:点击”Execute Workflow”按钮手动运行
- 特点:
- 只在你明确点击按钮时才执行
- 非常适合逐步测试工作流逻辑
- 可以测试条件分支、数据格式变化、循环行为等
- 支持数据钉住(Pinning),可以”冻结”某个节点的输出数据
2. 生产执行(Production Execution)
- 使用场景:真实生产环境,自动化处理
- 触发方式:配置触发器(任何非手动触发的触发器),然后将工作流设置为”Active”
- 特点:
- 根据触发条件自动运行(如定时触发、事件触发等)
- 执行过程不显示在编辑器中
- 所有执行数据记录在”Executions”选项卡中
- 忽略所有钉住的数据
工作流级别的执行列表
在工作流中选择 Executions 选项卡,你可以看到该工作流的所有执行记录。
如何筛选执行?
- 点击 Filters 按钮
- 按以下条件筛选:
- Status(状态):Failed(失败)、Running(运行中)、Success(成功)、Waiting(等待)
- Execution start(执行开始时间):查看特定时间段的执行
- Saved custom data(自定义数据):按你在工作流中添加的自定义数据筛选
全局执行列表
在 n8n 首页点击 Executions 选项卡,你可以看到整个 n8n 实例所有工作流的执行记录。这对于监控所有自动化任务非常有用。
手动执行(Manual Execution)
核心特性:让你在开发过程中快速迭代测试
使用场景示例:
- 新增了一个节点,需要测试它是否正确处理数据
- 修改了条件逻辑,需要用不同的输入数据进行测试
- 想快速验证 API 连接是否工作正常
部分执行(Partial Execution)
核心特性:只运行工作流的一部分,而不是整个流程
如何使用:
- 选择你想执行的节点
- 打开其详细视图
- 点击 Execute step 按钮
- n8n 将执行该节点及其所有前置节点(用以填充该节点的输入数据)
为什么要用部分执行?
- 效率:不用每次都重新调用外部 API
- 快速迭代:快速测试某个节点的逻辑变化
- 成本:避免不必要的 API 调用
常见错误及解决方案:
- “目标节点未连接任何触发器”
- 原因:部分执行需要一个触发器来模拟工作流何时运行
- 解决:添加一个手动触发器到你的工作流
- “请执行整个工作流,而不是单个节点(现有执行数据过大)”
- 原因:工作流分支过多,超过了部分执行允许的消息大小
- 解决:使用 Limit 节点限制输出数据量
生产执行(Production Execution)
核心特性:在真实场景中自动运行
配置步骤:
- 添加一个触发器节点(例如:Schedule、Webhook、On File Event 等)
- 将工作流的状态设置为 Active
- 工作流现在会根据触发条件自动执行
重要提示:
- 生产执行忽略所有钉住的数据
- 所有执行都被记录在 Executions 选项卡中
- 可以使用”Debug in editor”功能调试失败的生产执行
什么是脏节点?
脏节点是指那些曾经成功执行过,但现在输出数据被认为”过期”或”不可靠”的节点。在画布上,脏节点会显示一个黄色三角形而不是绿色勾号。
n8n 为什么标记节点为脏?
以下操作会导致节点被标记为脏:
- 插入或删除节点:后续节点会被标记为脏
- 修改节点参数:该节点被标记为脏
- 添加新连接:目标节点被标记为脏
- 停用节点:后续节点被标记为脏
- 取消钉住数据:该节点被标记为脏
- 修改钉住数据:后续节点被标记为脏
如何解决脏节点?
方法很简单——重新执行该节点!
你可以:
- 点击 Execute step 按钮执行该节点
- 或执行整个工作流
- 脏状态会自动清除
什么是数据钉住?
数据钉住让你可以”冻结”某个节点的输出数据。在后续执行中,n8n 会跳过该节点的执行,直接使用钉住的数据继续流程。
为什么要用数据钉住n8n 工作流 教程?
如何钉住数据?
- 在工作流编辑器中选择一个节点
- 查看右侧面板的输出数据
- 点击 Pin data 按钮
- 数据被钉住后,会看到一个图钉图标
重要:生产环境忽略钉住数据
当工作流处于 Active(生产环境)时,所有钉住的数据都会被忽略。只有在手动执行和开发时,钉住的数据才会起作用。
调试失败的生产执行
n8n 提供了强大的调试功能,让你可以在编辑器中重新运行过去的失败执行。
步骤:
- 在工作流中打开 Executions 选项卡
- 找到你想调试的失败执行
- 点击 Debug in editor 按钮
- n8n 会:
- 将该执行的数据加载到当前工作流
- 在第一个节点钉住这些数据
- 让你在编辑器中重新运行工作流
- 修改工作流逻辑来修复问题
- 再次执行测试修复是否有效
重新运行成功的执行
有时你想用之前成功的执行数据来验证新的逻辑:
- 在 Executions 列表中选择一个成功的执行
- 点击 Copy to editor
- 数据会被加载到你的编辑器中
- 现在你可以修改工作流并用这些真实数据进行测试
重试失败的执行
有两种重试方式:
方式1:用当前保存的工作流重试
- 使用当前版本的工作流逻辑
- 使用原始执行的数据
- 场景:你已修复工作流,想用相同的输入数据验证修复
方式2:用原始工作流重试
- 使用原始的工作流版本
- 使用原始执行的数据
- 场景:你想重新运行看是否偶然成功(例如处理临时的 API 问题)
什么是自定义执行数据?
你可以在工作流运行时添加自定义元数据,n8n 会将其记录下来。这些数据可以用于:
- 筛选执行列表
- 在工作流中查询和使用
如何添加自定义执行数据?
使用 Code 节点:
限制条件
- 键名称最大长度:50 个字符
- 值的最大长度:255 个字符
- 最多可添加:10 个自定义数据项
- 所有值必须是字符串
如何查询自定义数据?
在工作流中使用 Code 节点访问:
在执行列表中使用
在筛选功能中:
- 点击 Filters
- 选择 Saved custom data
- 输入键和值来筛选
- 例如:筛选所有 为 的执行
何时使用调试功能?
调试功能特别有用于:
- 生产故障排查:一个自动化工作流在生产中失败了
- 数据流检查:想查看数据在每个节点是如何变化的
- 条件逻辑验证:验证条件判断是否正确
- API 响应分析:检查外部 API 返回的是什么
调试流程
- 找到失败的执行
- 点击 Debug in editor
- 工作流会进入”调试模式”
- 你可以:
- 看到每个节点的输出
- 修改节点配置
- 单步执行(使用 Execute step)
- 修改钉住的数据来测试不同场景
调试技巧
案例介绍
我们将创建一个”天气数据收集器”工作流,演示以下概念:
- 手动执行测试
- 部分执行使用
- 自定义执行数据
- 生产执行配置
工作流说明
这个工作流会:
- 定期获取指定城市的天气数据
- 添加自定义标签(城市、优先级)
- 根据温度条件触发不同的处理逻辑
- 记录执行详情
工作流 JSON 代码
将以下代码复制到你的 n8n 中(菜单 → Import from Clipboard):
使用这个工作流的步骤
- 导入工作流
- 复制上面的 JSON 代码
- 在 n8n 中点击”Create Workflow”
- 选择”Import from Clipboard”
- 粘贴 JSON 代码,点击导入
- 测试工作流(手动执行)
- 点击”Execute Workflow”按钮
- 观察数据流过每个节点
- 查看 Process Data 节点的输出,确认温度和湿度正确解析
- 测试单个节点(部分执行)
- 选择”Get Weather Data”节点
- 点击”Execute step”
- 查看 API 返回的原始数据
- 无需重新请求 API,快速迭代测试
- 查看执行历史
- 点击”Executions”选项卡
- 过滤查看不同的执行
- 点击某个执行,查看自定义数据标记
- 激活生产模式
- 确保工作流配置正确
- 点击工作流名称旁边的”Active”开关
- 工作流现在会每 30 分钟自动运行一次
- 在 Executions 选项卡中实时监控执行
工作流详解
Q1:手动执行和生产执行的数据会混在一起吗?
A:不会。n8n 会分别记录所有执行,但在 Executions 列表中都能看到。你可以通过时间戳和其他信息区分。
Q2:钉住的数据在生产环境中不会被使用,这是为什么?
A:为了确保生产稳定性。生产环境必须始终从真实的触发条件开始执行,而不是依赖你在开发时钉住的测试数据。
Q3:如何快速找到失败的执行?
A:使用 Filters 功能:
- 打开 Executions 选项卡
- 点击 Filters
- 选择 Status = Failed
- 可选:添加时间范围过滤
Q4:能否在工作流中访问当前的执行 ID?
A:可以的,使用特殊变量 。例如在 Code 节点中:
Q5:脏节点会影响生产执行吗?
A:不会。脏节点标记是针对开发环境的。生产执行按照当前保存的工作流配置完整运行,不受脏节点标记影响。
官方文档
n8n 系列教程
发布者:Ai探索者,转载请注明出处:https://javaforall.net/250474.html原文链接:https://javaforall.net
