6.5 KiB
6.5 KiB
提示词:连接管理
引用真源
需求描述
根据需求文档,实现 Salesforce Tooling API 的连接管理功能,包括:
- 获取 ToolingConnection 连接(从缓存或创建新连接)
- 清除连接缓存(手动清除缓存,强制下次创建新连接)
- 测试连接(验证连接是否有效)
- 设置调用选项(CallOptions,如 client 名称)
- 设置调试头部(DebuggingHeader,如 debugLevel)
- RESTful API 接口(获取连接、清除缓存、测试连接、设置调用选项、设置调试头部)
设计方案
根据设计文档,采用以下技术方案:
- 工厂模式:使用 ToolingConnectionFactory 工厂类创建和管理 ToolingConnection 连接,继承 AbstractConnectionFactory 抽象类
- 连接缓存:利用 AbstractConnectionFactory 提供的连接缓存和自动 Session 有效性检查功能
- 会话管理:集成 SessionManager 获取会话信息,支持 Session 过期时自动重新创建连接
- 头部配置:支持 SessionHeader、CallOptions、DebuggingHeader 等头部配置
- RESTful API:提供 6 个 REST API 接口(获取连接、清除缓存、测试连接、设置调用选项、设置调试头部)
- 异常处理:使用 datai-salesforce-common 模块的异常体系,统一处理各种异常情况
- 技术栈:Spring Boot 3.x、Spring Security 6.x、Salesforce Tooling API WSC 58.x
- 数据模型:不涉及数据库表,所有操作记录到应用日志
- 性能优化:连接缓存、多线程安全、压缩传输
- 安全设计:Session ID 存储在服务端内存中,不暴露给客户端
输出格式要求
-
必须包含以下文件:
- Factory:
ToolingConnectionFactory.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/factory/ToolingConnectionFactory.java) - Service 接口:
IToolingConnectionService.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/service/IToolingConnectionService.java) - Service 实现:
ToolingConnectionServiceImpl.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/service/impl/ToolingConnectionServiceImpl.java) - Controller:
ToolingConnectionController.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/controller/ToolingConnectionController.java) - DTO:
ToolingConnectionRequest.java、CallOptionsRequest.java、DebuggingHeaderRequest.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/model/dto/) - VO:
ToolingConnectionResult.java、ToolingConnectionStatus.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/model/vo/) - 错误码枚举:
ToolingConnectionErrorCode.java(路径:datai-salesforce-tooling/src/main/java/com/datai/tooling/enums/ToolingConnectionErrorCode.java)
- Factory:
-
必须包含单元测试:
ToolingConnectionServiceImplTest.java(路径:datai-salesforce-tooling/src/test/java/com/datai/tooling/service/impl/ToolingConnectionServiceImplTest.java)
-
必须符合 Spring Boot 最佳实践
-
必须遵循若依框架规范
-
必须使用 tooling.jar 中的现有类(Connector、ToolingConnection、SessionHeader、CallOptions、DebuggingHeader 等)
代码规范要求
- 类命名:首字母大写,驼峰命名,如
ToolingConnectionFactory - 方法命名:首字母小写,驼峰命名,如
getConnection - 变量命名:首字母小写,驼峰命名,如
sessionId - 注释规范:
- 类注释:使用
/** */,包含类功能描述、作者、创建时间 - 方法注释:使用
/** */,包含方法功能、参数、返回值、异常描述 - 字段注释:使用
/** */,包含字段功能描述
- 类注释:使用
- 代码格式:使用 4 个空格缩进,行宽不超过 120 字符
- 导入规范:使用 import 静态导入,避免通配符导入
- 包结构:按照 Controller、Service、Factory、DTO、VO、Enums 分层组织
测试要求
- 单元测试覆盖率不低于 80%
- 测试用例包含以下场景:
- 获取连接成功(从缓存)
- 获取连接成功(创建新连接)
- 清除缓存成功
- 测试连接成功
- 测试连接失败(Session 无效)
- 设置调用选项成功
- 设置调试头部成功
- Session 过期异常
- 连接失败异常
- 使用 JUnit 5 和 Mockito 进行测试
- 测试用例命名规范:
test+方法名+场景,如testGetConnectionSuccess - 测试数据使用 Mockito 模拟 SessionManager 和 ToolingConnection
注意事项
- 必须使用 tooling.jar 中的现有类(Connector、ToolingConnection、SessionHeader、CallOptions、DebuggingHeader 等),不进行二次封装
- 必须继承 AbstractConnectionFactory,利用其提供的连接缓存和自动 Session 有效性检查功能
- 必须使用 SessionManager 获取会话信息,固定使用 "source" orgType
- 必须使用 datai-salesforce-common 模块的异常类(SalesforceAuthException、SalesforceLoginException 等)
- 必须使用 @PreAuthorize("@ss.hasLogin()") 进行权限控制
- 必须使用 @Valid 注解进行参数验证
- 必须使用 @Tag 和 @Operation 注解生成 Swagger 文档
- 必须使用 @Slf4j 注解进行日志记录
- 必须使用 @Autowired 注解进行依赖注入
- 必须使用 @RestController 和 @RequestMapping 注解定义 REST API
- 必须使用 @GetMapping、@PostMapping、@DeleteMapping 注解定义 HTTP 方法
- 必须使用 @RequestBody 注解接收请求体参数
- 必须使用 @Schema 注解定义 Swagger 文档
- 必须使用 Lombok 的 @Data、@EqualsAndHashCode 等注解简化代码
- 必须使用 @Component 注解标记 Factory 类为 Spring 组件
- 必须使用 @Service 注解标记 Service 实现类为 Spring 服务
- 必须使用 @Override 注解标记重写的方法
- 必须使用 try-catch 块捕获异常,并转换为自定义异常
- 必须使用 log.error() 记录错误日志
- 必须使用 log.info() 记录操作日志
- API 版本固定使用 "58.0"
- Tooling API Endpoint 格式:
{instanceUrl}/services/Soap/T/{apiVersion} - 连接创建成功后,必须设置 SessionHeader
- 必须处理 ConnectionException 异常,转换为 SalesforceAuthException
- 清除缓存接口必须使用 @DeleteMapping
- 获取连接接口返回连接状态信息,不包含实际的 ToolingConnection 对象