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

5.3 KiB
Raw Permalink Blame History

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 表达式配置错误可能导致任务不按预期执行,建议仔细检查

测试信息

测试环境

  • 本地开发环境

测试结果

  • 待测试

相关链接

  • 需求文档 - 定时任务自动同步、插入和更新对象数据需求
  • 架构决策 - 定时任务自动同步、插入和更新对象数据架构决策
  • 提示词资产 - 定时任务自动同步、插入和更新对象数据实现提示词
  • 会话记录 - 定时任务自动同步、插入和更新对象数据实现会话记录

发布人员

  • AI Assistant - 开发人员

审核信息

  • 审核人员: 待审核
  • 审核日期: 待审核
  • 审核状态: 待审核
  • 审核意见: 待审核