JBPM简介

  1. 1. JBPM简介

JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工做流、服务协做等领域的一个开源的、灵活的、易扩展的基于java实现的流程业务处理框架(Business Process Management)。jBPM是公开源代码项目,它使用要遵循 Apache License。 支撑企业的流程性业务应用:解释业务规则,使得协做自动化java

2.JBPM最大特点web

  就是它的商务逻辑定义没有采用目前的一些规范,如WfMC´s XPDL, BPML, ebXML, BPEL4WS等,而是采用了它本身定义的JBoss jBPM Process definition language (jPdl)。jPdl认为一个商务流程能够被看做是一个UML状态图。jPdl就是详细定义了这个状态图的每一个部分,如起始、结束状态,状态之间的转换,过图型化的流程定义,直观地描述业务流程。数据库

jBPM的另外一个特点是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据存储层解决方案,只要是 Hibernate 支持的数据库, jBPM 也就支持。经过Hibernate,jBPM将数据的管理职能分离出去,本身专一于商务逻辑的处理。apache

3.JBPM带来的益处api

实现了无纸化的工做模式; 过程可监控:便于对执行过程的跟踪和监控 数据可管理:便于对数据进行检索、分析 可靠性:减小人-人交互的主观错误的机率 4.JBPM常见应用领域 行政管理:行政、事业单位、大中型(国有)企业 产品研发和制造:用于对整个研发、生产制造过程的管理和调度 电子商务:订单处理 其余 如大型内容管理系统的多步审核 5.JBPM常见场景 公文流转、行政审批、订单处理、产品研发、制造过程 其余须要多个角色协做、多步完成的活动浏览器

6.JBPM模型说明tomcat

加载流程定义: 定义工具能够系统提供,也能够只是读取定义结果 启动流程: 启动选定的流程,建立流程实例 办理任务(流程的每一步): 执行流程的每一个步骤(不必定都须要人参与:自动任务节点) 记录流程的状态: 对状态的管理是工做流引擎的主要职责数据结构

7.JBPM主要概念oracle

流程定义:预先定义的业务流转逻辑 流程实例:业务的一次实际流转过程 参与者:任务的执行者 活动(任务):组成流程定义的节点 活动实例:组成流程实例的元素 流转:从一个节点到另外一个节点这一行为 工做列表:当前须要办理的任务集合 工做流引擎:工做流的核心组件,对流程实例、任务实例以及其状态进行管理框架

8.JBPM套件的组成

jPDL Designer:流程定义设计器,流程建模工具 jPDL Library:流程执行引擎 WebConsole:参与者和流程执行环境的交互界面,流程运行期间的监控工具

9.使用jBPM开发工做流的通常流程

1) jBPM的运行须要数据库的支持,所以系统设计时要选定所用数据库。只要是Hibernate支持的数据库,jBPM就支持。数据库的初始化能够由jBPM自动完成,也能够经过ant generate.ddl任务生成SQL语句,在jBPM外部本身建立所需的表。

  2) 使用jPdl定义工做流,生成processdinination.xml文件。能够采用GUI工具gpdl,但目前只支持jBPM1.0,并且bug不少。XML的DTD定义文件在jBPM下载包中。

  3) Ant create.pde生成pde包的工做目录。将processdinination.xml文件和其它须要的文件放在指定的目录下,使用ant build.precess.archives生成pde包。pde包的格式采用jar。

  4) 更改pde工做目录/src/config/jbpm.properties的相关属性,主要是设定相关的数据库链接信息。注意要将数据库的JDBC驱动放在pde工做目录的lib目录下。

  5) Ant deploy.process.archives将刚才生成的pde部署到数据库。实际上就是向数据库插入一些相关数据。

6) 利用jBPM API函数开发相应的工做流程。

10.jbpm表结构介绍

10.1资源库和运行时表结构

JBPM4_DEPLOYMENT,JBPM4_DEPLOYPROP,JBPM4_LOB存储流程定义相关的部署信息

JBPM4_EXECUTION主要是存放JBPM4的执行信息,Execution机制代替了JBPM3的Token机制

JBPM4_TASK存放须要人来完成的Activities(活动),须要人来参与完成的Activity 被称为Task

JBPM4_PARTICIPATION参与者表,存放参与者信息,参与者的种类有Candidate、Client、Owner、Replaced Assignee和Viewer。而具体的参与者既能够是单一用户,也能够是用户组

JBPM4_SWIMLANE泳道表。SwimLane是一种Runtime Process Role。经过SwimLane,多个Task能够一次分配到同一Actor身上

JBPM4_JOB 存放的是Timer 的定义

JBPM4_VARIABLE 存的是进行时的临时变量。

10.2历史数据库表结构

JBPM4_HIST_PROCINST 与JBPM4_HIST_ACTINST 分别存放Process Instance和Activity Instance的历史记录

JBPM4_HIST_DETAIL 保存 Variable的变动记录

JBPM4_HIST_VAR 保存历史的变量 JBPM4_HIST_TASK Task的历史信息

身份认证表结构

JBPM4_ID_GROUP ,JBPM_ID_MEMBERSHIP ,JBPM4_ID_USER 这三张表很常见,基本的权限控制,关于用户认证方面建议仍是本身开发一套,组件自带的功能太简单,使用中有不少需求难以知足

除了前面述及的17张表外,还有一张引擎参数表,这是一张独立的表,在此没有单独列出

11.GPD(图形化流程设计器) for Eclipse插件安装

  • · 帮助-->软件更新(Help --> Software Updates)
  • · 选择“有效软件”标签(Available Software)
  • · 点击添加站点(Add Site)
  • · 在对话框里添加站点击(Add Site)对话框,点击压缩包(Archive)
  • · 找到gpd/jbpm-gpd-site.zip
  • · 点击“肯定”(ok)自动回到“软件更新和扩展”对话框
  • · 选择jPDL 4 流程设计器更新站点(jPDL 4 GPD Update Site)
  • · 点击安装(Install)
  • · 在安装(Install)对话框中,选择Flow Common Feature 和jPDL 4 Feature
  • · 点击下一步(Next)
  • · 选择接受(Accept),并点完成(Finish)
  • · 重启Eclipse

12. 基于Web的Signavio流程设计器

jBPM3开始,这个著名的开源项目就由于没有基于浏览器的图形化流程设计器而饱受用户诟病,没错,进入了Web时代,流程设计器没有理由老是停留在CS(Client Server)阶段。有不少公司认识到了这一点,所以市场上的jBPM Web流程设计器并很多见,但它们或不开放源代码、或基于特定的业务、或存在支持升级问题。总之,没有RedHat JBoss jBPM的官方认证和支持,您用着总会不放心,不是吗?

如今您不用担忧了。从Version 4.1开始,jBPM官方发布包绑定了一个彻底开源的基于Web的BPM流程设计器,代号为Signavio。

12.1jBPM Web流程设计器简介

Signavio Web流程建模工具是和JBoss jBPM团队、德国的Signavio公司和Hasso Plattner Institute(HPI软件工程研究所)紧密协做的成果。Signavio项目基于Web建模工具Oryx,Oryx是由HPI主持的开源项目。HPI和Signavio公司都会持续地在Oryx项目和Signavio项目中投入人员和资金的支持。关于这两个项目,您能够在Google Code上找到:http://code.google.com/p/signavio-oryx-initiative/

使用Signavio可让业务流程分析人员经过浏览器创建业务流程模型。Signavio输出的流程文件格式正是jPDL。这意味着Signavio设计出的流程定义文件能够直接导入到Eclipse GPD,反之亦然。流程定义文件会保存在硬盘上,位于 $jbpm_home/signavio-repository中,这个参数在安装脚本中有默认值。

下图是Signavio流程设计器的使用界面,它能很好地支持IE和Firefox浏览器。

注意:Signavio是基于web的业务流程建模工具,绑定在jBPM中,是100%开源的(基于MIT开放源代码许可证)。同时,Signavio公司也提供商业版的同名工具,毫无疑问,商业版的Signavio有更多的功能。

12.2独立安装Signavio

复制 $jbpm_home/install/src/signavio/jbpmeditor.war 到您的目标Web容器中。

12.3配置Signavio

Signavio配置很简单,大多数参数在web.xml中修改便可,您能够在 jbpmeditor.war/WEB-INF/ 目录中找到。其中最重要的是 fileSystemRootDirectory 参数。这个参数的值必须为一个物理上存在的本地目录,它指定了流程定义文件(即*.jpdl.xml 文件)存储的位置,如下是此参数的web.xml片断:

12.3 Signavio缺点:

1:不支持中文。

2:只能用firefox打开页面。

13.在目录中添加jPDL4模式

  • · 点击窗口-->属性(Windows-->Preferences)
  • · 选择XML-->目录(XML-->CataLog)
  • · 点击添加(Add)
  • · 添加XML目录(Add XML Catalog Entry)的窗口打开
  • · 点击map-icon的图标下面的按钮并选择文件系统(File System)
  • · 在打开的对话框中,选择jBPM安装目录下src文件夹中jpdl.xsd文件
  • · 点击打开(Open)而且关闭全部的对话框

14.ssh+jbpm整合

  • · 加入jbpm.jar包, 文件位置在jbpm发布包根目录下
    • 加入jbpm配置文件,文件位置在jbpm发布包根目录/examples/src下:
    • · Spring配置文件加入如下代码:
    • · Hibernate配置文件加入如下代码: 第一次执行时需放开第一行代码 以便在目标数据库中建立jBPM 表结构;建立以后需手动注释第一行代码; 或者在jbpm-4.4/install目录下执行cmd命令: ant create.jbpm.schema 。

15.部署到tomcat6.0

需删除tomcat6.0 lib目录下el-api.jar 包,由于会和jbpm的包产生冲突。而后导入jbpm发布包lib目录下的如下三个包:

Ok,启动服务。

16.示例项目

TestJBPM是一个简单的jbpm+ssh+oracle10g+tomcat6整合项目,实现了一个简单的请假流程。工程由myeclipse打开。

流程图以下:

部署前需修改jbpm.hibernate.cfg.xml文件,改成您本身的数据库链接方式

导入库文件 testJbpm.dmp

apache-tomcat-6.0.20 下有部署好的Signavio流程设计器,启动tomcat前,须要在c盘下建立test文件夹。

17JBPM工做流小结

通过两周的学习和讨论,咱们了解了工做流的概念、并逐步分析和熟悉了jbpm工做流的特色和应用,现对jbpm工做流总结以下。 17.1关于JBPM工做流 17.1.1工做流 工做流是一项分离业务操做和系统流程的技术。工做流由实体(Entity)、参与者(Participant)、流程定义(Flow Definition)、工做流引擎(Engine) 四部分组成。 实体是工做流的主体,是须要随着工做流一块儿流动的物件(Object)。例如,在一个采购申请批准流程中,实体就是采购申请单;在公文审批流程中,实体就是公文。 参与者是各个处理步骤中的责任人,多是人,也多是某个职能部门,还多是某个自动化的设备; 流程定义是预约义的工做步骤,它规定了实体流动的路线。它多是彻底定义的,即对每种可能的状况都能彻底肯定下一个参与者,也多是不彻底定义的,须要参与者根据状况决定下一个参与者; 工做流引擎是驱动实体按流程定义从一个参与者流向下一个参与者的机制 前三个要素是静态的,而第四个要素是动态的,它将前三者结合起来,是工做流的核心组成元素。 17.1.2JBPM

jBPM,全称是Java Business Process Management,是一种基于J2EE的轻量级工做流管理系统。 jBPM的一个特点是采用了它本身定义的JBoss jBPM Process definition language (jPdl)。jPdl认为一个商务流程能够被看做是一个UML状态图。jPdl就是详细定义了这个状态图的每一个部分,如起始、结束状态,状态之间的转换等。 jBPM的另外一个特点是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据持久层解决方案。经过Hibernate,jBPM将数据的管理职能分离出去,本身专一于商务逻辑的处理。 17.2JBPM工做流的应用分析 17.2.1jbpm工做流步骤: 一、加载(发布)流程定义 这个意思是,咱们经过jbpm的designer插件,或者是用其余工具,制定出processDefinition ,而后将其加载到应用中的过程。这个加载能够是写入内存中,或者是直接写入数据库等。 二、启动流程 建立流程实例的过程。具体建立实例的方法有多种,可根据本身的须要自行选择。 三、处理任务 在流程流转的过程当中,JBPM引擎会为咱们生成任务的实例,咱们就须要针对这些任务实例来进行处理,而后结束这些任务实例,并推进流程的流转。 四、记录流程的相关状态 记录流程状态这点包括且不限于如下内容: 1)流程实例的开启 2)任务实例的建立 3)任务实例的开始执行 4)任务实例的结束 5)流程实例的结束 17.2.2使用jBPM的优点 将业务流程复杂的系统结构清晰话,提供系统运行时的灵活性 一、解耦系统业务流程 流程独立,可使用工具定义和建模,利于跟踪、监控、管理、调度、优化和重整 二、提升系统的灵活性 系统流程定义生产环境的修改和调整,用户和外部工具交互,任务的动态分派 17.2.3使用jBPM时的问题 一、对当前任务的条件查询 jBPM不提供灵活进行条件查询的api,若是须要,能够自定义hibernate查询,从jbpm相应的数据表中查询任务数据。但须要对jBPM机制比较了解,并且有些复杂条件难以用jBPM自己的信息查到。 二、当前任务的分页 在上一问题的基础上,使用hibernate分页。 三、统计各个流程实例的状态 能够经过流程实例,在jbpm系统表中查询,也能够在业务表的相应数据上加上状态列来统计。前一个比较麻烦,后一个比较直观,但不会因使用jBMP而使用工做量减小。 四、工做流数据与业务数据结合 通常经过在流程实例中添加相应的一笔数据的标识做为变量来关联。也能够有针对性的扩展jbpm的系统表来实现与业务的关联性。 五、修改流程后的历史数据兼容性问题 Jbpm工做流流程定义有版本的概念,修改流程后要从新发布,与旧的流程不是一个同一个版本。系统能够区别开新旧流程来。 17.3结论 一、工做量 初步的结论是:引入工做流技术不会明显减小系统开发工做量。相反,在通常状况下,会增长一部分工做量。若是项目流程比较少,并且比较固定,则使用工做流技术会明显增长开发工做量。若是项目流程多,并且比较复杂,则使用工做流技术会使项目结构层次更加清晰、更具备扩展性,根据需求有可能要修改和扩展示有开源工做流类库与数据库结构,也会增长额外的工做量。但权衡之下,利大于弊。 二、关于业务数据与jBPM自己的数据 理论上说,若是使用jBPM,能够将全部业务数据放到jBPM的context中管理,再也不维护业务数据表。但这样的结果是在流程以外的环境(好比在统计报表中)中没法容易的获得业务数据。因此通常会创建业务数据表,我不使用工做流时同样,而后让jBMP从业务数据表中获得业务数据,而不在jBPM中保留业务数据。所以,使用jBPM后,在业务数据方面基本不会减小工做 三、工做流学习成本 工做流自己的概念较复杂,使用jbpm,须要学习其工做流的定义和结构,流程定义工具和语言、了解其数据结构。与其它工做流产品(如Shark)相比,jBPM对Java开发人员来讲学习较低成本,在作流程复杂的项目时,学习成本能够接受。 四、系统用户和角色与工做流整合 流程的流转和任务的分派完成,都是用户在控制,因此须要将用户、角色和权限整合到jbpm工做流中。 五、系统业务的整合和调整 将流程抽取后,本来连续的业务处理变成一个个的任务节点。须要在每一个业务相关处理处添加工做流流程控制、在每一个节点处实现相关的业务和流程切入点。 六、适用范围 Jbpm工做流适用于: 一、项目流程比较多,流程复杂的项目。 二、系统运行和维护、升级时,流程可能须要修改、调整和跟踪、控制的项目。

相关文章
相关标签/搜索