这篇文章主要讲解了“如何使用HistoryService”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用HistoryService”吧!
Activit中的历史简介
历史: Activiti中的一个组件,可以捕获发生在进程执行中的信息并永久的保存.与运行时数据不同的是,当流程实例运行完成之后它还会存在于数据库中
历史实体对象有5个:
HistoricProcessInstances: 包含当前和已经结束的流程实例信息
HistoricVariableInstances: 包含最新的流程变量或任务变量
HistoricActivityInstances: 包含一个活动即流程上的节点的执行信息
HistoricTaskInstances: 包含关于当前和已完成或已删除任务实例信息
HistoricDetails: 包含历史流程实例,活动实例,任务实例的各种信息
因为数据库中保存着历史信息以及正在运行的流程实例信息,就要考虑怎样尽量减少的对运行中的流程实例数据进行访问的方式来查询这些表以保证执行的性能
查询历史
HistoricProcessInstanceQuery
historyService.createHistoricProcessInstanceQuery()
.finished()
.processDefinitionId("XXX")
.orderByProcessInstanceDuration().desc()
.listPage(0, 10);HistoricVariableInstanceQuery
historyService.createHistoricVariableInstanceQuery()
.processInstanceId("XXX")
.orderByVariableName.desc()
.list();HistoricActivityInstanceQuery
historyService.createHistoricActivityInstanceQuery()
.activityType("serviceTask")
.processDefinitionId("XXX")
.finished()
.orderByHistoricActivityInstanceEndTime().desc()
.listPage(0, 1);HistoricDetailQuery
historyService.createHistoricDetailQuery()
.variableUpdates()
.processInstanceId("123")
.orderByVariableName().asc()
.list()historyService.createHistoricDetailQuery()
.formProperties()
.processInstanceId("123")
.orderByVariableName().asc()
.list()historyService.createHistoricDetailQuery()
.variableUpdates()
.taskId("123")
.orderByVariableName().asc()
.list()taskService.setVariableLocal("123", "myVariable", "Variable value");public void notify(DelegateTask delegateTask) {
delegateTask.setVariableLocal("myVariable", "Variable value");
}HistoricTaskInstanceQuery
historyService.createHistoricTaskInstanceQuery()
.finished()
.orderByHistoricTaskInstanceDuration().desc()
.listPage(0, 10);
historyService.createHistoricTaskInstanceQuery()
.finished()
.taskDeleteReasonLike("%invalid%")
.taskAssignee("kermit")
.listPage(0, 10);历史配置
ProcessEngine processEngine = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResourceDefault()
.setHistory(HistoryLevel.AUDIT.getKey())
.buildProcessEngine();
<bean id="processEngineConfiguration" class="org.activiti.engine.impl.cfg.StandaloneInMemProcessEngineConfiguration">
<property name="history" value="audit" />
...
</bean>
历史信息级别:
这个级别存储发生在审核以及所有其它细节的信息,主要是更新流程变量
是最高级别的历史信息存档,同样也是最慢的
默认值,保存所有流程实例信息,活动信息,保证所有的变量和提交的表单属性保持同步
这样所有用户交互信息都是可追溯的,可以用来审计
保存所有流程实例信息和活动实例信息:
在流程实例结束时,最后一个流程实例中的最新的变量值将赋值给历史变量
不会保存过程中的详细信息
忽略所有历史存档:
这是流程执行时性能最好的状态,但没有任何历史信息可用
none:
activity:
audit:
full:
审计
历史配置在audit级别之上,所有通过:
FormService.submitStartFormData(String processDefinitionId, Map<String, String> properties)
FormService.submitTaskFormData(String taskId, Map<String, String> properties) 提交的属性都会被记录
表单属性可以通过API查询:
historyService
.createHistoricDetailQuery()
.formProperties()
...
.list();
类型为HistoricFormProperty的详细信息会被查询出来
感谢各位的阅读,以上就是“如何使用HistoryService”的内容了,经过本文的学习后,相信大家对如何使用HistoryService这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是天达云,小编将为大家推送更多相关知识点的文章,欢迎关注!