65 lines
3.3 KiB
Markdown
65 lines
3.3 KiB
Markdown
# 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<ToolingConnection>`
|
||
- **输入**: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)
|