專利名稱:擴(kuò)展點(diǎn)和插件的管理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及軟件管理及應(yīng)用技術(shù),尤其涉及擴(kuò)展點(diǎn)和插件的管理方法和裝置。
背景技術(shù):
隨著軟件的開發(fā)模式越來越多樣化,軟件開發(fā)商之間的合作也越來越廣泛,通過 軟件的擴(kuò)展開發(fā)能夠大大增強(qiáng)產(chǎn)品的應(yīng)用能力,增強(qiáng)產(chǎn)業(yè)鏈的競(jìng)爭(zhēng)能力,為各級(jí)產(chǎn)業(yè)鏈的 開發(fā)伙伴帶來價(jià)值。但是如果不對(duì)軟件的擴(kuò)展點(diǎn)加以管理的話,各級(jí)研發(fā)伙伴不能很好地 了解軟件的擴(kuò)展能力,而軟件開發(fā)者本身也不知道如何處理插件,這樣將會(huì)對(duì)各種擴(kuò)展需 求的開發(fā)帶來很大的障礙。所謂擴(kuò)展點(diǎn),就是組件定義出來可以進(jìn)行擴(kuò)展的地方,可以認(rèn)為 是一些擴(kuò)展的契約,而插件就是對(duì)這些擴(kuò)展點(diǎn)的實(shí)現(xiàn),圖1示出了組件、擴(kuò)展點(diǎn)與插件之間 的關(guān)系。因此,作為一個(gè)軟件產(chǎn)品,在軟件中管理自己的擴(kuò)展點(diǎn)及公布支持的擴(kuò)展規(guī)則,對(duì) 于支持軟件生態(tài)鏈來說具有重要意義。當(dāng)前的軟件管理擴(kuò)展的方法主要有以下幾種方式1)沒有擴(kuò)展點(diǎn)這樣的明確概 念,需要修改軟件的源代碼。產(chǎn)品提供的軟件產(chǎn)品功能在不能滿足用戶需求時(shí),需要開發(fā)人 員直接修改軟件的源代碼。這種方式的缺點(diǎn)是對(duì)于每次需求的調(diào)整都需要修改程序,增加 了程序的不穩(wěn)定性和出錯(cuò)的可能性,整個(gè)應(yīng)用均需要進(jìn)行測(cè)試,花費(fèi)了大量的時(shí)間。令外, 由于源代碼是軟件公司的核心資產(chǎn),一般不對(duì)外開放,如果合作伙伴沒有源程序的話,則不 能提供軟件的功能擴(kuò)展,大大約束了軟件產(chǎn)業(yè)鏈的發(fā)展。2)基于文檔的擴(kuò)展點(diǎn)。軟件開發(fā) 時(shí)提供了軟件接口的說明,合作伙伴或客戶可以基于接口進(jìn)行擴(kuò)展。但是,基于文檔提供聲 明的方式存在一些問題由于文檔的提供者是各個(gè)開發(fā)或設(shè)計(jì)人員,每個(gè)人的描述方式和 描述的規(guī)范都不一致。另外每個(gè)擴(kuò)展點(diǎn)的能力支持方面通常都比較簡(jiǎn)單,沒有考慮到事務(wù)、 同步/異步等使用方式。這些將限制軟件的擴(kuò)展能力和融合能力。而在行業(yè)、合作伙伴或 客戶在進(jìn)行軟件擴(kuò)展時(shí),通常有不同的融合需求,如果不考慮這些需求的話,可能就很難達(dá) 到應(yīng)用的具體擴(kuò)展需求。因此,需要一種擴(kuò)展點(diǎn)和插件的管理方法和裝置,能夠建立一個(gè)統(tǒng)一的擴(kuò)展點(diǎn)管 理平臺(tái),可以方便地實(shí)現(xiàn)基于該擴(kuò)展點(diǎn)管理平臺(tái)的插件擴(kuò)展,較好地解決了基于擴(kuò)展點(diǎn)的 軟件擴(kuò)展與應(yīng)用融合的問題。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明所要解決的技術(shù)問題在于,提供一種擴(kuò)展點(diǎn)和插件的管理方法 和裝置,能夠建立一個(gè)統(tǒng)一的擴(kuò)展點(diǎn)管理平臺(tái),可以方便地實(shí)現(xiàn)基于該擴(kuò)展點(diǎn)管理平臺(tái)的 插件擴(kuò)展,較好地解決了基于擴(kuò)展點(diǎn)的軟件擴(kuò)展與應(yīng)用融合的問題。本發(fā)明提供了一種擴(kuò)展點(diǎn)和插件的管理方法,包括建立擴(kuò)展點(diǎn),根據(jù)該擴(kuò)展點(diǎn)的 屬性來發(fā)布擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)與多個(gè)插件對(duì)應(yīng),根據(jù)插件的屬性和注冊(cè)規(guī)則來注冊(cè)與擴(kuò)展點(diǎn) 對(duì)應(yīng)的插件。通過該技術(shù)方案,可以在一個(gè)統(tǒng)一的環(huán)境下管理擴(kuò)展點(diǎn)和插件,便于后續(xù)的開 發(fā)和應(yīng)用融合。
在上述技術(shù)方案中,優(yōu)選地,按照調(diào)用規(guī)則來調(diào)用插件。這樣,使用插件時(shí)也必須 按照注冊(cè)時(shí)事先的聲明規(guī)則來進(jìn)行,便于統(tǒng)一管理。在上述技術(shù)方案中,優(yōu)選地,分別定義擴(kuò)展點(diǎn)和插件的屬性,并分別聲明根據(jù)擴(kuò)展 點(diǎn)來注冊(cè)插件的注冊(cè)規(guī)則和調(diào)用插件的調(diào)用規(guī)則,其中,擴(kuò)展點(diǎn)的屬性包括所屬組件、是 否有效、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持設(shè)置同步和是否支持設(shè)置同一事務(wù);插件的屬性 包括所屬擴(kuò)展點(diǎn)、是否啟用、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持設(shè)置同步、是否支持設(shè)置同 一事務(wù)和調(diào)用順序。這樣,所有的擴(kuò)展點(diǎn)和插件都必須根據(jù)這些定義和聲明來來管理和使 用。在上述技術(shù)方案中,優(yōu)選地,注冊(cè)規(guī)則具體為如果擴(kuò)展點(diǎn)的是否有效屬性為無效 時(shí),則不能為擴(kuò)展點(diǎn)注冊(cè)對(duì)應(yīng)的插件;如果擴(kuò)展點(diǎn)的是否支持設(shè)置調(diào)用時(shí)機(jī)屬性為否時(shí),則 注冊(cè)的插件不具有調(diào)用時(shí)機(jī)功能;如果擴(kuò)展點(diǎn)的是否支持設(shè)置同步屬性為不支持時(shí),則注 冊(cè)的插件在被調(diào)用時(shí)不進(jìn)行同步調(diào)用處理;如果擴(kuò)展點(diǎn)的是否支持設(shè)置同一事務(wù)屬性為不 支持時(shí),則注冊(cè)的插件在被調(diào)用時(shí)與調(diào)用者不在同一事務(wù)里。因此,插件的注冊(cè)必須與其所 對(duì)應(yīng)的擴(kuò)展點(diǎn)統(tǒng)一起來,根據(jù)擴(kuò)展點(diǎn)具體的屬性設(shè)置來設(shè)置插件的屬性。在上述技術(shù)方案中,優(yōu)選地,發(fā)布擴(kuò)展點(diǎn)和注冊(cè)插件還包括相關(guān)操作,相關(guān)操作包 括增加、修改、保存、刪除和/或查詢。這樣,增加了擴(kuò)展點(diǎn)和插件的后續(xù)開發(fā)功能,更加人 性化。在上述技術(shù)方案中,優(yōu)選地,調(diào)用插件的調(diào)用規(guī)則具體為查詢擴(kuò)展點(diǎn)對(duì)應(yīng)的一個(gè) 或多個(gè)插件,按照調(diào)用時(shí)機(jī)和調(diào)用順序?qū)傩缘脑O(shè)置來調(diào)用插件,如果插件的調(diào)用時(shí)機(jī)在默 認(rèn)插件之前,則先處理插件,如果插件的調(diào)用時(shí)機(jī)在默認(rèn)插件之后,則先處理默認(rèn)插件;按 照是否支持設(shè)置同步屬性的設(shè)置來處理插件,同步調(diào)用插件或異步調(diào)用插件;按照是否支 持設(shè)置同一事務(wù)屬性的設(shè)置來處理插件,調(diào)用插件時(shí)與調(diào)用者在同一事務(wù)里或不在同一事 務(wù)里。因此,考慮到了同步調(diào)用/異步調(diào)用和是否同一事務(wù)中處理,調(diào)用插件時(shí),按照該插 件的屬性設(shè)置來進(jìn)行處理。本發(fā)明還提供了一種擴(kuò)展點(diǎn)和插件的管理裝置,包括發(fā)布模塊,用于建立擴(kuò)展 點(diǎn),根據(jù)擴(kuò)展點(diǎn)的屬性來發(fā)布擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)與多個(gè)插件對(duì)應(yīng),根據(jù)插件的屬性和注冊(cè)規(guī)則 來注冊(cè)與擴(kuò)展點(diǎn)對(duì)應(yīng)的插件。通過該技術(shù)方案,可以在一個(gè)統(tǒng)一的環(huán)境下管理擴(kuò)展點(diǎn)和插 件,便于后續(xù)的開發(fā)和應(yīng)用融合。在上述技術(shù)方案中,優(yōu)選地,還可以包括調(diào)用模塊,用于按照調(diào)用規(guī)則來調(diào)用插 件。這樣,使用插件時(shí)也必須按照注冊(cè)時(shí)事先的聲明規(guī)則來進(jìn)行,便于統(tǒng)一管理。在上述技術(shù)方案中,優(yōu)選地,還可以包括屬性定義模塊,用于分別定義擴(kuò)展點(diǎn)和 插件的屬性,并分別聲明根據(jù)擴(kuò)展點(diǎn)來注冊(cè)插件的注冊(cè)規(guī)則和調(diào)用插件的調(diào)用規(guī)則,其中, 擴(kuò)展點(diǎn)的屬性包括所屬組件、是否有效、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持設(shè)置同步和是 否支持設(shè)置同一事務(wù);插件的屬性包括所屬擴(kuò)展點(diǎn)、是否啟用、是否支持設(shè)置調(diào)用時(shí)機(jī)、 是否支持設(shè)置同步、是否支持設(shè)置同一事務(wù)和調(diào)用順序。這樣,所有的擴(kuò)展點(diǎn)和插件都必須 根據(jù)這些定義和聲明來來管理和使用。在上述技術(shù)方案中,優(yōu)選地,注冊(cè)規(guī)則具體為如果擴(kuò)展點(diǎn)的是否有效屬性為無效 時(shí),則不能為擴(kuò)展點(diǎn)注冊(cè)對(duì)應(yīng)的插件;如果擴(kuò)展點(diǎn)的是否支持設(shè)置調(diào)用時(shí)機(jī)屬性為否時(shí),則 注冊(cè)的插件不具有調(diào)用時(shí)機(jī)功能;如果擴(kuò)展點(diǎn)的是否支持設(shè)置同步屬性為不支持時(shí),則注
5冊(cè)的插件在被調(diào)用時(shí)不進(jìn)行同步調(diào)用處理;如果擴(kuò)展點(diǎn)的是否支持設(shè)置同一事務(wù)屬性為不 支持時(shí),則注冊(cè)的插件在被調(diào)用時(shí)與調(diào)用者不在同一事務(wù)里。因此,插件的注冊(cè)必須與其所 對(duì)應(yīng)的擴(kuò)展點(diǎn)統(tǒng)一起來,根據(jù)擴(kuò)展點(diǎn)具體的屬性設(shè)置來設(shè)置插件的屬性。在上述技術(shù)方案中,優(yōu)選地,發(fā)布模塊還可以包括相關(guān)操作,相關(guān)操作包括增加、 修改、保存、刪除和/或查詢。這樣,增加了擴(kuò)展點(diǎn)和插件的后續(xù)開發(fā)功能,更加人性化。在上述技術(shù)方案中,優(yōu)選地,調(diào)用模塊調(diào)用插件的調(diào)用規(guī)則具體為查詢擴(kuò)展點(diǎn)對(duì) 應(yīng)的一個(gè)或多個(gè)插件,按照調(diào)用時(shí)機(jī)和調(diào)用順序?qū)傩缘脑O(shè)置來調(diào)用插件,如果插件的調(diào)用 時(shí)機(jī)在默認(rèn)插件之前,則先處理插件,如果插件的調(diào)用時(shí)機(jī)在默認(rèn)插件之后,則先處理默認(rèn) 插件;按照是否支持設(shè)置同步屬性的設(shè)置來處理插件,同步調(diào)用插件或異步調(diào)用插件;按 照是否支持設(shè)置同一事務(wù)屬性的設(shè)置來處理插件,調(diào)用插件時(shí)與調(diào)用者在同一事務(wù)里或不 在同一事務(wù)里。因此,考慮到了同步調(diào)用/異步調(diào)用和是否同一事務(wù)中處理,調(diào)用插件時(shí), 按照該插件的屬性設(shè)置來進(jìn)行處理。通過上述技術(shù)方案,可以實(shí)現(xiàn)一種擴(kuò)展點(diǎn)和插件的管理方法和裝置,能夠建立一 個(gè)統(tǒng)一的擴(kuò)展點(diǎn)管理平臺(tái),可以方便地實(shí)現(xiàn)基于該擴(kuò)展點(diǎn)管理平臺(tái)的插件擴(kuò)展,較好地解 決了基于擴(kuò)展點(diǎn)的軟件擴(kuò)展與應(yīng)用融合的問題。
圖1示出了組件、擴(kuò)展點(diǎn)與插件的關(guān)系;圖2示出了根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)和插件的管理方法的流程圖;圖3示出了根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)和插件的管理裝置的框圖;圖4示出了根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)和插件的管理方法的示意圖;圖5示出了根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)和插件的屬性模型設(shè)計(jì)的示意圖;圖6示出了根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)的發(fā)布和插件的注冊(cè)管理的界面圖;圖7示出了根據(jù)本發(fā)明的實(shí)施例的調(diào)用者訪問擴(kuò)展點(diǎn)時(shí)調(diào)用插件的過程圖;圖8示出了根據(jù)本發(fā)明的實(shí)施例的處理插件的流程圖。
具體實(shí)施例方式為了能夠更清楚地理解本發(fā)明的上述目的、特征和優(yōu)點(diǎn),下面結(jié)合附圖和具體實(shí) 施方式對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)描述。在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明,但是,本發(fā)明還可 以采用其他不同于在此描述的其他方式來實(shí)施,因此,本發(fā)明并不限于下面公開的具體實(shí) 施例的限制。圖2示出了根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)和插件的管理方法的流程圖。如圖2所示,根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)和插件的管理方法,包括步驟202,建 立擴(kuò)展點(diǎn),根據(jù)該擴(kuò)展點(diǎn)的屬性來發(fā)布擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)與多個(gè)插件對(duì)應(yīng),根據(jù)插件的屬性和 注冊(cè)規(guī)則來注冊(cè)與擴(kuò)展點(diǎn)對(duì)應(yīng)的插件。通過該技術(shù)方案,可以在一個(gè)統(tǒng)一的環(huán)境下管理擴(kuò) 展點(diǎn)和插件,便于后續(xù)的開發(fā)和應(yīng)用融合。在上述技術(shù)方案中,優(yōu)選地,按照調(diào)用規(guī)則來調(diào)用插件。這樣,使用插件時(shí)也必須 按照注冊(cè)時(shí)事先的聲明規(guī)則來進(jìn)行,便于統(tǒng)一管理。
在上述技術(shù)方案中,優(yōu)選地,分別定義擴(kuò)展點(diǎn)和插件的屬性,并分別聲明根據(jù)擴(kuò)展 點(diǎn)來注冊(cè)插件的注冊(cè)規(guī)則和調(diào)用插件的調(diào)用規(guī)則,其中,擴(kuò)展點(diǎn)的屬性包括所屬組件、是 否有效、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持設(shè)置同步和是否支持設(shè)置同一事務(wù);插件的屬性 包括所屬擴(kuò)展點(diǎn)、是否啟用、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持設(shè)置同步、是否支持設(shè)置同 一事務(wù)和調(diào)用順序。這樣,所有的擴(kuò)展點(diǎn)和插件都必須根據(jù)這些定義和聲明來來管理和使 用。在上述技術(shù)方案中,優(yōu)選地,注冊(cè)規(guī)則具體為如果擴(kuò)展點(diǎn)的是否有效屬性為無效 時(shí),則不能為擴(kuò)展點(diǎn)注冊(cè)對(duì)應(yīng)的插件;如果擴(kuò)展點(diǎn)的是否支持設(shè)置調(diào)用時(shí)機(jī)屬性為否時(shí),則 注冊(cè)的插件不具有調(diào)用時(shí)機(jī)功能;如果擴(kuò)展點(diǎn)的是否支持設(shè)置同步屬性為不支持時(shí),則注 冊(cè)的插件在被調(diào)用時(shí)不進(jìn)行同步調(diào)用處理;如果擴(kuò)展點(diǎn)的是否支持設(shè)置同一事務(wù)屬性為不 支持時(shí),則注冊(cè)的插件在被調(diào)用時(shí)與調(diào)用者不在同一事務(wù)里。因此,插件的注冊(cè)必須與其所 對(duì)應(yīng)的擴(kuò)展點(diǎn)統(tǒng)一起來,根據(jù)擴(kuò)展點(diǎn)具體的屬性設(shè)置來設(shè)置插件的屬性。在上述技術(shù)方案中,優(yōu)選地,發(fā)布擴(kuò)展點(diǎn)和注冊(cè)插件還包括相關(guān)操作,相關(guān)操作包 括增加、修改、保存、刪除和/或查詢。這樣,增加了擴(kuò)展點(diǎn)和插件的后續(xù)開發(fā)功能,更加人 性化。在上述技術(shù)方案中,優(yōu)選地,調(diào)用插件的調(diào)用規(guī)則具體為查詢擴(kuò)展點(diǎn)對(duì)應(yīng)的一個(gè) 或多個(gè)插件,按照調(diào)用時(shí)機(jī)和調(diào)用順序?qū)傩缘脑O(shè)置來調(diào)用插件,如果插件的調(diào)用時(shí)機(jī)在默 認(rèn)插件之前,則先處理插件,如果插件的調(diào)用時(shí)機(jī)在默認(rèn)插件之后,則先處理默認(rèn)插件;按 照是否支持設(shè)置同步屬性的設(shè)置來處理插件,同步調(diào)用插件或異步調(diào)用插件;按照是否支 持設(shè)置同一事務(wù)屬性的設(shè)置來處理插件,調(diào)用插件時(shí)與調(diào)用者在同一事務(wù)里或不在同一事 務(wù)里。因此,考慮到了同步調(diào)用/異步調(diào)用和是否同一事務(wù)中處理,調(diào)用插件時(shí),按照該插 件的屬性設(shè)置來進(jìn)行處理。圖3示出了根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)和插件的管理裝置的框圖。如圖3所示,根據(jù)本發(fā)明的實(shí)施例的擴(kuò)展點(diǎn)和插件的管理裝置300包括發(fā)布模塊 302,用于建立擴(kuò)展點(diǎn),根據(jù)擴(kuò)展點(diǎn)的屬性來發(fā)布擴(kuò)展點(diǎn),擴(kuò)展點(diǎn)與多個(gè)插件對(duì)應(yīng),根據(jù)插件 的屬性和注冊(cè)規(guī)則來注冊(cè)與擴(kuò)展點(diǎn)對(duì)應(yīng)的插件。通過該技術(shù)方案,可以在一個(gè)統(tǒng)一的環(huán)境 下管理擴(kuò)展點(diǎn)和插件,便于后續(xù)的開發(fā)和應(yīng)用融合。在上述技術(shù)方案中,優(yōu)選地,還可以包括調(diào)用模塊304,用于按照調(diào)用規(guī)則來調(diào) 用插件。這樣,使用插件時(shí)也必須按照注冊(cè)時(shí)事先的聲明規(guī)則來進(jìn)行,便于統(tǒng)一管理。在上述技術(shù)方案中,優(yōu)選地,還可以包括屬性定義模塊306,用于分別定義擴(kuò)展 點(diǎn)和插件的屬性,并分別聲明根據(jù)擴(kuò)展點(diǎn)來注冊(cè)插件的注冊(cè)規(guī)則和調(diào)用插件的調(diào)用規(guī)則, 其中,擴(kuò)展點(diǎn)的屬性包括所屬組件、是否有效、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持設(shè)置同步 和是否支持設(shè)置同一事務(wù);插件的屬性包括所屬擴(kuò)展點(diǎn)、是否啟用、是否支持設(shè)置調(diào)用時(shí) 機(jī)、是否支持設(shè)置同步、是否支持設(shè)置同一事務(wù)和調(diào)用順序。這樣,所有的擴(kuò)展點(diǎn)和插件都 必須根據(jù)這些定義和聲明來來管理和使用。在上述技術(shù)方案中,優(yōu)選地,注冊(cè)規(guī)則具體為如果擴(kuò)展點(diǎn)的是否有效屬性為無效 時(shí),則不能為擴(kuò)展點(diǎn)注冊(cè)對(duì)應(yīng)的插件;如果擴(kuò)展點(diǎn)的是否支持設(shè)置調(diào)用時(shí)機(jī)屬性為否時(shí),則 注冊(cè)的插件不具有調(diào)用時(shí)機(jī)功能;如果擴(kuò)展點(diǎn)的是否支持設(shè)置同步屬性為不支持時(shí),則注 冊(cè)的插件在被調(diào)用時(shí)不進(jìn)行同步調(diào)用處理;如果擴(kuò)展點(diǎn)的是否支持設(shè)置同一事務(wù)屬性為不支持時(shí),則注冊(cè)的插件在被調(diào)用時(shí)與調(diào)用者不在同一事務(wù)里。因此,插件的注冊(cè)必須與其所 對(duì)應(yīng)的擴(kuò)展點(diǎn)統(tǒng)一起來,根據(jù)擴(kuò)展點(diǎn)具體的屬性設(shè)置來設(shè)置插件的屬性。在上述技術(shù)方案中,優(yōu)選地,發(fā)布模塊302還可以包括相關(guān)操作,相關(guān)操作包括 增加、修改、保存、刪除和/或查詢。這樣,增加了擴(kuò)展點(diǎn)和插件的后續(xù)開發(fā)功能,更加人性 化。在上述技術(shù)方案中,優(yōu)選地,調(diào)用模塊304調(diào)用插件的調(diào)用規(guī)則具體為查詢擴(kuò)展 點(diǎn)對(duì)應(yīng)的一個(gè)或多個(gè)插件,按照調(diào)用時(shí)機(jī)和調(diào)用順序?qū)傩缘脑O(shè)置來調(diào)用插件,如果插件的 調(diào)用時(shí)機(jī)在默認(rèn)插件之前,則先處理插件,如果插件的調(diào)用時(shí)機(jī)在默認(rèn)插件之后,則先處理 默認(rèn)插件;按照是否支持設(shè)置同步屬性的設(shè)置來處理插件,同步調(diào)用插件或異步調(diào)用插件; 按照是否支持設(shè)置同一事務(wù)屬性的設(shè)置來處理插件,調(diào)用插件時(shí)與調(diào)用者在同一事務(wù)里或 不在同一事務(wù)里。因此,考慮到了同步調(diào)用/異步調(diào)用和是否同一事務(wù)中處理,調(diào)用插件 時(shí),按照該插件的屬性設(shè)置來進(jìn)行處理。通過上述技術(shù)方案,可以實(shí)現(xiàn)一種擴(kuò)展點(diǎn)和插件的管理方法和裝置,能夠建立一 個(gè)統(tǒng)一的擴(kuò)展點(diǎn)管理平臺(tái),可以方便地實(shí)現(xiàn)基于該擴(kuò)展點(diǎn)管理平臺(tái)的插件擴(kuò)展,較好地解 決了基于擴(kuò)展點(diǎn)的軟件擴(kuò)展與應(yīng)用融合的問題。接下來參考圖4至圖9來詳細(xì)說明本發(fā)明的又一實(shí)施例。如圖4所示,本實(shí)施例的技術(shù)方案包括三個(gè)方面,第一個(gè)方面是設(shè)計(jì)擴(kuò)展點(diǎn)和插 件的屬性模型402,第二個(gè)方面是按照該屬性模型來發(fā)布擴(kuò)展點(diǎn)和注冊(cè)基于該擴(kuò)展點(diǎn)的插 件,還提供增加、修改、刪除和查詢等管理的操作404,第三個(gè)方面是在軟件開發(fā)和應(yīng)用時(shí)插 件的處理過程406。首先具體說明該實(shí)施例的第一個(gè)方面,軟件的組件為了能夠支持對(duì)其擴(kuò)展業(yè)務(wù)能 力,需要先聲明其具有哪些擴(kuò)展點(diǎn),以及支持以何種方式進(jìn)行使用。一個(gè)擴(kuò)展點(diǎn)通常支持多 個(gè)擴(kuò)展插件,如圖1所示。如果一個(gè)組件的一些行為需要在不同的應(yīng)用場(chǎng)景下有不同的實(shí) 現(xiàn),通常在組件設(shè)計(jì)時(shí),就需要根據(jù)這些行為的擴(kuò)展需要分離接口,形成擴(kuò)展點(diǎn)。如圖5所示,是該實(shí)施例中的擴(kuò)展點(diǎn)和插件的屬性模型設(shè)置的示意圖。該擴(kuò)展點(diǎn)的實(shí)體模型的主要屬性具體解釋如下標(biāo)識(shí)擴(kuò)展點(diǎn)的唯一標(biāo)識(shí);編碼擴(kuò)展點(diǎn)的編碼,按照一定的規(guī)則生成編碼,具體規(guī)則例如模塊簡(jiǎn)稱-組件簡(jiǎn) 稱-流水號(hào);名稱擴(kuò)展點(diǎn)的名稱,該名稱能夠反映其業(yè)務(wù)職責(zé);類全名該擴(kuò)展點(diǎn)對(duì)外公布的類的全名,包括名稱空間;描述信息描述該組件的用途、注意事項(xiàng)等;所屬組件該擴(kuò)展點(diǎn)的所屬組件的名稱;是否有效表明該擴(kuò)展點(diǎn)是否可以使用;是否支持調(diào)用時(shí)機(jī)調(diào)用時(shí)機(jī)用于標(biāo)識(shí)其調(diào)用的位置,如before調(diào)用或者after 調(diào)用,該屬性用于表示該擴(kuò)展點(diǎn)是否允許設(shè)置調(diào)用時(shí)機(jī);是否支持設(shè)置同步表示該擴(kuò)展點(diǎn)是否允許設(shè)置同步或異步調(diào)用;是否支持設(shè)置事務(wù)表示該擴(kuò)展點(diǎn)是否允許設(shè)置事務(wù)行為;創(chuàng)建者該擴(kuò)展點(diǎn)的創(chuàng)建者或發(fā)布者;
創(chuàng)建時(shí)間該擴(kuò)展點(diǎn)的發(fā)布時(shí)間。該插件的實(shí)體模型的主要屬性具體解釋如下是否啟用該插件是否可用;調(diào)用時(shí)機(jī)具體設(shè)置是before調(diào)用還是after調(diào)用,缺省值為after調(diào)用;是否同步設(shè)置該插件的方法在調(diào)用時(shí)是同步方式還是異步方式;是否同一事務(wù)設(shè)置該插件是否與調(diào)用者在同一事務(wù)里;調(diào)用順序如果一個(gè)擴(kuò)展點(diǎn)有多個(gè)啟用的插件時(shí),該插件的調(diào)用順序。對(duì)于需要管理的每個(gè)擴(kuò)展點(diǎn)和注冊(cè)的插件,均要求按照上面的實(shí)體模型的屬性來 提供其聲明信息。接著說明該實(shí)施例的第二個(gè)方面,設(shè)計(jì)完了實(shí)體模型的屬性之后,針對(duì)這些屬性 的聲明信息來完成擴(kuò)展點(diǎn)的發(fā)布以及插件的注冊(cè)。擴(kuò)展點(diǎn)的發(fā)布管理提供擴(kuò)展點(diǎn)的增加、修改、刪除、保存、查詢等操作。擴(kuò)展點(diǎn)通常 是以組件為單位進(jìn)行管理和對(duì)外發(fā)布的。因此,為了方便對(duì)擴(kuò)展點(diǎn)進(jìn)行管理,應(yīng)該按照產(chǎn) 品-模塊-組件的方式來展現(xiàn)擴(kuò)展點(diǎn)。擴(kuò)展點(diǎn)的編輯按照擴(kuò)展點(diǎn)的實(shí)體模型來設(shè)計(jì),提交 的擴(kuò)展點(diǎn)的信息將會(huì)影響其對(duì)應(yīng)的插件的注冊(cè),例如,如果一個(gè)擴(kuò)展點(diǎn)的“是否有效”屬性 為“否”,則將不能為其注冊(cè)插件;如果“是否支持調(diào)用時(shí)機(jī)”屬性為“否”,則在注冊(cè)該擴(kuò)展點(diǎn) 的擴(kuò)展插件時(shí),將不能為該擴(kuò)展插件編輯“調(diào)用時(shí)機(jī)”屬性;如果“是否支持設(shè)置同步”屬性 為“否”,則注冊(cè)的插件不能編輯設(shè)置同步;如果“是否支持設(shè)置同一事務(wù)”屬性為“否”時(shí), 則注冊(cè)的插件不能編輯設(shè)置同一事務(wù)。插件的注冊(cè)管理也主要提供了插件的增加、修改、刪除、保存、查詢等操作。插件必 須對(duì)應(yīng)一個(gè)具體的擴(kuò)展點(diǎn)。在注冊(cè)插件時(shí),必須首先選擇一個(gè)具體的擴(kuò)展點(diǎn),根據(jù)選擇的擴(kuò) 展點(diǎn)不同,插件注冊(cè)的屬性可能會(huì)不同。插件編輯界面中的一些屬性可否編輯,直接與選擇 的擴(kuò)展點(diǎn)有關(guān),如在擴(kuò)展點(diǎn)的發(fā)布管理中說明的那樣,這樣保證了插件注冊(cè)信息與擴(kuò)展點(diǎn) 聲明信息的一致性。擴(kuò)展點(diǎn)的發(fā)布和插件的注冊(cè)管理界面如圖6所示。在圖中的擴(kuò)展點(diǎn)頁(yè)簽,將顯示 選中的左側(cè)的樹型控件中的產(chǎn)品、模塊或組件下的所有擴(kuò)展點(diǎn)列表,可在表格中直接編輯 擴(kuò)展點(diǎn)的數(shù)據(jù),編輯完成后可點(diǎn)擊上面的操作按鈕即可。如果選中一個(gè)擴(kuò)展點(diǎn)并雙擊的話, 將進(jìn)入如圖5所示的插件頁(yè)簽,點(diǎn)擊增加或修改按鈕就可以在插件列表中直接編輯選中的 插件信息,編輯完成后可點(diǎn)擊上面的保存按鈕。最后參考圖7和圖8來說明該實(shí)施例的第三個(gè)方面,圖7示出了調(diào)用者訪問擴(kuò)展 點(diǎn)時(shí)調(diào)用插件的過程圖。步驟702,調(diào)用者發(fā)送調(diào)用插件命令給插件工廠,步驟704,插件 工廠接收到命令之后到插件配置表查找該調(diào)用者需要調(diào)用的插件,步驟706,找到所需的插 件。插件工廠中的擴(kuò)展點(diǎn)及與其對(duì)應(yīng)的插件在一個(gè)單獨(dú)的、代碼之外的地方進(jìn)行聲明,以便 插件的配置具有可管理性。另外,與插件的連接必須是在運(yùn)行時(shí)動(dòng)態(tài)進(jìn)行,而不是在編譯時(shí) 進(jìn)行,這樣才能在重新配置后無需重新編譯。與插件的連接可以描述在配置表中。插件工 廠訪問配置表來關(guān)聯(lián)擴(kuò)展點(diǎn)可以使用的插件。這種機(jī)制在具有反射機(jī)制的程序語(yǔ)言中可以 充分發(fā)揮優(yōu)勢(shì),因?yàn)椴寮S可以動(dòng)態(tài)構(gòu)造出插件實(shí)例,而無需在編譯時(shí)與插件存在依賴 關(guān)系。找到所需的插件之后,根據(jù)插件的屬性設(shè)置來處理該插件,其處理過程如圖8所示ο在步驟802,選取擴(kuò)展點(diǎn)。在步驟804,調(diào)用者按擴(kuò)展點(diǎn)信息進(jìn)行查詢。在步驟806, 可能會(huì)獲得一組擴(kuò)展插件,這些組件將按照調(diào)用時(shí)機(jī)和調(diào)用順序準(zhǔn)備好。在步驟808,獲取一個(gè)擴(kuò)展插件。在步驟810,按照該插件的調(diào)用時(shí)機(jī)屬性的設(shè)置來處理,調(diào)用時(shí)機(jī)主要針對(duì)默認(rèn)插 件的調(diào)用位置而言的,before是指在調(diào)用默認(rèn)插件之前調(diào)用本插件,而after是指在調(diào)用 默認(rèn)插件之后再調(diào)用本插件,如果擴(kuò)展點(diǎn)有默認(rèn)插件,并且該插件必須執(zhí)行,則該插件可不 再插件表中注冊(cè)。在步驟812,在處理完調(diào)用時(shí)機(jī)之后,將處理該插件的同步/異步調(diào)用問題,常見 的情況是同步調(diào)用,而如果是異步調(diào)用的話,可以把對(duì)本插件的方法調(diào)用直接提交給消息 中間件,以實(shí)現(xiàn)異步調(diào)用。這樣可以提升應(yīng)用性能。在步驟814,如果插件的設(shè)置是“支持同一事務(wù)”,則需要在調(diào)用該插件時(shí),需要與 調(diào)用者在同一事務(wù)內(nèi),以保證數(shù)據(jù)的一致性。在步驟816,判斷是否處理結(jié)束,如果結(jié)束則完成擴(kuò)展點(diǎn)的插件處理,如果沒有結(jié) 束,則回到步驟808,繼續(xù)處理插件,直到擴(kuò)展點(diǎn)的插件全處理完。當(dāng)按照上面的過程處理完所有的插件后,就完成了調(diào)用者對(duì)該擴(kuò)展點(diǎn)的插件處理 過程,也就實(shí)現(xiàn)了該調(diào)用者基于該擴(kuò)展點(diǎn)和配置插件的應(yīng)用擴(kuò)展的融合。圖4至圖8詳細(xì)說明了本發(fā)明的又一實(shí)施例的技術(shù)方案,能夠定義擴(kuò)展點(diǎn)和插件, 聲明發(fā)布擴(kuò)展點(diǎn)和注冊(cè)對(duì)應(yīng)的插件的規(guī)則,按照這些規(guī)則來處理擴(kuò)展點(diǎn)和插件,使得所有 的開發(fā)和調(diào)用都在一個(gè)統(tǒng)一的和有秩序的環(huán)境下,方便了后續(xù)的擴(kuò)展和融合應(yīng)用。以上,參考附圖對(duì)本發(fā)明的實(shí)施例進(jìn)行了詳細(xì)描述。根據(jù)本發(fā)明的實(shí)施例的技術(shù) 方案,可以實(shí)現(xiàn)擴(kuò)展點(diǎn)和插件的管理方法和裝置,能夠非常方便地實(shí)現(xiàn)不同研發(fā)層次、不同 研發(fā)組織的各類應(yīng)用組件的基于擴(kuò)展點(diǎn)的插件擴(kuò)展。具有良好的擴(kuò)展能力,不同產(chǎn)業(yè)生態(tài) 鏈的開發(fā)人員、實(shí)施人員可以根據(jù)應(yīng)用的需要,靈活地定制出符合自己需求的擴(kuò)展插件,而 且遵循本發(fā)明的使用方法,能夠在軟件中穩(wěn)定地實(shí)現(xiàn)應(yīng)用與擴(kuò)展插件的完美融合。因此,對(duì) 于軟件開發(fā)人員、實(shí)施人員以及具有開發(fā)能力的最終客戶都有很好的應(yīng)用價(jià)值。。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,對(duì)于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種擴(kuò)展點(diǎn)和插件的管理方法,其特征在于,包括建立擴(kuò)展點(diǎn),根據(jù)所述擴(kuò)展點(diǎn)的屬性來發(fā)布所述擴(kuò)展點(diǎn),所述擴(kuò)展點(diǎn)與一個(gè)或多個(gè)插 件對(duì)應(yīng),根據(jù)所述插件的屬性和注冊(cè)規(guī)則來注冊(cè)與所述擴(kuò)展點(diǎn)對(duì)應(yīng)的所述插件。
2.根據(jù)權(quán)利要求1所述的管理方法,其特征在于,按照調(diào)用規(guī)則來調(diào)用所述插件。
3.根據(jù)權(quán)利要求1所述的管理方法,其特征在于,分別定義所述擴(kuò)展點(diǎn)和所述插件的 所述屬性,并分別聲明根據(jù)所述擴(kuò)展點(diǎn)來注冊(cè)所述插件的所述注冊(cè)規(guī)則和調(diào)用所述插件的 所述調(diào)用規(guī)則,其中,所述擴(kuò)展點(diǎn)的屬性包括所屬組件、是否有效、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持 設(shè)置同步和是否支持設(shè)置同一事務(wù);所述插件的屬性包括所屬擴(kuò)展點(diǎn)、是否啟用、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持設(shè)置 同步、是否支持設(shè)置同一事務(wù)和調(diào)用順序。
4.根據(jù)權(quán)利要求3所述的管理方法,其特征在于,所述注冊(cè)規(guī)則具體為如果所述擴(kuò)展 點(diǎn)的是否有效屬性為無效時(shí),則不能為所述擴(kuò)展點(diǎn)注冊(cè)對(duì)應(yīng)的所述插件;如果所述擴(kuò)展點(diǎn)的是否支持設(shè)置調(diào)用時(shí)機(jī)屬性為否時(shí),則注冊(cè)的所述插件不具有調(diào)用 時(shí)機(jī)功能;如果所述擴(kuò)展點(diǎn)的是否支持設(shè)置同步屬性為不支持時(shí),則注冊(cè)的所述插件在被調(diào)用時(shí) 不進(jìn)行同步調(diào)用處理;如果所述擴(kuò)展點(diǎn)的是否支持設(shè)置同一事務(wù)屬性為不支持時(shí),則注冊(cè)的所述插件在被調(diào) 用時(shí)與調(diào)用者不在同一事務(wù)里。
5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的管理方法,其特征在于,調(diào)用所述插件的所述調(diào) 用規(guī)則具體為查詢所述擴(kuò)展點(diǎn)對(duì)應(yīng)的一個(gè)或多個(gè)所述插件,按照所述調(diào)用時(shí)機(jī)和所述調(diào) 用順序?qū)傩缘脑O(shè)置來調(diào)用所述插件,如果所述插件的所述調(diào)用時(shí)機(jī)在默認(rèn)插件之前,則先 處理所述插件,如果所述插件的所述調(diào)用時(shí)機(jī)在所述默認(rèn)插件之后,則先處理所述默認(rèn)插 件;按照所述是否支持設(shè)置同步屬性的設(shè)置來處理所述插件,同步調(diào)用所述插件或異步調(diào) 用所述插件;按照所述是否支持設(shè)置同一事務(wù)屬性的設(shè)置來處理所述插件,調(diào)用所述插件時(shí)與調(diào)用 者在同一事務(wù)里或不在同一事務(wù)里。
6.一種擴(kuò)展點(diǎn)和插件的管理裝置,其特征在于,包括發(fā)布模塊,用于建立擴(kuò)展點(diǎn),根據(jù)擴(kuò)展點(diǎn)的屬性來發(fā)布所述擴(kuò)展點(diǎn),所述擴(kuò)展點(diǎn)與多個(gè) 插件對(duì)應(yīng),根據(jù)所述插件的屬性和注冊(cè)規(guī)則來注冊(cè)與所述擴(kuò)展點(diǎn)對(duì)應(yīng)的所述插件。
7.根據(jù)權(quán)利要求6所述的管理裝置,還包括調(diào)用模塊,用于按照調(diào)用規(guī)則來調(diào)用所述 插件。
8.根據(jù)權(quán)利要求6所述的管理裝置,其特征在于,還包括屬性定義模塊,用于分別定 義所述擴(kuò)展點(diǎn)和所述插件的所述屬性,并分別聲明根據(jù)所述擴(kuò)展點(diǎn)來注冊(cè)所述插件的所述 注冊(cè)規(guī)則和調(diào)用所述插件的所述調(diào)用規(guī)則,其中,所述擴(kuò)展點(diǎn)的屬性包括所屬組件、是否有效、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持 設(shè)置同步和是否支持設(shè)置同一事務(wù);所述插件的屬性包括所屬擴(kuò)展點(diǎn)、是否啟用、是否支持設(shè)置調(diào)用時(shí)機(jī)、是否支持設(shè)置同步、是否支持設(shè)置同一事務(wù)和調(diào)用順序。
9.根據(jù)權(quán)利要求8所述的管理裝置,其特征在于,所述注冊(cè)規(guī)則具體為如果所述擴(kuò)展 點(diǎn)的是否有效屬性為無效時(shí),則不能為所述擴(kuò)展點(diǎn)注冊(cè)對(duì)應(yīng)的所述插件;如果所述擴(kuò)展點(diǎn)的是否支持設(shè)置調(diào)用時(shí)機(jī)屬性為否時(shí),則注冊(cè)的所述插件不具有調(diào)用 時(shí)機(jī)功能;如果所述擴(kuò)展點(diǎn)的是否支持設(shè)置同步屬性為不支持時(shí),則注冊(cè)的所述插件在被調(diào)用時(shí) 不進(jìn)行同步調(diào)用處理;如果所述擴(kuò)展點(diǎn)的是否支持設(shè)置同一事務(wù)屬性為不支持時(shí),則注冊(cè)的所述插件在被調(diào) 用時(shí)與調(diào)用者不在同一事務(wù)里。
10.根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的管理裝置,其特征在于,所述調(diào)用模塊調(diào)用所 述插件的調(diào)用規(guī)則具體為查詢所述擴(kuò)展點(diǎn)對(duì)應(yīng)的一個(gè)或多個(gè)所述插件,按照所述調(diào)用時(shí) 機(jī)和所述調(diào)用順序?qū)傩缘脑O(shè)置來調(diào)用所述插件,如果所述插件的所述調(diào)用時(shí)機(jī)在默認(rèn)插件 之前,則先處理所述插件,如果所述插件的所述調(diào)用時(shí)機(jī)在所述默認(rèn)插件之后,則先處理所 述默認(rèn)插件;按照所述是否支持設(shè)置同步屬性的設(shè)置來處理所述插件,同步調(diào)用所述插件或異步調(diào) 用所述插件;按照所述是否支持設(shè)置同一事務(wù)屬性的設(shè)置來處理所述插件,調(diào)用所述插件時(shí)與調(diào)用 者在同一事務(wù)里或不在同一事務(wù)里。
全文摘要
本發(fā)明提供了一種擴(kuò)展點(diǎn)和插件的管理方法,包括建立擴(kuò)展點(diǎn),根據(jù)所述擴(kuò)展點(diǎn)的屬性來發(fā)布所述擴(kuò)展點(diǎn),所述擴(kuò)展點(diǎn)與多個(gè)插件對(duì)應(yīng),根據(jù)所述插件的屬性和注冊(cè)規(guī)則來注冊(cè)與所述擴(kuò)展點(diǎn)對(duì)應(yīng)的所述插件。本發(fā)明還提供了一種擴(kuò)展點(diǎn)和插件的管理裝置,包括發(fā)布模塊,用于建立擴(kuò)展點(diǎn),根據(jù)擴(kuò)展點(diǎn)的屬性來發(fā)布所述擴(kuò)展點(diǎn),所述擴(kuò)展點(diǎn)與多個(gè)插件對(duì)應(yīng),根據(jù)所述插件的屬性和注冊(cè)規(guī)則來注冊(cè)與所述擴(kuò)展點(diǎn)對(duì)應(yīng)的所述插件。根據(jù)本發(fā)明的技術(shù)方案,能夠建立一個(gè)統(tǒng)一的擴(kuò)展點(diǎn)管理平臺(tái),可以方便地實(shí)現(xiàn)基于該擴(kuò)展點(diǎn)管理平臺(tái)的插件擴(kuò)展,較好地解決了基于擴(kuò)展點(diǎn)的軟件擴(kuò)展與應(yīng)用融合的問題。
文檔編號(hào)G06F9/44GK102087594SQ20101060849
公開日2011年6月8日 申請(qǐng)日期2010年12月27日 優(yōu)先權(quán)日2010年12月27日
發(fā)明者史周軍 申請(qǐng)人:用友軟件股份有限公司