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

相关文章

Security OAuth2 单点登录流程

单点登录(英语:Single sign-on,缩写为 SSO),又译为单一签入,一种对于许多相互关连,但是又是各自独立的软件系统,提供访问控制的属性。当拥有这项属性时,当用户登录时,就可以获取所有系统的访问权限,不用对每个单一系统都逐一登录。这项功能通常是以轻型目录访问协议(LDAP)来实现,在服务器上会将用户信息存储到LDAP数据库中。相同的,单一注销(single sign-off)就是指

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

[MySQL表的增删改查-进阶]

🌈个人主页:努力学编程’ ⛅个人推荐: c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构,刷题刻不容缓:点击一起刷题 🌙心灵鸡汤:总有人要赢,为什么不能是我呢 💻💻💻数据库约束 🔭🔭🔭约束类型 not null: 指示某列不能存储 NULL 值unique: 保证某列的每行必须有唯一的值default: 规定没有给列赋值时的默认值.primary key:

MySQL-CRUD入门1

文章目录 认识配置文件client节点mysql节点mysqld节点 数据的添加(Create)添加一行数据添加多行数据两种添加数据的效率对比 数据的查询(Retrieve)全列查询指定列查询查询中带有表达式关于字面量关于as重命名 临时表引入distinct去重order by 排序关于NULL 认识配置文件 在我们的MySQL服务安装好了之后, 会有一个配置文件, 也就

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

Flutter 进阶:绘制加载动画

绘制加载动画:由小圆组成的大圆 1. 定义 LoadingScreen 类2. 实现 _LoadingScreenState 类3. 定义 LoadingPainter 类4. 总结 实现加载动画 我们需要定义两个类:LoadingScreen 和 LoadingPainter。LoadingScreen 负责控制动画的状态,而 LoadingPainter 则负责绘制动画。

从0到1,AI我来了- (7)AI应用-ComfyUI-II(进阶)

上篇comfyUI 入门 ,了解了TA是个啥,这篇,我们通过ComfyUI 及其相关Lora 模型,生成一些更惊艳的图片。这篇主要了解这些内容:         1、哪里获取模型?         2、实践如何画一个美女?         3、附录:               1)相关SD(稳定扩散模型的组成部分)               2)模型放置目录(重要)

Spring 源码解读:自定义实现Bean定义的注册与解析

引言 在Spring框架中,Bean的注册与解析是整个依赖注入流程的核心步骤。通过Bean定义,Spring容器知道如何创建、配置和管理每个Bean实例。本篇文章将通过实现一个简化版的Bean定义注册与解析机制,帮助你理解Spring框架背后的设计逻辑。我们还将对比Spring中的BeanDefinition和BeanDefinitionRegistry,以全面掌握Bean注册和解析的核心原理。