`

jbpm流程部署和定义查询、删除、查看流程图

    博客分类:
  • jbpm
阅读更多

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();

}

}

 

分享到:
评论

相关推荐

    JBPM-4.4演示请假流程步骤和源代码

    1.首先用MyProcessDesigner_流程设计器设计一个‘请假流程图’,保存成zip根式(属性别忘记写) 2.启动tomcat:startup.bat 3.浏览器访问地址:http://localhost:8080/MyJbpm4-Console 4.登录用户名:员工或部门经理...

    jbpm4.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工作流应用开始指南.rar

    本篇还可以帮助读者快速上手jBPM4、使用jBPM4开发企业流程应用,包括安装和配置jBPM4、使用jBPM图形化流程设计器(GPD)设计流程、把流程部署到服务器上去、使用jBPM 4 Service API控制流程、掌握jBPM流程定义语言、...

    自己学习jbpm时写的demo

    自己初学jbpm时,写的demo,...查询流程,查询最新流程定义,删除流程定义,检索条件删除流程定义,查看流程图。 tarnsiton state decition forkjoin persontask grouptask custom evetn等 demo。希望对大家有所帮助。

    SSH+JBPM的整合

    简述 使用jbpm-starters-kit-3.1.4...部署jbpm的jar包和moudle的jar包 部署hbm文件到项目 设置大字段string-max 配置configration、template 过滤器的设置与建立 编写发布流程定义xml的人机页面及程序 写在最后

    JBPM学习笔记——流程设计与控制

    火龙果软件工程技术中心 相关资料:《jBPM学习笔记(V3.2环境部署)》《jBPM学习笔记(框架设计简介)》背景本片文章,我们将从业务流程的设计开始,通过带领大家完成一个完整工作流的程序设计,来学习jPDL的使用。...

    JBPM基于Spring系统工作流平台整合(一)

    1-版本以及系统配置jbpm版本3.2.3...jBPM默认使用的是内存数据库hsqldb|---deploy用来部署你的应用的包和资源|---designer这里是Eclipse插件,这样你就可以在图形界面来定义你的业务流程|---

    基于jbpm与activiti的工作流平台技术架构介绍

    宏天BPM X3软件平台是一个易于部署和使用的新一代业务流程管理平台,能够以最快的速度帮助您梳理、设计、执行、监控分析和优化业务流程,从业务和IT相结合的完美视角为用户组建长期而久远的卓越BPM流程管 理架构。...

    Activiti6.0教程例子下载

    一个是我们将编辑好的bpmn20.xml文件通过我们之前一分钟入门的示例activiti-explorer应用导入进去,查看它的流程图,并完整执行一遍流程。 在编写这个Demo之前,至少要了解Activiti与Spring如何集成、XxxService各自...

    Activiti工作流学习资料.zip

    业务流程建模与标注(Business Process Model and Notation,BPMN) ,描述流程的基本符号,包括这些图元如何组合成一个业务流程图(Business Process Diagram) 3.3:数据库(先学后看) Activiti数据库支持: ...

    工作流引擎安装过程

    描述:在Eclipse(不是MyEclipse)中安装JBPM的插件的过程(这个插件的主要功能是提供了一个图形化的流程定义界面,方便进行流程定义)。

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    1.4. Seam 和jBPM:待办事项列表(todo list)示例..................................................................................................... 32 1.4.1. 理解代码....................................

Global site tag (gtag.js) - Google Analytics