Activiti 学习笔记六:流程执行历史记录

网友投稿 814 2022-11-13

Activiti 学习笔记六:流程执行历史记录

Activiti 学习笔记六:流程执行历史记录

一、查询历史流程实例

查找按照某个流程定义的规则一共执行了多少次流程

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() + " "

二、查询历史活动

某一次流程的执行一共经历了多少个活动

/** 查询历史活动 */ @Test public void findHistoryActiviti() { String processInstanceId = "2101"; List 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 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 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来管理。 这样做的好处在于,加快流程执行的速度,因为正在执行的流程的表中数据不会很大。

作者:jiankunking

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:ASP.NET Web API 2 入门教程
下一篇:Ubuntu 安装 MySQL
相关文章

 发表评论

暂时没有评论,来抢沙发吧~