9.8 KiB
9.8 KiB
Apex 编译器接口与错误处理 - API 文档
元数据
- 需求编号:013-1
- 创建时间:2026-01-28
- 创建人:AI Assistant
- 状态:已完成
API 概述
本文档描述 Apex 编译器接口与错误处理功能的服务接口定义和使用方法。该功能提供了 Apex 代码编译和 WSDL 转 Apex 的核心服务接口,支持 Apex 类、触发器的编译以及 WSDL 文件到 Apex 代码的转换。
核心功能
- Apex 类编译:支持批量编译 Apex 类代码
- Apex 触发器编译:支持批量编译 Apex 触发器代码
- WSDL 转 Apex:支持将 WSDL 文件转换为 Apex 代码
技术栈
- 框架:Spring Boot
- SOAP 客户端:force-wsc
- 简化工具:Lombok
- 测试框架:JUnit 5、Mockito
接口列表
1. ApexCompilerService 接口
1.1 编译 Apex 类
接口名称:compileClasses
功能描述:批量编译 Apex 类代码,返回编译结果列表
方法签名:
List<CompileResult> compileClasses(List<String> classSources)
参数说明:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| classSources | List | 是 | Apex 类源代码列表,每个元素是一个完整的 Apex 类源代码字符串 |
返回值:
| 类型 | 说明 |
|---|---|
| List | 编译结果列表,每个 CompileResult 对应一个 Apex 类的编译结果 |
CompileResult 对象说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 编译是否成功 |
| id | String | 元数据 ID(成功时) |
| name | String | 类名(成功时) |
| bodyCrc | Integer | 内容校验码(成功时) |
| line | Integer | 错误行号(失败时) |
| column | Integer | 错误列号(失败时) |
| problem | String | 错误描述(失败时) |
| problems | List | 错误列表 |
| warnings | List | 警告列表 |
ApexCompileIssue 对象说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| line | Integer | 行号 |
| column | Integer | 列号 |
| problem | String | 问题描述 |
| className | String | 类名/文件名 |
使用示例:
@Autowired
private ApexCompilerService apexCompilerService;
public void compileApexClasses() {
List<String> classSources = new ArrayList<>();
classSources.add("public class MyClass {\n public void myMethod() {\n System.debug('Hello World');\n }\n}");
List<CompileResult> results = apexCompilerService.compileClasses(classSources);
for (CompileResult result : results) {
if (result.getSuccess()) {
System.out.println("编译成功:" + result.getName());
} else {
System.out.println("编译失败:" + result.getProblem());
for (ApexCompileIssue issue : result.getProblems()) {
System.out.println(" 错误:" + issue.getProblem() + " (行:" + issue.getLine() + ")");
}
}
}
}
异常说明:
- ApexConnectionException:连接 Salesforce API 失败时抛出
- ApexCompilationException:编译过程中发生严重错误时抛出
1.2 编译 Apex 触发器
接口名称:compileTriggers
功能描述:批量编译 Apex 触发器代码,返回编译结果列表
方法签名:
List<CompileResult> compileTriggers(List<String> triggerSources)
参数说明:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| triggerSources | List | 是 | Apex 触发器源代码列表,每个元素是一个完整的 Apex 触发器源代码字符串 |
返回值:
| 类型 | 说明 |
|---|---|
| List | 编译结果列表,每个 CompileResult 对应一个 Apex 触发器的编译结果 |
CompileResult 对象说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 编译是否成功 |
| id | String | 元数据 ID(成功时) |
| name | String | 触发器名(成功时) |
| bodyCrc | Integer | 内容校验码(成功时) |
| line | Integer | 错误行号(失败时) |
| column | Integer | 错误列号(失败时) |
| problem | String | 错误描述(失败时) |
| problems | List | 错误列表 |
| warnings | List | 警告列表 |
使用示例:
@Autowired
private ApexCompilerService apexCompilerService;
public void compileApexTriggers() {
List<String> triggerSources = new ArrayList<>();
triggerSources.add("trigger MyTrigger on Account (before insert) {\n System.debug('Account inserted');\n}");
List<CompileResult> results = apexCompilerService.compileTriggers(triggerSources);
for (CompileResult result : results) {
if (result.getSuccess()) {
System.out.println("编译成功:" + result.getName());
} else {
System.out.println("编译失败:" + result.getProblem());
for (ApexCompileIssue issue : result.getProblems()) {
System.out.println(" 错误:" + issue.getProblem() + " (行:" + issue.getLine() + ")");
}
}
}
}
异常说明:
- ApexConnectionException:连接 Salesforce API 失败时抛出
- ApexCompilationException:编译过程中发生严重错误时抛出
2. WsdlConverterService 接口
2.1 转换 WSDL 为 Apex 代码
接口名称:convertWsdl
功能描述:将 WSDL 文件内容转换为 Apex 代码,返回转换结果
方法签名:
WsdlToApexResult convertWsdl(String wsdlContent)
参数说明:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| wsdlContent | String | 是 | WSDL 文件内容字符串 |
返回值:
| 类型 | 说明 |
|---|---|
| WsdlToApexResult | WSDL 转换结果 |
WsdlToApexResult 对象说明:
| 字段名 | 类型 | 说明 |
|---|---|---|
| success | Boolean | 转换是否成功 |
| apexScripts | List | 生成的 Apex 代码列表 |
| errors | List | 错误信息列表 |
使用示例:
@Autowired
private WsdlConverterService wsdlConverterService;
public void convertWsdlToApex() {
String wsdlContent = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
"<definitions xmlns=\"http://schemas.xmlsoap.org/wsdl/\" ...>\n" +
" ...\n" +
"</definitions>";
WsdlToApexResult result = wsdlConverterService.convertWsdl(wsdlContent);
if (result.getSuccess()) {
System.out.println("转换成功,生成了 " + result.getApexScripts().size() + " 个 Apex 文件");
for (String apexScript : result.getApexScripts()) {
System.out.println(apexScript);
}
} else {
System.out.println("转换失败:");
for (String error : result.getErrors()) {
System.out.println(" 错误:" + error);
}
}
}
异常说明:
- ApexConnectionException:连接 Salesforce API 失败时抛出
- ApexCompilationException:转换过程中发生严重错误时抛出
异常体系
ApexException(基类异常)
描述:所有 Apex 相关异常的基类
子类:
- ApexCompilationException
- ApexRuntimeException
- ApexConnectionException
ApexCompilationException(编译异常)
描述:Apex 代码编译过程中发生的异常
字段:
| 字段名 | 类型 | 说明 |
|---|---|---|
| issues | List | 编译问题列表 |
使用场景:
- Apex 类编译失败
- Apex 触发器编译失败
- WSDL 转 Apex 失败
ApexRuntimeException(运行时异常)
描述:Apex 代码运行过程中发生的异常
使用场景:
- Apex 代码执行失败
- Apex 代码运行时错误
ApexConnectionException(连接异常)
描述:连接 Salesforce API 时发生的异常
使用场景:
- 连接 Salesforce API 失败
- 网络错误
- 认证失败
错误码
编译错误码
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| COMPILE_ERROR | 编译错误 | 检查代码语法,修正错误 |
| COMPILE_WARNING | 编译警告 | 检查代码规范,优化代码 |
| BODY_CRC_MISMATCH | 内容校验失败 | 检查代码内容是否被修改 |
连接错误码
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| CONNECTION_FAILED | 连接失败 | 检查网络连接,重试 |
| AUTHENTICATION_FAILED | 认证失败 | 检查认证信息,重新认证 |
| TIMEOUT | 超时 | 检查网络状态,增加超时时间 |
转换错误码
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| WSDL_PARSE_ERROR | WSDL 解析错误 | 检查 WSDL 文件格式 |
| WSDL_GENERATE_ERROR | Apex 代码生成错误 | 检查 WSDL 文件内容 |
相关文档
需求文档
- REQ-013-1.md - Apex 编译器接口与错误处理需求
设计文档
- 2026-01-28-013-1-Apex编译器接口设计.md - Apex 编译器接口设计
决策记录
- 2026-01-28-013-1-ADR-Apex编译器接口技术选型.md - Apex 编译器接口技术选型
提示词文档
- 2026-01-28-013-1-prompt-Apex编译器接口与错误处理.md - Apex 编译器接口与错误处理提示词
变更日志
- 2026-01-28-013-1-changelog.md - Apex 编译器接口与错误处理变更日志
复盘文档
- 2026-01-28-013-1-retro.md - Apex 编译器接口与错误处理复盘文档
会话记录
- 2026-01-28-013-1-session.md - Apex 编译器接口与错误处理会话记录