datai/docs/archive/changelog/0015-scheduled-tasks-implementation.md

130 lines
5.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Changelog - 定时任务自动同步、插入和更新对象数据实现
## 变更信息
- **版本号**: v0.1.15
- **发布日期**: 2026-01-16
- **变更类型**: 特性更新
## 变更摘要
本次变更实现了定时任务自动同步、插入和更新对象数据功能,为系统提供了自动化的数据同步、插入和更新能力。通过在 task 目录下创建三个定时任务类ObjectSyncTask、ObjectInsertTask、ObjectUpdateTask实现了基于对象字段配置的自动执行逻辑。定时任务采用现有的 Quartz 框架datai-quartz 模块)进行管理,支持通过 SysJob 实体配置执行时间、启用状态等。每个定时任务都有完善的日志记录和异常处理机制,单个对象操作失败不影响其他对象的处理。
## 详细变更
### 特性更新
- **对象自动同步任务** - 在 `task` 目录下创建 `ObjectSyncTask.java`
- Bean 名称objectSyncTask
- 方法autoSyncObjects()
- 功能:扫描所有对象,判断是否满足同步条件,调用相应的同步方法
- 同步条件:
- isWork = true启用同步
- syncStatus = false当前没有正在执行的同步任务
- 对象配置完整api、label 等关键字段不为空)
- 存量同步 vs 增量同步:
- 存量同步isIncremental = false增量更新为 false
- 增量同步isIncremental = true增量更新为 true
- **对象自动插入任务** - 在 `task` 目录下创建 `ObjectInsertTask.java`
- Bean 名称objectInsertTask
- 方法autoInsertObjects() / autoInsertObjects(String targetOrgType)
- 功能:扫描所有对象,判断是否满足插入条件,调用相应的插入方法
- 插入条件:
- isCreateable = true可创建
- totalRows > 0对象有本地数据
- 对象配置完整api、label 等关键字段不为空)
- 默认目标ORG类型Sandbox
- **对象自动更新任务** - 在 `task` 目录下创建 `ObjectUpdateTask.java`
- Bean 名称objectUpdateTask
- 方法autoUpdateObjects() / autoUpdateObjects(String targetOrgType)
- 功能:扫描所有对象,判断是否满足更新条件,调用相应的更新方法
- 更新条件:
- isUpdateable = true可更新
- totalRows > 0对象有本地数据
- 对象配置完整api、label 等关键字段不为空)
- 默认目标ORG类型Sandbox
### Bug 修复
### 性能优化
- **复用现有框架** - 复用现有的 Quartz 框架datai-quartz 模块),无需额外依赖
- **串行执行方式** - 采用串行执行的方式,实现简单,避免并发问题
- **完善的异常处理** - 单个对象操作失败不影响其他对象的处理
- **详细的日志记录** - 每个任务都有详细的日志记录,便于问题排查和性能监控
### 安全修复
### 其他变更
## 影响范围
### 受影响的模块
- **datai-salesforce-integration** - 新增三个定时任务类,不影响现有功能
### 兼容性说明
- 本次变更完全兼容现有功能,所有新增内容均为独立模块
- 定时任务通过 datai-quartz 模块进行管理,支持动态配置执行时间、启用状态等
- 定时任务方法通过 JobInvokeUtil 工具进行调用,支持通过反射调用 Spring Bean 方法
- 定时任务执行日志通过 SysJobLog 实体进行持久化,支持查看执行历史
## 升级指南
### 升级步骤
1. 部署新版本的 `datai-salesforce-integration` 模块
2. 在 SysJob 表中配置定时任务记录:
- 任务名称:对象自动同步任务 / 对象自动插入任务 / 对象自动更新任务
- 任务组名DEFAULT
- 调用目标字符串objectSyncTask.autoSyncObjects / objectInsertTask.autoInsertObjects / objectUpdateTask.autoUpdateObjects
- Cron 表达式根据实际需求配置例如0 0 2 * * ? 表示每天凌晨2点执行
- 执行策略:立即执行 / 执行一次 / 放弃执行
- 并发执行:禁止
- 状态:正常
3. 通过 SysJobController 管理定时任务,可以动态调整执行时间、启用/禁用状态等
### 注意事项
- 定时任务执行时间可能与业务高峰期冲突,建议在业务低峰期执行
- 定时任务执行失败可能导致数据不一致,建议配置告警机制
- 条件判断逻辑可能存在错误,建议在测试环境中充分验证后再部署到生产环境
- 定时任务的 Cron 表达式配置错误可能导致任务不按预期执行,建议仔细检查
## 测试信息
### 测试环境
- 本地开发环境
### 测试结果
- 待测试
## 相关链接
- [需求文档](../requirements/REQ-005.md) - 定时任务自动同步、插入和更新对象数据需求
- [架构决策](../decisions/adr/0005-scheduled-tasks-implementation.md) - 定时任务自动同步、插入和更新对象数据架构决策
- [提示词资产](../prompts/005-scheduled-tasks-implementation.md) - 定时任务自动同步、插入和更新对象数据实现提示词
- [会话记录](../sessions/20260116-scheduled-tasks-implementation.md) - 定时任务自动同步、插入和更新对象数据实现会话记录
## 发布人员
- AI Assistant - 开发人员
## 审核信息
- **审核人员**: 待审核
- **审核日期**: 待审核
- **审核状态**: 待审核
- **审核意见**: 待审核