Activiti进阶(三)——流程定义的CRUD

2024-06-22 03:18

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

流程定义的RCUD,也就是对流程的增删该查,这篇博文简单的为大家介绍一下使用Activiti的api对流程定义进行增删改查操作。


     一、查看流程定义


[java]  view plain copy
  1. // 查询流程定义  
  2. @Test  
  3. public void findProcessDifinitionList() {  
  4.     List<ProcessDefinition> list = processEngine.getRepositoryService()  
  5.             .createProcessDefinitionQuery()  
  6.             // 查询条件  
  7.             .processDefinitionKey("myMyHelloWorld")// 按照流程定义的key  
  8.             // .processDefinitionId("helloworld")//按照流程定义的ID  
  9.             .orderByProcessDefinitionVersion().desc()// 排序  
  10.             // 返回结果  
  11.             // .singleResult()//返回惟一结果集  
  12.             // .count()//返回结果集数量  
  13.             // .listPage(firstResult, maxResults)  
  14.             .list();// 多个结果集  
  15.       
  16.     if(list!=null && list.size()>0){  
  17.         for(ProcessDefinition pd:list){  
  18.             System.out.println("流程定义的ID:"+pd.getId());  
  19.             System.out.println("流程定义的名称:"+pd.getName());  
  20.             System.out.println("流程定义的Key:"+pd.getKey());  
  21.             System.out.println("流程定义的部署ID:"+pd.getDeploymentId());  
  22.             System.out.println("流程定义的资源名称:"+pd.getResourceName());  
  23.             System.out.println("流程定义的版本:"+pd.getVersion());  
  24.             System.out.println("########################################################");  
  25.         }  
  26.     }  
  27.   
  28. }  
    

     流程定义和部署对象相关的Service都是RepositoryService,创建流程定义查询对象,可以在

ProcessDefinitionQuery上设置查询的相关参数,调用ProcessDefinitionQuery对象的list方法,执行查询,获得符

合条件的流程定义列表。

     执行结果如下:

     


     二、删除流程定义


[java]  view plain copy
  1. //删除流程定义  
  2. @Test  
  3. public void deleteProcessDifinition(){  
  4.     //部署对象ID  
  5.     String deploymentId = "601";  
  6.     processEngine.getRepositoryService()//获取流程定义和部署对象相关的Service  
  7.         .deleteDeployment(deploymentId,true);  
  8.       
  9.     System.out.println("删除成功~~~");//使用部署ID删除流程定义,true表示级联删除  
  10. }  

     

     因为删除的是流程定义,而流程定义的部署是属于仓库服务的,所以应该先得到RepositoryService

     如果该流程定义下没有正在运行的流程,则可以用普通删除。如果是有关联的信息,用级联删除。项目开发中使

用级联删除的情况比较多,删除操作一般只开放给超级管理员使用。


     执行结果如下:

       


        三、获取流程定义文档的资源


[java]  view plain copy
  1. //查看流程定义的资源文件  
  2. @Test  
  3. public void viewPng() throws IOException{  
  4.     //部署ID  
  5.     String deploymentId = "1";  
  6.     //获取的资源名称  
  7.     List<String> list =  processEngine.getRepositoryService()  
  8.         .getDeploymentResourceNames(deploymentId);  
  9.     //获得资源名称后缀.png  
  10.     String resourceName = "";  
  11.     if(list != null && list.size()>0){  
  12.         for(String name:list){  
  13.             if(name.indexOf(".png")>=0){//返回包含该字符串的第一个字母的索引位置  
  14.                 resourceName = name;  
  15.             }  
  16.         }  
  17.     }  
  18.       
  19.     //获取输入流,输入流中存放.PNG的文件  
  20.     InputStream in = processEngine.getRepositoryService()  
  21.             .getResourceAsStream(deploymentId, resourceName);  
  22.       
  23.     //将获取到的文件保存到本地  
  24.     FileUtils.copyInputStreamToFile(in, new File("D:/" + resourceName));  
  25.       
  26.     System.out.println("文件保存成功!");  
  27. }  


     

     使用repositoryService的getDeploymentResourceNames方法可以获取指定部署下得所有文件的名称;使用

repositoryService的getResourceAsStream方法传入部署ID和资源图片名称可以获取部署下指定名称文件的输入流;

最后的有关IO流的操作,使用FileUtils工具的copyInputStreamToFile方法完成流程流程到文件的拷贝,将资源文件

以流的形式输出到指定文件夹下。


这篇关于Activiti进阶(三)——流程定义的CRUD的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

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

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

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

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步搞定一个应