activiti学习(四) | 您所在的位置:网站首页 › activiti并行任务会生成几条记录 › activiti学习(四) |
上一章流程启动后,根据流程图,会到达用户任务userTask1上。通常实际应用中,流程使用userTask比较多。因此本章就讲讲userTask提交。 首先我们新建一个bpmn图,secondBPM.bpmn 大概是这样的图,有两个userTask任务节点: 注意bpmn文件中,userTask标签中activiti:assignee的属性,它表示该任务节点分配给哪个人处理。可以看到,目前userTask1分配给张三,userTask2分配给李四。 接着按照前面文章的方式进行部署和启动流程,查看act_ru_execution,可以看到流程目前运行到userTask1上面: 再查看act_ru_task表,可以看到当前任务分配到“张三”那里: 任务查询在一套有流程的系统中,例如OA系统,对一般用户来讲,最常见的操作就是查看自己的待办,然后选择待办,最后进行提交操作。查看自己的待办,本质就是查询act_ru_task表下任务哪些分配给了某个用户。当然activiti不需要我们直接去查底层表,它有提供api进行查询 public void taskQuery() { TaskService taskService = pe.getTaskService(); TaskQuery taskQuery = taskService.createTaskQuery(); List resultList = taskQuery.taskAssignee("张三").list(); for(Task task : resultList) { System.out.println("任务ID:" + task.getId()); } }调用查询之后,可以看到输出分配到“张三”名下的任务有哪些。TaskQuery提供了非常多查询的接口,这里就不一一去演示了。任务查询出来之后,可以看到输出任务的ID是“2504”,下一步就是处理具体的任务。 任务提交当我们在OA系统上提交流程的时候,系统会做很多业务数据的处理,而在底层,实际上就是对这个任务调用“complete”的API: public void completeTask() { TaskService taskService = pe.getTaskService(); taskService.complete("2504"); System.out.println("完成提交"); }查看act_ru_execution表,可以看到当前流程已经执行到了userTask2: 查看 act_ru_task表,可以看到当前的任务分配给“李四”: 除了这些表之外,act_ru_identitylink、act_hi_actinst、act_hi_taskinst、act_hi_identitylink都有更新记录,可以查看。 之后用之前的代码稍作修改后,通过李四查找出任务的ID,然后再次完成提交操作。最后可以看到act_ru_XXX表里的记录已经没了,因为流程已经结束。查看act_hi_procinst表,流程结束后会更新这里流程的结束时间和总耗时:
以上的操作是activiti流程提交最简单和普遍的操作。通过前四章的入门学习,相信读者已经可以完成从初始化、到部署、到启动流程、最后提交并完成流程这一系列的操作。当然这个API是无法完成中国式流程的需求(撤回、加签、跳转)。要处理中国式流程,需要对activiti的运行有更深入的认识,才能实现这些功能。 |
CopyRight 2018-2019 实验室设备网 版权所有 |