3.9 KiB
3.9 KiB
提示词:元数据类型定义与部署
引用真源
需求描述
根据需求文档和设计文档,实现 Salesforce 元数据类型定义与部署功能。核心目标是封装 Salesforce Metadata API 的 deploy 操作,支持多种元数据类型(CustomObject, CustomField, ApexClass, ApexTrigger, ApexPage, ApexComponent, Flow)的创建和更新,并记录部署历史。
设计方案
采用分层架构,基于若依(DataI Geek)框架:
- Controller 层:暴露 RESTful API,接收元数据定义请求,调用 Service 层进行部署。
- Service 层:
- 使用 JAXB 将元数据对象序列化为 XML。
- 使用 Java Util Zip 构建符合 Metadata API 要求的 ZIP 压缩包。
- 调用
MetadataConnection.deploy()执行异步部署。 - 实现同步轮询逻辑(提交后循环检查状态直到完成或超时),返回最终结果。
- 记录部署历史到数据库。
- Repository 层:使用 MyBatis Plus 操作
datai_metadata_deploy表。 - Integration 层:复用
MetadataConnectionFactory获取连接。
输出格式要求
- 必须包含以下文件:
- Entity:
MetadataDeployEntity.java- 路径:
datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/domain/MetadataDeployEntity.java - 对应表:
datai_metadata_deploy
- 路径:
- Mapper:
MetadataDeployMapper.java- 路径:
datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/mapper/MetadataDeployMapper.java - 继承
BaseMapper<MetadataDeployEntity>
- 路径:
- Service:
MetadataTypeService.java- 路径:
datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/service/MetadataTypeService.java - 核心方法:
deployCustomObject,deployCustomField,deployApexClass等
- 路径:
- Controller:
MetadataTypeController.java- 路径:
datai-scene-salesforce/src/main/java/com/datai/scene/salesforce/controller/MetadataTypeController.java - REST API 接口
- 路径:
- Entity:
- 必须包含单元测试:
MetadataTypeServiceTest.java: 模拟 Metadata API 调用,测试 ZIP 构建和轮询逻辑。
- 技术栈要求:
- Spring Boot / DataI Geek (若依)
- MyBatis Plus
- JAXB (javax.xml.bind)
- Salesforce WSC & Metadata API (依赖已存在)
代码规范要求
- 命名规范:
- 类名:PascalCase (e.g.,
MetadataTypeService) - 方法名:camelCase (e.g.,
deployCustomObject) - 变量名:camelCase (e.g.,
deployResult)
- 类名:PascalCase (e.g.,
- 注释规范:
- 所有类和公共方法必须包含 Javadoc 注释。
- 复杂逻辑(如 ZIP 构建、轮询)必须包含行内注释。
- 异常处理:
- 统一捕获底层异常(JAXBException, IOException, ConnectionException)。
- 统一抛出业务异常
SalesforceOperationException。 - 记录详细的 Error Log。
- ZIP 结构:
- 必须严格遵循 Metadata API 的文件夹结构规范。
- 例如:
objects/MyObj__c.object(CustomObject),classes/MyClass.cls(ApexClass)。
测试要求
- Mock 测试:
- 使用 Mockito 模拟
MetadataConnection和MetadataConnectionFactory。 - 验证
deploy方法是否被调用。 - 验证
checkStatus是否被循环调用。
- 使用 Mockito 模拟
- 覆盖率:
- 核心业务逻辑(Service 层)测试覆盖率不低于 80%。
- 场景覆盖:
- 部署成功场景。
- 部署失败场景(Salesforce 返回 Error)。
- 网络异常场景(ConnectionException)。
- 轮询超时场景。