亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        AVIDM產(chǎn)品XML配置文件讀取研究及應(yīng)用

        2016-07-22 20:03:31李天立
        電腦知識(shí)與技術(shù) 2016年16期
        關(guān)鍵詞:配置文件

        李天立

        摘要:AVIDM 5.0系統(tǒng)在開發(fā)過程中,采用了模塊化的開發(fā)方法,每個(gè)模塊都使用了大量的配置文件,用于支撐屬性格式化、模型樹配置、功能權(quán)限、默認(rèn)出廠配置等方面的應(yīng)用。使用的配置文件類型主要包括Properties格式和xml格式。Properties格式的屬性文件結(jié)構(gòu)簡(jiǎn)單,包括key和Value,加載過程中可以自動(dòng)覆蓋和合并,由于其配置、合并和使用簡(jiǎn)單,在屬性定義方面有很好的應(yīng)用。AVIDM 5.0系統(tǒng)中有大量結(jié)構(gòu)化的配置信息需要使用xml格式的配置文件[1]。Xml格式的優(yōu)點(diǎn)是具有層級(jí)結(jié)構(gòu),但是XML文件的合并確有一定的難度。AVIDM 5.0系統(tǒng)支持模塊化開發(fā),模塊之間需要對(duì)某一個(gè)主要的結(jié)構(gòu)化配置文件進(jìn)行擴(kuò)展和補(bǔ)充,因此多模塊環(huán)境下xml配置文件的查找、合并和解析便成了亟需解決的技術(shù)難題。該文針對(duì)以上需求提出了一種解決方案,并在給出了具體的實(shí)踐案例,該方案不僅適合AVIDM系統(tǒng),也適合所有基于模塊開發(fā)的軟件應(yīng)用系統(tǒng)。

        關(guān)鍵詞:xml;模塊開發(fā);配置文件;開發(fā)規(guī)范

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)16-0113-03

        1 問題空間界定

        神舟AVIDM(企業(yè)級(jí)協(xié)同產(chǎn)品研制管理平臺(tái)),是神舟軟件公司在制造業(yè)信息化領(lǐng)域歷經(jīng)十余年打造出的擁有自主知識(shí)產(chǎn)權(quán)的、基于Web的企業(yè)級(jí)PDM/PLM產(chǎn)品。產(chǎn)品基于JavaEE和面向服務(wù)體系結(jié)構(gòu),全面采用Java、JSP、Applet等技術(shù),實(shí)現(xiàn)產(chǎn)品研制所需數(shù)據(jù)、應(yīng)用資源、軟件工具與計(jì)算設(shè)備的有機(jī)集成。 AVIDM產(chǎn)品的宗旨為以信息技術(shù)為基礎(chǔ),以項(xiàng)目管理為主線、以技術(shù)流程和計(jì)劃流程為依據(jù)、以滿足國(guó)防和軍工復(fù)雜產(chǎn)品技術(shù)狀態(tài)管理為目標(biāo),為企業(yè)構(gòu)建起一個(gè)基于Web的、從設(shè)計(jì)、生產(chǎn)到管理綜合集成的分布式集成系統(tǒng)平臺(tái)和協(xié)同工作環(huán)境[2]。在AVIDM系統(tǒng)的開發(fā)過程中,采用了大量的配置文件。為了方便研究多模塊配置文件讀取的模型和普適性的實(shí)現(xiàn)方法,我們可以將問題空間的前提條件界定如下:

        1) 屬性文件單獨(dú)存儲(chǔ)。

        2) 應(yīng)用模塊的xml配置文件單獨(dú)存儲(chǔ)。

        3) 應(yīng)用模塊都具有功能類似的xml配置文件。

        4) 應(yīng)用模塊功能類似的xml格式配置文件存放目錄層級(jí)結(jié)構(gòu)及層級(jí)目錄名稱相同。

        5) 應(yīng)用模塊功能類似的xml配置文件的內(nèi)容節(jié)點(diǎn)層級(jí)結(jié)構(gòu)及必要節(jié)點(diǎn)id相同。

        6) 應(yīng)用模塊類似功能的xml配置文件支持根據(jù)類似功能合并其內(nèi)容,可以達(dá)到擴(kuò)展功能的目的。

        7) 應(yīng)用模塊不同功能的xml配置文件需要統(tǒng)一配置和解析,以解決模塊對(duì)不同配置文件的需求。

        8) 解析后的配置文件轉(zhuǎn)換為對(duì)象可以供調(diào)用方直接使用。

        以上假定條件具有一般性意義,能夠覆蓋AVIDM產(chǎn)品開發(fā)過程中讀取xml配置文件的各種具體需求,讓各種具體需求成為他們的子集,并且通過特定的手段和方法處理后得到解決。

        2 xml配置文件讀取方案

        為了實(shí)現(xiàn)多模塊環(huán)境下結(jié)構(gòu)化信息配置文件的查找、合并和解析,在充分參考國(guó)內(nèi)外先進(jìn)技術(shù)后,提出了解決問題的思路:

        1)配置文件按照約定的根目錄和目錄深度存放,以便于使用Spring提供的通過通配符查找文件的方法加載文件[3]。

        在AVIDM 5.0系統(tǒng)中,約定使用一個(gè)存放在固定位置的目錄AVIDM_HOME作為配置文件存放的根目錄,在根目錄下建立一個(gè)plm目錄作為多項(xiàng)目配置文件的父目錄,每個(gè)項(xiàng)目下需要擴(kuò)展的配置文件按照約定的路徑存放在相應(yīng)的目錄下。比如:模塊adm需要擴(kuò)展按鈕的定義,則其配置文件的存放路徑為%AVIDM_HOME%/plm/adm/actions,其中adm為模塊名字,actions為約定的目錄,使用Spring查找文件的路徑通配格式為%AVIDM_HOME%/plm/*/actions,以此可以獲取該目錄下所有的文件。

        2)Xml配置文件中所有待合并的結(jié)構(gòu)化元素根據(jù)結(jié)構(gòu)化的層級(jí)和id屬性值兩個(gè)標(biāo)準(zhǔn)進(jìn)行元素合并。

        Apache組織的頂級(jí)項(xiàng)目Configuration默認(rèn)提供三種Xml配置文件合并模式:元素合并,即以后來的元素完全覆蓋該元素,屬性覆蓋,即把相同結(jié)構(gòu)層級(jí)相同元素的屬性以解析的先后順序覆蓋,屬性合并,即把相同結(jié)構(gòu)層級(jí)相同元素相同屬性的屬性值以逗號(hào)隔開合并起來。在AVIDM 5.0系統(tǒng)中,所有的xml元素都有id屬性,并且該id屬性在同層級(jí)結(jié)構(gòu)中不會(huì)重復(fù),相同的屬性id為相同的元素?;诖颂卣鳎珻onfiguration項(xiàng)目中提供的默認(rèn)配置都不能滿足合并要求。在該創(chuàng)新中通過擴(kuò)展“屬性覆蓋“方法并添加id屬性相等的需求,實(shí)現(xiàn)可擴(kuò)展的xml配置文件合并。

        3 xml配置文件讀取支撐技術(shù)

        在多模塊xml配置文件模型的支撐下,為了保證多模塊環(huán)境下xml配置文件讀取服務(wù)能夠達(dá)到預(yù)期目標(biāo),我們?cè)谧裱浖こ桃?guī)范[4]和AVIDM開發(fā)規(guī)范的基礎(chǔ)上,設(shè)計(jì)了基于公共服務(wù)組件的xml配置文件讀取組件。整個(gè)組件由用戶調(diào)用接口、xml文件配置規(guī)范、xml文件重新加載機(jī)制,xml配置文件讀取支撐技術(shù)等部分組成。具體內(nèi)容如下:

        1) 用戶調(diào)用接口:旨在為使用方提供統(tǒng)一、方便的調(diào)用服務(wù)。該服務(wù)方法符合AVIDM系統(tǒng)服務(wù)的開發(fā)調(diào)用規(guī)范。在AVIDM系統(tǒng)中,所有的服務(wù)都要提供相應(yīng)的助手類,由助手類獲取到相應(yīng)的服務(wù),供調(diào)用方使用。接口的實(shí)現(xiàn)類由spring管理,通過助手類使用靜態(tài)的方法從Spring的管理的對(duì)象池中獲取接口實(shí)現(xiàn)類的單例,并提供給調(diào)用方使用。

        2) xml配置文件規(guī)范:AVIDM產(chǎn)品中xml配置文件需要滿足相應(yīng)的規(guī)范,以便于實(shí)現(xiàn)xml配置文件的合并解析。配置文件規(guī)范分為合并規(guī)范、解析規(guī)范、配置文件存放路徑規(guī)范。

        ① xml配置文件合并規(guī)范:在AVIDM產(chǎn)品中,需要合并的xml配置文件的根元素必須相同,在根元素上不添加屬性。根元素以下的元素需要合并時(shí),需要提供元素的id標(biāo)識(shí),合并的內(nèi)容包括元素的屬性和元素的子元素。不需要合并的元素,則以新元素的規(guī)則增加到合并后的內(nèi)容中。

        ② xml配置文件解析規(guī)范:解析每一個(gè)元素對(duì)應(yīng)一個(gè)類,多個(gè)相同元素對(duì)應(yīng)列表類,元素的屬性對(duì)應(yīng)類的屬性,屬性的名稱與類中屬性的名稱相同,使用該規(guī)范可以保證xml文件的配置、糾錯(cuò)簡(jiǎn)單可行。

        ③ 配置文件存放路徑規(guī)范:需要合并的配置文件存放路徑相對(duì)于模塊的根目錄必須一致,以便于使用路徑模糊匹配規(guī)則查找文件。

        3) xml配置文件重新加載:修改修改配置文件后,在不影響生產(chǎn)環(huán)境正常運(yùn)行的情況下需要支持配置文件的重新加載,即時(shí)生效。產(chǎn)品在生產(chǎn)環(huán)境中,經(jīng)常會(huì)根據(jù)實(shí)際環(huán)境的運(yùn)行情況做一些調(diào)整,調(diào)整后需要即時(shí)生效,為了不影響系統(tǒng)的正常使用,提供了重新加載配置文件的服務(wù),供生產(chǎn)環(huán)境實(shí)時(shí)調(diào)用。

        4) xml配置文件讀取支撐技術(shù):xml相關(guān)的讀取解析技術(shù)目前已經(jīng)成熟,一些開源組織的公共組件提供了基本的讀取解析功能,在該方案中可以直接調(diào)用。

        4 應(yīng)用實(shí)例

        AVIDM系統(tǒng)是可擴(kuò)展、可組裝的系統(tǒng),新模塊按照一定的規(guī)則組裝到系統(tǒng)中,新模塊的功能可以擴(kuò)展已有系統(tǒng)的功能,也可以自定義新的功能,組裝到系統(tǒng)中。在系統(tǒng)中主要體現(xiàn)在按鈕的增加上,擴(kuò)展原有系統(tǒng)的功能,或者增加新的功能。

        在AVIDM系統(tǒng)中,存在數(shù)以千計(jì)的按鈕,這些按鈕按照如下的原則組織:

        1)按鈕定義:每個(gè)按鈕自身有若干屬性定義,比如標(biāo)題、圖標(biāo)、顯示文字、點(diǎn)擊后觸發(fā)的動(dòng)作、點(diǎn)擊后打開的頁面等屬性。

        2)按鈕組:多個(gè)按鈕排列組合成按鈕組。每個(gè)按鈕的定義或者組裝都有唯一標(biāo)識(shí),系統(tǒng)根據(jù)該唯一標(biāo)識(shí)使用按鈕或者按鈕組。不同的模塊可以擴(kuò)展按鈕組中的按鈕,以增加新的功能。在系統(tǒng)運(yùn)行過程中,需要合并所有的按鈕組定義文件,并把合并后的結(jié)果轉(zhuǎn)換成按鈕對(duì)象供系統(tǒng)調(diào)用和展示。

        假設(shè)系統(tǒng)中存模塊foundation和pdm兩個(gè)模塊,每個(gè)模塊中都有action定義的屬性配置文件,則文件之間的關(guān)系可以表述如圖1:

        系統(tǒng)在運(yùn)行過程中需要根據(jù)模塊來合并相同功能的屬性配置文件,根據(jù)模塊下的路徑區(qū)分不同功能的屬性文件。

        系統(tǒng)中也存在不同功能的配置文件,比如按鈕組的定義文件,foundation模塊和pdm模塊之中的按鈕定義配置文件間的關(guān)系如圖2所示:

        在遵循開發(fā)規(guī)范的前提下,設(shè)計(jì)出了讀取配置文件的java類圖,如圖3所示。

        在ConfigServiceImpl中實(shí)現(xiàn)對(duì)文件的讀取、合并、解析。

        1)讀?。赫{(diào)用Spring框架中已有的方法按照路徑通配符的方式讀取文件,具體做法是使用Spring的路徑匹配的資源解析器獲取到文件資源。

        2)合并:根據(jù)Apache通用項(xiàng)目Configuration中的工具類CombinedConfiguration調(diào)用自定義的合并器實(shí)現(xiàn)按照ID合并xml文件。

        3)解析:使用Apache通用項(xiàng)目Digester工具類解析合并后的xml文件,轉(zhuǎn)換成相應(yīng)的對(duì)象。

        4)把所有屬性文件的路徑等配置到固定的元數(shù)據(jù)配置xml中,把所有xml讀取、合并、解析所需要的信息配置到固定的元數(shù)據(jù)配置文件中,根據(jù)該元數(shù)據(jù)配置文件讀取、合并、解析相關(guān)的類,并實(shí)現(xiàn)重新加載。

        5 結(jié)束語

        使用該方案成功地實(shí)現(xiàn)了多模塊下屬性文件和xml配置文件的查找與合并,由于其易于理解和學(xué)習(xí)、使用方便、穩(wěn)定性高等優(yōu)點(diǎn),在AVIDM 5.0系統(tǒng)中得到了充分的應(yīng)用。

        1) 應(yīng)用在按鈕配置模塊,實(shí)現(xiàn)了多模塊下按鈕的無縫擴(kuò)展。在AVIDM 5.0系統(tǒng)中,界面上的操作按鈕統(tǒng)一使用配置文件定義和管理,首先使用Properties配置文件實(shí)現(xiàn)單個(gè)按鈕各個(gè)屬性的定義,使用xml文件把單個(gè)按鈕組織成按鈕組合,系統(tǒng)根據(jù)按鈕組合的標(biāo)識(shí)讀取該按鈕并展示到系統(tǒng)中。使用該方案可以擴(kuò)展按鈕組合的配置文件從而實(shí)現(xiàn)多模塊下按鈕配置的擴(kuò)展。

        2) 應(yīng)用在功能權(quán)限模塊,實(shí)現(xiàn)了功能權(quán)限定義、列表展示、出廠默認(rèn)配置等的擴(kuò)展。功能權(quán)限定義、功能權(quán)限列表展示、功能權(quán)限出廠默認(rèn)配置功能所需要的信息都以結(jié)構(gòu)化的形式存儲(chǔ)在xml配置文件中,以id屬性標(biāo)示其唯一性,其他屬性存儲(chǔ)在該元素中,從而使用該方案可以完美解決功能權(quán)限模塊的擴(kuò)展。

        該方案支持按照目錄結(jié)構(gòu)的xml文件的查找,其本身具備的按目錄查找能力不僅適用于properties文件、xml文件等普通文件的查找,也適應(yīng)與其他格式的普通文件查找。其結(jié)構(gòu)化的xml配置文件合并能力也可適用于不具有id屬性的xml元素的合并。因此在AVIDM 5.0系統(tǒng)中其他有xml合并和按目錄查找文件需求的模塊也從可以從中受益。

        參考文獻(xiàn):

        [1] 王海波,耿暉,姜吉發(fā),等. 基于XML的數(shù)據(jù)交換的實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用,2010(4).

        [2] 北京神舟航天軟件技術(shù)有限公司[EB/OL].http://www.bjsasc.com/AVIDMintro.html.

        [3] 尹建璋.基于XML的應(yīng)用層數(shù)據(jù)交換技術(shù)的研究[J].計(jì)算機(jī)與現(xiàn)代化,2009,9(8).

        [4] 張海藩. 軟件工程導(dǎo)論[M].3版.北京:清華大學(xué)出版社,1998.

        猜你喜歡
        配置文件
        提示用戶配置文件錯(cuò)誤 這樣解決
        搭建簡(jiǎn)單的Kubernetes集群
        互不干涉混用Chromium Edge
        忘記ESXi主機(jī)root密碼怎么辦
        為View桌面準(zhǔn)備父虛擬機(jī)
        打印機(jī)設(shè)置
        国产激情自拍在线视频| 久久久久久久妓女精品免费影院| 国产亚洲无码1024| 91久久香蕉国产熟女线看 | 久久久久亚洲av片无码| 婷婷成人基地| 国产精品视频一区二区三区,| 白嫩少妇高潮喷水av| 少妇爆乳无码专区| 拍摄av现场失控高潮数次| 中国女人a毛片免费全部播放| 国产一区二区三区口爆在线| 国产成人精品无码一区二区三区| 国产精品成人99一区无码| 在线看亚洲十八禁网站| 谷原希美中文字幕在线| 久久久国产打桩机| 91视频香蕉| 免费女同毛片在线不卡| 激情综合五月婷婷久久| 开心五月激情综合婷婷| 国产高清在线精品一区αpp| 国产视频一区2区三区| 中国无码人妻丰满熟妇啪啪软件| 亚洲av无码一区二区乱子伦| 亚洲精品中文字幕乱码二区| av免费不卡一区二区| 青楼妓女禁脔道具调教sm| 国产主播在线 | 中文| 国产一区二区杨幂在线观看性色| 国产成人午夜福利在线观看| 人妻少妇精品视中文字幕国语| 美女视频永久黄网站免费观看国产| 青青草成人免费在线观看视频| 亚洲国产精品毛片av不卡在线| 波多野结衣在线播放一区| 国产免费一区二区三区在线视频| 日韩夜夜高潮夜夜爽无码| 久久天天躁狠狠躁夜夜爽| 国产成人福利av一区二区三区| 天堂视频在线观看一二区|