datai/datai-scenes/datai-scene-salesforce/docs/sessions/20260118-task-definition-management.md
Kris 2e6f087732 docs: 完成REQ-010-17和REQ-010-2的文档创建
- 完成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方法论创建,包括需求定义、架构决策、提示词资产化、执行会话、变更记录和闭环复盘。
2026-01-19 10:06:09 +08:00

9.5 KiB
Raw Blame History

执行会话记录 - 元数据任务定义管理

会话信息

  • 会话编号: Session-20260118-001
  • 创建日期: 2026-01-18
  • 相关需求: REQ-010-4 - 元数据任务定义管理
  • 相关决策: ADR-0013 - 元数据任务定义管理架构决策
  • 相关提示词: Prompt-014 - 元数据任务定义管理实现提示词

现状

当前系统已经完成了以下工作:

  1. 数据库表结构设计: 已完成 9 张表的设计和创建REQ-010-1
  2. 基础实体类和 Mapper 创建: 已完成基础实体类和 Mapper 的创建REQ-010-2
  3. Salesforce 组织配置管理: 已完成组织配置管理的实现REQ-010-3
  4. 元数据任务定义管理需求: 已完成需求文档的编写REQ-010-4
  5. 架构决策: 已完成元数据任务定义管理的架构决策ADR-0013
  6. 提示词资产化: 已完成元数据任务定义管理的提示词编写Prompt-014

目标

实现元数据任务定义管理功能,包括:

  1. 任务定义 CRUD 功能

    • 创建元数据任务
    • 编辑元数据任务
    • 删除元数据任务
    • 查询元数据任务列表(支持分页和条件查询)
  2. package.xml 内容配置

    • 可视化编辑 package.xml 内容
    • package.xml 格式验证
    • 支持多种元数据类型配置
    • 支持通配符配置
  3. API 版本选择

    • API 版本列表展示
    • API 版本验证
    • API 版本友好显示
  4. 调度类型选择

    • 支持 Manual 和 Cron 两种调度类型
    • 调度类型验证
    • 调度类型友好显示
  5. Cron 表达式配置

    • Cron 表达式编辑
    • Cron 表达式验证
    • Cron 表达式预览
  6. 任务验证功能

    • package.xml 格式验证
    • Cron 表达式验证
    • 验证失败返回详细错误信息

执行过程

步骤1创建实体类

操作

创建 DataiMetaTask 实体类,包含以下字段:

  • id: 任务ID
  • taskName: 任务名称
  • taskType: 任务类型retrieve/deploy
  • orgConfigId: 组织配置ID
  • packageXml: package.xml内容
  • apiVersion: API版本
  • scheduleType: 调度类型Manual/Cron
  • cronExpression: Cron表达式
  • status: 任务状态Active/Inactive
  • description: 任务描述
  • createdBy: 创建人
  • createdTime: 创建时间
  • updatedBy: 更新人
  • updatedTime: 更新时间

结果

实体类创建成功,使用 MyBatis Plus 的注解进行映射。

步骤2创建 Mapper 接口

操作

创建 DataiMetaTaskMapper 接口,继承 BaseMapper<DataiMetaTask>,并添加以下方法:

  • selectTaskPage: 查询任务列表(支持分页和条件查询)
  • selectByOrgConfigId: 根据组织配置ID查询任务

结果

Mapper 接口创建成功,使用 MyBatis Plus 的 @Mapper 注解进行标注。

步骤3创建 Service 层

操作

创建 IDataiMetaTaskService 接口和 DataiMetaTaskServiceImpl 实现类,实现以下方法:

  • createTask: 创建任务
  • updateTask: 更新任务
  • deleteTask: 删除任务
  • selectTaskPage: 查询任务列表
  • validateTask: 验证任务

结果

Service 层创建成功,使用 @Service 注解进行标注,使用 @Transactional 注解进行事务管理。

步骤4创建 Controller 层

操作

创建 DataiMetaTaskController 控制器,实现以下接口:

  • POST /metadata/task: 创建任务
  • PUT /metadata/task/{id}: 更新任务
  • DELETE /metadata/task/{id}: 删除任务
  • GET /metadata/task/list: 查询任务列表
  • GET /metadata/task/{id}: 查询任务详情
  • POST /metadata/task/{id}/validate: 验证任务

结果

Controller 层创建成功,使用 @RestController@RequestMapping 注解进行标注。

步骤5创建 package.xml 验证器

操作

创建 PackageXmlValidator 验证器,实现以下功能:

  • 解析 XML 格式
  • 验证根元素
  • 验证元数据类型
  • 验证通配符

结果

package.xml 验证器创建成功,使用 @Component 注解进行标注。

步骤6创建 Cron 表达式验证器

操作

创建 CronExpressionValidator 验证器,实现以下功能:

  • 验证 Cron 表达式格式
  • 解析 Cron 表达式
  • 计算下次执行时间

结果

Cron 表达式验证器创建成功,使用 @Component 注解进行标注。

步骤7创建前端组件

操作

创建 TaskManager.vue 前端组件,实现以下功能:

  • 任务列表展示
  • 创建任务对话框
  • 编辑任务对话框
  • 删除任务确认
  • 任务验证功能

结果

前端组件创建成功,使用 Vue 3 和 Element Plus 进行开发。

AI 质疑和替代方案

质疑1package.xml 存储方式

AI 质疑: 为什么选择直接存储 XML 字符串,而不是解析为结构化数据?

回答: 根据 ADR-0013 的决策,选择直接存储 XML 字符串是因为:

  1. 符合 Salesforce Metadata API 规范,避免转换错误
  2. 实现简单,开发周期短
  3. 验证准确,可以直接使用 XML 解析库验证

替代方案: 如果未来需要更复杂的查询和管理,可以考虑解析为结构化数据存储。

质疑2Cron 表达式验证库选择

AI 质疑: 为什么选择 Quartz 的 CronExpression 进行验证,而不是其他库?

回答: 选择 Quartz 的 CronExpression 是因为:

  1. Quartz 是成熟的调度框架CronExpression 验证准确
  2. 项目已经引入了 Quartz 依赖,无需额外引入其他库
  3. 支持标准的 Cron 表达式格式

替代方案: 可以考虑使用 Spring 的 CronSequenceGenerator 进行验证。

质疑3任务验证时机

AI 质疑: 为什么在创建和更新任务时进行验证,而不是在执行任务时验证?

回答: 在创建和更新任务时进行验证是因为:

  1. 提前发现配置错误,避免执行时失败
  2. 提供更好的用户体验,及时反馈错误信息
  3. 减少执行时的错误处理逻辑

替代方案: 可以在执行任务时再次验证,确保配置没有变更。

最终复现步骤

1. 创建数据库表

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='元数据任务定义表';

2. 创建实体类

创建 DataiMetaTask.java 实体类。

3. 创建 Mapper 接口

创建 DataiMetaTaskMapper.java Mapper 接口和 DataiMetaTaskMapper.xml XML 文件。

4. 创建 Service 层

创建 IDataiMetaTaskService.java 接口和 DataiMetaTaskServiceImpl.java 实现类。

5. 创建 Controller 层

创建 DataiMetaTaskController.java 控制器。

6. 创建验证器

创建 PackageXmlValidator.javaCronExpressionValidator.java 验证器。

7. 创建前端组件

创建 TaskManager.vue 前端组件。

8. 编写单元测试

为以下类编写单元测试:

  • DataiMetaTaskServiceImpl
  • PackageXmlValidator
  • CronExpressionValidator
  • DataiMetaTaskController

9. 编写集成测试

编写以下集成测试:

  • 任务 CRUD 操作
  • package.xml 验证
  • Cron 表达式验证
  • API 接口测试

10. 编写 API 文档

为以下接口编写 API 文档:

  • POST /metadata/task - 创建任务
  • PUT /metadata/task/{id} - 更新任务
  • DELETE /metadata/task/{id} - 删除任务
  • GET /metadata/task/list - 查询任务列表
  • GET /metadata/task/{id} - 查询任务详情
  • POST /metadata/task/{id}/validate - 验证任务

执行结果

成功实现的功能

  1. 任务定义 CRUD 功能
  2. package.xml 内容配置
  3. API 版本选择
  4. 调度类型选择
  5. Cron 表达式配置
  6. 任务验证功能

未实现的功能

遇到的问题

相关文档

审核记录

日期 审核人 审核结果 审核意见
2026-01-18 Datai Team 已通过 实现完整,符合需求

变更历史

日期 版本 变更内容 变更人
2026-01-18 v1.0.0 初始版本 Datai Team