您的位置:首页 > 其它

Activiti查看流程历史记录(六)

2015-08-28 15:07 405 查看
package cn.itcast.e_historyQuery;

import java.util.List;

import org.activiti.engine.ProcessEngine;

import org.activiti.engine.ProcessEngines;

import org.activiti.engine.history.HistoricActivityInstance;

import org.activiti.engine.history.HistoricProcessInstance;

import org.activiti.engine.history.HistoricTaskInstance;

import org.activiti.engine.history.HistoricVariableInstance;

import org.junit.Test;

public class HistoryQueryTest {

ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();

/**查询历史流程实例*/

@Test

public void findHistoryProcessInstance(){

String processInstanceId = "2101";

HistoricProcessInstance hpi = processEngine.getHistoryService()//与历史数据(历史表)相关的Service

.createHistoricProcessInstanceQuery()//创建历史流程实例查询

.processInstanceId(processInstanceId)//使用流程实例ID查询

.orderByProcessInstanceStartTime().asc()

.singleResult();

System.out.println(hpi.getId()+" "+hpi.getProcessDefinitionId()+" "+hpi.getStartTime()+" "+hpi.getEndTime()+" "+hpi.getDurationInMillis());

}

/**查询历史活动*/

@Test

public void findHistoryActiviti(){

String processInstanceId = "2101";

List<HistoricActivityInstance> list = processEngine.getHistoryService()//

.createHistoricActivityInstanceQuery()//创建历史活动实例的查询

.processInstanceId(processInstanceId)//

.orderByHistoricActivityInstanceStartTime().asc()//

.list();

if(list!=null && list.size()>0){

for(HistoricActivityInstance hai:list){

System.out.println(hai.getId()+" "+hai.getProcessInstanceId()+" "+hai.getActivityType()+" "+hai.getStartTime()+" "+hai.getEndTime()+" "+hai.getDurationInMillis());

System.out.println("#####################");

}

}

}

/**查询历史任务*/

@Test

public void findHistoryTask(){

String processInstanceId = "2101";

List<HistoricTaskInstance> list = processEngine.getHistoryService()//与历史数据(历史表)相关的Service

.createHistoricTaskInstanceQuery()//创建历史任务实例查询

.processInstanceId(processInstanceId)//

.orderByHistoricTaskInstanceStartTime().asc()

.list();

if(list!=null && list.size()>0){

for(HistoricTaskInstance hti:list){

System.out.println(hti.getId()+" "+hti.getName()+" "+hti.getProcessInstanceId()+" "+hti.getStartTime()+" "+hti.getEndTime()+" "+hti.getDurationInMillis());

System.out.println("################################");

}

}

}

/**查询历史流程变量*/

@Test

public void findHistoryProcessVariables(){

String processInstanceId = "2101";

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.getProcessInstanceId()+" "+hvi.getVariableName()+" "+hvi.getVariableTypeName()+" "+hvi.getValue());

System.out.println("###############################################");

}

}

}

}

总结

由于数据库中保存着历史信息以及正在运行的流程实例信息,在实际项目中对已完成任务的查看频率远不及对代办和可接任务的查看,所以在activiti采用分开管理,把正在运行的交给RuntimeService管理,而历史数据交给HistoryService来管理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: