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

相关文章

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

工作流Activiti初体验—流程撤回【二】

已经玩工作流了,打算还是研究一下撤回的功能。但是流程图里面并不带撤回的组件,所以需要自己动态改造一下,还是延续上一个流程继续试验撤回功能。《工作流Activiti初体验【一】》 完整流程图 我们研究一下分发任务撤回到发起任务,其他环节的撤回类似 撤回的原理大概如下: 将分发任务后面的方向清空,把发起任务拼接到原来的判断网关,然后结束分发任务,这样流程就到发起任务了 此时的流程如上图,

工作流Activiti初体验【一】

在这里记录一下我的Activiti历程:(以下示例不涉及真实业务,所有逻辑均建立在学习的基础上) bpmn图 发起任务我设置了一个权限组user1,只要是这个权限的用户都可以发起任务 分发任务我设置了一个用户组,用户组中每个用户都可以处理这步流程,只要有一个人处理这步任务,分发的流程就算结束了 分发任务这一环节还有个判断,允许任务下发和不允许任务下发 任务分发完成则来到子流程,每个被分

ROS话题通信流程自定义数据格式

ROS话题通信流程自定义数据格式 需求流程实现步骤定义msg文件编辑配置文件编译 在 ROS 通信协议中,数据载体是一个较为重要组成部分,ROS 中通过 std_msgs 封装了一些原生的数据类型,比如:String、Int32、Int64、Char、Bool、Empty… 但是,这些数据一般只包含一个 data 字段,结构的单一意味着功能上的局限性,当传输一些复杂的数据,比如:

通俗范畴论4 范畴的定义

注:由于CSDN无法显示本文章源文件的公式,因此部分下标、字母花体、箭头表示可能会不正常,请读者谅解 范畴的正式定义 上一节我们在没有引入范畴这个数学概念的情况下,直接体验了一个“苹果1”范畴,建立了一个对范畴的直观。本节我们正式学习范畴的定义和基本性质。 一个范畴(Category) C𝐶,由以下部分组成: 数据: 对象(Objects):包含若干个对象(Objects),这些

利用结构体作为函数参数时结构体指针的定义

在利用结构体作为函数的参数进行传递时,容易犯的一个错误是将一个野指针传给函数导致错误。 #include <stdio.h>#include <math.h>#include <malloc.h>#define MAXSIZE 10typedef struct {int r[MAXSIZE]; //用于存储要排序的数组,r[0]作为哨兵或者临时变量int length;

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码

完整的申请邓白氏编码的流程(手把手教你申请邓白氏编码)  标签: 编码邓白氏编码申请流程苹果开发者账号申请 2016-07-08 16:13  2274人阅读  评论(2)  收藏  举报   分类: 技术  苹果开发  邓白氏编码申请 版权声明:本文为博主原创文章,未经博主允许不得转载。     申请公司的苹果开发者账号和企业级的苹

办理河南建筑工程乙级设计资质的流程与要点

办理河南建筑工程乙级设计资质的流程与要点 办理河南建筑工程乙级设计资质的流程与要点主要包括以下几个方面: 流程: 工商注册与资质规划:确保企业具有独立法人资格,完成工商注册,并明确乙级设计资质的具体要求,包括注册资本、人员配置、技术条件等。 专业技术人员配置: 雇佣或签约符合资质要求的专业技术人员,包括但不限于:一级注册结构工程师2名、一级注册建筑师2名、注册暖通工程师1名、注册供配电工

黑龙江等保测评的具体流程是怎样的

黑龙江等保测评的具体流程 黑龙江等保测评是根据《中华人民共和国网络安全法》及相关法律法规,对信息系统安全保护能力进行评估和验证的过程。以下是黑龙江等保测评的具体流程: 系统定级:根据业务、资产、安全技术、安全管理等方面的情况,对企业的安全防护水平进行评估,编制定级报告,为客户提供技术支持,协助客户编制定级报告,并组织相关专家对定级报告进行评估。 系统备案:持定级报告及登记表到当地的公安网监