工作流执行引擎
相关源文件
工作流执行引擎是n8n中负责执行工作流的核心组件。它处理执行的整个生命周期,从初始化到完成,包括管理执行状态、处理错误以及存储执行结果。
本文档侧重于执行引擎的内部架构和组件。有关工作流创建和编辑的信息,请参阅 用户界面。有关节点实现的信息,请参阅 节点系统。
执行引擎概述
执行引擎负责
- 启动工作流执行(手动、计划或触发)
- 在其生命周期中管理执行状态
- 处理执行错误和重试
- 存储执行数据以备后续检索
- 提供用于监控和控制执行的 API
来源
- packages/cli/src/executions/execution.service.ts
- packages/cli/src/workflow-runner.ts
- packages/@n8n/db/src/repositories/execution.repository.ts
执行生命周期
n8n中的工作流执行在其生命周期中会经历几个状态
来源
- packages/@n8n/db/src/entities/types-db.ts:8-9
- packages/cli/src/executions/execution.service.ts:447-449
核心组件
ExecutionService
ExecutionService 是管理执行的主要入口点。它提供了以下方法:
- 创建新执行
- 查找和检索执行数据
- 停止正在运行的执行
- 重试失败的执行
- 删除执行
来源
- packages/cli/src/executions/execution.service.ts:97-497
Execution Repository
ExecutionRepository 负责执行数据的持久化,包括:
- 存储执行元数据和结果
- 检索具有过滤和分页的执行
- 更新执行状态
- 管理执行数据清理
来源
- packages/@n8n/db/src/repositories/execution.repository.ts:128-582
Active Executions
ActiveExecutions 类在内存中跟踪所有正在运行的执行。它提供了以下方法:
- 将新执行添加到跟踪系统
- 移除已完成的执行
- 停止正在运行的执行
- 检索有关活动执行的信息
来源
- packages/cli/src/active-executions.ts
Workflow Runner
WorkflowRunner 负责工作流的实际执行。它:
- 初始化执行上下文
- 按正确的顺序执行节点
- 处理节点执行结果
- 管理执行数据
来源
- packages/cli/src/workflow-runner.ts
执行数据模型
执行数据模型由几个相关的实体组成:
来源
- packages/@n8n/db/src/entities/types-db.ts:39-55
- packages/@n8n/db/src/entities/execution-entity.ts
- packages/@n8n/db/src/entities/execution-data.ts
- packages/@n8n/db/src/entities/execution-metadata.ts
- packages/@n8n/db/src/entities/execution-annotation.ts
执行过程
启动执行
当工作流执行被触发(手动、计划或由外部事件触发)时,会发生以下过程:
来源
- packages/cli/src/executions/execution.service.ts:238-246
- packages/cli/src/workflow-runner.ts
执行流程
在执行过程中,工作流引擎根据节点之间的连接,按正确的顺序处理节点。
来源
- packages/cli/src/workflow-runner.ts
停止执行
执行可以由用户或系统停止。
来源
- packages/cli/src/executions/execution.service.ts:423-484
执行查询和过滤
执行引擎提供了强大的执行查询和过滤功能。
来源
- packages/cli/src/executions/execution.service.ts:350-410
- packages/@n8n/db/src/repositories/execution.repository.ts:76-117
- packages/@n8n/db/src/entities/types-db.ts:159-206
执行重试机制
执行引擎支持重试失败的执行。
来源
- packages/cli/src/executions/execution.service.ts:134-246
执行存储和清理
执行引擎包含用于管理执行数据存储和清理的机制。
来源
- packages/@n8n/db/src/repositories/execution.repository.ts:328-357
- packages/@n8n/db/src/repositories/execution.repository.ts:505-581
前端集成
执行引擎提供了前端使用的 API,用于显示执行信息。
来源
- packages/frontend/editor-ui/src/stores/executions.store.ts
- packages/frontend/editor-ui/src/components/executions/ExecutionsFilter.vue
- packages/frontend/editor-ui/src/components/executions/global/GlobalExecutionsListItem.vue
- packages/frontend/editor-ui/src/components/executions/workflow/WorkflowExecutionsCard.vue
Execution Annotations
执行引擎支持使用标签和投票来注解执行,这些可以用于过滤和组织。
来源
- packages/cli/src/executions/execution.service.ts:498-534
- packages/frontend/editor-ui/src/components/executions/ExecutionsFilter.vue:264-296
并发控制
执行引擎包含并发控制机制,用于管理同时执行的数量。
来源
- packages/cli/src/executions/execution.service.ts:458-461
- packages/cli/src/concurrency/concurrency-control.service.ts
错误处理
执行引擎包含强大的错误处理机制。
来源
- packages/cli/src/errors/aborted-execution-retry.error.ts
- packages/cli/src/errors/missing-execution-stop.error.ts
- packages/cli/src/executions/execution.service.ts:152-154
结论
工作流执行引擎是一个复杂的系统,负责管理n8n中工作流执行的整个生命周期。它提供了强大的机制来启动、监控、控制和分析工作流执行,并支持错误处理、重试和并发控制。
理解执行引擎对于开发和调试n8n工作流至关重要,因为它是工作流自动化平台的主干。