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

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

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


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


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


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


在上两期集成云服务流程经典案例系列文章“如何在服务流程中进行API集成”、“如何在服务流程中使用消息集成”中,我们为大家介绍了服务流程的两个经典案例。本期,小编继续为大家介绍第3个案例:在启动方案失败时,如何使用服务流程自动进行失败补偿,包括以下3个要点:


  1. 案例使用场景说明

  2. 如何配置服务流程自动补偿案例(人工启动

  3. 如何配置服务流程自动补偿案例(事件触发




案例使用场景说明


当方案运行时,发生不明中断引起的事件触发、定时启动类型的启动方案执行失败,可通过使用本服务流程案例,自动查询指定启动方案的失败执行日志,并且有针对性地对其进行重试,从而达到自动补偿的目的。


注:本案例属于通用型解决方案,导入后无法直接运行,需要参照文档说明与实际启动方案的使用情况,对案例流程中涉及启动方案的位置进行调整。


服务流程自动失败补偿分为2种:

1)人工启动:非自动执行方案,需要运维人员在发现异常日志并且定位到缺失数据后,人工执行此案例以完成数据修复。

2)事件触发:自动执行方案,无需运维人员人工操作,流程在发现异常日志后自动执行重试方案。


流程图概览


流程案例解析(人工启动)


非自动执行方案,需要运维人员在发现异常日志并且定位到缺失数据后,人工执行此案例完成数据修复。


2.1 流程属性设置


服务流程的属性设置主要包括三个方面:基本信息、流程变量依赖资源


首先,配置流程的【基本信息】栏所需填写的字段如下图所示:


流程基本信息示例


【流程变量】栏需设置的各属性如下图所示:


流程变量示例


【流程依赖资源】栏的主要字段如下图所示:


流程依赖资源示例


注意:建议不要修改【流程属性】中【流程变量】和【依赖资源】的“别名”。若有修改必要,请务必在流程图中将对应的别名进行修改,否则流程无法正常执行。


2.2 流程配置说明


(1)根据启动方案的异常状态判断是否直接重试或执行后续日志查询节点(异常状态也可以自行添加)。


a: 成功——非本案例适用场景,不执行后续流程

b: 非成功——本案例适用场景,继续执行后续流程

c: 执行中发生预知外的异常——发送错误信息消息,并结束流程


(2)在集成云执行日志中查询是否存在状态为失败的日志。


a: 存在——执行后续节点(通过SQL查询条件,排除名称包含“重试失败”的日志,查询条件可根据实际情况自行添加)。

b: 不存在——流程结束。


(3)对失败日志进行路由重试(可在【流程变量】中自定义重试次数)


a: 小于重试上限次数,再次重试,并且根据重试后新产生的失败日志继续执行轮询,直至大于等于指定次数。

b: 大于等于重试上限次数,停止重试并发送通知。


2.3 详细配置步骤


(1)将【流程属性】→【依赖资源】中的启动方案修改为需要监听失败日志的启动方案


依赖资源示例


(2)修改【流程属性】→【依赖资源】中的数据源为当前账套对应的数据源,原因在于需要监听的日志来自本账套集成管理系统内。若源系统或目标系统中不包含当前苍穹系统,需要额外新增数据源,绑定到当前账套连接(连接配置)。


数据源管理示例


(3)按实际方案要求修改流程图中的“数据集成”节点的方案资源与过滤方式/参数


节点配置示例


(4)本节点输出结果将最终保存至变量“exeId”,状态保存至“exeState”中。



(5)根据连接线的判断条件,执行相关操作:

exeState =‘S’时,则执行结果无失败问题,流程直接结束。

exeState状态为其他时,执行后续日志查询流程。

当节点运行失败时,直接发送通知至用户(发送消息需要自行设置)。



(6)如果启动方案执行失败,则先通过时间等待节点进行等待,动态预留网络处理/解决时间。



(7)通过脚本节点的SQL语句,对当前系统的集成执行日志进行查询(可根据需求对脚本进行修改,建议不超过1000个字符)。


具体脚本如下:


//查询需要重试的失败日志ID
var sql = 
"select top 1000 fid from t_isc_data_copy_exec_log where fdata_copy_execution = ? and fstate ='F' and fmessage not like '重试失败%' and fsource_data_tag <> ' ' order by fcreated_time";
ids = query_column(ierp, sql, [exeId], [BIGINT]);


(8)后续节点的状态分为无失败执行日志有失败日志已达重试上限)、有失败日志未达到重试上限)3种情况。


a: 无失败日志时,流程结束

b: 有失败日志且重试次数已达上限,发送重试失败通知给用户

c: 有失败日志且为达到重试上限,进行后续重试失败日志节点



(9)若后续节点有失败日志且未达到重试上限次数,则首先初始化计数器(index,利用流程变量,保证中途失败后继续执行,不再重复执行已重试的日志)。



然后,通过调用重试日志微服务,对失败日志进行重试,并在脚本中添加撤销信号,保证发生异常时可及时撤销流程实例。



重试失败日志的具体脚本如下:


// 重试失败日志
while(index < ids.length) {
  var id = ids[index];
  CheckCancelSignal();//撤销信号
  invokeMicroService("isc""iscb""ISCDataCopyService""retryLog", String(id));
  index++;
}
retryCount++;//重试次数+1


流程案例解析(事件触发)


自动执行方案,无需运维人员人工操作,流程在发现异常日志后自动执行重试方案。


3.1 流程属性设置


与前文2.1设置内容相同,配置流程的属性,主要包括基本信息、流程变量和依赖资源。具体如下图所示:


流程属性示例

流程节点示例


注意

1. 原有事件触发的启动方案需要禁用,否则事件会同时触发该服务流程和启动方案。

2. 不要随便修改【流程属性】中【依赖资源】和【流程变量】的“别名”,如若修改请在流程图中做相应修改。


3.2 流程配置说明


(1)根据启动方案的异常状态判断是否直接重试或执行后续日志查询节点(异常状态也可以自行添加)。



(2) 将【流程属性】→【依赖资源】中的启动方案修改为需要的启动方案


(3) 将【流程属性】→【依赖资源】中的数据源修改为当前账套对应的数据源


(4) 将【流程属性】→【依赖资源】中的集成对象修改为监听的对象(启动方案的源对象)。



(5) 为流程图中的“开始节点”设置监听事件与修改被监听的集成对象,并根据实际方案设置取值字段。



(6) 后续步骤同人工启动,请参考前述的人工启动流程。


参考资料


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


集成服务流程操作指南





#相关推荐#


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

# 一文拆解集成原理,让数据集成不再伤神

# 一篇揭秘服务流程设计器的好文,速看!

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


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



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

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