在一节中我们讲了如何启动一个流程,以及启动流程后会影响的7张表。在这一节我们将要讲解如何查看一个指定的用户的任务,以及如何完成一个指定的任务。
一、查看指定用户的当前任务
在上一节中我们启动了一个请假的流程,该流程一共有三个步骤,分别是
- 主管审批
- 总经理审批
- 人事部审批
在上一节中只是启动了流程,并没有执行任何的流程任务,所以按照逻辑来讲,这个请假流程是到了“主管审批”的任务节点,由上一节的内容可以知道,主管审批是由一个叫张三的人来处理,这里我们就从这个叫张三的用户入手,查看张三这个用户当前的任务。
activiti中任务的相关操作要用到TaskService这个服务,在下面的完成任务也要用到这个服务。在之前的搭建开发环境的时候我们已经将这个TaskService的实现类的实例注入到了spring的容器中,所以接下来直接使用就可以了。
具体的查看看下面的代码
/**
* 查看用户当前任务
*/
@Override
public void queryUserTask() {
TaskQuery taskQuery = taskService.createTaskQuery();
List<Task> list = taskQuery.taskAssignee("张三").list();
System.out.println(list);
}
测试方法
/**
* 查询用的的当前任务
*/
@Test
public void queryUserTask() {
activityService.queryUserTask();
}
执行结果:[Task[id=5005, name=主管审批]]
二、完成一个任务
由上面的用户任务查询结果得知用户张三的当前任务的id是:5005。在有个这个id的前提下完成一个任务就是一件十分容易的事情。具体的实现看代码:
/**
* 完成一个用户任务
*/
@Override
public void completeUserTask() {
taskService.complete("5005");
}
测试方法
/**
* 完成一个用户任务
*/
@Test
public void completeUserTask() {
activityService.completeUserTask();
}
这样简单的一步操作就完成了一个任务,这个时候我面来看下数据表:
-
act_hi_actinst:可以看到主管审批已经做完了,有endtime,同时又多出来一条记录,总经理审批。
-
act_hi_taskinst:和act_hi_actinst表一样主管的任务已完成,同时多出来一个总经理的任务。
-
act_ru_task:当前的任务已经到了总经理。
至此完成用户的任务完成。