在流程系统开发中,我们有这样一种需求,
当流程实例完成后,我们要查下流程活动具体的执行情况,比如这个流程实例什么时候开始的,什么时候结束的,
以及中间具体的执行步骤,这时候,我们需要查询历史流程活动执行表,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