流程部署操作,增、删、改(添加)、查

<strong><span style="font-size:32px;">1、流程部署操作,增、删、改(添加)、查</span></strong>
package cs.jbpm.b_processdefinition;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.zip.ZipInputStream;

import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessDefinitionQuery;
import org.jbpm.api.ProcessEngine;
import org.junit.Test;

public class ProcessDefinitionTest {

	// 使用指定的配置文件生成ProcessEngine对象
	// private ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();

	// 使用默认的配置文件生成ProcessEngine对象(jbpm.cfg.xml)
	// private ProcessEngine processEngine = new Configuration().buildProcessEngine();

	// 获取单例的ProcessEngine对象(使用的是默认的配置文件:jbpm.cfg.xml)
	private ProcessEngine processEngine = Configuration.getProcessEngine();

	//1、 部署(添加)
	// jbpm4_deployment
	// jbpm4_lob
	// jbpm4_deployprop
	@Test
	public void testDeploy() throws Exception {
		// NewDeployment deployment = processEngine.getRepositoryService().createDeployment();
		// deployment.addResourceFromClasspath("helloworld/helloworld.jpdl.xml");
		// deployment.addResourceFromClasspath("helloworld/helloworld.png");
		// deployment.deploy();

		String deploymentId = processEngine.getRepositoryService()//
				.createDeployment()//
				.addResourceFromClasspath("helloworld/hellow.jpdl.xml")//
				.addResourceFromClasspath("helloworld/hellow.png")//
				.deploy();
		System.out.println("部署成功:deploymentId = " + deploymentId);
	}

	// 部署(zip)
	@Test
	public void testDeploy_zip() throws Exception {
		// 找到zip资 源
		InputStream in = this.getClass().getClassLoader().getResourceAsStream("cs/jbpm/b_processdefinition/first.zip");
		ZipInputStream zipInputStream = new ZipInputStream(in);

		// 部署
		String deploymentId = processEngine.getRepositoryService()//
				.createDeployment()//
				.addResourcesFromZipInputStream(zipInputStream)//
				.deploy();
		System.out.println("部署成功:deploymentId = " + deploymentId);
	}

	// 2、查询所有
	@Test
	public void findAll() throws Exception {
		// 查询
		List<ProcessDefinition> list = processEngine.getRepositoryService()//
				.createProcessDefinitionQuery()//
				// 过滤条件
				// .processDefinitionKey("")//
				// .processDefinitionNameLike("%xx%")//
				// 排序条件
				// .orderAsc(ProcessDefinitionQuery.PROPERTY_KEY)//
				// .orderDesc(ProcessDefinitionQuery.PROPERTY_VERSION)//
				// 执行查询
				// .uniqueResult();
				// .count();
				// .page(firstResult, maxResults)//
				.list();

		// 显示
		for (ProcessDefinition pd : list) {
			System.out.println("id=" + pd.getId()// 格式为:{key}-{version},用于唯一的标识一个流程定义
					+ ", name=" + pd.getName()// 流程定义的名称,jpdl.xml中根元素的name属性的值
					+ ", key=" + pd.getKey()// 流程定义的key,jpdl.xml中根元素的key属性的值,默认是name属性的值
					+ ", version=" + pd.getVersion()// 自动生成的,同一个名称的第一个为1,以后的自动加1.
					+ ", deploymentId=" + pd.getDeploymentId()); // 所属的部署对象
		}
	}
	@Test
	public void testMap() {
		//map中只能有一个唯一的key,如果有两个拿最后放入的key
		Map<String,String> maps=new HashMap<String,String>();
		maps.put("a", "a-1");
		maps.put("a", "a-2");
		for(String m:maps.values()){
			System.out.println(m);
		}
	}

	// 查询所有最新版本的流程定义
	@Test
	public void findAllLatestVersions() throws Exception {
		// 1、查询所有,让所有最大的版本都排到最后面
		List<ProcessDefinition> list=processEngine.getRepositoryService()
				.createProcessDefinitionQuery()
				.orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)
				.list();
			
		// 2、过滤出所有最新的版本
			//map中只能有一个唯一的key,如果有两个拿最后放入的key
		Map<String,ProcessDefinition> maps=new HashMap<String,ProcessDefinition>();
		for (ProcessDefinition pd : list) {
			pd.getName();
			maps.put(pd.getKey(), pd);
		}

		//3、 显示
		for (ProcessDefinition pd : maps.values()) {
			System.out.println("id=" + pd.getId()// 格式为:{key}-{version},用于唯一的标识一个流程定义
					+ ", name=" + pd.getName()// 流程定义的名称,jpdl.xml中根元素的name属性的值
					+ ", key=" + pd.getKey()// 流程定义的key,jpdl.xml中根元素的key属性的值,默认是name属性的值
					+ ", version=" + pd.getVersion()// 自动生成的,同一个名称的第一个为1,以后的自动加1.
					+ ", deploymentId=" + pd.getDeploymentId()); // 所属的部署对象
		}
	}

	//3、 删除
	@Test
	public void deleteById() throws Exception {
		String deploymentId = "10001";

		// // 删除指定的部署对象(流程定义),如果有关联的执行信息,就会报错
		// processEngine.getRepositoryService().deleteDeployment(deploymentId);

		// 删除指定的部署对象(流程定义),如果有关联的执行信息,会被同时删除
		processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
	}

	// 删除指定key的所有版本的流程定义
	@Test
	public void deleteByKey() throws Exception {
		// 查询出指定key的所有版本的流程定义
		List<ProcessDefinition> lists=processEngine.getRepositoryService().createProcessDefinitionQuery()
				.processDefinitionKey("test")
				.list();
		
		// 一一删除
		for (ProcessDefinition pd : lists) {
			processEngine.getRepositoryService().deleteDeploymentCascade(pd.getDeploymentId());
		}
	}

	//4、 查看流程图(xxx.png)
	@Test
	public void getImageResource() throws Exception {
		String deploymentId = "40001";
		String resourceName = "helloworld/hellow.png";

		// 获取指定部署对象中的所有资源的名称
		Set<String> names=processEngine.getRepositoryService().getResourceNames(deploymentId);
		System.out.println("所有的资源名称:");
		for (String name : names) {
			System.out.println("\t"+name);
		}

		// 获取指定部署对象中的指下资源的内容
		InputStream in=processEngine.getRepositoryService().getResourceAsStream(deploymentId, resourceName);
		
		// 保存到e盘
		String path="e:"+File.separator+"process.png";
		OutputStream out=new FileOutputStream(path);	//输出流到d盘
		for (int i=-1;(i=in.read())!=-1;) {	//读到流的末尾返回-1
			out.write(i);
		}
		out.close();
		in.close();
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值