【技术实现步骤摘要】
基于Activiti工作流实现逆向流转的方法
本专利技术涉及一种基于Activiti工作流实现逆向流转的方法。
技术介绍
Activiti是一个轻量级工作流业务管理平台,它总是以活动节点的形式驱动业务流程往下执行,其核心是使用java开发的快速、稳定的BPMN2.0引擎。BPMN定义了业务流程图,其基于流程图技术,同时对创建业务流程的图像化模型进行裁剪。业务流程的模型就是图形化的网图,包括一系列活动节点以及操作顺序的控制流。因此在Activiti中业务流程的走向需要通过控制流也就是节点之间的连线来控制,无法在脱离控制流的情况下让流程实现逆向流转,即退回到上一步或者之前的任意活动节点。基于Activiti的流程逆向流转的现有方法主要有以下两种:1.直接让流程实例执行回退的目标节点,这种方案只能够支持简单的业务流程,相对复杂的流程在这种方案下会导致流程后续无法正常流转,对于并行网关,包容网关,排他网关等产生的多分支路径的业务流程并不支持流程的逆向流转。2.通过控制流来促使流程实现逆向流转,即在绘制业务流程 ...
【技术保护点】
1.一种基于Activiti工作流实现逆向流转的方法,其特征在于,它包括以下步骤:/nS1.确定流程的回退路径:从当前节点出发,以回退节点为目标节点执行广度优先搜索,找到回退路径;/nS2.对回退路径上的收敛网关执行对象补偿:对回退路径执行弹栈查询,遇到收敛网关时,对该收敛网关补偿正确的执行实例数量;/nS3.对分裂网关并行于当前节点的执行实例进行裁剪;/nS4.判断回退节点是否处于并发分支;/nS5.执行对象执行回退节点:若回退节点处于主流程上,将流程实例设为激活状态,使用流程实例执行回退节点;若回退节点处于并发分支上,使用流程实例创建子执行对象,用子执行对象执行回退节点。/n
【技术特征摘要】
1.一种基于Activiti工作流实现逆向流转的方法,其特征在于,它包括以下步骤:
S1.确定流程的回退路径:从当前节点出发,以回退节点为目标节点执行广度优先搜索,找到回退路径;
S2.对回退路径上的收敛网关执行对象补偿:对回退路径执行弹栈查询,遇到收敛网关时,对该收敛网关补偿正确的执行实例数量;
S3.对分裂网关并行于当前节点的执行实例进行裁剪;
S4.判断回退节点是否处于并发分支;
S5.执行对象执行回退节点:若回退节点处于主流程上,将流程实例设为激活状态,使用流程实例执行回退节点;若回退节点处于并发分支上,使用流程实例创建子执行对象,用子执行对象执行回退节点。
2.根据权利要求1所述的基于Activiti工作流实现逆向流转的方法,其特征在于:步骤S2中收敛网关的执行实例补偿方法如下:
以该收敛网关为起点,针对其每一条入线都执行深度优先搜索,如果深度优先搜索可以到达回退节点,记为非补偿入线;
通过该收敛网关定义入线数减去非补偿入线数得到该网关需要补偿的执行实例个数;
使用流程实例创建对应补偿个数的子执行对象,将创建的子执行对象设置为冻结状态并且活动节点为该收敛网关。
3.根据权利要求1所述的基于Activiti工作流实现逆向流转的方法,其特征在于:步骤S3中执行实例的裁剪起点为距离回退节点最近的应剪除网关,获取裁剪起点的步骤如下...
【专利技术属性】
技术研发人员:黄学雯,林斌,翁增仁,
申请(专利权)人:福建博思软件股份有限公司,
类型:发明
国别省市:福建;35
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。