相关代码参考gihub:https://github.com/changwensir/Activiti/tree/master/ActivitiDemo1java
实际工做流项目中,有一个功能叫作 历史任务查询。某一次流程的执行一共经历了多少个任务.咱们其实查询的是历史任务实例表;git
固然这个表的话,无论是已经完结的任务 仍是正在执行的任务,都会记录下这个表里。Activiti给咱们提供了一个接口 finished;加了以后 就是查询已经完结的任务; 同理还有一个接口unfinished 顾名思义,就是查询未完结的任务;固然这两个都不加,就是把全部任务都查询出来;github
OK咱们上代码:数据库
[java] view plain copyapp
[java] view plain copyspa
开发中 有时候咱们也须要经过流程实例ID来查询历史流程实例。其实本质就是查询历史流程实例表;.net
这里有一点说下 这个表的id和流程实例id始终是同样的。因此Activiti没有提供获取流程实例id的接口;由于直接getId()获取的值和流程实例Id是同样的;code
[java] view plain copy对象
在流程系统开发中,咱们有这样一种需求,当流程实例完成后,咱们要查下流程活动具体的执行状况,好比这个流程实例何时开始的,何时结束的,以及中间具体的执行步骤,这时候,咱们须要查询历史流程活动执行表,act_hi_actinstblog
好比上面这个流程;Activiti提供了丰富的接口让咱们查询历史活动,上代码:
[java] view plain copy
执行结果: 任务ID:27502 流程实例ID:27501 活动名称:Start 办理人:null 开始时间:Thu Jun 30 10:13:20 CST 2016 结束时间:Thu Jun 30 10:13:20 CST 2016 =========================== 任务ID:27503 流程实例ID:27501 活动名称:学生请假申请 办理人:张三 开始时间:Thu Jun 30 10:13:20 CST 2016 结束时间:Thu Jun 30 10:16:13 CST 2016 =========================== 任务ID:30001 流程实例ID:27501 活动名称:班长审批 办理人:李四 开始时间:Thu Jun 30 10:16:13 CST 2016 结束时间:Thu Jun 30 10:16:36 CST 2016 =========================== 任务ID:32501 流程实例ID:27501 活动名称:班主任审批 办理人:王五 开始时间:Thu Jun 30 10:16:36 CST 2016 结束时间:Thu Jun 30 10:16:57 CST 2016 =========================== 任务ID:35001 流程实例ID:27501 活动名称:End 办理人:null 开始时间:Thu Jun 30 10:16:57 CST 2016 结束时间:Thu Jun 30 10:16:57 CST 2016 =========================== |
[java] view plain copy
某一次流程的执行一共设置的流程变量
[java] view plain copy
总结
因为数据库中保存着历史信息以及正在运行的流程实例信息,在实际项目中对已完成任务的查看频率远不及对代办和可接任务的查看,因此在activiti采用分开管理,把正在运行的交给RuntimeService、TaskService管理,而历史数据交给HistoryService来管理。
这样作的好处在于,加快流程执行的速度,由于正在执行的流程的表中数据不会很大
文章转自《http://blog.csdn.net/ochangwen/article/details/51910695》,感谢做者分享!