Activiti 删除流程定义
- package com.mycom.processDefinition;
- import java.io.InputStream;
- import java.util.List;
- import java.util.zip.ZipInputStream;
- import org.activiti.engine.ProcessEngine;
- import org.activiti.engine.ProcessEngines;
- import org.activiti.engine.repository.Deployment;
- import org.activiti.engine.repository.ProcessDefinition;
- import org.junit.Test;
- public class ProcessDefinitionTest {
- ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
- /*
- *部署流程定义 (从classpath)
- */
- @Test
- public void deploymentProcessDefinition_classpath(){
- Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
- .createDeployment()//创建一个部署对象
- .name("流程定义")//添加部署名称
- .addClasspathResource("diagrams/HelloWorld.bpmn")//从classpath的资源中加载,一次只能加载一个文件
- .addClasspathResource("diagrams/HelloWorld.png")
- .deploy();//完成部署
- System.out.println("部署ID:"+deployment.getId());
- System.out.println("部署名称:"+deployment.getName());
- }
- /*
- *部署流程定义 (从zip)
- */
- @Test
- public void deploymentProcessDefinition_zip(){
- InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/HelloWorld.zip");
- ZipInputStream zipInputStream = new ZipInputStream(in);
- Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
- .createDeployment()//创建一个部署对象
- .name("流程定义")//添加部署名称
- .addZipInputStream(zipInputStream)//完成zip文件的部署
- .deploy();//完成部署
- System.out.println("部署ID:"+deployment.getId());
- System.out.println("部署名称:"+deployment.getName());
- }
- /*
- * 查询流程定义
- */
- @Test
- public void findProcessDefinition(){
- List<ProcessDefinition> list = processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
- .createProcessDefinitionQuery()//创建一个流程定义查询
- /*指定查询条件,where条件*/
- //.deploymentId(deploymentId)//使用部署对象ID查询
- //.processDefinitionId(processDefinitionId)//使用流程定义ID查询
- //.processDefinitionKey(processDefinitionKey)//使用流程定义的KEY查询
- //.processDefinitionNameLike(processDefinitionNameLike)//使用流程定义的名称模糊查询
- /*排序*/
- .orderByProcessDefinitionVersion().asc()//按照版本的升序排列
- //.orderByProcessDefinitionName().desc()//按照流程定义的名称降序排列
- .list();//返回一个集合列表,封装流程定义
- //.singleResult();//返回唯一结果集
- //.count();//返回结果集数量
- //.listPage(firstResult, maxResults)//分页查询
- if(list != null && list.size()>0){
- for(ProcessDefinition processDefinition:list){
- System.out.println("流程定义ID:"+processDefinition.getId());//流程定义的key+版本+随机生成数
- System.out.println("流程定义名称:"+processDefinition.getName());//对应HelloWorld.bpmn文件中的name属性值
- System.out.println("流程定义的key:"+processDefinition.getKey());//对应HelloWorld.bpmn文件中的id属性值
- System.out.println("流程定义的版本:"+processDefinition.getVersion());//当流程定义的key值相同的情况下,版本升级,默认从1开始
- System.out.println("资源名称bpmn文件:"+processDefinition.getResourceName());
- System.out.println("资源名称png文件:"+processDefinition.getDiagramResourceName());
- System.out.println("部署对象ID:"+processDefinition.getDeploymentId());
- System.out.println("################################");
- }
- }
- }
- /*
- * 删除流程定义
- */
- @Test
- public void deleteProcessDefinition(){
- //使用部署ID,完成删除
- String deploymentId = "1";
- /*
- * 不带级联的删除
- * 只能删除没有启动的流程,如果流程启动,就会抛出异常
- */
- // processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
- // .deleteDeployment(deploymentId);
- /*
- * 能级联的删除
- * 能删除启动的流程,会删除和当前规则相关的所有信息,正在执行的信息,也包括历史信息
- */
- processEngine.getRepositoryService()//与流程定义和部署对象相关的Service
- .deleteDeployment(deploymentId, true);
- System.out.println("删除成功");
- }
- }
1) 因为删除的是流程定义,而流程定义的部署是属于仓库服务的,所以应该先得到RepositoryService
2) 如果该流程定义下没有正在运行的流程,则可以用普通删除。如果是有关联的信息,用级联删除。项目开发中使用级联删除的情况比较多,删除操作一般只开放给超级管理员使用。
Activiti 删除流程定义的更多相关文章
- 深入了解Activiti工作流流程定义
深入了解Activiti工作流流程定义 2016-03-27| 发布: | 浏览: 2363 |保存PDF 部署流程定义 部署流程定义的流程: 1. 先获取流程引擎对象:在创建时会自动加载 class ...
- activiti7删除流程定义的相关信息
package com.zcc.activiti02; import org.activiti.engine.ProcessEngine;import org.activiti.engine.Proc ...
- activiti部署流程定义时出错:INSERT INTO ACT_GE_BYTEARRAY,修改数据库编码
activiti部署流程定义时出错 // 部署流程定义 Deployment deployment = deploymentBuilder.deploy(); 错误信息:(有乱码的...没留下截图.. ...
- 六、activiti工作流-流程定义查询
本节主要讲流程定义查询.查询某个流程设计图片并保存到本地中.查询最新版本的流程定义集合.删除所有key相同的定义 先创建一个java类 package com.java.procdef; import ...
- Activiti 查询流程定义
package com.mycom.processDefinition; import java.io.InputStream; import java.util.List; import java. ...
- Activiti 部署流程定义及相关的表(classpath部署、zip部署)
package com.mycom.processDefinition; import org.activiti.engine.ProcessEngine; import org.activiti.e ...
- 多数据库下activiti的流程定义缓存问题
我们使用activiti(5.14版本号)作为流程引擎,今天在产品中发现一个问题,某流程的审批记录中, 活动实例表中记录的活动名称(ACT_HI_ACTINST表的ACT_NAME)居然是该流程中不存 ...
- (四)Activiti之流程定义部署之ZIP方式和流程定义查询
一.流程定义部署之ZIP方式 上一章节我们使用classpath的方式加载流程定义文件,这里我们使用ZIP的方式. 1.1 用activiti插件生成bpmn和png图片之后,压缩到一个zip格式的压 ...
- Activiti 删除key值相同的所有不同版本的流程定义
package com.mycom.processDefinition; import java.io.File; import java.io.IOException; import java.io ...
随机推荐
- vsftpd移植
1.交叉编译 2.将生成的 vsftpd 复制到目标板 /usr/sbin 目录,vsftpd.conf 复制到目标板 /etc 目录,并添加 vsftpd 为可执行: 3.配置 使用 vi 打开 v ...
- 一个叫 team 的表,里面只有一个字段name, 一共有4 条纪录,分别是a,b,c,d, 对应四个球队,现在四个球队进行比赛,用一条sql 语句显示所有可能的比赛组合.
select *from timp a, timp b where a.name > b.name 结果:
- React和ES6(二)ES6的类和ES7的property initializer
React与ES6系列: React与ES6(一)开篇介绍 React和ES6(二)ES6的类和ES7的property initializer React与ES6(三)ES6类和方法绑定 React ...
- Text input(文本输入框)
Text input(文本输入框)是用来获得用户输入的绝佳方式. 你可以用如下方法创建: <input type="text"> 注意,input元素是自关闭的.
- linux httpd 服务的安装
1.查看是否安装了httpd rpm -qa|grep httpd 2.安装httpd 使用yum 安装 yum -y install httpd 3.关闭防火墙和selinxu 4.使用fz软件或者 ...
- ie6下内容会撑开父级设置好的宽高
在ie6下,内容的宽高会撑开父级设置好的宽高,在其他浏览器下不会. 会出现的问题是:如果内容宽度大于父级设置好的宽度,内容的最后一个元素会换行显示. 注意:在计算时,务必做到精准,不然可能会产生不必要 ...
- KEIL MDK输出map文件分析
一.文件分析流程 1.第一部分:Section Cross References 主要是各个源文件生成的模块之间相互引用的关系. stm32f10x.o(STACK) refers (Special) ...
- iOS开发之组件化架构漫谈
前段时间公司项目打算重构,准确来说应该是按之前的产品逻辑重写一个项目.在重构项目之前涉及到架构选型的问题,我和组里小伙伴一起研究了一下组件化架构,打算将项目重构为组件化架构.当然不是直接拿来照搬,还是 ...
- solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据
solr与.net系列课程(四)solr查询参数的讲解与.net如何获取solr数据 上一节我们完成了solr连接数据库,细心的朋友会发现一个问题,就是solr其实和语言没有任何关系,配置完成后任何语 ...
- console.log 被重写覆盖以后如何恢复
有时候一些项目中会使用类似如下的方式覆盖掉console对象: var console = {}; console.log = function(){}; console.info = functio ...