Activiti进阶(五)——流程执行历史记录

2024-06-22 03:18

本文主要是介绍Activiti进阶(五)——流程执行历史记录,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 之前的几篇文章,为大家简单的介绍了部署流程定义、启动流程实例、查看和办理个人任务以及如何设置和获取流程变量,这一系列的活动组成了一个完整的执行流程,那么一个执行完的流程我们如何查看相关的定义呢,这篇博文就为大家简单的介绍一下流程执行的历史记录查询。


    一、查询历史流程实例


[java]  view plain copy
  1. /**查询历史流程实例*/  
  2. @Test  
  3. public void findHisProcessInstance(){     
  4.     List<HistoricProcessInstance> list = processEngine.getHistoryService()  
  5.             .createHistoricProcessInstanceQuery()  
  6.             .processDefinitionId("testVariables:2:1704")//流程定义ID  
  7.             .list();  
  8.       
  9.     if(list != null && list.size()>0){  
  10.         for(HistoricProcessInstance hi:list){  
  11.             System.out.println(hi.getId()+"   "+hi.getStartTime()+"   "+hi.getEndTime());  
  12.         }  
  13.     }  
  14. }  


     查询历史流程实例,就是 查找按照某个流程定义的规则一共执行了多少次流程, 对应的数据库表:act_hi_procinst

     

     从表中我们可以看到,我们可以通过流程实例ID和流程部署ID得到对象的历史流程实例,从而获得该实例的开始时间和结束时间及其他一些属性定义。


     二、查询历史活动


[java]  view plain copy
  1. /**查询历史活动 
  2.  * 问题:HistoricActivityInstance对应哪个表 
  3.  * 问题:HistoricActivityInstance和HistoricTaskInstance有什么区别*/  
  4. @Test   
  5. public void findHisActivitiList(){  
  6.     String processInstanceId = "1801";  
  7.     List<HistoricActivityInstance> list = processEngine.getHistoryService()  
  8.             .createHistoricActivityInstanceQuery()  
  9.             .processInstanceId(processInstanceId)  
  10.             .list();  
  11.     if(list != null && list.size()>0){  
  12.         for(HistoricActivityInstance hai : list){  
  13.             System.out.println(hai.getId()+"  "+hai.getActivityName());  
  14.         }  
  15.     }  
  16. }  


      查询历史活动,就是查询某一次 流程的执行一共经历了多少个活动,这里我们使用流程定义ID来查询,对应的数据库表为:act_hi_actinst




     三、查询历史任务


[java]  view plain copy
  1. /**查询历史任务    
  2.  * 问题:HistoricTaskInstance对应哪个表*/  
  3. @Test  
  4. public void findHisTaskList(){  
  5.     String processInstanceId = "1801";  
  6.     List<HistoricTaskInstance> list = processEngine.getHistoryService()  
  7.             .createHistoricTaskInstanceQuery()  
  8.             .processInstanceId(processInstanceId)  
  9.             .list();  
  10.     if(list!=null && list.size()>0){  
  11.         for(HistoricTaskInstance hti:list){  
  12.             System.out.println(hti.getId()+"    "+hti.getName()+"   "+hti.getClaimTime());  
  13.         }  
  14.     }  
  15. }  

     查询历史任务,就是查询摸一次流程的执行一共经历了多少个任务,对应表:act_hi_taskinst




     四、查询历史流程变量


[java]  view plain copy
  1. /**查询历史流程变量*/  
  2. @Test  
  3. public void findHisVariablesList(){  
  4.     String processInstanceId = "1801";  
  5.     List<HistoricVariableInstance> list = processEngine.getHistoryService()  
  6.             .createHistoricVariableInstanceQuery()  
  7.             .processInstanceId(processInstanceId)  
  8.             .list();  
  9.     if(list != null && list.size()>0){  
  10.         for(HistoricVariableInstance hvi:list){  
  11.             System.out.println(hvi.getId()+"    "+hvi.getVariableName()+"   "+hvi.getValue());  
  12.         }  
  13.     }  
  14. }  

     查询历史流程变量,就是查询 某一次流程的执行一共设置的流程变量,对应表:act_hi_varinst




     总结:

     由于数据库中保存着历史信息以及正在运行的流程实例信息,在实际项目中对已完成任务的查看频率远不及对待办和运行中的任务的查看,所以activiti采用分开管理,把正在运行的交给RuntimeService管理,而历史数据交给HistoryService来管理。


这篇关于Activiti进阶(五)——流程执行历史记录的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1083140

相关文章

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

springboot启动流程过程

《springboot启动流程过程》SpringBoot简化了Spring框架的使用,通过创建`SpringApplication`对象,判断应用类型并设置初始化器和监听器,在`run`方法中,读取配... 目录springboot启动流程springboot程序启动入口1.创建SpringApplicat

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

MySQL的cpu使用率100%的问题排查流程

《MySQL的cpu使用率100%的问题排查流程》线上mysql服务器经常性出现cpu使用率100%的告警,因此本文整理一下排查该问题的常规流程,文中通过代码示例讲解的非常详细,对大家的学习或工作有一... 目录1. 确认CPU占用来源2. 实时分析mysql活动3. 分析慢查询与执行计划4. 检查索引与表

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Git提交代码详细流程及问题总结

《Git提交代码详细流程及问题总结》:本文主要介绍Git的三大分区,分别是工作区、暂存区和版本库,并详细描述了提交、推送、拉取代码和合并分支的流程,文中通过代码介绍的非常详解,需要的朋友可以参考下... 目录1.git 三大分区2.Git提交、推送、拉取代码、合并分支详细流程3.问题总结4.git push

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一