04.activiti第一天: 13.查询历史流程实例

项目:cn.itcast.e_historyQuery

一. 工作流的23张表

在这里插入图片描述

二. 历史相关表

  • 历史流程实例表 act_hi_procinst
  • 历史活动节点表 act_hi_actinst
  • 历史任务表 act_hi_taskinst

三. 查询历史流程实例

	/**查询历史流程实例*/
	@Test
	public void findHistoryProcessInstance(){
		String processInstanceId = "1027";
		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 = "1005";
		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 = "1027";
		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 = "1005";
		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、TaskService管理,而历史数据交给HistoryService来管理。
    这样做的好处在于,加快流程执行的速度,因为正在执行的流程的表中数据不会很大

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值