使用工作流的时候有时会遇到这样的一种情况就是一个任务需要几个人一起审批,人数不定。这时常规的用户任务就无法满足要求,我们称这种任务为会签任务。
下面是我开发中的遇到的一个业务好遇到这种情况,记录一下,以便小白参考。
流程图:
说明:这是一个公文流转(收文)流程,先是“公文管理”提交收文文件,然后综合部长审批,然后主要领导审批,然后主要领导指派几个分管领导会签,会签完成后交由部门负责人签收,然后部门负责人指派几个部门人员处理,部门人员处理完成后及流程结束。这个流程我们看到分管领导和“部门人员”这两个任务节点是会签节点也可以叫多实例,因为本文只要讲解会签任务,所以其他节点不在详述,我们以其中一个会签节点“分管领导”任务节点为例看下它是如何配置的。
点击“分管领导”节点,选择“Main config”设置指定会签的领导:
然后点击 “Multi instance”多实例选项,配置如下:
经过上面两个配置,就基本达到了我流程的需求,下面讲一下各个属性的含义
Multi instance:
Sequence 设置流程为串行还是并行处理,串行即为几个处理人一个个处理,前一个人处理完了下一个人才能处理,
并行即为处理不分先后,也可以一起处理。这种我选择false并行处理。
Loop cardinality设置节点的循环次数,有的任务可能需要处理多次。这个我们没需求所以不配置。
Collection 设置处理人集合,流程会自动分配给List集合中的处理人,这里我们设置变量名叫assigneeList你也可以叫其他名字。
Element variable设置一个处理人变量,这个值是上面list中的一个对象,我们叫assigee,你也可以叫其他名字,但是这个变量需要
和你在Main Config中配置的变量名保持一致,不然查询当前任务时会查到2条相同的任务。
Completion condition设置结束条件,在这里配置会签结束条件,我的业务是所有人分管领导处理完后进入下一个任务,
所有配置${nrOfCompletedInstances/nrOfInstances >= 1},但是不要配置成${nrOfCompletedInstances==nrOfInstances }
虽然我们理解意思是一样的,但这样好像activiti不能识别,只要有一个人处理就提前结束了任务。