- 新增 4 个定时任务类: - ObjectSyncTask: 对象自动同步任务 - ObjectInsertTask: 对象自动插入任务 - ObjectUpdateTask: 对象自动更新任务 - MetadataChangeAutoSyncTask: 元数据变更自动同步任务 - 新增 2 个多对象操作接口: - insertMultipleObjectDataToTarget: 批量插入对象数据到目标系统 - updateMultipleObjectDataToTarget: 批量更新对象数据到目标系统 - 新增完整的定时任务文档: - task/index.md: 定时任务文档索引 - ObjectSyncTask.md: 对象自动同步任务文档 - ObjectInsertTask.md: 对象自动插入任务文档 - ObjectUpdateTask.md: 对象自动更新任务文档 - MetadataChangeAutoSyncTask.md: 元数据变更自动同步任务文档 - RateLimitResetTask.md: 每日限流重置任务文档 - 新增 API 文档索引:api-docs/index.md - 更新唯一真源文档中心:docs/index.md - 新增完整的项目文档: - REQ-005.md: 定时任务自动同步、插入和更新对象数据需求 - REQ-006.md: 元数据变更自动同步本地数据库需求 - 0005-scheduled-tasks-implementation.md: 定时任务架构决策 - 0006-metadata-change-auto-sync.md: 元数据变更自动同步架构决策 - 005-scheduled-tasks-implementation.md: 定时任务实现提示词 - 006-metadata-change-auto-sync.md: 元数据变更自动同步实现提示词 - 20260116-scheduled-tasks-implementation.md: 定时任务实现会话记录 - 20260116-metadata-change-auto-sync.md: 元数据变更自动同步实现会话记录 - 20260116-scheduled-tasks-implementation-retro.md: 定时任务实现复盘 - 20260116-metadata-change-auto-sync-retro.md: 元数据变更自动同步实现复盘 - 0015-scheduled-tasks-implementation.md: 定时任务变更记录 - 0016-metadata-change-auto-sync.md: 元数据变更自动同步变更记录 - 更新 CHANGELOG.md 和 README.md
8.4 KiB
8.4 KiB
定时任务自动同步、插入和更新对象数据实现提示词
输入引用
引用相关的 docs 文档链接:
- REQ-005 - 定时任务自动同步、插入和更新对象数据需求
- 0005-scheduled-tasks-implementation.md - 定时任务自动同步、插入和更新对象数据架构决策
- DataiIntegrationObjectController - 对象同步控制接口
- DataiIntegrationObject - 对象同步控制实体
- RateLimitResetTask - 每日限流重置任务(参考实现)
Context Maps
强制列出本次 Prompt 依赖的 Canvas 文件:
- Authentication.canvas - 项目架构视觉化展示
- 相关节点: DataiIntegrationObjectController - 对象同步控制接口
- 相关节点: DataiIntegrationObjectService - 对象同步服务
目标
实现定时任务自动同步、插入和更新对象数据功能,包括:
- 在 task 目录下创建三个定时任务类
- 参考 RateLimitResetTask 的写法,使用 @Component、@Slf4j、@Autowired 注解
- 实现对象自动同步任务,扫描满足条件的对象并调用同步方法
- 实现对象自动插入任务,扫描满足条件的对象并调用插入方法
- 实现对象自动更新任务,扫描满足条件的对象并调用更新方法
- 每个任务都有详细的日志记录和异常处理
输出格式
输出以下 Java 代码文件:
-
ObjectSyncTask.java - 对象自动同步任务
- 路径:
d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\task\ObjectSyncTask.java - 类名:ObjectSyncTask
- Bean 名称:objectSyncTask
- 方法:autoSyncObjects()
- 功能:扫描所有对象,判断是否满足同步条件,调用相应的同步方法
- 路径:
-
ObjectInsertTask.java - 对象自动插入任务
- 路径:
d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\task\ObjectInsertTask.java - 类名:ObjectInsertTask
- Bean 名称:objectInsertTask
- 方法:autoInsertObjects()
- 功能:扫描所有对象,判断是否满足插入条件,调用相应的插入方法
- 路径:
-
ObjectUpdateTask.java - 对象自动更新任务
- 路径:
d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-integration\src\main\java\com\datai\integration\task\ObjectUpdateTask.java - 类名:ObjectUpdateTask
- Bean 名称:objectUpdateTask
- 方法:autoUpdateObjects()
- 功能:扫描所有对象,判断是否满足更新条件,调用相应的更新方法
- 路径:
约束
列出使用此提示词时的约束条件,例如:
- 必须参考 RateLimitResetTask 的写法
- 必须使用 @Component 注解,指定 bean 名称
- 必须使用 @Slf4j 注解进行日志记录
- 必须使用 @Autowired 注入 IDataiIntegrationObjectService
- 必须定义公共方法作为定时任务的执行方法
- 必须在方法内部有 try-catch 异常处理
- 必须记录详细的日志信息
- 必须扫描所有对象,判断是否满足执行条件
- 必须根据对象的字段判断执行存量同步还是增量同步
- 必须调用 IDataiIntegrationObjectService 的方法,而不是 Controller 的方法
Rule Set
"请严格参考 @Authentication.canvas 中的状态机转移逻辑,不要自行发挥。"
具体规则:
- 必须使用 Canvas 中定义的类名和方法名
- 必须遵循 Canvas 中定义的调用关系
- 必须参考 Canvas 中的流程图逻辑
- 必须参考 RateLimitResetTask 的代码风格
- 必须调用 IDataiIntegrationObjectService 的方法,而不是 Controller 的方法
- 必须通过扫描对象字段来判断是否满足条件
Prompt Content
请根据以下要求生成三个定时任务类的代码:
1. ObjectSyncTask.java - 对象自动同步任务
要求:
- 参考 RateLimitResetTask 的代码风格
- 使用 @Component("objectSyncTask") 注解
- 使用 @Slf4j 注解
- 使用 @Autowired 注入 IDataiIntegrationObjectService
- 定义 public void autoSyncObjects() 方法
- 方法功能:
- 查询所有对象
- 遍历每个对象,判断是否满足同步条件:
- isWork = true(启用同步)
- syncStatus = false(当前没有正在执行的同步任务)
- 对象配置完整(api、label 等关键字段不为空)
- 对于满足条件的对象:
- 如果 isIncremental = false,调用 syncSingleObjectData(id) 执行存量同步
- 如果 isIncremental = true,调用 syncSingleObjectData(id) 执行增量同步
- 记录详细的日志信息
- 使用 try-catch 处理异常
2. ObjectInsertTask.java - 对象自动插入任务
要求:
- 参考 RateLimitResetTask 的代码风格
- 使用 @Component("objectInsertTask") 注解
- 使用 @Slf4j 注解
- 使用 @Autowired 注入 IDataiIntegrationObjectService
- 定义 public void autoInsertObjects() 方法
- 方法功能:
- 查询所有对象
- 遍历每个对象,判断是否满足插入条件:
- isCreateable = true(可创建)
- totalRows > 0(对象有本地数据)
- 对象配置完整(api、label 等关键字段不为空)
- 对于满足条件的对象:
- 调用 insertObjectDataToTarget(id, targetOrgType) 方法执行插入操作
- targetOrgType 可以从配置中读取或使用默认值
- 记录详细的日志信息
- 使用 try-catch 处理异常
3. ObjectUpdateTask.java - 对象自动更新任务
要求:
- 参考 RateLimitResetTask 的代码风格
- 使用 @Component("objectUpdateTask") 注解
- 使用 @Slf4j 注解
- 使用 @Autowired 注入 IDataiIntegrationObjectService
- 定义 public void autoUpdateObjects() 方法
- 方法功能:
- 查询所有对象
- 遍历每个对象,判断是否满足更新条件:
- isUpdateable = true(可更新)
- totalRows > 0(对象有本地数据)
- 对象配置完整(api、label 等关键字段不为空)
- 对于满足条件的对象:
- 调用 updateObjectDataToTarget(id, targetOrgType) 方法执行更新操作
- targetOrgType 可以从配置中读取或使用默认值
- 记录详细的日志信息
- 使用 try-catch 处理异常
通用要求
-
日志格式:
- 开始执行时:log.info("开始执行对象自动同步任务")
- 执行成功时:log.info("对象自动同步任务完成,共处理 {} 个对象", count)
- 执行失败时:log.error("执行对象自动同步任务失败", e)
-
异常处理:
- 每个对象的操作都应该有独立的 try-catch
- 单个对象操作失败不应该影响其他对象的处理
- 记录失败的对象ID和错误信息
-
性能考虑:
- 可以考虑批量处理,减少数据库查询次数
- 可以考虑异步处理,提高执行效率
验收标准
定义验证输出质量的具体标准,例如:
- 功能完整性:三个定时任务类都能正确实现
- 代码正确性:代码能够编译通过,无语法错误
- 代码风格:符合 RateLimitResetTask 的代码风格
- 日志完整性:每个任务都有详细的日志记录
- 异常处理:每个任务都有完善的异常处理
- 条件判断准确性:能够准确判断对象是否满足执行条件
风险
识别使用此提示词可能带来的风险,例如:
- 输出质量风险:生成的代码可能存在逻辑错误
- 技术实现风险:定时任务的执行时间可能与业务高峰期冲突
- 时间成本风险:生成代码可能需要一定时间
- 其他潜在风险:条件判断逻辑可能存在错误
使用记录
| 日期 | 使用场景 | 输入参数 | 输出结果 | 反馈 | 改进措施 |
|---|---|---|---|---|---|
| 2026-01-16 | 实现定时任务自动同步、插入和更新对象数据 | REQ-005, 0005-scheduled-tasks-implementation.md | 三个定时任务类的 Java 代码 | 待反馈 | 待改进 |
版本
- 版本号: v1.0.0
- 创建日期: 2026-01-16
- 创建人: 用户
- 最后更新: 2026-01-16