流程执行完毕后,究竟去了哪里有些疑问。

虽然已完成的任务在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历史查看的更多相关文章

  1. (五)Activiti之查看最新版本的流程定义

    一.查看最新版本的流程定义 因为每个流程定义都可能会有好几个版本,所以有时候我们有这样的需求,查询出最新版本的流程定义的集合 第一步:我们通过Activiti接口来获取根据流程定义Version升序排 ...

  2. Spring Boot整合Activiti,查看流程图出现中文乱码问题

    最近研究SpringBoot 整合Activiti时,实现流程图高亮追踪是出现中文乱码问题,找了很多方法,现在把我最后的解决方法提供给大家. Spring Boot是微服务快速开发框架,强调的是零配置 ...

  3. Activiti流程图查看

    1.测试用例查看图片 public void viewImage() throws Exception { // 创建仓库服务对对象 RepositoryService repositoryServi ...

  4. Windows 10 - 查看系统剪切板历史

    在之前的Windows版本(1809之前),Windows的剪切板历史一直都是对用户不可见的. 也就是它只保留最后一次的剪切记录,但是这个记录是什么,不知道!只能粘贴出来才知道. 但是现在变了,Win ...

  5. Activiti 学习(一)—— Activiti 基础

    工作流概述 在一个公司中,每一项业务的开始和结束,都可以理解为一个工作流,例如,公司的费用报销的基本流程如下: 如图所示的工作流:员工先提出费用报销申请,提交该申请给部门领导,部门领导审批后,再提交给 ...

  6. 初识activiti

    Activity工作流学习要点 1. 1个插件 在Eclipse中安装Activity插件,让你可以在Eclipse中绘制Activity工作流图 2. 1个引擎 ProcessEngine对象,Ac ...

  7. IDEA工具java开发之 高级功能分屏是可以多次使用的 日志连接及浏览器 本地修改历 多列操作 查看方法调用情况

    ◆tabs分屏和独立 分屏是可以多次使用的  ◆日志连接及浏览器  ◆本地修改历史  ◆查看方法调用情况 ◆多列操作 可以同时删除也可以同时替换文字 Ctrl + shift + 右,选中一个词

  8. 2014 年最热门的国人开发开源软件 TOP 100 - 开源中国社区

    不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外的认可.中国是 ...

  9. 2014 年最热门的国人开发开源软件TOP 100

    不知道从什么时候开始,很多一说起国产好像就非常愤慨,其实大可不必.做开源中国六年有余,这六年时间国内的开源蓬勃发展,从一开始的使用到贡献,到推出自己很多的开源软件,而且还有很多软件被国外认可.中国是开 ...

随机推荐

  1. truncate、delete、drop

    相同点: 1.三者共同点: truncate.不带where字句的delete.drop都会删除表内的数据 2.drop.truncate的共同点: drop.truncate都得DDL语句(数据库定 ...

  2. 【JZOJ6288】旋转子段

    description analysis 可以先用前缀和把原串不调整的方案数先求出来 对于一种翻转,肯定是把\([i..a[i]]\)或\([a[i]..i]\)这段区间翻转 也可以看做是以\({i+ ...

  3. C/C++ 字符、字符串转十六进制(支持中文字符串转换)

    #include <string> // std::string #include <sstream> // std::stringstream /** * #purpose ...

  4. Windows ping

    用法: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]            [-r count] [-s count] [[-j ...

  5. day26 re正则表达式

     Python之路,Day14 = Python基础14 compile() match() search() findall() m.group() # 括号里面剋跟参数,表示打印里面(分组)的第几 ...

  6. 0917CSP-S模拟测试赛后总结

    机房搬家后的首战,便是失利. 依旧是挂掉了.这次状态有大问题. 然而状态的问题归根结底还是实力不行. 大约一个小时左右我拿到了T1的部分分.赛时判断了一下大概是高分. (不过赛后发现确实不算什么太高的 ...

  7. LUOGU P1039 侦探推理 (字符串+模拟)

    传送门 解题思路 一道%你神题,\(string\)好强大啊..首先枚举一个周几,再枚举一个罪犯是谁,然后判断的时候就是枚举所有人说的话.定义\(fAKe[i]\)表示第\(i\)个人说的是真话还是假 ...

  8. Linux 中执行Shell 脚本的方式(三种方法)

    Shell 脚本的执行方式通常有如下三种: (1)bash script-name 或者 sh script-name:(2)path/script-name或者./script-name:(3)so ...

  9. service sshd start启动失败,Badly formatted port number.

    在做xhell学习的时候,把端口号修改了,后面忘记修改回 来,导致 [root@MyRoth 桌面]# service sshd start 正在启动 sshd:/etc/ssh/sshd_confi ...

  10. 深夜Python - 第2夜 - 爬行

    深夜Python - 第2夜 - 爬行 我曾经幻想自己是一只蜗牛,有自己的一只小壳,不怕风,不怕雨,浪荡江湖,游历四方……夜猫兄一如既往地打断了我不切实际的幻想:“浪荡?游历?等你退休了都爬不出家门口 ...