springboot,Flowable 流程实例的激活与挂起(一)

一.简介

要实现流程实例的挂起和激活,首先要知道什么是流程实例的挂起和激活。

挂起:
①一个定义好的流程模板(流程定义),如果挂起了,那么就无法据此创建新的流程实例。
② 一个流程实例如果挂起了,那么就无法执行流程中的任务。
激活:
就跟挂起是相反的。

二.流程模板(流程定义)的挂起

1.查询是否挂起

对于一个定义好的流程模板,可以通过如下代来查看这个流程是否挂起:

@Test
void test05() {List list = repositoryService.createProcessDefinitionQuery().list();for (ProcessDefinition processDefinition : list) {String id = processDefinition.getId();boolean suspended = repositoryService.isProcessDefinitionSuspended(id);if (suspended) {logger.info("流程定义 {} 已挂起",processDefinition.getName());}else{logger.info("流程定义 {} 未挂起",processDefinition.getName());}}
}

这个查询 SQL 涉及到的表是 ACT_RE_PROCDEF,该表中有一个名为 SUSPENSION_STATE_ 的字段,该字段表示这个流程是否挂起。如下图:
在这里插入图片描述
1 表示流程没有挂起。

2.挂起

执行如下方法,可以挂起一个流程模板(流程定义),代码如下:

@Test
void test06() {List list = repositoryService.createProcessDefinitionQuery().list();for (ProcessDefinition pd : list) {repositoryService.suspendProcessDefinitionById(pd.getId());}
}

挂起的原理其实很简单,就是去 ACT_RE_PROCDEF 表中,将 SUSPENSION_STATE_ 字段的值设置为 2,就表示这个流程定义挂起了,我们可以看下流程定义挂起时执行的 SQL:
在这里插入图片描述
从这个执行的 SQL 中我们可以清晰的看到,操作的表是 ACT_RE_PROCDEF,修改的字段就是 SUSPENSION_STATE_,将该字段的值修改为 2(乐观锁相关的 REV_ 字段不考虑)。

对于一个已经挂起的流程定义,如果我们想据此启动一个流程,如下:

@Test
void test01() {identityService.setAuthenticatedUserId("wangwu");ProcessInstance pi = runtimeService.startProcessInstanceByKey("leave");logger.info("id:{},activityId:{}", pi.getId(), pi.getActivityId());
}

此时就会抛出如下异常:
在这里插入图片描述
这个异常说的很明白了,流程定义被挂起了,无法开启一个新的流程实例。

3.激活

已经挂起的流程定义,还可以激活,方式如下:

@Test
void test07() {List list = repositoryService.createProcessDefinitionQuery().list();for (ProcessDefinition pd : list) {repositoryService.activateProcessDefinitionById(pd.getId());}
}

激活的原理也很简单,,就是去 ACT_RE_PROCDEF 表中,将 SUSPENSION_STATE_ 字段的值设置为 1,就表示这个流程定义激活了,我们可以看下流程定义激活时执行的 SQL:
在这里插入图片描述
注意看操作的表、字段以及对应的参数。

下一篇再写下流程实例的挂起和激活

《肖申克的救赎》

生命可以归结为一种简单的选择:要么忙于生存,要么赶着去死。

懦怯囚禁人的灵魂,希望可以感受自由。强者自救,圣者渡人。

希望是件美丽的东西,也许是最好的东西。美好的东西是永远不会死的。

每个人都是自己的上帝。如果你自己都放弃自己了,还有谁会救你?

《熔炉》

我们一路奋战,不是为了能改变世界,而是为了不让世界改变我们。

现实如水母,看似美好无害实质总是致命伤人。

我们来到世界上,都是孤独的旅行,即使身边有人相伴,最终也会各奔东西!

世界上最美丽最珍贵的,反而是听不见且看不清的,只有用心才能感受得到。

《教父》

人可以不断犯错,但绝不能犯要命的错。

不要憎恨你的敌人,那会影响你的判断力。

人并非生来就伟大,而是越活越伟大。

《活着》

人是为了活着本身而活着,而不是为了活着之外的任何事物而活着。

以笑的方式哭,在死亡的伴随下活着。

没有什么比时间更具有说服力了,因为时间无需通知我们就可以改变一切。

你的命是爹娘给的,你不要命了也得先去问问他们。

《我不是药神》

世界上只有一种病,穷病,这种病你没法治,你也治不过来。

人间最高贵的是善良,是对生命的致敬。

《指环王》

把手握紧,里面什么也没有;把手放开,你得到的是一切。

我宁愿和你共度凡人短暂的一生,也不愿一个人看尽这世界的沧海桑田。

20.幸福的家庭都是相似的,不幸的家庭各有各的不幸。

或许有一天,人类变得萎缩懦弱,舍弃朋友,断绝友谊,但今天决不会这样。
《饮食男女》

22.人生不能像做菜,把所有的材料都准备好了才下锅。

什么叫做“可惜”啊,要心中有个“惜”字儿,才知道可惜。

其实一家人,住在一个屋檐下,照样可以各过各的日子,可是从心里产生的那种顾忌,才是一个家之所以为家的意义。

《让子弹飞》

世界上本没有路,有了腿便有了路。

如果你活着,早晚都会死;如果你死了,你就永远活着。

赚钱嘛,不寒碜


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部