package com.nantian.jbpm.utils;
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.junit.Before;
public class BaseJbpm {
public static ProcessEngine processEngine;
@Before
public void testBase(){
this.processEngine = Configuration.getProcessEngine();
}
}
package com.nantian.jbpm.pd;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.zip.ZipInputStream;
import org.jbpm.api.Deployment;
import org.jbpm.api.ProcessDefinition;
import org.junit.Test;
import com.nantian.jbpm.utils.BaseJbpm;
/**
* 流程定义管理
* * 流程定义
* * 把流程定义文档部署到jbpm中
* * 查询
* * 查询流程部署
* * 查询所有的流程部署
* * 根据部署ID查询流程部署
* * 查询流程定义
* * 查询所有的流程定义
* * 根据deploymentID查询流程定义
* * 根据pdid查询流程定义
* * 根据pdkey查询流程定义
* * 删除
* * 查看流程图
* @author Administrator
*
*/
public class PDManager extends BaseJbpm{
/**
* 涉及到的表
* * JBPM4_DEPLOYMENT
* * 部署表,用来描述一次部署
* * 字段说明
* DBID_: 主键、部署ID
* STATE: 状态 active
* * JBPM4_LOB
* * 仓库表 存放了流程定义文档(xml,png)
* * 字段说明
* DEPLOYMENT_:部署ID 外键
* NAME_: xml或者png的文件路径
* * JBPM4_DEPLOYPROP
* * 部署属性表
* * 字段
* DBID_:主键
* OBJNAME_:流程定义名称
* KEY_:
* * 每部署一次,生成4行记录
* langid 语言版本 jpdl-4.4
* pdid {pdkey-version}
* pdkey 流程定义名称
* 一般情况下,pdkey和objname_的值是一样的
* pdversion 版本号
* 如果pdkey没有发生改变,每部署一次,版本号加1
* 如果pdkey发生改变,则是一个全新的名称,所以版本号应该从1开始计算
*/
/**
* 从classpath加载
*/
@Test
public void testDeployFromClasspath(){
//RepositoryService repositoryService = processEngine.getRepositoryService();
//NewDeployment newDeployment = repositoryService.createDeployment();
//newDeployment.addResourceFromClasspath("");
//newDeployment.addResourceFromClasspath("");
//newDeployment.deploy();
processEngine.getRepositoryService()
.createDeployment()
.addResourceFromClasspath("qingjia.jpdl.xml")
.addResourceFromClasspath("qingjia.png")
.deploy();
}
/**
* 从inputstream加载
*/
@Test
public void testDeployFromInputStream(){
//this.getClass().getClassLoader().getResourceAsStream("qingjia.jpdl.xml")获得classpath路径(src)
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream("qingjia.jpdl.xml");
processEngine.getRepositoryService()
.createDeployment()
.addResourceFromInputStream("qingjia.jpdl.xml", inputStream)
.deploy();
}
/**
* 从zipinoutStream加载
*/
@Test
public void testDeployFromZipinputStream(){
InputStream in = this.getClass().getClassLoader().getResourceAsStream("qingjia.zip");
ZipInputStream zipInputStream = new ZipInputStream(in);
processEngine.getRepositoryService()
.createDeployment()
.addResourcesFromZipInputStream(zipInputStream)
.deploy();
}
/**
* 查询所有的部署
*/
@Test
public void testQueryAllDeploy(){
List<Deployment> deploymentList = processEngine.getRepositoryService()
.createDeploymentQuery()
.list();
for(Deployment deployment:deploymentList){
System.out.print(deployment.getId());
System.out.print(" ");
System.out.println(deployment.getState());
}
}
/**
* 根据部署ID查询部署
*/
@Test
public void testQueryDeployByID(){
Deployment deployment = processEngine.getRepositoryService()
.createDeploymentQuery()
.deploymentId("10001")
.uniqueResult();
System.out.print(deployment.getId());
System.out.print(" ");
System.out.println(deployment.getState());
}
/**
* 查询所有的流程定义
*/
@Test
public void testQueryAllPD(){
List<ProcessDefinition> pdList = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.list();
for(ProcessDefinition pd:pdList){
System.out.print("deploymentId:"+pd.getDeploymentId()+",");
System.out.print("imageURL:"+pd.getImageResourceName()+",");
System.out.print("key:"+pd.getKey()+",");
System.out.println("version:"+pd.getVersion());
}
}
/**
* 根据部署ID查询流程定义
*/
@Test
public void testQueryPDByDeploymentId(){
ProcessDefinition pd = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.deploymentId("30001")
.uniqueResult();
System.out.print("deploymentId:"+pd.getDeploymentId()+",");
System.out.print("imageURL:"+pd.getImageResourceName()+",");
System.out.print("key:"+pd.getKey()+",");
System.out.println("version:"+pd.getVersion());
}
/**
* 根据PDID查询流程定义
*/
@Test
public void testQueryPDByPDID(){
ProcessDefinition pd = processEngine.getRepositoryService()
.createProcessDefinitionQuery()
.processDefinitionId("qingjia-2")
.uniqueResult();
System.out.print("deploymentId:"+pd.getDeploymentId()+",");
System.out.print("imageURL:"+pd.getImageResourceName()+",");
System.out.print("key:"+pd.getKey()+",");
System.out.println("version:"+pd.getVersion());
}
/**
* 根据pdkey查询流程定义
*/
@Test
public void testQueryPDByPDKEY(){
List<ProcessDefinition> pdList = processEngine
.getRepositoryService()
.createProcessDefinitionQuery()
.processDefinitionKey("qingjia")
.list();
for(ProcessDefinition pd:pdList){
System.out.print("deploymentId:"+pd.getDeploymentId()+",");
System.out.print("imageURL:"+pd.getImageResourceName()+",");
System.out.print("key:"+pd.getKey()+",");
System.out.println("version:"+pd.getVersion());
}
}
/**
* 删除
* 只能直接删除流程部署
* 而没有提供删除流程定义的API
*/
@Test
public void testDeleteDeployment(){
processEngine.getRepositoryService()
.deleteDeploymentCascade("10001");
}
/**
* 根据key得到所有的流程定义,然后遍历每一个流程定义,得到流程部署,然后依次删除
*/
/**
* 查询流程图
*/
@Test
public void testShowImage() throws Exception{
InputStream inputStream = processEngine.getRepositoryService()
.getResourceAsStream("20001", "qingjia.png");
OutputStream outputStream = new FileOutputStream("c:/processimg.png");
for(int b=-1;(b=inputStream.read())!=-1;){
outputStream.write(b);
}
inputStream.close();
outputStream.close();
}
}
相关推荐
1.首先用MyProcessDesigner_流程设计器设计一个‘请假流程图’,保存成zip根式(属性别忘记写) 2.启动tomcat:startup.bat 3.浏览器访问地址:http://localhost:8080/MyJbpm4-Console 4.登录用户名:员工或部门经理...
4.6 JBPM在MyEclipse画流程图时出现乱码: 14 5 核心API 14 5.1ProcessEngine 14 5.2RepositoryService 15 5.3ExecutionService 16 5.4TaskService 16 5.5ProcessDefinition 16 5.6ProcessInstance 16 5.7Execution ...
本篇还可以帮助读者快速上手jBPM4、使用jBPM4开发企业流程应用,包括安装和配置jBPM4、使用jBPM图形化流程设计器(GPD)设计流程、把流程部署到服务器上去、使用jBPM 4 Service API控制流程、掌握jBPM流程定义语言、...
自己初学jbpm时,写的demo,...查询流程,查询最新流程定义,删除流程定义,检索条件删除流程定义,查看流程图。 tarnsiton state decition forkjoin persontask grouptask custom evetn等 demo。希望对大家有所帮助。
简述 使用jbpm-starters-kit-3.1.4...部署jbpm的jar包和moudle的jar包 部署hbm文件到项目 设置大字段string-max 配置configration、template 过滤器的设置与建立 编写发布流程定义xml的人机页面及程序 写在最后
火龙果软件工程技术中心 相关资料:《jBPM学习笔记(V3.2环境部署)》《jBPM学习笔记(框架设计简介)》背景本片文章,我们将从业务流程的设计开始,通过带领大家完成一个完整工作流的程序设计,来学习jPDL的使用。...
1-版本以及系统配置jbpm版本3.2.3...jBPM默认使用的是内存数据库hsqldb|---deploy用来部署你的应用的包和资源|---designer这里是Eclipse插件,这样你就可以在图形界面来定义你的业务流程|---
宏天BPM X3软件平台是一个易于部署和使用的新一代业务流程管理平台,能够以最快的速度帮助您梳理、设计、执行、监控分析和优化业务流程,从业务和IT相结合的完美视角为用户组建长期而久远的卓越BPM流程管 理架构。...
一个是我们将编辑好的bpmn20.xml文件通过我们之前一分钟入门的示例activiti-explorer应用导入进去,查看它的流程图,并完整执行一遍流程。 在编写这个Demo之前,至少要了解Activiti与Spring如何集成、XxxService各自...
业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram) 3.3:数据库(先学后看) Activiti数据库支持: ...
描述:在Eclipse(不是MyEclipse)中安装JBPM的插件的过程(这个插件的主要功能是提供了一个图形化的流程定义界面,方便进行流程定义)。
1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码....................................