3.3 KiB
3.3 KiB
Apex 业务逻辑执行与日志管理需求
元数据
- 需求编号:014-3
- 创建时间:2026-01-26
- 创建人:SSOT 架构师
- 状态:待开始
- 优先级:中
- 父需求:REQ-014
- 关联代码:
com.sforce.soap.tooling.ExecuteAnonymousResult,com.sforce.soap.tooling.TraceFlag
需求概述
实现“逻辑集中”的关键模块。允许 Java 端直接调用 Apex 逻辑(通过 Execute Anonymous 或 WebService),并能动态管理调试日志,以便在生产环境中排查问题。
关联模块:本需求与 REQ-013-2(Apex 动态代码执行与日志管理)高度重叠。经扫描,ExecuteAnonymousResult 等 SOAP 对象已存在。本需求应作为 REQ-013-2 的 Tooling API 实现版本(如果使用 Tooling API 的 /executeAnonymous 端点),或者复用 REQ-013-2 的实现。鉴于 Tooling API 提供了更丰富的调试上下文,建议在此处侧重于 Tooling 特有的调试功能(如 TraceFlag 管理)。
目标
- 动态执行:通过 Tooling API 执行匿名 Apex(作为 Partner/Apex API 的补充)。
- 日志管理:通过 Tooling API 的
TraceFlag和DebugLevel对象,实现持久化的日志级别配置(不仅仅是单次执行的 Header)。 - 日志获取:下载并解析
ApexLog。
功能需求
核心功能
-
匿名执行器 (Anonymous Executor)
- 接口:
executeApex(String apexCode) - 实现:调用
ToolingConnection.executeAnonymous(String code)。 - 差异:Tooling API 的执行结果可能包含行号覆盖率信息(需验证)。
- 接口:
-
持久化调试配置 (Persistent Debug Configuration)
- 管理 TraceFlag:
- CRUD 操作
TraceFlag对象。 - 关联
DebugLevel,设置ApexCode,Visualforce,System,Database等类别的日志级别。 - 设置
StartDate和ExpirationDate,实现临时调试窗口。
- CRUD 操作
- 管理 DebugLevel:
- CRUD 操作
DebugLevel对象,定义复用的日志配置模板。
- CRUD 操作
- 管理 TraceFlag:
-
日志获取 (Log Retriever)
- 接口:
getLog(String logId) - 实现:通过
ToolingConnection.retrieve()获取ApexLog对象的Body字段(需处理 Blob 类型)。
- 接口:
次要功能
- 日志分析:简单的日志解析,提取
USER_DEBUG行。
非功能需求
- 低侵入性:设置 TraceFlag 后应及时清理(或利用 ExpirationDate 自动过期),避免日志空间爆满。
- 并发控制:同一用户同一时间只能有一个生效的 TraceFlag,需处理冲突。
技术约束
- 依赖:
com.sforce.soap.tooling.TraceFlag,com.sforce.soap.tooling.DebugLevel,com.sforce.soap.tooling.ApexLog。 - 权限:操作 TraceFlag 需要
View All Data权限。
成功标准
- 能够创建一个有效期为 30 分钟的
TraceFlag。 - 执行一段 Apex 代码后,能在
ApexLog表中查询到生成的日志 ID。 - 能够下载并打印日志内容。