工作流虽然还在不成熟的发展阶段,甚至还没有一个公认的规范标准。但其应用却已经在快速展开,这说明市场对工作流框架的需求是急迫而巨大的。
我们公司的后台短信管理系统涉及短信编发、领导层层审核等操作,这是一个比较典型的工作流系统。过去我们用的工作流引擎是
shark
,然后在使用后发现其过于庞大,后台数据库操作频繁而未进行优化,直接导致的后果就是前台操作缓慢。于是经研究决定,将工作流引擎由
shark
换成
jBPM
。
jBPM
之前是一个开源软件,后加入
JBoss
组织。正好我们公司也是用
JBoss
的。不过
jBPM
并没有绑定在
JBOSS
上,
Tomcat
等也可以使用它。
jBPM
的正处在不断发展中,做为开源软件的特点,其设计变化往往很大。所以一些过去的资料可能已经不适用了。于是作者根据自己的使用经验,重新整理出这份文档,以备学习参考。
注:本文使用的
jBPM
版本为
3.1.1
环境准备
1、安装JDK
所有
JAVA
开发第一个需要安装的,没什么好说的。记得把系统变量
JAVA_HOME
设上。
2、安装Ant
Ant
是使用
jBPM
必须的一个工具。
jBPM
中的很多操作都要用到
Ant
。
安装方法:
(
1
)先下载:
http://archive.apache.org/dist/ant/binaries/
,选一个如:
apache-ant-1.6.5-bin.zip
。
(
2
)解压到
D:\ant
(当然其他目录也可以)。
(
3
)设置如下系统变量:
ANT_HOME=d:\ant
。
(
4
)把
%ANT_HOME%\bin
加入到系统变量
PATH
中。
3、安装Eclipse
Eclipse
不是开发
jBPM
必须的工具,但它是对
jBPM
开发很有帮助的工具,特别是
jBPM
提供了一个
Eclipse
插件用来辅助开发
jBPM
。关于
Eclipse
的安装不赘述了,本文用的版本是:
Eclipse3.2
安装
jBPM
jBPM
的下载地址:
http://www.jboss.com/products/jbpm/downloads
l
JBoss jBPM
是
jBPM
的软件包
l
JBoss jBPM Starters Kit
是一个综合包,它包括了
jBPM
软件包、开发插件、一个配置好了的基于
JBoss
的
jBPM
示例、一些数据库配置文件示例。
l
JBoss jBPM Process Designer Plugin
是辅助开发
jBPM
的
Eclipse
插件。
l
JBoss jBPM BPEL Extension jBPM
关于
BPEL
的扩展包
本指南选择下载:
JBoss jBPM Starters Kit
。下载后解压到
D:\jbpm-starters-kit-3.1
,目录下含有五个子目录:
l
jbpm
jBPM
的软件包
l
jbpm-bpel
只含有一个网页
l
jbpm-db
各种数据库
hibernate
配置文件示例,有些还包含了相应的
jdbc
驱动程序。
l
jbpm-designer
辅助开发
jBPM
的
Eclipse
插件,具体在
jbpm-gpd-feature
子目录中
l
jbpm-server
一个已经配置好了的基于
JBoss
的
jBPM
示例
.
感觉下工作流
前面我们说了,在
JBoss jBPM Starters Kit
的
jbpm-server
目录是一个已经配置好的了
jBPM
示例,那么让我们来感觉一下
jBPM
做出的东西吧。
双击
jbpm-server
目录下的
start.bat
文件,启动
JBoss
服务。这时会打开一个
DOS
窗口,启动完成后,日志会不断输出,其中最后一句是“
13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd)
”,这表示
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
在后台起着作用。
从这个例子,还看不出
jBPM
的优势。不过,如果在一个流程不确定,经常需要变动的项目中,
jBPM
的好处将会显然出来。应用
jBPM
后,改变流程只需改变流程描述文件,这将在后面的内容提到。
这是一个已做好的示例,接下来我们将仿造这个实例来开发一个请假流程。
作者简介
陈刚,广西桂林人,著作有《Eclipse从入门到精通》
您可以通过其博客了解更多信息和文章:http://www.chenGang.com.cn