jBPM開發入門指南(1)
工作流雖然還在不成熟的發展階段,甚至還沒有一個公認的規范標準。但其應用卻已經在快速展開,這說明市場對工作流框架的需求是急迫而巨大的。
我們公司的后臺短信管理系統涉及短信編發、領導層層審核等操作,這是一個比較典型的工作流系統。過去我們用的工作流引擎是 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
posted on 2006-07-13 15:03 陳剛 閱讀(76398) 評論(36) 編輯 收藏 所屬分類: jBPM