datai/docs/archive/api-docs/2026-01-28-013-1-api.md

9.8 KiB
Raw Permalink Blame History

Apex 编译器接口与错误处理 - API 文档

元数据

  • 需求编号013-1
  • 创建时间2026-01-28
  • 创建人AI Assistant
  • 状态:已完成

API 概述

本文档描述 Apex 编译器接口与错误处理功能的服务接口定义和使用方法。该功能提供了 Apex 代码编译和 WSDL 转 Apex 的核心服务接口,支持 Apex 类、触发器的编译以及 WSDL 文件到 Apex 代码的转换。

核心功能

  1. Apex 类编译:支持批量编译 Apex 类代码
  2. Apex 触发器编译:支持批量编译 Apex 触发器代码
  3. 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 文件内容

相关文档

需求文档

设计文档

决策记录

提示词文档

变更日志

复盘文档

会话记录