Activiti流程执行历史数据查询
代码:
HistoryQueryTest.java
package com.ytdx.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;/*** 流程历史数据查询* @author lhy**/
public class HistoryQueryTest {ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();/*** 1.查询历史流程实例(act_hi_procinst表)*/@Testpublic void findHistoryProcessInstance(){String processInstanceId = "1601";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());}/*** 2.查询历史活动(act_hi_actinst表)*/@Testpublic void findHistoryActiviti(){String processInstanceId = "1601";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("#####################");}}}/*** 3.查询历史任务(act_hi_taskinst表)*/@Testpublic void findHistoryTask(){String processInstanceId = "1601";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("################################");}}}/*** 4.查询历史流程变量(act_hi_varinst表)*/@Testpublic void findHistoryProcessVariables(){String processInstanceId = "1601";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来管理。
这样做的好处在于,加快流程执行的速度,因为正在执行的流程的表中数据不会很大。
Activiti流程执行历史数据查询相关推荐
- activiti自定义_在Activiti中执行自定义查询
activiti自定义 (这可能最终会出现在Activiti 5.15版本的用户指南中,但是我已经想要共享它了) Activiti API允许使用高级API与数据库进行交互. 例如,对于检索数据,查询 ...
- 在Activiti中执行自定义查询
(这可能最终会出现在Activiti 5.15版本的用户指南中,但是我已经想共享它了) Activiti API允许使用高级API与数据库进行交互. 例如,对于检索数据,查询API和本机查询API的用 ...
- Activiti——流程执行历史记录(七)
转自:http://blog.csdn.net/zjx86320/article/details/50363544 之前的几篇文章,为大家简单的介绍了部署流程定义.启动流程实例.查看和办理个人任务以及 ...
- Activiti 流程执行
1.画流程图 1.画流程图 2.设置流程办理人 3.设置流程ID和Name 2.部署流程定义 3.启动流程 4.查询流程 5.办理流程 #RepositoryService SELECT * FROM ...
- Activiti基础教程--07流程执行历史记录(历史任务、历史流程实例、历史活动)
相关代码参考gihub:https://github.com/changwensir/Activiti/tree/master/ActivitiDemo1 一.Activiti 历史任务查询 实际工作 ...
- MySQL面试知识点追命连环问(一)执行流程存储引擎查询缓存
来了,朋友们,追命连环问系列之MySQL部分开始了.准备好了吗?本次连环问主要设计以下四个方面: MySQL执行流程 MySQL存储引擎 表字段如何设计 查询缓存 一,MySQL的执行流程 面试官: ...
- Activiti之历史活动查询和历史任务查询和流程状态查询
下图的流程从学生请假到班主任审批都已经完成,本章用来测试查询历史活动和历史任务的 activiti5的历史活动包括所有节点(上图的圆圈)和任务(上图的矩形),而历史任务只包含任务.所以一般开发中查询历 ...
- activiti历史数据查询
//查询已经完成的流程List<HistoricProcessInstance> list = historyService.createHistoricProcessInstanceQu ...
- 工作流学习——Activiti流程实例、任务管理四步曲 (zhuan)
http://blog.csdn.net/zwk626542417/article/details/46646565 ***************************************** ...
最新文章
- SpringBoot+RabbitMQ ,保证消息100%投递成功并被消费(附源码)
- 在Android Studio中有六种依赖
- 易语言录入数据到access里重复提示_一招搞定:excel数据共享协同
- 九章算法 | 骑士的最短路线-BFS
- Boost:最小最大计时器测试程序
- Tensorflow学习笔记:多项式拟合
- 【渝粤教育】国家开放大学2018年春季 0508-21T影视特技及后期合成 参考试题
- python学习实例(6)
- cf方框透视易语言代码怎么写_易语言真的那么不入流吗?
- ExtJs之Ext.data.Store
- sprintf()函数
- 访问地图http://clustrmaps.com/zh/admin/action.php
- vim编辑器的快捷键使用
- android 关闭线程句柄,android进程与线程详解三:AsyncTask
- 简单网络传递加密数据
- 如何用计算机进行文件夹整理,如何对电脑文件进行分类整理,试试下面这四个步骤...
- 计算机软件实习每日学习打卡(6)20201227
- .NET发送邮箱(验证码)
- ftp常见报错之Use PORT or PASV first解决思路和方法
- Jenkins系列之——第四章 Jenkins编译一个Web项目并远程发布到Tomcat
热门文章
- 中国核心生态区类型及土地利用数据有哪些,如何进行获取
- 工厂设备管理中经常会遇到哪些问题?
- 利用flex实现元素水平垂直居中
- Windows版iCloud增加密码生成功能,可共享iCloud驱动器文件
- 原油早评 | 5月8日原油供需边际好转,SC对外盘溢价回落
- 百度离在线语音合成的快速集成
- 中国石油大学(北京)-《 油气田开发方案设计》第一阶段在线作业
- 米兔机器人魔方_你知道米兔指尖积木都有什么玩法么?最后一个小编都没想到...
- python中frame是什么意思_Python实例之wxpython中Frame使用方法
- 思维导图简单漂亮画法总结分享