流程定义的管理 (一)

2014-11-24 11:10:36 · 作者: · 浏览: 0

[java]
package com.njupt.jbpm;

import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.List;
import java.util.Set;
import java.util.zip.ZipInputStream;

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

/**
* 流程定义的管理
*
*
*
*/
public class ProcessDefinitionTest {

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

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

// 获取单例的ProcessEngine对象(使用的是默认的文件文件)
private static ProcessEngine processEngine = Configuration.getProcessEngine();

// 1,添加流程定义(部署)
// 对应的表:jbpm4_deployment
@Test
public void testDeploy() throws Exception {
String deploymentId = processEngine.getRepositoryService()//
.createDeployment()//
.addResourceFromClasspath("first/test.jpdl.xml")//
.addResourceFromClasspath("first/test.png")//
.deploy();
System.out.println("部署成功,deploymentId = " + deploymentId);
}

// 部署流程定义
@Test
public void testDeploy2_zip() throws Exception {
// 一次指定多个资源(同一个zip中的)
InputStream in = getClass().getClassLoader().getResourceAsStream("first/first.zip");
ZipInputStream zipInputStream = new ZipInputStream(in);

String deploymentId = processEngine.getRepositoryService()//
.createDeployment()//
.addResourcesFromZipInputStream(zipInputStream)//
.deploy();

System.out.println("部署成功,deploymentId = " + deploymentId);
}

// 2,获取部署时添加的文件内容
@Test
public void testGetResource() throws Exception {
String deploymentId = "40001";

// 获取某次部署时添加的所有文件资源的名称
Set nameSet = processEngine.getRepositoryService().getResourceNames(deploymentId);
for (String name : nameSet) {
System.out.println("\t" + name);
}

// 获取某次部署时添加的指定的文件资源内容
String resourceName = "first/test.png";
InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, resourceName);

// >> 保存到文件中
FileOutputStream out = new FileOutputStream("c:/process.png");
for (int b = -1; (b = in.read()) != -1;) {
out.write(b);
}
in.close();
out.close();
}

// 3,删除
@Test
public void testDelete() throws Exception {
String deploymentId = "40001";

// // 删除指定的部署对象,如果有关联的执行信息,则报错
// processEngine.getRepositoryService().deleteDeployment(deploymentId);
// 删除指定的部署对象,如果有关联的执行信息,则级联删除
processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
}

// 4,查询流程定义
@Test
public void testFindAll() throws Exception {
// 查询
List list = processEngine.getRepositoryService()//
.createProcessDefinitionQuery()//
// 过滤条件
// .processDefi