工作流雖然還在不成熟的發(fā)展階段,甚至還沒(méi)有一個(gè)公認的規范標準。但其應用卻已經(jīng)在快速展開(kāi),這說(shuō)明市場(chǎng)對工作流框架的需求是急迫而巨大的。
我們公司的后臺短信管理系統涉及短信編發(fā)、領(lǐng)導層層審核等操作,這是一個(gè)比較典型的工作流系統。過(guò)去我們用的工作流引擎是 shark ,然后在使用后發(fā)現其過(guò)于龐大,后臺數據庫操作頻繁而未進(jìn)行優(yōu)化,直接導致的后果就是前臺操作緩慢。于是經(jīng)研究決定,將工作流引擎由 shark 換成 jBPM 。
jBPM 之前是一個(gè)開(kāi)源軟件,后加入 JBoss 組織。正好我們公司也是用 JBoss 的。不過(guò) jBPM 并沒(méi)有綁定在 JBOSS 上, Tomcat 等也可以使用它。
jBPM 的正處在不斷發(fā)展中,做為開(kāi)源軟件的特點(diǎn),其設計變化往往很大。所以一些過(guò)去的資料可能已經(jīng)不適用了。于是作者根據自己的使用經(jīng)驗,重新整理出這份文檔,以備學(xué)習參考。
注:本文使用的 jBPM 版本為
環(huán)境準備
1、安裝JDK
所有 JAVA 開(kāi)發(fā)第一個(gè)需要安裝的,沒(méi)什么好說(shuō)的。記得把系統變量 JAVA_HOME 設上。
2、安裝Ant
Ant 是使用 jBPM 必須的一個(gè)工具。 jBPM 中的很多操作都要用到 Ant 。
安裝方法:
( 1 )先下載: http://archive.apache.org/dist/ant/binaries/ ,選一個(gè)如: apache-ant-
( 2 )解壓到 D:\ant (當然其他目錄也可以)。
( 3 )設置如下系統變量: ANT_HOME=d:\ant 。
( 4 )把 %ANT_HOME%\bin 加入到系統變量 PATH 中。
3、安裝Eclipse
Eclipse 不是開(kāi)發(fā) jBPM 必須的工具,但它是對 jBPM 開(kāi)發(fā)很有幫助的工具,特別是 jBPM 提供了一個(gè) Eclipse 插件用來(lái)輔助開(kāi)發(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 軟件包、開(kāi)發(fā)插件、一個(gè)配置好了的基于 JBoss 的 jBPM 示例、一些數據庫配置文件示例。
l JBoss jBPM Process Designer Plugin 是輔助開(kāi)發(fā) jBPM 的 Eclipse 插件。
l JBoss jBPM BPEL Extension jBPM 關(guān)于 BPEL 的擴展包
本指南選擇下載: JBoss jBPM Starters Kit 。下載后解壓到 D:\jbpm-starters-kit-3.1 ,目錄下含有五個(gè)子目錄:
l jbpm jBPM 的軟件包
l jbpm-bpel 只含有一個(gè)網(wǎng)頁(yè)
l jbpm-db 各種數據庫 hibernate 配置文件示例,有些還包含了相應的 jdbc 驅動(dòng)程序。
l jbpm-designer 輔助開(kāi)發(fā) jBPM 的 Eclipse 插件,具體在 jbpm-gpd-feature 子目錄中
l jbpm-server 一個(gè)已經(jīng)配置好了的基于 JBoss 的 jBPM 示例 .
感覺(jué)下工作流
前面我們說(shuō)了,在 JBoss jBPM Starters Kit 的 jbpm-server 目錄是一個(gè)已經(jīng)配置好的了 jBPM 示例,那么讓我們來(lái)感覺(jué)一下 jBPM 做出的東西吧。
雙擊 jbpm-server 目錄下的 start.bat 文件,啟動(dòng) JBoss 服務(wù)。這時(shí)會(huì )打開(kāi)一個(gè) DOS 窗口,啟動(dòng)完成后,日志會(huì )不斷輸出,其中最后一句是“ 13:55:39,937 DEBUG [StaticNotifier] going to wait for (CMD_EXECUTOR, java.lang.Object@1df59bd) ”,這表示 jBPM 在開(kāi)始工作了,它不斷進(jìn)行輪詢(xún)。
打開(kāi)網(wǎng)頁(yè): http://localhost:8080/jbpm/ 得到如下畫(huà)面 
這是一個(gè)已經(jīng)用 jBPM 開(kāi)發(fā)好的用戶(hù)定單流程,具有下單、審核、估價(jià)等流程。它所用的數據庫是一個(gè)內置的數據庫。
以 cookie monster 用戶(hù)登錄,選擇“ create new web sale order ”可以創(chuàng )建一個(gè)定單。如下圖所示,在圖左邊是填寫(xiě)的定單情況,右邊一整個(gè)定貨流程的示意圖,紅色框表示流程進(jìn)行到哪一步了。填寫(xiě)好定單好,選擇“ Save and Close Task ”,完成定單提交。 
選擇右上角的“ Login as another user ”以另外一個(gè)用戶(hù)名 ernie 登錄。這時(shí)可以看到 ernie 用戶(hù)的任務(wù)列表中多了一項。 
點(diǎn)進(jìn)去后,顯示如下畫(huà)面。這個(gè)示例對中文的支持不好,全都顯示成了 unicode 碼了。不管這什么多,反正知道是這么回事就行了。在 comment 項填寫(xiě)意見(jiàn),選 OK 按鈕,進(jìn)入到下一步。如果選擇 more info needed 按鈕,則打回給 cookie monster 用戶(hù)修改定單。 
下面的流程,這里就不再贅述了。在這個(gè)很標準的工作流示例中,我們基本可以看到 jBPM 的應用范圍還是比較廣的。而且從這個(gè)示例,我們是看不出有 jBPM 的,也就是說(shuō) jBPM 在后臺起著(zhù)作用。
從這個(gè)例子,還看不出 jBPM 的優(yōu)勢。不過(guò),如果在一個(gè)流程不確定,經(jīng)常需要變動(dòng)的項目中, jBPM 的好處將會(huì )顯然出來(lái)。應用 jBPM 后,改變流程只需改變流程描述文件,這將在后面的內容提到。
這是一個(gè)已做好的示例,接下來(lái)我們將仿造這個(gè)實(shí)例來(lái)開(kāi)發(fā)一個(gè)請假流程。
作者簡(jiǎn)介
陳剛,廣西桂林人,著(zhù)作有《Eclipse從入門(mén)到精通》
聯(lián)系客服