插件框架處理裝置及插件系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種插件框架處理裝置及插件系統(tǒng),能夠?qū)崿F(xiàn)應(yīng)用的跨平臺使用。插件框架處理模塊包括:插件核心器、擴(kuò)展點(diǎn)管理器、應(yīng)用組合管理器、插件管理器;所述插件核心器,用于控制所述插件框架處理模塊工作狀態(tài),控制插件的安裝與卸載,控制插件消息訂閱與發(fā)送;所述擴(kuò)展點(diǎn)管理器,用于提供插件擴(kuò)展規(guī)范,使得多個插件相互通信;應(yīng)用組合管理器,定義應(yīng)用組合數(shù)據(jù)結(jié)構(gòu)并進(jìn)行應(yīng)用組合的管理。插件管理器用于調(diào)用應(yīng)用組合管理器,根據(jù)當(dāng)前應(yīng)用組合啟動所有插件。
【專利說明】插件框架處理裝置及插件系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機(jī)領(lǐng)域,尤其涉及一種插件框架處理裝置及插件系統(tǒng)。
【背景技術(shù)】
[0002]伴隨著軟件工程與信息化技術(shù)的發(fā)展,跨平臺技術(shù)的應(yīng)用開發(fā)顯得越來越重要。各種新平臺、新技術(shù)不斷涌現(xiàn),使得計算機(jī)軟件生產(chǎn)廠商及其設(shè)計人員面臨著如何適應(yīng)多種平臺,多操作系統(tǒng)共存的問題。
[0003]計算機(jī)技術(shù)產(chǎn)生至今,人們己經(jīng)成功的將其應(yīng)用于各行各業(yè),相應(yīng)地開發(fā)出大量適用于不同環(huán)境、功能各異的軟件。隨著近年來計算機(jī)技術(shù)的迅速發(fā)展,當(dāng)新硬件、新技術(shù)出現(xiàn)時,計算機(jī)的體系結(jié)構(gòu)、指令系統(tǒng)和操作系統(tǒng)都可能發(fā)生相應(yīng)的改變,這勢必會導(dǎo)致一部分應(yīng)用在新環(huán)境下無法正常運(yùn)行,如何解決應(yīng)用的跨平臺使用是當(dāng)前需要解決的問題。
【發(fā)明內(nèi)容】
[0004](一)要解決的技術(shù)問題
[0005]本發(fā)明提供一種插件框架處理裝置及插件系統(tǒng),能夠?qū)崿F(xiàn)應(yīng)用的跨平臺使用。
[0006](二)技術(shù)方案
[0007]—種插件框架處理模塊,包括:插件核心器、擴(kuò)展點(diǎn)管理器、應(yīng)用組合管理器、插件
管理器;
[0008]所述插件核心器,用于控制所述插件框架處理模塊工作狀態(tài),控制插件的安裝與卸載,控制插件消息訂閱與發(fā)送;
[0009]所述擴(kuò)展點(diǎn)管理器,用于提供插件擴(kuò)展規(guī)范,使得多個插件相互通信;
[0010]應(yīng)用組合管理器,定義應(yīng)用組合數(shù)據(jù)結(jié)構(gòu)并進(jìn)行應(yīng)用組合的管理。
[0011]插件管理器用于調(diào)用應(yīng)用組合管理器,根據(jù)當(dāng)前應(yīng)用組合啟動所有插件。
[0012]可選的,所述插件管理器具體用于,調(diào)用應(yīng)用組合管理器,得到當(dāng)前應(yīng)用組合所包含的插件列表,搜索指定的插件目錄,對搜索到的插件與應(yīng)用組合的插件列表進(jìn)行匹配,匹配后調(diào)用插件核心動態(tài)庫安裝對應(yīng)的插件到插件框架處理模塊,搜索該插件的配置文件,調(diào)用擴(kuò)展點(diǎn)管理器解析其中的擴(kuò)展點(diǎn),按照插件依賴關(guān)系依次啟動所有插件。
[0013]可選的,所述插件核心器通過應(yīng)用程序編程接口 API與插件進(jìn)行通信。
[0014]可選的,所述API使用static函數(shù)。
[0015]一種插件系統(tǒng),包括上述的插件框架處理模塊。
[0016]可選的,還包括:應(yīng)用組合開發(fā)模塊,用于生成應(yīng)用組合。
[0017]可選的,還包括:插件開發(fā)模塊,用于實現(xiàn)插件開發(fā)。
[0018]本發(fā)明實施例的插件框架處理裝置及插件系統(tǒng),通過插件之間進(jìn)行通信,從而實現(xiàn)應(yīng)用的跨平臺使用。
【專利附圖】
【附圖說明】[0019]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0020]圖1為本發(fā)明實施例提供的一種插件框架處理裝置的結(jié)構(gòu)示意圖;
[0021]圖2為本發(fā)明實施例提供的一種插件結(jié)構(gòu)示意圖;
[0022]圖3為本發(fā)明實施例提供的一種插件系統(tǒng)的結(jié)構(gòu)示意圖;
[0023]圖4為本發(fā)明實施例提供的另一種插件系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實施方式】
[0024]為使本發(fā)明的目的、內(nèi)容和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖對本發(fā)明的【具體實施方式】作進(jìn)一步詳細(xì)描述。以下用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。
[0025]Qt是利用C++程序設(shè)計語言開發(fā)的完全面向?qū)ο蟮闹С纸M件編程的程序設(shè)計語言,在開發(fā)起初設(shè)計者就考慮到了跨平臺性。利用它可以開發(fā)出很美觀的人機(jī)接口界面,使用戶感覺美觀自然,同時開發(fā)人員上手也比較快,且它的功能強(qiáng)大,易于擴(kuò)展,可以滿足需要。
[0026]OSGi規(guī)范描述了一個組件化、動態(tài)的服務(wù)插件開發(fā)平臺。在OSGi服務(wù)平臺中,開發(fā)人員通過開發(fā)插件為用戶提供所需要的功能,這些插件可以動態(tài)加載和卸載,或者根據(jù)需要遠(yuǎn)程下載和升級。
[0027]OSGi框架是一個微核心、全插件的框架,在它上面運(yùn)行的插件基本可以分為三個
層次:
[0028]核心層:負(fù)責(zé)程序的啟動,監(jiān)管程序的運(yùn)行,以及一些全局相關(guān)的事務(wù)的初始化并在結(jié)束時做一些清理工作(如注銷注冊的服務(wù),卸載);
[0029]服務(wù)層:解決技術(shù)問題的插件,服務(wù)插件向業(yè)務(wù)插件提供必要的技術(shù)服務(wù);
[0030]業(yè)務(wù)層:實現(xiàn)了用戶需求的業(yè)務(wù)功能。
[0031]擴(kuò)展點(diǎn)機(jī)制是插件框架的核心機(jī)制。插件間通過定義-實現(xiàn)擴(kuò)展點(diǎn),形成插件網(wǎng)絡(luò),并且解決了插件間的高度耦合性,使插件框架系統(tǒng)中的所有插件真正能夠?qū)崿F(xiàn)“熱插拔”。
[0032]擴(kuò)展點(diǎn)機(jī)制主要分為擴(kuò)展點(diǎn)的定義和擴(kuò)展點(diǎn)的實現(xiàn)。
[0033]擴(kuò)展點(diǎn)定義了給其他插件進(jìn)行擴(kuò)展的規(guī)范,其他插件必尋遵循這個規(guī)范才能與次插件通訊。通過擴(kuò)展點(diǎn)的方式,插件之間可以無縫的組合在一起工作,并靈活的實現(xiàn)插件功能的添加,升級,互換等。特別注意到,界面元素的定制也基于此擴(kuò)展點(diǎn)機(jī)制。
[0034]擴(kuò)展點(diǎn)管理器提供了擴(kuò)展點(diǎn)的管理服務(wù),包括擴(kuò)展點(diǎn)功能定義的搜索、擴(kuò)展點(diǎn)依賴關(guān)系的管理和擴(kuò)展點(diǎn)定義的推送等功能。
[0035]如圖1所示,本發(fā)明實施例提供一種插件框架處理模塊,包括:插件核心器11、擴(kuò)展點(diǎn)管理器12、應(yīng)用組合管理器13、插件管理器14 ;
[0036]所述插件核心器11,用于控制所述插件框架處理模塊工作狀態(tài),控制插件的安裝與卸載,控制插件消息訂閱與發(fā)送;
[0037]所述擴(kuò)展點(diǎn)管理器12,用于提供插件擴(kuò)展規(guī)范,使得多個插件相互通信;[0038]所述應(yīng)用組合管理器13,定義應(yīng)用組合數(shù)據(jù)結(jié)構(gòu)并進(jìn)行應(yīng)用組合的管理。
[0039]所述插件管理器14用于調(diào)用應(yīng)用組合管理器,根據(jù)當(dāng)前應(yīng)用組合啟動所有插件。
[0040]可選的,所述插件管理器14具體用于,調(diào)用應(yīng)用組合管理器,得到當(dāng)前應(yīng)用組合所包含的插件列表,搜索指定的插件目錄,對搜索到的插件與應(yīng)用組合的插件列表進(jìn)行匹配,匹配后調(diào)用插件核心動態(tài)庫安裝對應(yīng)的插件到插件框架處理模塊,搜索該插件的配置文件,調(diào)用擴(kuò)展點(diǎn)管理器解析其中的擴(kuò)展點(diǎn),按照插件依賴關(guān)系依次啟動所有插件。
[0041]可選的,所述插件核心器11通過應(yīng)用程序編程接口 API與插件進(jìn)行通信。
[0042]可選的,所述API使用static函數(shù)。
[0043]本發(fā)明實施例的插件框架處理裝置及插件系統(tǒng),通過插件之間進(jìn)行通信,從而實現(xiàn)應(yīng)用的跨平臺使用。
[0044]下面詳細(xì)說明本發(fā)明實施例的插件框架處理模塊。
[0045]插件核心器為動態(tài)庫,封裝一組插件框架起動與停止,插件安裝與卸載,插件啟動與停止,服務(wù)注冊與卸載,服務(wù)請求,消息訂閱與發(fā)送的API函數(shù),所有插件將依賴于這個模塊,調(diào)用這個模塊導(dǎo)出的API進(jìn)行所有插件框件,插件,插件服務(wù),插件消息相關(guān)的操作。為了簡化調(diào)用,本發(fā)明實施例所有API均使用static函數(shù)導(dǎo)出。
[0046]本發(fā)明實施例一個插件通過擴(kuò)展點(diǎn)以實現(xiàn)其功能的擴(kuò)展,擴(kuò)展點(diǎn)就是定義給其他插件進(jìn)行擴(kuò)展的規(guī)范,其他插件必須遵循這些規(guī)范才可用.具體實現(xiàn),擴(kuò)展點(diǎn)被定義為一些接口和相關(guān)的XML文檔說明.在文檔說明中指明了擴(kuò)展點(diǎn)的ID,名稱,以及對應(yīng)的接口定義.因此每一個插件都具有下面的三個配置文件,其中shema文件是可選的:
[0047]plug, xml:描述插件的擴(kuò)展點(diǎn),以及實現(xiàn)的其他插件的擴(kuò)展;
[0048]MAINFEST.MF:描述了插件的版本和版本更新信息,插件之間的包約束關(guān)系;
[0049]Shema文件(xxx.esxd):是對plug, xml文件中的標(biāo)簽的結(jié)構(gòu)的解釋;
[0050]擴(kuò)展點(diǎn)會暴露給其他插件,當(dāng)一個插件被加載時,會首先解析該插件的plug, xml和MAINFEST.MF文件,找出該插件所定義的所有擴(kuò)展點(diǎn),和已經(jīng)實現(xiàn)的其他插件的擴(kuò)展點(diǎn),進(jìn)而將這些信息寫進(jìn)一個特殊的插件擴(kuò)展注冊表里。
[0051]新插件是通過實現(xiàn)擴(kuò)展點(diǎn)來進(jìn)行功能擴(kuò)展的,新插件實現(xiàn)擴(kuò)展點(diǎn)中定義的接口,并且在plug, xml文件中說明說擴(kuò)展的擴(kuò)展點(diǎn),以及其具體實現(xiàn),通過這些信息,系統(tǒng)能夠識別出該插件所實現(xiàn)的擴(kuò)展點(diǎn).當(dāng)一個插件被加載時,系統(tǒng)會將其實現(xiàn)的擴(kuò)展注冊到一個特殊的插件擴(kuò)展注冊表中,當(dāng)插件卸載時,系統(tǒng)會將其從這個插件擴(kuò)展注冊表中刪除,而其他插件可以通過插件擴(kuò)展注冊表查找系統(tǒng)中某擴(kuò)展點(diǎn)的擴(kuò)展實現(xiàn),通過這種方式,新的插件可以進(jìn)行自由的拔插系統(tǒng)中,將會有一個獨(dú)立的擴(kuò)展點(diǎn)管理插件來完成上述的功能,如圖2所示:
[0052]在擴(kuò)展點(diǎn)的具體實現(xiàn)形式上,本發(fā)明實施例采用如下兩種方式:
[0053]第一種:Qt插件形式。如果使用這種實現(xiàn)形式,就要求在插件的plug, xml文件中,指定一個具體的抽象父類的名字,這個名字必須和類名是一致的,必須這么用的原因是因為Qt并沒有一個完全的反射機(jī)制,在使用Qt的插件機(jī)制實現(xiàn)擴(kuò)展點(diǎn)功能的時候,就必須顯式的寫出插件接口的父類的名字。這種實現(xiàn)方式的本質(zhì)是基于接口的實現(xiàn),因此可以認(rèn)為是一種緊偶合使用形式。而且這種插件機(jī)制是在部件級別的,并沒有上升到框架級別,因此很多在框架級別才有的機(jī)制,如安全機(jī)制,插件的依賴關(guān)系的管理機(jī)制等,它都沒有。[0054]第二種:0SGI的插件機(jī)制。如果使用這種實現(xiàn)形式,不要求在插件的plug, xml文件中指定一個具體的抽象父類的名字,可以僅僅用一個ID來標(biāo)識它,然后把這個ID和一個具體的OSGI插件做一個內(nèi)部映射就可以了,OSGI的插件機(jī)制本質(zhì)上是一個基于服務(wù)的實現(xiàn),是一個松偶合的使用形式,插件之間的關(guān)系是平等的,沒有任何偶合的關(guān)系.同時OSGI的插件機(jī)制不同于Qt的插件機(jī)制,它是框架級別的,完整的提供了安全機(jī)制,插件的依賴關(guān)系的管理機(jī)制等功能。
[0055]本發(fā)明實施例中插件之間的通信方式主要有兩種:
[0056]服務(wù)的方式:插件對外提供服務(wù)的方式可以供其他插件直接調(diào)用插件服務(wù)提供的接口訪問到插件的資源。插件可以通過增加新的服務(wù)或公用接口來增加插件的擴(kuò)展點(diǎn),供外部插件調(diào)用來實現(xiàn)新的擴(kuò)展功能。同時提供serviceListener來監(jiān)聽服務(wù)的狀態(tài)變化,從而可以動態(tài)的調(diào)整依賴此服務(wù)的插件的狀態(tài)。
[0057]使用Event Bus實現(xiàn)插件間的獨(dú)立的通信機(jī)制,Event Bus也是一種OSGI插件,基于訂閱/發(fā)布機(jī)制來實現(xiàn)通信,這是OSGI極力推薦的通信方式,在系統(tǒng)中將主要采取這種通信方式。
[0058]本發(fā)明實施例中使用Event Bus實現(xiàn)插件間的獨(dú)立的通信機(jī)制。
[0059]每個插件都會定義自己處理的數(shù)據(jù)格式、所接收的消息類型等等。插件之間通過廣播插件類型和數(shù)據(jù)來相互調(diào)用。
[0060]本發(fā)明實施例中內(nèi)核器通過Framework Listener和plugin Listener來監(jiān)視Framework和插件的生命周期狀態(tài)的改變。
[0061]插件對外提供服務(wù)的方式可以供其他插件直接調(diào)用插件服務(wù)提供的接口訪問到插件的資源。插件可以通過增加新的服務(wù)或公用接口來增加插件的擴(kuò)展點(diǎn),供外部插件調(diào)用來實現(xiàn)新的擴(kuò)展功能。
[0062]系統(tǒng)使用serviceListener來監(jiān)聽服務(wù)的狀態(tài)變化,從而可以動態(tài)的調(diào)整依賴此服務(wù)的插件的狀態(tài)。
[0063]本發(fā)明實施例中內(nèi)核模塊負(fù)責(zé)搜索、加載、啟動/關(guān)閉插件。
[0064]啟動后,會首先搜索和加載用戶許可校驗插件,用以確定用戶許可使用的插件。然后加載和啟動集成界面插件。
[0065]擴(kuò)展點(diǎn)管理器為插件,所有與擴(kuò)展點(diǎn)相關(guān)的操作由本模塊完成,本插件提供兩個月艮務(wù)(Service),分別是 IExtensionAdminService 和 IPluginExtensionListener。
[0066]IExtensionAdminService提供擴(kuò)展點(diǎn)解析和擴(kuò)展點(diǎn)監(jiān)聽功能。
[0067]擴(kuò)展點(diǎn)解析:是擴(kuò)展點(diǎn)管理的基礎(chǔ)功能,傳入指定的擴(kuò)展點(diǎn)文件(在本系統(tǒng)中默認(rèn)為plug, xml),本插件將解析其中的xml內(nèi)容并將解析后的內(nèi)容發(fā)送給監(jiān)聽插件。
[0068]擴(kuò)展點(diǎn)監(jiān)聽:其它插件向本插件注冊為監(jiān)聽者,當(dāng)解析后的擴(kuò)展點(diǎn)有實現(xiàn)了該監(jiān)聽插件的擴(kuò)展,將被推送至監(jiān)聽者。凡是定義了擴(kuò)展點(diǎn)的插件都應(yīng)當(dāng)注冊為監(jiān)聽者,這樣當(dāng)有任意插件(包括本插件)實現(xiàn)了對應(yīng)的擴(kuò)展點(diǎn)時,這些擴(kuò)展點(diǎn)信息都將會被推送至監(jiān)聽插件,并由監(jiān)聽插件進(jìn)行進(jìn)一步的分析和處理。
[0069]IPluginExtensionLister:提供監(jiān)聽接口
[0070]每一個需要監(jiān)聽擴(kuò)展點(diǎn)推送消息的插件都需要實現(xiàn)一個監(jiān)聽接口,并將接口通過IExtensionAdminService注冊到擴(kuò)展點(diǎn)管理插件中。監(jiān)聽接口的實現(xiàn):根據(jù)本插件定義的擴(kuò)展點(diǎn)格式對推送至的擴(kuò)展點(diǎn)信息進(jìn)行業(yè)務(wù)層面的解析,并完成相應(yīng)的功能。
[0071]應(yīng)用組合器(Appcombin)為動態(tài)庫,定義應(yīng)用組合數(shù)據(jù)結(jié)構(gòu)并進(jìn)行應(yīng)用組合的管理。開放兩個頭文件:appcombin.h和appcombinmanager.h供調(diào)用方使用。Appcombin.h文件主要定義應(yīng)用組合的數(shù)據(jù)結(jié)構(gòu),每一個應(yīng)用組合均包含一組插件,以及對應(yīng)的界面信息。appcombinmanager.h中導(dǎo)出類AppCombinManager,主要提供應(yīng)用組合的增刪查改等功能。
[0072]插件管理器(PluginManger)為動態(tài)庫,插件管理器作為整個插件系統(tǒng)運(yùn)行的發(fā)起者,首先調(diào)用應(yīng)用組合管理器,得到當(dāng)前應(yīng)用組合所包含的插件列表,然后搜索指定的插件目錄,對搜索到的插件與應(yīng)用組合的插件列表進(jìn)行匹配,匹配后調(diào)用插件核心動態(tài)庫安裝對應(yīng)的插件到插件框架中,然后搜索該插件的配置文件(plugin, xml),調(diào)用擴(kuò)展點(diǎn)管理器解析其中的擴(kuò)展點(diǎn),然后按照插件依賴關(guān)系依次啟動所有插件,完成整個系統(tǒng)的啟動。
[0073]如圖3所示,本發(fā)明實施例提供一種插件系統(tǒng),上述實施例提供的插件框架處理模塊I。
[0074]可選的,如圖3所示,還包括:應(yīng)用組合開發(fā)模塊2,用于生成應(yīng)用組合。
[0075]可選的,如圖3所示,還包括:插件開發(fā)模塊3,用于實現(xiàn)插件開發(fā)。
[0076]本發(fā)明實施例的插件系統(tǒng)可以采用如圖4所示的框架結(jié)構(gòu)。
[0077]具體實現(xiàn)時,本發(fā)明實施例的插件系統(tǒng)具體包括:
[0078]I)動態(tài)模塊(插件化)系統(tǒng);
[0079]a.插件生命周期
[0080]1.插件框架的啟動與停止
[0081]i1.插件發(fā)現(xiàn),安裝,啟動,停止
[0082]ii1.插件的依賴性管理:插件啟動時,根據(jù)依賴關(guān)系,順序啟動相關(guān)依賴的插件
[0083]b.插件服務(wù)管理:
[0084]1.提供服務(wù)的注冊,查詢,調(diào)用,卸載
[0085]c.插件事件管理插件
[0086]1.插件事件定義,訂閱,發(fā)送,事件處理
[0087]d.擴(kuò)展點(diǎn)管理插件
[0088]1.擴(kuò)展點(diǎn)格式定義
[0089]i1.擴(kuò)展點(diǎn)的搜索、解析和推送
[0090]e.應(yīng)用組合管理
[0091]1.應(yīng)用組合定義
[0092]i1.應(yīng)用組合的讀寫
[0093]ii1.應(yīng)用組合的持久化
[0094]iv.加載并解析應(yīng)用組合配置文件
[0095]V.加載并啟動應(yīng)用組合所對應(yīng)的插件
[0096]f.配置管理
[0097]1.插件及擴(kuò)展點(diǎn)相關(guān)信息的持久化
[0098]i1.提供全局的配置信息持久化接口
[0099]2)插件開發(fā)向?qū)В?br>
[0100]通過向?qū)Х绞?,幫助系統(tǒng)維護(hù)和開發(fā)人員快速的創(chuàng)建和編輯系統(tǒng)業(yè)務(wù)插件,并通過配置步驟,完成插件信息的初始化以及模板代碼的生成。它主要包括:
[0101]a.插件基礎(chǔ)信息編輯
[0102]b.插件擴(kuò)展點(diǎn)信息編輯
[0103]c.插件第三方支持模板代碼生成
[0104]d.插件界面元素定義
[0105]通過使用開發(fā)向?qū)?,可以減少大量重復(fù)性的代碼編程工作,提高工作效率的同時,減少了意外出錯的可能性。
[0106]3)應(yīng)用組合定制工具;
[0107]應(yīng)用組合定制工具用于應(yīng)用組合管理工作,包括應(yīng)用組合的新建,編輯,刪除,查詢,發(fā)布等。
[0108]應(yīng)用組合可瀏覽包含的所有插件的界面元素信息,由用戶手工來添加到應(yīng)用組合里來顯示,并由用戶補(bǔ)全/修改界面元素在這個應(yīng)用組合中的相關(guān)信息。
[0109]應(yīng)用組合在添加完本應(yīng)用組合的基礎(chǔ)信息以后,點(diǎn)擊界面布局,便可預(yù)覽各種界面元素組合在一起的表現(xiàn),在此界面用戶可以通過拖拽的方式手動調(diào)整浮動面板的??课恢茫笮?,停靠方式,工具欄的位置,保存后在最終軟件運(yùn)行時將會呈現(xiàn)同樣的界面布局。
[0110]用戶創(chuàng)建好所需的應(yīng)用組合后,點(diǎn)擊發(fā)布應(yīng)用組合按鈕,進(jìn)入應(yīng)用組合發(fā)布界面,在此界面選擇發(fā)布的路徑,以及本次發(fā)布所包含的所有應(yīng)用組合,點(diǎn)擊發(fā)布,而在指定目錄生成對應(yīng)的應(yīng)用程序,包含指定的應(yīng)用組合以及應(yīng)用組合所包含的所有插件(若插件有重復(fù),只生成一份)。發(fā)布后的應(yīng)用程序可獨(dú)立運(yùn)行。
[0111]使用應(yīng)用組合和應(yīng)用組合界面定制機(jī)制,保證了軟件界面定制與實現(xiàn)功能不依賴于專業(yè)編程能力,降低軟件開發(fā)的復(fù)雜度和過程,提高了開發(fā)和維護(hù)(二次開發(fā))難度。
[0112]4)桌面風(fēng)格主界面框架;
[0113]桌面風(fēng)格主界面框架定義了桌面主界面的擴(kuò)展點(diǎn),實現(xiàn)程序運(yùn)行的界面框架及相關(guān)全局設(shè)置。
[0114]桌面主界面插件定義Windows主窗口的界面擴(kuò)展點(diǎn),解析收到的界面擴(kuò)展點(diǎn)信息,創(chuàng)建對應(yīng)的界面元素和調(diào)用插件對應(yīng)的接口來創(chuàng)建界面元素
[0115]主要功能:
[0116]a.主窗口的顯示
[0117]b.中央視圖的添加,位置及顯隱管理
[0118]c.浮動窗口(面板)的添加,位置及顯隱管理
[0119]d.菜單的添加,位置及顯隱管理(圖標(biāo),浮動提示,初始選中狀態(tài)(能否選中),初始使能狀態(tài))
[0120]e.工具欄的添加,位置及顯隱管理(圖標(biāo),浮動提示,初始選中狀態(tài)(能否選中),初始使能狀態(tài))
[0121]f.狀態(tài)欄的添加,位置及顯隱管理
[0122]g.界面元素的消息傳遞
[0123]5)平板風(fēng)格主界面框架;
[0124]平板風(fēng)格主界面框架定義了平板主界面擴(kuò)展點(diǎn),實現(xiàn)程序運(yùn)行的界面框架及相關(guān)
全局設(shè)置。[0125]平板主界面插件定義平板主窗口的界面擴(kuò)展點(diǎn),解析收到的界面擴(kuò)展點(diǎn)信息,創(chuàng)建對應(yīng)的界面元素和調(diào)用插件對應(yīng)的接口來創(chuàng)建界面元素
[0126]主要功能:
[0127]a.主窗口的顯示
[0128]b.子界面的顯示
[0129]c.工具欄按鈕組切換和顯示
[0130]d.工具欄按鈕位置與顯隱管理
[0131]e.界面風(fēng)格切換與顯示(如九宮格模式、Metro模式、影院模式)
[0132]f.頁面導(dǎo)航機(jī)制
[0133]g.界面元素的消息傳遞
[0134]本發(fā)明實施例具有以下幾大優(yōu)勢:
[0135]跨平臺:通過使用跨平臺的開發(fā)框架Qt,保證了系統(tǒng)優(yōu)良的跨平臺性,用其開發(fā)的軟件代碼,只需要各平臺編譯,即可實現(xiàn)各平臺正確運(yùn)行。
[0136]熱插拔:本次開發(fā)采用了符合OSGi規(guī)范的插件化框架,并且在框架中實現(xiàn)了插件的管理器功能,對所有系統(tǒng)插件的生命周期進(jìn)行管理,同時提供了注冊,發(fā)現(xiàn),加載、卸載、停止、激活、反激活系統(tǒng)插件和用戶插件等相應(yīng)的功能。保證了用戶可以在不重啟程序的情況下加載和停止插件。
[0137]低耦合:本次開發(fā)的插件框架中,定義并且實現(xiàn)了一套擴(kuò)展點(diǎn)機(jī)制,通過擴(kuò)展點(diǎn),插件與插件間形成了完整的插件網(wǎng)絡(luò)。但對于定義擴(kuò)展點(diǎn)的插件與實現(xiàn)擴(kuò)展點(diǎn)的插件間并沒有絕對的耦合性,擴(kuò)展點(diǎn)的定義插件并不知道自己定義的擴(kuò)展點(diǎn)由哪個或者哪幾個插件實現(xiàn),從來在保證了插件化網(wǎng)絡(luò)的前提下,實現(xiàn)了低耦合性。
[0138]可擴(kuò)展性:任何軟件產(chǎn)品都是有生命周期的,作為程序的創(chuàng)造者,大家都不愿意看到其消亡的現(xiàn)實。因此應(yīng)當(dāng)盡量延長軟件產(chǎn)品的生命周期,不斷的將新的功能注入到現(xiàn)有的軟件產(chǎn)品是一種手段。插件化的系統(tǒng)架構(gòu)為擴(kuò)展新功能提供了更好的方便性。因為新的功能以插件的形式給出時,是相對獨(dú)立的,不影響整個系統(tǒng)框架和其它功能甚至是把擴(kuò)展軟件功能的能力提供給用戶或第三方廠商,以達(dá)到最大限度的功能擴(kuò)展。
[0139]靈活界面定制:通過應(yīng)用組合,可以對最終發(fā)布程序的界面進(jìn)行靈活的定制。界面定制用戶不需要專業(yè)編程知識,只需要理解最終用戶需求,通過可視化的界面配置和拖拽,就可以最最終的插件化程序界面完成配置。并且應(yīng)用組合中界面信息不影響應(yīng)用組合中相關(guān)插件,即相同插件組,可以配置成為不同用戶操作界面,但所有邏輯和控制,都使用的相同插件組。
[0140]便捷二次開發(fā):本次開發(fā)提供了二次開發(fā)向?qū)?,幫助系統(tǒng)二次開發(fā)和維護(hù)人員快速的創(chuàng)建和修改系統(tǒng)各插件。大幅減少了用戶的重復(fù)性代碼工作,并且通過可視化的配置界面,完成相關(guān)插件網(wǎng)絡(luò)以及擴(kuò)展點(diǎn)創(chuàng)建編輯等,降低了二次開發(fā)的難度和避免了相關(guān)配置的純文本編輯方式,減少了不可預(yù)期的錯誤可能。另外系統(tǒng)還提供了平板風(fēng)格主界面插件,實現(xiàn)了包括:頁面,工具欄,導(dǎo)航,動畫,手勢等在內(nèi)的平板操作公共功能,便于用戶在平板風(fēng)格下進(jìn)行快速的開發(fā)。
[0141]以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的【技術(shù)領(lǐng)域】,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種插件框架處理模塊,其特征在于,包括:插件核心器、擴(kuò)展點(diǎn)管理器、應(yīng)用組合管理器、插件管理器; 所述插件核心器,用于控制所述插件框架處理模塊工作狀態(tài),控制插件的安裝與卸載,控制插件消息訂閱與發(fā)送; 所述擴(kuò)展點(diǎn)管理器,用于提供插件擴(kuò)展規(guī)范,使得多個插件相互通信; 應(yīng)用組合管理器,定義應(yīng)用組合數(shù)據(jù)結(jié)構(gòu)并進(jìn)行應(yīng)用組合的管理。 插件管理器用于調(diào)用應(yīng)用組合管理器,根據(jù)當(dāng)前應(yīng)用組合啟動所有插件。
2.根據(jù)權(quán)利要求1所述的模塊,其特征在于,所述插件管理器具體用于,調(diào)用應(yīng)用組合管理器,得到當(dāng)前應(yīng)用組合所包含的插件列表,搜索指定的插件目錄,對搜索到的插件與應(yīng)用組合的插件列表進(jìn)行匹配,匹配后調(diào)用插件核心動態(tài)庫安裝對應(yīng)的插件到插件框架處理模塊,搜索該插件的配置文件,調(diào)用擴(kuò)展點(diǎn)管理器解析其中的擴(kuò)展點(diǎn),按照插件依賴關(guān)系依次啟動所有插件。
3.根據(jù)權(quán)利要求1所述的模塊,其特征在于,所述插件核心器通過應(yīng)用程序編程接口API與插件進(jìn)行通信。
4.根據(jù)權(quán)利要求3所述的模塊,其特征在于,所述API使用static函數(shù)。
5.一種插件系統(tǒng),其特征在于,包括如權(quán)利要求1至4中任一項所述的插件框架處理模塊。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,還包括:應(yīng)用組合開發(fā)模塊,用于生成應(yīng)用組合。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,還包括:插件開發(fā)模塊,用于實現(xiàn)插件開發(fā)。
【文檔編號】G06F9/44GK103927163SQ201410081113
【公開日】2014年7月16日 申請日期:2014年3月6日 優(yōu)先權(quán)日:2014年3月6日
【發(fā)明者】孫巖, 龔斌, 孫凌云, 王青海, 何國良, 倪亮, 陳健, 王光偉 申請人:中國人民解放軍裝甲兵工程學(xué)院