工作流管理:其它参数详见上一篇介绍:http://blog.csdn.net/zhengyong15984285623/article/details/9282047
package cn.edu.zust.itee;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Set;
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessDefinition;
import org.jbpm.api.ProcessDefinitionQuery;
import org.jbpm.api.ProcessEngine;
import org.junit.Test;
/**
* @author 郑勇
* 2013-07-09 15:47
*/
//注意:deploymentId对应jbpm4_deployment表中的"DBID_"字段;
public class ProcessDefinitionManage {
//单例模式获取流程引擎
//singleton = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine();
private ProcessEngine processEngine = Configuration.getProcessEngine();
//1.部署流程定义(添加)
//相关表:jbpm4_deployment,jbpm4_deployprop,jbpm4_lob
@Test
public void deploy(){
String deploymentId = processEngine.getRepositoryService()
.createDeployment()
.addResourceFromClasspath("helloword/test.jpdl.xml")
.addResourceFromClasspath("helloword/test.png")
.deploy();
System.out.println(deploymentId);
}
//2.查询所有流程定义
@Test
public void findAll(){
//查询
List<ProcessDefinition> list = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.orderAsc(ProcessDefinitionQuery.PROPERTY_KEY)
.list();
//显示
for(ProcessDefinition pd : list){
System.out.println("id="+pd.getId() //格式{key}-{version}
+",name="+pd.getName() //流程定义"xxx.jpdl.xml"中根元素的name属性的值
+",key="+pd.getKey() //流程定义"xxx.jpdl.xml"中根元素的key属性的值(不写,默认与name属性一致)
+",version="+pd.getVersion()//流程定义"xxx.jpdl.xml"中根元素的version属性的值(不写,key一样时,默版本认自增)
+",deploymentId="+pd.getDeploymentId());
}
}
//3.删除流程定义(其实是删除Deployment)
@Test
public void delete(){
String deploymentId = "1";
//删除Deployment,如果有关联信息,就抛异常
// processEngine.getRepositoryService().deleteDeployment(deploymentId);
//删除Deployment,如果有关联信息,就级联删除
processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
}
//4.获取部署时某文件的资源(查看流程图)
@Test
public void getResourceFromDeployment() throws Exception{
String deploymentId = "40001";
String resourceName = "helloword/test.png";
//获取某Deployment中所有资源文件的名称
Set<String> set = processEngine.getRepositoryService().getResourceNames(deploymentId);
for(String flieName : set){
System.out.println(flieName);
}
//获取某Deployment中所有资源文件
InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, resourceName);
//保存在E盘中
OutputStream out = new FileOutputStream("E://process.png");
for(int b = -1;(b=in.read())!= -1;){
out.write(b);
}
in.close();
out.close();
}
}