工作流雖然還在不成熟的發展階段,甚至還沒有一個公認的規范標準。但其應用卻已經在快速展開,這說明市場對工作流框架的需求是急迫而巨大的。
我們公司的后臺短信管理系統涉及短信編發、領導層層審核等操作,這是一個比較典型的工作流系統。過去我們用的工作流引擎是
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