張曉瑞,蔣衍君,閔彥榮,付豪,董懷普
(國(guó)電南自自動(dòng)化有限公司,南京 211153)
基于OSGi&RCP插件化的智能變電站集成軟件平臺(tái)架構(gòu)
張曉瑞,蔣衍君,閔彥榮,付豪,董懷普
(國(guó)電南自自動(dòng)化有限公司,南京 211153)
針對(duì)目前智能變電站在二次設(shè)備配置、運(yùn)維及管控系統(tǒng)中存在的問(wèn)題,結(jié)合“軟件工程”的理念,提出了一種基于OSGi&RCP插件化的多業(yè)務(wù)集成軟件平臺(tái)架構(gòu)。該架構(gòu)以java動(dòng)態(tài)模塊化OSGi規(guī)范和Eclipse RCP開源框架為基礎(chǔ),融合插件間面向服務(wù)的通信機(jī)制及插件內(nèi)接口與實(shí)現(xiàn)相分離的包(Package)最小化依賴設(shè)計(jì)方法,實(shí)現(xiàn)了系統(tǒng)面向多用戶、多業(yè)務(wù)的松耦合式集成,解決了傳統(tǒng)軟件架構(gòu)在開發(fā)、部署、工程應(yīng)用上周期長(zhǎng)、靈活性不足的缺陷,達(dá)到了“即插即用”的模塊化效果。實(shí)際工程應(yīng)用驗(yàn)證了該架構(gòu)的可行性與優(yōu)越性。
智能變電站;OSGi;Eclipse RCP;業(yè)務(wù)模塊化;即插即用
近年來(lái),智能電網(wǎng)建設(shè)發(fā)展迅速,變電站運(yùn)行技術(shù)水平和業(yè)務(wù)復(fù)雜程度越來(lái)越高[1-2],伴隨著行業(yè)技術(shù)標(biāo)準(zhǔn)的提升以及國(guó)內(nèi)外二次設(shè)備廠家當(dāng)前自身因素限制,導(dǎo)致二次設(shè)備配置與運(yùn)維面臨如下問(wèn)題:現(xiàn)有工具升級(jí)無(wú)法滿足智能變電站業(yè)務(wù)的發(fā)展速度需求;各個(gè)廠家設(shè)備配置、運(yùn)維差異性很大[3-4],無(wú)法實(shí)現(xiàn)資源共享,運(yùn)維人員需要掌握多廠家工具使用技巧;不同變電站的定制化需求無(wú)法得到滿足;個(gè)別工具業(yè)務(wù)集成太多,加重了硬件資源消耗,程序性能明顯下降,影響工作效率[5]。同時(shí),在現(xiàn)有人力資源與市場(chǎng)競(jìng)爭(zhēng)更加激烈的條件下,有些廠家已經(jīng)無(wú)法很好地適應(yīng)這種靈活多變的業(yè)務(wù)發(fā)展需求,如何尋找一種方案既能滿足主要客戶(國(guó)網(wǎng)、南網(wǎng)等)對(duì)新趨勢(shì)下變電站業(yè)務(wù)的發(fā)展需求,又能解決廠家頻繁疲于應(yīng)對(duì)變電站業(yè)務(wù)無(wú)限靈活擴(kuò)展的現(xiàn)狀[6-10],是現(xiàn)階段行業(yè)內(nèi)所有二次設(shè)備廠商急需要解決的一大難題。
針對(duì)以上問(wèn)題,本文提出了一種基于OSGi&RCP插件化的軟件平臺(tái)架構(gòu)方案,該架構(gòu)以java動(dòng)態(tài)模塊化開放服務(wù)網(wǎng)關(guān)OSGi(Open Service Gateway Initiative)平臺(tái)為基礎(chǔ),結(jié)合Eclipse的富客戶平臺(tái)RCP(Rich Client Platform)富客戶端開源框架,融合軟件工程中軟件復(fù)用與構(gòu)件化技術(shù),能夠在軟件架構(gòu)層把智能變電站的遠(yuǎn)動(dòng)、保信、在線監(jiān)測(cè)、計(jì)量、電力系統(tǒng)同步相量測(cè)量裝置(PMU)、合并計(jì)算、五防操作票、順控、遠(yuǎn)程瀏覽、告警直傳、源端維護(hù)等業(yè)務(wù)以及報(bào)文解析、國(guó)際化、數(shù)據(jù)庫(kù)讀寫等功能變成一個(gè)個(gè)風(fēng)格統(tǒng)一、可靈活組裝、跨平臺(tái)、易維護(hù)的“大一統(tǒng)”插件,供產(chǎn)品部門按用戶實(shí)際需求組裝系統(tǒng)完成發(fā)布工作。
1.1 抽象業(yè)務(wù)模塊分析
根據(jù)軟件需求分析中抽象化原則,按基礎(chǔ)業(yè)務(wù)模塊進(jìn)行抽象模塊化分割,再根據(jù)不同的業(yè)務(wù)要求,在公共基礎(chǔ)模塊之上進(jìn)行特有的業(yè)務(wù)功能點(diǎn)擴(kuò)展以滿足實(shí)際用戶的需求?;谶@一劃分原則,可以把整個(gè)變電站的配置及運(yùn)維管控相關(guān)需求抽象為:全站系統(tǒng)配置模塊、五防模塊、順控模塊、遠(yuǎn)程瀏覽模塊、源端維護(hù)模塊、遠(yuǎn)動(dòng)模塊、保信子站模塊和告警直傳模塊等,輔以網(wǎng)絡(luò)配置模塊、數(shù)據(jù)庫(kù)配置模塊、用戶管理模塊、權(quán)限管理模塊、日志模塊、程序配置與進(jìn)程監(jiān)控模塊、報(bào)文分析模塊、實(shí)時(shí)數(shù)據(jù)瀏覽模塊、統(tǒng)計(jì)模塊、持久化模塊等其他模塊。
1.2 架構(gòu)思路
根據(jù)本文引言中對(duì)當(dāng)前智能變電站的發(fā)展描述和抽象業(yè)務(wù)模塊分析,設(shè)想把變電站業(yè)務(wù)變成一個(gè)個(gè)的模塊化插件,通過(guò)按需分配的方法,找出所需要的插件集成到一個(gè)公共平臺(tái)上。該平臺(tái)可支撐所需業(yè)務(wù)插件的信息資源共享與動(dòng)態(tài)化插拔運(yùn)行,并能很好地?cái)U(kuò)展每一個(gè)功能業(yè)務(wù)模塊,同時(shí)對(duì)其他模塊不產(chǎn)生任何影響。
如果這個(gè)設(shè)想成立,該平臺(tái)需既能滿足對(duì)用戶界面(UI)模塊化、又能滿足業(yè)務(wù)服務(wù)調(diào)用模塊化。
圖2 軟件架構(gòu)
借鑒計(jì)算機(jī)技術(shù)方面對(duì)此問(wèn)題的解決方案,選擇基于OSGi&RCP的平臺(tái)架構(gòu)無(wú)疑是最好的思路。其框架圖如圖1所示。
圖1 多業(yè)務(wù)集成框架
1.3 架構(gòu)設(shè)計(jì)
根據(jù)1.1中描述的智能變電站抽象業(yè)務(wù)分割方法及1.2中提到的架構(gòu)思路描述,可以得到如圖2所示的架構(gòu)設(shè)計(jì)。
1.4 架構(gòu)分析與比較
三層軟件架構(gòu)是傳統(tǒng)富客戶端軟件系統(tǒng)最常用的設(shè)計(jì)方法,如圖3所示。這種架構(gòu)方案具有接口清晰、耦合度低、方便開發(fā)人員協(xié)作等特點(diǎn),但缺點(diǎn)也很明顯。這種傳統(tǒng)的縱向分層模型,每一層都依賴于下面層次提供的服務(wù),同時(shí)又被上面的層次所依賴,逐層依賴的組織方式使軟件趨于一個(gè)整體,正是這個(gè)“整體”使得各層次對(duì)于軟件正常運(yùn)行都是缺一不可的,無(wú)法抽取一部分作為獨(dú)立的軟件進(jìn)行發(fā)布和使用。隨著系統(tǒng)的不斷擴(kuò)展,每個(gè)層次上處理的業(yè)務(wù)都在增加,不僅影響系統(tǒng)的可靠性和穩(wěn)定性,同時(shí)對(duì)后期的維護(hù)提出了更高的要求。
圖3 傳統(tǒng)富客戶端軟件架構(gòu)
基于OSGi&RCP模塊化的架構(gòu)設(shè)計(jì)就是盡可能避免把軟件設(shè)計(jì)為一個(gè)整體,而是偏向于把軟件設(shè)計(jì)為一個(gè)核心加一系列插件構(gòu)成的功能模塊集合。相比傳統(tǒng)的分層架構(gòu)設(shè)計(jì),本方案具有以下優(yōu)勢(shì)。
(1)除了基礎(chǔ)資料(服務(wù)接口、實(shí)例類、公共資源類等)的核心插件外,其他的插件間都可以避免相互依賴,保證各個(gè)模塊間的相對(duì)獨(dú)立,同時(shí)插件間也不直接進(jìn)行交互通信,而是通過(guò)OSGi層中的注冊(cè)服務(wù)與監(jiān)聽服務(wù)進(jìn)行協(xié)作,可以解決多廠家服務(wù)插件共享問(wèn)題。
(2)模塊化設(shè)計(jì)可以讓軟件系統(tǒng)實(shí)現(xiàn)按需分配。
(3)系統(tǒng)得益于底層的OSGi天然的動(dòng)態(tài)化特性,可以很容易地進(jìn)行熱插拔和動(dòng)態(tài)更新。安裝和升級(jí)只需停用或替換對(duì)應(yīng)的模塊插件,而無(wú)需停用服務(wù)器,這樣對(duì)不相關(guān)的模塊不產(chǎn)生任何影響。
(4)提高系統(tǒng)的穩(wěn)定性與可擴(kuò)展性。一個(gè)功能模塊崩潰不會(huì)導(dǎo)致整個(gè)系統(tǒng)癱瘓,其他的功能模塊正常運(yùn)轉(zhuǎn),同時(shí)增加新的功能也不需要修改原有的功能模塊,實(shí)現(xiàn)了低成本、高靈活度的軟件功能擴(kuò)展與伸縮。
(5)強(qiáng)大的Eclipse開發(fā)工具平臺(tái)。RCP框架技術(shù)可以在技術(shù)層面控制界面樣式的統(tǒng)一,并且在此框架下開發(fā),可以很容易實(shí)現(xiàn)幫助文檔系統(tǒng)與國(guó)際化功能。
2.1 業(yè)務(wù)插件(Bundle)的組織與依賴方法
結(jié)合OSGi技術(shù)規(guī)范特性,該方案采用包(類)依賴的方式在編碼層面實(shí)現(xiàn)模塊插件間的依賴關(guān)系。其內(nèi)部實(shí)現(xiàn)則利用OSGi微內(nèi)核架構(gòu)的模塊層和生命周期層來(lái)完成。
在RCP框架下實(shí)現(xiàn)一個(gè)OSGi Bundle,不僅可以使用OSGi的標(biāo)準(zhǔn)應(yīng)用程序編程接口(API),同時(shí)還可以使用RCP框架自己的擴(kuò)展功能,依托Eclipse平臺(tái),很容易可視化編寫元數(shù)據(jù)描述MANIFEST.MF文件。這也是實(shí)現(xiàn)OSGi規(guī)范的插件與普通插件的區(qū)別所在。
該框架對(duì)插件的版本和包進(jìn)行了最小化管理,同時(shí)還有清晰的可視化插件依賴關(guān)系圖供系統(tǒng)設(shè)計(jì)階段使用。
2.2 業(yè)務(wù)插件間通信機(jī)制
一個(gè)復(fù)雜的業(yè)務(wù)模塊不會(huì)通過(guò)單一插件來(lái)實(shí)現(xiàn)所有功能,那么模塊間的通信是必須要解決的問(wèn)題。在最大化保證各個(gè)插件相對(duì)孤立的情況下,結(jié)合OSGi技術(shù)規(guī)范要求,該方案采用面向服務(wù)的通信方法。
服務(wù)不能孤立存在,每個(gè)服務(wù)都從屬并運(yùn)行在提供服務(wù)的Bundle上。Bundle要提供服務(wù)供其他插件模塊使用,首先需要把服務(wù)(類)注冊(cè)到基礎(chǔ)資料Bundle中,這個(gè)基礎(chǔ)資料Bundle底層采用一個(gè)由OSGi框架提供、可以被所有的Bundle共享的服務(wù)注冊(cè)表技術(shù)來(lái)實(shí)現(xiàn),其他Bundle使用服務(wù)時(shí)只需要從注冊(cè)表中查找相應(yīng)的服務(wù)拿來(lái)使用,從而避免了與提供服務(wù)的Bundle直接交互。因此,這種插件間的通信機(jī)制不需要關(guān)心該服務(wù)來(lái)源于哪里,也不需要關(guān)心導(dǎo)入提供服務(wù)的Bundle或?qū)ν獍l(fā)布什么樣的包。
2.3 UI插件與服務(wù)插件的實(shí)現(xiàn)
UI插件主要負(fù)責(zé)系統(tǒng)人機(jī)交互界面的靈活組裝,包括基礎(chǔ)框架界面的搭建、基礎(chǔ)模塊業(yè)務(wù)的界面顯示、多業(yè)務(wù)模塊透視圖的擴(kuò)展、業(yè)務(wù)功能菜單的擴(kuò)展、人機(jī)交互UI幫助系統(tǒng)等。系統(tǒng)UI插件組織結(jié)構(gòu)如圖4所示。
圖4 系統(tǒng)UI插件組織結(jié)構(gòu)
服務(wù)插件(非UI插件),此類插件主要負(fù)責(zé)多業(yè)務(wù)邏輯的處理,包括基礎(chǔ)業(yè)務(wù)邏輯單元的處理、業(yè)務(wù)接口包的暴露、插件間面向服務(wù)(類對(duì)象)交互的使用等。
2.4 插件粒度分割原則
基于OSGi&RCP技術(shù)的模塊化和運(yùn)行時(shí)動(dòng)態(tài)化都是以Bundle為基礎(chǔ)的,因此在設(shè)計(jì)規(guī)模較大的系統(tǒng)平臺(tái)架構(gòu)時(shí)Bundle的粒度劃分特別重要。不僅要做到低耦合、高內(nèi)聚,還要降低在系統(tǒng)運(yùn)行時(shí)更新Bundle的成本。本系統(tǒng)架構(gòu)按照以下原則對(duì)變電站業(yè)務(wù)做到了很好地劃分。
(1)根據(jù)智能變電站業(yè)務(wù)發(fā)展特點(diǎn),以業(yè)務(wù)為模塊劃分,視圖、菜單擴(kuò)展、功能服務(wù)分別生成插件(Bundle)。
(2)借鑒設(shè)計(jì)模式思想,通過(guò)設(shè)計(jì)模式模板為我們提供合適的封裝方案,比如工廠模式,將系統(tǒng)的復(fù)雜性、多樣性、易變性問(wèn)題通過(guò)工廠方法進(jìn)行封裝,降低系統(tǒng)的復(fù)雜性。
(3)并列原則,對(duì)于實(shí)現(xiàn)同一目標(biāo)而需要采用不同方式的功能分別生成插件,在打包發(fā)布系統(tǒng)時(shí)按需使用相應(yīng)Bundle。
(4)領(lǐng)域業(yè)務(wù)邏輯代碼與OSGi框架服務(wù)代碼分離原則,增加業(yè)務(wù)邏輯代碼的結(jié)構(gòu)清晰度,方便復(fù)用到非OSGi框架系統(tǒng)項(xiàng)目中。
(5)接口與實(shí)現(xiàn)分離原則,降低插件內(nèi)部代碼耦合度和屏蔽使用者對(duì)復(fù)雜業(yè)務(wù)實(shí)現(xiàn)類的關(guān)注。
與傳統(tǒng)的軟件架構(gòu)相比,基于OSGi & RCP插件化的軟件平臺(tái)架構(gòu)將智能變電站中的業(yè)務(wù)按業(yè)務(wù)模塊進(jìn)行劃分;利用設(shè)計(jì)模式的思想封裝業(yè)務(wù)模塊為插件;插件內(nèi)采用面向接口的編程方式解決業(yè)務(wù)邏輯的復(fù)雜性與多變性;插件外采用面向服務(wù)的機(jī)制完成插件間的交互,保證每個(gè)插件的孤立性;開發(fā)與發(fā)布分離,“積木式”組裝和特殊化定制相結(jié)合方式滿足不同用戶對(duì)不同或相同業(yè)務(wù)功能的按需分配;支持跨平臺(tái),能夠同時(shí)導(dǎo)出多個(gè)平臺(tái)上的產(chǎn)品;業(yè)務(wù)功能易擴(kuò)展,滿足智能變電站業(yè)務(wù)未來(lái)的發(fā)展方向。
雖然OSGi技術(shù)規(guī)范已經(jīng)非常成熟,但要在本文描述的架構(gòu)上開發(fā)出完美的系統(tǒng)還需要關(guān)注以下問(wèn)題:合理地規(guī)劃系統(tǒng),降低模塊間的耦合性;理解對(duì)象的生命周期,合理釋放Bundle資源,防止內(nèi)存泄漏;避免插件啟動(dòng)順序依賴,為后期維護(hù)埋下伏筆。
[1]孫一民,裘愉濤,楊慶偉,等.智能變電站設(shè)計(jì)配置一體化技術(shù)及方案[J].電力系統(tǒng)自動(dòng)化,2013,37(14):70-74.
[2]篤峻, 葉翔, 王長(zhǎng)瑞,等. 智能變電站設(shè)計(jì)配置一體化功能規(guī)范研究及工具開發(fā)[J]. 電力系統(tǒng)自動(dòng)化, 2014, 38(20):85-89.
[3]周恒俊, 曹培, 張金江,等. 面向高級(jí)量測(cè)體系的分布式對(duì)等互聯(lián)OSGi平臺(tái)[J]. 電力系統(tǒng)自動(dòng)化, 2011, 35(11):71-76.
[4]王麗華, 王治民, 任雁銘,等. 插件化IEC61850通信模塊設(shè)計(jì)與實(shí)現(xiàn)[J]. 電力系統(tǒng)自動(dòng)化, 2012, 36(5):82-85.
[5]趙燕茹, 楊臻, 張延,等. 智能變電站遠(yuǎn)動(dòng)與保信子站信息遠(yuǎn)傳功能集成方案[J]. 電力建設(shè), 2013, 34(12):48-52.
[6]悅怡. 基于OSGI的面向服務(wù)插件框架研究與應(yīng)用[D]. 鎮(zhèn)江:江蘇大學(xué), 2008.
[7]相東飛.基于OSGi插件化的應(yīng)用框架[J].科技信息(學(xué)術(shù)版),2007(12):176,179.
[8]WU C L, LIAO C F, FU L C.Service-oriented smart-home architecture based on OSGi and mobile-agent technology[J].IEEE transactions on systems, man and cybernetics, part c(applications and reviews),2007,37(2):193-205.
[9]GREGERSEN A R,JORGENSEN B N.Extending eclipse RCP with dynamic update of active plug-ins[J].The journal of object technology,2007,6(6):67.
[10]MCAFFERJ,VANDERLEI P,ARCHER S.OSGi and equinox:creating highly modular Java systems[M].Addison-wesley professional,2010.
(本文責(zé)編:劉炳鋒)
2016-11-25;
2017-01-09
TP 391
A
1674-1951(2017)02-0004-04
張曉瑞(1988—),男,山東濱州人,工程師,工學(xué)碩士,從事智能變電站配置與運(yùn)維系統(tǒng)研發(fā)方面的工作(E-mail:xiaorui-zhang@sac-china.com)。
蔣衍君(1975—),男,黑龍江尚志人,高級(jí)工程師,工學(xué)碩士,從事電力監(jiān)控及調(diào)度自動(dòng)化方面的工作(E-mail:yanjun-jiang@sac-china.com)。
閔彥榮(1985—),男,江蘇南京人,工程師,從事智能變電站配置與運(yùn)維系統(tǒng)研發(fā)方面的工作(E-mail:minyanrong@163.com)。
付豪(1986—),男,河南商丘人,工程師,工學(xué)碩士,從事智能變電站配置與運(yùn)維系統(tǒng)開發(fā)方面的工作(E-mail:hao-fu@sac-china.com)。
董懷普(1988—),男,河南商丘人,工程師,工學(xué)碩士,從事智能變電站配置與運(yùn)維系統(tǒng)開發(fā)方面的工作(E-mail:huaipu-dong@sac-china.com)。