小编推荐
大型企业的业务通常发生于多个异构系统,如部分业务发生在苍穹,部分发生在云之家,且两个系统的业务逻辑存在上下游交叉,需要通过接口进行对接。但不同异构系统的协议标准不同,难以统一,对于非常规的报文格式更是阻碍项目推进。
本期案例分享了基于苍穹开放平台的多个接口开发方案,实现协议不同情况下的异构系统高效对接。
撰稿人:白源
【温馨提示:因企业业务场景存在不同程度的差异,此案例仅供参考,请根据现场实际业务情况探讨最优解决方案,并在上线前进行充分验证。】
1、 业务背景
客户同时购买了苍穹和云之家,有的业务发生在苍穹,有的业务发生在云之家。当两个系统的业务逻辑发生上下游交叉时,就会出现云之家的智能审批单据需要通过苍穹来处理后续的业务,因此我们通过在智能审批的机器人节点添加外部接口,以苍穹的开放平台为底座,接收智能审批单据的数据,处理后续的业务数据。
但云之家的智能审批单据获取API接口,接收和响应的数据类型是文本信息,却要以application/json的媒体类型进行交互,通常情况下,我们没有办法直接通过基础的API2.0来完成这样复杂的交互。
图1云之家接口对接规范
类似的其他集成项目中,我们也经常会遇到各个异构系统都奉行着各自的协议标准,要想统一这些标准是根本无法做到的。当面对那些非常规、“刁钻”的API请求,非通用的报文格式,会极大阻碍项目的推进。
因此,客户希望能供提供相应的解决方案,来实现协议不同情况下的异构系统高效对接。
2、 解决方案
苍穹在系统间集成特别是在协议兼容性方面,极大地满足了不同老旧系统对于陈旧性API接口协议的需求,让我们对接不同的异构系统时,能够快速进行接口适配。
在不同的苍穹版本,可以有不同的解决方案。
方案一
适用版本:V5.0.001以下
这里我们使用的是API1.0接口,新增自定义服务,通过插件来完成API协议解析和响应数据写入的逻辑。
图2新增API1.0接口
图3插件代码示例
接口开发完成后,即可和云之家进行正常对接。
方案二
适用版本:V5.0.013及以上
苍穹提供了自定义Servlet来自行处理逻辑,参考配置方案见连接自定义 Servlet 开发 API 接口 ,需要注意的是自定义的Servlet需要部署在web节点下,具体的业务逻辑可以通过微服务的方式来进行通信。
方案三
适用版本:V5.0.018及以上
针对云之家的这种特殊场景,苍穹新版本做了更好的适配,参考序列化出入参 ,可以将加密后的数据进行处理转换成对应的JSON数据包再完成相应的业务逻辑。
1) 新增API
新增Java插件API,将开发好的接口类等信息配置进去。
图4注册API接口
2)开发插件类
接口类添加APIController和APIMapping等注解,创建注解为ApiPostMapping的方法,使用ApiRequestBody注解来接收处理好的请求体,根据实际的业务需要直接构造响应数据success字符串设为返回值即可。
图5代码示例 -1
请求体如实体类或JSONObject、Map对象等。拿的数据包包括data、success、errorCode三部分,重点关注data中的数据,是API接口中所Post的数据。
图6代码示例 -2
创建序列化和反序列化插件,接收云之家推送的加密数据包,通过反序列化插件完成请求数据包的解密,通过序列化插件来完成响应数据包的文本格式的转变,如果不开启序列化,那么输出的内容则是JSON格式的字符串而非字符串本身。
图7代码示例 -3
图8代码示例 -4
图9 API测试
最后,一定要在API注册界面将我们开发好的序列化插件和反序列化插件注册进去。
图10 接口注册插件
这样我们就完成了整个接收参数响应数据的对接过程了。
诸如此类还有很多,比如POST单据内容并保存的时候,却因为字段名称匹配不上无法直接使用操作API,可以通过脚本API完成转换并调用操作API来完成此过程,再比如附件的上传下载等等,苍穹都提供了强大的API能力,辅助开发者更好地解决标准性不统一、业务逻辑层层递进等问题。
3、 方案的可推广价值
1. 灵活组合与搭配: 开发者能够通过操作、插件、脚本API的自由组合和搭配,轻松完成多协同多协议下的API接口开发,为复杂业务场景提供了高度的灵活性。
2. 解决非常规挑战: 针对非常规的API协议,系统提供了多种解决途径,使开发者能够迎刃而解回调通知、数据包协议不匹配、业务逻辑复杂处理等挑战,确保接口对接更加顺畅。
3. 老旧系统兼容性: 针对老旧系统和公有云系统,系统提供了强大的兼容性,使API的对接变得更加稳定、安全、快捷,助力开发者在面对各种系统的时候能够轻松胜任。