專(zhuān)利名稱(chēng):一種資源業(yè)務(wù)對(duì)象的持久化和查詢(xún)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種適用于電信運(yùn)營(yíng)支撐系統(tǒng)(簡(jiǎn)稱(chēng)OSS)的本地網(wǎng)資源管理系統(tǒng)中的業(yè)務(wù)對(duì)象的持久化方法和基于該持久化方法的查詢(xún)方法。
背景技術(shù):
經(jīng)過(guò)十幾年的高速發(fā)展,通信網(wǎng)絡(luò)規(guī)模已經(jīng)非常龐大。電信運(yùn)營(yíng)商如何通過(guò)一種網(wǎng)絡(luò)資源動(dòng)態(tài)管理體系,調(diào)度企業(yè)各部門(mén)有效配置網(wǎng)絡(luò)資源,盤(pán)活網(wǎng)絡(luò)存量資產(chǎn),提高資源利用率,最大限度滿足客戶(hù)需要,支撐前端業(yè)務(wù),是提高網(wǎng)絡(luò)綜合效能和企業(yè)競(jìng)爭(zhēng)力的重要保證。
為此,電信運(yùn)營(yíng)商普遍采用了基于計(jì)算機(jī)信息管理技術(shù)的電信OSS本地網(wǎng)資源管理系統(tǒng),其參照了eTom的模型體系,以計(jì)算機(jī)系統(tǒng)為基礎(chǔ),實(shí)現(xiàn)傳輸網(wǎng)、數(shù)據(jù)網(wǎng)、交換網(wǎng)、動(dòng)力網(wǎng)等各專(zhuān)業(yè)網(wǎng)的物理設(shè)備資源、邏輯配置資源、業(yè)務(wù)調(diào)度和業(yè)務(wù)開(kāi)通流程的集中統(tǒng)一管理,為電信運(yùn)營(yíng)商提供了電信網(wǎng)絡(luò)管理的綜合解決方案,不僅使新的網(wǎng)絡(luò)資源的快速方便的擴(kuò)展成為可能,并幫助電信運(yùn)營(yíng)商極大地提高了新業(yè)務(wù)生成的速度。
通常以管理人員操作客戶(hù)端上運(yùn)行的管理系統(tǒng)的方式對(duì)資源(即對(duì)象)進(jìn)行管理和查詢(xún),而所管理的各種資源最終均存儲(chǔ)在服務(wù)器端的數(shù)據(jù)庫(kù)中,并最終通過(guò)服務(wù)器端的數(shù)據(jù)庫(kù)管理系統(tǒng)來(lái)查詢(xún)。
在電信OSS本地網(wǎng)資源管理系統(tǒng)中,通常采用面向?qū)ο蠹夹g(shù)對(duì)資源進(jìn)行建模,其中管理許多不同類(lèi)型的資源業(yè)務(wù)對(duì)象,如空間資源(站點(diǎn)、機(jī)房等)、物理資源(網(wǎng)元、端口、端子等)、邏輯資源(SDH、PDH、電路等),而且每個(gè)資源業(yè)務(wù)對(duì)象都會(huì)有許多屬性,如網(wǎng)元就有名稱(chēng)、編碼、廠商、設(shè)備種類(lèi)、客戶(hù)等數(shù)十個(gè)屬性。當(dāng)前,在把業(yè)務(wù)對(duì)象持久化到數(shù)據(jù)庫(kù)的過(guò)程中,即在數(shù)據(jù)庫(kù)對(duì)象持久化層上,或者采用直接使用JDBC寫(xiě)sql語(yǔ)句的方式,或者采用O/R Mapping中間件工具,把數(shù)據(jù)庫(kù)表和字段封裝成對(duì)象和屬性。現(xiàn)在已經(jīng)有不少成熟的中間件產(chǎn)品,如JDO、Toplink、Hibernate等。
但對(duì)于現(xiàn)有的電信OSS本地網(wǎng)資源管理系統(tǒng),在涉及到具體業(yè)務(wù)領(lǐng)域時(shí),直接使用這些產(chǎn)品仍有一些不足之處。例如,應(yīng)用代碼和具體O/R Mapping產(chǎn)品綁定,如果以后要遷移到其他產(chǎn)品的話,則需要重新編寫(xiě)代碼,代價(jià)很大;對(duì)于每一種資源業(yè)務(wù)對(duì)象的持久化和查詢(xún),都需要寫(xiě)許多定制的代碼;缺乏有效封裝,客戶(hù)端可以直接獲取數(shù)據(jù)庫(kù)的對(duì)象,可以直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,違反了分層的原則,并降低安全性;調(diào)用方法分散,缺乏統(tǒng)一的管理,無(wú)法在性能和功能上進(jìn)行統(tǒng)一處理和維護(hù);對(duì)于帶有多層關(guān)聯(lián)子業(yè)務(wù)對(duì)象的資源對(duì)象,無(wú)法做到靈活查詢(xún);無(wú)法滿足資源統(tǒng)一命名規(guī)范,同時(shí)又兼顧拼裝名稱(chēng)的靈活定制顯示。
發(fā)明內(nèi)容
為克服以上的不足,本發(fā)明的目的是提供一種電信OSS本地網(wǎng)資源管理系統(tǒng)中的業(yè)務(wù)對(duì)象持久化方法和以此為基礎(chǔ)的業(yè)務(wù)對(duì)象查詢(xún)方法,它們是統(tǒng)一的和對(duì)象類(lèi)型無(wú)關(guān)的。
本發(fā)明提供了一種電信運(yùn)營(yíng)支撐系統(tǒng)的本地網(wǎng)資源管理系統(tǒng)中的業(yè)務(wù)對(duì)象的持久化方法,其特征在于包括步驟在客戶(hù)端對(duì)業(yè)務(wù)對(duì)象和/或其關(guān)聯(lián)業(yè)務(wù)對(duì)象進(jìn)行修改,并針對(duì)所修改的業(yè)務(wù)對(duì)象設(shè)定與所述修改相應(yīng)的持久化類(lèi)型標(biāo)記;將包括所述被修改的業(yè)務(wù)對(duì)象的對(duì)象樹(shù)提交到服務(wù)器以請(qǐng)求持久化;在服務(wù)器端根據(jù)持久化標(biāo)記對(duì)所提交的對(duì)象樹(shù)實(shí)施修改,以得到最終的對(duì)象樹(shù);以及將最終的對(duì)象樹(shù)持久化到數(shù)據(jù)庫(kù)中。
根據(jù)一個(gè)實(shí)施例,所述實(shí)施修改的步驟包括遍歷該對(duì)象樹(shù),當(dāng)遍歷經(jīng)過(guò)一個(gè)業(yè)務(wù)對(duì)象時(shí),實(shí)施該業(yè)務(wù)對(duì)象的簡(jiǎn)單屬性的修改;以及當(dāng)遍歷經(jīng)過(guò)一個(gè)關(guān)聯(lián)時(shí),判斷與該關(guān)聯(lián)相關(guān)的父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象之間的關(guān)系,如果父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象之間是1∶1或n∶1的關(guān)系,則根據(jù)子對(duì)象的持久化類(lèi)型不同,重新設(shè)置該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象的關(guān)系;以及如果該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象是1∶n或n∶n的關(guān)系,則先遞歸持久化子業(yè)務(wù)對(duì)象,然后在遞歸返回父業(yè)務(wù)對(duì)象時(shí)重新設(shè)置該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象之間的關(guān)系。
根據(jù)一個(gè)實(shí)施例,所述持久化類(lèi)型包括新增,修改和刪除。
根據(jù)一個(gè)實(shí)施例,所述客戶(hù)端通過(guò)統(tǒng)一的入口來(lái)進(jìn)行所述請(qǐng)求。
根據(jù)一個(gè)實(shí)施例,所述客戶(hù)端能夠通過(guò)該入口提交多個(gè)對(duì)象樹(shù)。
根據(jù)一個(gè)實(shí)施例,所述持久化步驟是通過(guò)中間件工具進(jìn)行的。
本發(fā)明還提供一種電信運(yùn)營(yíng)支撐系統(tǒng)的本地網(wǎng)資源管理系統(tǒng)中的業(yè)務(wù)對(duì)象查詢(xún)方法,其特征在于包括步驟在客戶(hù)端定義查詢(xún)請(qǐng)求,該查詢(xún)請(qǐng)求包括查詢(xún)表達(dá)式和關(guān)聯(lián)對(duì)象組裝字符串;發(fā)送查詢(xún)請(qǐng)求到服務(wù)器;服務(wù)器根據(jù)預(yù)定的查詢(xún)表達(dá)式映射將所接收的查詢(xún)請(qǐng)求中的查詢(xún)表達(dá)式轉(zhuǎn)換成針對(duì)相應(yīng)中間件的表達(dá)式;根據(jù)轉(zhuǎn)換的查詢(xún)表達(dá)式執(zhí)行查詢(xún)并根據(jù)關(guān)聯(lián)對(duì)象組裝字符串來(lái)生成查詢(xún)結(jié)果;以及將生成的查詢(xún)結(jié)果返回給客戶(hù)端。
根據(jù)一個(gè)實(shí)施例,所述執(zhí)行查詢(xún)并生成查詢(xún)結(jié)果的步驟包括查詢(xún)出滿足查詢(xún)表達(dá)式的業(yè)務(wù)對(duì)象的集合;針對(duì)該集合中的每個(gè)對(duì)象,查詢(xún)出滿足要求的對(duì)象;以及解析關(guān)聯(lián)對(duì)象組裝字符串,遞歸組裝業(yè)務(wù)對(duì)象樹(shù),以生成查詢(xún)結(jié)果。
根據(jù)一個(gè)實(shí)施例,所述查詢(xún)請(qǐng)求還包括資源命名拼裝字符串,并且所述執(zhí)行查詢(xún)并生成查詢(xún)結(jié)果的步驟包括解析資源命名拼裝字符串,以及得到業(yè)務(wù)對(duì)象類(lèi)型和命名上下文名稱(chēng);根據(jù)該業(yè)務(wù)對(duì)象類(lèi)型和命名上下文名稱(chēng)從預(yù)定義的命名規(guī)則中找到對(duì)應(yīng)的命名規(guī)則;根據(jù)命名規(guī)則的前提條件,生成相應(yīng)拼裝的SQL語(yǔ)句,查詢(xún)出命名顯示子項(xiàng);對(duì)所述命名顯示子項(xiàng)進(jìn)行命名顯示名稱(chēng)取值轉(zhuǎn)換;以及用經(jīng)過(guò)轉(zhuǎn)換后的名稱(chēng)替換查詢(xún)結(jié)果中與所述業(yè)務(wù)對(duì)象類(lèi)型相應(yīng)的對(duì)象的名稱(chēng)。
根據(jù)一個(gè)實(shí)施例,所述解析并遞歸組裝的步驟包括針對(duì)每個(gè)解析出的關(guān)聯(lián)子對(duì)象,根據(jù)預(yù)定映射關(guān)系得到相應(yīng)的設(shè)置方法;以及調(diào)用該設(shè)置方法,以設(shè)置該關(guān)聯(lián)子對(duì)象。
根據(jù)一個(gè)實(shí)施例,所述中間件為T(mén)oplink或Hibernate。
根據(jù)一個(gè)實(shí)施例,所述查詢(xún)請(qǐng)求包括指定當(dāng)前查詢(xún)的頁(yè)數(shù)和每頁(yè)查詢(xún)的記錄數(shù)目的信息,并且所述查詢(xún)業(yè)務(wù)對(duì)象集合的步驟包括根據(jù)分頁(yè)號(hào)和每頁(yè)的數(shù)目進(jìn)行查詢(xún)。
根據(jù)本發(fā)明,資源業(yè)務(wù)查詢(xún)服務(wù)器有預(yù)定義的查詢(xún)表達(dá)式,能轉(zhuǎn)換成不同O/R Mapping產(chǎn)品的查詢(xún)表達(dá)式,以支持不同的O/RMapping產(chǎn)品。
根據(jù)本發(fā)明,查詢(xún)時(shí)能夠方便地設(shè)置查詢(xún)業(yè)務(wù)對(duì)象的任意關(guān)聯(lián)子對(duì)象。
根據(jù)本發(fā)明,提供了滿足本地網(wǎng)資源統(tǒng)一命名規(guī)范,同時(shí)又能實(shí)現(xiàn)命名靈活定制顯示。
通過(guò)下面結(jié)合附圖所進(jìn)行的對(duì)本發(fā)明的描述,能夠明白本發(fā)明的上述及其它目的,特征和優(yōu)點(diǎn),其中圖1示出了根據(jù)本發(fā)明的業(yè)務(wù)對(duì)象持久化方法的一個(gè)實(shí)施例;圖2示出了根據(jù)本發(fā)明的業(yè)務(wù)對(duì)象查詢(xún)方法的一個(gè)實(shí)施例;圖3示出了修改之前的對(duì)象樹(shù)的例子;圖4示出了客戶(hù)端所提交的對(duì)象樹(shù);圖5示出了在服務(wù)器端的數(shù)據(jù)庫(kù)中持久化后的對(duì)象樹(shù);圖6示出了一個(gè)資源對(duì)象樹(shù)的例子;圖7示出了一棵端口的對(duì)象樹(shù)的例子。
具體實(shí)施例方式
下面結(jié)合附圖來(lái)說(shuō)明本發(fā)明的具體實(shí)施例。
圖1示出了根據(jù)本發(fā)明的業(yè)務(wù)對(duì)象持久化方法的一個(gè)實(shí)施例。
如圖1所示,在步驟S1,由用戶(hù)在系統(tǒng)客戶(hù)端對(duì)業(yè)務(wù)對(duì)象的持久化進(jìn)行設(shè)定。根據(jù)業(yè)務(wù)對(duì)象之間的關(guān)聯(lián),可以在邏輯上將存在關(guān)聯(lián)的若干對(duì)象視為對(duì)象樹(shù)。對(duì)象樹(shù)的一個(gè)特例是單節(jié)點(diǎn)樹(shù),即單個(gè)對(duì)象。對(duì)象樹(shù)在面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言中得到廣泛的支持。例如系統(tǒng)可采用開(kāi)發(fā)語(yǔ)言Java,Java本身是一個(gè)面向?qū)ο蟮恼Z(yǔ)言,每一個(gè)資源業(yè)務(wù)對(duì)象都會(huì)對(duì)應(yīng)到一個(gè)Java的Object對(duì)象。
一個(gè)業(yè)務(wù)對(duì)象持久化,可分為新增、修改、刪除三種情況。持久化既包括持久化業(yè)務(wù)對(duì)象本身的基本屬性,也包括持久化該業(yè)務(wù)對(duì)象關(guān)聯(lián)的子業(yè)務(wù)對(duì)象。對(duì)于修改的情況,既包括對(duì)象基本屬性的修改,如修改了名稱(chēng),也包括關(guān)聯(lián)子對(duì)象的改動(dòng),子對(duì)象的增、刪、改都意味著父對(duì)象做了修改。這些子對(duì)象的類(lèi)和父對(duì)象的類(lèi)之間有多對(duì)一、一對(duì)多、一對(duì)一、多對(duì)多等多種關(guān)聯(lián)關(guān)系,比如類(lèi)A和類(lèi)B有關(guān)聯(lián)關(guān)系,反映在具體實(shí)現(xiàn)上就是類(lèi)A有例如getB()的方法,類(lèi)B有例如getA()的方法,通過(guò)兩者get方法返回值是單個(gè)還是集合可以確定兩者之間的關(guān)聯(lián)關(guān)系類(lèi)型,子對(duì)象的持久化也分新增、修改、刪除三種情況,子對(duì)象又有子對(duì)象,所以每個(gè)對(duì)象的持久化操作都是一棵對(duì)象樹(shù)的持久化操作。
業(yè)務(wù)對(duì)象持久化包括新增、修改、刪除三種情況。在步驟S1的設(shè)定操作中,把有關(guān)業(yè)務(wù)對(duì)象打上不同的持久化標(biāo)記來(lái)表示新增、修改和刪除。
接著,在步驟S3,當(dāng)用戶(hù)選擇保存對(duì)象樹(shù)時(shí),系統(tǒng)客戶(hù)端將包含加有持久化標(biāo)記的對(duì)象的對(duì)象樹(shù)提交到系統(tǒng)服務(wù)器端以請(qǐng)求在數(shù)據(jù)庫(kù)中持久化。業(yè)務(wù)對(duì)象持久化方法提供了一個(gè)遠(yuǎn)程接口方法persistBObjects(long_sessionKey,List_objects),作為統(tǒng)一的操作入口,可以完成對(duì)不同類(lèi)型資源對(duì)象樹(shù)的持久化操作。其中參數(shù)sessionKey為長(zhǎng)整型,記錄了當(dāng)前用戶(hù)的信息,參數(shù)objects為要持久化的對(duì)象樹(shù)集合,該接口方法支持批量的對(duì)象樹(shù)持久化操作。對(duì)象樹(shù)的傳送方法是本領(lǐng)域已知的。以Java為例,這里所有對(duì)象可以都實(shí)現(xiàn)Java的Serializable接口,這樣在遠(yuǎn)程RMI調(diào)用時(shí),對(duì)象會(huì)被自動(dòng)的序列化和反序列化。
接著,在步驟S5,系統(tǒng)服務(wù)器端在接收到所提交的對(duì)象樹(shù)之后,在對(duì)象樹(shù)中遵循對(duì)象之間的關(guān)聯(lián)進(jìn)行遍歷。在遍歷過(guò)程中,通過(guò)確定對(duì)象關(guān)聯(lián)的方法(例如Java的反射功能,遍歷該對(duì)象所有的get/set方法)來(lái)進(jìn)行遍歷。當(dāng)遍歷經(jīng)過(guò)一個(gè)業(yè)務(wù)對(duì)象時(shí),根據(jù)業(yè)務(wù)對(duì)象的持久化類(lèi)型,實(shí)施簡(jiǎn)單屬性的修改;當(dāng)遍歷經(jīng)過(guò)一個(gè)關(guān)聯(lián)時(shí),判斷父業(yè)務(wù)對(duì)象和關(guān)聯(lián)子對(duì)象之間的關(guān)系,如果父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象(例如對(duì)應(yīng)的get方法返回值是集合)之間是1∶1或n∶1的關(guān)系,則根據(jù)子對(duì)象的持久化類(lèi)型不同,重新設(shè)置該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象的關(guān)系;如果該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象是1∶n或n∶n的關(guān)系(例如對(duì)應(yīng)的get方法返回值是單個(gè)實(shí)體),則先遞歸持久化子業(yè)務(wù)對(duì)象,然后在遞歸返回父業(yè)務(wù)對(duì)象時(shí)重新設(shè)置該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象之間的關(guān)系。由于查找對(duì)象關(guān)聯(lián)關(guān)系是通過(guò)例如Java的反射功能來(lái)實(shí)現(xiàn)的,所以不需要任何的硬編碼,也不依賴(lài)業(yè)務(wù)對(duì)象的具體類(lèi)型。在遍歷完成后,系統(tǒng)服務(wù)器端形成最終的對(duì)象樹(shù)。
接著,在步驟S7,系統(tǒng)服務(wù)器端將所形成的對(duì)象樹(shù)通過(guò)持久化工具保存在數(shù)據(jù)庫(kù)中。
該方法在步驟S9結(jié)束。
在一個(gè)可選實(shí)施例中,本發(fā)明的持久化方法可以和常規(guī)方法結(jié)合使用。例如,對(duì)于大部分的資源業(yè)務(wù)對(duì)象,在持久化的時(shí)候都遵循著本發(fā)明的方法,只有少部分的業(yè)務(wù)對(duì)象持久化時(shí)需要額外的定制操作。
下面結(jié)合圖3-5示出的對(duì)象樹(shù)更詳細(xì)地說(shuō)明圖1的方法。圖3示出了修改之前的對(duì)象樹(shù)的例子。圖4示出了通過(guò)客戶(hù)端的修改而要持久化的對(duì)象樹(shù)。圖5示出了在服務(wù)器端的數(shù)據(jù)庫(kù)中持久化后的對(duì)象樹(shù)。
對(duì)于步驟S1,在客戶(hù)端保存之前,對(duì)業(yè)務(wù)對(duì)象進(jìn)行修改,并把業(yè)務(wù)對(duì)象打上相應(yīng)的持久化的標(biāo)記,標(biāo)記有A、U、D三種,分別表示新增、修改和刪除。
對(duì)比圖3示出的對(duì)象樹(shù),如圖4所示,對(duì)象A修改時(shí),會(huì)新增子對(duì)象B,同時(shí)修改子對(duì)象C,子對(duì)象C修改時(shí),會(huì)刪除子對(duì)象D,同時(shí)會(huì)對(duì)關(guān)聯(lián)的E對(duì)象(C和E之間是1對(duì)多關(guān)系)進(jìn)行修改。
對(duì)于步驟S3,提交到服務(wù)器端的輸入是一棵打上持久化標(biāo)記的對(duì)象樹(shù),以下面網(wǎng)元的修改為例,對(duì)象樹(shù)如圖6所示。
網(wǎng)元修改時(shí),同時(shí)會(huì)修改機(jī)框1,新增機(jī)框2(新增機(jī)框2時(shí)同時(shí)新增機(jī)框2包含的插盤(pán)),修改所屬客戶(hù)。
對(duì)于步驟S5,服務(wù)器端處理時(shí)實(shí)現(xiàn)如下先根據(jù)該業(yè)務(wù)對(duì)象的持久化類(lèi)型,調(diào)用簡(jiǎn)單屬性的修改操作。簡(jiǎn)單的持久化操作只持久化對(duì)象的簡(jiǎn)單屬性,比如網(wǎng)元的名稱(chēng)、編碼等一些簡(jiǎn)單屬性,不包括網(wǎng)元和機(jī)框之間這種對(duì)象間的屬性關(guān)系。
通過(guò)Java的反射功能獲得對(duì)應(yīng)get方法,根據(jù)返回類(lèi)型判斷該業(yè)務(wù)對(duì)象和關(guān)聯(lián)子對(duì)象之間的關(guān)系。這又分成兩種情況該業(yè)務(wù)對(duì)象和子對(duì)象之間是1∶1或n∶1的關(guān)系在這種情況下,根據(jù)子對(duì)象的持久化類(lèi)型不同,重新設(shè)置該業(yè)務(wù)對(duì)象和子對(duì)象的關(guān)系。如網(wǎng)元類(lèi)有g(shù)etCustomer()方法,返回類(lèi)型是Customer對(duì)象,這樣我們就知道網(wǎng)元和客戶(hù)的關(guān)系是n∶1(或1∶1,這里關(guān)系是n∶1,兩種關(guān)系處理方法相同),這里就會(huì)調(diào)用網(wǎng)元的類(lèi)對(duì)應(yīng)的setCustomer(Customer customer)方法,重新設(shè)置網(wǎng)元的所屬客戶(hù)對(duì)象。
該業(yè)務(wù)對(duì)象和子對(duì)象是1∶n或n∶n的關(guān)系在這種情況下,先遞歸持久化子業(yè)務(wù)對(duì)象,然后重新設(shè)置父對(duì)象和子對(duì)象之間的關(guān)系。比如網(wǎng)元和機(jī)框的關(guān)系是1∶n,這里就會(huì)遞歸持久機(jī)框?qū)ο?,修改機(jī)框1,新增機(jī)框2,同時(shí)新增機(jī)框2所包含的插盤(pán)。1∶n和n∶n兩種情況對(duì)于對(duì)象的處理方式相同,只是數(shù)據(jù)庫(kù)中的持久化方式不同,O/R Mapping工具會(huì)屏蔽掉持久化方式上的不同。
最后調(diào)用O/R Mapping工具的接口持久化修改后的對(duì)象樹(shù),并把保存后的網(wǎng)元對(duì)象作為方法輸出返回下面參照?qǐng)D2和7描述本發(fā)明的業(yè)務(wù)對(duì)象查詢(xún)方法。
本發(fā)明的業(yè)務(wù)對(duì)象查詢(xún)方法提供了一個(gè)統(tǒng)一的操作入口,可以完成不同類(lèi)型資源對(duì)象的查詢(xún)和資源命名定制顯示的操作。客戶(hù)端在查詢(xún)資源之前,設(shè)置查詢(xún)關(guān)聯(lián)對(duì)象組裝字符串和資源命名拼裝格式,然后系統(tǒng)服務(wù)器會(huì)解析組裝字符串和資源命名拼裝格式,實(shí)現(xiàn)不同對(duì)象的關(guān)聯(lián)查詢(xún)和資源命名靈活顯示功能。
已有的技術(shù)方案一般都偏向技術(shù)實(shí)現(xiàn)的底層,用于簡(jiǎn)化數(shù)據(jù)庫(kù)操作和軟件模塊的整合等,比如O/R Mapping工具或是其他一些中間件產(chǎn)品,而缺乏適用于上層OSS業(yè)務(wù)領(lǐng)域的實(shí)現(xiàn)方案。本發(fā)明設(shè)計(jì)面向電信OSS領(lǐng)域,能有效的解決OSS領(lǐng)域資源業(yè)務(wù)對(duì)象管理的實(shí)際問(wèn)題。
在電信本地網(wǎng)資源管理系統(tǒng)中,用戶(hù)最基本的操作就是對(duì)業(yè)務(wù)對(duì)象的增、刪、改、查,所有基本操作都離不開(kāi)對(duì)業(yè)務(wù)對(duì)象的查詢(xún)和顯示。每個(gè)操作對(duì)查詢(xún)的要求都會(huì)不同,所以需要有一種通用的查詢(xún)方法來(lái)支持所有情況。該查詢(xún)方法實(shí)現(xiàn)了業(yè)務(wù)對(duì)象的查詢(xún)功能,支持任意多層關(guān)聯(lián)對(duì)象組合查詢(xún),并可擴(kuò)展支持不同類(lèi)型的O/R Mapping產(chǎn)品。
當(dāng)查詢(xún)某個(gè)業(yè)務(wù)對(duì)象時(shí),有時(shí)希望返回的結(jié)果不只是對(duì)象本身,還有該對(duì)象關(guān)聯(lián)的其他對(duì)象。比如查詢(xún)“端口”對(duì)象,在某些情況下,希望返回的結(jié)果中還要有端口所屬屬網(wǎng)元的信息,希望返回的是一棵端口的對(duì)象樹(shù),如圖7所示。
在不同的情況下客戶(hù)端對(duì)業(yè)務(wù)對(duì)象展現(xiàn)的層次要求不同,所以在查詢(xún)結(jié)果中對(duì)組裝對(duì)象的要求也不一樣。如果為每一種組裝情況都提供不同的查詢(xún)方法,這樣查詢(xún)方法數(shù)目就會(huì)很多,如果通過(guò)實(shí)現(xiàn)一個(gè)最復(fù)雜組裝的方法來(lái)滿足所有情況,性能的代價(jià)又太大。而且這都是針對(duì)單個(gè)業(yè)務(wù)對(duì)象而言,而系統(tǒng)中有成百上千的不同類(lèi)型的業(yè)務(wù)對(duì)象,一個(gè)統(tǒng)一的查詢(xún)方法非常必要。
圖2示出了本發(fā)明的業(yè)務(wù)對(duì)象查詢(xún)方法的一個(gè)實(shí)施例的示意流程圖。
如圖2所示,方法從步驟S11開(kāi)始,其中由用戶(hù)在客戶(hù)端輸入查詢(xún)請(qǐng)求。該查詢(xún)請(qǐng)求包含有對(duì)象組裝字符串,來(lái)滿足不同的查詢(xún)情況。例如,一個(gè)對(duì)象組裝字符串格式可以如下。以端口為例,格式為“[Port[NE]]”,這表示返回的結(jié)果中,端口(Port)需要設(shè)置網(wǎng)元(NE)對(duì)象,設(shè)置是通過(guò)調(diào)用相應(yīng)方法,例如setNE()來(lái)實(shí)現(xiàn),其中可以采用方法名和組裝字符串相匹配的方式,但也可以采用其它關(guān)聯(lián)方式。對(duì)于復(fù)雜的情況,比如需要端口(Port)關(guān)聯(lián)上插盤(pán)(CircuitPack),插盤(pán)還要關(guān)聯(lián)上插盤(pán)類(lèi)型(CircuitPackType),網(wǎng)元(NE)要關(guān)聯(lián)上機(jī)房(Host)等,只需修改一下組裝字符串為“[Port[CircuitPack[CircuitPackType]][NE[Host]]]”就可以了,不需要修改其他代碼。本領(lǐng)域技術(shù)人員明白,上面只是對(duì)象組裝字符串的具體例子,本發(fā)明并不局限于這樣的例子。
可選地,查詢(xún)請(qǐng)求也可包含命名拼裝字符串,來(lái)滿足不同的資源命名需要。雖然在所有的本地網(wǎng)中資源都有統(tǒng)一的命名規(guī)范,但是不同用戶(hù)在不同資源使用場(chǎng)合下需要不同的資源名稱(chēng)。在不同的上下文環(huán)境中,用戶(hù)可能希望看到不同的顯示名稱(chēng)。比如以“端子”這個(gè)資源為例,端子是在某個(gè)連接面板上,連接面板有可能在機(jī)架上,也可能在連接設(shè)備上,機(jī)架和連接設(shè)備可以是單面,也可以是雙面。對(duì)于上述不同情況的組合,用戶(hù)希望能夠得到不同的顯示名稱(chēng),也就是需要為不同上下文情況提供不同的拼裝顯示規(guī)則。而且由于各個(gè)用戶(hù)情況不同,即使對(duì)于同一種上下文情況,拼裝顯示的規(guī)則可能也不相同。如果命名拼裝邏輯和代碼綁定,只能通過(guò)為不同的用戶(hù)開(kāi)發(fā)不同的命名代碼,為不同的資源使用場(chǎng)合開(kāi)發(fā)不同的資源命名代碼。實(shí)現(xiàn)和維護(hù)代價(jià)大,而且對(duì)現(xiàn)場(chǎng)修改要求的響應(yīng)時(shí)間長(zhǎng)。
本發(fā)明的資源命名靈活定制方法將命名邏輯從代碼中分離,并保存到外部配置中,而代碼中僅僅保留通用的處理邏輯。當(dāng)用戶(hù)有對(duì)命名邏輯的修改要求時(shí),直接修改外部配置即可。同時(shí)為不同的命名上下文,定義不同的命名規(guī)則,以實(shí)現(xiàn)命名拼裝的靈活性。
命名規(guī)則包括●名稱(chēng),命名規(guī)則的唯一標(biāo)識(shí)。每個(gè)資源實(shí)體在系統(tǒng)中都有一套缺省命名規(guī)則。
●前提條件。一個(gè)命名規(guī)則中會(huì)有多個(gè)前提條件,可以針對(duì)不同的前提條件生成不同的拼裝命名,前提條件可以是一個(gè)sql表達(dá)式,用于限定哪些對(duì)象滿足這個(gè)前提。
●拼裝方法命名拼裝過(guò)程如下,以關(guān)于端口的命名拼裝字符串“Port{顯示名稱(chēng)-系統(tǒng)缺省setNameObj}”為例根據(jù)該業(yè)務(wù)對(duì)象(Port)的類(lèi)型和命名上下文名稱(chēng)(“顯示名稱(chēng)-系統(tǒng)缺省”),找到對(duì)應(yīng)的命名規(guī)則。
根據(jù)命名規(guī)則的前提條件,篩選出滿足要求的業(yè)務(wù)對(duì)象。其中可根據(jù)不同的前提條件,生成不同拼裝的SQL語(yǔ)句,查詢(xún)出命名顯示子項(xiàng)。比如前提條件是“端口有插盤(pán),插盤(pán)有機(jī)框,機(jī)框無(wú)子架”,系統(tǒng)就會(huì)根據(jù)對(duì)應(yīng)的拼裝方法“網(wǎng)元Name+機(jī)框No+插盤(pán)PackNo+端口Position+端口種類(lèi)信息”生成相應(yīng)的sql語(yǔ)句。
對(duì)所述命名顯示子項(xiàng)進(jìn)行命名顯示名稱(chēng)取值轉(zhuǎn)換。因?yàn)椴樵?xún)出的值可能是某個(gè)數(shù)據(jù)字典值或者定義的常量等,要把這些值轉(zhuǎn)換成相應(yīng)的可閱讀的顯示名稱(chēng)。比如端口光電特性在數(shù)據(jù)庫(kù)中是用數(shù)值0、1來(lái)表示,在顯示時(shí)會(huì)根據(jù)數(shù)據(jù)字典轉(zhuǎn)換成“光口”或“電口”。
因此,能夠形成定制的業(yè)務(wù)對(duì)象顯示名稱(chēng)。
雖然前面參照一個(gè)具體實(shí)施例描述了本發(fā)明的資源命名特征,然而本領(lǐng)域技術(shù)人員明白,能夠得到其它達(dá)到同樣目的的資源命名方法。
接著在步驟S13,從客戶(hù)端將查詢(xún)請(qǐng)求發(fā)送到服務(wù)器端以請(qǐng)求查詢(xún)。
接著在步驟S15,服務(wù)器將接收的查詢(xún)請(qǐng)求中的自定義的查詢(xún)表達(dá)式轉(zhuǎn)換成某個(gè)具體O/R Mapping產(chǎn)品的查詢(xún)表達(dá)式,例如支持Toplink。不同的O/R Mapping產(chǎn)品都提供了各自的數(shù)據(jù)庫(kù)查詢(xún)表達(dá)式,這些查詢(xún)表達(dá)式之間互不兼容。為了做到對(duì)具體產(chǎn)品透明,根據(jù)本發(fā)明,在服務(wù)器端定義了自己的查詢(xún)表達(dá)式映射,客戶(hù)端在查詢(xún)時(shí)設(shè)置好表達(dá)式的內(nèi)容,服務(wù)器端會(huì)根據(jù)該映射把表達(dá)式解釋成O/RMapping產(chǎn)品的表達(dá)式。這樣首先使客戶(hù)端獨(dú)立于具體的第三方產(chǎn)品,而且也使服務(wù)器端能夠很方便的通過(guò)擴(kuò)展支持不同的產(chǎn)品,例如Toplink和Hibernate等。
接著在步驟S17,根據(jù)轉(zhuǎn)換的查詢(xún)表達(dá)式執(zhí)行查詢(xún)并根據(jù)業(yè)務(wù)對(duì)象組裝字符串來(lái)生成查詢(xún)結(jié)果。
例如,在步驟S17中,查詢(xún)出滿足查詢(xún)表達(dá)式的業(yè)務(wù)對(duì)象的集合,例如在通過(guò)id標(biāo)識(shí)對(duì)象的情況下,先查出滿足要求的業(yè)務(wù)對(duì)象的id集合,接著根據(jù)對(duì)象id,查詢(xún)出對(duì)象集合。
接著解析業(yè)務(wù)對(duì)象組裝字符串,遞歸組裝業(yè)務(wù)對(duì)象樹(shù)。
接著在步驟S19,將最終結(jié)果,即遞歸組裝的對(duì)象樹(shù)返回給客戶(hù)端。
該方法在步驟S21結(jié)束。
下面通過(guò)具體的例子詳細(xì)解釋該實(shí)施例。在這個(gè)例子中,假設(shè)查詢(xún)的對(duì)象為端口Port,組裝字符串為“[Port[NE[Host]]]”,表示端口查詢(xún)返回時(shí)要關(guān)聯(lián)上網(wǎng)元對(duì)象,網(wǎng)元要關(guān)聯(lián)上機(jī)房對(duì)象,命名拼裝字符串為“Port{顯示名稱(chēng)-系統(tǒng)缺省setNameObj}”,表示命名拼裝上下文為“顯示名稱(chēng)-系統(tǒng)缺省”。
對(duì)于步驟S17,在組裝端口對(duì)象樹(shù)的時(shí)候,會(huì)遞歸組裝下層網(wǎng)元對(duì)象,關(guān)聯(lián)上機(jī)房對(duì)象。
在一個(gè)可選實(shí)施例中,如果查詢(xún)請(qǐng)求包括命名拼裝字符串,則在步驟17中,還解析命名拼裝字符串,定制業(yè)務(wù)對(duì)象的拼裝命名。在這個(gè)例子中,根據(jù)命名上下文“顯示名稱(chēng)-系統(tǒng)缺省”找到對(duì)應(yīng)的命名規(guī)則,然后根據(jù)這個(gè)命名規(guī)則拼裝端口命名。
在一個(gè)可選實(shí)施例中,如果業(yè)務(wù)對(duì)象查詢(xún)結(jié)果的數(shù)據(jù)量很大,可以支持分頁(yè)查詢(xún)。即每次只查詢(xún)和展現(xiàn)一頁(yè)的數(shù)據(jù),可以任意指定當(dāng)前查詢(xún)的頁(yè)數(shù)和每頁(yè)查詢(xún)的記錄數(shù)目。對(duì)于步驟S17,根據(jù)分頁(yè)號(hào)和每頁(yè)的數(shù)目查詢(xún)出滿足要求的業(yè)務(wù)對(duì)象的集合。
采用本方法后,可以實(shí)現(xiàn)各種不同類(lèi)型資源業(yè)務(wù)對(duì)象的持久化和查詢(xún)功能,可以靈活定制各種資源的命名顯示,減輕了系統(tǒng)的復(fù)雜度,大大提高了整個(gè)系統(tǒng)的靈活性和顯示的友好性。
權(quán)利要求
1.一種電信運(yùn)營(yíng)支撐系統(tǒng)的本地網(wǎng)資源管理系統(tǒng)中的業(yè)務(wù)對(duì)象的持久化方法,其特征在于包括步驟在客戶(hù)端對(duì)業(yè)務(wù)對(duì)象和/或其關(guān)聯(lián)業(yè)務(wù)對(duì)象進(jìn)行修改,并針對(duì)所修改的業(yè)務(wù)對(duì)象設(shè)定與所述修改相應(yīng)的持久化類(lèi)型標(biāo)記;將包括所述被修改的業(yè)務(wù)對(duì)象的對(duì)象樹(shù)提交到服務(wù)器以請(qǐng)求持久化;在服務(wù)器端根據(jù)持久化標(biāo)記對(duì)所提交的對(duì)象樹(shù)實(shí)施修改,以得到最終的對(duì)象樹(shù);以及將最終的對(duì)象樹(shù)持久化到數(shù)據(jù)庫(kù)中。
2.根據(jù)權(quán)利要求1的持久化方法,其特征在于所述實(shí)施修改的步驟包括遍歷該對(duì)象樹(shù),當(dāng)遍歷經(jīng)過(guò)一個(gè)業(yè)務(wù)對(duì)象時(shí),實(shí)施該業(yè)務(wù)對(duì)象的簡(jiǎn)單屬性的修改;以及當(dāng)遍歷經(jīng)過(guò)一個(gè)關(guān)聯(lián)時(shí),判斷與該關(guān)聯(lián)相關(guān)的父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象之間的關(guān)系,如果父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象之間是1∶1或n∶1的關(guān)系,則根據(jù)子對(duì)象的持久化類(lèi)型不同,重新設(shè)置該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象的關(guān)系;以及如果該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象是1∶n或n∶n的關(guān)系,則先遞歸持久化子業(yè)務(wù)對(duì)象,然后在遞歸返回父業(yè)務(wù)對(duì)象時(shí)重新設(shè)置該父業(yè)務(wù)對(duì)象和子業(yè)務(wù)對(duì)象之間的關(guān)系。
3.根據(jù)權(quán)利要求1或2的持久化方法,其特征在于所述持久化類(lèi)型包括新增,修改和刪除。
4.根據(jù)權(quán)利要求1的持久化方法,其特征在于所述客戶(hù)端通過(guò)統(tǒng)一的入口來(lái)進(jìn)行所述請(qǐng)求。
5.根據(jù)權(quán)利要求4的持久化方法,其特征在于所述客戶(hù)端能夠通過(guò)該入口提交多個(gè)對(duì)象樹(shù)。
6.根據(jù)權(quán)利要求1的持久化方法,其特征在于所述持久化步驟是通過(guò)中間件工具進(jìn)行的。
7.一種電信運(yùn)營(yíng)支撐系統(tǒng)的本地網(wǎng)資源管理系統(tǒng)中的業(yè)務(wù)對(duì)象查詢(xún)方法,其特征在于包括步驟在客戶(hù)端定義查詢(xún)請(qǐng)求,該查詢(xún)請(qǐng)求包括查詢(xún)表達(dá)式和關(guān)聯(lián)對(duì)象組裝字符串;發(fā)送查詢(xún)請(qǐng)求到服務(wù)器;服務(wù)器根據(jù)預(yù)定的查詢(xún)表達(dá)式映射將所接收的查詢(xún)請(qǐng)求中的查詢(xún)表達(dá)式轉(zhuǎn)換成針對(duì)相應(yīng)中間件的表達(dá)式;根據(jù)轉(zhuǎn)換的查詢(xún)表達(dá)式執(zhí)行查詢(xún)并根據(jù)關(guān)聯(lián)對(duì)象組裝字符串來(lái)生成查詢(xún)結(jié)果;以及將生成的查詢(xún)結(jié)果返回給客戶(hù)端。
8.根據(jù)權(quán)利要求7的查詢(xún)方法,其特征在于所述執(zhí)行查詢(xún)并生成查詢(xún)結(jié)果的步驟包括查詢(xún)出滿足查詢(xún)表達(dá)式的業(yè)務(wù)對(duì)象的集合;以及解析關(guān)聯(lián)對(duì)象組裝字符串,遞歸組裝業(yè)務(wù)對(duì)象樹(shù),以生成查詢(xún)結(jié)果。
9.根據(jù)權(quán)利要求7或8的查詢(xún)方法,其特征在于所述查詢(xún)請(qǐng)求還包括資源命名拼裝字符串,并且所述執(zhí)行查詢(xún)并生成查詢(xún)結(jié)果的步驟包括解析資源命名拼裝字符串,以及得到業(yè)務(wù)對(duì)象類(lèi)型和命名上下文名稱(chēng);根據(jù)該業(yè)務(wù)對(duì)象類(lèi)型和命名上下文名稱(chēng)從預(yù)定義的命名規(guī)則中找到對(duì)應(yīng)的命名規(guī)則;根據(jù)命名規(guī)則的前提條件,生成相應(yīng)拼裝的SQL語(yǔ)句,查詢(xún)出命名顯示子項(xiàng);對(duì)所述命名顯示子項(xiàng)進(jìn)行命名顯示名稱(chēng)取值轉(zhuǎn)換;以及用經(jīng)過(guò)轉(zhuǎn)換后的名稱(chēng)替換查詢(xún)結(jié)果中與所述業(yè)務(wù)對(duì)象類(lèi)型相應(yīng)的對(duì)象的名稱(chēng)。
10.根據(jù)權(quán)利要求8的查詢(xún)方法,其特征在于所述解析并遞歸組裝的步驟包括針對(duì)每個(gè)解析出的關(guān)聯(lián)子對(duì)象,根據(jù)預(yù)定映射關(guān)系得到相應(yīng)的設(shè)置方法;以及調(diào)用該設(shè)置方法,以設(shè)置該關(guān)聯(lián)子對(duì)象。
11.根據(jù)權(quán)利要78的查詢(xún)方法,其特征在于所述中間件為T(mén)oplink或Hibernate。
12.根據(jù)權(quán)利要求7的查詢(xún)方法,其特征在于所述查詢(xún)請(qǐng)求包括指定當(dāng)前查詢(xún)的頁(yè)數(shù)和每頁(yè)查詢(xún)的記錄數(shù)目的信息,并且所述查詢(xún)業(yè)務(wù)對(duì)象集合的步驟包括根據(jù)分頁(yè)號(hào)和每頁(yè)的數(shù)目進(jìn)行查詢(xún)。
全文摘要
一種電信運(yùn)營(yíng)支撐系統(tǒng)的本地網(wǎng)資源管理系統(tǒng)中的業(yè)務(wù)對(duì)象的持久化方法,其特征在于包括步驟在客戶(hù)端對(duì)業(yè)務(wù)對(duì)象和/或其關(guān)聯(lián)業(yè)務(wù)對(duì)象進(jìn)行修改,并針對(duì)所修改的業(yè)務(wù)對(duì)象設(shè)定與所述修改相應(yīng)的持久化類(lèi)型標(biāo)記;將包括所述被修改的業(yè)務(wù)對(duì)象的對(duì)象樹(shù)提交到服務(wù)器以請(qǐng)求持久化;在服務(wù)器端根據(jù)持久化標(biāo)記對(duì)所提交的對(duì)象樹(shù)實(shí)施修改,以得到最終的對(duì)象樹(shù);以及將最終的對(duì)象樹(shù)持久化到數(shù)據(jù)庫(kù)中。
文檔編號(hào)G06Q50/00GK101030271SQ20061005974
公開(kāi)日2007年9月5日 申請(qǐng)日期2006年3月3日 優(yōu)先權(quán)日2006年3月3日
發(fā)明者萬(wàn)宏謀, 張騏, 張玲, 章靖達(dá), 汪學(xué)強(qiáng), 齊麟, 周俊鋒, 李娟 , 邰恩智, 李玉宏 申請(qǐng)人:中國(guó)電信股份有限公司