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

3.3 KiB
Raw Permalink Blame History

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-2Apex 动态代码执行与日志管理)高度重叠。经扫描,ExecuteAnonymousResult 等 SOAP 对象已存在。本需求应作为 REQ-013-2 的 Tooling API 实现版本(如果使用 Tooling API 的 /executeAnonymous 端点),或者复用 REQ-013-2 的实现。鉴于 Tooling API 提供了更丰富的调试上下文,建议在此处侧重于 Tooling 特有的调试功能(如 TraceFlag 管理)。

目标

  1. 动态执行:通过 Tooling API 执行匿名 Apex作为 Partner/Apex API 的补充)。
  2. 日志管理:通过 Tooling API 的 TraceFlagDebugLevel 对象,实现持久化的日志级别配置(不仅仅是单次执行的 Header
  3. 日志获取:下载并解析 ApexLog

功能需求

核心功能

  1. 匿名执行器 (Anonymous Executor)

    • 接口:executeApex(String apexCode)
    • 实现:调用 ToolingConnection.executeAnonymous(String code)
    • 差异Tooling API 的执行结果可能包含行号覆盖率信息(需验证)。
  2. 持久化调试配置 (Persistent Debug Configuration)

    • 管理 TraceFlag
      • CRUD 操作 TraceFlag 对象。
      • 关联 DebugLevel,设置 ApexCode, Visualforce, System, Database 等类别的日志级别。
      • 设置 StartDateExpirationDate,实现临时调试窗口。
    • 管理 DebugLevel
      • CRUD 操作 DebugLevel 对象,定义复用的日志配置模板。
  3. 日志获取 (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 权限。

成功标准

  1. 能够创建一个有效期为 30 分钟的 TraceFlag
  2. 执行一段 Apex 代码后,能在 ApexLog 表中查询到生成的日志 ID。
  3. 能够下载并打印日志内容。

相关文档