具体实现代码如下:
/**
* @Title: findAllMyTask
* @Description: TODO(根据userId查找所有的代办任务及其所属角色的代办任务)
* @param userId
* @return
* @return List<Task> (这里用一句话描述返回结果说明)
*/
public List<Task> findAllMyTask(String userId){
//这里是自己的业务逻辑,根据userId查询所属分组,这里调用业务接口
List<String> groupId = new ArrayList<String>();
groupId.add("j1");
groupId.add("j2");
List<Task> userTaskList = this.findMyTaskListByUserId(userId);
Set<String> taskIdsSet = new HashSet<String>();
for (int i = 0; i < userTaskList.size(); i++) {
taskIdsSet.add(userTaskList.get(i).getId());
}
List<Task> groupTaskList = this.findMyTaskListByGroupId(groupId);
for (int j = 0; j < groupTaskList.size(); j++) {
if(taskIdsSet.add(groupTaskList.get(j).getId())){
userTaskList.add(groupTaskList.get(j));
}
}
return userTaskList;
}
/**
* @Title: findMyTaskListByUserId
* @Description: TODO(根据用户Id查找所有的代办任务)
* @param loginId 用户Id
* @return List<Task> (这里用一句话描述返回结果说明)
*/
public List<Task> findMyTaskListByUserId(String userId){
List<Task> assigneeList = processEngine.getTaskService()
.createTaskQuery()//指定个人任务查询
.taskAssignee(userId)
.list();
List<Task> candidateUserList = processEngine.getTaskService()
.createTaskQuery()//指定个人任务查询
.taskCandidateUser(userId)
.list();
List<Task> listAll = new ArrayList<Task>();
listAll.addAll(assigneeList);
listAll.addAll(candidateUserList);
List<Task> returnList = new ArrayList<Task>();
Set<String> taskIdsSet = new HashSet<String>();
for (int i = 0; i < listAll.size(); i++) {
if (taskIdsSet.add(listAll.get(i).getId())) {
returnList.add(listAll.get(i));
}
}
return returnList;
}
/**
* @Title: findMyTaskListByGroupId
* @Description: TODO(根据角色Id查找所有的代办任务)
* @param groupId 角色Id
* @return List<Task> (这里用一句话描述返回结果说明)
*/
public List<Task> findMyTaskListByGroupId(List<String> groupId){
List<Task> candidateGroupList = processEngine.getTaskService()
.createTaskQuery()//指定个人任务查询
.taskCandidateGroupIn(groupId)
.list();
return candidateGroupList;
}