1.查询历史流程实例
/**
* 查询历史流程实例
*/
@Test
public void test11(){
HistoryService historyService = processEngine.getHistoryService();
HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
.processInstanceId("40001").singleResult();
System.out.println(historicProcessInstance.getId());
System.out.println(historicProcessInstance.getDeploymentId());
System.out.println(historicProcessInstance.getEndTime());
}
2.查询历史活动
/**
* 查询历史活动
*/
@Test
public void test12(){
HistoryService historyService = processEngine.getHistoryService();
List<HistoricActivityInstance> list = historyService.createHistoricActivityInstanceQuery()
.processDefinitionId("helloworld:4:32504").list();
//.processInstanceId("35001").list();
for (HistoricActivityInstance hi:list){
System.out.println(hi.getActivityId());
System.out.println(hi.getAssignee());
System.out.println(hi.getExecutionId());
System.out.println(hi.getProcessDefinitionId());
System.out.println("----------------------------------");
}
}
3.查询历史流程变量
/**
* 获取历史流程变量
*/
@Test
public void test10(){
HistoryService historyService = processEngine.getHistoryService();
List<HistoricVariableInstance> list = historyService.createHistoricVariableInstanceQuery().variableName("applyId").list();
for (HistoricVariableInstance hi:list){
System.out.println(hi.getId());
System.out.println(hi.getTaskId());
System.out.println(hi.getProcessInstanceId());
}
}
4.总结
由于数据库中保存着历史信息以及正在进行的流程实例信息,在实际项目中对已完成的任务的查看频率远不及对代办和可接
任务的查看,所以activiti采用分开管理,把正在运行的交给RuntimeService,TaskService管理,而历史数据交给HistoryService
来管理。
这样做的好处在于,加快流程执行的速度,因为正在执行的流程中的数据不会很大。