# Apex 类与触发器基础管理需求 (Tooling API) ## 元数据 - 需求编号:014-1 - 创建时间:2026-01-26 - 创建人:SSOT 架构师 - 状态:进行中 - 优先级:高 - 父需求:[REQ-014](../REQ-014.md) - 关联代码:`com.sforce.soap.tooling.ApexClass`, `com.sforce.soap.tooling.ApexTrigger` ## 需求概述 作为 Tooling API 模块的基础,本需求负责建立与 Salesforce Tooling API 的连接,并封装针对 `ApexClass` 和 `ApexTrigger` 的基础 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` - **输入**:Org Type (source/target) - **实现逻辑**: - 从 `SessionManager` 获取 Session ID 和 Instance URL。 - 构建 Endpoint:`instanceUrl + "/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` 模块的 `AbstractConnectionFactory` 和 `ConnectionProxy`。 - **配置复用**:直接使用 `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 闭环测试。 ## 相关文档 - [设计文档](../design/2026-01-27-014-1-Apex类与触发器基础管理-设计.md) - [决策记录](../decisions/adr/2026-01-27-014-1-ADR-ToolingAPI客户端代码生成方案.md) - [提示词文档](../prompts/2026-01-27-014-1-prompt-Apex类与触发器基础管理.md) - [会话记录](../sessions/2026-01-27-014-1-session.md) - [变更日志](../changelog/2026-01-27-014-1-changelog.md) - [复盘文档](../retros/2026-01-27-014-1-retro.md) - [API 文档](../api-docs/apex/2026-01-27-014-1-api.md)