datai/datai-scenes/datai-scene-salesforce/docs/sessions/2026-02-03-003-04-session.md

4.6 KiB
Raw Permalink Blame History

会话记录 - 异步操作

元数据

  • 需求编号003-04
  • 需求名称:异步操作
  • 开始时间2026-02-03
  • 结束时间2026-02-03
  • 当前阶段:阶段 4数据库结构生成

阶段记录

阶段 1需求定义

阶段 2方案设计

  • 状态:已完成
  • 设计文档:2026-02-03-003-04-异步操作-设计.md
  • 关键设计决策:
    1. 架构设计采用分层架构Controller → Service → Factory → Metadata API复用 003-01 的连接管理
    2. 通用异步操作管理Service 层不依赖具体的元数据类型,支持部署、检索等各种异步操作的统一管理
    3. 技术选型
      • Spring Boot 2.7.x + Spring @Async 异步记录操作历史
      • MyBatis Plus 3.5.x 简化数据库操作
      • Salesforce Metadata API 原生 AsyncResult 和 AsyncRequestState
    4. 数据模型:创建 datai_metadata_async 表,包含 13 个字段和 5 个索引
    5. 核心算法
      • 获取异步操作结果:查询状态 → 记录历史 → 返回结果
      • 轮询异步操作状态:循环查询 → 完成/超时检查 → 等待间隔 → 返回结果
      • 取消异步操作:执行取消 → 记录状态 → 返回结果
    6. 接口设计4 个 REST API 接口(获取异步结果、轮询状态、取消操作、获取历史)
    7. VO 设计:定义 AsyncResultVO、MetadataAsyncVO 用于前后端数据交换
    8. 错误处理4 个专用错误码ASYNC_001 ~ ASYNC_004
    9. 性能优化:异步日志、连接复用、轮询优化、索引优化
    10. 安全设计:权限控制、参数校验、错误信息隐藏、超时控制

阶段 3方案决策

  • 状态:已完成
  • 决策文档:
  • 关键决策:
    1. 异步操作结果处理方式Service 层直接返回 Salesforce 原生 AsyncResult 对象Controller 层转换为 VO
    2. 轮询策略服务端同步轮询Server-side Synchronous Polling
    3. 操作历史记录方式:使用 Spring @Async 异步记录操作历史
    4. 错误处理策略:使用专用错误码体系 + 统一异常处理
  • 替代方案分析:
    • 客户端轮询:服务端无状态,但服务端依赖结果时需重复实现
    • 响应式/异步非阻塞:资源利用率高,但增加复杂度
    • 消息队列记录日志:解耦彻底,但引入额外中间件
    • 自定义 AsyncResult 封装:完全控制结构,但增加维护成本

阶段 4数据库结构生成

  • 状态:已完成
  • 涉及数据库变更:
  • SQL 脚本:2026-02-03-003-04-异步操作日志.sql
  • 数据库变更内容:
    1. 新建表datai_metadata_async
      • 13 个字段id, async_id, status, done, message, error_message, operation_time, user_id, create_by, create_time, update_by, update_time, del_flag
      • 5 个索引idx_async_id, idx_status, idx_operation_time, idx_user_id, idx_create_time
    2. 表用途:记录 Metadata API 异步操作的状态查询、轮询、取消等操作历史
    3. 字段说明
      • async_id: 异步操作IDSalesforce返回
      • status: 操作状态Queued/InProgress/Completed/Failed/Canceled/Timeout
      • done: 是否完成0否 1是
      • message: 操作消息
      • error_message: 错误消息
      • operation_time: 操作时间

待完成阶段

  • 阶段 1需求定义
  • 阶段 2方案设计
  • 阶段 3方案决策
  • 阶段 4数据库结构生成
  • 阶段 5提示词生成
  • 阶段 6代码生成
  • 阶段 7会话记录
  • 阶段 8变更日志
  • 阶段 9复盘和 API 文档
  • 阶段 10代码提交

相关文档