工作流雖然還在不成熟的發展階段,甚至還沒有一個公認的規范標準。但其應用卻已經在快速展開,這說明市場對工作流框架的需求是急迫而巨大的。
我們公司的后臺短信管理系統涉及短信編發、領導層層審核等操作,這是一個比較典型的工作流系統。過去我們用的工作流引擎是
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
后,改變流程只需改變流程描述文件,這將在后面的內容提到。
這是一個已做好的示例,接下來我們將仿造這個實例來開發一個請假流程。