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