activiti给用户任务分配权限
大部分的业务流程都会有人的参与,用户任务是最常用的任务,在流程图中使用userTask元素定义用户任务。
当流程到达用户任务时该任务会被分配到特定用户或者用户组,这就是给用户任务分配权限。这个分配权限指的是分配后可以通过activiti提供的任务查询api根据用户或者用户组来查询到这个任务。
一、使用JUEL表达式分配权限
一个任务可以设置多个候选人,候选人在业务上指的是有权对该任务进行操作的群体。在流程图上使用juel表达式分配候选人的方法如下
<userTask id="sid-31845D76-A308-4442-AE19-4AA4238DB39A" name="juel表达式分配候选人" activiti:candidateUsers="${candidateUsers}"></userTask>
这里的candidateUsers是一个流程变量,以list的形式存放了候选人列表。
//使用juel表达式指定候选人
List<String> candidateUsers=new ArrayList<>();
candidateUsers.add("zhangsan");
candidateUsers.add("lisi");
Map<String,Object> variableMap=new HashMap<>();
variableMap.put("candidateUsers",candidateUsers);
ProcessInstance processInstance = runtimeService.startProcessInstanceByKey("juel-candidateUser2",variableMap);
System.out.println(processInstance);
权限分配成功后就可以使用activiti提供的任务查询api来根据候选人查询任务
List<Task> list = taskService.createTaskQuery().taskCandidateUser("lisi").list();
for (Task task : list) {
System.out.println(task.getName());
}
1.2 给用户任务分配候选组
候选组的概念和候选人类似,用来把一个群体的人指定为一个任务的权限人,对应的是activiti中的用户组,分配一个用户组id到某个任务上,可以指定整个组的人为该任务的候选人,在流程图上指定候选组的方式和指定候选人类似
1.3 给用户任务分配代理人
候选组的概念和候选人类似,用来把一个群体的人指定为一个任务的权限人,对应的是activiti中的用户组,分配一个用户组id到某个任务上,可以指定整个组的人为该任务的候选人,在流程图上指定候选组的方式和指定候选人类似
<userTask id="juel-candidateGroup" name="juel表达式指定候选组" activiti:candidateGroups="${candidateGroup}"></userTask>
这里的candidateGroup也是一个流程变量,其中存放了用户组id的lsit集合
Map<String,Object> map=new HashMap<>();
List<String> groupList=new ArrayList<>();
groupList.add("项目经理");
groupList.add("测试");
map.put("candidateGroup",groupList);
runtimeService.startProcessInstanceByKey("juel-candidateGroup2",map);
注意这个用户组在activiti的群组表中可以不存在。
可以使用任务查询api查询群组对应的任务
List<Task> list = taskService.createTaskQuery().taskAssignee("jerry").list();
for (Task task : list) {
System.out.println(task.getName());
}
与候选人和候选组不同的是,代理人会被设置到任务表act_ru_task的ASSIGNEE_字段中
上面的juel表达式中放置的都是一个流程变量,流程变量中存的是集合或者字符串,实际上也可以在流程变量中存一个JavaBean对象,然后在juel表达式中调用这个对象的方法和或者属性,调用属性时需要提供属性的get方法,并且属性要是public的,调用方式如下
${authBean.getAssignee}
${authBean.getCandidateUsers}
原文地址:https://www.cnblogs.com/chengxuxiaoyuan/p/13760913.html