datai/datai-scenes/datai-scene-salesforce/docs/reference-code/datai-salesforce-apex-module.md

16 KiB
Raw Permalink Blame History

datai-salesforce-apex 模块详细文档

模块概述

datai-salesforce-apex 是 Datai 项目中专门用于管理 Salesforce Apex 相关功能的模块。该模块提供了对 Apex 代码执行、日志管理、测试管理、WSDL 转换等功能的完整支持。

模块路径: d:\idea_demo\datai\datai-scenes\datai-scene-salesforce\datai-salesforce-apex

创建日期: 2026-02-04

版本: 1.0.0

Java 版本: 22


技术栈

核心依赖

依赖 版本 说明
datai-file-common 1.0.0 文件通用模块
datai-salesforce-auth - Salesforce 认证模块
salesforce-apex 0.0.1 Salesforce Apex 工具包(本地 JAR

技术框架

  • Spring Boot: 应用框架
  • MyBatis: ORM 框架
  • Swagger/OpenAPI: API 文档
  • Spring Security: 安全认证
  • Lombok: 简化 Java 代码

模块架构

分层架构

datai-salesforce-apex/
├── controller/          # 控制器层10个
├── service/            # 服务层
│   ├── I*Service.java  # 服务接口10个
│   └── impl/           # 服务实现10个
├── mapper/             # 数据访问层10个
├── model/              # 数据模型层
│   ├── domain/         # 领域模型10个
│   ├── dto/            # 数据传输对象10个
│   └── vo/             # 视图对象10个
└── resources/
    ├── mapper/apex/    # MyBatis XML 映射文件10个
    └── lib/apex.jar    # Salesforce Apex 工具包

功能模块

1. 匿名 Apex 执行历史管理

功能描述: 记录和管理匿名 Apex 代码的执行历史,包括执行结果、编译状态、异常信息等。

相关类:

API 端点:

  • GET /apex/apexexecutehistory/list - 查询列表
  • POST /apex/apexexecutehistory/export - 导出数据
  • GET /apex/apexexecutehistory/{id} - 获取详情
  • POST /apex/apexexecutehistory - 新增记录
  • PUT /apex/apexexecutehistory - 修改记录
  • DELETE /apex/apexexecutehistory/{ids} - 删除记录

数据字段:

  • id: 主键ID
  • executeCode: 匿名代码内容
  • success: 执行是否成功
  • compiled: 编译是否成功
  • compileProblem: 编译问题描述
  • exceptionMessage: 异常消息
  • exceptionStackTrace: 异常堆栈
  • line: 错误行号
  • column: 错误列号
  • apexLogId: Apex日志ID
  • executeTime: 执行时间
  • sfUserId: Salesforce用户ID

2. Apex 日志管理

功能描述: 管理 Salesforce Apex 执行日志包括日志ID、应用程序、持续时间、操作等信息。

相关类:

API 端点:

  • GET /apex/apexlog/list - 查询日志列表
  • POST /apex/apexlog/export - 导出日志
  • GET /apex/apexlog/{id} - 获取日志详情
  • POST /apex/apexlog - 新增日志
  • PUT /apex/apexlog - 修改日志
  • DELETE /apex/apexlog/{ids} - 删除日志

数据字段:

  • id: 主键ID
  • logId: 日志IDSalesforce 日志 ID
  • application: 应用程序
  • durationMilliseconds: 持续时间(毫秒)
  • location: 位置
  • logLength: 日志长度
  • operation: 操作
  • startTime: 开始时间
  • status: 状态
  • sfUserId: Salesforce用户ID
  • userId: 用户ID

3. Apex 日志分类管理

功能描述: 管理 Apex 日志的分类信息。

相关类:

API 端点:

  • GET /apex/apexlogcategory/list - 查询分类列表
  • POST /apex/apexlogcategory/export - 导出分类
  • GET /apex/apexlogcategory/{id} - 获取分类详情
  • POST /apex/apexlogcategory - 新增分类
  • PUT /apex/apexlogcategory - 修改分类
  • DELETE /apex/apexlogcategory/{ids} - 删除分类

4. Apex 测试管理

4.1 Apex 测试请求

功能描述: 管理 Apex 测试请求配置,包括测试类、测试方法、命名空间等。

相关类:

API 端点:

  • GET /apex/apextestrequest/list - 查询请求列表
  • POST /apex/apextestrequest/export - 导出请求
  • GET /apex/apextestrequest/{id} - 获取请求详情
  • POST /apex/apextestrequest - 新增请求
  • PUT /apex/apextestrequest - 修改请求
  • DELETE /apex/apextestrequest/{ids} - 删除请求

数据字段:

  • id: 主键ID
  • testResultId: 测试结果ID外键
  • testRunId: 测试运行ID
  • allTests: 是否运行所有测试
  • classes: 测试类列表
  • namespace: 命名空间
  • packages: 包列表
  • tests: 测试方法列表
  • maxFailedTests: 最大失败测试数
  • skipCodeCoverage: 是否跳过代码覆盖率

4.2 Apex 测试结果

功能描述: 记录 Apex 测试执行结果,包括测试数量、失败数量、覆盖率等信息。

相关类:

API 端点:

  • GET /apex/apextestresult/list - 查询结果列表
  • POST /apex/apextestresult/export - 导出结果
  • GET /apex/apextestresult/{id} - 获取结果详情
  • POST /apex/apextestresult - 新增结果
  • PUT /apex/apextestresult - 修改结果
  • DELETE /apex/apextestresult/{ids} - 删除结果

数据字段:

  • id: 主键ID
  • testRunId: 测试运行ID
  • numTestsRun: 运行的测试数量
  • numFailures: 失败的测试数量
  • totalTime: 总执行时间(毫秒)
  • apexLogId: Apex日志ID
  • testTime: 测试时间
  • allPassed: 是否全部通过
  • totalCoverage: 总体覆盖率百分比

4.3 Apex 测试成功详情

功能描述: 记录 Apex 测试成功的详细信息。

相关类:

4.4 Apex 测试失败详情

功能描述: 记录 Apex 测试失败的详细信息。

相关类:


5. Apex Flow 覆盖率警告管理

功能描述: 管理 Apex Flow 覆盖率警告信息。

相关类:

API 端点:

  • GET /apex/apexflowwarning/list - 查询警告列表
  • POST /apex/apexflowwarning/export - 导出警告
  • GET /apex/apexflowwarning/{id} - 获取警告详情
  • POST /apex/apexflowwarning - 新增警告
  • PUT /apex/apexflowwarning - 修改警告
  • DELETE /apex/apexflowwarning/{ids} - 删除警告

数据字段:

  • id: 主键ID
  • testResultId: 测试结果ID外键
  • name: Flow名称
  • type: Flow类型
  • namespace: 命名空间
  • message: 警告消息

6. WSDL 转换管理

6.1 WSDL 转换记录

功能描述: 管理 WSDL 到 Apex 类的转换记录。

相关类:

API 端点:

  • GET /apex/apexwsdlconversion/list - 查询转换记录列表
  • POST /apex/apexwsdlconversion/export - 导出转换记录
  • GET /apex/apexwsdlconversion/{id} - 获取转换记录详情
  • POST /apex/apexwsdlconversion - 新增转换记录
  • PUT /apex/apexwsdlconversion - 修改转换记录
  • DELETE /apex/apexwsdlconversion/{ids} - 删除转换记录

数据字段:

  • id: 转换ID
  • wsdlUrl: WSDL URL
  • packageName: 包名
  • generateAsync: 是否生成异步代码
  • status: 转换状态pending/processing/success/failed
  • errorMessage: 错误信息

6.2 WSDL 转换生成的 Apex 类

功能描述: 管理 WSDL 转换后生成的 Apex 类代码。

相关类:

API 端点:

  • GET /apex/apexwsdlclass/list - 查询 Apex 类列表
  • POST /apex/apexwsdlclass/export - 导出 Apex 类
  • GET /apex/apexwsdlclass/{id} - 获取 Apex 类详情
  • POST /apex/apexwsdlclass - 新增 Apex 类
  • PUT /apex/apexwsdlclass - 修改 Apex 类
  • DELETE /apex/apexwsdlclass/{ids} - 删除 Apex 类

数据字段:

  • id: 类ID
  • conversionId: 转换ID
  • className: 类名
  • classCode: 类代码

数据模型设计

统一基类

所有 Domain 类都继承自 BaseEntity,包含以下公共字段:

- createBy: 创建人
- createTime: 创建时间
- updateBy: 更新人
- updateTime: 更新时间
- remark: 备注

模型转换

模块采用三层模型设计:

  1. Domain领域模型: 对应数据库表结构,用于持久化
  2. DTO数据传输对象: 用于接收前端请求参数
  3. VO视图对象: 用于返回前端响应数据

转换方法:

  • Dto.toObj(): DTO 转 Domain
  • Dto.fromObj(): Domain 转 DTO
  • Vo.objToVo(): Domain 转 VO

安全控制

权限注解

所有 Controller 方法都使用 @PreAuthorize 注解进行权限控制:

@PreAuthorize("@ss.hasPermi('apex:模块:操作')")

权限格式: apex:{模块名}:{操作}

操作类型:

  • list: 查询列表
  • query: 查询详情
  • add: 新增
  • edit: 修改
  • remove: 删除
  • export: 导出

日志记录

使用 @Log 注解记录业务操作日志:

@Log(title = "模块名称", businessType = BusinessType.INSERT/UPDATE/DELETE/EXPORT)

API 文档

Swagger/OpenAPI

所有 API 接口都使用 Swagger 3.0 注解进行文档化:

@Tag(name = "【模块名称】管理")
@Operation(summary = "操作说明")

访问路径: /swagger-ui.html/doc.html


数据库映射

MyBatis 配置

所有 Mapper XML 文件位于 src/main/resources/mapper/apex/ 目录下。

命名规范:

  • Mapper 接口: DataiApexXxxMapper.java
  • XML 映射文件: DataiApexXxxMapper.xml

表命名规范: datai_apex_xxx

结果映射

使用 <resultMap> 定义数据库字段到 Java 对象的映射:

<resultMap type="DataiApexXxx" id="DataiApexXxxResult">
    <result property="javaField" column="db_column" />
</resultMap>

动态 SQL

使用 MyBatis 动态 SQL 标签:

  • <where>: 动态 WHERE 条件
  • <if>: 条件判断
  • <trim>: 去除多余逗号
  • <foreach>: 批量操作

代码规范

Controller 层

  1. 继承 BaseController
  2. 使用 @RestController 注解
  3. 统一返回 AjaxResultTableDataInfo
  4. 使用 Stream API 进行 DTO/VO 转换

Service 层

  1. 定义接口 IXxxService
  2. 实现类 XxxServiceImpl
  3. 使用 @Service 注解
  4. 自动注入 Mapper

Mapper 层

  1. 定义接口 XxxMapper
  2. 使用 MyBatis 注解或 XML 映射
  3. 支持增删改查操作

模型层

  1. Domain 使用 @Schema 注解
  2. DTO 使用 @Data 注解Lombok
  3. VO 使用 @Data 注解Lombok
  4. 使用 BeanUtils.copyProperties() 进行属性拷贝

依赖关系

外部依赖

datai-salesforce-apex
├── datai-file-common (文件通用模块)
└── datai-salesforce-auth (Salesforce 认证模块)

内部依赖

Controller → Service → Mapper → Database
     ↓          ↓
    DTO      Domain
     ↓          ↓
    VO      VO

扩展点

1. 自定义 Apex 执行逻辑

在 Service 实现类中扩展 Apex 代码执行逻辑。

2. 自定义测试报告

扩展测试结果处理逻辑,生成自定义测试报告。

3. 自定义 WSDL 转换

扩展 WSDL 转换逻辑,支持更多转换选项。


注意事项

  1. 权限控制: 所有 API 接口都需要相应的权限才能访问
  2. 数据校验: 建议在 DTO 层添加数据校验注解
  3. 事务管理: Service 层方法可根据需要添加 @Transactional 注解
  4. 异常处理: 建议统一使用全局异常处理器
  5. 日志记录: 重要操作需要记录日志
  6. 分页查询: 列表查询接口支持分页参数

更新日志

2026-02-04

  • 初始版本创建
  • 实现 10 个功能模块的 CRUD 接口
  • 完成数据模型设计
  • 配置 MyBatis 映射
  • 集成 Swagger API 文档

联系方式

模块负责人: datai

创建日期: 2026-02-04

文档版本: 1.0.0