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

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

grom设置全局日志实现执行并打印sql语句

《grom设置全局日志实现执行并打印sql语句》本文主要介绍了grom设置全局日志实现执行并打印sql语句,包括设置日志级别、实现自定义Logger接口以及如何使用GORM的默认logger,通过这些... 目录gorm中的自定义日志gorm中日志的其他操作日志级别Debug自定义 Loggergorm中的

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4