datai/datai-scenes/datai-scene-salesforce/docs/requirements/2026-01-28-003-MetadataAPI源org实现.md

133 lines
4.9 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.

# 需求文档
## 元数据
- 需求编号003
- 创建时间2026-01-28
- 创建人AI Assistant
- 状态:进行中
- 优先级:高
## 需求概述
`datai-salesforce-metadata` 模块中实现 Salesforce Metadata API 的完整功能,提供对 Salesforce 源 orgSource Org的元数据操作能力包括元数据类型定义、部署操作、异步操作、删除操作、检索操作、检查部署状态、描述元数据、列出元数据等功能。
## 目标
1. 实现 Metadata API 的所有核心功能,提供完整的元数据操作能力
2. 集成 `datai-salesforce-auth` 模块的会话管理功能
3. 提供 REST API 接口,支持外部系统调用
4. 创建数据库表,存储部署结果、检索结果等数据
5. 默认实现源 orgSource Org类型的数据操作
6. 删除现有 Mapper 文件,重新实现所有功能
## 功能需求
### 核心功能
#### 1. 元数据类型定义
- **核心组件类型**ApexClass、ApexTrigger、ApexPage、ApexComponent、CustomObject、CustomField、CustomTab
- **配置类型**AppSettings、ApprovalProcess、AssignmentRules、Workflow、ValidationRule、SharingRule
- **分析类型**AnalyticsDashboard、AnalyticsDataset、AnalyticsWorkspace、Report、Dashboard
- **AI 和自动化类型**AIApplication、Bot、Flow、ProcessBuilder
- **UI 和用户体验类型**CustomTab、CompactLayout、PageLayout、ListView、QuickAction
#### 2. 部署操作
- **DeployOptions**: 部署选项配置
- **DeployResult**: 部署结果
- **DeployMessage**: 部署消息
- **DeployDetails**: 部署详细信息
- **DeployStatus**: 部署状态
#### 3. 异步操作
- **AsyncResult**: 异步操作结果
- **AsyncRequestState**: 异步请求状态
#### 4. 删除操作
- **DeleteResult**: 删除操作结果
#### 5. 检索操作
- **RetrieveRequest**: 检索请求配置
- **RetrieveResult**: 检索结果
- **RetrieveMessage**: 检索消息
#### 6. 检查部署状态
- **CheckDeployStatus**: 检查部署状态
- **CheckRetrieveStatus**: 检查检索状态
#### 7. 描述元数据
- **DescribeMetadataResult**: 描述元数据结果
- **DescribeValueType**: 描述值类型
#### 8. 列出元数据
- **ListMetadataQuery**: 列出元数据查询
- **ListMetadataResult**: 列出元数据结果
- **ListMetadata**: 列出元数据项
### 次要功能
- 错误处理和异常管理
- 结果封装和返回
- 异步操作轮询机制
## 非功能需求
### 性能要求
- 暂不考虑连接池、并发控制、缓存等性能优化
- 每次调用都创建新连接
- 异步操作需要轮询检查状态
### 安全要求
- 集成 `datai-salesforce-auth` 模块的会话管理
- 使用 SessionManager 获取 Session ID 和 Server URL
- 优先使用 `datai-salesforce-common` 模块中的现有异常
### 兼容性要求
- 支持 Salesforce Metadata API v65.0
- 兼容 Java 22
- 兼容 Spring Boot 框架
### 数据存储要求
- 创建数据库表存储部署结果、检索结果等数据
- 支持历史记录查询
- 支持结果统计和分析
- 删除现有 Mapper 文件,重新实现所有功能
## 技术约束
### 必须使用的框架或库
- **metadata.jar**: Salesforce Metadata API 客户端Metadata、CustomObject、CustomField、DeployOptions、DeployResult 等)
- **datai-salesforce-auth**: 使用 SessionManager 管理会话
- **datai-salesforce-common**: 使用现有异常类
### 必须遵循的设计模式
- Service 层模式:提供业务逻辑封装
- Controller 层模式:提供 REST API 接口
- 直接使用 metadata.jar 中的现有类,不进行不必要的二次封装
### 必须继承的基类
- 无特殊基类要求
### 自定义类原则
- 优先使用 metadata.jar 中的现有类
- 如果确实有需求需要使用自定义类,则新增
- 新增前需要严格判断必要性
### 数据库设计原则
- 需要创建表存储部署结果、检索结果等数据
- 表结构在设计阶段确定
- 支持历史记录查询和统计分析
- 删除现有 Mapper 文件,重新实现所有功能
## 成功标准
1. **功能完整性**: 所有 Metadata API 核心功能都已实现并通过测试
2. **认证集成**: 成功集成 SessionManager能够获取 Session ID 和 Server URL
3. **API 接口**: 提供 REST API 接口,支持外部系统调用
4. **数据存储**: 成功创建数据库表,能够存储和查询部署结果、检索结果等数据
5. **代码重构**: 删除现有 Mapper 文件,重新实现所有功能
6. **异常处理**: 正确处理各种异常情况,使用合适的异常类
7. **代码质量**: 代码符合项目规范,无编译错误和警告
## 相关文档
- [子需求索引](./sub/index.md) - 子需求文档索引
- [设计文档](../design/2026-01-28-003-MetadataAPI源org实现设计.md) - 待创建
- [决策记录](../decisions/adr/2026-01-28-003-ADR-MetadataAPI源org实现技术选型.md) - 待创建
- [参考文档](../reference-code/sforce/docs/metadata-module.md) - Metadata API 功能说明