|
| 1 | +# 任务API |
| 2 | + |
| 3 | +<cite> |
| 4 | +**本文档中引用的文件** |
| 5 | +- [CommonTaskController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskController.java) |
| 6 | +- [CommonTaskScheduleController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskScheduleController.java) |
| 7 | +- [CommonTaskService.java](file://datavines-server/src/main/java/io/datavines/server/repository/service/CommonTaskService.java) |
| 8 | +- [CommonTaskScheduleService.java](file://datavines-server/src/main/java/io/datavines/server/repository/service/CommonTaskScheduleService.java) |
| 9 | +- [CommonTaskScheduleCreateOrUpdate.java](file://datavines-server/src/main/java/io/datavines/server/api/dto/bo/task/CommonTaskScheduleCreateOrUpdate.java) |
| 10 | +- [CommonTask.java](file://datavines-server/src/main/java/io/datavines/server/repository/entity/CommonTask.java) |
| 11 | +- [CommonTaskSchedule.java](file://datavines-server/src/main/java/io/datavines/server/repository/entity/CommonTaskSchedule.java) |
| 12 | +- [CommonTaskType.java](file://datavines-server/src/main/java/io/datavines/server/enums/CommonTaskType.java) |
| 13 | +</cite> |
| 14 | + |
| 15 | +## 目录 |
| 16 | +1. [简介](#简介) |
| 17 | +2. [项目结构](#项目结构) |
| 18 | +3. [核心组件](#核心组件) |
| 19 | +4. [架构概述](#架构概述) |
| 20 | +5. [详细组件分析](#详细组件分析) |
| 21 | +6. [依赖分析](#依赖分析) |
| 22 | +7. [性能考虑](#性能考虑) |
| 23 | +8. [故障排除指南](#故障排除指南) |
| 24 | +9. [结论](#结论) |
| 25 | + |
| 26 | +## 简介 |
| 27 | +本文档全面记录了与质量检查任务管理相关的所有RESTful接口。详细描述了创建、更新、删除、启动和查询质量检查任务的API端点,包括HTTP方法、URL路径、请求参数和请求体结构。文档化了任务配置的完整JSON结构,包括数据源选择、检查规则配置、预期值设置、通知策略等。提供了不同类型任务(单表检查、跨表检查等)的配置示例。解释了任务克隆、批量操作等高级功能的API使用方法。包含了任务状态转换的详细说明和相应的API调用方式。 |
| 28 | + |
| 29 | +## 项目结构 |
| 30 | +本项目采用模块化设计,主要分为以下几个核心模块: |
| 31 | +- **datavines-common**: 提供通用配置、数据源连接、异常处理等基础功能 |
| 32 | +- **datavines-server**: 核心服务模块,包含API控制器、业务逻辑和服务层 |
| 33 | +- **datavines-metric**: 质量检查指标管理模块 |
| 34 | +- **datavines-notification**: 通知系统模块 |
| 35 | +- **datavines-connector**: 数据源连接器模块 |
| 36 | +- **datavines-engine**: 执行引擎模块 |
| 37 | + |
| 38 | +任务管理相关的API主要位于`datavines-server`模块中,通过Spring Boot框架提供RESTful服务。 |
| 39 | + |
| 40 | +```mermaid |
| 41 | +graph TD |
| 42 | +subgraph "前端" |
| 43 | +UI[用户界面] |
| 44 | +end |
| 45 | +subgraph "后端服务" |
| 46 | +API[API服务器] |
| 47 | +Service[业务服务层] |
| 48 | +Repository[数据访问层] |
| 49 | +end |
| 50 | +subgraph "数据存储" |
| 51 | +DB[(数据库)] |
| 52 | +end |
| 53 | +UI --> API |
| 54 | +API --> Service |
| 55 | +Service --> Repository |
| 56 | +Repository --> DB |
| 57 | +``` |
| 58 | + |
| 59 | +**图表来源** |
| 60 | +- [CommonTaskController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskController.java#L29-L31) |
| 61 | +- [CommonTaskScheduleController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskScheduleController.java#L34-L36) |
| 62 | + |
| 63 | +**章节来源** |
| 64 | +- [CommonTaskController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskController.java#L1-L47) |
| 65 | +- [CommonTaskScheduleController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskScheduleController.java#L1-L61) |
| 66 | + |
| 67 | +## 核心组件 |
| 68 | +质量检查任务管理的核心组件包括任务控制器(CommonTaskController)、任务调度控制器(CommonTaskScheduleController)、任务服务(CommonTaskService)和任务调度服务(CommonTaskScheduleService)。这些组件共同实现了任务的创建、更新、删除、查询和调度功能。 |
| 69 | + |
| 70 | +任务管理采用分层架构设计,控制器层负责接收HTTP请求,服务层处理业务逻辑,数据访问层负责与数据库交互。任务状态管理通过数据库中的状态字段实现,支持任务的生命周期管理。 |
| 71 | + |
| 72 | +**章节来源** |
| 73 | +- [CommonTaskService.java](file://datavines-server/src/main/java/io/datavines/server/repository/service/CommonTaskService.java#L28-L49) |
| 74 | +- [CommonTaskScheduleService.java](file://datavines-server/src/main/java/io/datavines/server/repository/service/CommonTaskScheduleService.java#L28-L42) |
| 75 | + |
| 76 | +## 架构概述 |
| 77 | +质量检查任务管理系统的架构采用典型的三层设计模式:表现层、业务逻辑层和数据访问层。表现层由Spring MVC控制器组成,负责处理RESTful API请求;业务逻辑层包含服务类,实现核心业务规则;数据访问层使用MyBatis Plus框架,提供对数据库的CRUD操作。 |
| 78 | + |
| 79 | +系统通过CommonTask和CommonTaskSchedule两个主要实体类来管理任务及其调度配置。任务与数据源关联,支持多种任务类型,包括元数据抓取和数据质量报告。 |
| 80 | + |
| 81 | +```mermaid |
| 82 | +classDiagram |
| 83 | +class CommonTask { |
| 84 | ++Long id |
| 85 | ++CommonTaskType taskType |
| 86 | ++FetchType type |
| 87 | ++Long dataSourceId |
| 88 | ++String databaseName |
| 89 | ++String tableName |
| 90 | ++String parameter |
| 91 | ++int status |
| 92 | ++String executeHost |
| 93 | ++LocalDateTime submitTime |
| 94 | ++LocalDateTime scheduleTime |
| 95 | ++LocalDateTime startTime |
| 96 | ++LocalDateTime endTime |
| 97 | ++LocalDateTime createTime |
| 98 | ++LocalDateTime updateTime |
| 99 | +} |
| 100 | +class CommonTaskSchedule { |
| 101 | ++Long id |
| 102 | ++Long dataSourceId |
| 103 | ++CommonTaskType taskType |
| 104 | ++String type |
| 105 | ++String param |
| 106 | ++String cronExpression |
| 107 | ++boolean status |
| 108 | ++LocalDateTime startTime |
| 109 | ++LocalDateTime endTime |
| 110 | ++Long createBy |
| 111 | ++LocalDateTime createTime |
| 112 | ++Long updateBy |
| 113 | ++LocalDateTime updateTime |
| 114 | +} |
| 115 | +class CommonTaskService { |
| 116 | ++IPage~CatalogMetaDataFetchTaskVO~ getFetchTaskPage(Long, String, Integer, Integer) |
| 117 | ++long refreshCatalog(CatalogRefresh) |
| 118 | ++int update(CommonTask) |
| 119 | ++CommonTask getById(long) |
| 120 | ++Long killCatalogTask(Long) |
| 121 | ++CommonTask[] listNeedFailover(String) |
| 122 | ++CommonTask[] listTaskNotInServerList(String[]) |
| 123 | ++String getTaskExecuteHost(Long) |
| 124 | ++boolean deleteByDataSourceId(long) |
| 125 | ++LocalDateTime getRefreshTime(long, String, String) |
| 126 | +} |
| 127 | +class CommonTaskScheduleService { |
| 128 | ++CommonTaskSchedule createOrUpdate(CommonTaskScheduleCreateOrUpdate) |
| 129 | ++boolean deleteById(long) |
| 130 | ++boolean deleteByDataSourceId(long) |
| 131 | ++CommonTaskSchedule getById(long) |
| 132 | ++CommonTaskSchedule getByDataSourceId(Long, String) |
| 133 | ++String[] getCron(MapParam) |
| 134 | +} |
| 135 | +CommonTaskController --> CommonTaskService : "依赖" |
| 136 | +CommonTaskScheduleController --> CommonTaskScheduleService : "依赖" |
| 137 | +CommonTaskService --> CommonTask : "管理" |
| 138 | +CommonTaskScheduleService --> CommonTaskSchedule : "管理" |
| 139 | +``` |
| 140 | + |
| 141 | +**图表来源** |
| 142 | +- [CommonTask.java](file://datavines-server/src/main/java/io/datavines/server/repository/entity/CommonTask.java#L31-L88) |
| 143 | +- [CommonTaskSchedule.java](file://datavines-server/src/main/java/io/datavines/server/repository/entity/CommonTaskSchedule.java#L30-L79) |
| 144 | + |
| 145 | +## 详细组件分析 |
| 146 | +### 任务控制器分析 |
| 147 | +任务控制器(CommonTaskController)负责处理与任务相关的HTTP请求,提供分页查询任务列表的功能。该控制器通过RESTful API暴露服务,使用Spring MVC注解定义路由和请求处理方法。 |
| 148 | + |
| 149 | +```mermaid |
| 150 | +sequenceDiagram |
| 151 | +participant Client as "客户端" |
| 152 | +participant Controller as "CommonTaskController" |
| 153 | +participant Service as "CommonTaskService" |
| 154 | +participant Repository as "数据访问层" |
| 155 | +Client->>Controller : GET /api/v1/common-task/page |
| 156 | +Controller->>Service : getFetchTaskPage(datasourceId, taskType, pageNumber, pageSize) |
| 157 | +Service->>Repository : 查询任务分页数据 |
| 158 | +Repository-->>Service : 返回分页结果 |
| 159 | +Service-->>Controller : 返回任务列表 |
| 160 | +Controller-->>Client : 返回JSON响应 |
| 161 | +``` |
| 162 | + |
| 163 | +**图表来源** |
| 164 | +- [CommonTaskController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskController.java#L39-L46) |
| 165 | +- [CommonTaskService.java](file://datavines-server/src/main/java/io/datavines/server/repository/service/CommonTaskService.java#L48-L49) |
| 166 | + |
| 167 | +### 任务调度控制器分析 |
| 168 | +任务调度控制器(CommonTaskScheduleController)负责处理任务调度相关的创建、更新、查询操作。该控制器提供了创建或更新任务调度、根据数据源ID获取任务调度、获取cron表达式等核心功能。 |
| 169 | + |
| 170 | +```mermaid |
| 171 | +sequenceDiagram |
| 172 | +participant Client as "客户端" |
| 173 | +participant Controller as "CommonTaskScheduleController" |
| 174 | +participant Service as "CommonTaskScheduleService" |
| 175 | +participant Repository as "数据访问层" |
| 176 | +Client->>Controller : POST /api/v1/common-task/schedule/createOrUpdate |
| 177 | +Controller->>Service : createOrUpdate(taskScheduleCreateOrUpdate) |
| 178 | +Service->>Repository : 保存或更新任务调度 |
| 179 | +Repository-->>Service : 返回保存结果 |
| 180 | +Service-->>Controller : 返回任务调度信息 |
| 181 | +Controller-->>Client : 返回JSON响应 |
| 182 | +``` |
| 183 | + |
| 184 | +**图表来源** |
| 185 | +- [CommonTaskScheduleController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskScheduleController.java#L44-L48) |
| 186 | +- [CommonTaskScheduleService.java](file://datavines-server/src/main/java/io/datavines/server/repository/service/CommonTaskScheduleService.java#L30-L31) |
| 187 | + |
| 188 | +### 任务调度配置分析 |
| 189 | +任务调度配置(CommonTaskScheduleCreateOrUpdate)是创建和更新任务调度的核心数据传输对象。该类定义了任务调度所需的所有必要字段,包括任务ID、任务类型、数据源ID、调度类型、参数、开始时间和结束时间。 |
| 190 | + |
| 191 | +```mermaid |
| 192 | +classDiagram |
| 193 | +class CommonTaskScheduleCreateOrUpdate { |
| 194 | ++Long id |
| 195 | ++CommonTaskType taskType |
| 196 | ++Long dataSourceId |
| 197 | ++String type |
| 198 | ++MapParam param |
| 199 | ++LocalDateTime startTime |
| 200 | ++LocalDateTime endTime |
| 201 | +} |
| 202 | +class CommonTaskType { |
| 203 | ++CATALOG_METADATA_FETCH(0, "catalog_metadata_fetch", "元数据抓取") |
| 204 | ++DATA_QUALITY_REPORT(1, "data_quality_report", "数据质量报告") |
| 205 | +} |
| 206 | +class MapParam { |
| 207 | ++String cycle |
| 208 | ++String timeZone |
| 209 | +} |
| 210 | +CommonTaskScheduleCreateOrUpdate --> CommonTaskType : "引用" |
| 211 | +CommonTaskScheduleCreateOrUpdate --> MapParam : "包含" |
| 212 | +``` |
| 213 | + |
| 214 | +**图表来源** |
| 215 | +- [CommonTaskScheduleCreateOrUpdate.java](file://datavines-server/src/main/java/io/datavines/server/api/dto/bo/task/CommonTaskScheduleCreateOrUpdate.java#L28-L51) |
| 216 | +- [CommonTaskType.java](file://datavines-server/src/main/java/io/datavines/server/enums/CommonTaskType.java#L24-L74) |
| 217 | + |
| 218 | +**章节来源** |
| 219 | +- [CommonTaskScheduleCreateOrUpdate.java](file://datavines-server/src/main/java/io/datavines/server/api/dto/bo/task/CommonTaskScheduleCreateOrUpdate.java#L1-L51) |
| 220 | +- [CommonTaskType.java](file://datavines-server/src/main/java/io/datavines/server/enums/CommonTaskType.java#L1-L74) |
| 221 | + |
| 222 | +## 依赖分析 |
| 223 | +质量检查任务管理系统依赖于多个核心模块和外部库。系统内部依赖关系清晰,各模块职责分明。主要依赖包括: |
| 224 | + |
| 225 | +```mermaid |
| 226 | +graph TD |
| 227 | +CommonTaskController --> CommonTaskService |
| 228 | +CommonTaskScheduleController --> CommonTaskScheduleService |
| 229 | +CommonTaskService --> CommonTask |
| 230 | +CommonTaskScheduleService --> CommonTaskSchedule |
| 231 | +CommonTaskScheduleService --> CommonTaskType |
| 232 | +CommonTaskController --> DataVinesConstants |
| 233 | +CommonTaskScheduleController --> DataVinesConstants |
| 234 | +CommonTaskService --> CatalogRefresh |
| 235 | +CommonTaskScheduleService --> MapParam |
| 236 | +style CommonTaskController fill:#f9f,stroke:#333 |
| 237 | +style CommonTaskScheduleController fill:#f9f,stroke:#333 |
| 238 | +``` |
| 239 | + |
| 240 | +**图表来源** |
| 241 | +- [CommonTaskController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskController.java#L36-L37) |
| 242 | +- [CommonTaskScheduleController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskScheduleController.java#L41-L42) |
| 243 | + |
| 244 | +**章节来源** |
| 245 | +- [CommonTaskService.java](file://datavines-server/src/main/java/io/datavines/server/repository/service/CommonTaskService.java#L19-L27) |
| 246 | +- [CommonTaskScheduleService.java](file://datavines-server/src/main/java/io/datavines/server/repository/service/CommonTaskScheduleService.java#L21-L27) |
| 247 | + |
| 248 | +## 性能考虑 |
| 249 | +在设计和实现质量检查任务管理系统时,考虑了以下性能优化策略: |
| 250 | +- 使用MyBatis Plus框架提高数据库操作效率 |
| 251 | +- 通过分页查询避免一次性加载大量数据 |
| 252 | +- 合理设计数据库索引,特别是在常用查询字段上 |
| 253 | +- 使用缓存机制减少重复计算 |
| 254 | +- 异步处理耗时操作,提高系统响应速度 |
| 255 | + |
| 256 | +对于大规模任务管理,建议定期清理已完成的任务记录,保持数据库性能。同时,合理配置任务调度频率,避免系统资源过度消耗。 |
| 257 | + |
| 258 | +## 故障排除指南 |
| 259 | +当遇到任务管理相关问题时,可以按照以下步骤进行排查: |
| 260 | +1. 检查API请求参数是否正确,特别是数据源ID和任务类型 |
| 261 | +2. 验证数据库连接是否正常 |
| 262 | +3. 查看服务日志,定位具体错误信息 |
| 263 | +4. 检查任务调度配置是否符合规范 |
| 264 | +5. 确认用户权限是否足够执行相关操作 |
| 265 | + |
| 266 | +常见问题包括: |
| 267 | +- 任务创建失败:检查数据源配置和权限 |
| 268 | +- 任务调度不执行:验证cron表达式和时间设置 |
| 269 | +- 查询结果为空:确认数据源ID和任务类型是否匹配 |
| 270 | +- 性能问题:检查数据库索引和系统资源使用情况 |
| 271 | + |
| 272 | +**章节来源** |
| 273 | +- [CommonTaskController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskController.java#L39-L46) |
| 274 | +- [CommonTaskScheduleController.java](file://datavines-server/src/main/java/io/datavines/server/api/controller/CommonTaskScheduleController.java#L50-L54) |
| 275 | + |
| 276 | +## 结论 |
| 277 | +本文档详细介绍了质量检查任务管理系统的API设计和实现。系统提供了完整的任务生命周期管理功能,包括创建、更新、删除、查询和调度。通过清晰的分层架构和模块化设计,系统具有良好的可维护性和扩展性。API设计遵循RESTful规范,便于集成和使用。未来可以进一步优化性能,增加更多任务类型和检查规则,提升系统的实用性和灵活性。 |
0 commit comments