如何通过服务流程进行接口幂等与重试
服务流程是集成云推出的面向复杂集成场景的低代码服务编排工具,能够把已有的集成对象、集成方案、消息服务、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返回的异常结果,在后续的脚本节点中对重试次数进行处理并构造异常信息。脚本如下:
retry_num_add++;
if(retry_num > 3){
message = "苍穹人员 " + tar.name +" 同步至云之家失败。错误信息:" + result[0].msg;
}
新增人员重试
在普通转移配置中添加条件:当重试次数小于等于3时,流转回时间等待节点后,继续调用人员查询API,再根据查询结果判断是继续调用插入API还是发送通知终止流程;当重试次数大于3时执行后面的通知发送节点。
回调转移 继续流转
更新人员重试的脚本如下:
retry_num_update++;
if(retry_num > 3){
message = "苍穹人员 " + tar.name +" 同步至云之家失败。错误信息:" + result[0].msg;
}
更新人员重试
在普通转移中添加条件,当重试次数小于等于3时流转回时间等待节点后继续调用人员更新API;当重试次数大于3时执行后面的通知发送节点。
3.8 时间等待节点
在每次API调用失败时,需要新增时间等待节点,防止因网络问题等导致的异常。
时间等待节点配置示例
3.9 发送通知节点
在通知发送节点可以配置具体的消息接收系统和消息接收人,并且在消息设置中可以引用服务流程变量,格式为“#{变量名}”。
发送通知节点配置示例
3.10 节点重试
除了按照上述流程配置重试外,还可以单独在节点上配置重试信息。其中,流程重试可以灵活设置判断逻辑,且可以对流程变量进行处理。
节点重试可以在单节点(如脚本节点)配置重试前提和重试策略。当流程实例运行到该节点抛出异常时,根据重试策略自动重试。
如图,当抛出的异常信息包含“超时”两个字的时候,将间隔5秒、30秒、300秒自动重试。
节点重试配置示例
4 参考资料
更多关于集成服务云的知识,可参考下述资料:
#往期推荐#
更多精彩内容,“码”上了解!↓
如何通过服务流程进行接口幂等与重试
本文2024-09-23 00:52:41发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-142317.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf