如何通过服务流程进行异常处理与状态通知

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何通过服务流程进行异常处理与状态通知


服务流程是集成云推出的面向复杂集成场景的低代码服务编排工具,能够把已有的集成对象、集成方案、消息服务、API接口等集成资源,通过流程化设计编排成全新的应用服务,以支持更加复杂的业务场景。


例如基础数据分发到多个系统、数据消费需要从多源取数、基于某个数据参数处理不同的集成过程等等。


为了帮助大家快速掌握服务流程的使用方法,我们推出了系列文章,通过11个典型案例向大家介绍服务流程的高级技巧。


在上期集成服务流程典型案例系列文章中,我们为大家介绍了服务流程的第6个典型案例:如何使用服务流程进行数据一致性补偿同步


本期,小编继续为大家介绍第7个案例:通过服务流程中的错误转移、补偿转移功能,进行异常数据处理与发送状态通知,包括以下3个要点:


  • 需求场景介绍;

  • 以采购订单业务为例,解析如何使用错误转移处理异常数据,并发送通知;

  • 以机票购买流程为例,解析如何使用补偿转移修复已传输数据。




需求场景介绍


在使用集成服务的过程中,需要对数据集成过程中可能出现的各种异常进行处理,包括错误转移、补偿转移、流程通知等,将服务流程成功或者失败的结果通过苍穹平台消息或手机短信通知相关负责人。


案例介绍

2.1 错误转移案例


错误转移案例-流程概览


以采购订单业务为例,正常的流程走向为:【调用微服务保存采购订单】→【采购订单提交】→【采购订单审核】→【采购订单下推采购入库单】→【采购入库单保存】→【采购入库单提交】→【采购入库单审核】→【处理数据】→【结束】。


如果【采购订单下推采购入库单】及【采购入库单保存】节点出现异常导致节点失败,业务方则需要回滚相应操作,并删除采购订单。


红色的线条表示错误转移,经过错误转移后,后续流程会先通过消息发送节点将具体失败异常信息发送给用户,然后执行【采购订单反审核】→【采购订单删除】等操作。


点击红色错误转移线条可进行转移配置。其中,“$error.message”用于存储上一节点出错的异常信息,将其赋值给【服务流程】→【流程属性】→【流程变量】过程中创建的全局变量errMsg。


然后,在后续节点可以对“errMsg”进行处理,或作为流程通知内容发送给相关负责人。


注意:必须在脚本最后加上“return true”或者“$error!=null”。


错误转移配置


以下是流程通知节点的配置内容:


通知节点配置


在【固定消息接收人-苍穹用户】中,选择当前苍穹系统用户,消息则会发送到下图中红色箭头所指的位置。在【固定消息接收人-非苍穹用户】中,填写被通知人员的名字和电话号码,可发送短信至对应人员的手机。


通过“#{var}”引用服务流程中定义的变量,“var”即为变量名;通过“#{var.pro}”引用变量中的某个属性值。“#{errMsg}”表示在错误节点时的异常信息,可以发送给相应人员。


通知接收效果


2.2 补偿转移案例


在某些复杂的业务中,假设服务流程正常执行的业务是A-B-C或A-C或B-C,A和B是可选的操作,业务C是最终的操作,但C可能会出错,出错后需要对A、B进行业务弥补,但可能只对A或者只对B进行业务弥补操作。这种场景可用补偿转移来实现。


此处以机票购买流程为例,为大家介绍补偿转移。案例背景如下:


小A有1000元预算,需要预订一张600元的机票,但无需购买保险。因此,购买时仅需扣除机票钱,无需扣除保费。且即使机票预定失败,也无需退保费。若仅购买机票而不购买保险,当机票预定失败时,处理流程如下图所示:


补偿转移案例-流程概览


具体处理方法如下:

在【流程变量】里定义变量“money”的默认值为1000元,变量“flag1”和“flag2”用于模拟不购买保险和预订机票失败的情形。


流程变量设置


在【扣除600元机票钱】脚本节点里,将“money”扣减600元。


脚本节点


在【购买保险】线条内写入条件“return flag1”,由于“flag1=false”,流程则不会执行【扣除保险50元】操作。


脚本节点


同样的原理,可用于模拟预订机票失败。点击“发布”→【立即执行】→【流程实例】,可查看流程图,如下所示:


运行结果


在【流程变量】里定义变量“money”的默认值为1000元,变量“flag1”和“flag2”用于模拟不购买保险和预订机票失败的情形。流程变量设置如下:


流程变量


在整个流程中,我们模拟了购票会先支付600元机票钱,且不购买保险。当预订机票失败后,通过流程通知节点发出消息。在最后的【撤销流程并触发退款】流程终止节点里其实没有任何内容,但是要注意节点类型是流程终止节点。


最终的钱数还是1000元,退款600元的操作实际是在【退款600元】的脚本节点里,需要用补偿转移黄色线条从【扣除600元机票钱】指向【退款600元】。


脚本节点


若模拟需要购买保险,我们可以再次修改流程变量的值,令flag1=true。最终的效果如下图:实现退款操作,退了600元机票钱和50元保险钱,最终钱数还是1000。


在流程撤销时,补偿转移可以对已成功执行的业务进行补偿(业务实现,通过恰当的反向操作保证业务的完整性)。在类似场景下,如果用错误转移来实现可能需要特别复杂的条件判断(尤其在需要补偿多个业务操作时),甚至完全不可行(人工撤销流程时无法触发错误转移)。


运行结果

流程变量


参考资料


更多关于集成服务云的知识,可参考下述资料:


集成服务流程操作指南




#往期推荐#


# 如何使用服务流程进行基础资料初始化


# 如何在服务流程中进行API集成

# 如何在服务流程中使用消息集成

# 如何使用服务流程对启动方案失败进行自动补偿

# 如何通过服务流程进行单据反写


# 如何使用服务流程进行数据一致性补偿同步


更多精彩内容,“码”上了解!↓


如何通过服务流程进行异常处理与状态通知

服务流程是集成云推出的面向复杂集成场景的低代码服务编排工具,能够把已有的集成对象、集成方案、消息服务、API接口等集成资源,通过流程...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息