datai/datai-scenes/datai-scene-salesforce/docs/api-docs/task/index.md
Kris 21c82a4b36 feat: 添加定时任务功能和文档
- 新增 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
2026-01-16 16:38:35 +08:00

149 lines
5.8 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.

# 定时任务文档
## 概述
本目录包含 Salesforce 集成系统中所有定时任务的详细文档。定时任务通过 Quartz 框架调度执行,负责自动化的数据同步、插入、更新和系统维护操作。
## 定时任务列表
### 1. ObjectSyncTask - 对象自动同步任务
- **文档**: [ObjectSyncTask.md](ObjectSyncTask.md)
- **Bean 名称**: objectSyncTask
- **功能**: 自动扫描满足条件的对象,执行同步操作(存量同步或增量同步)
- **执行条件**:
- isWork = true启用同步
- syncStatus = false当前没有正在执行的同步任务
- 对象配置完整api、label 等关键字段不为空)
### 2. ObjectInsertTask - 对象自动插入任务
- **文档**: [ObjectInsertTask.md](ObjectInsertTask.md)
- **Bean 名称**: objectInsertTask
- **功能**: 自动扫描满足条件的对象,执行插入操作到目标系统
- **执行条件**:
- isCreateable = true可创建
- totalRows > 0对象有本地数据
- 对象配置完整api、label 等关键字段不为空)
### 3. ObjectUpdateTask - 对象自动更新任务
- **文档**: [ObjectUpdateTask.md](ObjectUpdateTask.md)
- **Bean 名称**: objectUpdateTask
- **功能**: 自动扫描满足条件的对象,执行更新操作到目标系统
- **执行条件**:
- isUpdateable = true可更新
- totalRows > 0对象有本地数据
- 对象配置完整api、label 等关键字段不为空)
### 4. MetadataChangeAutoSyncTask - 元数据变更自动同步任务
- **文档**: [MetadataChangeAutoSyncTask.md](MetadataChangeAutoSyncTask.md)
- **Bean 名称**: metadataChangeAutoSyncTask
- **功能**: 自动扫描未同步的元数据变更记录,执行同步操作到本地数据库
- **执行条件**:
- syncStatus = false 或 null未同步
- retryCount < 3重试次数小于3次
- 对象配置完整且启用同步
- 对象当前没有正在执行的同步任务
### 5. RateLimitResetTask - 每日限流重置任务
- **文档**: [RateLimitResetTask.md](RateLimitResetTask.md)
- **Bean 名称**: rateLimitResetTask
- **功能**: 重置所有每日限流配置的使用量剩余值和重置时间
- **执行条件**: 无条件执行每日定时执行
## 定时任务配置
### Quartz 配置
定时任务通过 Quartz 框架进行调度管理需要在 `sys_job` 表中配置以下信息
| 字段 | 描述 | 示例 |
|------|------|------|
| job_name | 任务名称 | objectSyncTask |
| job_group | 任务组 | DEFAULT |
| invoke_target | 调用目标 | objectSyncTask.autoSyncObjects |
| cron_expression | Cron 表达式 | 0 0 2 * * ? |
| status | 状态 | 0正常 |
### 推荐执行时间
| 任务名称 | 推荐执行时间 | 说明 |
|----------|--------------|------|
| ObjectSyncTask | 每天凌晨 2:00 | 避开业务高峰期 |
| ObjectInsertTask | 每天凌晨 3:00 | 在同步任务之后执行 |
| ObjectUpdateTask | 每天凌晨 4:00 | 在插入任务之后执行 |
| MetadataChangeAutoSyncTask | 每小时执行一次 | 及时同步元数据变更 |
| RateLimitResetTask | 每天凌晨 0:00 | 每日重置 |
## 监控和日志
### 日志级别
所有定时任务使用 `@Slf4j` 注解进行日志记录日志级别如下
- **INFO**: 任务开始完成成功/失败统计
- **DEBUG**: 跳过执行的对象详细信息
- **ERROR**: 任务执行失败同步/插入/更新失败
### 日志示例
```
2026-01-16 02:00:00.000 INFO [objectSyncTask] 开始执行对象自动同步任务
2026-01-16 02:00:00.100 INFO [objectSyncTask] 开始同步对象数据对象ID: 1, API: Account, 增量同步: true
2026-01-16 02:00:05.500 INFO [objectSyncTask] 对象数据同步成功对象ID: 1, API: Account
2026-01-16 02:00:10.000 INFO [objectSyncTask] 对象自动同步任务完成,共扫描 10 个对象,成功同步 8 个,跳过 2 个,失败 0 个
```
## 故障排查
### 常见问题
1. **任务未执行**
- 检查 Quartz 调度器是否启动
- 检查任务状态是否为正常status = 0
- 检查 Cron 表达式是否正确
2. **任务执行失败**
- 查看日志中的错误信息
- 检查数据库连接是否正常
- 检查 Salesforce API 连接是否正常
3. **对象被跳过**
- 检查对象配置是否完整
- 检查对象是否启用同步isWork = true
- 检查对象当前是否有正在执行的同步任务
## 相关文档
- [需求文档 - 定时任务自动同步、插入和更新对象数据](../requirements/REQ-005.md)
- [需求文档 - 元数据变更自动同步本地数据库](../requirements/REQ-006.md)
- [架构决策 - 定时任务自动同步、插入和更新对象数据](../decisions/adr/0005-scheduled-tasks-implementation.md)
- [架构决策 - 元数据变更自动同步本地数据库](../decisions/adr/0006-metadata-change-auto-sync.md)
- [变更记录 - 定时任务自动同步、插入和更新对象数据](../changelog/0015-scheduled-tasks-implementation.md)
- [变更记录 - 元数据变更自动同步本地数据库](../changelog/0016-metadata-change-auto-sync.md)
## 维护指南
### 添加新定时任务
1. `task` 目录下创建新的任务类
2. 使用 `@Component` 注解指定 bean 名称
3. 使用 `@Slf4j` 注解进行日志记录
4. 实现任务逻辑包含详细的日志和异常处理
5. `sys_job` 表中配置任务调度信息
6. 在本目录下创建对应的任务文档
7. 更新本索引文件
### 修改现有定时任务
1. 修改任务类代码
2. 更新对应的任务文档
3. 更新相关的需求文档架构决策和变更记录
4. 在测试环境中充分验证
### 删除定时任务
1. 停用任务 `sys_job` 表中将 status 设置为 1
2. 删除任务类代码
3. 删除对应的任务文档
4. 更新本索引文件
5. 记录删除原因和影响范围