Activiti应用实践(三)-查询待办和已办任务

一、概述

在开发作业管理功能时,查询某个用户的待办和已办任务是基本需求。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

发布了113 篇原创文章 · 获赞 183 · 访问量 29万+

猜你喜欢

转载自blog.csdn.net/ylforever/article/details/99708257
今日推荐