如何通过服务流程进行接口幂等与重试

服务流程是集成云推出的面向复杂集成场景的低代码服务编排工具,能够把已有的集成对象、集成方案、消息服务、API接口等集成资源,通过流程化设计编排成全新的应用服务,以支持更加复杂的业务场景。
例如基础数据分发到多个系统、数据消费需要从多源取数、基于某个数据参数处理不同的集成过程等等。
为了帮助大家快速掌握服务流程的使用方法,我们推出了系列文章,通过11个典型案例向大家介绍服务流程的高级技巧。
在上期集成服务流程典型案例系列文章中,我们为大家介绍了服务流程的第7个典型案例:如何通过服务流程进行异常处理与状态通知。
本期,小编继续为大家介绍第8个案例:如何通过服务流程进行接口幂等与重试,主要包括以下2个要点:
云之家幂等与重试场景介绍;
通过幂等流程完成人员新增、更新与重试。
1 需求场景介绍
以云之家人员查询、新增、更新的API为例。作为服务流程的事件触发节点,苍穹的人员实体进行保存操作后,将该人员的手机号作为入参调用云之家人员查询API。
然后,根据查询结果分别调用云之家人员的新增和更新API,从而达到幂等的效果。
此外,在调用后继续根据返回结果判断是否继续重新调用,从而达到重试的效果。
具体的流程如下图所示:

流程解析
2 流程属性与变量配置
由于需要监听实体上的事件,应设置服务流程的【启动方式】为“事件触发”。


流程属性配置
在【依赖资源】下将取数集成对象(数据来源)和需要调用的外部系统API作为资源引入服务流程中。

依赖资源配置
3 详细节点配置
该案例所涉及的流程节点如下:

流程节点概览
接下来,小编为大家详细讲解各流程节点的配置方法。
3.1 开始节点
在【开始】节点配置需要监听的【集成对象(事件源)】和相应的【单据事件】,以及需要取出的字段,并将获取到的数据赋值给流程变量“人员(src)”。

开始节点基本信息配置

取值字段示例
3.2 字段映射节点
通过字段映射节点配置流程变量“src”和“tar”之间的映射关系,将流程变量“src”的数据赋值给流程变量“tar”。

字段映射节点基本信息配置

字段映射配置示例
3.3 获取查询变量节点
通过脚本节点,将流程变量“tar”中的属性赋值给流程变量“phones”,以供下一步调用API进行查询操作。

获取查询变量节点配置示例
3.4 查询人员节点
通过API节点调用查询接口,将获取到的数据赋值给流程变量“query_result”。

查询人员节点配置示例
3.5 新增人员节点
依据上一步查询到的结果,当人员结果不存在时调用新增人员接口。脚本如下:
var persons = [tar];
//云之家不存在此人员,走新增
result = add_person(persons);
if(result[0].msgCode != 209){
throw "新增人员失败:" + result[0].error;
}else{
message = "苍穹人员: " + tar.name +" 新增成功。";
}3.6 更新人员节点
判断查询人员得到的结果是否存在,当人员存在时调用更新人员接口。脚本如下:
//云之家存在此人员,走更新
tar.openId = query_result[0].openId;
result = update_person(persons);
if(result[0].msgCode != 209){
throw "更新人员失败:" + result[0].error;
}else{
message = "苍穹人员:" + tar.name +" 更新成功。";
}
3.7 失败次数递增节点
通过错误转移节点,捕获调用更新/查询API返回的异常结果,在后续的脚本节点中对重试次数进
如何通过服务流程进行接口幂等与重试
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



