You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
10 KiB
10 KiB
任务执行监控
**本文档引用的文件** - [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)目录
项目结构
该任务执行监控系统是ABP框架中的一个模块,主要位于aspnet-core/modules/task-management目录下。系统由多个子模块组成,包括领域层、应用服务层和HTTP API层。
graph TD
subgraph "任务管理模块"
Domain[领域层]
Application[应用服务层]
HttpApi[HTTP API层]
EntityFrameworkCore[EF Core数据访问层]
end
Domain --> Application
Application --> HttpApi
EntityFrameworkCore --> Domain
图示来源
- BackgroundJobInfo.cs
- BackgroundJobInfoAppService.cs
章节来源
- BackgroundJobInfo.cs
核心组件
任务执行监控系统的核心组件包括任务信息实体(BackgroundJobInfo)、任务日志实体(BackgroundJobLog)、任务管理器(BackgroundJobManager)以及相应的应用服务。这些组件共同实现了任务的创建、执行、监控和日志记录功能。
章节来源
- BackgroundJobInfo.cs
- BackgroundJobLog.cs
架构概述
任务执行监控系统采用分层架构设计,主要包括数据存储层、领域层、应用服务层和API接口层。系统通过事件总线实现各组件间的解耦通信,确保了系统的可扩展性和可维护性。
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
- BackgroundJobInfoAppService.cs
详细组件分析
任务信息实体分析
任务信息实体(BackgroundJobInfo)是任务执行监控的核心数据模型,包含了任务的各种属性和状态信息。
类图
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 {
<<enumeration>>
None = -1
Completed = 0
Queuing = 5
Running = 10
FailedRetry = 15
Paused = 20
Stopped = 30
}
class JobType {
<<enumeration>>
Once
Persistent
Period
}
class JobSource {
<<enumeration>>
None
User
System
}
class JobPriority {
<<enumeration>>
Low
Normal
High
}
BackgroundJobInfo --> JobStatus : "包含"
BackgroundJobInfo --> JobType : "包含"
BackgroundJobInfo --> JobSource : "包含"
BackgroundJobInfo --> JobPriority : "包含"
图示来源
- BackgroundJobInfo.cs
- JobStatus.cs
章节来源
- BackgroundJobInfo.cs
任务日志实体分析
任务日志实体(BackgroundJobLog)用于记录任务执行过程中的详细信息,包括执行时间、消息和异常等。
类图
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
- BackgroundJobInfo.cs
章节来源
- BackgroundJobLog.cs
任务管理器分析
任务管理器(BackgroundJobManager)负责处理任务的生命周期管理,包括创建、更新、删除、启动、暂停等操作。
序列图
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
- BackgroundJobInfoAppService.cs
章节来源
- BackgroundJobManager.cs
应用服务分析
应用服务层提供了任务管理和日志查询的API接口,实现了业务逻辑与数据访问的分离。
序列图
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
- BackgroundJobLogAppService.cs
章节来源
- BackgroundJobInfoAppService.cs
依赖分析
任务执行监控系统与其他模块存在明确的依赖关系,通过事件总线实现松耦合的通信机制。
graph TD
TaskManagement[任务管理模块] --> EventBus[分布式事件总线]
TaskManagement --> EFCore[Entity Framework Core]
TaskManagement --> AbpFramework[ABP框架基础组件]
TaskManagement --> Hangfire[后台作业调度]
TaskManagement --> Quartz[定时任务]
EventBus --> Notification[通知模块]
EventBus --> AuditLogging[审计日志]
EventBus --> Telemetry[遥测监控]
图示来源
- BackgroundJobManager.cs
- go.mod
章节来源
- BackgroundJobManager.cs