datai/docs/archive/REQ-014-1.md

3.3 KiB
Raw Permalink Blame History

Apex 类与触发器基础管理需求 (Tooling API)

元数据

  • 需求编号014-1
  • 创建时间2026-01-26
  • 创建人SSOT 架构师
  • 状态:进行中
  • 优先级:高
  • 父需求:REQ-014
  • 关联代码:com.sforce.soap.tooling.ApexClass, com.sforce.soap.tooling.ApexTrigger

需求概述

作为 Tooling API 模块的基础,本需求负责建立与 Salesforce Tooling API 的连接,并封装针对 ApexClassApexTrigger 的基础 CRUD 操作。 注意:经扫描,docs/reference-code/sforce/soap/tooling 目录下缺失 ToolingConnection 等入口类,需优先补充生成 WSDL 客户端代码。

目标

  1. 客户端生成:补全 Tooling API 的 WSDL 生成代码(重点是 ToolingConnection)。
  2. 连接工厂:实现 ToolingConnectionFactory,复用 datai-salesforce-integration 的连接管理模式。
  3. 基础 CRUD:实现对 Apex 类和触发器的创建、读取、更新和删除。

功能需求

核心功能

  1. Tooling 连接工厂 (ToolingConnectionFactory)

    • 继承AbstractConnectionFactory<ToolingConnection>
    • 输入Org Type (source/target)
    • 实现逻辑
      • SessionManager 获取 Session ID 和 Instance URL。
      • 构建 EndpointinstanceUrl + "/services/Soap/T/" + apiVersion
      • 初始化 ConnectorConfig 并创建 ToolingConnection
  2. Apex 类管理 (ApexClass Manager)

    • createApexClass(String name, String body): 使用 create() 调用。
    • getApexClass(String name): 使用 query() 调用 SELECT Id, Body FROM ApexClass WHERE Name = ?
    • updateApexClass(String id, String body): 使用 update() 调用。
    • deleteApexClass(String id): 使用 delete() 调用。
  3. Apex 触发器管理 (ApexTrigger Manager)

    • 类似于 Apex 类管理,针对 ApexTrigger 对象。

次要功能

  • 通用查询:封装 ToolingConnection.query(String soql)

非功能需求

  • 架构一致性:必须复用 datai-salesforce-integration 模块的 AbstractConnectionFactoryConnectionProxy
  • 配置复用:直接使用 datai-salesforce-auth 的 Session 管理,不重复实现登录逻辑。

技术约束

  • 类名修正:原计划的 SforceService 不存在,应使用 com.sforce.soap.tooling.ToolingConnection
  • Endpoint:注意 Tooling API 的 Endpoint 路径包含 /T/
  • WSDL 生成:如果 ToolingConnection 类缺失,需使用 WSC 工具重新生成或引入完整 Jar 包。

成功标准

  1. ToolingConnectionFactory 能成功创建连接并注入 Session。
  2. 单元测试能调用 ToolingConnection.getServerTimestamp() 验证连接有效性。
  3. 能够完成 Apex 类的 CRUD 闭环测试。

相关文档