喬旭 勾妍妍 盧士軍
摘 ? 要: 為滿足不同公路養(yǎng)護(hù)單位的管理需求并適應(yīng)需求的變化,提出基于XML文件的公路養(yǎng)護(hù)管理系統(tǒng)通用化生成技術(shù)。該技術(shù)在SSH框架基礎(chǔ)上,將生成系統(tǒng)的文件分為兩層:靜態(tài)信息層與參數(shù)層。靜態(tài)信息層用于保存生成系統(tǒng)所需的各種數(shù)據(jù),包括基礎(chǔ)數(shù)據(jù)與標(biāo)識(shí)符。參數(shù)層用于存儲(chǔ)用戶的參數(shù)信息,包括界面元素類型和數(shù)據(jù)實(shí)體信息等參數(shù)。根據(jù)實(shí)際需求在參數(shù)層配置界面元素類型和數(shù)據(jù)實(shí)體信息等參數(shù),結(jié)合靜態(tài)信息層的基礎(chǔ)數(shù)據(jù),生成通用公路養(yǎng)護(hù)管理系統(tǒng)。應(yīng)用實(shí)例表明,通過(guò)XML文件生成系統(tǒng)既能夠?qū)崿F(xiàn)用戶界面的自動(dòng)配置,又可以配置相關(guān)的數(shù)據(jù)庫(kù)操作。因此,增強(qiáng)了公路養(yǎng)護(hù)管理系統(tǒng)的通用性。
關(guān)鍵詞: 公路養(yǎng)護(hù); SSH框架; XML文件; 管理系統(tǒng); 用戶界面; 數(shù)據(jù)庫(kù)
中圖分類號(hào): TN919?34; TP315 ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ?文章編號(hào): 1004?373X(2019)12?0144?04
Abstract: A general generation technology of the highway maintenance management system based on XML files is proposed to meet the management requirements of different highway maintenance units and adapt to the changing requirements. On the basis of the SSH framework, the files for generating the system are divided into two layers: the static information layer and parameter layer. The static information layer is used to store the various data needed to generate the system, including the basic data and identifiers. The parameter layer is used to store users′ parameter information, including the interface element type and data entity information. The interface element type, data entity information, and other parameters are configured in the parameter layer according to the practical demand. The general highway maintenance management system is generated by combining with the basic data of the static information layer. The application examples show that the system generated by using XML files can not only realize the automatic configuration of the user interface, but also configure relevant database operations, thus increasing the universal performance of the highway maintenance management system.
Keywords: highway maintenance; SSH framework; XML file; management system; user interface; database
0 ?引 ?言
公路是城市最重要的基礎(chǔ)設(shè)施之一。在經(jīng)年累月的運(yùn)營(yíng)過(guò)程中,公路常出現(xiàn)路面破損和路基病害等問(wèn)題。通過(guò)養(yǎng)護(hù)工程,可以保證公路持久通暢。公路養(yǎng)護(hù)工程包括路面養(yǎng)護(hù)、路肩養(yǎng)護(hù)、路邊養(yǎng)護(hù)、人行道養(yǎng)護(hù)、橋梁和交通服務(wù)設(shè)施等的養(yǎng)護(hù)。在養(yǎng)護(hù)過(guò)程中,需要調(diào)動(dòng)大量人力物力,涉及多單位多部門相互協(xié)作。公路養(yǎng)護(hù)管理系統(tǒng)為多單位多部門任務(wù)管理和公路養(yǎng)護(hù)科學(xué)化提供幫助。為同時(shí)滿足不同養(yǎng)護(hù)單位的需求并適應(yīng)需求的變化,公路養(yǎng)護(hù)管理系統(tǒng)采用通用化設(shè)計(jì)技術(shù)。
目前,通用管理系統(tǒng)的設(shè)計(jì)開發(fā)主要有代碼生成技術(shù)和用戶界面自動(dòng)生成技術(shù)。Aven提出了自動(dòng)化管理系統(tǒng)開發(fā)的形式化和標(biāo)準(zhǔn)化方法[1]。在該方法的基礎(chǔ)上,Paul提出了代碼生成技術(shù)。通過(guò)代碼生成技術(shù),系統(tǒng)可以根據(jù)模板生成代碼和界面,使管理系統(tǒng)初步具備通用性[2]。代碼生成方法眾多,Mao針對(duì)快速開發(fā)特定領(lǐng)域管理系統(tǒng)的需求,提出一種基于操作模式的代碼生成方法[3]。Spink提出一種基于區(qū)域動(dòng)態(tài)二進(jìn)制翻譯器的代碼生成方法,利用分支類型和控制流提高代碼質(zhì)量[4]。在方法的評(píng)價(jià)和改進(jìn)過(guò)程中,Viviana從有效性、生產(chǎn)率、安全性和滿意度等方面對(duì)自動(dòng)化軟件開發(fā)及自動(dòng)代碼生成的工具進(jìn)行了分析評(píng)估[5]。Bhullar通過(guò)UML統(tǒng)一建模語(yǔ)言對(duì)代碼生成方法進(jìn)行了規(guī)范[6]。受到開發(fā)平臺(tái)和成本的制約,自動(dòng)生成的代碼難以保證系統(tǒng)完整性[7]。
為滿足用戶的個(gè)性化需求,簡(jiǎn)化界面開發(fā)。用戶界面采用自動(dòng)生成方法,提高管理系統(tǒng)的通用性。Gamecho采用基于模型的方法為盲人和認(rèn)知障礙患者自動(dòng)生成定制用戶界面[8]。Bandirmali提出一種基于內(nèi)存表的內(nèi)容管理框架,為用戶提供友好的向?qū)Ш妥赃m應(yīng)結(jié)構(gòu)[9]。為了增強(qiáng)界面多設(shè)備支持,提高自適應(yīng)能力,杜一等人提出一種可擴(kuò)展的用戶界面描述語(yǔ)言。該語(yǔ)言遵循層次化、模塊化的設(shè)計(jì)原則,支持多設(shè)備、多通道的用戶界面描述[10]。目前,用戶界面自動(dòng)生成方法僅用于用戶界面的自動(dòng)修改,較少涉及用戶的數(shù)據(jù)庫(kù)操作,系統(tǒng)的通用性仍有待提高。
為避免代碼生成和用戶界面生成中存在的問(wèn)題,公路養(yǎng)護(hù)管理系統(tǒng)在SSH(Struts Spring Hibernate)框架基礎(chǔ)上,采用基于XML文件的通用系統(tǒng)設(shè)計(jì)技術(shù)。通過(guò)修改XML配置文件生成用戶界面并更新涉及的數(shù)據(jù)庫(kù)操作,增強(qiáng)系統(tǒng)通用性。
1 ?公路養(yǎng)護(hù)管理系統(tǒng)
公路養(yǎng)護(hù)工作頻次高、周期長(zhǎng),以往的公路養(yǎng)護(hù)管理方法難以滿足現(xiàn)代養(yǎng)護(hù)工作需要。計(jì)算機(jī)管理系統(tǒng)的發(fā)展為養(yǎng)護(hù)管理科學(xué)化提供了有效手段。目前,管理系統(tǒng)開發(fā)框架主要有Struts,EasyJWeb,Tapestry,Jpublish和SSH等。其中,SSH具有良好的可擴(kuò)展性、可維護(hù)性和解耦性,能夠有效縮短開發(fā)周期[11],普遍用于開發(fā)各類管理系統(tǒng)。
公路養(yǎng)護(hù)管理系統(tǒng)主要包括文件審批管理、部門信息管理和養(yǎng)護(hù)工程管理等主要模塊。每個(gè)模塊又包含多項(xiàng)具體功能,如表1所示。
通過(guò)SSH構(gòu)建和維護(hù)公路養(yǎng)護(hù)管理系統(tǒng)過(guò)程中,常遇到界面元素與數(shù)據(jù)庫(kù)操作修改頻繁等問(wèn)題。在代碼生成與用戶界面生成研究的基礎(chǔ)上,提出基于XML的通用系統(tǒng)設(shè)計(jì)技術(shù),通過(guò)參數(shù)配置減少源碼修改,實(shí)現(xiàn)系統(tǒng)的通用化目標(biāo)。
2 ?通用設(shè)計(jì)技術(shù)
2.1 ?SSH框架
SSH框架是目前主要的Web應(yīng)用程序開源框架之一[12]。在SSH框架基礎(chǔ)上搭建公路養(yǎng)護(hù)管理系統(tǒng),可以縮短開發(fā)周期,實(shí)現(xiàn)業(yè)務(wù)邏輯、數(shù)據(jù)與界面顯示分離。SSH框架由Struts,Hibernate和Spring三部分組成。Struts作為系統(tǒng)基礎(chǔ)架構(gòu)控制業(yè)務(wù)流轉(zhuǎn),Hibernate實(shí)現(xiàn)對(duì)象持久化,Spring協(xié)同管理Struts與Hibernate?;赟SH框架的Web應(yīng)用程序分為表示層、業(yè)務(wù)邏輯層、數(shù)據(jù)持久層和實(shí)體層等層次。SSH框架為系統(tǒng)功能的復(fù)用和業(yè)務(wù)數(shù)據(jù)的流轉(zhuǎn)提供了支持,但在表示層等層面上的開發(fā)和維護(hù)復(fù)雜度仍較高。為滿足不同養(yǎng)護(hù)單位的需求并適應(yīng)需求的變化,基于XML文件的通用系統(tǒng)設(shè)計(jì)技術(shù)通過(guò)對(duì)用戶需求的抽象提出具體參數(shù),再通過(guò)用戶配置參數(shù)自動(dòng)生成代碼,獲得相應(yīng)的功能。
2.2 ?設(shè)計(jì)原理
基于XML的通用系統(tǒng)設(shè)計(jì)技術(shù)分為兩層:靜態(tài)信息層與參數(shù)層。靜態(tài)信息層用于保存生成系統(tǒng)所需的各種數(shù)據(jù),包括基礎(chǔ)數(shù)據(jù)與標(biāo)識(shí)符。文件的基礎(chǔ)數(shù)據(jù)是指項(xiàng)目中必需的數(shù)據(jù)和程序,標(biāo)識(shí)符是根據(jù)XML規(guī)則定義的一組用于識(shí)別不同配置參數(shù)的標(biāo)識(shí)。通過(guò)靜態(tài)信息層存儲(chǔ)系統(tǒng)基礎(chǔ)數(shù)據(jù),利用標(biāo)識(shí)符實(shí)現(xiàn)自動(dòng)匹配。參數(shù)層用于存儲(chǔ)用戶的一系列參數(shù)信息,包括界面元素類型和數(shù)據(jù)實(shí)體信息等參數(shù),這些參數(shù)按照一定規(guī)則存于XML文件中。基于XML的通用系統(tǒng)設(shè)計(jì)技術(shù)在SSH框架基礎(chǔ)上,根據(jù)實(shí)際需求在參數(shù)層配置界面元素類型和數(shù)據(jù)實(shí)體信息等參數(shù),結(jié)合靜態(tài)信息層的基礎(chǔ)數(shù)據(jù),生成通用管理系統(tǒng)。
通用管理系統(tǒng)的靜態(tài)信息層文件為stafile.xml,參數(shù)層文件為parfile.xml。stafile.xml文件中界面元素類型和數(shù)據(jù)實(shí)體信息標(biāo)識(shí)符分別如表2和表3所示。
與stafile.xml文件中的標(biāo)識(shí)符相對(duì)應(yīng),將界面元素類型和數(shù)據(jù)實(shí)體信息保存在parfile.xml文件中。當(dāng)用戶需求發(fā)生改變時(shí),修改parfile.xml文件中對(duì)應(yīng)的參數(shù),系統(tǒng)的功能將發(fā)生相應(yīng)改變。通用管理系統(tǒng)構(gòu)建流程如圖1所示。構(gòu)建流程步驟如下:
1) 將需要的基礎(chǔ)數(shù)據(jù)和標(biāo)識(shí)符保存在stafile.xml文件中,利用分隔標(biāo)識(shí)符分成不同的片段。
2) 依據(jù)stafile.xml文件內(nèi)某一片段的順序,組織parfile.xml文件中的參數(shù)。
3) 系統(tǒng)構(gòu)建時(shí),以parfile.xml文件中參數(shù)的順序遍歷stafile.xml文件。當(dāng)stafile.xml文件中出現(xiàn)標(biāo)識(shí)符時(shí),系統(tǒng)從parfile.xml文件中讀取對(duì)應(yīng)的參數(shù),生成相應(yīng)的文件。
3 ?應(yīng)用實(shí)例
參數(shù)層存儲(chǔ)用戶界面元素類型和數(shù)據(jù)實(shí)體信息等參數(shù)。通過(guò)修改參數(shù),實(shí)現(xiàn)用戶界面和數(shù)據(jù)實(shí)體的自動(dòng)配置。下面分別以配置界面元素和配置數(shù)據(jù)實(shí)體為例,說(shuō)明通用公路養(yǎng)護(hù)管理系統(tǒng)的構(gòu)建方法。
3.1 ?配置界面元素
驗(yàn)證碼是用戶登錄時(shí)需要填寫的必要信息。通常情況下,驗(yàn)證碼由數(shù)字和字母組成。對(duì)于僅提供數(shù)字鍵盤的應(yīng)用環(huán)境,有必要采用純數(shù)字驗(yàn)證碼。生成驗(yàn)證碼的數(shù)據(jù)和程序保存在stafile.xml中,如下:
當(dāng)參數(shù)為Num時(shí),系統(tǒng)提供純數(shù)字驗(yàn)證碼;當(dāng)參數(shù)為Norm時(shí),系統(tǒng)提供數(shù)字和字母混合的驗(yàn)證碼。采用兩種驗(yàn)證碼的用戶界面,分別如圖2a)和圖2b)所示。
3.2 ?配置數(shù)據(jù)實(shí)體
通用公路養(yǎng)護(hù)管理系統(tǒng)通過(guò)修改數(shù)據(jù)實(shí)體,改變相應(yīng)的數(shù)據(jù)庫(kù)操作。界面元素與數(shù)據(jù)實(shí)體相適應(yīng),增強(qiáng)了系統(tǒng)的靈活性和通用性。在系統(tǒng)設(shè)計(jì)時(shí),表單屬性難以充分覆蓋,在應(yīng)用過(guò)程中常需要增加表單屬性。生成表單屬性的程序保存在stafile.xml文件中,通過(guò)在parfile.xml文件中修改ProNum參數(shù)的大小增加表單屬性。stafile.xml中的數(shù)據(jù)和程序如下:
表單屬性增加前有5個(gè)屬性,用戶界面如圖3a)所示。增加后,出現(xiàn)“病害測(cè)線尺寸”屬性列。此時(shí),用戶界面中出現(xiàn)該屬性,如圖3b)所示。
4 ?結(jié) ?語(yǔ)
通過(guò)基于XML的通用系統(tǒng)設(shè)計(jì)技術(shù),提高了公路養(yǎng)護(hù)管理系統(tǒng)的通用性,降低了界面元素與其涉及的數(shù)據(jù)庫(kù)操作修改的難度。利用靜態(tài)信息層文件stafile.xml保存界面元素和數(shù)據(jù)實(shí)體的基礎(chǔ)數(shù)據(jù)與標(biāo)識(shí)符,參數(shù)層文件parfile.xml保存參數(shù)信息。在應(yīng)用實(shí)例中,通過(guò)配置myCho參數(shù)改變了驗(yàn)證碼的類型;通過(guò)修改ProNum和Property參數(shù),增加了“病害測(cè)線尺寸”屬性列。對(duì)于非程序開發(fā)人員,也可進(jìn)行系統(tǒng)的配置,系統(tǒng)的通用性得到增強(qiáng)。
參考文獻(xiàn)
[1] AVEN O I. Formalization and standardization of automated management system development [J]. Automation and remote control, 1969, 1(5): 108?129.
[2] BIGGAR P, VRIES E D, GREGG D. A practical solution for scripting language compilers [C]// Proceedings of the 2009 ACM Symposium on Applied Computing. Honolulu: ACM, 2009: 1916?1923.
[3] MAO F, CAI X, SHEN B, et al. Operational pattern based code generation for management information system: an industrial case study [C]// Proceedings of 17th IEEE/ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing. Shanghai: IEEE, 2016: 425?430.
[4] SPINK T, WAGSTAFF H, FRANKE B, et al. Efficient code generation in a region?based dynamic binary translator [C]// Proceedings of the 2014 SIGPLAN/SIGBED Conference on Languages, Compilers and Tools for Embedded Systems. New York: ACM, 2014: 3?12.
[5] ROSALES?MORALES V Y, ALOR?HERN?NDEZ G, GARC?A?ALCAR?Z J L, et al. An analysis of tools for automatic software development and automatic code generation [J]. Revista Facultad de Ingeniería Universidad de Antioquia, 2015(77): 75?87.
[6] BHULLAR N S, CHHABRA B, VERMA A. Exploration of UML diagrams based code generation methods [C]// Proceedings of 2016 International Conference on Inventive Computation Technologies. Coimbatore: IEEE, 2016: 1?5.
[7] ELSON M, RAKE S T. Code?generation technique for large?language compilers [J]. IBM systems journal, 1970, 9(3): 166?188.
[8] GAMECHO B, MI??N R, AIZPURUA A, et al. Automatic generation of tailored accessible user interfaces for ubiquitous services [J]. IEEE transactions on human?machine systems, 2015, 45(5): 612?623.
[9] BANDIRMALI N. MtCMF: a novel memory table based content management framework for automatic website generation [J]. Computer standards & interfaces, 2017, 58(5): 43?52.
[10] 杜一,鄧昌智,田豐,等.一種可擴(kuò)展的用戶界面描述語(yǔ)言[J].軟件學(xué)報(bào),2013,24(5):1127?1142.
DU Yi, DENG Changzhi, TIAN Feng, et al. Extensible user interface description language [J]. Journal of software, 2013, 24(5): 1127?1142.
[11] 承林,王海寧,高春成.微服務(wù)在電力交易系統(tǒng)中的應(yīng)用研究[J].電網(wǎng)技術(shù),2018,42(2):441?446.
CHENG Lin, WANG Haining, GAO Chuncheng. Research on application of micro service in power transaction system [J]. Power system technology, 2018, 42(2): 441?446.
[12] 杜景林,喻亞楠.基于SSH框架的NC數(shù)據(jù)可視化驗(yàn)證系統(tǒng)研究[J].現(xiàn)代電子技術(shù),2018,41(2):166?169.
DU Jinglin, YU Yanan. Research on NC data visualization verification system based on SSH framework [J]. Modern electronics technique, 2018, 41(2): 166?169.