activiti有五个关于历史的实体类:
- HistoricProcessInstance
- HistoricVariableInstance
- HistoricActivityInstance
- HistoricTaskInstance
- HistoricDetail
11.1 Querying history
HistoryService类暴露了五个相关方法提供历史查询:
createHistoricProcessInstanceQuery()
createHistoricVariableInstanceQuery()
createHistoricActivityInstanceQuery()
createHistoricDetailQuery()
createHistoricTaskInstanceQuery()
- HistoricProcessInstanceQuery
historyService.createHistoricProcessInstanceQuery()
.finished()
.processDefinitionId("XXX")
.orderByProcessInstanceDuration().desc()
.listPage(0, 10);
- HistoricVariableInstanceQuery
historyService.createHistoricVariableInstanceQuery()
.processInstanceId("XXX")
.orderByVariableName.desc()
.list();
- HistoricActivityInstanceQuery
查询已经结束的task;
historyService.createHistoricActivityInstanceQuery()
.activityType("serviceTask")
.processDefinitionId("XXX")
.finished()
.orderByHistoricActivityInstanceEndTime().desc()
.listPage(0, 1);
HistoricDetailQuery
// TODOHistoricTaskInstanceQuery
historyService.createHistoricTaskInstanceQuery()
.finished()
.orderByHistoricTaskInstanceDuration().desc()
.listPage(0, 10);
historyService.createHistoricTaskInstanceQuery()
.finished()
.taskDeleteReasonLike("%invalid%")
.taskAssignee("kermit")
.listPage(0, 10);
11.2 History configuration
对于历史数据,保存到何种粒度,Activiti提供了history-level属性对其进行配置。history-level属性有点像log4j的日志输出级别,该属性有以下四个值:
none:不保存任何的历史数据,因此,在流程执行过程中,这是最高效的。
activity:级别高于none,保存流程实例与流程行为,其他数据不保存。
audit:除activity级别会保存的数据外,还会保存全部的流程任务及其属性。audit为history的默认值。
full:保存历史数据的最高级别,除了会保存audit级别的数据外,还会保存其他全部流程相关的细节数据,包括一些流程参数等。
配置方法:
ProcessEngine processEngine = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResourceDefault()
.setHistory(HistoryLevel.AUDIT.getKey())
.buildProcessEngine();
11.3 History for audit purposes
// TODO