文章目录
1. 通用拒绝
使用activiti实现各种审批动作,包括一些中国式流程操作,比如回退,征询等,这些操作activiti的标准功能是没有的,但因为activiti不算复杂,也比较灵活,因此可以通过一些技巧或者变通的方法实现,这章就讨论通用拒绝的实现。为什么叫通用拒绝,因为在activiti里,正常的拒绝都是通过连接线加条件判断实现,你可以定义一个变量如status,拒绝的时候给这个变量赋值0,在连接线上设置条件表达式从而实现拒绝操作。如图:
总经理驳回到发起人的表达式为${status==0}
,在流程设置好变量就可以实现驳回操作。
这种拒绝实现方式优点是简单,标准支持,灵活性强,能够从任意节点拒绝回任意节点,但缺点也是明显的
- 一般流程每个节点都有可能拒绝,那就意味着每个节点都需要设置判断条件,如果都要拒绝回发起人,那么都要跟发起人节点进行连接,如果节点多的话会大大增加流程图的复杂度,让流程图变成一张“蜘蛛网”。
因此我们需要一个通用拒绝的功能,需求是,在任意节点拒绝后自动回到发起人节点,发起人重新提交后流程重新开始。
那么面临的两个问题是:
- 流程图中没有发起人节点,怎么造出这个发起人节点
- 流程已经在流转中了,如何重新流转