# 任务执行监控 **本文档引用的文件** - [BackgroundJobInfo.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobInfo.cs) - [BackgroundJobLog.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobLog.cs) - [BackgroundJobManager.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobManager.cs) - [BackgroundJobInfoAppService.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN/Abp/TaskManagement/BackgroundJobInfoAppService.cs) - [BackgroundJobLogAppService.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN/Abp/TaskManagement/BackgroundJobLogAppService.cs) - [JobStatus.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Abstractions/LINGYUN/Abp/BackgroundTasks/JobStatus.cs) - [TaskManagementDbContextModelCreatingExtensions.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.EntityFrameworkCore/LINGYUN/Abp/TaskManagement/EntityFrameworkCore/TaskManagementDbContextModelCreatingExtensions.cs) ## 目录 1. [项目结构](#项目结构) 2. [核心组件](#核心组件) 3. [架构概述](#架构概述) 4. [详细组件分析](#详细组件分析) 5. [依赖分析](#依赖分析) ## 项目结构 该任务执行监控系统是ABP框架中的一个模块,主要位于`aspnet-core/modules/task-management`目录下。系统由多个子模块组成,包括领域层、应用服务层和HTTP API层。 ```mermaid graph TD subgraph "任务管理模块" Domain[领域层] Application[应用服务层] HttpApi[HTTP API层] EntityFrameworkCore[EF Core数据访问层] end Domain --> Application Application --> HttpApi EntityFrameworkCore --> Domain ``` **图示来源** - [BackgroundJobInfo.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobInfo.cs) - [BackgroundJobInfoAppService.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN/Abp/TaskManagement/BackgroundJobInfoAppService.cs) **章节来源** - [BackgroundJobInfo.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobInfo.cs) ## 核心组件 任务执行监控系统的核心组件包括任务信息实体(BackgroundJobInfo)、任务日志实体(BackgroundJobLog)、任务管理器(BackgroundJobManager)以及相应的应用服务。这些组件共同实现了任务的创建、执行、监控和日志记录功能。 **章节来源** - [BackgroundJobInfo.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobInfo.cs) - [BackgroundJobLog.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobLog.cs) ## 架构概述 任务执行监控系统采用分层架构设计,主要包括数据存储层、领域层、应用服务层和API接口层。系统通过事件总线实现各组件间的解耦通信,确保了系统的可扩展性和可维护性。 ```mermaid graph TB subgraph "前端界面" UI[管理界面] end subgraph "后端服务" API[HTTP API] Application[应用服务] Domain[领域模型] Data[数据存储] end UI --> API API --> Application Application --> Domain Domain --> Data EventBus[(事件总线)] --> Application EventBus --> Domain ``` **图示来源** - [BackgroundJobManager.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobManager.cs) - [BackgroundJobInfoAppService.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN/Abp/TaskManagement/BackgroundJobInfoAppService.cs) ## 详细组件分析 ### 任务信息实体分析 任务信息实体(BackgroundJobInfo)是任务执行监控的核心数据模型,包含了任务的各种属性和状态信息。 #### 类图 ```mermaid classDiagram class BackgroundJobInfo { +string Name +string Group +string Type +string Result +ExtraPropertyDictionary Args +JobStatus Status +bool IsEnabled +string Description +int LockTimeOut +DateTime BeginTime +DateTime? EndTime +DateTime? LastRunTime +DateTime? NextRunTime +JobType JobType +string Cron +JobSource Source +JobPriority Priority +int TriggerCount +int TryCount +int MaxTryCount +int MaxCount +int Interval +bool IsAbandoned +string NodeName +SetPeriodJob(cron) +SetOnceJob(interval) +SetPersistentJob(interval) +SetLastRunTime(lastRunTime) +SetNextRunTime(nextRunTime) +SetResult(result) +SetStatus(status) +SetPriority(priority) } class JobStatus { <> None = -1 Completed = 0 Queuing = 5 Running = 10 FailedRetry = 15 Paused = 20 Stopped = 30 } class JobType { <> Once Persistent Period } class JobSource { <> None User System } class JobPriority { <> Low Normal High } BackgroundJobInfo --> JobStatus : "包含" BackgroundJobInfo --> JobType : "包含" BackgroundJobInfo --> JobSource : "包含" BackgroundJobInfo --> JobPriority : "包含" ``` **图示来源** - [BackgroundJobInfo.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobInfo.cs) - [JobStatus.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.BackgroundTasks.Abstractions/LINGYUN/Abp/BackgroundTasks/JobStatus.cs) **章节来源** - [BackgroundJobInfo.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobInfo.cs) ### 任务日志实体分析 任务日志实体(BackgroundJobLog)用于记录任务执行过程中的详细信息,包括执行时间、消息和异常等。 #### 类图 ```mermaid classDiagram class BackgroundJobLog { +Guid? TenantId +string JobId +string JobName +string JobGroup +string JobType +string Message +DateTime RunTime +string Exception +SetMessage(message, ex) } BackgroundJobInfo "1" -- "0..*" BackgroundJobLog : "生成" ``` **图示来源** - [BackgroundJobLog.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobLog.cs) - [BackgroundJobInfo.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobInfo.cs) **章节来源** - [BackgroundJobLog.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobLog.cs) ### 任务管理器分析 任务管理器(BackgroundJobManager)负责处理任务的生命周期管理,包括创建、更新、删除、启动、暂停等操作。 #### 序列图 ```mermaid sequenceDiagram participant Client as "客户端" participant AppService as "应用服务" participant Manager as "任务管理器" participant Repository as "仓储" participant EventBus as "事件总线" Client->>AppService : 创建任务请求 AppService->>Manager : CreateAsync(jobInfo) Manager->>Repository : InsertAsync(jobInfo) Repository-->>Manager : 返回结果 Manager-->>AppService : 返回任务信息 AppService-->>Client : 返回响应 Client->>AppService : 启动任务请求 AppService->>Manager : QueueAsync(jobInfo) Manager->>EventBus : Publish JobStartEventData EventBus-->>Manager : 发布完成 Manager-->>AppService : 返回结果 AppService-->>Client : 返回响应 ``` **图示来源** - [BackgroundJobManager.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobManager.cs) - [BackgroundJobInfoAppService.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN/Abp/TaskManagement/BackgroundJobInfoAppService.cs) **章节来源** - [BackgroundJobManager.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobManager.cs) ### 应用服务分析 应用服务层提供了任务管理和日志查询的API接口,实现了业务逻辑与数据访问的分离。 #### 序列图 ```mermaid sequenceDiagram participant Client as "客户端" participant Controller as "API控制器" participant AppService as "应用服务" participant Repository as "仓储" Client->>Controller : GET /api/task-management/jobs/{id} Controller->>AppService : GetAsync(id) AppService->>Repository : GetAsync(id) Repository-->>AppService : 返回任务信息 AppService-->>Controller : 返回DTO Controller-->>Client : 返回JSON响应 Client->>Controller : GET /api/task-management/job-logs Controller->>AppService : GetListAsync(input) AppService->>Repository : GetListAsync(specification) Repository-->>AppService : 返回日志列表 AppService-->>Controller : 返回分页结果 Controller-->>Client : 返回JSON响应 ``` **图示来源** - [BackgroundJobInfoAppService.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN/Abp/TaskManagement/BackgroundJobInfoAppService.cs) - [BackgroundJobLogAppService.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN/Abp/TaskManagement/BackgroundJobLogAppService.cs) **章节来源** - [BackgroundJobInfoAppService.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Application/LINGYUN/Abp/TaskManagement/BackgroundJobInfoAppService.cs) ## 依赖分析 任务执行监控系统与其他模块存在明确的依赖关系,通过事件总线实现松耦合的通信机制。 ```mermaid graph TD TaskManagement[任务管理模块] --> EventBus[分布式事件总线] TaskManagement --> EFCore[Entity Framework Core] TaskManagement --> AbpFramework[ABP框架基础组件] TaskManagement --> Hangfire[后台作业调度] TaskManagement --> Quartz[定时任务] EventBus --> Notification[通知模块] EventBus --> AuditLogging[审计日志] EventBus --> Telemetry[遥测监控] ``` **图示来源** - [BackgroundJobManager.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobManager.cs) - [go.mod](file://aspnet-core/modules/task-management/go.mod) **章节来源** - [BackgroundJobManager.cs](file://aspnet-core/modules/task-management/LINGYUN.Abp.TaskManagement.Domain/LINGYUN/Abp/TaskManagement/BackgroundJobManager.cs)