Activiti历史查看
流程执行完毕后,究竟去了哪里有些疑问。
虽然已完成的任务在act_ru_task和act_ru_execution表中都已被删除,但是这些数据还存在activiti的数据库中,作为历史改由HistoryService来管理。
历史是一个组件,它可以捕获发生在进程执行中的信息并永久的保存,与运行时数据不同的是,当流程实例运行完成之后它还会存在于数据库中。
Activit默认提供了4中历史级别:
none: 不保存任何历史记录,可以提高系统性能;
activity:保存所有的流程实例、任务、活动信息;
audit:也是Activiti的默认级别,保存所有的流程实例、任务、活动、表单属性;
full: 最完整的历史记录,除了包含audit级别的信息之外还能保存详细,例如:流程变量。
对于几种级别根据对功能的要求选择,如果需要日后跟踪详细可以开启full。
在引擎BeanprocessEngineConfiguration中配置:
<bean id="processEngineConfiguration" class="org.activiti.spring.SpringProcessEngineConfiguration">
<property name="history" value="full">
由于数据库中保存着历史信息以及正在运行的流程实例信息,在实际项目中对已完成任务的查看频率远不及对代办和可接任务的查看,所以在activiti采用分开管理,把正在运行的交给runtimeService管理,而历史数据交给HistoryService来管理。
对已成为历史的数据主要进行查询操作,我们主要关心两种类型的历史数据:
HistoricProcessInstance 包含当前和已经结束的流程实例信息。
HistoricActivityInstance 包含一个活动(流程上的节点)的执行信息 。
1、历史流程实例查看
// 历史流程实例查看(查找按照某个规则一共执行了多少次流程)
@Test
public void queryHistoricProcessInstance() throws Exception {
// 获取历史流程实例的查询对象
HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery();
// 设置查询参数
historicProcessInstanceQuery
//过滤条件
.processDefinitionKey("varTest")
// 分页条件
// .listPage(firstResult, maxResults)
// 排序条件
.orderByProcessInstanceStartTime().desc();
// 执行查询
List<HistoricProcessInstance> hpis = historicProcessInstanceQuery.list();
// 遍历查看结果
for (HistoricProcessInstance hpi : hpis) {
System.out.print("pid:" + hpi.getId()+",");
System.out.print("pdid:" + hpi.getProcessDefinitionId()+",");
System.out.print("startTime:" + hpi.getStartTime()+",");
System.out.print("endTime:" + hpi.getEndTime()+",");
System.out.print("duration:" + hpi.getDurationInMillis()+",");
System.out.println("vars:" + hpi.getProcessVariables());
} }
说明:
1.通常查询历史流程实例都需要指定一个过滤条件,指定 processDefinitionId查看具体某一次部署所开启的流程或者指定 processDefinitionKey查看某个规则下不限版本的所有流程
2.可以选择性添加finished方法控制是否查询未完成的流程实例。在流 程开启时,activiti同时在act_ru_execution表和act_hi_procinst表中 创建了一条记录,在流程完成之前act_hi_procinst表中实例的结束时间 为空
2、历史活动查看
// 历史活动查看(某一次流程的执行经历的多少步)
@Test
public void queryHistoricActivityInstance() throws Exception {
String processInstanceId = "1401";
List<HistoricActivityInstance> hais = historyService.createHistoricActivityInstanceQuery()
// 过滤条件
.processInstanceId(processInstanceId )
// 分页条件
// .listPage(firstResult, maxResults)
// 排序条件
.orderByHistoricActivityInstanceEndTime().asc()
// 执行查询
.list();
for (HistoricActivityInstance hai : hais) {
System.out.print("activitiId:" + hai.getActivityId()+",");
System.out.print("name:" + hai.getActivityName()+",");
System.out.print("type:" + hai.getActivityType()+",");
System.out.print("pid:" + hai.getProcessInstanceId()+",");
System.out.print("assignee:" + hai.getAssignee()+",");
System.out.print("startTime:" + hai.getStartTime()+",");
System.out.print("endTime:" + hai.getEndTime()+",");
System.out.println("duration:" + hai.getDurationInMillis());
}
}
说明:
1.通常查询历史流程活动都需要指定一个过滤条件,指定processInstanceId查看具体某一次流程执行过程中所经历的步奏
Activiti历史查看的更多相关文章
- (五)Activiti之查看最新版本的流程定义
一.查看最新版本的流程定义 因为每个流程定义都可能会有好几个版本,所以有时候我们有这样的需求,查询出最新版本的流程定义的集合 第一步:我们通过Activiti接口来获取根据流程定义Version升序排 ...
- Spring Boot整合Activiti,查看流程图出现中文乱码问题
最近研究SpringBoot 整合Activiti时,实现流程图高亮追踪是出现中文乱码问题,找了很多方法,现在把我最后的解决方法提供给大家. Spring Boot是微服务快速开发框架,强调的是零配置 ...
- Activiti流程图查看
1.测试用例查看图片 public void viewImage() throws Exception { // 创建仓库服务对对象 RepositoryService repositoryServi ...
- Windows 10 - 查看系统剪切板历史
在之前的Windows版本(1809之前),Windows的剪切板历史一直都是对用户不可见的. 也就是它只保留最后一次的剪切记录,但是这个记录是什么,不知道!只能粘贴出来才知道. 但是现在变了,Win ...
- Activiti 学习(一)—— Activiti 基础
工作流概述 在一个公司中,每一项业务的开始和结束,都可以理解为一个工作流,例如,公司的费用报销的基本流程如下: 如图所示的工作流:员工先提出费用报销申请,提交该申请给部门领导,部门领导审批后,再提交给 ...
- 初识activiti
Activity工作流学习要点 1. 1个插件 在Eclipse中安装Activity插件,让你可以在Eclipse中绘制Activity工作流图 2. 1个引擎 ProcessEngine对象,Ac ...
- IDEA工具java开发之 高级功能分屏是可以多次使用的 日志连接及浏览器 本地修改历 多列操作 查看方法调用情况
◆tabs分屏和独立 分屏是可以多次使用的 ◆日志连接及浏览器 ◆本地修改历史 ◆查看方法调用情况 ◆多列操作 可以同时删除也可以同时替换文字 Ctrl + shift + 右,选中一个词
- 2014 年最热门的国人开发开源软件 TOP 100 - 开源中国社区
不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外的认可.中国是 ...
- 2014 年最热门的国人开发开源软件TOP 100
不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外认可.中国是开 ...
随机推荐
- boost相关函数
1.boost::scoped_ptr是一个比较简单的智能指针,它能保证在离开作用域之后它所管理对象能被自动释放 #include <iostream> #include <boos ...
- GoDaddy商务主机建站具有的优势
GoDaddy是世界第一域名注册服务商,近年来凭借着优异的性能受到国内站长的欢迎,其中Godaddy商务主机得到了很多站长的喜爱,那么为什么GoDaddy商务主机可以受到那么多站长的喜爱呢?下面就带大 ...
- python对urlEncode进行解码
利用python自带的urlib进行编码和解码,没有什么问题.(https://www.hustyx.com/python/) 但如果是用url编码工具(http://tool.chinaz.com/ ...
- leetcode-210-课程表②
题目描述: 第一次提交: class Solution: def findOrder(self, numCourses: int, prerequisites: List[List[int]]) -& ...
- 校园商铺-4店铺注册功能模块-8店铺注册之Controller层的改造
不合理的地方: 1. 并不需要将InputStream转换成File类型,直接将InputStream传进入交给CommonsMultipartfile去处理就可以了 如果做这样的转换,每次都需要生成 ...
- Windows 设置IP解决方案
{ super + e / windows + e Mouse Right play down network link }
- CUDA 关于 BLOCK数目与Thread数目设置
GPU的计算核心是以一定数量的Streaming Processor(SP)组成的处理器阵列,NV称之为Texture Processing Clusters(TPC),每个TPC中又包含一定数量的S ...
- 用pymysql实现的注册登录公告练习
import pymysql #1.连接服务器 conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='12 ...
- 阿里云CentOs7上安装Tomcat
一.下载安装tomcat8 cd /usr/ #创建tomcat目录 mkdir tomcat #从网上download 压缩包 wget tomcat8 url #解压 tar -zxvf apac ...
- php array_unshift,array_push追加数组元素
追加元素在数组前面:<?php $a=array("a"=>"Cat","b"=>"Dog"); ar ...