Activiti流程图部署及流程图部分操作
2015-08-13 17:26
295 查看
流程图部署有两种方式,一种是通过classpath,另一种是通过zip文件
通过classpath方式如下
通过zip压缩包代码如下
查询流程定义代码如下
删除流程定义代码如下,分为级联和非级联删除两种
查看流程图图片代码如下
整体文件代码如下
通过classpath方式如下
public void deploymentProcessDefinition_classpath() { Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署相关的service .createDeployment()//创建一个部署对象 .name("流程定义入门")//添加部署名称 .addClasspathResource("diagrams/helloworld.bpmn")//从calsspath中加载,一次一个 .addClasspathResource("diagrams/helloworld.png") .deploy();//完成部署 System.out.println(deployment.getId()); System.out.println(deployment.getName()); }
通过zip压缩包代码如下
public void deploymentProcessDefinition_zip() { InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/helloworld.zip");//从zip获得输入流 ZipInputStream zipInputStream = new ZipInputStream(in); Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署相关的service .createDeployment()//创建一个部署对象 .name("流程定义zip")//添加部署名称 .addZipInputStream(zipInputStream)//指定zip格式文件完成部署 .deploy();//完成部署 System.out.println(deployment.getId()); System.out.println(deployment.getName()); }
查询流程定义代码如下
public void findProcessDefinition() { List<ProcessDefinition> list = processEngine.getRepositoryService()//与流程定义和部署相关的service .createProcessDefinitionQuery()//查询流程定义表 /**指定条件查询**/ //.deploymentId(deploymentId)//部署对象id查询 //.processDefinitionId(processDefinitionId)//流程定义id查询 //.processDefinitionKey(processDefinitionKey)//流程定义的key查询 集合 //.processDefinitionKeyLike(processDefinitionKeyLike)//流程定义的key模糊查询 集合 /**排序**/ //.orderByProcessDefinitionVersion().asc()//按版本升序 //.orderByProcessDefinitionVersion().asc()//按版本升降序 .list();//返回一个集合列表,封装流程定义 //.singleResult();//返回惟一结果集 //.count();//返回结果集数量 //.listPage(firstResult, maxResults);//分页查询 if(list!=null && list.size()>0){ for(ProcessDefinition pd:list){ System.out.println("流程定义ID:"+pd.getId());//流程定义的key+版本+随机生成数 System.out.println("流程定义的名称:"+pd.getName());//对应helloworld.bpmn文件中的name属性值 System.out.println("流程定义的key:"+pd.getKey());//对应helloworld.bpmn文件中的id属性值 System.out.println("流程定义的版本:"+pd.getVersion());//当流程定义的key值相同的相同下,版本升级,默认1 System.out.println("资源名称bpmn文件:"+pd.getResourceName()); System.out.println("资源名称png文件:"+pd.getDiagramResourceName()); System.out.println("部署对象ID:"+pd.getDeploymentId()); System.out.println("#########################################################"); } } }
删除流程定义代码如下,分为级联和非级联删除两种
public void deleteProcessDefinition() { String deploymentId="601"; //使用部署id完成删除 /** * 不带级联的删除 * 只能删除没有启动的流程,如果流程启动,就会抛出异常 */ //processEngine.getRepositoryService() // .deleteDeployment(deploymentId); //System.out.println("success"); processEngine.getRepositoryService()// .deleteDeployment(deploymentId, true); System.out.println("删除成功!"); }
查看流程图图片代码如下
public void viewPic() throws IOException{ /**将生成图片放到文件夹下*/ String deploymentId = "1"; //获取图片资源名称 List<String> list = processEngine.getRepositoryService()// .getDeploymentResourceNames(deploymentId); //定义图片资源的名称 String resourceName = ""; if(list!=null && list.size()>0){ for(String name:list){ if(name.indexOf(".png")>=0){ resourceName = name; } } } //获取图片的输入流 InputStream in = processEngine.getRepositoryService()// .getResourceAsStream(deploymentId, resourceName); System.out.println(resourceName); //将图片生成到D盘的目录下 File file = new File("D:/"+resourceName); //将输入流的图片写到D盘下 FileUtils.copyInputStreamToFile(in, file); }
整体文件代码如下
package b_processDefinition;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
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.apache.commons.io.FileUtils;
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")//从calsspath中加载,一次一个 .addClasspathResource("diagrams/helloworld.png") .deploy();//完成部署 System.out.println(deployment.getId()); System.out.println(deployment.getName()); }
/**部署流程定义,从zip*/
@Test
public void deploymentProcessDefinition_zip() { InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/helloworld.zip");//从zip获得输入流 ZipInputStream zipInputStream = new ZipInputStream(in); Deployment deployment = processEngine.getRepositoryService()//与流程定义和部署相关的service .createDeployment()//创建一个部署对象 .name("流程定义zip")//添加部署名称 .addZipInputStream(zipInputStream)//指定zip格式文件完成部署 .deploy();//完成部署 System.out.println(deployment.getId()); System.out.println(deployment.getName()); }
/**查询流程定义*/
@Test
public void findProcessDefinition() { List<ProcessDefinition> list = processEngine.getRepositoryService()//与流程定义和部署相关的service .createProcessDefinitionQuery()//查询流程定义表 /**指定条件查询**/ //.deploymentId(deploymentId)//部署对象id查询 //.processDefinitionId(processDefinitionId)//流程定义id查询 //.processDefinitionKey(processDefinitionKey)//流程定义的key查询 集合 //.processDefinitionKeyLike(processDefinitionKeyLike)//流程定义的key模糊查询 集合 /**排序**/ //.orderByProcessDefinitionVersion().asc()//按版本升序 //.orderByProcessDefinitionVersion().asc()//按版本升降序 .list();//返回一个集合列表,封装流程定义 //.singleResult();//返回惟一结果集 //.count();//返回结果集数量 //.listPage(firstResult, maxResults);//分页查询 if(list!=null && list.size()>0){ for(ProcessDefinition pd:list){ System.out.println("流程定义ID:"+pd.getId());//流程定义的key+版本+随机生成数 System.out.println("流程定义的名称:"+pd.getName());//对应helloworld.bpmn文件中的name属性值 System.out.println("流程定义的key:"+pd.getKey());//对应helloworld.bpmn文件中的id属性值 System.out.println("流程定义的版本:"+pd.getVersion());//当流程定义的key值相同的相同下,版本升级,默认1 System.out.println("资源名称bpmn文件:"+pd.getResourceName()); System.out.println("资源名称png文件:"+pd.getDiagramResourceName()); System.out.println("部署对象ID:"+pd.getDeploymentId()); System.out.println("#########################################################"); } } }
/**删除流程定义**/
@Test
public void deleteProcessDefinition() { String deploymentId="601"; //使用部署id完成删除 /** * 不带级联的删除 * 只能删除没有启动的流程,如果流程启动,就会抛出异常 */ //processEngine.getRepositoryService() // .deleteDeployment(deploymentId); //System.out.println("success"); processEngine.getRepositoryService()// .deleteDeployment(deploymentId, true); System.out.println("删除成功!"); }
/**查看流程图
* @throws IOException */
@Test
public void viewPic() throws IOException{ /**将生成图片放到文件夹下*/ String deploymentId = "1"; //获取图片资源名称 List<String> list = processEngine.getRepositoryService()// .getDeploymentResourceNames(deploymentId); //定义图片资源的名称 String resourceName = ""; if(list!=null && list.size()>0){ for(String name:list){ if(name.indexOf(".png")>=0){ resourceName = name; } } } //获取图片的输入流 InputStream in = processEngine.getRepositoryService()// .getResourceAsStream(deploymentId, resourceName); System.out.println(resourceName); //将图片生成到D盘的目录下 File file = new File("D:/"+resourceName); //将输入流的图片写到D盘下 FileUtils.copyInputStreamToFile(in, file); }
/***附加功能:查询最新版本的流程定义*/
@Test
public void findLastVersionProcessDefinition(){
List<ProcessDefinition> list = processEngine.getRepositoryService()//
.createProcessDefinitionQuery()//
.orderByProcessDefinitionVersion().asc()//使用流程定义的版本升序排列
.list();
/**
* Map<String,ProcessDefinition>
map集合的key:流程定义的key
map集合的value:流程定义的对象
map集合的特点:当map集合key值相同的情况下,后一次的值将替换前一次的值
*/
Map<String, ProcessDefinition> map = new LinkedHashMap<String, ProcessDefinition>();
if(list!=null && list.size()>0){
for(ProcessDefinition pd:list){
map.put(pd.getKey(), pd);
}
}
List<ProcessDefinition> pdList = new ArrayList<ProcessDefinition>(map.values());
if(pdList!=null && pdList.size()>0){
for(ProcessDefinition pd:pdList){
System.out.println("流程定义ID:"+pd.getId());//流程定义的key+版本+随机生成数
System.out.println("流程定义的名称:"+pd.getName());//对应helloworld.bpmn文件中的name属性值
System.out.println("流程定义的key:"+pd.getKey());//对应helloworld.bpmn文件中的id属性值
System.out.println("流程定义的版本:"+pd.getVersion());//当流程定义的key值相同的相同下,版本升级,默认1
System.out.println("资源名称bpmn文件:"+pd.getResourceName());
System.out.println("资源名称png文件:"+pd.getDiagramResourceName());
System.out.println("部署对象ID:"+pd.getDeploymentId());
System.out.println("#########################################################");
}
}
}
/**附加功能:删除流程定义(删除key相同的所有不同版本的流程定义)*/
@Test
public void deleteProcessDefinitionByKey(){
//流程定义的key
String processDefinitionKey = "helloworld";
//先使用流程定义的key查询流程定义,查询出所有的版本
List<ProcessDefinition> list = processEngine.getRepositoryService()//
.createProcessDefinitionQuery()//
.processDefinitionKey(processDefinitionKey)//使用流程定义的key查询
.list();
//遍历,获取每个流程定义的部署ID
if(list!=null && list.size()>0){
for(ProcessDefinition pd:list){
//获取部署ID
String deploymentId = pd.getDeploymentId();
processEngine.getRepositoryService()//
.deleteDeployment(deploymentId, true);
}
}
}
}
相关文章推荐
- [转]df命令
- [2015hdu多校联赛补题]hdu5384 Danganronpa
- limesurvey 权限插件开发 - 接入第三方的用户系统
- Flip Game
- poj 2823(单调队列)
- 2440启动代码分析
- C++ primer 【笔记】关联容器 set
- Linux学习笔记---文件解压缩命令---gzip ==
- iOS每日一记之---------改变Btn点击时的背景颜色
- 不同.net版本实现单点登录
- Web开发基础知识
- HDU 1251 统计难题 trie树
- Centos7安装配置Mongodb3
- 一个计时器, 点击按钮 让他 停一会, 5s后继续自动运行
- iNOC产品部-杨辉三角的变形
- Prime Path(POJ--3126
- 按返回键的时候实现按home键的效果
- KMP算法模板
- 在本地机器上能访问tomcat,远程机器访问不了的解决方法
- sql字符串累加