package cn.itcast.b_processdefinition;

import java.io.FileInputStream;
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; /**
* 管理流程定义有关的操作
*
* <pre>
* 部署(添加)
* 删除
* 查询(查询所有、自定义条件查询)
* 获取部署添加的文件信息(查看流程图)
* !!没有更新操作!策略为:重新部署 + 版本递增。
*
* </pre>
*
* @author tyg
*
*/
public class ProcessDefinitionTest { private ProcessEngine processEngine = Configuration.getProcessEngine(); // 部署(添加)
@Test
public void testDeploy() throws Exception {
String deploymentId = processEngine.getRepositoryService()//
.createDeployment()// 创建一个部署对象
.addResourceFromClasspath("helloworld/helloworld.jpdl.xml")// 添加一个要部署的文件
.addResourceFromClasspath("helloworld/helloworld.png")// 添加一个要部署的文件
.deploy(); // 执行部署操作
System.out.println("部署成功:deploymentId = " + deploymentId);
} // 部署(把多个文件打包为一个zip一起部署)
@Test
public void testDeploy_zip() throws Exception {
// 准备
ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream("d:/helloworld.zip")); // 部署
String deploymentId = processEngine.getRepositoryService()//
.createDeployment()// 创建一个部署对象
.addResourcesFromZipInputStream(zipInputStream)// 指定zip流
.deploy(); // 执行部署操作
System.out.println("部署成功:deploymentId = " + deploymentId);
} // 删除
@Test
public void testDelete() throws Exception {
// // 删除指定的部署对象,如果有关联的信息,就报错
// processEngine.getRepositoryService().deleteDeployment(deploymentId);
// // 删除指定的部署对象,如果有关联的信息,就一并删除
// processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId); String deploymentId = "40001";
processEngine.getRepositoryService().deleteDeploymentCascade(deploymentId);
} // 查询流程定义(查询所有、自定义条件查询)
@Test
public void testFindAllProcessDefinition() throws Exception {
// 查询
List<ProcessDefinition> list = processEngine.getRepositoryService()//
.createProcessDefinitionQuery()//
// 过滤条件
// .processDefinitionId(processDefinitionId);
// .deploymentId(deploymentId)
// .processDefinitionKey(key)
// .processDefinitionName(name)
// 排序条件
// .orderAsc(property)
// .orderDesc(property)
// .orderAsc(ProcessDefinitionQuery.PROPERTY_VERSION)//
// 执行查询得到结果
// .page(firstResult, maxResults)
// .list()
// .count()
// .uniqueResult()
.list(); // 显示
for (ProcessDefinition pd : list) {
System.out.println("id=" + pd.getId()// 格式为:{key}-{version}
+ ", name=" + pd.getName()// .jpdl.xml中根元素的name属性的值。
+ ", key=" + pd.getKey()// .jpdl.xml中根元素的key属性的值。如果不写,默认为name属性的值。
+ ", version=" + pd.getVersion()// .jpdl.xml中根元素的version属性的值。如果不写,默认的效果为同名称的第一个version为1,以后的就递增。(一般不要写)
+ ", deploymentId=" + pd.getDeploymentId()); // 所属的部署对象的id
}
} // 获取部署时添加的文件信息(查看流程图)
@Test
public void testGetProcessImage() throws Exception {
String deploymentId = "90001";
String resourceName = "helloworld/helloworld.png"; // 获取指定的部署对象中的所有的文件名称
//使用给定的id 返回所有的资源存储
Set<String> nameSet = processEngine.getRepositoryService().getResourceNames(deploymentId);
System.out.println("所有的文件:");
for (String name : nameSet) {
System.out.println("\t" + name);
} // 获取指定的部署对象中的指定名称的文件内容
InputStream in = processEngine.getRepositoryService().getResourceAsStream(deploymentId, resourceName); // 存到d:/中
FileOutputStream out = new FileOutputStream("d:/process.png");
byte[] buf = new byte[1024];
for (int len = -1; (len = in.read(buf)) != -1;) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
<?xml version="1.0" encoding="UTF-8"?>

<process name="hellokey" key="hellokey" xmlns="http://jbpm.org/4.4/jpdl">
<start g="115,21,48,48" name="start1">
<transition g="-71,-17" name="to 提交申请" to="提交申请"/>
</start>
<end g="115,353,48,48" name="end1"/>
<task assignee="员工" g="81,101,117,52" name="提交申请">
<transition g="-78,-15" name="to 部门经理[审批]" to="部门经理[审批]"/>
</task>
<task assignee="部门经理" g="81,185,117,52" name="部门经理[审批]">
<transition g="-95,-17" name="to 总经理[审批]" to="总经理[审批]"/>
</task>
<task assignee="总经理" g="81,269,117,52" name="总经理[审批]">
<transition g="-47,-17" name="to end1" to="end1"/>
</task>
</process>

下载demo

jbpm4.4 demo2的更多相关文章

  1. jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the install tool.

    jBPM4.4 no jBPM DB schema: no JBPM4_EXECUTION table. Run the create.jbpm.schema target first in the ...

  2. JBPM4.4业务流程管理框架详细解读

    1. 什么是JBPM4.4业务流程管理框架? JBPM,全称是JavaBusiness Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的 ...

  3. Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver

    Tomcat6环境JBPM4.4报错:java.lang.ClassNotFoundException: de.odysseus.el.util.SimpleResolver 报错信息:

  4. JBPM4.4学习API

    一.流程引擎API org.jbpm.api.ProcessEngine是jbpm4所有的Service API 之源. 既所有的Service API(服务接口)都从ProcessEngine中获取 ...

  5. SSH整合JBPM4.4

    第一步:导入所需jar包: 所需的jar包(使用了hibernate annotation和struts2的convention-plugin,可能有多余的包,没做清理): 第二步:修改jbpm配置文 ...

  6. JBPM4.4+SSH 整合配置及完整实例

    整合jBPM4.4+ssh过程(spring接管struts2和hibernate,例中都整合在application.xml中,没有单独的jbpm.hibernate.cfg.xml): 1.在se ...

  7. Myeclipse10 + JBPM4.4 环境搭建图文教程

    一.软件环境 IDE:Myeclipse10.0 (jbpm4.0以上版本好像只能与Myeclipse7.5以上版本集成) JBPM:4.4 与Myeclipse集成 1.解压jbpm-4.4.zip ...

  8. JBPM4.4与SSH2之整合

    JBPM4.4与SSH2之整合(附完整源码) 这是我来到这世上二十多年来,第二次写博客啊.哈哈  这些天,想着把jbpm4.4与ssh2整合一下,由于之前从来没用过jbpm,也不知道各版本之间会有什么 ...

  9. Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8整合例子(附完整的请假流程例子,jbpm基础,常见问题解决)

    Jbpm4.4+hibernate3.5.4+spring3.0.4+struts2.1.8 整合例子(附完整的请假流程例子). 1.jbpm4.4 测试环境搭建 2.Jbpm4.4+hibernat ...

随机推荐

  1. Java中对List集合的排序

    方法一: 第一种方法,就是list中对象实现Comparable接口,代码如下: 实体类: public class Person implements Comparable<Person> ...

  2. 汇编 db,dw,dd的区别

    db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1 dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2 dd定义双字类型变量,一个双字数据占4个字节单元,读完一个, ...

  3. 149. Max Points on a Line

    题目: Given n points on a 2D plane, find the maximum number of points that lie on the same straight li ...

  4. Android EditText如何去除边框添加下划线

    (一)问题 之前的自定义EditText只能显示高度不超过屏幕高度的文本内容,继续增加内容会出现如下问题: (二)原因分析 下部(超出屏幕高度的部分)没有继续画线,也就是说横线没有画够,那么一定是循环 ...

  5. Android SeekBar实现音量调节

    SeekBar可以通过滑块的位置来标识数值----而且拖动条允许用户拖动滑块来改变值,因此拖动条通常用于对系统的某种数值进行调节,比如调节音量等. SeekBar允许用户改变拖动条的滑块外观,改变滑块 ...

  6. mysql联合索引

    命名规则:表名_字段名1.需要加索引的字段,要在where条件中2.数据量少的字段不需要加索引3.如果where条件中是OR关系,加索引不起作用4.符合最左原则 https://segmentfaul ...

  7. 在Hadoop伪分布式模式下安装Hbase

    安装环境:Hadoop 1.2.0, Java 1.7.0_21 1.下载/解压 在hbase官网上选择自己要下的hbase版本,我选择的是hbase-0.94.8. 下载后解压到/usr/local ...

  8. S3C2410 ADS实验手册

    http://www.evernote.com/shard/s307/sh/b45f0e60-3232-4cbb-99f6-a273236a2faa/bd865ae048ac797585303ef54 ...

  9. 【HDOJ】1260 Tickets

    水DP,不过这道题目的数据好像有问题.24时制可表示范围是0~23,12时制可表示范围应为1~12.也就是说24点(即0点)其实表示为12:00:00am,而中午12:00:00其实表示为12:00: ...

  10. 如何配置Java环境

    下载JDK并安装 搜索JDK,官网立马就出来了,下载之后个人觉得毕竟开发,毕竟这东西不大,C盘稳一点,安装在C盘可以的 配置 右键打开计算机->属性->高级系统设置->高级-> ...