`

jbpm-Api的简单使用

阅读更多

准备工作:开启mysql数据库服务并已生成jbpm数据库。

1、建立工程并在工程中建立工作流程,流程图如下:

流程定义的代码如下:

<?xml version="1.0" encoding="UTF-8"?>

 

<process name="leaveHoliday" xmlns="http://jbpm.org/4.3/jpdl">

   <start g="120,0,92,52" name="start1">

      <transition name="to 申请" to="申请"/>

   </start>

   <task g="96,96,92,52" name="申请">

      <transition g="-53,-17" name="to 经理审批" to="经理审批"/>

   </task>

   <decision expr="#{content}" g="120,324,92,52" name="exclusive1">

      <transition g="-47,-17" name="to end1" to="end1"/>

      <transition g="349,348:-53,-17" name="to 老板审批" to="老板审批"/>

   </decision>

   <end g="120,504,48,48" name="end1"/>

   <task g="300,384,92,52" name="老板审批">

      <transition g="351,528:-47,-17" name="to end1" to="end1"/>

   </task>

   <task g="96,216,92,52" name="经理审批">

      <transition g="-83,-17" name="to exclusive1" to="exclusive1"/>

      <transition g="313,243;314,120:-53,-17" name="to 申请" to="申请"/>

   </task>

</process>

 

2、编写测试代码,如下:

package com.tc.test;

 

import java.util.Iterator;

import java.util.List;

 

import org.jbpm.api.Configuration;

import org.jbpm.api.ExecutionService;

import org.jbpm.api.HistoryService;

import org.jbpm.api.ProcessEngine;

import org.jbpm.api.ProcessInstance;

import org.jbpm.api.RepositoryService;

import org.jbpm.api.TaskService;

import org.jbpm.api.history.HistoryProcessInstance;

import org.jbpm.api.task.Task;

 

public class JbpmTest {

 

/**

* @param args

*/

public static void main(String[] args) {

//depaly();

//createExecute();

showHistory();

showExecution();

showTask();

}

/**

* 部署工作流程

*/

public static void depaly(){

ProcessEngine pe=new Configuration().buildProcessEngine();

RepositoryService rs=pe.getRepositoryService();

rs.createDeployment().addResourceFromClasspath("leaveHoliday.jpdl.xml").deploy();

 

}

/**

* 创建工作流程实例

*/

public static void createExecute(){

//leaveHoliday.170001  =null  null

//leaveHoliday-1

ProcessEngine pe=new Configuration().buildProcessEngine();

ExecutionService es=pe.getExecutionService();

ProcessInstance pi=es.startProcessInstanceByKey("leaveHoliday");

System.out.println("pi  id:"+pi.getId()+"  =key:"+pi.getKey()+"  name:"+pi.getName()+"  =ProcessDefinitionId:"+pi.getProcessDefinitionId());

}

/**

* 展示历史流程信息

*/

public static void showHistory(){

ProcessEngine pe=new Configuration().buildProcessEngine();

HistoryService hs=pe.getHistoryService();

 

//获取所有流程历史记录信息并输出

System.out.println("****************history********************");

List<HistoryProcessInstance> hiss=hs.createHistoryProcessInstanceQuery().list();

for (Iterator iterator = hiss.iterator(); iterator.hasNext();) {

HistoryProcessInstance historyProcessInstance = (HistoryProcessInstance) iterator

.next();

//null     =leaveHoliday-1       leaveHoliday.160001active

System.out.println("key:"+historyProcessInstance.getKey()+"      ProcessDefinitionId:"+historyProcessInstance.getProcessDefinitionId()

+"       ProcessInstanceId:"+historyProcessInstance.getProcessInstanceId()+"   state:"+historyProcessInstance.getState());

}

}

/**

* 展示当前引擎中待处理流程

*/

public static void showExecution(){

ProcessEngine pe=new Configuration().buildProcessEngine();

ExecutionService es=pe.getExecutionService();

//获取某个特定的流程实例

ProcessInstance res=es.createProcessInstanceQuery().processInstanceId("leaveHoliday.170001").uniqueResult();

System.out.println("----------------------待执行的流程实例信息----------------------------");

List<ProcessInstance> pl=es.createProcessInstanceQuery().list();

for (Iterator iterator = pl.iterator(); iterator.hasNext();) {

ProcessInstance processInstance = (ProcessInstance) iterator.next();

System.out.println("id:"+processInstance.getId()+"   key : "+processInstance.getKey()+"  name :"+processInstance.getName()

+"     ProcessDefinitionId:"+processInstance.getProcessDefinitionId()+"      state:"+processInstance.getState());

}

}

/**

* 展示所有待处理任务信息

*/

public static void showTask(){

System.out.println("----------------------------task---------------------------------");

ProcessEngine pe=new Configuration().buildProcessEngine();

TaskService ts=pe.getTaskService();

//查找指定流程实例的任务

Task t=ts.createTaskQuery().processInstanceId("leaveHoliday.170001").uniqueResult();

System.out.println(t.getId()+":"+t.getName()+":"+t.getActivityName()+":"+t.getDescription()+":"+t.getExecutionId());

List<Task> ls=ts.createTaskQuery().list();

for (Iterator iterator = ls.iterator(); iterator.hasNext();) {

Task task = (Task) iterator.next();

System.out.println("id:"+task.getId()+"     name:"+task.getName()+"    getActivityName:"

+task.getActivityName()+"      getDescription:"+task.getDescription()+"      executionId:"+task.getExecutionId());

}

}

}

 

 

 

 

 

 

 

 

 

  • 大小: 16.2 KB
0
1
分享到:
评论
3 楼 lichun01 2013-01-21  
masuweng 写道
楼主辛苦了,好贴

我也是刚刚接触jbpm,很多东西也不会! 共同努力吧!
2 楼 jiangwenxian 2013-01-21  
学习中....
1 楼 masuweng 2013-01-21  
楼主辛苦了,好贴

相关推荐

    jbpm-jpdl-suite-3.2.3的安装配置

    1. **jbpm-jpdl.jar**:这是jPDL的核心程序包,包含了流程定义和运行时流程实例管理的API。它可以将流程定义存储为XML文件并在内存中管理执行过程。 2. **jbpm-jpdl-designer-3.1.2.zip**:这是一个基于Eclipse的...

    jbpm-3.1.2.zip_jbpm_jbpm 3.1.2_jbpm-3.1.2.rar_jbpm3.1.2_工作流

    jBpm 提供了一种方式,使得开发者能够用简单而强大的语言来表达业务流程,并将这些流程打包到流程档案(BPMN)中,以便在jBpm运行时服务器上执行。 jBpm 是Java Business Process Management 的缩写,它不仅是一个...

    jbpm-4.3-src.rar_bdf-jbpm4 src _jboss 4.3_jboss jbpm4.3_jbpm-4.3

    jbpm-4.3-src.rar_bdf-jbpm4 src _jboss 4.3_jboss jbpm4.3_jbpm-4.3 这个压缩包文件包含的是JBOSS jBPM4.3的源代码,这是一个用于业务流程管理(BPM)的开源框架。jBPM是一个强大的工具,它提供了流程定义、执行和...

    jbpm-demo-master.zip_DEMO_activiti-master_jbpm-demo_mean3x7

    - jbPM和Activiti的API和概念:如流程定义、流程实例、任务管理、事件监听器等。 - 集成jbPM/Activiti与Spring、Hibernate等Java框架的方法。 - MEAN全栈开发:了解MongoDB的数据模型,Express的路由和中间件,...

    jbpm-4.3.zip

    6. **持久化**:jbpm使用Hibernate进行数据持久化,确保流程实例和相关数据在流程执行过程中得以保存。 7. **可扩展性**:jbpm的设计允许开发者通过插件和自定义组件来扩展其功能,适应不同业务需求。 在jbpm-4.3...

    jBPM-JPDL流程引擎

    此外,jBPM还提供了命令行工具和API,方便开发者进行流程部署、实例管理和监控。 **四、jBPM集成** jBPM可以轻松地与其他Java应用集成,如Spring框架。它还支持与各种数据库系统的连接,以及通过JMS、EJB、Web服务...

    jbpm-jdpl框架简介.pdf

    核心程序包jbpm-jpdl.jar包含了流程定义和运行时环境的操作API。在实际应用中,流程信息需要持久化存储,jPDL利用Hibernate作为对象持久化工具。 为了简化流程设计,jBPM提供了一个名为Graphical Process Designer...

    jBPM-jPDL学习笔记—框架设计简介

    jPDL-identity.jar是jBPM的轻量级扩展,实现了基础的用户认证和权限管理功能,适用于需求简单的应用场景。另外,jBPM Console是一个基于JSF技术的Web应用程序,用于监控jPDL平台的执行情况,包括数据库监控、流程...

    jbpm-4.4开发文档

    该CHM文件应该详细阐述了jbpm 4.4的API使用方法,包括各个服务接口的调用示例,以及如何进行流程定义的编排。开发者可以通过这个文档深入理解jbpm的编程模型,学习如何利用API实现业务逻辑。 ### 4. JBPM入门手册 ...

    jbpm-7.18.0.Final-examples.zip

    jbpm-7.18.0.Final-examples.zip 是一个包含 jBPM 7 最新版本示例的压缩包,旨在帮助开发者更好地理解和学习如何使用 jBPM 进行业务流程管理(Business Process Management)的开发。jBPM 是一个开源的工作流和业务...

    jBPM-4.0中文开发指南

    本指南将深入探讨jBPM 4.0的各个方面,帮助开发者掌握如何在实际项目中有效地使用这个强大的工具。 ### 1. jBPM 4.0核心概念 - **流程定义**: 使用 BPMN(Business Process Model and Notation)标准进行流程建模...

    jBPM-4.3_develpor_manul.rar_jbpm

    7. **持久化**:jbPM使用JPA(Java Persistence API)进行数据持久化,确保流程实例和任务状态在系统重启后能够恢复。手册将阐述如何配置和使用这个功能。 8. **监控与调试**:jbPM提供了丰富的监控工具,如流程...

    jBPM2-流程图与JBPM API.ppt

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

    JBPM-v3.2-userguide

    JBPM核心库包含了执行引擎、API接口和数据持久化等关键组件,是整个系统运行的基础。 #### 1.6 身份组件 JBPM的身份组件负责处理用户认证和授权,确保流程执行的安全性。 #### 1.7 Job Executor Job Executor是一...

    jBPM-4.3开发手册.pdf

    - **使用**:介绍了如何在Spring环境中使用jBPM。 - **测试**:提供了关于如何测试Spring集成的建议。 #### 十六、Signavio web建模器 - **安装**:描述了如何安装和配置Signavio web建模器。 - **配置**:提供了...

    jbpm4.4-demo

    在深入研究jbpm4.4-demo时,你将学习到如何使用jbpm提供的API和工作流服务,如流程实例的启动、任务的领取和完成、流程变量的获取和修改等。同时,你还会接触到如何利用jbpm的工作流引擎进行流程的动态改变和扩展,...

    jbpm-rest:jBPM 的简单 ReST 接口

    `jbpm-rest` 是一个基于 jBPM(Java Business Process Management)的简单 REST(Representational State Transfer)接口实现。jBPM 是一个开源的工作流和业务流程管理框架,它提供了强大的 BPMN 2.0 支持,允许...

    jbpm6.5jar 包

    - jBPM BPMN2-6.5.0.Final.jar:这个文件包含了BPMN2的解析和执行引擎,允许开发者使用图形化的流程设计工具来定义复杂的业务流程。 2. **工作流执行**: - jbpm-flow-6.5.0.Final.jar:这是核心流程执行库,包含...

    jbpm-4.4实用教材helloword.txt

    本教材通过一个简单的HelloWorld示例,介绍了JBPM的基本概念、JPDL语言的使用以及如何进行环境搭建和配置。通过这些基础知识的学习,初学者可以快速入门JBPM,并能够基于此进行更深入的研究和实践。

Global site tag (gtag.js) - Google Analytics