datai/datai-scenes/datai-scene-salesforce/docs/changelog/2026-02-02-002-02-changelog.md

8.3 KiB
Raw Permalink Blame History

变更日志 - Apex 代码编译和执行

元数据

  • 需求编号: 002-02
  • 需求名称: Apex 代码编译和执行
  • 创建时间: 2026-02-02
  • 创建人: AI Assistant
  • 版本号: v1.0.0
  • 状态: 已完成

变更概述

实现 Apex 代码编译和执行功能,提供完整的 Apex 开发工具支持。包括编译 Apex 类、编译 Apex 触发器、编译并运行测试、执行匿名 Apex 代码等核心功能,以及查询编译历史、测试结果、代码覆盖率等辅助功能。

变更内容

新增功能

1. Apex 代码编译功能

  • 编译 Apex 类 (compileClasses)

    • 支持批量编译 Apex 类
    • 返回编译结果(成功/失败、错误信息、行号、列号)
    • 自动保存编译历史到数据库
  • 编译 Apex 触发器 (compileTriggers)

    • 支持批量编译 Apex 触发器
    • 返回编译结果(成功/失败、错误信息、行号、列号)
    • 自动保存编译历史到数据库
  • 编译并测试 (compileAndTest)

    • 支持同时编译类和触发器
    • 支持运行单元测试
    • 返回编译结果和测试结果
    • 自动保存测试结果和代码覆盖率到数据库

2. Apex 代码执行功能

  • 执行匿名 Apex 代码 (executeAnonymous)
    • 支持执行任意 Apex 代码片段
    • 返回执行结果(编译状态、执行状态、异常信息)
    • 支持获取执行日志

3. 查询功能

  • 查询编译历史 (queryCompileHistory)

    • 支持按编译类型筛选
    • 支持按时间范围筛选
    • 返回编译历史列表
  • 查询测试结果 (queryTestResults)

    • 支持按测试运行 ID 筛选
    • 支持按时间范围筛选
    • 返回测试结果列表
  • 查询代码覆盖率 (queryCodeCoverage)

    • 支持按类名筛选
    • 支持按类型Class/Trigger筛选
    • 返回代码覆盖率列表

新增数据库表

  1. datai_apex_compile_history - Apex 编译历史表

    • 存储编译操作的历史记录
    • 包含编译类型、代码内容、编译结果、错误信息、编译时间等字段
    • 支持软删除del_flag 字段)
  2. datai_apex_test_result - Apex 测试结果表

    • 存储测试运行的结果
    • 包含测试运行 ID、运行测试数量、失败数量、执行时间等字段
    • 支持软删除del_flag 字段)
  3. datai_apex_test_failure - Apex 测试失败详情表

    • 存储测试失败的详细信息
    • 包含类名、方法名、异常类型、错误消息、堆栈跟踪等字段
    • 外键关联到测试结果表
    • 支持软删除del_flag 字段)
  4. datai_apex_code_coverage - Apex 代码覆盖率表

    • 存储代码覆盖率数据
    • 包含类名、类型、总位置数、未覆盖位置数、覆盖率百分比等字段
    • 外键关联到测试结果表

新增代码文件

Controller3 个)

  • datai-salesforce-apex/src/main/java/com/datai/apex/controller/ApexCompileController.java

    • 提供编译相关接口(编译类、编译触发器、编译并测试)
  • datai-salesforce-apex/src/main/java/com/datai/apex/controller/ApexExecuteController.java

    • 提供执行相关接口(执行匿名代码)
  • datai-salesforce-apex/src/main/java/com/datai/apex/controller/ApexQueryController.java

    • 提供查询相关接口(查询编译历史、测试结果、代码覆盖率)

Service2 个)

  • datai-salesforce-apex/src/main/java/com/datai/apex/service/IApexCompileService.java

    • 定义 Apex 编译和执行服务接口
  • datai-salesforce-apex/src/main/java/com/datai/apex/service/impl/ApexCompileServiceImpl.java

    • 实现 Apex 编译和执行服务
    • 集成 Salesforce SOAP API
    • 实现数据库持久化
    • 使用 ReentrantLock 保证多线程安全

DTO5 个)

  • CompileClassesDto.java - 编译类请求 DTO
  • CompileTriggersDto.java - 编译触发器请求 DTO
  • CompileAndTestDto.java - 编译并测试请求 DTO
  • ExecuteAnonymousDto.java - 执行匿名代码请求 DTO
  • RunTestsRequestDto.java - 运行测试请求 DTO

VO7 个)

  • CompileClassResultVo.java - 编译类结果 VO
  • CompileTriggerResultVo.java - 编译触发器结果 VO
  • CompileAndTestResultVo.java - 编译并测试结果 VO
  • ExecuteAnonymousResultVo.java - 执行匿名代码结果 VO
  • RunTestsResultVo.java - 运行测试结果 VO
  • CodeCoverageResultVo.java - 代码覆盖率结果 VO
  • TestFailureVo.java - 测试失败详情 VO

Entity4 个,代码生成器生成)

  • DataiApexCompileHistory.java - 编译历史实体
  • DataiApexTestResult.java - 测试结果实体
  • DataiApexTestFailure.java - 测试失败详情实体
  • DataiApexCodeCoverage.java - 代码覆盖率实体

Mapper4 个,代码生成器生成)

  • DataiApexCompileHistoryMapper.java - 编译历史 Mapper
  • DataiApexTestResultMapper.java - 测试结果 Mapper
  • DataiApexTestFailureMapper.java - 测试失败详情 Mapper
  • DataiApexCodeCoverageMapper.java - 代码覆盖率 Mapper

新增 REST API 接口7 个)

  1. POST /api/apex/compile/classes - 编译 Apex 类
  2. POST /api/apex/compile/triggers - 编译 Apex 触发器
  3. POST /api/apex/compile/compile-and-test - 编译并测试
  4. POST /api/apex/execute/anonymous - 执行匿名 Apex 代码
  5. GET /api/apex/compile/history - 查询编译历史
  6. GET /api/apex/test/results - 查询测试结果
  7. GET /api/apex/test/coverage - 查询代码覆盖率

新增 SQL 脚本

  • docs/sql/2026-02-02-002-02-Apex代码编译和执行.sql
    • 创建 4 张数据库表
    • 包含标准字段dept_id、create_by、create_time、update_by、update_time、del_flag
    • 建立适当的索引

新增文档

影响范围

模块影响

  • 模块: datai-salesforce-apex
  • 类型: 新增功能模块

文件影响

  • 新增文件: 29 个
    • Controller: 3 个
    • Service: 2 个
    • DTO: 5 个
    • VO: 7 个
    • Entity: 4 个(代码生成器生成)
    • Mapper: 4 个(代码生成器生成)
    • Mapper XML: 4 个(代码生成器生成)

数据库影响

  • 新增表: 4 张
    • datai_apex_compile_history
    • datai_apex_test_result
    • datai_apex_test_failure
    • datai_apex_code_coverage

接口影响

  • 新增接口: 7 个 REST API 接口

技术方案

架构设计

  • 采用分层架构Controller -> Service -> Factory -> Salesforce API
  • 使用 Spring Boot + MyBatis 技术栈
  • 集成 Salesforce SOAP APIapex.jar

关键设计决策

  1. 数据持久化策略: 使用数据库持久化,支持历史查询和审计
  2. 结果处理方式: 直接使用 apex.jar 原生类,避免二次封装
  3. 并发控制策略: 使用 ReentrantLock 保证多线程安全
  4. 数据库表设计: 采用 4 张独立表,避免单表数据冗余

安全设计

  • 使用 Spring Security 进行权限控制
  • 所有接口需要登录认证(@PreAuthorize("@ss.hasLogin()")
  • 参数校验和异常处理

性能优化

  • 使用 ReentrantLock 保证多线程安全
  • 数据库索引优化
  • 连接复用(通过 ApexConnectionFactory

相关文档

测试说明

  • 所有功能需要通过单元测试验证
  • 测试覆盖率要求不低于 80%
  • 需要覆盖正常场景和异常场景
  • 需要测试多线程并发场景

注意事项

  1. 所有编译和执行操作都使用 source org 类型
  2. 需要确保 Salesforce 会话有效
  3. 大批量编译时需要考虑性能影响
  4. 数据库表需要定期清理历史数据