1. package com.mycom.processDefinition;
  2.  
  3. import java.io.InputStream;
  4. import java.util.List;
  5. import java.util.zip.ZipInputStream;
  6.  
  7. import org.activiti.engine.ProcessEngine;
  8. import org.activiti.engine.ProcessEngines;
  9. import org.activiti.engine.repository.Deployment;
  10. import org.activiti.engine.repository.ProcessDefinition;
  11. import org.junit.Test;
  12.  
  13. public class ProcessDefinitionTest {
  14.  
  15. ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
  16.  
  17. /*
  18. *部署流程定义 (从classpath)
  19. */
  20. @Test
  21. public void deploymentProcessDefinition_classpath(){
  22. Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
  23. .createDeployment()//创建一个部署对象
  24. .name("流程定义")//添加部署名称
  25. .addClasspathResource("diagrams/HelloWorld.bpmn")//从classpath的资源中加载,一次只能加载一个文件
  26. .addClasspathResource("diagrams/HelloWorld.png")
  27. .deploy();//完成部署
  28. System.out.println("部署ID:"+deployment.getId());
  29. System.out.println("部署名称:"+deployment.getName());
  30.  
  31. }
  32.  
  33. /*
  34. *部署流程定义 (从zip)
  35. */
  36. @Test
  37. public void deploymentProcessDefinition_zip(){
  38. InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/HelloWorld.zip");
  39. ZipInputStream zipInputStream = new ZipInputStream(in);
  40. Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
  41. .createDeployment()//创建一个部署对象
  42. .name("流程定义")//添加部署名称
  43. .addZipInputStream(zipInputStream)//完成zip文件的部署
  44. .deploy();//完成部署
  45. System.out.println("部署ID:"+deployment.getId());
  46. System.out.println("部署名称:"+deployment.getName());
  47.  
  48. }
  49.  
  50. /*
  51. * 查询流程定义
  52. */
  53. @Test
  54. public void findProcessDefinition(){
  55. List<ProcessDefinition> list = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
  56. .createProcessDefinitionQuery()//创建一个流程定义查询
  57. /*指定查询条件,where条件*/
  58. //.deploymentId(deploymentId)//使用部署对象ID查询
  59. //.processDefinitionId(processDefinitionId)//使用流程定义ID查询
  60. //.processDefinitionKey(processDefinitionKey)//使用流程定义的KEY查询
  61. //.processDefinitionNameLike(processDefinitionNameLike)//使用流程定义的名称模糊查询
  62.  
  63. /*排序*/
  64. .orderByProcessDefinitionVersion().asc()//按照版本的升序排列
  65. //.orderByProcessDefinitionName().desc()//按照流程定义的名称降序排列
  66.  
  67. .list();//返回一个集合列表,封装流程定义
  68. //.singleResult();//返回唯一结果集
  69. //.count();//返回结果集数量
  70. //.listPage(firstResult, maxResults)//分页查询
  71.  
  72. if(list != null && list.size()>0){
  73. for(ProcessDefinition processDefinition:list){
  74. System.out.println("流程定义ID:"+processDefinition.getId());//流程定义的key+版本+随机生成数
  75. System.out.println("流程定义名称:"+processDefinition.getName());//对应HelloWorld.bpmn文件中的name属性值
  76. System.out.println("流程定义的key:"+processDefinition.getKey());//对应HelloWorld.bpmn文件中的id属性值
  77. System.out.println("流程定义的版本:"+processDefinition.getVersion());//当流程定义的key值相同的情况下,版本升级,默认从1开始
  78. System.out.println("资源名称bpmn文件:"+processDefinition.getResourceName());
  79. System.out.println("资源名称png文件:"+processDefinition.getDiagramResourceName());
  80. System.out.println("部署对象ID:"+processDefinition.getDeploymentId());
  81. System.out.println("################################");
  82. }
  83. }
  84.  
  85. }
  86.  
  87. /*
  88. * 删除流程定义
  89. */
  90. @Test
  91. public void deleteProcessDefinition(){
  92. //使用部署ID,完成删除
  93. String deploymentId = "1";
  94. /*
  95. * 不带级联的删除
  96. * 只能删除没有启动的流程,如果流程启动,就会抛出异常
  97. */
  98. // processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
  99. // .deleteDeployment(deploymentId);
  100. /*
  101. * 能级联的删除
  102. * 能删除启动的流程,会删除和当前规则相关的所有信息,正在执行的信息,也包括历史信息
  103. */
  104. processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
  105. .deleteDeployment(deploymentId, true);
  106.  
  107. System.out.println("删除成功");
  108. }
  109.  
  110. }

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

2)        如果该流程定义下没有正在运行的流程,则可以用普通删除。如果是有关联的信息,用级联删除。项目开发中使用级联删除的情况比较多,删除操作一般只开放给超级管理员使用。

Activiti 删除流程定义的更多相关文章

  1. 深入了解Activiti工作流流程定义

    深入了解Activiti工作流流程定义 2016-03-27| 发布: | 浏览: 2363 |保存PDF 部署流程定义 部署流程定义的流程: 1. 先获取流程引擎对象:在创建时会自动加载 class ...

  2. activiti7删除流程定义的相关信息

    package com.zcc.activiti02; import org.activiti.engine.ProcessEngine;import org.activiti.engine.Proc ...

  3. activiti部署流程定义时出错:INSERT INTO ACT_GE_BYTEARRAY,修改数据库编码

    activiti部署流程定义时出错 // 部署流程定义 Deployment deployment = deploymentBuilder.deploy(); 错误信息:(有乱码的...没留下截图.. ...

  4. 六、activiti工作流-流程定义查询

    本节主要讲流程定义查询.查询某个流程设计图片并保存到本地中.查询最新版本的流程定义集合.删除所有key相同的定义 先创建一个java类 package com.java.procdef; import ...

  5. Activiti 查询流程定义

    package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java. ...

  6. Activiti 部署流程定义及相关的表(classpath部署、zip部署)

    package com.mycom.processDefinition; import org.activiti.engine.ProcessEngine; import org.activiti.e ...

  7. 多数据库下activiti的流程定义缓存问题

    我们使用activiti(5.14版本号)作为流程引擎,今天在产品中发现一个问题,某流程的审批记录中, 活动实例表中记录的活动名称(ACT_HI_ACTINST表的ACT_NAME)居然是该流程中不存 ...

  8. (四)Activiti之流程定义部署之ZIP方式和流程定义查询

    一.流程定义部署之ZIP方式 上一章节我们使用classpath的方式加载流程定义文件,这里我们使用ZIP的方式. 1.1 用activiti插件生成bpmn和png图片之后,压缩到一个zip格式的压 ...

  9. Activiti 删除key值相同的所有不同版本的流程定义

    package com.mycom.processDefinition; import java.io.File; import java.io.IOException; import java.io ...

随机推荐

  1. vsftpd移植

    1.交叉编译 2.将生成的 vsftpd 复制到目标板 /usr/sbin 目录,vsftpd.conf 复制到目标板 /etc 目录,并添加 vsftpd 为可执行: 3.配置 使用 vi 打开 v ...

  2. 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合.

    select *from timp a, timp b where a.name > b.name 结果:

  3. React和ES6(二)ES6的类和ES7的property initializer

    React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...

  4. Text input(文本输入框)

    Text input(文本输入框)是用来获得用户输入的绝佳方式. 你可以用如下方法创建: <input type="text"> 注意,input元素是自关闭的.

  5. linux httpd 服务的安装

    1.查看是否安装了httpd rpm -qa|grep httpd 2.安装httpd 使用yum 安装 yum -y install httpd 3.关闭防火墙和selinxu 4.使用fz软件或者 ...

  6. ie6下内容会撑开父级设置好的宽高

    在ie6下,内容的宽高会撑开父级设置好的宽高,在其他浏览器下不会. 会出现的问题是:如果内容宽度大于父级设置好的宽度,内容的最后一个元素会换行显示. 注意:在计算时,务必做到精准,不然可能会产生不必要 ...

  7. KEIL MDK输出map文件分析

    一.文件分析流程 1.第一部分:Section Cross References 主要是各个源文件生成的模块之间相互引用的关系. stm32f10x.o(STACK) refers (Special) ...

  8. iOS开发之组件化架构漫谈

    前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是 ...

  9. solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据

    solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...

  10. console.log 被重写覆盖以后如何恢复

    有时候一些项目中会使用类似如下的方式覆盖掉console对象: var console = {}; console.log = function(){}; console.info = functio ...