工作流雖然還在不成熟的發(fā)展階段,甚至還沒有一個(gè)公認(rèn)的規(guī)范標(biāo)準(zhǔn)。但其應(yīng)用卻已經(jīng)在快速展開,這說明市場(chǎng)對(duì)工作流框架的需求是急迫而巨大的。
jBPM
的正處在不斷發(fā)展中,做為開源軟件的特點(diǎn),其設(shè)計(jì)變化往往很大。所以一些過去的資料可能已經(jīng)不適用了。于是作者根據(jù)自己的使用經(jīng)驗(yàn),重新整理出這份文檔,以備學(xué)習(xí)參考。
注:本文使用的
jBPM
版本為
3.1.1
環(huán)境準(zhǔn)備
1、安裝JDK
所有
JAVA
開發(fā)第一個(gè)需要安裝的,沒什么好說的。記得把系統(tǒng)變量
JAVA_HOME
設(shè)上。
2、安裝Ant
Ant
是使用
jBPM
必須的一個(gè)工具。
jBPM
中的很多操作都要用到
Ant
。
安裝方法:
(
1
)先下載:
http://archive.apache.org/dist/ant/binaries/
,選一個(gè)如:
apache-ant-1.6.5-bin.zip
。
(
2
)解壓到
D:\ant
(當(dāng)然其他目錄也可以)。
(
3
)設(shè)置如下系統(tǒng)變量:
ANT_HOME=d:\ant
。
(
4
)把
%ANT_HOME%\bin
加入到系統(tǒng)變量
PATH
中。
3、安裝Eclipse
Eclipse
不是開發(fā)
jBPM
必須的工具,但它是對(duì)
jBPM
開發(fā)很有幫助的工具,特別是
jBPM
提供了一個(gè)
Eclipse
插件用來輔助開發(fā)
jBPM
。關(guān)于
Eclipse
的安裝不贅述了,本文用的版本是:
Eclipse3.2
安裝
jBPM
jBPM
的下載地址:
http://www.jboss.com/products/jbpm/downloads
l
JBoss jBPM
是
jBPM
的軟件包
l
JBoss jBPM Starters Kit
是一個(gè)綜合包,它包括了
jBPM
軟件包、開發(fā)插件、一個(gè)配置好了的基于
JBoss
的
jBPM
示例、一些數(shù)據(jù)庫配置文件示例。
l
JBoss jBPM Process Designer Plugin
是輔助開發(fā)
jBPM
的
Eclipse
插件。
l
JBoss jBPM BPEL Extension jBPM
關(guān)于
BPEL
的擴(kuò)展包
本指南選擇下載:
JBoss jBPM Starters Kit
。下載后解壓到
D:\jbpm-starters-kit-3.1
,目錄下含有五個(gè)子目錄:
l
jbpm
jBPM
的軟件包
l
jbpm-bpel
只含有一個(gè)網(wǎng)頁
l
jbpm-db
各種數(shù)據(jù)庫
hibernate
配置文件示例,有些還包含了相應(yīng)的
jdbc
驅(qū)動(dòng)程序。
l
jbpm-designer
輔助開發(fā)
jBPM
的
Eclipse
插件,具體在
jbpm-gpd-feature
子目錄中
l
jbpm-server
一個(gè)已經(jīng)配置好了的基于
JBoss
的
jBPM
示例
.
感覺下工作流
前面我們說了,在
JBoss jBPM Starters Kit
的
jbpm-server
目錄是一個(gè)已經(jīng)配置好的了
jBPM
示例,那么讓我們來感覺一下
jBPM
做出的東西吧。
雙擊
jbpm-server
目錄下的
start.bat
文件,啟動(dòng)
JBoss
服務(wù)。這時(shí)會(huì)打開一個(gè)
DOS
窗口,啟動(dòng)完成后,日志會(huì)不斷輸出,其中最后一句是“
13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd)
”,這表示
jBPM
在開始工作了,它不斷進(jìn)行輪詢。
打開網(wǎng)頁:
http://localhost:8080/jbpm/
得到如下畫面

這是一個(gè)已經(jīng)用
jBPM
開發(fā)好的用戶定單流程,具有下單、審核、估價(jià)等流程。它所用的數(shù)據(jù)庫是一個(gè)內(nèi)置的數(shù)據(jù)庫。
以
cookie monster
用戶登錄,選擇“
create new web sale order
”可以創(chuàng)建一個(gè)定單。如下圖所示,在圖左邊是填寫的定單情況,右邊一整個(gè)定貨流程的示意圖,紅色框表示流程進(jìn)行到哪一步了。填寫好定單好,選擇“
Save and Close Task
”,完成定單提交。

選擇右上角的“
Login as another user
”以另外一個(gè)用戶名
ernie
登錄。這時(shí)可以看到
ernie
用戶的任務(wù)列表中多了一項(xiàng)。

點(diǎn)進(jìn)去后,顯示如下畫面。這個(gè)示例對(duì)中文的支持不好,全都顯示成了
unicode
碼了。不管這什么多,反正知道是這么回事就行了。在
comment
項(xiàng)填寫意見,選
OK
按鈕,進(jìn)入到下一步。如果選擇
more info needed
按鈕,則打回給
cookie monster
用戶修改定單。

下面的流程,這里就不再贅述了。在這個(gè)很標(biāo)準(zhǔn)的工作流示例中,我們基本可以看到
jBPM
的應(yīng)用范圍還是比較廣的。而且從這個(gè)示例,我們是看不出有
jBPM
的,也就是說
jBPM
在后臺(tái)起著作用。
從這個(gè)例子,還看不出
jBPM
的優(yōu)勢(shì)。不過,如果在一個(gè)流程不確定,經(jīng)常需要變動(dòng)的項(xiàng)目中,
jBPM
的好處將會(huì)顯然出來。應(yīng)用
jBPM
后,改變流程只需改變流程描述文件,這將在后面的內(nèi)容提到。
這是一個(gè)已做好的示例,接下來我們將仿造這個(gè)實(shí)例來開發(fā)一個(gè)請(qǐng)假流程。