datai/datai-scenes/datai-scene-salesforce/docs/prompts/2026-02-03-003-02-prompt-元数据类型定义.md

3.9 KiB
Raw Permalink Blame History

提示词:元数据类型定义与部署

引用真源

需求描述

根据需求文档和设计文档,实现 Salesforce 元数据类型定义与部署功能。核心目标是封装 Salesforce Metadata API 的 deploy 操作支持多种元数据类型CustomObject, CustomField, ApexClass, ApexTrigger, ApexPage, ApexComponent, Flow的创建和更新并记录部署历史。

设计方案

采用分层架构基于若依DataI Geek框架

  1. Controller 层:暴露 RESTful API接收元数据定义请求调用 Service 层进行部署。
  2. Service 层
    • 使用 JAXB 将元数据对象序列化为 XML。
    • 使用 Java Util Zip 构建符合 Metadata API 要求的 ZIP 压缩包。
    • 调用 MetadataConnection.deploy() 执行异步部署。
    • 实现同步轮询逻辑(提交后循环检查状态直到完成或超时),返回最终结果。
    • 记录部署历史到数据库。
  3. Repository 层:使用 MyBatis Plus 操作 datai_metadata_deploy 表。
  4. Integration 层:复用 MetadataConnectionFactory 获取连接。

输出格式要求

  1. 必须包含以下文件
    • 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 接口
  2. 必须包含单元测试
    • MetadataTypeServiceTest.java: 模拟 Metadata API 调用,测试 ZIP 构建和轮询逻辑。
  3. 技术栈要求
    • Spring Boot / DataI Geek (若依)
    • MyBatis Plus
    • JAXB (javax.xml.bind)
    • Salesforce WSC & Metadata API (依赖已存在)

代码规范要求

  1. 命名规范
    • 类名PascalCase (e.g., MetadataTypeService)
    • 方法名camelCase (e.g., deployCustomObject)
    • 变量名camelCase (e.g., deployResult)
  2. 注释规范
    • 所有类和公共方法必须包含 Javadoc 注释。
    • 复杂逻辑(如 ZIP 构建、轮询)必须包含行内注释。
  3. 异常处理
    • 统一捕获底层异常JAXBException, IOException, ConnectionException
    • 统一抛出业务异常 SalesforceOperationException
    • 记录详细的 Error Log。
  4. ZIP 结构
    • 必须严格遵循 Metadata API 的文件夹结构规范。
    • 例如:objects/MyObj__c.object (CustomObject), classes/MyClass.cls (ApexClass)。

测试要求

  1. Mock 测试
    • 使用 Mockito 模拟 MetadataConnectionMetadataConnectionFactory
    • 验证 deploy 方法是否被调用。
    • 验证 checkStatus 是否被循环调用。
  2. 覆盖率
    • 核心业务逻辑Service 层)测试覆盖率不低于 80%。
  3. 场景覆盖
    • 部署成功场景。
    • 部署失败场景Salesforce 返回 Error
    • 网络异常场景ConnectionException
    • 轮询超时场景。