Jbpm工作流(一)

了解一下什么是Jbpm及特点。

jBPM,全称是Java Business Process
Management,是一种基于J2EE的轻量级工作流管理系统。jBPM是公开源代码项目,它使用要遵循 Apache
License。jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss
jBPM。

jBPM最大的特色就是它的商务逻辑定义没有采用目前的一些规范,如WfMC′s XPDL, BPML, ebXML,
BPEL4WS等,而是采用了它自己定义的JBoss jBPM Process definition language
(jPdl)。jPdl认为一个商务流程可以被看作是一个UML状态图。jPdl就是详细定义了这个状态图的每个部分,如起始、结束状态,状态之间的转换等。

jBPM的另一个特色是它使用Hibernate来管理它的数据库。Hibernate是目前Java领域最好的一种数据持久层解决方案。通过Hibernate,jBPM将数据的管理职能分离出去,自己专注于商务逻辑的处理。

说不如做,下面做个例子感受以下吧。

1、  环境准备

Jdk1.5安装不在赘述。

Eclipse安装不在赘述。 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。

本文用的版本是: Eclipse3.2+ MyEclipse 5.5.1 GA

2、  安装jbpm

jBPM 的下载地址: http://www.jboss.com/products/jbpm/downloads

按下图红色标记处下载:

介绍一下上面的Package:

JBoss jBPM
jPDL是 jBPM 的软件包

JBoss jBPM
jPDL Suite  是一个综合包,它包括了 jBPM 软件包、开发插件、一个配置好了的基于JBoss 的 jBPM 示例、一些数据库配置文件示例。

JBoss jBPM
Process Designer Plugin  是辅助开发 jBPM 的 Eclipse 插件。

JBoss jBPM
BPEL Extension jBPM 关于 BPEL 的扩展包

本指南选择下载:JBoss jBPM jPDL
Suite 。下载后解压到 D:\
jbpm-starters-kit-3.1.4,目录下含有五个子目录:

jbpm   jBPM 的软件包

jbpm-bpel 只含有一个网页

jbpm-db 各种数据库 hibernate 配置文件示例,有些还包含了相应的 jdbc 驱动程序。

jbpm-designer  辅助开发 jBPM 的 Eclipse 插件,具体在 jbpm-gpd-feature 子目录中

jbpm-server  一个已经配置好了的基于 JBoss 的 jBPM 示例

3、  Jbpm例子

jbpm-server 目录是一个已经配置好的了 jBPM 示例。

例子用的框架是Jsf+Hibernate,数据库是 hsqldb(一个内存数据库)。

双击 jbpm-server 目录下的 start.bat 文件,启动 JBoss 服务。这时会打开一个 DOS 窗口,启动完成后,日志会不断输出,其中最后一句是“ 13:55:39,937
DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR,
[email protected]) ”,这表示 jBPM 在开始工作了,它不断进行轮询。

打开网页: http://localhost:8080/jbpm/  得到如下画面

这是一个已经用 jBPM 开发好的用户定单流程,具有下单、审核、估价等流程。它所用的数据库是一个内置的数据库。

以 cookie monster 用户登录,选择“ create new web sale
order ”可以创建一个定单。如下图所示,在图左边是填写的定单情况,右边一整个定货流程的示意图,红色框表示流程进行到哪一步了。填写好定单好,选择“ Save
and Close Task ”,完成定单提交。

选择右上角的“ Login as another
user ”以另外一个用户名 ernie 登录。这时可以看到 ernie用户的任务列表中多了一项。

点进去后,显示如下画面。这个示例对中文的支持不好,全都显示成了 unicode 码了。不管这什么多,反正知道是这么回事就行了。在 comment 项填写意见,选 OK 按钮,进入到下一步。如果选择more
info needed 按钮,则打回给 cookie monster 用户修改定单。

下面的流程,这里就不再赘述了。由于流程是设计好的,而且用的数据库是个内存数据库,也看不到数据是如何记录的,看了这个例子可能有点迷糊,似乎感觉不到jBPM在起作用,其实jBPM 始终是在后台起着作用,只有通过自己写个例子,设计一下流程,看一下数据库表结构才能真正明白其中的道理,《Jbpm工作流(二)》中将介绍这些。

4、创建jbpm项目

4.1要引入可视化插件

jbpm提供了在eclipse下的一个可视化插件,通过它我们可以方便的定义工作流,介绍一下eclipse如何添加该插件?

打开jbpm-starters-kit-3.1.4\jbpm-designer\jbpm-gpd-feature目录,我们可以看到下面有一个eclipse文件夹,这里我们通过link的方式为eclipse添加该插件。

在{eclipse_home}/link文件夹下新建jbpm-designer.link文件,用记事本打开该文件加入如下一行:

path=D:\\jbpm-starters-kit-3.1.4\\jbpm-designer\\jbpm-gpd-feature

后面的路径即为该插件的存放路径,根据个人情况修改。注意,这里的分隔符使用双斜杠\\或者用单斜杠/。

当插件引入成功后,

打开Eclipse----window----Preferences

出现JBoss jBPM的目录,表示插件引入成功。

4.2 引入jbpm包,使eclipse具有jbpm环境

Eclipse编译jbpm可视化流程图,有时特别慢,甚至会导致死机,原因是未导入jbpm包的问题,可视化流程图需要有jbpm环境,介绍一下如何解决这个问题?

打开Eclipse----window----Preferences

如下图

点击【Add】,如下图:

Name:随便录入

Location: D:\jbpm-starters-kit-3.1.4\jbpm-starters-kit-3.1.4\jbpm,此路径为下载的

jbpm-starters-kit-3.1.4包中的jbpm文件夹,即jBPM 的软件包。

4.3 创建我们自己的jbpm

打开eclipse---new--Project,如下图:

选择Process Project,点击【Next】,如下图

name:工程名称,随意录入。

Location:就是在上面所讲的jBPM 的软件包。点击【finish】后,创建如下项目:

以上就创建了一个jbpm的项目,里面的代码和流程图会自动创建,也说明你的eclipse已具有jbpm环境。

时间: 2024-11-05 15:54:53

Jbpm工作流(一)的相关文章

JBPM工作流

1.工作流 工作流是一项分离业务操作和系统流程的技术.工作流由实体(Entity).参与者(Participant).流程定义(Flow Definition).工作流引擎(Engine) 四部分组成. ① 实体是工作流的主体,是需要随着工作流一起流动的物件(Object).例如,在一个采购申请批准流程中,实体就是采购申请单;在公文审批流程中,实体就是公文. ② 参与者是各个处理步骤中的责任人,可能是人,也可能是某个职能部门,还可能是某个自动化的设备; ③ 流程定义是预定义的工作步骤,它规定了实

转发 JBPM工作流小结

JBoss 题记:某部门领导有天突发奇想,把我们几个人叫过去,曰:最近出去开会,老有人推销自己的工作流产品,说的这好那好,你们几个给我研究研究.正好刚做完的xxx子系统里有一个申请审批的流程,你们按这个需求,把系统改成jbpm工作流试试.一定要搞清楚,引入工作流能不能减少我们开发部门的工作量. 于是,4个啥也不懂的人,忙碌的两周(实际时间大概是一周不到,因为每个人都一直有其他项目的工作)开始了. 也许是我们几个的水平不行,最后写了这么一个报告,结论是一般都会增加工作量. JBPM工作流小结 经过

JBPM——工作流概念

一.概念 工作流(Workflow),就是"业务过程的部分或整体在计算机应用环境下的自动化",它主要解决的是"使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现".具体的说工作流表达了一个抽象的流程定义,之所以说是抽象,因为它没有表示确切的执行者,比如某借款人被具体化为张三,部门主管成为张三的部门经理李四,而财务明确为王五的时候,这个流程定义就被具体化,成为一个流程实例.此外过程中的相关人员我们

JBPM工作流(一)——实现一个简单的工作流例子

一.JBPM定义 JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理.工作流.服务协作等领域的一个开源的.灵活的.易扩展的可执行流程语言框架. 二.为什么用JBPM 业务分析师和开发人员使用的是同一种语言来交谈,大大降低了开发的风险,如果要开发一个项目,速度也更快了,因为开发人员不用再将用户需求转化成软件设计了.其次,JBPM采用的不是一般的开发工具,而是自己的图形化开发工具,非常方便随时了解和掌握运行的进程.最后,JBPM的

python调用Java代码,完毕JBPM工作流application

1.缘由 有一庞大Python django webproject,要引入工作流引擎,像OA一样.方便的流程控制与管理.Python或django关于工作流的开源插件,稀少,并且弱爆了,终于选用java的开源框架JBPM.为了使Pythonproject整合Java框架,尝试过jbpm-console提供的 REST, 以失败告终,终于选用Python 直接调用Java代码.操作JBPM. 1.1pythonprojectREST与JBPM Workbench交互 失败 REST URL格式 h

jbpm 工作流(二)

1           概述 本文主要介绍如何将JBPM+Struts+Spring+Hibernate整合在一块.并通过一个简单实例来说明.此实例为一个申请审批的简单流程,并将申请人和审批人记录到数据库中,流程为start----申请----审批----end,中间无退回,无分支,只是看一下jbpm的流程设计,本文将jbpm和struts/spring/hibernate结合在一块做为一个完整的项目来叙述. 通过processdefinition.xml的可视图,可了解一下流程图: 2    

JBPM工作流(八)——流程实例(PI)Process Instance

/** * 流程实例 *    *  启动流程实例 *    *  完成任务 *    *  查询 *      *  查询流程实例 *      *  查询任务 *          *  查询正在执行的任务 *            *  查询所有的正在执行的任务 *            *  根据任务的执行人查询正在执行的任务 *            *  根据executionId查询正在执行的任务 *            *  根据piid查询正在执行的任务 *         

【Java EE 学习第58-67天】【OA项目练习】【SSH整合JBPM工作流】【JBPM项目实战】

一.SSH整合JBPM JBPM基础见http://www.cnblogs.com/kuangdaoyizhimei/p/4981551.html 现在将要实现SSH和JBPM的整合. 1.添加jar包 (1)jbpm项目/lib目录下的所有jar包和根目录下的jbpm.jar包放入/WEB-INF/lib文件夹下,同时删除tomcat服务器/lib文件夹中的el-api.jar包. 注意:必须删除el-api.jar包,该jar包和jbpm项目中需要使用到的三个jar包冲突了:juel-api

【Java EE 学习第58-67天】【OA项目练习】【JBPM工作流的使用】

OA项目中有极大可能性使用到JBPM框架解决流程控制问题,比如请假流程.报销流程等等. JBPM:JBoss Business Process Management,翻译过来就是业务流程管理.实际上就是一个java 框架. 学习JBPM最重要的就是学习数据库中的18张表,只要熟练掌握了这18张表,学习JBPM就大功告成了. 一.JBPM框架搭建 1.到JBPM官方网站上下载需要的jar包.源代码.文档等等 http://www.jbpm.org/ 比较流行的JBPM版本是JBPM4.4,本次使用