datai/docs/archive/sessions/20260119-metadata-task-management.md

8.0 KiB
Raw Blame History

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

现状

REQ-010-4 需要实现元数据任务定义的完整管理功能,包括任务定义 CRUD 功能、package.xml 内容配置、API 版本选择、调度类型选择、Cron 表达式配置、任务验证功能。

目前已经完成了需求定义、架构决策和提示词资产化阶段,现在需要开始执行会话和代码生成阶段。

目标

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

  1. 创建枚举类 - ScheduleType
  2. 创建 package.xml 编辑器 - PackageXmlEditor
  3. 创建 Cron 表达式验证器 - CronExpressionValidator
  4. 创建控制器 - MetadataTaskController
  5. 创建服务接口 - IMetadataTaskService、ITaskValidationService
  6. 创建服务实现 - MetadataTaskServiceImpl、TaskValidationServiceImpl
  7. 创建验证结果类 - TaskValidationResult
  8. 创建单元测试 - MetadataTaskServiceImplTest

输入链接

Prompt 文件

Context Snapshot

记录本次会话参考了哪些 Canvas 节点:

执行过程

详细记录本次会话的执行过程,包括:

  1. 创建枚举类

    • 创建 ScheduleType 枚举类,包含 MANUAL 和 CRON 两个值
    • 使用 @EnumValue 注解映射枚举值和数据库值
    • 提供 getDisplayName() 方法,返回友好的显示名称
    • 提供 fromCode() 方法,根据数据库值转换为枚举类型
  2. 创建 package.xml 编辑器

    • 创建 PackageXmlEditor 类,提供 package.xml 编辑功能
    • 使用 Java DOM 解析器处理 package.xml
    • 实现添加元数据类型功能
    • 实现添加元数据成员功能
    • 实现删除元数据类型功能
    • 实现获取元数据类型列表功能
    • 实现 package.xml 验证功能
  3. 创建 Cron 表达式验证器

    • 创建 CronExpressionValidator 类,提供 Cron 表达式验证功能
    • 实现 Cron 表达式验证功能,验证秒、分、时、日、月、周
    • 支持通配符、范围、列表、步长
    • 提供详细的验证错误信息
  4. 创建控制器

    • 创建 MetadataTaskController 控制器,提供 RESTful API 接口
    • 提供 POST /api/metadata-task - 创建元数据任务
    • 提供 PUT /api/metadata-task/{id} - 更新元数据任务
    • 提供 DELETE /api/metadata-task/{id} - 删除元数据任务
    • 提供 GET /api/metadata-task/{id} - 查询元数据任务详情
    • 提供 GET /api/metadata-task - 查询元数据任务列表
    • 提供 POST /api/metadata-task/{id}/validate - 验证元数据任务
    • 使用 @Valid 注解进行参数验证
  5. 创建服务接口

    • 创建 IMetadataTaskService 服务接口,定义元数据任务服务接口
    • 创建 ITaskValidationService 服务接口,定义任务验证服务接口
  6. 创建服务实现

    • 创建 MetadataTaskServiceImpl 服务实现,实现元数据任务服务
    • 使用 MyBatis Plus 的 BaseMapper 实现 CRUD
    • 创建 TaskValidationServiceImpl 服务实现,实现任务验证服务
    • 使用 PackageXmlEditor 验证 package.xml
    • 使用 CronExpressionValidator 验证 Cron 表达式
  7. 创建验证结果类

    • 创建 TaskValidationResult 验证结果类
    • 提供成功和失败的静态工厂方法
    • 提供添加错误信息的方法
  8. 创建单元测试

    • 创建 MetadataTaskServiceImplTest 单元测试
    • 测试创建元数据任务功能
    • 测试查询元数据任务列表功能
    • 使用 Mockito 模拟依赖

关键产出

记录本次会话的关键产出,例如:

  • 生成的代码文件:

    • ScheduleType 枚举类
    • PackageXmlEditor package.xml 编辑器
    • CronExpressionValidator Cron 表达式验证器
    • MetadataTaskController 控制器
    • IMetadataTaskService 服务接口
    • MetadataTaskServiceImpl 服务实现
    • ITaskValidationService 服务接口
    • TaskValidationServiceImpl 服务实现
    • TaskValidationResult 验证结果类
    • MetadataTaskServiceImplTest 单元测试
  • 更新的文档:

  • 解决的问题:

    • 实现了任务定义 CRUD 功能
    • 实现了 package.xml 内容配置
    • 实现了调度类型选择
    • 实现了 Cron 表达式配置
    • 实现了任务验证功能
  • 达成的共识:

    • 使用 MyBatis Plus 的 BaseMapper 实现 CRUD
    • 使用 Java DOM 解析器处理 package.xml
    • 使用自定义 Cron 表达式验证器验证 Cron 表达式
    • 使用 Java 枚举类型管理调度类型

质疑与替代方案

记录在执行过程中提出的质疑和考虑的替代方案:

  • 质疑:是否需要使用 SAX 解析器处理 package.xml

    • 替代方案:使用 SAX 解析器处理 package.xml
    • 评估SAX 解析器内存占用低适合处理大文件但不支持随机访问不适合编辑操作。package.xml 文件较小DOM 解析器足够DOM 解析器支持随机访问,适合编辑操作。
  • 质疑:是否需要使用 Cron 表达式解析库?

    • 替代方案:使用 Cron 表达式解析库
    • 评估Cron 表达式解析库可以准确验证 Cron 表达式,避免验证错误。自定义 Cron 表达式解析器开发成本高维护成本高。Cron 表达式解析库已经足够,无需自定义。
  • 质疑:是否需要使用正则表达式验证 Cron 表达式?

    • 替代方案:使用正则表达式验证 Cron 表达式
    • 评估:正则表达式可以灵活验证 Cron 表达式,但验证不准确,可能验证错误的 Cron 表达式。Cron 表达式解析库可以准确验证 Cron 表达式,避免验证错误。

结论

总结本次会话的结果,包括:

  • 完成的工作:

    • 创建了 ScheduleType 枚举类
    • 创建了 PackageXmlEditor package.xml 编辑器
    • 创建了 CronExpressionValidator Cron 表达式验证器
    • 创建了 MetadataTaskController 控制器
    • 创建了 IMetadataTaskService 服务接口
    • 创建了 MetadataTaskServiceImpl 服务实现
    • 创建了 ITaskValidationService 服务接口
    • 创建了 TaskValidationServiceImpl 服务实现
    • 创建了 TaskValidationResult 验证结果类
    • 创建了 MetadataTaskServiceImplTest 单元测试
  • 达成的目标:

    • 实现了任务定义 CRUD 功能
    • 实现了 package.xml 内容配置
    • 实现了调度类型选择
    • 实现了 Cron 表达式配置
    • 实现了任务验证功能
  • 后续的行动计划:

    • 进行集成测试,确保功能正常
    • 进行性能测试,确保性能满足要求
    • 编写用户文档,说明如何使用元数据任务定义管理功能
  • 需要跟进的事项:

    • 监控 package.xml 编辑性能
    • 监控 Cron 表达式验证性能
    • 定期清理无效的任务

Design Update

  • 是否需要更新 Canvas?
  • Authentication.canvas
  • 其他 Canvas 文件: ____________________

复现步骤

提供复现本次会话结果的具体步骤:

  1. 创建 ScheduleType 枚举类
  2. 创建 PackageXmlEditor package.xml 编辑器
  3. 创建 CronExpressionValidator Cron 表达式验证器
  4. 创建 MetadataTaskController 控制器
  5. 创建 IMetadataTaskService 服务接口
  6. 创建 MetadataTaskServiceImpl 服务实现
  7. 创建 ITaskValidationService 服务接口
  8. 创建 TaskValidationServiceImpl 服务实现
  9. 创建 TaskValidationResult 验证结果类
  10. 创建 MetadataTaskServiceImplTest 单元测试
  11. 运行单元测试,确保所有测试通过
  12. 进行集成测试,确保功能正常