1 引言 所謂電子政務,是指各級政務部門利用現(xiàn)代信息技術,開展辦公決策、業(yè)務處理和公 共服務等政務活動,提高工作效率、管理能力和服務水平的過程。近幾年,隨著國內(nèi)信息化 建設速度的不斷加快以及國家對電子政務工作重視程度的日漸加深,電子政務呈現(xiàn)出強勁的 發(fā)展勢頭。 同時,工作流技術也發(fā)展迅速,商業(yè)和開源工作流產(chǎn)品相繼推出。由于電子政務工程中 軟件費用支出巨大,在不影響系統(tǒng)功能和性能的前提下,采用開源軟件成為電子政務工程降 低成本的一個重要途徑。而且,開源軟件具有開放的特性,開源社區(qū)都在不斷的努力提高開 源代碼的可靠性,逐漸完善開源系統(tǒng)的質量。 本文在對比分析當今三大開源的工作流引擎的基礎上,重點分析并研究了基于JBPM 構 建電子政務系統(tǒng)。基于JBPM 所設計的電子政務系統(tǒng),既提高了政府的辦公效率又降低了系 統(tǒng)開發(fā)的費用。 2 開源工作流引擎之間的比較 目前,在工作流領域,具有代表性的開源工作流產(chǎn)品有Shark、OSWorkflow 和JBPM。 在此對這三大工作流引擎進行分析比較,如表1。 通過對上表的分析可以得出:如果開發(fā)電子政務系統(tǒng),JBPM 是最適用的開源工作流引 擎。因為相對于Shark,JBPM 更加靈活,而且以當前流行的Hibernate 作為它的持久層,這使它能在不同的數(shù)據(jù)庫服務器上輕松部署并方便地進行管理,另外還有全面的文檔;相對于 OSWorkflow,JBPM 更加簡單,可以作為嵌入工作流,給了開發(fā)者更大的靈活性。同時,JBPM 系統(tǒng)最大的特色是使用自己的流程定義語言JPDL 來精確描述業(yè)務流程,過程建模結合了UML 活動圖和狀態(tài)圖的知識,為用戶提供了可視化的面向圖形的編輯流程定義的方法,業(yè)務人員 能很直觀的與軟件進行交互,更好的發(fā)揮了電子政務系統(tǒng)的作用。 3 JBPM 剖析 JBPM,全稱是Java Business Process Management,是基于J2EE 的輕量級工作流管理系 統(tǒng)。JBPM 是公開源代碼項目,它使用要遵循Apache License,可以免費應用于商業(yè)開發(fā)。 JBPM 在2004 年10 月18 日,發(fā)布了2.0 版本,并在同一天加入了JBoss,成為JBoss 企業(yè) 中間件平臺的一個組成部分,它的名稱也改成JBoss JBPM。JBPM 的系統(tǒng)結構如圖2 所示。 由于JBPM 的圖形化流程設計工具jbpm-designer 目前只是一個eclipse 插件,只能在 eclipse IDE 環(huán)境下使用,故在JBPM 開發(fā)中通常使用的是eclipse 開發(fā)環(huán)境。安裝JBPM 很 簡單,只需將文件jbpm-starters-kit-3.1.1\jbpm-designer\jbpm-gpd-feature\eclipse 拷貝到eclipse 安裝目錄的pulgins 目錄下即可。如果安裝成功,重啟eclipse,就可在 Eclipse 的首選項里發(fā)現(xiàn)多了一個JBoss jBPM 。 JBPM 具體的開發(fā)流程如下: 1) 初始化數(shù)據(jù)庫。 任何系統(tǒng)都需要數(shù)據(jù)庫支持,jBPM 會把自己的一個初始化數(shù)據(jù)存 儲到數(shù)據(jù)庫,同時工作流的數(shù)據(jù)也是存儲到數(shù)據(jù)庫中的。jBPM 使用了Hibernate 做為自己 的存儲層,因此只要是 Hibernate 支持的數(shù)據(jù)庫,JBPM 也就支持。 本文所設計系統(tǒng)使用的 數(shù)據(jù)庫是MySQL,故以MySQL 為例,簡單介紹JBPM 數(shù)據(jù)庫的初始化操作: 首先安裝MySQL 和MySQL 客戶端,安裝MySQL 客戶端是為了方便查看數(shù)據(jù)庫中的數(shù)據(jù); 接著在MySQL 中創(chuàng)建一個庫并將下載的文件 jbpm-starters-kit-3.1.1 下的子目錄 jbpm 改名為 jbpm.3;最后在DOS 窗口下進入jbpm-starters-kit-3.1.1\jbpm-db 子目錄,執(zhí)行 命令“ant mysql. scripts ”。若執(zhí)行成功,會在bpm-starters-kit-3.1.1\jbpm-db\build\ mysql\ scripts 子目錄中生成四個sql 文件。再在MySQL 客戶端中的腳本界面執(zhí)行 “mysql.create.sql”腳本,這樣就在JBPM 庫中創(chuàng)建了一個數(shù)據(jù)表。 2) 在Eclipse 中配置JBPM。進入Eclipse 的首選項中找到JBoss JBPM,指定 JBPM 的安裝路徑,目的是為了在Eclipse 找到JBPM 下的各種 jar 包,設置項目的JBPM 庫引用。 3)新建JBPM 項目。進入Eclipse 的主菜單,依次點擊文件、新建、項目、JBoss JBPM、 Process Project,取個項目名,點擊完成即可。 4)設置Hibernate 的配置文件,主要是設定相關的數(shù)據(jù)庫連接信息。以MySQL 為例,在 JBPM 項目中點擊進入hibernate.cfg.xml 文件,其中做如下修改: org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/jbpm root ****** 5) 添加庫引用。為了連接JBPM 工作流引擎與Hibernate 持久層的通信,要將Hibernate 的Hibernate3.jar 包添加進JBPM 項目的庫引用。而本系統(tǒng)使用了MySQL 數(shù)據(jù)庫,故也要將 其JDBC 庫添加進庫引用,使用其他數(shù)據(jù)庫與此類似。 6) 具體工作流的開發(fā)。使用JPDL 定義工作流,保存在processdefinition.xml 文件中。 流程定義法則參考JBPM 工作流開發(fā)指南。 4 電子政務系統(tǒng)的設計與實現(xiàn) 本文采用工作流引擎JBPM作為政務系統(tǒng)的核心,利用Struts +Spring +Hibernate架構 作為政務系統(tǒng)的框架,構建一個結構清晰、實用價廉的電子政務系統(tǒng)。系統(tǒng)架構如圖3所示。 圖中用戶(User)負責以下工作: (1)登錄電子政務系統(tǒng)界面,使用流程定義工具(Modeling Tool)將要進行流程運行的 業(yè)務流程定義完整后發(fā)送業(yè)務請求到中央控制器(ActionServlet); (2)在系統(tǒng)界面(System Interface)上查看本人所發(fā)起的業(yè)務流程的詳細信息,包括到 達流程路線中各節(jié)點的時間以及各節(jié)點負責人的意見; (3)通過系統(tǒng)界面(System Interface)讀取由視圖模塊(JSP)傳遞出來的業(yè)務流程的 最終結果。 接著再分析電子政務系統(tǒng)架構圖中其他組件的具體實現(xiàn): (1)表示層。在該系統(tǒng)架構中,表示層實際包含了Struts框架中的兩個層次結構:控制層 和視圖層。控制層是使用中央控制器(ActionServlet)和處理器(Action)實現(xiàn),視圖層 則是使用JSP實現(xiàn)。表示層中的處理器表單(ActionForm)本質上是一種JavaBean,是專門用 來傳遞表單數(shù)據(jù)的DTO(Data Transfer Object),它包括用于表單數(shù)據(jù)驗證的validate() 方法和用于數(shù)據(jù)復位的reset()方法。在表示層的設計中,嚴格遵照MVC模式設計系統(tǒng),頁面中需要的數(shù)據(jù)均由控制層傳遞,用戶提交的業(yè)務請求和數(shù)據(jù)都是通過控制層處理,訪問合法 性判斷、頁面跳轉、響應用戶請求等工作也是由控制層完成;視圖層負責顯示模型的數(shù)據(jù)、 接受模型的數(shù)據(jù)更新通知更新視圖、接受用戶輸入的數(shù)據(jù)傳送給中央控制器和接受處理器處 理后的結果傳送給系統(tǒng)界面,將控制層和視圖層代碼分離。表示層具體實現(xiàn)的流程如圖4。 (2)業(yè)務層。業(yè)務層是電子政務系統(tǒng)的核心,負責處理繁瑣復雜的日常事務和工作流 事務,并根據(jù)業(yè)務需求進行動態(tài)擴展,同時業(yè)務層還為表示層組件提供必要的接口服務,本 系統(tǒng)使用Spring管理bean的機制。具體的實現(xiàn)流程是:當業(yè)務請求流轉到業(yè)務層時,模型層 (JavaBean、EJB)負責與工作流引擎(JBPM)連接,把業(yè)務請求傳送到JBPM進行業(yè)務流轉, 流程定義文件通過JBPM流程解析器解析進入工作流引擎的核心完成業(yè)務流轉的具體實現(xiàn)。業(yè) 務流程實現(xiàn)后將結果返回模型層,模型層再返回給表示層中的Action。在JBPM流程運轉中, 模型層還負責與持久層通信,實現(xiàn)對數(shù)據(jù)庫中數(shù)據(jù)的調用。 (3)持久層。本文所描述的系統(tǒng)采用了輕量級O/R Mapping工具-Hibernate,進行數(shù)據(jù) 持久化的工作。實例中只要把對象的屬性抽象出來,Hibernate就會根據(jù)映射文件自動將對 象映射到基于SQL的關系模型數(shù)據(jù)結構中去,則在使用JBPM的時候可以不用考慮數(shù)據(jù)持久化 操作的具體實現(xiàn)細節(jié),而只專注于流程的設計,并且業(yè)務中需要保存和修改的信息都將會實 時的在數(shù)據(jù)庫中更新,保證了整個數(shù)據(jù)系統(tǒng)數(shù)據(jù)一致。這些特性使Hibernate 為電子政務系 統(tǒng)提供良好的持久層支持環(huán)境。 5 結束語 本文創(chuàng)新點:JBPM系統(tǒng)的過程建模技術結合了UML活動圖和狀態(tài)圖的技術,能實現(xiàn)并提 高電子政務系統(tǒng)的可視化設計,并且,作為當今市場上擴展性能最好的開源工作流引擎,為 電子政務系統(tǒng)的升級奠定了堅實的基礎。故基于開源工作流引擎JBPM構建電子政務系統(tǒng),既 節(jié)省了軟件開發(fā)費用又提高了政務系統(tǒng)的性能。 |