任务候选人是有权限对该任务进行操作的用户,
可以使用TaskService.addCandidateUser() 或 addCandidateGroup()实现,
可以在bpmn中进行配置,
可以使用监听器方式(需要继承TaskListener)
可以使用JUEL表达式实现,使用${}来引用,和EL表达式一样
下面我们使用JUEL表达式实现:
1. 在bpmn中引用类:
<process id="leaveBill" name="leaveBillprocess" isExecutable="true">
<startEvent id="startevent1" name="Start"></startEvent>
<endEvent id="endevent1" name="End"></endEvent>
<userTask id="usertask1" name="User Task" activiti:candidateUsers="${authService.getCandidateUsers()}"></userTask>
<sequenceFlow id="flow3" sourceRef="usertask1" targetRef="endevent1"></sequenceFlow>
<userTask id="usertask2" name="User Task"></userTask>
<sequenceFlow id="flow4" sourceRef="startevent1" targetRef="usertask2"></sequenceFlow>
<sequenceFlow id="flow5" sourceRef="usertask2" targetRef="usertask1"></sequenceFlow>
</process>
...
2. 定义获取用户的类,要序列化
public class AuthService implements Serializable {
public List<String> getCandidateUsers(){
List<String> users=new ArrayList<>();
users.add("user1");
users.add("user2");
return users;
}
}
3. 在流程中传入引用类
RuntimeService runtimeService = engine.getRuntimeService();
Deployment de = rs.createDeployment().addClasspathResource("test.bpmn").deploy();
Map<String,Object> vars=new HashMap<>();
vars.put("authService", new AuthService());
ProcessInstance pi =
runtimeService.startProcessInstanceByKey(de.getKey(),vars);
List<Task> list2 = taskService.createTaskQuery().taskCandidateUser("user1").list();
List<Task> list2 = taskService.createTaskQuery().taskCandidateUser("user2").list();
activiti 动态分配任务候选人
猜你喜欢
转载自blog.csdn.net/ldqchat/article/details/81866073
今日推荐
周排行