`

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流程图状态显示

    1. 设计并部署流程定义:使用jbpm提供的工具(如jbpm-designer)创建流程图,然后将流程部署到jbpm引擎。 2. 启动流程实例:根据部署的流程定义,启动一个实例,并分配初始的参与者或任务。 3. 实时更新状态:当流程...

    eclipse3.4解压版带jbpm流程定义插件

    JBPM插件允许用户通过图形化界面来设计流程图,这些流程图可以转化为可执行的流程定义,方便理解和管理复杂的业务逻辑。 在提供的压缩包"eclipse3.4解压版带jbpm流程定义插件"中,用户无需安装,仅需解压即可开始...

    jbpm4.4流程图

    流程图的设计完成后,可以编译成jpdl文件,然后在jbpm引擎中部署,以便执行和跟踪。 流程图的每个组成部分都有其特定的意义: 1. **开始事件**:流程的起点,标记流程的启动。 2. **任务**:代表业务操作,可以是...

    JBPM流程引擎设计 工作流资料

    JBPM(Java Business Process Management)是一款开源的工作流管理系统,它为业务流程的建模、部署、执行和监控提供了全面的解决方案。JBPM流程引擎设计是IT领域中的一个重要知识点,尤其对于那些希望理解和实施企业...

    jbpm流程设计器

    1. **图形化界面**:它使用BPMN 2.0(Business Process Model and Notation)标准,提供了一个拖放式的用户界面,使得用户可以通过拖拽不同的活动节点(如任务、决策、事件等)来创建流程图。BPMN是一种国际标准,...

    jbpm 请假流程定义发布项目

    jbpm提供了一个web-based的监控台,可以实时查看流程实例的状态、跟踪流程的执行路径,以及进行任务管理和审计。通过监控台,管理员可以对整个请假流程进行有效的控制和优化。 六、开发和扩展 对于开发者来说,jbpm...

    jbpm业务流程

    5. **监控和管理**:jbpm提供了一个Web管理控制台,用于监控流程实例的状态、查看流程图、跟踪历史记录等。这有助于分析流程执行情况,优化流程设计。 6. **集成能力**:jbpm能够与其他系统如CRM、ERP集成,实现跨...

    JBPM工作流程API和Jar.zip

    通过BPMN,开发者可以清晰地定义流程中的各个活动、决策点、并行分支等,并且这些流程定义可以被JBPM执行引擎理解和执行。 在API方面,JBPM提供了丰富的Java接口和类,例如: 1. `ProcessEngine`:这是与JBPM交互...

    把jbpm流程图显示在jsp页面中

    本主题将详细介绍如何将jbpm流程图显示在JSP(JavaServer Pages)页面上,这涉及到jbpm的图像标签库(taglib)和`web.xml`配置文件的使用。 首先,jbpm提供的图像标签库允许开发者在JSP页面中直接嵌入流程图。`jbpm...

    JBPM工作流实战_流程定义文件的上传处理视频 03

    1. **BPMN元素理解**:包括活动(Activity)、事件(Event)、网关(Gateway)、任务(Task)、泳道(Lane)等,这些都是构建流程图的基本单元,理解它们的功能和用法是创建有效流程定义的基础。 2. **流程定义文件...

    JBPM流程框架源码

    - **流程定义与部署**:使用BPMN 2.0进行流程设计,并将流程模型部署到JBPM服务器。 - **流程执行**:启动流程实例,根据流程定义执行任务。 - **任务管理**:分配、领取、完成任务,支持任务查询和过滤。 - **...

    JBPM5.4工作流 Eclipse流程插件安装

    利用Eclipse流程插件,你可以通过拖放方式设计流程图。插件提供丰富的活动节点,如用户任务、服务任务、子流程等,以及控制流程流向的网关和事件。设计过程中,可以实时预览流程的运行状态,提高设计效率。 **6. ...

    jBPM2-流程图与JBPM API.ppt

    jBPM2 版本中,流程图和JBPM API 是核心组成部分,帮助开发者实现复杂的业务流程自动化。 ### 1. jBPM-jBDL 相关概念 jBPM-jBDL(jBPM Business Definition Language)是一种用来定义业务流程的语言,基于有向图...

    jbpm流程自定义

    jbpm的核心库可以通过Maven或Gradle添加到项目依赖中,然后在代码中调用API来启动、控制和查询流程实例。 4. **流程实例创建与执行**: 使用jbpm提供的Workbench,你可以部署流程定义并创建流程实例。在代码中,...

    jbpm的实现流程图.doc

    在深入理解jbpm的实现流程图之前,我们需要了解两个基础概念:流程定义和流程执行。 一、流程定义的基本概念: 流程定义是业务流程管理的核心部分,它是指将业务流程以图形化的方式进行描述。在jbpm中,流程定义...

    jBPM教学视频(02管理流程定义.zip)

    1. **BPMN 2.0简介**:解释BPMN符号和元素,如活动(任务)、事件、网关、数据对象等,以及它们如何组合成流程图。 2. **jBPM工作台**:介绍jBPM提供的图形化工具,如jbpm-workbench,用于设计和编辑BPMN流程定义,...

    jBPM教学视频(09流程图跟踪.zip)

    本套教学视频重点聚焦于流程图跟踪,旨在帮助学习者深入理解如何在jBPM中监控和管理流程实例的执行情况。以下是关于jBPM和工作流管理系统的详细介绍,以及视频教程可能涵盖的关键知识点: 1. **jBPM基本概念** - ...

    JBPM4.4完整可用审批流程

    JBPM4.4是JBoss Business Process Management (BPM)平台的一个版本,它是一个开源的企业级BPM解决方案,用于设计、执行和管理业务流程。在这个完整的审批流程工程中,我们看到它采用Maven进行项目构建和依赖管理,...

Global site tag (gtag.js) - Google Analytics