`
天空不空
  • 浏览: 94734 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

JBPM介绍

    博客分类:
  • Java
阅读更多

1.      jBPM 的简单介绍
JBOSS jBPM是一个灵活的、可扩展的工作流管理系统。JBOSS jBPM拥有直观的流程语言,用任务、异步的等待状态、定时器、自动化动作…等来表示业务流程图,把这些操作绑定在一起,JBOSS jBPM就拥有了非常强大和可扩展的控制流机制。
JBOSS jBPM只有最小的依赖,可以象使用java库一样非常容易的使用它。另外,也可以通过把它部署在J2EE集群应用服务器中,用在吞吐量极为关键的环境中。
JBOSS jBPM可被配置为任何数据库,并且可以部署到任何应用服务器。
   参考
1.1 概述
核心工作流和BPM功能被打包为一个简单的java库,这个库包括一个存储到数据库、从数据库更新和获取流程信息的服务。
                       图 1 .1 JBOSS jBPM组件概观
1.2 JBOSS jBPM入门套件
入门套件是一个包含了所有jBPM组件的下载包,包括:
l        Jbpm-server ,一个预配置好的jboss应用服务器。
l        Jbpm-designer ,图形化设计jBPM流程的eclipse插件。
l        Jbpm-db ,jBPM数据库兼容包(见下文)。
l        Jbpm ,核心jbpm组件,包括库和本指南。
l        Jbpm-bpel ,JBOSS jBPM BPEL扩展参考。
预配置好的JBOSS应用服务器安装了下列组件:
l        核心的jBPM 组件 ,被打包为了一个服务档案。
l        一个包括jBPM 库表的集成数据库 :默认的hypersonic数据库包含了jBPM表,另外还包含一个流程。
l        jBPM 控制台web 应用程序 ,可以由流程参与者使用,也可以由jBPM管理员使用。
l        jBPM 调度程序 ,用于定时器执行。调度程序在入门套件中被配置为一个servlet,这个servlet将产生一个线程来监视和执行定时器。
l        jBPM 命令执行器 ,用于命令的异步执行。命令执行器也被配置为一个servlet,这个servlet将产生一个线程来监视和执行命令。
l        一个流程实例 ,已经被部署到了jBPM数据库中。
1.3 JBOSS jBPM图形化流程设计器
JBOSS jBPM还包括一个图形化设计工具,这个设计器是一个创作业务流程的图形化工具。
JBOSS jBPM图形化流程设计器是一个eclipse插件,可以独立安装的设计器已经在开发目标中。
图形化设计器非常重要的特性是它同时支持业务分析者和技术开发者,这使的业务流程建模可以平滑的转换到实际实现。
插件可以被用作本地更新设置(普通的zip文件),通过标准的eclipse软件更新机制安装。另外还有一个包,你可以直接把它解压到eclipse主目录里。
1.4 JBOSS jBPM核心组件
JBOSS jBPM核心组件是普通java(J2SE)软件,用来管理流程定义和流程实例执行的运行时环境。
JBOSS jBPM是一个java库,因此,它可以被用在任何java环境,例如web应用、swing应用、EJB、webservice…等,jBPM库还可以 被打包为无状态会话EJB,这允许被作为集群部署,并且适用于极高的吞吐量。无状态会话EJB按照J2EE1.3规范编写,因此它可以部署到任何应用服务 器。
JBOSS jBPM核心组件被打包为一个简单的java库文件,依赖于你所使用的功能,jbpm-3.0.jar库对第三方库有些依赖,如hibernate、dom4j和其他,这些在“第5章 部署”TODO中有清晰的说明。
为了持久化,jBPM内部使用hibernate,除了传统的O/R影射之外,hibernate还解决了不同数据库之间的SQL方言(dialect)问题,使jBPM可以方便的在当前所有数据库上移植。
JBOSS jPBM API可以从你的项目中任何定制的java软件中访问,例如你的web应用、你的EJB、你的webservice组件、你的消息驱动bean,或者其他java组件。
1.5 JBOSS jBPM控制台web应用程序
jBPM控制台web应用程序服务于两个目的。首先,它作为与由流程执行所产生的运行时任务相交互的一个重要的用户接口;其次,它是一个管理和监控控制台,允许检查和操纵运行时实例。
1.6 JBOSS jBPM身份组件
JBOSS jBPM可以与任何包含用户或其他组织信息目录的公司集成,但是对于没有组织信息组件可用的项目,JBOSS jBPM包含了它自己的组件。身份组件所使用的模型比传统的servlet、ejb和portlet(译者注:portlet是portal中最重要的组 件,与servlet类似,portlet是部署在容器中用来生成动态内容的web组件。)模型更丰富。
更多信息,请看“11.11 身份组件”。TODO
1.7 JBOSS jBPM调度程序
JBOSS jBPM调度程序是一个用来监视和执行定时器的组件,它在流程执行期间被调度。
定时器组件软件被打包进核心的jbpm库,但是它需要被部署进下列环境之一:要么配置调度程序servlet去产生监视线程,要么用调度程序的main方法启动一个独立的JVM。
1.8 JBOSS jBPM数据库兼容包
JBOSS jBPM数据库兼容包是一个包含能使jBPM在你所选择的数据库上运行的所有信息、驱动程序和脚本的下载包。

2.      jBPMmyeclipse 的冲突
当eclipse安装了myeclipsejBPM 时候,可能有冲突,具体表现在jBPM 的流程设计器不能在eclipse中使用。
 
3.      Hibernate连接mysql 数据库的一般参数
下面的配置参数,根据需要可以修改:
jbpmtest mysql 中的schema的名字;
GBK 是字符集,可以根据需要修改;
username=root mysql 数据库的用户名是root
password=mysql mysql 数据库的用户密码是mysql
 
hibernate.dialect = org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class = com.mysql.jdbc.Driver
hibernate.connection.url= jdbc : mysql://localhost/jbpmtest?useUnicode=true&characterEncoding=GBK
hibernate.connection.username = root
hibernate.connection.password = mysql
 
hibernate.show_sql = true
hibernate.c3p0.min_size= 1
hibernate.c3p0.max_size= 3
 
4.      Hibernate连接Oracle数据库的一般参数
hibernate.dialect = org.hibernate.dialect.Oracle9Dialect
hibernate.connection.driver_class= oracle.jdbc.driver.OracleDriver
hibernate.connection.url = jdbc:oracle:thin:@ localhost :1521:orcl hibernate.connection.username = jbpm
hibernate.connection.password = jbpm
 
5.      jBPM 创建数据库表等内容
5.1.             mysql 创建数据库以及数据内容
JbpmSessionFactory.buildJbpmSessionFactory ( ).getJbpmSchema().dropSchema();
JbpmSessionFactory.buildJbpmSessionFactory ( ).getJbpmSchema().createSchema();
2个语针对 mysq 有效.
5.2.             oralce 创建数据库以及数据内容
JbpmSessionFactory.buildJbpmSessionFactory ( ).getJbpmSchema().dropSchema();
JbpmSessionFactory.buildJbpmSessionFactory ( ).getJbpmSchema().createSchema();
上面的语句对oralce 无效。
模型目录jBPM\jbpm_database\jBPM_oralce10g.pdm 是jBPMOralce 模型,包含对应的Sequence的信息.
需要在数据库中创建 Sequence name=hibernate_sequence
5.3.             流程信息保存到数据库
JbpmSessionFactory  factory =  JbpmSessionFactory.buildJbpmSessionFactory();
        JbpmSession session = factory.openJbpmSession ();
        GraphSession graphSession =  session.getGraphSession ();
        session.beginTransaction ();
        
        /// new ProcessDefinition 实例
        ProcessDefinition myProcessDefinition = null;
    ProcessInstance processInstance = new ProcessInstance (processDefinition);
      processInstance.getContextInstance ().setVariable("myvar","xxx");
        ///
        graphSession.saveProcessDefinition (myProcessDefinition);
        session.commitTransaction ();
session.close ( );
jBPMHibernate,MySQL 的使用中会遇到字符集的问题.
需要注意几个地方。
5.4.             Mysql 安装过程指定字符集
   Mysql 安装过程中指定相应的默认字符集是GBK
5.5.             Hibernate.properties 文件中的字符集设置
hibernate.connection.url=jdbc:mysql://localhost/jbpmtest?useUnicode=true&characterEncoding=GBK
5.6.             hibernate.cfg.xml 文件中的字符集设置
<property name="hibernate.connection.url">jdbc:mysql://192.168.1.2/jbpmtest</property>
5.7.             MySQL 的配置文件的修改:
   my.ini 中 default-character-set=GBK
   注意有2处需要修改
 
6.      为流程定义变量
分成3种流程变量
全局变量(全局流程变量)
全局临时变量(全局流程临时变量)
局部变量(流程某个接点内有效的变量)
@see org.jbpm.context.exe.ContextInstance














目前还没有使用过局部变量(流程某个接点内有效的变量)
流程变量的定义
6.1.             流程变量的类型
·         java.lang.String
·         java.lang.Boolean
·         java.lang.Character
·         java.lang.Float
·         java.lang.Double
·         java.lang.Long
·         java.lang.Byte
·         java.lang.Short
·         java.lang.Integer
·         java.util.Date
·         byte[]
·         java.io.Serializable
·         classes that are persistable with hibernate
 所有基本类型的包裹类型,以及实现了Serializable 的类型都可以作为流程参数变量使用,注意参数类不能是一个类的内部类或者属性类(除非包含参数类的类实现了Serializable 接口)
参考 org.jbpm.context.exe.VariableInstance









6.2.             流程变量的使用
l         变量的定义和获取
void ContextInstance.setVariable(String variableName, Object value);
void ContextInstance.setVariable(String variableName, Object value, Token token);
Object ContextInstance.getVariable (String variableName);
Object ContextInstance.getVariable (String variableName, Token token);
l        Variables can be deleted with
ContextInstance.deleteVariable ( String variableName);
ContextInstance.deleteVariable ( String variableName, Token token);
 
6.3.             Variable lifetime
    一个变量在被定义后,在变量从ContextInstance 删除前,都可以被访问。当变量被删除后,去获取该变量将返回为空。
6.4.             自定义类的实例作为流程变量
   如果一个类的实例要作为流程变量使用,该类需要实现java.io.Serializable 接口,并且定义序列化版本.
 
//一个可以作为流程变量使用的类
class Wdz implements Serializable{
    // 为类指定序列化版本号
    private static final long serialVersionUID = 1L;    
       private String name="wdz";
       private int age=10;
       public String toString(){
              return "name="+name+",age="+age;    
       }    
}
上面的例子中,如果把类Wdz 作为类WdzParent 内部类使用,然后当成流程变量使用,那类WdzParent 必须 也实现Serializable 接口,否则会有问题.
6.5.             Transient variables
流程的历史变量是不能持久化的,作用范围是对整个流程全局有效的。
ContextInstance 类内部,采用的是一个Map来存储TransientVariable 的信息
参考代码
org.jbpm.context.exe.ContextInstance 的源代码。
主要的相关方法
public void deleteTransientVariable (java.lang.String name)
public void setTransientVariable (java.lang.String name,
                                 java.lang.Object  value)
public java.lang.Object getTransientVariable( java.lang.String  name)
 
6.6.             Variables overloading
 当一个变量和流实例关联(变量名字=”wdz”,value =”test”) ,如果在设置一个变量
(变量名字=”wdz”,value = new Integer(10)) , 那最后变量(变量名字=”wdz )的值是Integer(10)。
这称之为overload.
 
6.7.             Variables overriding
 如果父流程有变量A(值=”value1”), 子流程又定义了变量A值=”value2”, 那在子流程范围内,获取变量A的值,那结果是值=”value2” 。这是遵循一般语言的局部变量在它的局部范围内override上级变量。
 
6.8.             流程变量的持久化
它依赖于流程实例的持久化,非TransientVariable 流程实例的持久化一起被保存。
保存在数据表jbpm_variableinstance
参考 org.jbpm.context.exe.VariableInstance









6.9.             Customizing variable persistence (可以进一步了解)
User java object <---> converter <--->  variable instance
也就是自定义类的持久化需要定义自己的 converter 和变量实例类
converter 和变量实例类需要继承 org.jbpm.context.exe.VariableInstance
converter 需要实现 org.jbpm.context.exe.Converter 接口

 

 

 

分享到:
评论

相关推荐

    jbpm介绍jbpm介绍jbpm介绍jbpm介绍jbpm介绍

    ### jBPM 知识点详解 #### 一、jBPM 概述 jBPM 是一款开源的、纯 Java 的、轻量级的工作流引擎,它支持多种可执行流程语言,为商业流程管理(BPM)提供了一个强大的平台。jBPM 可以在任何 JavaEE 应用服务器或配置...

    jbpm介绍、jbpm开发指南

    在《jbpm介绍》中,你可能会学习到以下关键知识点: 1. **流程建模**:jbpm支持BPMN 2.0标准,这是一种广泛接受的业务流程建模语言,允许开发者通过图形化方式设计复杂的业务流程。你可以了解到如何使用工具如...

    jboss --JBPM介绍及应用

    ### jBoss --JBPM介绍及应用 #### 一、引言与概述 JBoss jBPM(Job Business Process Management)是JBoss提供的一个强大的工作流引擎,它支持业务流程管理和自动化,尤其适用于Java环境中开发WS(Web Services)...

    01_JBPM介绍.exe

    01_JBPM介绍.exe

    jbpm介绍ppt

    【JBPM介绍】 JBPM(JBoss Business Process Management)是一个开源的工作流管理系统,由Red Hat公司维护,主要用于实现业务流程的自动化和管理。它提供了一种直观的流程语言,允许用户通过任务、异步等待状态、...

    jbpm介绍性PPT

    本文将详细介绍jbpm以及工作流的基本概念、特点和管理系统。 工作流的起源可以追溯到生产组织和办公自动化领域,其初衷是为了提高工作效率、降低成本,通过将工作分解、按规则和流程执行并进行监控。随着并行工程和...

    jbpm4.3视频教程+代码

    1. **Jbpm介绍**:介绍Jbpm的起源、目标和在业务流程管理(BPM)领域的地位,解释为何选择Jbpm4.3作为开发工具。 2. **安装与配置**:详述如何在开发环境中安装Jbpm4.3,包括所需的Java环境、数据库设置以及Eclipse ...

    jbpm白皮书 介绍jbpm 入门

    ### jBPM 白皮书:介绍 jBPM 入门 #### 一、引言与背景 在当今数字化转型的时代背景下,业务流程管理(Business Process Management,简称 BPM)成为了企业提升效率、优化流程的关键技术之一。BPM 提供了一种程序...

    jbpm数据库表介绍

    jbpm 数据库表介绍 jbpm 是一个基于 Java 的 workflow 引擎,用于管理和执行业务流程。jbpm 需要持久化流程部署、流程实例、任务、用户认证等信息,于是 jbpm 设计了一系列的数据库表来存储这些信息。在 jbpm 4.4 ...

    jbpm开发指南--jbpm全面介绍

    通过查看JBPM的表,我们知道要实现流程监控功能就是把JBPM当中的JBPM_PROCESSDEFINITION(已发布的流程表),JBPM_PROCESSINSTANCE(流程实例表),JBPM_TASKINSTANCE(流程产生的任务实例表)这三张表串联起来就可以...

    jbpm4.4用户手册中文版

    1. **jbpm介绍**:首先,手册会介绍jbpm的核心概念和架构,包括工作流引擎、任务服务、规则引擎(可能基于Drools)以及持久化机制。此外,还会解释jbpm如何支持BPMN 2.0标准,使得流程定义更符合业界规范。 2. **...

    JBPM视屏教程共9节 jBPM 4视频教程05发起新流程

    1. **jBPM介绍**:讲解jBPM的基本概念,包括它的功能、架构以及在企业级应用中的作用。 2. **流程建模**:教授如何使用jBPM的图形化工具来设计业务流程模型,包括活动、任务、决策节点等元素的使用。 3. **流程部署*...

    oa_java_system.rar_jbpm_jbpm-demo_oa java_公文

    **JBPM介绍** JBPM是一款非常成熟且灵活的BPM(Business Process Management)解决方案,它允许开发者通过定义工作流模型来实现复杂的业务流程。JBPM的核心特性包括流程定义、流程实例管理、任务管理、规则集成、...

    jbpm4jbpm5

    jbpm4.3表结构和表字段说明文档通常会详细介绍jbpm4中涉及的数据库表,包括实体如任务实例(TaskInstance)、流程实例(ProcessInstance)、工作项(WorkItem)等的表结构和字段。这些信息对于开发者来说至关重要,...

    JBPM4.4用户手册.doc

    手册内容涵盖了许可证、下载、源码获取、jBPM介绍、文档内容、升级指南以及问题报告等基础知识。 **1. jBPM简介** jBPM是一个可扩展且灵活的流程引擎,能够独立运行或嵌入Java应用程序中。它支持持久执行模式,即...

    Business Process Management with JBoss jBPM

    #### 三、JBoss jBPM介绍 JBoss jBPM是JBoss中间件套件中的一个开源业务流程管理系统,它提供了强大的功能来支持整个BPM生命周期,包括设计、执行和监控业务流程。jBPM的主要特点包括: - **流程建模**:提供图形...

    JBoss+jBPM+jPDL用户开发手册_3.2.3

    1. **jBPM介绍**:首先,手册会介绍jBPM的核心概念,包括工作流引擎、任务服务、事件处理、规则集成等,帮助读者理解jBPM的架构和工作原理。 2. **jPDL语法**:手册详细讲解了jPDL的语法规则,包括流程定义的基本...

    JBPM各种文档

    1. **jbPM介绍**:jbPM的基本概念、架构和设计原理,以及它在业务流程管理中的作用。理解jbPM如何通过BPMN(Business Process Modeling Notation)模型来表达复杂的业务流程。 2. **安装与配置**:jbPM的下载、安装...

    jbpm工作流引擎介绍

    在`jbpm工作流引擎介绍.ppt`文件中,可能包含了对这些步骤的详细图解,展示了每个步骤如何在jbpm中建模,以及流程实例在不同阶段的变化。此外,还可能涵盖了如何配置工作流规则、如何定义和分配任务,以及如何使用...

Global site tag (gtag.js) - Google Analytics