專利名稱:一種對網(wǎng)絡(luò)管理系統(tǒng)對象進(jìn)行管理的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電信管理網(wǎng)的網(wǎng)絡(luò)管理技術(shù),特別涉及一種對網(wǎng)絡(luò)管理系統(tǒng)對象進(jìn)行管理的方法。
背景技術(shù):
在電信管理網(wǎng)(TMN)中,網(wǎng)絡(luò)管理系統(tǒng)的核心是對于被管對象(Managed Object,MO)的管理,現(xiàn)在的網(wǎng)絡(luò)規(guī)模越來越大,一個網(wǎng)管中的被管對象的數(shù)目可能達(dá)到百萬量級或者更高,如何對這些對象進(jìn)行有效管理是一個很大的難題。
目前,對于網(wǎng)絡(luò)管理系統(tǒng)的大部分管理信息,網(wǎng)絡(luò)管理系統(tǒng)的管理信息就是被管對象的集合,這些信息都保存在網(wǎng)絡(luò)管理系統(tǒng)中,而這種保存的方式通常采用關(guān)系型數(shù)據(jù)庫,需要開發(fā)人員通過各種數(shù)據(jù)庫提供的編程接口,或者基于這些接口之上的開放式數(shù)據(jù)庫互接(ODBC)、Java數(shù)據(jù)庫連接(JDBC)等直接操作數(shù)據(jù)庫中的數(shù)據(jù),這樣對于當(dāng)前主流的面向?qū)ο笤O(shè)計(jì),如C++和Java對象,它們和關(guān)系數(shù)據(jù)庫的行、列之間存在很大程度上的不匹配,而面向?qū)ο蟮臄?shù)據(jù)庫雖然解決了這個問題,卻由于性能和穩(wěn)定性的原因至今在電信網(wǎng)管中很少得到應(yīng)用。
根據(jù)X.732協(xié)議,電信網(wǎng)絡(luò)管理系統(tǒng)中的MO以包容關(guān)系存在,對應(yīng)用而言,開發(fā)人員看到的是一個包容關(guān)系的對象樹。參見圖1,圖1為一個簡單的包容關(guān)系對象樹結(jié)構(gòu)示意圖。從上到下,第一個對象,也可以稱為父對象在最上面一層,是根節(jié)點(diǎn);第一個對象的子對象在第二層,是根節(jié)點(diǎn)的子節(jié)點(diǎn);第二層子對象的子對象,也稱為第一個對象的孫對象在第三層,是第二層的子節(jié)點(diǎn)。舉例來說,在電信管理系統(tǒng)中,子網(wǎng)->網(wǎng)元->單板,依次就是包容關(guān)系。
現(xiàn)有技術(shù)中網(wǎng)絡(luò)管理系統(tǒng)對被管對象的處理方法有以下兩種1)直接面向關(guān)系型數(shù)據(jù)庫中一個個數(shù)據(jù)庫記錄編程,這種方式?jīng)]有使用對象的概念,造成應(yīng)用邏輯與數(shù)據(jù)庫層緊密綁定,擴(kuò)展性很差,對開發(fā)人員的開發(fā)技能要求比較高,開發(fā)效率比較低;2)面向?qū)ο缶幊?,但是對象之間的包容關(guān)系,是通過在父對象內(nèi)部直接包含子對象的方法來實(shí)現(xiàn)的,例如在網(wǎng)元對象中包含單板對象,這種方式不具備通用性和靈活性,可管理性比較差,并且對一個對象的訪問需要從最高層的對象一個個開始定位,運(yùn)行效率比較低;同時因?yàn)樽訉ο笾斜仨毐4嬉恍└笇ο蟮亩ㄎ恍畔?,否則無法從一個子對象定位到父對象,所以在對象層次比較深的時候,占用的內(nèi)存空間也會比較大。
因此,現(xiàn)有技術(shù)對MO的管理比較復(fù)雜,空間效率和運(yùn)行效率都不理想。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種對網(wǎng)絡(luò)管理系統(tǒng)對象進(jìn)行管理的方法,該方法能夠簡化MO的管理,提高空間效率和運(yùn)行效率。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案具體是這樣實(shí)現(xiàn)的一種對網(wǎng)絡(luò)管理系統(tǒng)對象進(jìn)行管理的方法,該方法包括以下步驟1)根據(jù)網(wǎng)絡(luò)管理系統(tǒng)中每個對象之間的包容關(guān)系,建立對象二叉樹;2)為步驟1)建立的對象二叉樹定義迭代算子,通過該迭代算子遍歷該對象二叉樹,對對象二叉樹上的各個對象進(jìn)行操作管理。
步驟1)所述的建立對象二叉樹的過程可以為11)將包容關(guān)系中的第一個對象作為根節(jié)點(diǎn)生成對象二叉樹;12)根據(jù)網(wǎng)絡(luò)管理系統(tǒng)對象包容關(guān)系,對包容關(guān)系中從上至下的每一個對象,將當(dāng)前對象的子對象從左到右逐個添加到對象二叉樹上,第一個子對象作為當(dāng)前對象的左節(jié)點(diǎn),其它子對象依次作為前一個子對象的右節(jié)點(diǎn)。
步驟1)可以進(jìn)一步包括為對象二叉樹上的每個對象設(shè)置一個與該對象一一對應(yīng)的對象標(biāo)識號,同時建立包含對象名稱和對象標(biāo)識號的對象標(biāo)識號索引表。
該方法可以進(jìn)一步包括,在系統(tǒng)中設(shè)置對象工廠實(shí)體,該方法添加新對象的過程可以為A、由用戶指定新對象的對象類型和父對象;B、對象工廠實(shí)體創(chuàng)建一個該對象類型的新對象;C、為該新對象分配一個對象標(biāo)識號并添加到對象標(biāo)識號索引表中;D、將該新對象根據(jù)包容關(guān)系插入到對象二叉樹上。
該方法中訪問對象的過程可以進(jìn)一步包括如果沒有得到要訪問對象的對象標(biāo)識號,則根據(jù)要訪問對象的類型和特征信息,到對象二叉樹上查找該要訪問的對象;如果已經(jīng)得到要訪問對象的對象標(biāo)識號,則根據(jù)該對象標(biāo)識號,通過索引表查找到對象二叉樹上該對象標(biāo)識號對應(yīng)的對象。
該方法可以進(jìn)一步包括刪除對象的過程為先在對象二叉樹上查找到該對象;判斷其是否有子對象,如果有則使用迭代算子遍歷其子對象,將其所有子對象刪除后,再刪除該對象;如果沒有子對象,則直接將該對象刪除。
該方法可以進(jìn)一步包括,刪除對象時,刪除其在對象標(biāo)識號索引表中的信息,并回收被刪除對象的對象標(biāo)識號。
該方法可以進(jìn)一步包括,通過迭代算子,得到被訪對象的下一個子對象的信息,和該子對象是否為最后一個對象的信息。
該方法步驟2)所述的迭代算子,可以按照標(biāo)準(zhǔn)模板庫(STL)中迭代算子的定義和使用方法來定義和使用。
由上述的技術(shù)方案可見,本發(fā)明的這種對網(wǎng)絡(luò)管理系統(tǒng)對象進(jìn)行管理的方法,建立了對象二叉數(shù),并為該二叉樹定義了迭代算子,將對網(wǎng)絡(luò)管理系統(tǒng)對象的管理,簡化為對該二叉樹的操作管理。因此,能夠提高管理的空間效率和運(yùn)行效率,便于開發(fā)人員的學(xué)習(xí)和使用。由于本發(fā)明的實(shí)現(xiàn)和操作系統(tǒng)無關(guān),尤其適合電信網(wǎng)管和具體平臺無關(guān)的開放性實(shí)現(xiàn)的要求。同時,本發(fā)明完全吻合電信網(wǎng)管的需求和特點(diǎn),實(shí)現(xiàn)簡單,性能穩(wěn)定。
圖1為一個簡單的包容關(guān)系對象樹結(jié)構(gòu)示意圖;圖2為本發(fā)明根據(jù)圖1所示包容關(guān)系建立的對象二叉樹結(jié)構(gòu)示意圖;圖3為本發(fā)明添加新對象流程圖;圖4為本發(fā)明訪問對象流程圖;圖5為本發(fā)明刪除對象流程圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,下面結(jié)合實(shí)施例和附圖,對本發(fā)明進(jìn)一步詳細(xì)說明。
本發(fā)明以具有如圖1所示對象包容關(guān)系的網(wǎng)絡(luò)管理系統(tǒng)為實(shí)施例,也可以將圖1所示簡單包容關(guān)系對象樹視為整個網(wǎng)絡(luò)管理系統(tǒng)包容關(guān)系對象樹的一棵子樹。
首先,根據(jù)圖1所示包容關(guān)系對象樹中每個對象之間的包容關(guān)系,將該樹上所有網(wǎng)絡(luò)管理系統(tǒng)對象逐個掛在一個規(guī)則的對象二叉樹上,可稱為管理對象實(shí)例樹(Managed Object Instances Tree,MIT)。由于上述的包容關(guān)系對象樹在邏輯上是一個多叉樹,這種結(jié)構(gòu)難于管理,所以根據(jù)一定的邏輯將具有包容關(guān)系的多叉樹轉(zhuǎn)換成一個規(guī)則的對象二叉樹,該對象二叉樹的結(jié)構(gòu)參見圖2,圖2為本發(fā)明根據(jù)圖1所示包容關(guān)系對象樹建立的對象二叉樹結(jié)構(gòu)示意圖;在對象二叉樹中,每個節(jié)點(diǎn)涉及三個指針,分別為上層節(jié)點(diǎn)指下來的指針、指向左節(jié)點(diǎn)的指針、指向右節(jié)點(diǎn)的指針。從包容樹向?qū)ο蠖鏄涞霓D(zhuǎn)換邏輯為在包容樹中,從上向下,對每一個節(jié)點(diǎn),將其子節(jié)點(diǎn)從左到右逐個掛在對象二叉樹上,第一個子節(jié)點(diǎn)作為父節(jié)點(diǎn)的左節(jié)點(diǎn),其它子節(jié)點(diǎn)依次作為前面一個子節(jié)點(diǎn)的右節(jié)點(diǎn)。
如圖2所示,父MO做為根節(jié)點(diǎn),根據(jù)圖1所示對象包容關(guān)系,將子MO1作為父MO的左節(jié)點(diǎn),子MO2作為子MO1的右節(jié)點(diǎn),子MO3作為子MO2的右節(jié)點(diǎn),孫MO1作為子MO2的左節(jié)點(diǎn),孫MO2作為孫MO1的右節(jié)點(diǎn),孫MO3作為孫MO2的右節(jié)點(diǎn)。
圖2順時針旋轉(zhuǎn)45度,就是一個二叉樹,每個節(jié)點(diǎn)的左節(jié)點(diǎn)是其子對象,右節(jié)點(diǎn)是其兄對象。這樣,每個對象的管理信息只包括三個指針,加上一些輔助信息,僅占用了24個字節(jié)內(nèi)存;所以,容器類管理信息開銷很小,就使得本發(fā)明的空間效率很高。
然后,為對象二叉樹上的每個對象設(shè)置一個與該對象一一對應(yīng)的對象標(biāo)識號(OID),并建立對象標(biāo)識號索引表,可以通過查詢該索引表根據(jù)對象標(biāo)識號獲得對象二叉樹上的各個對象。
同時,為上述的對象二叉樹定義迭代算子(Iterator),這個迭代算子可以按照C++程序語言中的標(biāo)準(zhǔn)模板庫(Standard Template Library,STL)定義迭代算子的方法來定義,通過該迭代算子遍歷該對象二叉樹,對對象二叉樹上的各個對象進(jìn)行訪問、添加、刪除、修改等操作管理。
另外在網(wǎng)絡(luò)管理系統(tǒng)中設(shè)置一個對象工廠實(shí)體(MOFactory),用于根據(jù)對象類型創(chuàng)建對象。
這樣,創(chuàng)建對象的過程參見圖3,圖3為本發(fā)明創(chuàng)建對象流程圖。如圖3所示,由用戶指定創(chuàng)建一個新對象,先執(zhí)行步驟301,對象二叉樹(MIT)向MOFactory要求創(chuàng)建對象實(shí)例,MOFactory創(chuàng)建一個包含新對象所有信息的對象實(shí)例;然后,執(zhí)行步驟302二叉樹向自身申請一個OID;再執(zhí)行步驟303,為該對象實(shí)例分配一個OID,并將該OID與該MO的一一對應(yīng)關(guān)系寫入OID索引表;最后,執(zhí)行步驟304將該對象實(shí)例根據(jù)包容關(guān)系插入到對象二叉樹上。
訪問對象的過程參見圖4,圖4為本發(fā)明訪問對象流程圖。如圖4所示,如果不知道對象的OID,先根據(jù)對象的類型和特征等信息,在對象二叉樹中查找得到該對象;如果已知對象的OID,則可以根據(jù)該OID,通過對象標(biāo)識號索引表查找到對象二叉樹上的對象。
通過訪問對象的過程查找到對象實(shí)例后,便可以對其進(jìn)行修改、刪除等操作。其中,刪除對象的過程參見圖5,圖5為本發(fā)明刪除對象流程圖。先執(zhí)行步驟501判斷要刪除對象是否有子節(jié)點(diǎn);如果沒有子節(jié)點(diǎn),則執(zhí)行步驟503,從對象樹中刪除該對象,再執(zhí)行步驟504,回收該對象的OID,完成要刪除對象的刪除;如果要刪除對象有子節(jié)點(diǎn),則執(zhí)行步驟502使用迭代算子遍歷其子節(jié)點(diǎn),查找到第一個子節(jié)點(diǎn)后,連續(xù)執(zhí)行上述步驟503和504將第一個子對象刪除;再執(zhí)行步驟505,判斷是否遍歷完成,如果遍歷完成則刪除要刪除對象,完成要刪除對象的刪除,否則執(zhí)行步驟506遍歷下一個子節(jié)點(diǎn),查找到第二個子節(jié)點(diǎn)后,連續(xù)執(zhí)行上述步驟503和504將第二個子對象刪除,直到刪除所有子節(jié)點(diǎn),最后刪除要刪除對象。對象刪除后,修改對象標(biāo)識號索引表,將所有被刪除對象的索引信息刪除。
例如,刪除圖2中節(jié)點(diǎn)子MO2,首先判斷其是否有子節(jié)點(diǎn),然后用迭代算子遍歷所有子節(jié)點(diǎn),找到最后一個節(jié)點(diǎn)為孫MO3,則將孫MO3節(jié)點(diǎn)刪除,收回孫MO3的OID,刪除孫MO3的對象實(shí)例,將對象標(biāo)識號索引表中孫MO3的索引信息刪除;繼續(xù)用迭代算子遍歷所有子節(jié)點(diǎn),找到孫MO2為當(dāng)前最后一個節(jié)點(diǎn),則按上述方法將其刪除;用同樣的方法刪除節(jié)點(diǎn)孫MO1;最后刪除節(jié)點(diǎn)子MO2;此時需要將節(jié)點(diǎn)子MO1指向右節(jié)點(diǎn)的指針指向節(jié)點(diǎn)子MO3。
由于通過迭代算子,可以得到一個對象、該對象的下一個節(jié)點(diǎn)和該節(jié)點(diǎn)是否為最后一個節(jié)點(diǎn)的信息。所以,通過迭代算子完成對一個對象所有子節(jié)點(diǎn)的遍歷,可以用一個以是否為最后一個節(jié)點(diǎn)為條件的簡單的循環(huán)來實(shí)現(xiàn)。如果先從對象標(biāo)識號索引表得到該對象的OID,可以按先父后子的順序來遍歷,如果先查找到該對象最低層子節(jié)點(diǎn)的OID,可以按先子后父的順序來遍歷。對于圖2中的二叉樹,如果按照先父后子的順序,應(yīng)該依次訪問父MO、子MO3、子MO2、孫MO3、孫MO2、孫MO1、子MO1;如果按照先子后父的順序,應(yīng)該依次訪問子MO1、孫MO1、孫MO2、孫MO3、子MO2、子MO3、父MO。
修改對象的過程很簡單,只需要在對象二叉樹上查找到要修改的對象,直接對該對象進(jìn)行修改即可。
以上的實(shí)施例,可以通過用標(biāo)準(zhǔn)C++語言或標(biāo)準(zhǔn)JAVA語言編程來實(shí)現(xiàn)。
由上述實(shí)施例可見,本發(fā)明方法提高了空間效率、運(yùn)行效率,便于開發(fā)人員的學(xué)習(xí)和使用。
由于本發(fā)明的實(shí)現(xiàn)和操作系統(tǒng)無關(guān),在WINDOWS,UNIX(Solaris、HP-UX),LINUX,pSOS,VxWorks操作系統(tǒng)上均已實(shí)現(xiàn),尤其適合電信網(wǎng)管和具體平臺無關(guān)的開放性實(shí)現(xiàn)的要求。同時,本發(fā)明完全吻合電信網(wǎng)管的需求和特點(diǎn),實(shí)現(xiàn)簡單,性能穩(wěn)定。
權(quán)利要求
1.一種對網(wǎng)絡(luò)管理系統(tǒng)對象進(jìn)行管理的方法,其特征在于,該方法包括以下步驟1)根據(jù)網(wǎng)絡(luò)管理系統(tǒng)中每個對象之間的包容關(guān)系,建立對象二叉樹;2)為步驟1)建立的對象二叉樹定義迭代算子,通過該迭代算子遍歷該對象二叉樹,對對象二叉樹上的各個對象進(jìn)行操作管理。
2.如權(quán)利要求1所述的管理方法,其特征在于,步驟1)所述的建立對象二叉樹的過程為11)將包容樹中第一個對象作為根節(jié)點(diǎn)生成對象二叉樹;12)根據(jù)網(wǎng)絡(luò)管理系統(tǒng)對象包容關(guān)系,對包容關(guān)系中從上至下的每一個對象,將當(dāng)前對象的子對象從左到右逐個添加到對象二叉樹上,第一個子對象作為當(dāng)前對象的左節(jié)點(diǎn),其它子對象依次作為前一個子對象的右節(jié)點(diǎn)。
3.如權(quán)利要求1或2所述的管理方法,其特征在于步驟1)進(jìn)一步包括為對象二叉樹上的每個對象設(shè)置一個與該對象一一對應(yīng)的對象標(biāo)識號,同時建立包含對象名稱和對象標(biāo)識號的對象標(biāo)識號索引表。
4.如權(quán)利要求3所述的管理方法,其特征在于,該方法進(jìn)一步包括,在系統(tǒng)中設(shè)置對象工廠實(shí)體,該方法添加新對象的過程為A、由用戶指定新對象的對象類型和父對象;B、對象工廠實(shí)體創(chuàng)建一個該對象類型的新對象;C、為該新對象分配一個對象標(biāo)識號并添加到對象標(biāo)識號索引表中;D、將該新對象根據(jù)包容關(guān)系插入到對象二叉樹上。
5.如權(quán)利要求3所述的管理方法,其特征在于,步驟2)所述操作管理為訪問對象時,該方法進(jìn)一步包括如果沒有得到要訪問對象的對象標(biāo)識號,則根據(jù)要訪問對象的類型和特征信息,到對象二叉樹上查找該要訪問的對象;如果已經(jīng)得到要訪問對象的對象標(biāo)識號,則根據(jù)該對象標(biāo)識號,通過索引表查找到對象二叉樹上該對象標(biāo)識號對應(yīng)的對象。
6.如權(quán)利要求5所述的管理方法,其特征在于,步驟2)所述操作管理為刪除對象時,該方法進(jìn)一步包括先在對象二叉樹上查找到該對象;判斷其是否有子對象,如果有則使用迭代算子遍歷其子對象,將其所有子對象刪除/修改后,再刪除該對象;如果沒有子對象,則直接將該對象刪除。
7.如權(quán)利要求6所述的管理方法,其特征在于該方法進(jìn)一步包括,刪除對象時,刪除其在對象標(biāo)識號索引表中的信息,并回收被刪除對象的對象標(biāo)識號。
8.如權(quán)利要求7所述的管理方法,其特征在于該方法進(jìn)一步包括,通過迭代算子,得到被訪對象的下一個子對象的信息,和該子對象是否為最后一個對象的信息。
9.如權(quán)利要求1所述的管理方法,其特征在于步驟2)所述的迭代算子按照標(biāo)準(zhǔn)模板庫(STL)定義和使用迭代算子的方法定義和使用。
全文摘要
本發(fā)明公開了一種對網(wǎng)絡(luò)管理系統(tǒng)對象進(jìn)行管理的方法,該方法包括以下步驟1)根據(jù)網(wǎng)絡(luò)管理系統(tǒng)中每個對象之間的包容關(guān)系,建立對象二叉樹;2)為步驟1)建立的對象二叉樹定義迭代算子,通過該迭代算子遍歷該對象二叉樹,對對象二叉樹上的各個對象進(jìn)行操作管理。本發(fā)明的這種對網(wǎng)絡(luò)管理系統(tǒng)對象進(jìn)行管理的方法,提高了管理的空間效率和運(yùn)行效率,便于開發(fā)人員的學(xué)習(xí)和使用。由于本發(fā)明的實(shí)現(xiàn)和操作系統(tǒng)無關(guān),尤其適合電信網(wǎng)管和具體平臺無關(guān)的開放性實(shí)現(xiàn)的要求。同時,本發(fā)明完全吻合電信網(wǎng)管的需求和特點(diǎn),實(shí)現(xiàn)簡單,性能穩(wěn)定。
文檔編號H04L12/24GK1527537SQ0310505
公開日2004年9月8日 申請日期2003年3月3日 優(yōu)先權(quán)日2003年3月3日
發(fā)明者郭洪志, 施廣宇 申請人:華為技術(shù)有限公司