菜单

工作流执行引擎

相关源文件

工作流执行引擎是n8n中负责执行工作流的核心组件。它处理执行的整个生命周期,从初始化到完成,包括管理执行状态、处理错误以及存储执行结果。

本文档侧重于执行引擎的内部架构和组件。有关工作流创建和编辑的信息,请参阅 用户界面。有关节点实现的信息,请参阅 节点系统

执行引擎概述

执行引擎负责

  1. 启动工作流执行(手动、计划或触发)
  2. 在其生命周期中管理执行状态
  3. 处理执行错误和重试
  4. 存储执行数据以备后续检索
  5. 提供用于监控和控制执行的 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工作流至关重要,因为它是工作流自动化平台的主干。