- 完成REQ-010-17(性能优化和限流处理)的所有6个阶段 - 创建ADR文档:0026-performance-optimization.md - 创建Prompt文档:027-performance-optimization.md - 创建会话记录:20260119-performance-optimization.md - 创建变更记录:20260119-performance-optimization.md - 创建复盘报告:20260119-performance-optimization-retro.md - 更新index.md和CHANGELOG.md - 完成REQ-010-2(基础实体类和Mapper创建)的前3个阶段 - 更新ADR文档:0011-entity-mapper-create.md - 创建Prompt文档:002-entity-mapper-create.md - 更新index.md 所有文档均按照SSOT方法论创建,包括需求定义、架构决策、提示词资产化、执行会话、变更记录和闭环复盘。
13 KiB
13 KiB
变更记录 - 元数据任务定义管理
变更信息
- 变更编号: Change-014
- 变更日期: 2026-01-18
- 变更类型: 新增功能
- 变更版本: 0.1.16
- 相关需求: REQ-010-4 - 元数据任务定义管理
- 相关决策: ADR-0013 - 元数据任务定义管理架构决策
- 相关会话: Session-20260118-001 - 元数据任务定义管理执行会话
变更摘要
实现了完整的元数据任务定义管理功能,包括任务 CRUD 操作、package.xml 配置、API 版本选择、调度类型选择、Cron 表达式配置和任务验证。
变更详情
新增功能
1. 任务定义 CRUD 功能
描述: 实现了元数据任务的增删改查功能,支持分页和条件查询。
实现内容:
- 创建任务接口: POST /metadata/task
- 更新任务接口: PUT /metadata/task/{id}
- 删除任务接口: DELETE /metadata/task/{id}
- 查询任务列表接口: GET /metadata/task/list
- 查询任务详情接口: GET /metadata/task/{id}
技术实现:
- 使用 MyBatis Plus 的 BaseMapper 实现 CRUD 操作
- 使用 @Valid 注解进行参数验证
- 使用 @Transactional 注解进行事务管理
- 支持按任务名称、任务类型、状态进行条件查询
- 支持分页查询,使用 MyBatis Plus 的 Page 对象
2. package.xml 内容配置
描述: 实现了 package.xml 内容的可视化编辑和验证功能。
实现内容:
- package.xml 内容编辑器(使用 Element Plus 的 Input 组件)
- package.xml 格式验证
- 元数据类型验证
- 通配符验证
技术实现:
- 使用 Java 的 DocumentBuilderFactory 和 DocumentBuilder 解析 XML
- 验证 package.xml 的根元素和 types 元素
- 验证元数据类型是否在支持的类型列表中
- 验证通配符使用是否正确
- 使用 TEXT 类型存储 package.xml 内容,避免 VARCHAR 长度限制
3. API 版本选择
描述: 实现了 API 版本的选择和验证功能。
实现内容:
- API 版本列表展示(58.0、57.0、56.0)
- API 版本选择
- API 版本验证
技术实现:
- 使用枚举类型管理 API 版本
- 使用配置文件管理支持的 API 版本列表
- 在创建和更新任务时验证 API 版本是否在支持的版本列表中
4. 调度类型选择
描述: 实现了调度类型的选择和验证功能。
实现内容:
- 调度类型选择(Manual/Cron)
- 调度类型验证
- 调度类型友好显示
技术实现:
- 使用 Java 枚举类型 ScheduleType 管理调度类型
- 使用 @EnumValue 注解映射数据库值
- 在创建和更新任务时验证调度类型是否正确
5. Cron 表达式配置
描述: 实现了 Cron 表达式的编辑、验证和预览功能。
实现内容:
- Cron 表达式编辑
- Cron 表达式验证
- Cron 表达式预览(显示下次执行时间)
技术实现:
- 使用 Quartz 的 CronExpression 验证 Cron 表达式格式
- 使用 CronExpression 的 getNextValidTimeAfter 方法计算下次执行时间
- 在创建和更新任务时验证 Cron 表达式是否正确
- 在前端显示 Cron 表达式的下次执行时间
6. 任务验证功能
描述: 实现了任务的验证功能,验证 package.xml 和调度配置。
实现内容:
- package.xml 格式验证
- Cron 表达式验证
- 验证失败返回详细错误信息
技术实现:
- 创建 PackageXmlValidator 验证器,验证 package.xml 格式和元数据类型
- 创建 CronExpressionValidator 验证器,验证 Cron 表达式格式和计算下次执行时间
- 在创建和更新任务时自动进行验证
- 提供 POST /metadata/task/{id}/validate 接口手动验证任务
数据库变更
新增表:datai_meta_task
CREATE TABLE `datai_meta_task` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务ID',
`task_name` varchar(255) NOT NULL COMMENT '任务名称',
`task_type` varchar(50) NOT NULL COMMENT '任务类型(retrieve/deploy)',
`org_config_id` bigint NOT NULL COMMENT '组织配置ID',
`package_xml` longtext COMMENT 'package.xml内容',
`api_version` varchar(20) NOT NULL COMMENT 'API版本',
`schedule_type` varchar(20) NOT NULL COMMENT '调度类型(Manual/Cron)',
`cron_expression` varchar(100) COMMENT 'Cron表达式',
`status` varchar(20) NOT NULL COMMENT '任务状态(Active/Inactive)',
`description` varchar(500) COMMENT '任务描述',
`created_by` varchar(100) COMMENT '创建人',
`created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` varchar(100) COMMENT '更新人',
`updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_org_config_id` (`org_config_id`),
KEY `idx_task_type` (`task_type`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='元数据任务定义表';
索引设计:
- idx_org_config_id: 加速按组织配置ID查询任务
- idx_task_type: 加速按任务类型查询任务
- idx_status: 加速按状态查询任务
API 变更
新增接口
-
POST /metadata/task - 创建任务
- 请求参数: DataiMetaTask
- 响应: Result
- 描述: 创建元数据任务
-
PUT /metadata/task/{id} - 更新任务
- 请求参数: id (path), DataiMetaTask (body)
- 响应: Result
- 描述: 更新元数据任务
-
DELETE /metadata/task/{id} - 删除任务
- 请求参数: id (path)
- 响应: Result
- 描述: 删除元数据任务
-
GET /metadata/task/list - 查询任务列表
- 请求参数: pageNum, pageSize, taskName, taskType, status
- 响应: Result<IPage>
- 描述: 查询元数据任务列表(支持分页和条件查询)
-
GET /metadata/task/{id} - 查询任务详情
- 请求参数: id (path)
- 响应: Result
- 描述: 查询元数据任务详情
-
POST /metadata/task/{id}/validate - 验证任务
- 请求参数: id (path)
- 响应: Result
- 描述: 验证元数据任务(package.xml 和 Cron 表达式)
代码变更
新增文件
后端文件:
datai-salesforce-metadata/src/main/java/com/datai/metadata/entity/DataiMetaTask.java- 任务实体类datai-salesforce-metadata/src/main/java/com/datai/metadata/mapper/DataiMetaTaskMapper.java- 任务 Mapper 接口datai-salesforce-metadata/src/main/resources/mapper/DataiMetaTaskMapper.xml- 任务 Mapper XMLdatai-salesforce-metadata/src/main/java/com/datai/metadata/service/IDataiMetaTaskService.java- 任务 Service 接口datai-salesforce-metadata/src/main/java/com/datai/metadata/service/impl/DataiMetaTaskServiceImpl.java- 任务 Service 实现datai-salesforce-metadata/src/main/java/com/datai/metadata/controller/DataiMetaTaskController.java- 任务 Controllerdatai-salesforce-metadata/src/main/java/com/datai/metadata/validator/PackageXmlValidator.java- package.xml 验证器datai-salesforce-metadata/src/main/java/com/datai/metadata/validator/CronExpressionValidator.java- Cron 表达式验证器
前端文件:
datai-salesforce-metadata/src/main/resources/views/TaskManager.vue- 任务管理前端组件
测试文件:
datai-salesforce-metadata/src/test/java/com/datai/metadata/service/DataiMetaTaskServiceImplTest.java- 任务 Service 测试datai-salesforce-metadata/src/test/java/com/datai/metadata/validator/PackageXmlValidatorTest.java- package.xml 验证器测试datai-salesforce-metadata/src/test/java/com/datai/metadata/validator/CronExpressionValidatorTest.java- Cron 表达式验证器测试datai-salesforce-metadata/src/test/java/com/datai/metadata/controller/DataiMetaTaskControllerTest.java- 任务 Controller 测试
变更影响
对现有功能的影响
- 无影响: 本次变更新增了独立的功能模块,不影响现有功能
对数据库的影响
- 新增表: 新增了 datai_meta_task 表
- 无修改: 未修改现有表结构
对 API 的影响
- 新增接口: 新增了 6 个 RESTful API 接口
- 无修改: 未修改现有接口
对前端的影响
- 新增页面: 新增了任务管理页面
- 无修改: 未修改现有页面
测试结果
单元测试
- ✅ DataiMetaTaskServiceImpl - 所有测试通过
- ✅ PackageXmlValidator - 所有测试通过
- ✅ CronExpressionValidator - 所有测试通过
- ✅ DataiMetaTaskController - 所有测试通过
集成测试
- ✅ 任务 CRUD 操作 - 所有测试通过
- ✅ package.xml 验证 - 所有测试通过
- ✅ Cron 表达式验证 - 所有测试通过
- ✅ API 接口测试 - 所有测试通过
手动测试
- ✅ 创建任务 - 测试通过
- ✅ 编辑任务 - 测试通过
- ✅ 删除任务 - 测试通过
- ✅ 查询任务列表 - 测试通过
- ✅ 查询任务详情 - 测试通过
- ✅ 验证任务 - 测试通过
部署说明
数据库部署
执行以下 SQL 创建表:
CREATE TABLE `datai_meta_task` (
`id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务ID',
`task_name` varchar(255) NOT NULL COMMENT '任务名称',
`task_type` varchar(50) NOT NULL COMMENT '任务类型(retrieve/deploy)',
`org_config_id` bigint NOT NULL COMMENT '组织配置ID',
`package_xml` longtext COMMENT 'package.xml内容',
`api_version` varchar(20) NOT NULL COMMENT 'API版本',
`schedule_type` varchar(20) NOT NULL COMMENT '调度类型(Manual/Cron)',
`cron_expression` varchar(100) COMMENT 'Cron表达式',
`status` varchar(20) NOT NULL COMMENT '任务状态(Active/Inactive)',
`description` varchar(500) COMMENT '任务描述',
`created_by` varchar(100) COMMENT '创建人',
`created_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_by` varchar(100) COMMENT '更新人',
`updated_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_org_config_id` (`org_config_id`),
KEY `idx_task_type` (`task_type`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='元数据任务定义表';
后端部署
- 编译项目:
mvn clean package - 部署 JAR 包到服务器
- 启动应用:
java -jar datai-salesforce-metadata.jar
前端部署
- 构建前端项目:
npm run build - 部署 dist 目录到 Web 服务器
配置更新
无需额外配置更新。
回滚方案
如果需要回滚本次变更,执行以下步骤:
-
删除数据库表:
DROP TABLE datai_meta_task; -
删除后端代码:
- 删除 datai-salesforce-metadata/src/main/java/com/datai/metadata/entity/DataiMetaTask.java
- 删除 datai-salesforce-metadata/src/main/java/com/datai/metadata/mapper/DataiMetaTaskMapper.java
- 删除 datai-salesforce-metadata/src/main/resources/mapper/DataiMetaTaskMapper.xml
- 删除 datai-salesforce-metadata/src/main/java/com/datai/metadata/service/IDataiMetaTaskService.java
- 删除 datai-salesforce-metadata/src/main/java/com/datai/metadata/service/impl/DataiMetaTaskServiceImpl.java
- 删除 datai-salesforce-metadata/src/main/java/com/datai/metadata/controller/DataiMetaTaskController.java
- 删除 datai-salesforce-metadata/src/main/java/com/datai/metadata/validator/PackageXmlValidator.java
- 删除 datai-salesforce-metadata/src/main/java/com/datai/metadata/validator/CronExpressionValidator.java
-
删除前端代码:
- 删除 datai-salesforce-metadata/src/main/resources/views/TaskManager.vue
-
删除测试代码:
- 删除所有相关的测试文件
-
重新部署: 重新编译和部署项目
相关文档
- REQ-010-4.md - 元数据任务定义管理需求
- ADR-0013.md - 元数据任务定义管理架构决策
- Prompt-014.md - 元数据任务定义管理实现提示词
- Session-20260118-001.md - 元数据任务定义管理执行会话
- metadata-module.md - Salesforce Metadata API 模块说明
- file/index.md - 文件模块 API 文档索引
审核记录
| 日期 | 审核人 | 审核结果 | 审核意见 |
|---|---|---|---|
| 2026-01-18 | Datai Team | 已通过 | 变更完整,符合需求 |
变更历史
| 日期 | 版本 | 变更内容 | 变更人 |
|---|---|---|---|
| 2026-01-18 | v1.0.0 | 初始版本 | Datai Team |