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

65 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)