Activiti 用户任务并行动态多实例(多用户执行流程)

在很多情况下,我们需要多用户共同执行余下流程,比如开会流程

领导发起开会,选择开会人员(多个)

每个开会人员接收到通知后需要签到(一名用户签到不会影响到另一位用户的签到)

签到完成后则流程结束

  如果只使用代理(Assignee、Candidate users、Candidate groups) 将无法解决上述问题,因为即使使用 Candidate users ,但每个用户实际上还是在一个任务里面,其中一个用户完成任务,另外的用户任务也随之完成,此时,就需要用到多实例(多任务)。

以上面开会流程为例:

1. 创建模型

Activiti 用户任务并行动态多实例(多用户执行流程)

2. 模型相关配置

【领导发起开会】
由于具体是哪个领导发起开会有不确定性(只要是领导都可以发起),所以需要设置代理人属性:
Assignee: ${leader}  -- 此处采用变量形式

Activiti 用户任务并行动态多实例(多用户执行流程)

Activiti 用户任务并行动态多实例(多用户执行流程)


为了方便后面的【开发人员签到】流程,我们还需要在【领导发起开会】流程处设置一个流程执行监听器(此操作不是必须,此处只是为了解释动态多实例),在Activiti中,配置监听器需要在模型和JAVA中都进行相应配置:
JAVA中我们想要创建监听器只需要创建一个类,并实现系统监听器类 ExecutionListener 即可,代码如下:

package com.kenary.activiti.listener; import org.activiti.engine.delegate.DelegateExecution; import org.activiti.engine.delegate.ExecutionListener; /** * 自定义监听器 */ public class MyExecutionListener implements ExecutionListener { @Override public void notify(DelegateExecution delegateExecution) throws Exception { } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpszws.html