摘 要: J2EE項目的開發(fā)中[1],通常需要一個團隊去完成,團隊由美工、界面設(shè)計師、分析師、程序員、測試員和實施人員組成,但對于一般項目,就可能不需要這么多的資源,所以采用哪種框架對J2EE系統(tǒng)的開發(fā)就比較重要。文章主要介紹如何使用ZK框架來快速構(gòu)建系統(tǒng),通過對浙江省德清縣的“智能低壓配電設(shè)備故障診斷及運行監(jiān)控系統(tǒng)”的分析和總結(jié),論證了使用ZK框架的組件化的技術(shù)可以加快系統(tǒng)開發(fā)、降低系統(tǒng)的耦合度、縮短系統(tǒng)的開發(fā)周期。
關(guān)鍵詞: ZK; J2EE; 組件化; 快速構(gòu)建
中圖分類號:TP301 文獻(xiàn)標(biāo)志碼:A 文章編號:1006-8228(2013)10-43-02
0 引言
ZSH是ZK+Spring+Hibernate 技術(shù)框架的縮寫,是在開發(fā)企業(yè)內(nèi)部應(yīng)用系統(tǒng)中所采用的框架。企業(yè)應(yīng)用系統(tǒng)從應(yīng)用范圍的角度看,一類是企業(yè)級業(yè)務(wù)系統(tǒng),如“智能低壓配電設(shè)備故障診斷及運行監(jiān)控系統(tǒng)”,整個系統(tǒng)包括保護器管理、終端管理、保護器遠(yuǎn)程遙測遙控、故障預(yù)警、故障處理、運行監(jiān)控、實時曲線等功能,系統(tǒng)需求量非常大,功能也比較多,主要注重業(yè)務(wù)的實現(xiàn),頁面的漂亮程度不是很重視,且企業(yè)要求的開發(fā)周期比較短,總之是“時間緊、任務(wù)重”。另一類系統(tǒng)是公眾系統(tǒng),這類系統(tǒng)往往對頁面的美工要求比較高,對于用戶友好性,易操作性要求都比較高,如各類的團購網(wǎng)站,淘寶等,這類系統(tǒng)往往周期比較長,且在長期不斷的維護中越來越成熟。
“智能低壓配電設(shè)備故障診斷及運行監(jiān)控系統(tǒng)”符合第一類系統(tǒng)的設(shè)計與開發(fā),在這類系統(tǒng)開發(fā)中,往往有將近30%的工作量是重復(fù)的,如用戶管理、登錄、權(quán)限管理、部門管理等。為了達(dá)到更大的經(jīng)濟效益,縮短整個項目的開發(fā)周期,本文主要采用ZSH框架來快速構(gòu)建系統(tǒng),團隊只要對具體業(yè)務(wù)模塊進(jìn)行開發(fā),對于公用部分,直接調(diào)用組件或者通過菜單配置就能完成,可以大大縮短項目周期。
1 系統(tǒng)設(shè)計方案
1.1 技術(shù)框架介紹
ZSH框架是MVC框架中的一種,ZSH是ZK+Spring+Hibernate的簡寫,這里的Spring和Hibernate應(yīng)該是大家比較熟悉的,前者主要負(fù)責(zé)業(yè)務(wù)的處理,后者主要負(fù)責(zé)數(shù)據(jù)庫的處理,這里的ZK就主要負(fù)責(zé)頁面的處理。
ZK是一套以AJAX/XUL/Java為基礎(chǔ)的網(wǎng)頁應(yīng)用程式開發(fā)框架[2],用于豐富網(wǎng)頁應(yīng)用程式的使用接口。在設(shè)計AJAX網(wǎng)絡(luò)應(yīng)用程式時,可輕松簡便地操作,就像設(shè)計桌面程式一樣。ZK包含了一個以AJAX為基礎(chǔ)、事件驅(qū)動(event-driven)、高互動性的引擎,同時還提供了豐富多樣、可重復(fù)使用的XUL與HTML組件。ZK提供超過70個XUL組件及80個XHMTL組件。ZK亦提供 FCKeditor,Dojo,Google Maps和SIMILE Timeline的組件,讓使用者直接以Java控制,無須使用 JavaScript[3]。
綜上所述,在對前臺開發(fā)中采用了ZK框架,一方面是因為ZK集成了Javascript,使我們有更多的精力集中在業(yè)務(wù)層上,另外一方面是由于它提供了豐富的組件以及自定義的組件,可以大大提高項目中的重用,減少新組件開發(fā)的時間和成本,同時在不同的項目中也可以不斷地積累新的組件,從而可以應(yīng)用到其他項目中,不但可以加快項目前期的建模,也可以加快后期的代碼開發(fā)和測試。
1.2 設(shè)計思路
在本文中,主要通過員工管理的例子來說明ZK的重用性和提高開發(fā)速度。
通過對各類項目的整理和分析發(fā)現(xiàn),作為獨立的企業(yè)內(nèi)部應(yīng)用一般都會存在員工管理和員工登錄這兩個功能,而且一般系統(tǒng)的需求都是非常接近的,如編號,姓名,工號等,可能的區(qū)別是在不同的系統(tǒng)中員工屬性有多、有少,所以我們在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)的時候利用擴展表來實現(xiàn)員工的擴展信息,基本信息通過主表來實現(xiàn),表結(jié)構(gòu)如表1所示。
在具體開發(fā)程序時,需要將其作為獨立的一個模塊來進(jìn)行開發(fā),要降低與其他任務(wù)業(yè)務(wù)模塊的耦合度,作為獨立的模塊,通過配置系統(tǒng)菜單來添加該功能。對于其他模塊如何來調(diào)用員工中的數(shù)據(jù)呢,怎樣使其耦合度降的最低,怎樣使其能完全獨立從而達(dá)到更大的重用性,我們是這樣考慮的:采用zk基本組件中的bandbox,通過對bandbox的自定義實現(xiàn),讓其成為一個公用的員工搜索輸入框,若其他模塊中需要調(diào)用員工的數(shù)據(jù),可以直接調(diào)用該輸入框,如此員工模塊的重用性大大增加,筆者已經(jīng)把這種模式成功地應(yīng)用在了不同的系統(tǒng)中。
1.3 代碼實現(xiàn)
1.3.1 員工模塊功能實現(xiàn)
2 結(jié)束語
本文通過員工管理模塊的例子體驗了使用ZK框架[5],結(jié)合自定義的組件讓我們在程序開發(fā)中提高重用性,減少工作周期。實驗證實,通過這種方式來快速的構(gòu)建系統(tǒng),可以有效地縮短四分之一的開發(fā)周期,也可以降低系統(tǒng)的耦合度,使程序員更加注重于具體業(yè)務(wù)的實現(xiàn)。目前這種方式已經(jīng)應(yīng)用在德清縣局的智能低壓配電設(shè)備故障診斷及運行監(jiān)控系統(tǒng),且運行良好。今后仍需要對這種模式做進(jìn)一步的歸納和總結(jié),使重用的模塊可以適應(yīng)更多的項目,有更多的擴展性和更靈活的配置方式。
參考文獻(xiàn):
[1] 趙輝煌,周德儉.基于J2EE的企業(yè)技術(shù)服務(wù)信息系統(tǒng)設(shè)計與實現(xiàn)[J].信息系統(tǒng)工程,2012.12:36-37,48
[2] 劉曉明,施霖.實現(xiàn)Aiax應(yīng)用程序的一種途徑——ZK[J].科技廣場,2007.7:141-143
[3] ZK:Leading Enterprise Java Web Framework [EB/OL]. http://www.zkoss.org/,2013-06-01.
[4] Next-Generation Applications Using Ajax and OpenAjax[EB/OL].http://www.openajax.org/whitepapers/Next-Generation Applications Using Ajax andOpenAjax.php,2012-07-01.
[5] 林亞明.基于ZK的MVVM與MVP設(shè)計模式應(yīng)用研究[J].重慶文理
學(xué)院學(xué)報:自然科學(xué)版,2012.6:2012.31(6).