一、概述
在开发作业管理功能时,查询某个用户的待办和已办任务是基本需求。activiti也提供了接口用于查询待办和已办任务。承接上两篇博客的介绍,这里的待办和已办是指审批人待审批的电子流和已审批完成的电子流。
activitid的28张表中的act_ru_task记录了待办任务;act_hi_taskinst记录了历史的已办任务。
二、实现逻辑
/**
* 查询用户待办任务列表。
*
* @param assignee 用户
* @return 任务列表
*/
public List<LeaveTask> queryToDoTasks(String assignee) {
List<Task> taskList = taskService.createTaskQuery().taskAssignee(assignee).list();
List<LeaveTask> leaveTasks = new ArrayList<>();
for (Task task : taskList) {
LeaveTask leaveTask = new LeaveTask();
leaveTask.setTaskId(task.getId());
leaveTask.setName(task.getName());
leaveTask.setProcessDefinitionId(task.getProcessDefinitionId());
leaveTasks.add(leaveTask);
}
return leaveTasks;
}
/**
* 查询已处理任务列表。
*
* @param assignee 用户
* @return 已处理任务列表
*/
public List<LeaveTask> queryDoneTasks(String assignee) {
List<HistoricTaskInstance> taskList = historyService.createHistoricTaskInstanceQuery()
.taskAssignee(assignee)
.finished()
.list();
List<LeaveTask> leaveTasks = new ArrayList<>();
for (HistoricTaskInstance task : taskList) {
LeaveTask leaveTask = new LeaveTask();
leaveTask.setTaskId(task.getId());
leaveTask.setName(task.getName());
leaveTask.setProcessDefinitionId(task.getProcessDefinitionId());
leaveTasks.add(leaveTask);
}
return leaveTasks;
}
源码GitHub路径: https://github.com/ylforever/elon-activiti