專利名稱:組件架構(gòu)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及組件架構(gòu)。更具體地,但不是排他地,本發(fā)明 涉及用于移動(dòng)設(shè)備的自管理組件架構(gòu)。
背景技術(shù):
組件架構(gòu)廣泛用于軟件行業(yè)中。由于可重配置的架構(gòu)與移動(dòng)中 間件和自管理系統(tǒng)相關(guān),所以近來可重配置的架構(gòu)受到關(guān)注。移動(dòng)應(yīng)用平臺(tái)的常見特性是環(huán)境的動(dòng)態(tài)變化。取決于地理位置 或接近于其他終端,服務(wù)可以變得可用或不可用?;诳捎玫姆?wù) 以及該服務(wù)需要的屬性(帶寬、諸如屏幕大小的設(shè)備屬性),應(yīng)用 可能不得不對(duì)其自身以及服務(wù)于該應(yīng)用通信要求的中間件進(jìn)行調(diào) 整。廣泛使用的方法是使用組件模型,并且通過向應(yīng)用添加新組件 或從應(yīng)用移除新組件或通過將應(yīng)用組件連接到不同中間件組件來動(dòng) 態(tài)地改變組件的連接("裝配")。對(duì)于所謂的反射中間件來說需要?jiǎng)討B(tài)裝配。反射中間件基于反射原理,反射使程序能夠訪問關(guān)于其自身代碼庫(code base)以及 中間件代碼庫的信息。然后,程序可以分析行為模式并且調(diào)整其行 為。對(duì)于使用眾所周知的層次分解所不能實(shí)現(xiàn)的應(yīng)用邏輯,為了達(dá) 到調(diào)整程序行為的目的所需要的改變可能是顯著的并且是橫切 (crosscutting )的。在以下參考中公開了其他背景技術(shù),現(xiàn)通過參考將其引入 Jeremy S. Bradbury et al.: A Survey of Self-Management in Dynamic Software Architecture Specifications, Proc. of the International Workshop on Self-managed Systems (WOSS'04), Newport Beach, California, USA, October/November 2004; Marija Mikic-Rakic andNenad Medvidovic: Support for Disconnected Operation via Architectural Self-Reconfiguration。所有這些架構(gòu)似乎都使用某些外 部定義語言來描述組件系統(tǒng)?,F(xiàn)有技術(shù)主要集中在推理引擎和規(guī)則 描述上。公知的現(xiàn)有技術(shù)使用集中的規(guī)則引擎,但是不幸地是,很難創(chuàng) 建用于規(guī)則引擎的詳盡規(guī)則庫,并且如果規(guī)則引擎出現(xiàn)故障,則自 適應(yīng)將失敗。發(fā)明內(nèi)容本發(fā)明的目的是避免或至少減輕現(xiàn)有技術(shù)的問題和/或提供新的 可替代技術(shù)。根據(jù)本發(fā)明的第 一 方面,提供了 一種包括自組織軟件的設(shè)備, 該自組織軟件包括至少兩個(gè)組件,每個(gè)組件包括至少一個(gè)用于與其 他組件連接的接口,其中每個(gè)組件包含定義組件規(guī)則的信息,根據(jù) 該組件規(guī)則,該組件可以與其他組件連接。有利地,自組織軟件可以獨(dú)立于外部規(guī)則數(shù)據(jù)庫工作。該組件可以進(jìn)一步包含定義接口規(guī)則的信息,根據(jù)該接口規(guī)則, 組件的接口可以與其他組件的接口進(jìn)行連接??梢耘渲迷搃殳備以讓 4妻口力見則取J義組件身見則。組件規(guī)則和/或接口^L則可以包含可選的規(guī)則,該可選^見則需要 滿足特定的條件。有利地,取代組件規(guī)則的接口規(guī)則以及提供條件性規(guī)則的接口 規(guī)則中的每一種都可以提供進(jìn)一步的靈活性。有利地,這樣便允許 存在的某些接口具有超越一般組件規(guī)則的特殊重要性。例如,可能 需要表明僅可以連接特定組件接口。在此情況中,組件規(guī)則可以使 連接失效但接口規(guī)則使其有效。其結(jié)果是,可以連接被指定接口規(guī) 則的接口但是不能連接其他接口 。每個(gè)組件和/或每個(gè)接口可以與給定的權(quán)重或優(yōu)先級(jí)相關(guān)聯(lián),并 且可以配置設(shè)備以根據(jù)這些權(quán)重或優(yōu)先級(jí)來連接接口。有利地,優(yōu)先級(jí)或權(quán)重可以增強(qiáng)重新連接過程以促成組件所希望的組合或連接。每個(gè)組件或至少某些組件可以與預(yù)定的、可選的獨(dú)立的有效期 相關(guān),在該有效期之后,刪除具有有效期的組件。 自組織軟件可以根據(jù)分層組件模型進(jìn)行組織。組件規(guī)則和/或接口規(guī)則可以作為元信息存儲(chǔ)在組件中。元信息可以包括^f壬何以下選項(xiàng)強(qiáng)制屬性,用于定義可以與討i侖中的組件 連接的另一個(gè)組件的所需屬性及屬性值;條件屬性,用于當(dāng)存在將 要與討論中的組件連接的另 一組件時(shí),定義必須具有給定值的所述 另一組件的屬性;以及禁止屬性,用于定義絕對(duì)不能連接的另一組 件屬性的值。屬性的值可以作為單個(gè)的值、范圍或多個(gè)值和/或范圍 給出。組件可以包括能夠暴露它們?cè)畔⒌幕窘M件(primitive component)。該基本組件可以包括一個(gè)或多個(gè)組合組件,該組合組含在組合組件中的其他組件來暴露元信息。有利地,組合組件或容器(container)可以創(chuàng)建能夠使多個(gè)組件 以統(tǒng)一 的方式集體行動(dòng)并且表現(xiàn)為 一 個(gè)整體的增強(qiáng)組件的組合單 元。有利地,組合組件可以包含基本組件和組合組件二者或之一。組合組件可以與用于包含由該組合組件所包含組件的域存儲(chǔ)器以配置容器以保持域存儲(chǔ)器并且根據(jù)組件將要加入組合組件還是離 開組合組件而將組件移動(dòng)到域存儲(chǔ)器中或從域存儲(chǔ)器中移出組件。 組件可以具有確定組件可以加入哪個(gè)容器的超級(jí)屬性。 當(dāng)組件插入域存儲(chǔ)器中時(shí),可以配置設(shè)備以重連接組合組件所 包含的所有組件??梢耘渲迷O(shè)備以建立重連接標(biāo)識(shí),該重連接標(biāo)識(shí) 能夠使任何新的重連接區(qū)別于最近的重連接,以便域存儲(chǔ)器內(nèi)的每 個(gè)容器可以識(shí)別其在新的重連接期間是否被檢查過。有利地,設(shè)備能夠基于組件架構(gòu)環(huán)境中的改變確定需要的組件裝配。有利地,可以將設(shè)備看成模仿生物細(xì)胞的行為。組件可以包含 劃分為可選接口和強(qiáng)制接口的接口或端口,每個(gè)具有特定類型。當(dāng) 所有強(qiáng)制接口與其他組件相連接時(shí),組件可以起作用。僅當(dāng)將要連 接到一起的組件具有通用類型的接口時(shí),組件才可以彼此連接??梢耘渲迷O(shè)備以存儲(chǔ)不活躍的組件(例如,它們所有的強(qiáng)制接 口都沒有被占用)。當(dāng)新組件添加到系統(tǒng)中時(shí),設(shè)備可以進(jìn)一步配置以;險(xiǎn)查可用組件的接口以便搜索匹配的接口 。有利地,系統(tǒng)可以提供新型的自管理組件架構(gòu)。與現(xiàn)有公知的 自管理組件架構(gòu)不同,關(guān)于自適應(yīng)的知識(shí)(規(guī)則或約束)可以配置 在組件的接口內(nèi)。換句話說,不需要額外的描述文件集中數(shù)據(jù)庫來 管理自適應(yīng)。組件可以由不同的銷售商提供。例如,可以基于開源軟件(OSS)可。這將進(jìn)一步使得能夠使用OSS來提供應(yīng)用的無保護(hù)部分。根據(jù)本發(fā)明的第二方面,提供一種用于對(duì)設(shè)備進(jìn)行控制的自組 織軟件,該自組織軟件包括至少兩個(gè)組件,每個(gè)組件包括至少一個(gè) 用于與其他組件進(jìn)行連接的接口 ,其中每個(gè)組件包含定義組件規(guī)則 的信息,根據(jù)該組件規(guī)則,該組件可以與其他組件進(jìn)行連接。根據(jù)本發(fā)明的第三方面,提供了一種自組織軟件的方法,該方 法包括識(shí)別至少兩個(gè)組件,每個(gè)組件包括至少一個(gè)用于與其他組 件連接的接口,獲取每個(gè)所述組件專用的組件規(guī)則,并且基于該組 件規(guī)則確定每個(gè)所述組件可以如何與其他組件進(jìn)行連接。可以將軟件作為承載和/或存儲(chǔ)在數(shù)據(jù)介質(zhì)或嵌入在數(shù)據(jù)信號(hào)中 的 一個(gè)或多個(gè)計(jì)算機(jī)產(chǎn)品來提供。該軟件也可以由 一個(gè)或多個(gè)設(shè)備 (分布式模型)主管。從屬權(quán)利要求和前述實(shí)施例涉及本發(fā)明的不同實(shí)施例。實(shí)施例 包含的并涉及本發(fā)明特定方面的主題可以在進(jìn)行必要的修正后應(yīng)用 于本發(fā)明的其他方面。
現(xiàn)在,通過參考附圖的示例方式描述本發(fā)明的實(shí)施例,其中圖la示出了根據(jù)本發(fā)明實(shí)施例設(shè)備的框圖;圖lb示出了圖la設(shè)備所使用軟件環(huán)境元素細(xì)節(jié)的框圖;圖2示出了根據(jù)本發(fā)明實(shí)施例的分層組件架構(gòu)模型;圖3示出了組件接口的示例性連接;圖4示出了使用優(yōu)先級(jí)修改組件網(wǎng)絡(luò);圖5示出了使用接口屬性取代組件屬性;圖6示出了雙向組件"^妻口 ;圖7示出了創(chuàng)建演示組;圖8示出了刪除獨(dú)立的演示組件;圖9示出了關(guān)于在演示應(yīng)用中在網(wǎng)格視圖和選項(xiàng)卡視圖之間進(jìn) 行改變的組件連接重布置;圖10示出了關(guān)于在演示應(yīng)用中激活性能監(jiān)視器的組件連接重布置;圖11示出了在層級(jí)中移動(dòng)組件群;圖12示出了具有垂直時(shí)間線的因果關(guān)系圖,該圖示出了在對(duì)演 示應(yīng)用的連接進(jìn)行重布置時(shí),框架和組件的操作。
具體實(shí)施方式
下面將參考附圖描述兩個(gè)示例。這兩個(gè)示例都作為具有動(dòng)態(tài)裝 配的組件架構(gòu)的例子。這兩個(gè)示例中的任一個(gè)可以4吏用圖la中示出 的設(shè)備100來執(zhí)行。圖la示出了設(shè)備100,諸如移動(dòng)通信設(shè)備(MCD),用于動(dòng)態(tài) 地運(yùn)行裝配應(yīng)用,即運(yùn)行這樣的軟件,該軟件可以自動(dòng)調(diào)整自身以 便加載并執(zhí)行需要的特征,以及在操作期間可以引入新特征或組件。 MCD 100包括通信模塊110、用于與用戶進(jìn)行數(shù)據(jù)交換(輸入和輸 出)的用戶接口 120、為設(shè)備100提供電力的電池130、用于存儲(chǔ)計(jì)算機(jī)程序代碼141和長(zhǎng)期數(shù)據(jù)142的永久或非易失性存儲(chǔ)器140、用 于為高速處理緩沖數(shù)據(jù)的工作存儲(chǔ)器150,以及用于執(zhí)行所存儲(chǔ)的計(jì) 算機(jī)程序代碼并且從而用于通常控制MCD 100其他部分操作的處理 器170。通信模塊110—般是無線模塊,諸如能夠通過蜂窩網(wǎng)絡(luò)接收 和/或發(fā)送計(jì)算機(jī)用戶數(shù)據(jù)并且還可能接收和/或發(fā)送程序代碼的蜂 窩無線網(wǎng)絡(luò)兼容單元。圖lb示出了圖la的設(shè)備所使用軟件環(huán)境的元素細(xì)節(jié)框圖。這些 元素通常由存儲(chǔ)在永久存儲(chǔ)器140中的計(jì)算機(jī)程序代碼141組成, 并且包括運(yùn)行在彼此頂部的下列主要元素,從底部列舉操作系統(tǒng)1410、 i^3口 Java Runtime Environment ( JRE )之類的面向7t象平臺(tái)1411、 諸如Fractal組件框架Julia 2.1實(shí)現(xiàn)之類的通用組件框架軟件1412、 自動(dòng)連接組件所需的動(dòng)態(tài)組件裝配框架應(yīng)用1413和多個(gè)軟件 組件1414,該軟件組件1414能夠作為在框架應(yīng)用1413控制下的控 制器架構(gòu)軟件上分開的組件實(shí)例運(yùn)行。面向?qū)ο笃脚_(tái)1411可以是軟 件系統(tǒng),該軟件系統(tǒng)提供諸如對(duì)象創(chuàng)建、對(duì)象方法調(diào)用之類的對(duì)象 抽象。容器包含的多個(gè)軟件組件通常是所謂的基本組件,即,可以暴 露它們的約束以在動(dòng)態(tài)組合中使用的組件。容器可以通過使用方法調(diào)用下面的框架1413或通過指示該框架 這么做來重布置包含在組合組件中的其他組件,包括其他組合組件。 組合組件管理的組件集合稱作組合組件的域。組合組件也能夠以與 基本組件相同的方式經(jīng)由框架1413暴露它們的約束(框架能夠從組 件查詢這些約束)。組合組件還能夠參與將組件轉(zhuǎn)移進(jìn)組合組件以 及轉(zhuǎn)移出組合組件。從面向?qū)ο蟪绦蛩氖墙M件可以作為計(jì)算機(jī)可執(zhí)行代碼 存儲(chǔ)在存儲(chǔ)器中以用于運(yùn)行,并且當(dāng)執(zhí)行時(shí),該組件占用它們自身 的工作存儲(chǔ)器150區(qū)域(footprint)并且用作程序或組件實(shí)例。在此 文檔中,為了簡(jiǎn)便起見,組件實(shí)例通常稱作組件,除非正在討論的 是它們?cè)谟谰么鎯?chǔ)器中的物理存儲(chǔ)。這里不同實(shí)施例的目的是使工作存儲(chǔ)器150免受不需要的消耗存儲(chǔ)的組件實(shí)例的影響。因此,組件銷毀以及其他術(shù)語旨在描述刪除工作存儲(chǔ)器150中的組件表示, 而組件本身通常保留在永久存儲(chǔ)器140中以避免每次需要組件時(shí)持 續(xù)地獲取相同的代碼。第一示例存在運(yùn)行在MCD 100中的企業(yè)庫存應(yīng)用,用于根據(jù)情況來基于 網(wǎng)絡(luò)服務(wù)器使用或單獨(dú)使用。庫存應(yīng)用根據(jù)應(yīng)用是否通過高速鏈接 連接到企業(yè)網(wǎng)絡(luò)、通過高速網(wǎng)絡(luò)連接到公共因特網(wǎng)、通過低速鏈接 連接到企業(yè)網(wǎng)絡(luò)或應(yīng)用是否根本沒有連接到企業(yè)網(wǎng)絡(luò)來進(jìn)行不同的 工作。應(yīng)用包含連接到數(shù)據(jù)訪問組件的若干用戶接口 (UI)組件, 包括UI容器。UI組件包括總是存在的強(qiáng)制組件,以及僅當(dāng)應(yīng)用用于 特定某種環(huán)境或某些環(huán)境中時(shí)才存在的輔助UI組件。數(shù)據(jù)訪問組件 依靠下列方式中使用的通信信道■ 當(dāng)應(yīng)用能夠通過高速鏈接連接到企業(yè)網(wǎng)絡(luò)時(shí),UI容器添加某 些組件,諸如產(chǎn)品的圖像或庫存中的詳細(xì)產(chǎn)品文檔或當(dāng)前庫 存水平。由于高速鏈接,服務(wù)器的延遲低并且有可能同步通 信,因此數(shù)據(jù)訪問組件直接連接到服務(wù)器。數(shù)據(jù)訪問組件使 用企業(yè)認(rèn)證組件。從而數(shù)據(jù)訪問組件^吏用適合企業(yè)環(huán)境的通 信協(xié)議,諸如公共對(duì)象請(qǐng)求代理架構(gòu)(CORBA)。應(yīng)用還自 動(dòng)地以預(yù)定間隔將庫存信息復(fù)制至U設(shè)備數(shù)據(jù)庫以便斷開時(shí)使 用。翻當(dāng)應(yīng)用僅能夠連接到公共因特網(wǎng)卻沒有被認(rèn)證使用企業(yè)服務(wù)諸如通過Web月良務(wù)進(jìn)行訪問。此有限制的庫存不允許查詢當(dāng) 前庫存水平;可用的詳細(xì)產(chǎn)品文檔較少。因此,UI容器使該 應(yīng)用適應(yīng)于有限制的可用數(shù)據(jù),以便移除顯示不可用數(shù)據(jù)的 UI組件,并且數(shù)據(jù)訪問組件與支持web服務(wù)的數(shù)據(jù)訪問組件 交換。還移除復(fù)制組件。■ 當(dāng)只有低帶寬通信可用時(shí),UI容器將應(yīng)用恢復(fù)成使用在應(yīng)用 主管設(shè)備上的本地復(fù)制數(shù)據(jù)庫。由于在便攜式設(shè)備中缺少設(shè) 備存儲(chǔ)器空間,可用的細(xì)節(jié)甚至更少。相反地,UI包含更少 的UI組件并且數(shù)據(jù)訪問組件連接到本地復(fù)制數(shù)據(jù)庫。安裝 了低速復(fù)制組件。同時(shí),可以選擇不同的通信協(xié)議,因?yàn)榈?速載體將從適當(dāng)?shù)刈赃m應(yīng)的復(fù)制策略中獲益。而且,復(fù)制不 是自動(dòng)的,因?yàn)樗菨撛谙脑O(shè)備全部通信帶寬的長(zhǎng)期過程。UI容器使用手工發(fā)起復(fù)制以及在復(fù)制過程期間呈現(xiàn)狀態(tài)指示 的組件來更新UI。 ■當(dāng)未連接到網(wǎng)絡(luò)時(shí),UI容器移除所有復(fù)制特征。圖2示出了根據(jù)本發(fā)明實(shí)施例的分層組件模型。圖2示出了多 個(gè)組件,包括分別為第一組合組件和第二組合組件(即,其他組件 的容器)的組件C1—1和C2—1,組件Cl到C8由容器C1—1和C2—1 包含。第一容器包含兩個(gè)未連接的組件Cl和C2,而其他三個(gè)組件 是連接的(也公知為"裝配在一起,,)。組件通過接口 (aka端口) 通信。接口可以是可選的或強(qiáng)制的(參見圖3)。測(cè)定接口類型,即, 僅通用類型的接口是可連接的。僅當(dāng)組件的所有強(qiáng)制接口都連接到 其他組件時(shí),該組件才起作用。在圖3中,組件A和B都連接了它 們的強(qiáng)制接口并且它們可選接口中的 一 個(gè)也是連接的。組件A具有 一個(gè)未連接的可選接口,但是由于強(qiáng)制接口是連接的,所以兩個(gè)組 件都起作用。在明了本發(fā)明之后可以認(rèn)為,組件模型類似于活生物細(xì)胞的過 程。自管理邏輯發(fā)布到根據(jù)"基因,,創(chuàng)建的組件中。"基因,,對(duì)應(yīng) 于應(yīng)該;故創(chuàng)建的組件的列表。這些組件的"l妄口類型均,皮測(cè)定,并且 如果所有需要的接口都滿足,即,如果存在具有正確類型以及一定 數(shù)量的未連接接口的其他組件,則自動(dòng)連接組件。未連接組件在系 統(tǒng)中自由走動(dòng)并且存儲(chǔ)直到它們的有效期屆滿。組件也可以銷毀自己。例如,如果特定組件在預(yù)定時(shí)間內(nèi)未接收到請(qǐng)求,則它可以銷毀自己并且因此潛在地銷毀整個(gè)組件網(wǎng)絡(luò)。 這樣允許清除未使用的功能,以便可以節(jié)省存儲(chǔ)器。當(dāng)請(qǐng)求到達(dá)時(shí), 組件鏈可以從基因重建。組件全面控制組件網(wǎng)絡(luò)它們可以取消現(xiàn)有的連接并且將它們 自己構(gòu)建到現(xiàn)有組件網(wǎng)絡(luò)中、它們可以啟動(dòng)"基因,,部分的處理或 者可以將其他組件釋放到系統(tǒng)中,或者它們甚至可以改變基因本身。其結(jié)果是自適應(yīng)邏輯分布在獨(dú)立組件中,并且可以僅通過將其他 組件注入到系統(tǒng)中或擴(kuò)展"基因,,來輕易地?cái)U(kuò)展自適應(yīng)邏輯。為了控制組件連接,可以將屬性分配到組件和組件接口中。屬 性能夠表達(dá)規(guī)則,比如"該組件僅可以連接到屬性a = 5的組件,,或 "該組件絕對(duì)不能連接到屬性a = 5的組件"或"該組件可以連接到 屬性a設(shè)置為任何值的組件"。組件框架可以在組件中使用簡(jiǎn)單的 匹配身見則或復(fù)雜的匹配A見則。分配給組件接口的屬性可以重寫分配給該組件的屬性。例如, 組件屬性可以定義該組件絕對(duì)不能連接到屬性'V,的值為5 (a=5) 的組件。分配給接口的屬性可以重寫此規(guī)則并且可以表述該接口需 要其他組件的各自接口的屬性a-5。在此情況中,分配給接口的屬性 規(guī)則優(yōu)先于分配給組件的屬性。圖5示出了該效果。除了用于確定兩個(gè)組件是否可以連接的屬性集合外,還存在另 一個(gè)屬性集合用于確定組件是否可以置于父組件的域中。該屬性集 合被稱作超級(jí)屬性。組件可以暫時(shí)地置于父組件的域中并且然后使 其超級(jí)屬性與父組件的常規(guī)屬性相比較。如果存在匹配,則組件可 以置于該域中并且可以與該域中的組件進(jìn)行連接。如果不存在匹配, 則組件不能置于該域中,并且將放到存儲(chǔ)器中至過期或?qū)⒁獜脑撚?中導(dǎo)出。根據(jù)使用此架構(gòu)的環(huán)境,組件可以使用本地方法調(diào)用或遠(yuǎn)程協(xié) 議以Y更相互通信。接口還具有分配給它們的、指示接口連接順序的優(yōu)先級(jí)。這使 得一個(gè)組件將自己插入已經(jīng)連接組件的網(wǎng)絡(luò)中成為可能。如果現(xiàn)有連接的優(yōu)先級(jí)低于進(jìn)入組件的接口優(yōu)先級(jí)并且進(jìn)入組件可以連接到 現(xiàn)有組件網(wǎng)絡(luò)中,則接口連接的最高優(yōu)先級(jí)勝出。因此,進(jìn)入組件 可以替代舊的 一個(gè)或多個(gè)組件并且進(jìn)入組件可以在舊組件中創(chuàng)建自 己(參見圖4)。具有未連接的強(qiáng)制接口的組件還未解析并且存儲(chǔ)在分配給所屬組件的存儲(chǔ)區(qū)域中(參見圖2)。組件具有使它們可以在存儲(chǔ)器中停留的(可能無限的)有效期。如果組件超過了其存儲(chǔ)有效期,則銷 毀它。應(yīng)用程序?qū)⑺男陆M件引入到域中。使用框架連接或重連接容 器的域,即,框架代表組合組件進(jìn)行動(dòng)作??蚣苓B接組件并且將未 連接的組件放入屬于組合組件的存儲(chǔ)器中,使得每個(gè)組合組件具有 其自己的存儲(chǔ)器。組件具有將新組件引入它們的域的機(jī)制。當(dāng)新組件被引入到組 合組件的域中時(shí),解析過程開始。在此過程期間,接口類型、優(yōu)先 級(jí)以及存儲(chǔ)器中未使用的組件用于創(chuàng)建新的組件網(wǎng)絡(luò)(其可以與舊 的組件網(wǎng)絡(luò)相同)。在解析過程的最后,建立新組件網(wǎng)絡(luò)并且將未 使用組件放入存儲(chǔ)器。基于導(dǎo)出過濾器和導(dǎo)入過濾器在域中導(dǎo)出和導(dǎo)入組件。導(dǎo)出過 濾器對(duì)未連接組件存儲(chǔ)器中的組件進(jìn)行操作。將導(dǎo)出過濾器選擇的析父組件的域。類似地,存在導(dǎo)入列表以選擇父組件的未連接組件 存儲(chǔ)器中的組件,并且將它們導(dǎo)入孩子域中并提示解析。導(dǎo)出過濾 器和導(dǎo)入過濾器管理未連接組件在父親域和孩子域之間的流動(dòng)。第二示例接下來描述稱作Dynacomp的模型實(shí)現(xiàn)。Dynacomp建立在Fractal 沖匡架之上,^口由E.Bmneton, T. Coupaye牙口 J.Stefani, Recursive and dynamic software composition with sharing, In Proceedings of the 7th ECOOP International Workshop on Component-Oriented Programming(WCOP,02), Malaga(Spain), June 2002所描述的。Dynacomp框架使 用擴(kuò)展了 Fractal的組合組件類型和基本組件類型的兩類組件。除了 Fractal特征之外,Dynacomp組件類型還提供了以下功能。接下來解釋Dynacomp模型中使用的術(shù)語,并按照該術(shù)語來描述 基于Java的用例研究。約束由獨(dú)立組件實(shí)例提供。因此,組件實(shí)例通過這些約束直接 控制重連接進(jìn)程。除了在Fractal框架中已經(jīng)可用的非常有限的元信 息之外,組件還包含其他元信息。在此示例中使用以下元信息。接口名稱對(duì)每個(gè)接口進(jìn)行命名,并且僅可以連接具有相同名 稱的接口。接口名稱約定直接來自于Fractal網(wǎng)絡(luò)。接口方向除了 Fractal網(wǎng)絡(luò)客戶端(出去)和服務(wù)器(進(jìn)入) 接口外,動(dòng)態(tài)組合框架引入雙向接口類型,參見圖6。暴露雙向接口 的組件具有一個(gè)客戶端接口和一個(gè)服務(wù)器接口 ,這兩個(gè)接口在邏輯 上具有相同的名稱。由于Fractal限制,實(shí)際名稱不能相同。 一個(gè)雙 向接口僅可以連接到另一個(gè)雙向接口 。雙向接口在隨機(jī)方向上連接, 例如,第一組件的客戶端接口連接到第二組件的服務(wù)器接口。第一 組件上的服務(wù)器接口和第二組件上的客戶端接口未連接。雙向接口 能夠表達(dá)相同類型的特定組件實(shí)例必須相互連接的聲明。在沒有提 示雙向接口的情況下,此聲明將在連接圖中創(chuàng)建循環(huán),因此,組件網(wǎng)絡(luò)不能啟動(dòng)。接口多樣性Fractal制造了單個(gè)和集合基數(shù)之間的差異。自動(dòng) 組合需要對(duì)允許接口連接的更精確描述。Dynacomp采用由H. Cervantes and R. S. Hall, Automating Service Dependency Management in a Service-Oriented Component Model, ICSE CBSE6 Workshop, 2003解釋的服務(wù)綁定器的基數(shù)描述。接口 (客戶端和服務(wù)器二者)的基 數(shù)可以是一個(gè)、 一個(gè)或多個(gè)、零個(gè)或一個(gè)、零個(gè)或多個(gè)連接。可以 針對(duì)客戶端接口和服務(wù)器接口指定基數(shù)。接口優(yōu)先級(jí)優(yōu)先級(jí)分配給所有組件接口。倘若存在多個(gè)組件 接口滿足搜索標(biāo)準(zhǔn)時(shí),優(yōu)先級(jí)確定選擇哪個(gè)組件接口用于連接。添加將要連接的接口的優(yōu)先級(jí)并且選擇具有最大總和的接口對(duì)用于連接。組件和接口優(yōu)先級(jí)與服務(wù)綁定器類似,通過匹配組件實(shí)例或 接口優(yōu)先級(jí)以限制組件實(shí)例候選者是可能的。根據(jù)開源服務(wù)網(wǎng)關(guān)倡 議(OSGi)服務(wù)屬性約定,服務(wù)綁定器允許屬性分配給組件的單獨(dú) 接口。 Dynacomp最初將屬性分配給組件,分配給接口的屬性可以取 代該屬性。根據(jù)非常簡(jiǎn)單的模式語言來匹配屬性。該語言能夠描述 其他組件必須具有帶有特定值的特定屬性(強(qiáng)制屬性),其他組件 可以具有特定屬性并且在此情況中,其值必須與該組件的值相同以 匹配(可選屬性),以及其他組件不允許具有帶有特定值的特定屬 性(禁止屬性)。模式或約束語言在覆蓋區(qū)與復(fù)雜度之間進(jìn)行了平 衡。更復(fù)雜的約束語言是有利的,但是耗費(fèi)更多的存儲(chǔ)器以及重連 接時(shí)間。超級(jí)屬性組件可以具有超級(jí)屬性,該超級(jí)屬性確定可以放置 該容器的容器組件。僅當(dāng)組件的超級(jí)屬性與容器的屬性匹配時(shí),才 可以將該組件導(dǎo)入容器。匹配MJ'j與組件和接口屬性的^L則相同。導(dǎo)出列表和導(dǎo)入列表容器可以具有控制哪些組件可以離開此 容器的域以及哪些組件可以移入此容器的導(dǎo)出列表和導(dǎo)入列表。 CHAM, 或P. Inverardi, A丄.Wolf, Formal Specification and Analysis of Software Architectures Using the Chemical Abstract Machine Model, IEEE Transactions on Software Engineering , volume 21, no.4, 1995具 有類似的機(jī)制,但是CHAM將其應(yīng)用于數(shù)據(jù)項(xiàng)而不是組件。導(dǎo)出列 表和導(dǎo)入列表包含接口名稱。如果未連接的組件包含具有導(dǎo)出或?qū)?入列表上的名稱的接口,則可以將其導(dǎo)出到更高級(jí)(閉合)域中或 者來自于更高級(jí)域的組件可以導(dǎo)入該域。僅當(dāng)組件的超級(jí)屬性與域 的屬性匹配時(shí)發(fā)生該導(dǎo)入。超時(shí)未連接組件在超時(shí)之后"過期",并且框架將其從存儲(chǔ) 器中移除。創(chuàng)建時(shí)間當(dāng)創(chuàng)建組件時(shí),框架將時(shí)間戳放置在組件上??梢允褂迷摃r(shí)間戳基于組件年齡來實(shí)現(xiàn)沖突解決邏輯,例如,如果組件 檢查到它與域中的某些其他組件沖突,則更年輕的組件可以存活。創(chuàng)建列表給每個(gè)組件分配創(chuàng)建列表。這個(gè)列表是組件名稱的 列表。列表也可以包含標(biāo)簽??梢哉J(rèn)為創(chuàng)建列表是一種關(guān)于應(yīng)當(dāng)如 何通過將組件集合插入到域中來重配置域的情形。當(dāng)發(fā)生特定事件 時(shí),事件處理器可以查詢創(chuàng)建列表中的特定標(biāo)簽并且創(chuàng)建組件名稱 在列表中從此標(biāo)簽開始直到下 一標(biāo)簽中的所有組件。此活動(dòng)可以由 組件自己完成(使用它自己的創(chuàng)建列表)或通過專門處理其他組件的創(chuàng)建列表的組件來完成。接口名稱、方向、多樣性和優(yōu)先級(jí)對(duì)于相同類型的每個(gè)組件是通用的,而其他元信息可以針對(duì)每個(gè)組件實(shí)例設(shè)置。首先,將組件插入到容器的域中,并且框架對(duì)域進(jìn)行配置。進(jìn) 行這些以便框架啟動(dòng)組件實(shí)例。組件根據(jù)它們的約束被停止、被連 接,連接的組件按照順序啟動(dòng)并且將未連接組件放入域的存儲(chǔ)器中。 存儲(chǔ)器中的組件可以導(dǎo)出到較高級(jí)的域中,導(dǎo)入到該域中的容器的 域中,或者如果未連接組件的時(shí)間過期則刪除它。下面描述確切的算法。出于此描述的目的,已經(jīng)存在于系統(tǒng)中的組件集合表示為C。 要插入的組件表示為C,并且其域是被插入的域的組件表示為Cp。 C的域中的組件集合表示為child(c),并且c駐留在其中的容器表示為 parent(c)。parent(c)理論上是集合但是Dynacomp不支持Fractal特征, Fractal特征是一 個(gè)組件可以是多個(gè)域的部分。在Dynacomp模式中 對(duì)于任何C e C , 三1 。
向重連接過程分配標(biāo)識(shí)號(hào)。此重連接ID必須是唯一的(后續(xù) 重連接過程必須具有不同的ID),以便每個(gè)容器可以識(shí)別此 重連接過程是否訪問過它。
c,作為Fractal級(jí)的cp的子組件添加。
停止每個(gè)c|cechild ( cp )并且斷開組件的連接。
Cp域中的組件(包括存儲(chǔ)器中的組件)被重新連接。當(dāng)連接 接口時(shí),框架考慮接口名稱、屬性、方向和多樣性。注意,為了最小化重連接時(shí)間,算法是貪心(greedy)的,其連接具 有最高優(yōu)先級(jí)的接口并且不考慮是否可以利用非貪心策略最 終連接更多的組件。在連接過程之后,當(dāng)連接了組件的每個(gè) 強(qiáng)制接口時(shí),將要解析組件。未解析的組件放入存儲(chǔ)器中。
存儲(chǔ)器向下傳播,朝向Cp的組合子組件。測(cè)驗(yàn)每個(gè)組合子組件其是否能夠?qū)氪鎯?chǔ)器中的任何組件(存儲(chǔ)器中的任何組器中組件的超級(jí)屬性是否與組合子組件的那些屬性匹配。如 果發(fā)現(xiàn)任何組件可以導(dǎo)入到組合子組件中,則在導(dǎo)入后重連 接此子組件。作為副作用,組合子組件可以變?yōu)橐呀馕龅模湫枰狢p域中的另一個(gè)重連接過程。 針對(duì)超時(shí)檢查存儲(chǔ)器中的組件。當(dāng)組件進(jìn)入存儲(chǔ)器時(shí),設(shè)置 其超時(shí)的基礎(chǔ)。此基礎(chǔ)時(shí)間用于計(jì)算超時(shí)。如果組件的時(shí)間 過期,則框架移除該組件。
如果任何組合子組件變?yōu)橐呀馕龅?,則組件再次斷開連接并 且發(fā)生另一個(gè)迭代。注意,這可以是無窮的循環(huán)。這被認(rèn)為 是被期望創(chuàng)建可以由此算法解析的組件網(wǎng)絡(luò)的程序員的失 誤。
cp域中的所有組件按順序啟動(dòng)。計(jì)算了在Michael C. McFarland Tutorial on High-Level Synthesis, 25th ACM/IEEE Design Automation Conference, 1988 IEEE中描述的簡(jiǎn)單的盡可能快(ASAP)調(diào)度,并且具有較低ASAP時(shí)間的組件首先啟動(dòng)。 在此過程期間,組合子組件遞歸地啟動(dòng)_當(dāng)組合子組件啟動(dòng) 時(shí),其域中的每個(gè)子組件也啟動(dòng)。
當(dāng)組件啟動(dòng)時(shí)組件網(wǎng)絡(luò)可能改變。例如,某些組件的startFc() 方法可能刪除組件本身或者某些其他組件,因此連接的組件 可以變?yōu)槲唇馕龅摹H绻魏谓M件在組件網(wǎng)絡(luò)啟動(dòng)期間變?yōu)槲唇馕龅?,則整個(gè)重連接過程重啟。
仍舊在存儲(chǔ)器中的組件向上傳播,直到parent(、)。此過程由、的導(dǎo)出列表、parent(Cp)的超級(jí)屬性以及將要導(dǎo)出的組 件的屬性來控制。如果導(dǎo)出成功,則從c,或中移除所導(dǎo)出的 組件并且將其放置到之后重連接的parent(cp )的域。通過使用重連接ID,框架保證導(dǎo)出的組件在此重連接過程期間將不 會(huì)再次導(dǎo)入到Cp的域中,盡管該再次導(dǎo)入是可能的。這就阻止了在父親容器和孩子容器之間對(duì)組件的"乒乓"操作。 應(yīng)該理解,算法的優(yōu)化標(biāo)準(zhǔn)僅接近最優(yōu)全局組件配置。貪心連 接算法將盡其所能多的組件連接到高優(yōu)先級(jí)接口 。如果組件可以在 域中連接,框架就決不嘗試在另一域中連接此組件,盡管組件可以 導(dǎo)出或?qū)氲皆撚虿⑶以摿?一域中的優(yōu)先級(jí)總和可能更高。組件開 發(fā)者必須認(rèn)識(shí)到這個(gè)事實(shí)并且使用組件元信息來創(chuàng)建他們希望的連 接。用例研究JAVA2D演示下面,將在熟知的Java2D演示應(yīng)用上展示動(dòng)態(tài)組合。Java2D是 搖擺(Swing)應(yīng)用,該搖擺應(yīng)用裝載有作為展示標(biāo)準(zhǔn)Java2D API 圖形功能的示例程序的每個(gè)Sun Java開發(fā)工具。Java2D演示以及下 面的Java 2D API全部以Java實(shí)現(xiàn),并且演示是高度動(dòng)態(tài)的,其將 顯著的負(fù)載放在垃圾收集器上。堆(heap)所需的存儲(chǔ)器不僅是存 活對(duì)象的大小的總和,而且為了達(dá)到真實(shí)的性能,需要多若干倍的 存4諸器。Java2D可以包括在組件內(nèi),以-使用戶可以4又實(shí)例化需要的 服務(wù)。未使用的服務(wù)將不會(huì)被實(shí)例化,因此可以節(jié)省存儲(chǔ)器。示出 了發(fā)生在所包括的Java2D中的組件實(shí)例化和重連接的若干情況,以 展示動(dòng)態(tài)組合如何運(yùn)作這個(gè)景象。第一交互允許用戶將演示添加到 她能夠使用的演示集合中(圖7)。將演示分為多個(gè)演示組,并且一 個(gè)演示組呈現(xiàn)在一個(gè)標(biāo)簽上。Java2D核心應(yīng)用(主框架和引入)由 一個(gè)java2d組件實(shí)例代表。首先創(chuàng)建演示組。 一個(gè)演示組由一個(gè)組 合DemoGroupContainer代表。此組合組件包含一個(gè)演示組組件實(shí)例 (DemoGroupArcsCurves, DGAC )以及零個(gè)或多個(gè)演示組件實(shí)例。最#刀DemoGroupContainer禾口 DemoGroupArcsCurves倉J建至1」java2d ,斤 在的同一域中。存在用于該演示組的超級(jí)屬性以及用于該容器的屬 性。(demogroup = arcscurves )。這意味著演示組可以僅放置在具有 相同demogroup屬性的容器中。在創(chuàng)建這兩個(gè)組件之后,啟動(dòng)重連 接。沒有一個(gè)組件可以被連接,因?yàn)槿萜鞯膬?nèi)部接口沒有連接并且 演示組的超級(jí)屬性與java2d的父親的屬性不匹配,因此將這兩個(gè)都 放入存儲(chǔ)器中。然而,容器可以導(dǎo)入帶有演示接口的組件,因此將 演示組導(dǎo)入該容器并且重連接該容器。這次連接成功,容器的強(qiáng)制 內(nèi)部接口是連接的并且解析了容器。依次地,這觸發(fā)了java2d級(jí)別 的重連接,并且java2d和該容器通過它們的演示接口連接。當(dāng)重啟 組件時(shí),java2d檢查其演示客戶端接口的連接矢量并且如果4全測(cè)到 新演示連4妄,則java2d查詢組的名稱、創(chuàng)建標(biāo)簽并且在由演示組組 件針對(duì)該標(biāo)簽創(chuàng)建的Java2D應(yīng)用的用戶接口上將演示組組件所創(chuàng)建 的繪畫區(qū)域添加到為演示組保留的標(biāo)簽上。將演示組件類似地放入 演示組。然而,令人感興趣的是,何時(shí)將演示組件從該組移除的交 互(圖8)。在此情況中,java2d將DemoItemDestructor組件的實(shí)例 創(chuàng)建到它的域中,并且以這樣的方式設(shè)置它的屬性,銷毀器組件將 被導(dǎo)入到包含演示組件的DemoGroupContainer中并且銷毀器組件將 丫又連4妻到將要^皮移除的演示組件上(demogroup和demoitem屬性用 于選擇容器,然后是演示組件)。銷毀器demoitem接口的優(yōu)先級(jí)增 加,因此如果銷毀器傳播到演示組件的域中,它將從演示組組件中 "偷取"演示組件。當(dāng)重啟組件時(shí),銷毀器銷毀演示組件和其自身 并觸發(fā)重連接。其影響是演示組件不再存在。演示組具有這樣的 特征它們能夠在同一表面上的格子中顯示演示或者在標(biāo)記的窗格 的標(biāo)簽上單獨(dú)地顯示演示。參考圖12,當(dāng)Java2D被組件化時(shí),通過 在演示組和演示組件之間插入121 DemoGroupTabbedPane ( DGTP ) 組件實(shí)例來重新包括此功能(圖9) 。 DemoGroupTabbedPane具有客 戶端和服務(wù)器demoitem接口 ,該接口具有比演示組或演示組件任一 都高的優(yōu)先級(jí)。DGAC請(qǐng)求122創(chuàng)建DBTP。因此,在演示組重連4妄之后,客戶端接口將連接123到DemoGroupTabbedPane的服務(wù)器接 口并且所有演示組件將連接到DemoGro叩TabbedPane的客戶端接 口 。這允許DemoGroupTabbedPane使用標(biāo)記的窗格顯示和隱藏演示 組件。注意,F(xiàn)ractal不允許組件具有相同名稱的接口 。 Dynacomp提 供名稱修飾(name mangling )以創(chuàng)建邏輯上相同的名稱。切換回到 格子視圖僅需要銷毀DemoGroupTabbedPane組件然后重新連接,因 為這將把演示組件連接回它們的演示組。通過創(chuàng)建另 一個(gè) DemoGroupTabbedPane來完成此目標(biāo)。DGAC請(qǐng)求框架創(chuàng)建另 一個(gè) DGTB 124,然后將其插入到DemoGroupContainer 125。 DemoGroupTabbedPane具有可選的雙向標(biāo)記4妄口 。如果在域中存在 一個(gè)DemoGroupTabbedPane,則標(biāo)記接口是未連接的。然而,如果 存在另一個(gè)DemoGroupTabbedPane,則標(biāo)記接口是連接的。當(dāng) DemoGroupTabbedPane啟動(dòng)并且發(fā)現(xiàn)126存在另 一個(gè)連接到其標(biāo)記 4^口的組件時(shí),它銷毀127該組件以及它自己。在重連4妄之后, DemoGroupTabbedPane消失并且演示連^^妻128回到它們的演示組。 圖10示出了關(guān)于演示應(yīng)用中激活性能監(jiān)視器的組件連接重布 置。Java2D具有性能監(jiān)視器特征。示范測(cè)量了瞬時(shí)性能(例如,每 秒幀數(shù))并且將此數(shù)據(jù)發(fā)送到顯示該數(shù)據(jù)的性能監(jiān)視器。通過使用 真實(shí)實(shí)現(xiàn)替換虛擬實(shí)現(xiàn)(其僅具有根代碼并且不顯示任何事物)及 其反向來完成使能和禁用性能監(jiān)視器。開始,MissingperformanceMonitor組件(虛擬實(shí)現(xiàn))帔實(shí)例化并且-皮連接。 當(dāng)用戶使能性能監(jiān)視器時(shí),創(chuàng)建PerformanceMonitor的實(shí)例。兩個(gè) 性能監(jiān)視器通過標(biāo)記接口感覺彼此的存在,如DemoGroupTabbedPane實(shí)例在之前的情況中所做的。然而,在此情 況中,組件4企查通過標(biāo)記接口連接的組件的創(chuàng)建時(shí)間。創(chuàng)建時(shí)間由 組件框架保留。組件根據(jù)哪一個(gè)較舊來銷毀自己或另一組件。重新 連接組件并且新創(chuàng)建的監(jiān)視器變?yōu)榭刹僮?。為了展示?dòng)態(tài)組件在分 層組件結(jié)構(gòu)中的能力,將新特征添加到Java2D。此特征允許將當(dāng)前 演示組標(biāo)簽移動(dòng)到另一個(gè)Java2D的主框架。通過在不同的域中實(shí)例化另一個(gè)java2d實(shí)現(xiàn)這個(gè)目的(圖11)。那個(gè)域具有不同的 appcontainer屬性。通過將未連接的演示組容器移動(dòng)到此第二域中并 且與此第二 java2d示例取得連接的方式建立導(dǎo)出過濾器和導(dǎo)入過濾 器。為了達(dá)到此目的,修改容納演示組的所有組件(演示組和演示 組件)的容器組件的appcontainer超級(jí)屬性并且請(qǐng)求重新連接就足夠 了。到組件網(wǎng)絡(luò)啟動(dòng)時(shí),整個(gè)演示組組件集合被移動(dòng)到第二域中并 且連接到第二 java2d實(shí)例。實(shí)現(xiàn)和結(jié)果測(cè)試運(yùn)行顯示確實(shí)可能通過僅裝載用戶使用的特征來節(jié)省存儲(chǔ) 器。測(cè)量同樣示出了在分層布置中的動(dòng)態(tài)重組合能夠?yàn)樽罱K用戶應(yīng) 用提供低的中斷時(shí)間??梢员砻?,如果用分層配置組件代替"平坦,,配置,則連接的 數(shù)量可以減少,從而重連接算法的執(zhí)行時(shí)間也可以減少。當(dāng)使用本 發(fā)明時(shí),連接的數(shù)量對(duì)于任何非平凡組來說都是較低的(使得組包 含不止一個(gè)組件并且存在不止一個(gè)組)。本領(lǐng)域的普通技術(shù)人員也將理解,本發(fā)明的組件架構(gòu)遠(yuǎn)比本領(lǐng) 域中公知的那些靈活。此靈活性使得組件架構(gòu)特別地,盡管不是排 他地,適合于實(shí)現(xiàn)自管理特征,并且在移動(dòng)應(yīng)用中更是如此。該架 構(gòu)能夠容易地以改進(jìn)的方式實(shí)現(xiàn)眾所周知的編程范例,例如該架構(gòu) 提供健壯的事件處理(事件是能夠使用其他組件來處理事件的組 件)、面向方面的編程(組件解析可以引起系統(tǒng)中的交叉影響)以 及基于代理的架構(gòu)(組件可以用作代理)。已經(jīng)描述了本發(fā)明的特定實(shí)現(xiàn)和實(shí)施例。對(duì)于本領(lǐng)域的技術(shù)人 員來說應(yīng)該清楚本發(fā)明不限制于上述實(shí)施例的細(xì)節(jié),但是在不脫離 本發(fā)明特點(diǎn)的情況下使用等價(jià)裝置在其他實(shí)施例中可以實(shí)現(xiàn)本發(fā) 明。本發(fā)明的范圍僅由所附專利權(quán)利要求書限制。
權(quán)利要求
1.一種包括自組織軟件的設(shè)備,所述自組織軟件包括至少兩個(gè)組件,每個(gè)組件包括至少一個(gè)用于與其他組件連接的接口,其中每個(gè)所述組件包含定義組件規(guī)則的信息,根據(jù)所述組件規(guī)則,該組件可以與其他組件連接。
2. 根據(jù)權(quán)利要求1所述的設(shè)備,其中所述組件進(jìn)一步包含定義 接口規(guī)則的信息,根據(jù)所述接口規(guī)則,組件的接口可以與其他組件 的接口連接。
3. 根據(jù)權(quán)利要求2所述的設(shè)備,其被進(jìn)一步配置以使所述接口 規(guī)則取代所述組件規(guī)則。
4. 根據(jù)權(quán)利要求2或3所述的設(shè)備,其中所述組件規(guī)則和/或所 述接口規(guī)則包含要求滿足特定條件的可選規(guī)則。
5. 根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的設(shè)備,其中每個(gè)組件和/ 或每個(gè)接口與給定的優(yōu)先級(jí)相關(guān)聯(lián),并且配置所述設(shè)備以根據(jù)這些 優(yōu)先級(jí)來連接接口 。
6. 根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的設(shè)備,每個(gè)組件或至少 某些所述組件與預(yù)定的、可選的獨(dú)立的有效期相關(guān)聯(lián),在所述有效 期之后刪除具有有效期的組件。
7. 根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的設(shè)備,其中所述自組織 軟件是根據(jù)分層組件模型組織的。
8. 根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的設(shè)備,其中所述組件規(guī) 則作為元信息存儲(chǔ)在所述組件中。
9. 根據(jù)權(quán)利要求8所述的設(shè)備,其中所述元信息包括任何以下 選項(xiàng)強(qiáng)制屬性,用于定義可以與討論中的組件連接的另一組件所 需的屬性及屬性的值;條件屬性,用于當(dāng)存在將要與討論中的組件 連接的另一組件時(shí),定義所述另一組件必須具有給定值的屬性;以 及禁止屬性,用于定義絕對(duì)不能連接的另 一組件的屬性值。
10. 根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的設(shè)備,其中所述組件包權(quán)括能夠暴露它們的元信息的基本組件。
11. 根據(jù)前述權(quán)利要求的任何一項(xiàng)所述的設(shè)備,其中所述組件包 括一個(gè)或多個(gè)組合組件,所述組合組件能夠通過安排與其他組件連 接來包含其他組件,并且能夠根據(jù)所述組合組件包含的所述其他組 件來暴露元信息。
12. 根據(jù)權(quán)利要求11所述的設(shè)備,其中所述組合組件與域存儲(chǔ)
13. —種用于控制設(shè)備的自組織軟件,包括至少兩個(gè)組件,每個(gè) 組件包括至少一個(gè)用于與其他組件連接的接口 ,其中每個(gè)所述組件 包含定義組件規(guī)則的信息,根據(jù)所述組件規(guī)則,組件可以與其他組 件進(jìn)行連接。
14. 根據(jù)權(quán)利要求13所述的自組織軟件,其中所述組件進(jìn)一步 包含定義接口規(guī)則的信息,根據(jù)所述接口規(guī)則,組件的接口可以與 其他組件的接口連接。
15. 根據(jù)權(quán)利要求14所述的自組織軟件,進(jìn)一步配置以使所述 接口規(guī)則取代所述組件規(guī)則。
16. 根據(jù)權(quán)利要求13到15中任何一項(xiàng)所述的自組織軟件,其中 所述組件規(guī)則包含要求滿足特定條件的可選規(guī)則。
17. 根據(jù)權(quán)利要求16所述的自組織軟件,其中所述組件規(guī)則和/ 或所述接口規(guī)則可以包含要求滿足特定條件的可選規(guī)則。
18. 根據(jù)權(quán)利要求13到17中任何一項(xiàng)所述的自組織軟件,其中 每個(gè)組件和/或每個(gè)接口與給定的權(quán)重或優(yōu)先級(jí)相關(guān)聯(lián),并且配置所 述自組織軟件以根據(jù)這些權(quán)重或優(yōu)先級(jí)連接接口 。
19. 根據(jù)權(quán)利要求13到18中任何一項(xiàng)所述的自組織軟件,每個(gè) 組件或至少某些所述組件與預(yù)定的、可選的獨(dú)立的有效期相關(guān)聯(lián), 在所述有效期之后刪除具有有效期的組件。
20. 根據(jù)權(quán)利要求13到19中任何一項(xiàng)所述的自組織軟件,其中 所述自組織軟件是根據(jù)分層組件模型組織的。
21. 根據(jù)權(quán)利要求13到20中任何一項(xiàng)所述的自組織軟件,所述自組織軟件承載或存儲(chǔ)在數(shù)據(jù)介質(zhì)或數(shù)據(jù)信號(hào)上。
22. —種自組織軟件的方法,包括識(shí)別至少兩個(gè)組件,每個(gè)組 件包括至少一個(gè)用于與其他組件連接的接口 ,獲取每個(gè)所述組件專 用的組件規(guī)則,并且基于所述規(guī)則確定每個(gè)所述組件可以如何與其 他組件進(jìn)行連接。
23. 根據(jù)權(quán)利要求22所述的方法,其中所述組件進(jìn)一步包含定 義接口規(guī)則的信息,根據(jù)所述接口規(guī)則,組件的接口可以與其他組 件的接口進(jìn)行連接。
24. 根據(jù)權(quán)利要求23所述的方法,其中所述組件規(guī)則和/或所述 接口規(guī)則可以包含要求滿足特定條件的可選規(guī)則。
25. 根據(jù)權(quán)利要求22到24中的任何一項(xiàng)所述的方法,其中所述 組件包括一個(gè)或多個(gè)組合組件,所述組合組件能夠通過安排與其他 組件的連接來包含其他組件,并且能夠根據(jù)所述組合組件包含的所 述其他組件來暴露元信息。
全文摘要
一種用于控制設(shè)備的自組織軟件,該軟件包含至少兩個(gè)組件。每個(gè)組件包括至少一個(gè)用于與其他組件連接的接口,其中每個(gè)組件本身包含定義組件規(guī)則的信息。組件包含的規(guī)則定義組件可以如何彼此連接,以便不需要外部規(guī)則數(shù)據(jù)庫。
文檔編號(hào)G06F9/44GK101248416SQ200680030652
公開日2008年8月20日 申請(qǐng)日期2006年8月22日 優(yōu)先權(quán)日2005年8月24日
發(fā)明者G·帕勒 申請(qǐng)人:諾基亞公司