查询历史流程实例
/**查询历史流程实例*/
@Test
public void findHistoryProcessInstance() {
String processInstanceId="22501";
HistoricProcessInstance hpi= processEngine.getHistoryService()
.createHistoricProcessInstanceQuery()//创建历史流程实例查询
.processInstanceId(processInstanceId)//使用流程实例ID查询
.orderByProcessInstanceStartTime().asc()
.singleResult();
System.out.println(hpi.getId()+" "+hpi.getProcessDefinitionId()+" "+hpi.getStartTime()+" "+hpi.getEndTime()+" "+hpi.getName());
}
查询历史活动
/**
* 查询历史活动
*/
@Test
public void findHistoryActiviti() {
String processInstanceId="22501";
List<HistoricActivityInstance> list = processEngine.getHistoryService()
.createHistoricActivityInstanceQuery()
.processInstanceId(processInstanceId)
.orderByHistoricActivityInstanceStartTime().asc()
.list();
if(list!=null && list.size()>0) {
for (HistoricActivityInstance his : list) {
System.out.println(his.getId()+" "+his.getProcessDefinitionId()+" "+his.getStartTime()+" "+his.getEndTime()+" "+his.getActivityName());
System.out.println("##########################################");
}
}
}
查询历史任务
@Test
public void findHistoryTask() {
String processInstanceId="22501";
List<HistoricTaskInstance> list=processEngine.getHistoryService()
.createHistoricTaskInstanceQuery()
.processInstanceId(processInstanceId)
.orderByHistoricTaskInstanceStartTime().asc()
.list();
if(list!=null && list.size()>0) {
for (HistoricTaskInstance htt: list) {
System.out.println(htt.getId()+" "+htt.getProcessDefinitionId()+" "+htt.getStartTime()+" "+htt.getEndTime()+" "+htt.getName());
System.out.println("##########################################");
}
}
}
查询历史流程变量
/**
* 查看历史流程变量
*/
@Test
public void findProcessVariables() {
String processInstanceId="22501";
List<HistoricVariableInstance> list=processEngine.getHistoryService()
.createHistoricVariableInstanceQuery()
.processInstanceId(processInstanceId)
.list();
if(list!=null && list.size()>0) {
for (HistoricVariableInstance hvi: list) {
System.out.println(hvi.getId()+" "+hvi.getTaskId()+" "+hvi.getVariableName()+" "+hvi.getVariableTypeName()+" "+hvi.getValue());
System.out.println("##########################################");
}
}
}
总结
由于数据库中保存着历史信息以及正在运行的流程实例信息,在实际项目中对已完成任务的查看频率远不及对代办和可接任务的查看,所以在activiti采用分开管理,把正在运行的交给RuntimeService、TaskService管理,而历史数据交给HistoryService来管理。
这样做的好处在于,加快流程执行的速度,因为正在执行的流程的表中数据不会很大