标签:
可能你在苦恼这个问题,因为在跟踪已结束流程的时候需要获取流程办理中设置的变量值(可以分析每个节点办理的详细状态),今天我们就来探索一下如何实现。
Activiti的表结构设计分为两种类型:运行时(ACT_RU)、历史(ACT_HI)。
所有运行时的变量都保存在表:ACT_RU_VARIABLE中,这些变量可以在启动流程、完成任务、动态添加的方式插入到数据库,以便流程在处理中可以根据变量的值决定流程的走向。
为什么没有ACT_HI_VARIABLE这张表呢?
我在开始的时候也是苦恼为什么没有这张表,导致在跟踪历史流程信息的时候不能获取变量。
Activit默认提供了4中历史级别:
none: 不保存任何历史记录,可以提高系统性能;
activity:保存所有的流程实例、任务、活动信息;
audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;
full: 最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。
对于几种级别根据对功能的要求选择,如果需要日后跟踪详细可以开启full。
在引擎BeanprocessEngineConfiguration中配置:
1
2
3
|
<beanid="processEngineConfiguration"class="org.activiti.spring.SpringProcessEngineConfiguration">
<propertyname="history"value="full">
</property></bean>
|
1
2
3
4
|
ProcessEngine processEngine = ProcessEngineConfiguration
.createProcessEngineConfigurationFromResourceDefault()
.setHistory(ProcessEngineConfiguration.HISTORY_FULL)
.buildProcessEngine();
|
现在再重启你的应用,启动流程或者在任务complete之后查看ACT_HI_DETAIL表的数据已经记录了。
1
2
3
4
5
6
|
List<historicdetail> list = historyService.createHistoricDetailQuery().processInstanceId(processInstance.getId()).list();
for(HistoricDetail historicDetail : list) {
HistoricVariableUpdate variable = (HistoricVariableUpdate) historicDetail;
System.out.println("variable: "+ variable.getVariableName() +" = "+ variable.getValue());
}
</historicdetail>
|
5.11版本在变量保存方面做了变动,单独创建了一张表ACT_HI_VARINST保存变量,可以通过下面的代码读取变量。参见:Activiti 5.11发布
1
2
3
4
5
|
List<historicvariableinstance> list = historyService.createHistoricVariableInstanceQuery().processInstanceId(processInstanceId).list();
for(HistoricVariableInstance variableInstance : list) {
System.out.println("variable: "+ variable.getVariableName() +" = "+ variable.getValue());
}
</historicvariableinstance>
|
1
2
3
4
5
6
|
List<historicdetail> formProperties = historyService.createHistoricDetailQuery().processInstanceId(processInstance.getId()).formProperties().list();
for(HistoricDetail historicDetail : formProperties) {
HistoricFormProperty field = (HistoricFormProperty) historicDetail;
System.out.println("field id: "+ field.getPropertyId() +", value: "+ field.getPropertyValue());
}
</historicdetail>
|
标签:
原文地址:http://my.oschina.net/u/588379/blog/488737