專利名稱:基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電力系統(tǒng)的微網(wǎng)可視化平臺應(yīng)用的技術(shù)領(lǐng)域,特別是涉及一種基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法。
背景技術(shù):
插件技術(shù)的出發(fā)點(diǎn)主要是為了使軟件能夠靈活地進(jìn)行擴(kuò)展功能,而不需要對主程序(框架程序)進(jìn)行重新編譯和發(fā)布。軟件的功能由框架程序和插件來決定。在框架程序和插件之間具有一個(gè)特定的接口,它們兩者須通過這個(gè)接口來傳遞數(shù)據(jù)或控制信息,以實(shí)現(xiàn)軟件功能。目前的插件多為單一環(huán)境運(yùn)行,不提供操作系統(tǒng)跨平臺支持。同時(shí),插件多為定制開發(fā),與框架耦合度高,不利于程序、功能的復(fù)用,同時(shí)各插件之間通訊方式繁瑣,開發(fā)工作復(fù)雜,容易出現(xiàn)錯(cuò)誤。
發(fā)明內(nèi)容
針對上述背景技術(shù)中存在的問題,本發(fā)明的目的在于提供一種基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,能夠使插件提供跨平臺支持,提高程序的復(fù)用性。一種基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,包括以下步驟:應(yīng)用程序加載插件管理器,向所述插件管理器發(fā)送插件的加載請求;所述插件管理器根據(jù)所述加載請求向?qū)?yīng)的插件發(fā)出加載消息;接收所述加載消息的插件在所述插件管理器中完成注冊;所述插件管理器向已注冊的插件請求獲取所述插件的接口類,并加載所述接口類;請求獲取所述插件的組件類注冊列表,并根據(jù)所述組件類注冊列表在所述插件管理器中注冊對應(yīng)的組件類。本發(fā)明的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法中,通過所述插件管理器對各個(gè)插件進(jìn)行管理,在應(yīng)用程序加載插件時(shí),可以通過所述插件管理器進(jìn)行一個(gè)插件加載、多個(gè)插件加載、遍歷插件目錄加載等多種插件加載方式。并且各個(gè)插件在所述插件管理器中完成注冊后,所述插件管理器先記載所述插件的接口類,再加載所述插件的組件類,則各個(gè)插件之間可以通過所述接口類完成插件之間的交互功能,插件間可通過特定方式通訊、調(diào)用、交互。提供了靜態(tài)庫插件加載功能,這樣發(fā)布軟件時(shí)只需要一個(gè)主程序文件,在內(nèi)部則是由多個(gè)靜態(tài)庫模塊組成,這樣既能發(fā)揮插件的可重用優(yōu)點(diǎn),又能減少程序文件數(shù)量,能夠使插件提供跨平臺支持,提高程序的復(fù)用性。
圖1是本發(fā)明基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法的流程示意圖;圖2是本發(fā)明的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法中事件驅(qū)動的流程圖;圖3是本發(fā)明的一個(gè)實(shí)施例中插件加載過程的流程示意圖4是本發(fā)明的一個(gè)實(shí)施例中事件驅(qū)動的執(zhí)行流程。
具體實(shí)施例方式請參閱圖1,圖1是本發(fā)明基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法的流程示意圖。所述基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,包括以下步驟:S101,應(yīng)用程序加載插件管理器,向所述插件管理器發(fā)送插件的加載請求;S102,所述插件管理器根據(jù)所述加載請求向?qū)?yīng)的插件發(fā)出加載消息;S103,接收所述加載消息的插件在所述插件管理器中完成注冊;S104,所述插件管理器向已注冊的插件請求獲取所述插件的接口類,并加載所述接口類;請求獲取所述插件的組件類注冊列表,并根據(jù)所述組件類注冊列表在所述插件管理器中注冊對應(yīng)的組件類。本發(fā)明程序框架與插件的耦合并同時(shí)實(shí)現(xiàn)了各個(gè)插件之間、平臺和插件之間的相互調(diào)用,從而提高了系統(tǒng)的健壯性、穩(wěn)定性、擴(kuò)展性和程序的復(fù)用性,減少了代碼開發(fā)量,方便了系統(tǒng)的復(fù)用、擴(kuò)展。尤其適合于解決微網(wǎng)可視化平臺與各個(gè)不同子系統(tǒng)插件的耦合的問題。
其中,對于步驟S101,通過所述插件管理器對相關(guān)組件類ID和組件類創(chuàng)建的接口函數(shù)指針進(jìn)行管理。優(yōu)選使用Boost函數(shù)庫中的智能指針類boost:: share_ptr對函數(shù)的生命周期進(jìn)行維護(hù)管理。插件生命周期包括程序啟動時(shí)插件的加載(構(gòu)造),程序運(yùn)行中插件的調(diào)用和程序退出時(shí)插件的釋放(析構(gòu))。在步驟SlOl中,程序首先校驗(yàn)插件管理類(PluginManager)是否加載,如果沒有加載則加載所述插件管理類,并獲取該類指針,如果已加載則直接獲取到該類指針。所述插件管理類加載插件的方式有多種,包括多個(gè)插件簡單加載、一個(gè)插件簡單加載、遍歷目錄下插件加載、靜態(tài)庫插件加載和通過配置文件對插件進(jìn)行加載。例如:
權(quán)利要求
1.一種基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,其特征在于,包括以下步驟: 應(yīng)用程序加載插件管理器,向所述插件管理器發(fā)送插件的加載請求; 所述插件管理器根據(jù)所述加載請求向?qū)?yīng)的插件發(fā)出加載消息; 接收所述加載消息的插件在所述插件管理器中完成注冊; 所述插件管理器向已注冊的插件請求獲取所述插件的接口類,并加載所述接口類;請求獲取所述插件的組件類注冊列表,并根據(jù)所述組件類注冊列表在所述插件管理器中注冊對應(yīng)的組件類。
2.如權(quán)利要求1所述的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,其特征在于,所述插件的接口類由純虛函數(shù)組成,并且具有一個(gè)由⑶ID字符串定義的常量名作為組件類ID。
3.如權(quán)利要求2所述的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,其特征在于,所述插件的組件類從所述接口類繼承,實(shí)現(xiàn)組件類中定義的接口函數(shù),并且所述組件類的構(gòu)造函數(shù)為保護(hù)型。
4.如權(quán)利要求1所述的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,其特征在于,所述應(yīng)用程序加載插件管理器的步驟包括: 所述應(yīng)用程序檢驗(yàn)插件管理類是否加載,如果沒有加載,則加載所述插件管理類并獲取所述插件管理類的指針,如果已加載則直接獲取所述指針。
5.如權(quán)利要求1所述的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,其特征在于,所述插件管理器加載插件的方式包括多個(gè)插件加載、單個(gè)插件加載;遍歷目錄下所有插件加載、靜態(tài)庫插件加載和通過配置文件對插件進(jìn)行加載。
6.如權(quán)利要求1所述的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,其特征在于,在所述插件管理器中注冊對應(yīng)的組件類之后進(jìn)一步包括一個(gè)初始化的步驟,具體包括: 初始化消息、命令、接口和事件,并通過系統(tǒng)定義消息在平臺中擴(kuò)展菜單和工具欄。
7.如權(quán)利要求6所述的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,其特征在于,在收到應(yīng)用程序關(guān)閉消息時(shí),所述插件管理器則按照插件加載順序逆序向各個(gè)插件發(fā)送釋放插件消息,各個(gè)插件收到所述釋放插件消息后釋放內(nèi)存,向所述插件管理器返回釋放成功消息,所述插件管理器收到所述釋放成功消息后向平臺返回該消息。
8.如權(quán)利要求1所述的基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法,其特征在于,進(jìn)一步包括以下步驟: 加載事件管理器; 各個(gè)所述插件接收所述插件管理器發(fā)送的初始化消息,向所述事件管理器注冊相應(yīng)的事件和響應(yīng)函數(shù); 當(dāng)所述事件被觸發(fā)時(shí),直接受事件驅(qū)動的插件向所述事件管理器發(fā)送數(shù)據(jù)和通知消息; 所述事件管理器根據(jù)所述通知消息,向已注冊的各個(gè)插件發(fā)送數(shù)據(jù),各個(gè)所述插件接收所述數(shù)據(jù)后執(zhí)行相應(yīng)的響應(yīng)函數(shù)進(jìn)行處理。
全文摘要
本發(fā)明提供一種基于微網(wǎng)可視化平臺的插件實(shí)現(xiàn)方法通過插件管理類加載插件,插件加載方式包括多個(gè)插件簡單加載、一個(gè)插件簡單加載、遍歷目錄下插件加載、靜態(tài)庫插件加載和通過配置文件對插件進(jìn)行加載。插件中包括消息、命令、事件和接口功能,并通過上述功能實(shí)現(xiàn)菜單、工具條等界面交互和組件間功能調(diào)用。通過智能指針維護(hù)組件生命周期,保證數(shù)據(jù)的健壯性、安全性和唯一性。提供了靜態(tài)庫插件加載功能,這樣發(fā)布軟件時(shí)只需要一個(gè)主程序文件,在內(nèi)部則是由多個(gè)靜態(tài)庫模塊組成,這樣既能發(fā)揮插件的可重用優(yōu)點(diǎn),又能減少程序文件數(shù)量,能夠使插件提供跨平臺支持,提高程序的復(fù)用性。適用于解決微網(wǎng)可視化平臺與各個(gè)不同子系統(tǒng)插件的耦合。
文檔編號G06F9/445GK103164239SQ20121053705
公開日2013年6月19日 申請日期2012年12月11日 優(yōu)先權(quán)日2012年12月11日
發(fā)明者胡亞平, 高雅, 劉振國, 陳炯聰, 余南華, 黃曙, 陳皓, 謝國財(cái), 劉菲, 夏亞君, 黃縉華, 徐興輝, 劉瑋, 李雙佑, 田艷華 申請人:廣東電網(wǎng)公司電力科學(xué)研究院, 天津天大求實(shí)電力新技術(shù)股份有限公司