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