在流程系统开发中,我们有这样一种需求,
当流程实例完成后,我们要查下流程活动具体的执行情况,比如这个流程实例什么时候开始的,什么时候结束的,
以及中间具体的执行步骤,这时候,我们需要查询历史流程活动执行表,act_hi_actinst
比如上面这个流程;
Activiti提供了丰富的接口让我们查询历史活动,上代码:
/** * 历史活动查询 */ @Test public void historyActInstanceList(){ List<HistoricActivityInstance> list=processEngine.getHistoryService() // 历史任务Service .createHistoricActivityInstanceQuery() // 创建历史活动实例查询 .processInstanceId("27501") // 指定流程实例id .finished() // 查询已经完成的任务 .list(); for(HistoricActivityInstance hai:list){ System.out.println("任务ID:"+hai.getId()); System.out.println("流程实例ID:"+hai.getProcessInstanceId()); System.out.println("活动名称:"+hai.getActivityName()); System.out.println("办理人:"+hai.getAssignee()); System.out.println("开始时间:"+hai.getStartTime()); System.out.println("结束时间:"+hai.getEndTime()); System.out.println("==========================="); } }
执行结果:
任务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
===========================
完整代码:http://pan.baidu.com/s/1kVdbynH