專利名稱::構件自動分類的方法
技術領域:
:本發(fā)明涉及軟件技術,尤其是一種構件自動分類的方法。
背景技術:
:構件是指在應用系統(tǒng)中可以明確辨別的構成部分,而可復用構件是指具有相對獨立的功能和可復用價值的構件。要減小復用成本,使復用者更好地理解構件,就需要對構件進行描述和分類。作為一種有效的信息處理方法,自動分類技術將各類信息按照一定的分類體系進行分類整理,從而大大提高了用戶搜集情報的效率。自動分類的任務就是通過自動分類算法得到一個目標函數(shù)(targetfunction)f,把每個屬性x映射到一個預先定義的類標號y,目標函數(shù)也稱作分類模型。目前構件自動分類時采用的是固定分類算法,即通過某種特定的分類算法,如SVM,基于構件的特定的特征,例如構件的文檔描述信息,對構件進行自動分類。即首先通過對構件進行分析獲取構件的特征,然后根據(jù)某一特征和某一算法對構件進行分類。由于現(xiàn)有技術是采用固定的自動分類算法,在某些場合中,用戶可能需要根據(jù)待分類數(shù)據(jù)集的特點來自動選擇分類算法,以便取得更好的分類效果,因此,現(xiàn)有的這種采用固定的分類算法的方式不能滿足用戶的需求。同時,現(xiàn)有技術是以特定的特征作為分類屬性來進行分類,而在不同的應用場合中,不同特征的組合同樣可以作為分類屬性,為構件的分類提供支持,因此,為了應用于不同的場景,同樣需要提供方法對分類屬性進行擴展
發(fā)明內(nèi)容分類屬性不能擴展的問題,實現(xiàn)可擴展的構件自動分類。為實現(xiàn)上述目的,本發(fā)明提供了一種構件自動分類的方法,包括獲取插件描述文件,所述插件描述文件中包括插件類名及保存有分類屬性或者分類算法的插件數(shù)據(jù)包的信息;根據(jù)所述插件數(shù)據(jù)包的信息加載所述插件數(shù)據(jù)包;根據(jù)所述插件類名實例化所述插件數(shù)據(jù)包;根據(jù)所述插件數(shù)據(jù)包中的分類屬性或者分類算法對構件進行分類。由上述技術方案可知,本發(fā)明可以將擴展的分類屬性或者分類算法保存在插件數(shù)據(jù)包中,對插件數(shù)據(jù)包進行實例化以調(diào)用分類屬性或者分類算法,實現(xiàn)對分類屬性或者分類算法的擴展。下面通過附圖和實施例,對本發(fā)明的技術方案做進一步的詳細描述。圖1為本發(fā)明構件自動分類的方法實施例的流程示意圖2為本發(fā)明構件自動分類的方法實施例對應的結(jié)構示意圖。具體實施例方式圖1為本發(fā)明構件自動分類的方法實施例的流程示意圖??蓴U展架構是研究如何對系統(tǒng)擴展,從而使系統(tǒng)能夠接受滿足格式要求的擴展功能模塊,實現(xiàn)對功能的擴展,以滿足各種不同的要求。插件是指一種遵循一定規(guī)范的應用程序接口編寫出來的程序,主要是用來擴展軟件功能。插件可以由軟件公司自己開發(fā),也可以由第三方或軟件用戶個人開發(fā)。因此,可以通過插件實現(xiàn)可擴展架構。本實施例以分類算法的擴展為例對插件進行描述,對分類屬性等的擴展也可以采用與本實施例相同的原理實現(xiàn)。參照圖2的結(jié)構圖,本實施例包括步驟11:當需要對構件進行自動分類時,用戶通過應用程序模塊21在插件描述文件列表中獲取插件描述文件,所述插件描述文件中包括插件類名及保存有分類屬性或者分類算法的插件數(shù)據(jù)包的信息。插件主要包括如下兩類信息(1)插件描述文件plugin.xml。該描述文件包括插件描述信息,給出了插件的各種基本信息。主要包括(a)〈plugin〉項〈plugin〉是plugin.xml的主體,包含插件的id、插件的名字、版本信息以及具體實現(xiàn)功能的插件類的名稱等。通過解析plugin.xml文件,可以獲取插件類的名稱,然后可以利用Java語言的反射機制來得到該插件類的實例。具體包括〈pluginid="myplugin"name="Myplugin插件"version="1.0.0"provider-name=""class="myplugin.MypluginPlugin">其中id是插件的唯一標識。實際項目中一般加上包名或網(wǎng)址名來命名id,這樣便可以避免插件的標識名重名。name是插件的名稱,可以不唯一。version是插件版本號。provider-name可以為作者或z>司的名稱。class是插件類的名稱。此類中的方法是擴展點接口中聲明方法的具體實現(xiàn),系統(tǒng)利用JAVA反射機制,在plugin.xml文件中得到此類名,根據(jù)指定的類名,得到該類的實例。5(b)〈runtime〉項聲明插件運行時需要的Jar包以及所在路徑。比如插件需要連接MySQL數(shù)據(jù)庫,并需要相應的Jar包提供支持,可以在々untime〉項中指定該Jar包所在的路徑。具體包括<runtime><libraryname="myplugin.jar"></library></runtime>該項聲明插件運行時需要的Jar包。其中本插件自身的Jar包必須聲明,而且本插件在打包時將以myplugin.jar為名打包。如果該插件運行還需要其它的Jar包,也應該在此聲明所使用Jar包的路徑。比如有一個插件要連接MySQL數(shù)據(jù)庫需要它的一個包,定義如下所示,其中"lib\"是該包所在路徑。<runtime><libraryname="myplugin.jar"></library><libraryname="lib\mysql-connector-java-3.0.9-stable-bin.jar"/></mntime>(c)々叫uires〉項定義了該插件所要依賴的其他插件。具體包括<requires><Importplugin="org.eclipse.ui7><Importplugin="org.eclipse.core.runtime"/></requires>從上述對plugin.xml文件的分析,可以得知通過解析插件的描述文件plugin.xml獲取相應的插件描述信息,如通過〈requires〉項可以獲取該插件運行所需的依賴插件,通過〈plugin〉項可以獲知插件類class,通過〈mntime〉項可以獲知Jar包的路徑信息。(2)完成分類算法功能的Jar包。系統(tǒng)中的插件22采用Jar包的形式。每個插件對應的Jar包是對插件接口類的具體實現(xiàn)。Jar包與分類算法對應,提供具體的分類算法的實現(xiàn)。如系統(tǒng)需要擴展一個新的算法,如KNN算法,插件開發(fā)者可以按照預定義的插件接口格式完成該自動分類算法實現(xiàn),并將其封裝成Jar包,并提供與該Jar包對應的plugin.xml文件。Jar包及插件描述文件plugin.xml文件可以保存在插件描述文件列表plugins目錄的子文件夾下。之后,在需要調(diào)用擴展的分類算法時,可以解析plugin.xml文件得到插件類名,并利用Java反射機制完成對相應分類算法的實例化,之后可以調(diào)用新的分類算法。各插件的完成分類算法功能的Jar包需要遵循一定的接口,可以在插件接口模塊24預定義一個抽象類,使每個插件可以繼承該抽象類。該抽象類Plugin可以包括如下信息started—:Boolean插件啟動狀態(tài)manager—:PluginManager插件管理器,負責所有插件資源的管理,包括插件的啟動、停止、使能(Enable/Disable)等descriptor—:IPluginDescriptor插件描述符,i己錄了才翁件的ID、Name、Version,依賴、擴展點等Plugin():類的初始寸匕getDescriptor():獲取插件插件描述符(用來記錄插件的ID、Name、Version、依賴、擴展點等信息);getManager():獲取插件管理器(負責所有插件資源的管理,包括插件的啟動、停止、使能(Enable/Disable)等);start():啟動插件stop():停止插件的運行isActive():用來判斷該插件的狀態(tài)(包括是否啟動);getResourceSring():獲取資源信息,即需要分類的資源信息getPluginPath():用來獲取插件的具體路徑dostart():虛函數(shù),啟動插件,并完成插件的初始化工作dostop():虛函數(shù),停止啟動插件,并完成資源的釋放等工作為了調(diào)用插件中的分類算法,系統(tǒng)中需要包括如下信息(1)提供存放插件描述信息的插件描述文件列表plugins。在系統(tǒng)中,用戶將在"plugins"目錄下建立子文件夾,并將擴展需要的各插件的plugin.xml文件和Jar包對應存放到建立的子文件夾中。系統(tǒng)啟動的時候會掃描"plugins"目錄下的所有子目錄中的plugin.xml文件,進而裝載插件。(2)提供XMLParser來將plugin.xml中的信息解析出來,獲取插件的基本信息。然后可以根據(jù)用戶的需要,通過Java反射機制將插件中對應的類進行實例化和調(diào)用。之后,應用程序模塊21解析所述插件描述文件獲取依賴插件信息,判斷所述依賴插件信息對應的依賴插件是否啟動,若啟動,執(zhí)行步驟12,否則,啟動所述依賴插件。具體的,在插件描述信息的〈r叫uires〉項中獲知對應的依賴插件信息。步驟12:應用程序模塊21根據(jù)所述插件數(shù)據(jù)包的信息加載所述插件數(shù)據(jù)包。例如,根據(jù)上述的〈runtime〉項中的Jar包的路徑信息加載相應的Jar包。插件的啟動是通過類加載器(ClassLoader)加載該類來啟動的,利用Java的類反射機制獲得類的一個對象實例,調(diào)用指定的分類算法對資源進行分類。當成功啟動一個插件時,系統(tǒng)會設置該插件類的isActive變量,根據(jù)該變量的值就可以判斷插件的啟動狀態(tài)。如果用戶定義的插件類運行時需要其他類庫、Jar包的支持(公共函數(shù)庫模塊23可以為整個系統(tǒng)提供基礎支持的類庫,應用程序模塊21和插件22都可以調(diào)用以獲取支持),那么用戶需要在plugin.xml文件的々equires〉項中進行設置。系統(tǒng)在加載用戶定義的一個插件類時,需要先掃描々叫uires〉項,如果需要依賴插件,則解析出依賴插件的路徑,進行8載實例化成功后,用戶定義的插件才可以#1加載、調(diào)用。步驟13:應用程序模塊21根據(jù)所述插件類名實例化所述插件數(shù)據(jù)包,為插件類初始化一個對象實例(在內(nèi)存分配一個地址)。例如,根據(jù)上述的〈plugin〉項中的插件類名(class),利用Java語言反射機制,加載所述插件類名指定的插件類,得到實例化后的插件類。步驟14:應用程序模塊21根據(jù)所述插件數(shù)據(jù)包中的分類屬性或者分類算法對構件進行分類。本實施例中,插件提供者只需要編寫plugin.xml文件,按預定義的格式實現(xiàn)插件接口類,將包括分類屬性或者分類算法的類文件打成數(shù)據(jù)包(Jar包)即可,其他任務均由系統(tǒng)完成,因此擴展簡便;分類算法或者分類屬性只需繼承插件接口類即可,至于算法如何實現(xiàn)完全由插件提供者決定,因此約束性??;系統(tǒng)利用Java語言反射機制可以動態(tài)加載和停止各插件,因此支持動態(tài)加載,可以降低開銷。本領域普通技術人員可以理解實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前迷的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應說明的是以上實施例僅用以說明本發(fā)明的技術方案而非對其進行限制,盡管參照較佳實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解其依然可以對本發(fā)明的技術方案進行修改或者等同替換,而這些修改或者等同替換亦不能使修改后的技術方案脫離本發(fā)明技術方案的精神和范圍。9權利要求1、一種構件自動分類的方法,其特征在于,包括獲取插件描述文件,所述插件描述文件中包括插件類名及保存有分類屬性或者分類算法的插件數(shù)據(jù)包的信息;根據(jù)所述插件數(shù)據(jù)包的信息加載所述插件數(shù)據(jù)包;根據(jù)所述插件類名實例化所述插件數(shù)據(jù)包;根據(jù)所述插件數(shù)據(jù)包中的分類屬性或者分類算法對構件進行分類。2、根據(jù)權利要求1所述的方法,其特征在于所述插件描述文件中還包括依賴插件信息;所述根據(jù)所述插件數(shù)據(jù)包的信息加載所述插件數(shù)據(jù)包包括根據(jù)所述依賴插件信息判斷相應的依賴插件是否啟動,若相應的依賴插件未啟動,則啟動相應的依賴插件;所述依賴插件均啟動后,根據(jù)所述插件數(shù)據(jù)包的信息加載所述插件數(shù)據(jù)包。3、根據(jù)權利要求1所述的方法,其特征在于,所述根據(jù)所述插件類名實例化所述插件數(shù)據(jù)包具體為利用Java語言反射機制,加載所述插件類名指定的插件類,得到實例化后的插件類。4、根據(jù)權利要求l或2或3所述的方法,其特征在于,還包括將待擴展的分類屬性或者分類算法打成插件數(shù)據(jù)包。5、根據(jù)權利要求4所述的方法,其特征在于,所述將待擴展的分類屬性或者分類算法打成插件數(shù)據(jù)包具體為將待擴展的分類屬性或者分類算法,按照預定義的插件接口格式,打成插件數(shù)據(jù)包。全文摘要本發(fā)明公開了一種構件自動分類的方法。該方法包括獲取插件描述文件,所述插件描述文件中包括插件類名及保存有分類屬性或者分類算法的插件數(shù)據(jù)包的信息;根據(jù)所述插件數(shù)據(jù)包的信息加載所述插件數(shù)據(jù)包;根據(jù)所述插件類名實例化所述插件數(shù)據(jù)包;根據(jù)所述插件數(shù)據(jù)包中的分類屬性或者分類算法對構件進行分類。通過本發(fā)明可以對分類屬性和分類算法進行擴展,避免現(xiàn)有分類屬性和分類算法固定的問題。文檔編號G06F9/44GK101446903SQ20081024045公開日2009年6月3日申請日期2008年12月19日優(yōu)先權日2008年12月19日發(fā)明者張良杰,戈李,王立杰,冰謝,黃藝燕申請人:北京大學