activiti,根据userId查找所有的代办任务及其所属角色的代办任务

具体实现代码如下:

/**
	* @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;
    }

猜你喜欢

转载自blog.csdn.net/qq_25927437/article/details/87339812