專利名稱:一種服務(wù)管理的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及企業(yè)資源規(guī)劃系統(tǒng)領(lǐng)域,尤其涉及一種服務(wù)管理的方法。
背景技術(shù):
面向服務(wù)是一種架構(gòu)軟件系統(tǒng)的方法。面向服務(wù)的架構(gòu)中功能由服務(wù)承載,通過接口對外提供功能。面向服務(wù)架構(gòu)使得公用基礎(chǔ)功能可以在服務(wù)中進行定義,使得功能的實現(xiàn)更易于管理、維護和擴展,使得軟件系統(tǒng)可以快速響應(yīng)變化的需求與應(yīng)對不同的應(yīng)用環(huán)境。將服務(wù)分級為服務(wù)層次是非常重要的,反映了服務(wù)的復合或者不規(guī)則的本性,如果劃分方式不佳,將會導致越來越多的小粒度的服務(wù)被定義、設(shè)計和部署,卻缺乏控制,導致了主要的性能、可伸縮性和管理問題。在傳統(tǒng)方式中,獲取一服務(wù)一般是通過服務(wù)接口。接口是對服務(wù)功能實現(xiàn)的約定,服務(wù)實現(xiàn)通過接口對外公開一些方法以提供功能。獲取服務(wù)是通過指定服務(wù)接口類型從而獲得服務(wù)接口對應(yīng)的服務(wù)實現(xiàn)。服務(wù)的定義過程與業(yè)務(wù)無直接關(guān)聯(lián),例如保存服務(wù),在訂單中以一種方式實現(xiàn),在售貨單中以另一種方式實現(xiàn),在入貨單中又以其他方式實現(xiàn)。因此為了實現(xiàn)業(yè)務(wù)邏輯不同的同一功能,需要建立不同的服務(wù)接口,使得服務(wù)接口數(shù)量龐大難以管理。例如,(參見圖1所示),保存服務(wù)的功能需有一保存服務(wù)實現(xiàn)。在傳統(tǒng)方式中可能需要定義三個不同接口(依次是服務(wù)接口 M、服務(wù)接口 N、服務(wù)接口 O)進而在服務(wù)實現(xiàn)M和服務(wù)實現(xiàn)O中實現(xiàn)服務(wù),才能在調(diào)用服務(wù)時指定不同接口以獲取對應(yīng)的服務(wù)實現(xiàn)。
發(fā)明內(nèi)容
本發(fā)明的目的在于解決上述問題,提供一種服務(wù)管理的方法,該方法不僅通過業(yè)務(wù)領(lǐng)域細分服務(wù),使得服務(wù)的請求者僅需關(guān)心業(yè)務(wù)領(lǐng)域和服務(wù)接口類型即可,而且通過服務(wù)提供者及服務(wù)創(chuàng)建器儲存及管理服務(wù),根據(jù)服務(wù)的應(yīng)用范圍將服務(wù)添加到服務(wù)提供者中。同時該方法提供向上尋址的服務(wù)提供者鏈路,保證了服務(wù)可以被正確定位及儲存。此外,該方法還提供不同的服務(wù)生命周期類型。為實現(xiàn)上述的目的,本發(fā)明采用下述技術(shù)方案:
一種服務(wù)管理的方法,所述服務(wù)管理的方法應(yīng)用于一軟件系統(tǒng)中,包括以下步驟:
(a)通過業(yè)務(wù)領(lǐng)域細分一服務(wù),每一業(yè)務(wù)領(lǐng)域具有一業(yè)務(wù)領(lǐng)域標識;
(b)根據(jù)細分結(jié)果將所述服務(wù)在所述業(yè)務(wù)領(lǐng)域上的一投影添加至至少一服務(wù)提供者中,所述投影包括所述業(yè)務(wù)領(lǐng)域標識、一服務(wù)類型以及一服務(wù)創(chuàng)建器;
(C)在請求所述服務(wù)時,根據(jù)所述業(yè)務(wù)領(lǐng)域標識和所述服務(wù)類型,取得所述投影的服務(wù)創(chuàng)建器,由所述的服務(wù)創(chuàng)建器返回一服務(wù)實例。進一步,所述至少一服務(wù)提供者為多個相鏈的服務(wù)提供者。進一步,所述的步驟(b)中,依據(jù)所述投影的應(yīng)用范圍將所述投影添加至多個所述服務(wù)提供者中。
進一步,所述的步驟(C)中,進一步包括以下步驟:
在請求所述服務(wù)時,通過所述至少一服務(wù)提供者提供的GetService方法請求服務(wù),從所述至少一服務(wù)提供者開始逐一檢索至其它服務(wù)提供者,查找所述投影的服務(wù)創(chuàng)建器;以及
當檢索到所述投影的服務(wù)創(chuàng)建器時,由所述服務(wù)創(chuàng)建器返回所述服務(wù)實例。進一步,在返回所述服務(wù)實例的步驟中,當檢索不到所述投影時,引發(fā)異常。進一步,在檢索所述投影的服務(wù)創(chuàng)建器的步驟中,進一步包括當發(fā)現(xiàn)所述服務(wù)類型具有中斷標記時,則停止檢索。進一步,在通過業(yè)務(wù)領(lǐng)域細分所述服務(wù)的步驟之后,進一步包括:
按照業(yè)務(wù)領(lǐng)域標識,分為不同的文件目錄,將所述服務(wù)配置于所述所有文件目錄中。進一步,所述的軟件系統(tǒng)是一企業(yè)資源規(guī)劃系統(tǒng)。此外,本發(fā)明還提供一種服務(wù)管理的方法,應(yīng)用于一軟件系統(tǒng)中,包括如下步驟: 在軟件系統(tǒng)中識別通用功能并定義服務(wù)接口;
根據(jù)服務(wù)接口,為每個業(yè)務(wù)領(lǐng)域提供服務(wù)接口對應(yīng)的具體的服務(wù)實現(xiàn);
為每一服務(wù)設(shè)置生命周期類型,根據(jù)生命周期類型指定服務(wù)創(chuàng)建器;
按照服務(wù)應(yīng)用范圍,將所述服務(wù)接口類型、所述業(yè)務(wù)領(lǐng)域標識以及所述服務(wù)創(chuàng)建器一起作為服務(wù)投影放入服務(wù)提供者中;
當接收服務(wù)請求,通過業(yè)務(wù)領(lǐng)域標識和服務(wù)類型,從多層服務(wù)提供者的其中一服務(wù)提供者開始檢索對應(yīng)的服務(wù)創(chuàng)建器;
通過所述多層服務(wù)提供者的服務(wù)鏈路逐層向上檢索對應(yīng)的服務(wù)創(chuàng)建器;以及當檢索到所述對應(yīng)的服務(wù)創(chuàng)建器時,服務(wù)創(chuàng)建器依據(jù)所述服務(wù)的生命周期類型返回所述服務(wù)實例。本發(fā)明的優(yōu)點在于:
(1)通過業(yè)務(wù)領(lǐng)域細分服務(wù),服務(wù)的請求者僅需關(guān)心業(yè)務(wù)領(lǐng)域和服務(wù)接口類型即可,保持服務(wù)實現(xiàn)的多樣性的同時,更易于開發(fā);
(2)將彼此緊密相關(guān)的服務(wù)與服務(wù)提供者組織在一起,服務(wù)提供者對外提供統(tǒng)一的服務(wù)調(diào)用方法(GetService),更易于系統(tǒng)的開發(fā)和設(shè)計;
(3)提供向上尋址的服務(wù)提供者鏈路,保證了服務(wù)可以被正確定位及儲存,完美支持系統(tǒng)對客戶機-服務(wù)器模式的復雜應(yīng)用和需求;以及
(4)提供不同的服務(wù)生命周期類型,滿足軟件系統(tǒng)中復雜的業(yè)務(wù)需求。
圖1是傳統(tǒng)方式利用不同接口完成服務(wù)實現(xiàn)的示意 圖2是本發(fā)明所述服務(wù)管理方法的步驟流程框 圖3是本發(fā)明所述業(yè)務(wù)領(lǐng)域細分服務(wù)的示意 圖4是本發(fā)明所述服務(wù)投影和服務(wù)提供者關(guān)系的示意 圖5是本發(fā)明所述服務(wù)提供者逐層向上檢索所述投影的服務(wù)創(chuàng)建器過程的示意 圖6是本發(fā)明一實施例所述服務(wù)管理方法的具體實施步驟示意圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明服務(wù)管理的方法的具體實施方式
做詳細說明。參見圖2是一種依據(jù)本發(fā)明的服務(wù)管理方法的步驟流程框圖,所述服務(wù)管理方法應(yīng)用于一軟件系統(tǒng)中,包括以下步驟:
SlOl:通過業(yè)務(wù)領(lǐng)域細分一服務(wù),每一業(yè)務(wù)領(lǐng)域具有一業(yè)務(wù)領(lǐng)域標識(如圖3中M12表示所述業(yè)務(wù)領(lǐng)域細分服務(wù))。服務(wù)在軟件系統(tǒng)中為一功能點的類別,所述的功能點用于完成一需求的功能。本發(fā)明是依照業(yè)務(wù)領(lǐng)域劃分服務(wù),通過一穩(wěn)定的通用接口約定服務(wù)實現(xiàn),并通過業(yè)務(wù)領(lǐng)域標識(TypeKey)將具體服務(wù)實現(xiàn)與業(yè)務(wù)領(lǐng)域進行關(guān)聯(lián),其中TypeKey是一種業(yè)務(wù)標識,通過通用接口加上業(yè)務(wù)領(lǐng)域標識(TypeKey),在業(yè)務(wù)領(lǐng)域內(nèi)獲取正確的服務(wù)實現(xiàn)。以下給出一個例子用于說明按照業(yè)務(wù)領(lǐng)域細分服務(wù),參見圖3:服務(wù)實現(xiàn)A(M122)和服務(wù)實現(xiàn)C(M124)是保存服務(wù)通用接口 ISaveService在業(yè)務(wù)領(lǐng)域標識TypekeyA和業(yè)務(wù)領(lǐng)域標識TypekeyC的兩個投影。在獲取服務(wù)時,若在業(yè)務(wù)領(lǐng)域A,則可找到業(yè)務(wù)領(lǐng)域A對應(yīng)的具體服務(wù)實現(xiàn)A,若在業(yè)務(wù)領(lǐng)域C時,則可找到業(yè)務(wù)領(lǐng)域C對應(yīng)的具體服務(wù)實現(xiàn)C。因此,不需要告知服務(wù)提供者需要哪一業(yè)務(wù)領(lǐng)域?qū)?yīng)的服務(wù)接口,也不需要額外接口就能使服務(wù)被訪問。S102:根據(jù)每一業(yè)務(wù)領(lǐng)域中的業(yè)務(wù)需求,為每一業(yè)務(wù)領(lǐng)域的每一服務(wù)接口通過編寫代碼提供服務(wù)實現(xiàn),對同一功能業(yè)務(wù)需求相同的不同業(yè)務(wù)領(lǐng)域可以復用同一服務(wù)實現(xiàn)。S103:按照業(yè)務(wù)領(lǐng)域標識,分為不同的文件目錄,將所述服務(wù)配置于所述文件
目錄中。在此,根據(jù)業(yè)務(wù)領(lǐng)域標識區(qū)分不同的文件目錄,是因為系統(tǒng)在根據(jù)配置加載服務(wù)時,是按照配置文件所處的文件夾確定該服務(wù)應(yīng)該應(yīng)用于哪個應(yīng)用領(lǐng)域。每個文件目錄對應(yīng)一個業(yè)務(wù)領(lǐng)域標識(TypeKey),也即對應(yīng)于一個業(yè)務(wù)領(lǐng)域。特別地,并不是所有服務(wù)都需要配置在業(yè)務(wù)領(lǐng)域標識的文件目錄中,還有不需要指定TypeKey的公用服務(wù),可以配置在根目錄下或者在代碼中直接注冊服務(wù)。S104:根據(jù)細分結(jié)果將所述服務(wù)在所述業(yè)務(wù)領(lǐng)域上的一投影(project)添加至多層相鏈的服務(wù)提供者中,所述投影包括所述的業(yè)務(wù)領(lǐng)域標識(TypeKey)、一服務(wù)接口類型(ISaveService)和一服務(wù)創(chuàng)建器。所述投影是指在不同業(yè)務(wù)領(lǐng)域中對于業(yè)務(wù)接口有不同的業(yè)務(wù)實現(xiàn)。當所述多層相鏈的服務(wù)提供者的其中一服務(wù)提供者接收到服務(wù)請求時,參見圖4的服務(wù)提供者Ml I內(nèi)部置有一字典Ml 11,所述的字典Ml 11包括多個鍵值對如鍵Ml 12和值Ml 13,所述鍵值對即為上述投影的內(nèi)容,所述的鍵Ml 12 (key)為業(yè)務(wù)領(lǐng)域標識和服務(wù)接口類型,所述的值M113(value)為一個內(nèi)部的服務(wù)創(chuàng)建器。所述的鍵M112和值M113是一一對應(yīng)的關(guān)系。以下再給出一個例子用于說明服務(wù)投影和服務(wù)提供者關(guān)系,在圖4中,服務(wù)接口 ISaveService在不同的業(yè)務(wù)領(lǐng)域A、B、C具有不同的投影,S卩服務(wù)實現(xiàn)A(M122)、服務(wù)實現(xiàn)B(M123)和服務(wù)實現(xiàn)C(M124),此處三個鍵分別設(shè)置為ISaveService+A,ISaveService+B, ISaveService+C。由于服務(wù)類型已提供,服務(wù)實現(xiàn)已寫入代碼中,對于服務(wù)提供者而言,當軟件系統(tǒng)執(zhí)行時,所述的服務(wù)會生成相應(yīng)的服務(wù)實例,所述服務(wù)實例是通過服務(wù)創(chuàng)建器來完成。服務(wù)創(chuàng)建器用于依照服務(wù)的生命周期的不同類型以創(chuàng)建服務(wù)實例。服務(wù)有不同的生命周期類型,所述的生命周期類型包括SingleGet、Singleton、Callback和WeakReference。其中SingleGet為當每次被調(diào)用時產(chǎn)生新的一服務(wù)實例;Singleton為復用同一個實例,即服務(wù)被第一調(diào)用時會生成一服務(wù)實例,之后所述服務(wù)被調(diào)用時使用同一服務(wù)實例以完成功能fallback為服務(wù)實例創(chuàng)建的過程,允許傳入創(chuàng)建邏輯以決定如何創(chuàng)建一服務(wù)實例,WeakReference為返回指向服務(wù)實例的弱引用。此外,SingleGet、Singleton和WeakReference為固定的創(chuàng)建邏輯,而CalIback可自定義創(chuàng)建邏輯,增加了靈活度。Singleton和WeakReference均會檢查是否已創(chuàng)建一服務(wù)實例,若有則不創(chuàng)建,若無則創(chuàng)建一新服務(wù)實例,但Singleton的服務(wù)實例不允許銷毀,WeakReference的服務(wù)實例在不使用時會被釋放,被釋放后需重新創(chuàng)建。S105:在所述多層相鏈的服務(wù)提供者的其中一服務(wù)提供者被請求該服務(wù)時,根據(jù)指定所述業(yè)務(wù)領(lǐng)域標識和所述服務(wù)接口類型,從所述的其中一服務(wù)提供者開始檢索該投影的服務(wù)創(chuàng)建器。服務(wù)提供者又稱服務(wù)容器,在服務(wù)提供者中使用鍵值對,所述鍵值對存放服務(wù)創(chuàng)建器。任一服務(wù)提供者在接收到服務(wù)請求的時候,將返回所需的服務(wù)實例,服務(wù)實例由服務(wù)創(chuàng)建器提供。將一個服務(wù)與服務(wù)環(huán)境進行動態(tài)掛接,有2種方式。一種方式是直接與服務(wù)提供者有關(guān)聯(lián)。在運行時,通過設(shè)置服務(wù)對象關(guān)聯(lián)的服務(wù)提供者,可將服務(wù)對象動態(tài)連接到服務(wù)環(huán)境中,或從一服務(wù)環(huán)境中斷開。另一方式是與另一服務(wù)進行掛接,不直接與服務(wù)提供者關(guān)聯(lián),通過該另一服務(wù)獲取服務(wù)提供者。例如,服務(wù)A與另一服務(wù)B進行掛接,服務(wù)B是處于客戶端服務(wù)環(huán)境中,那么,服務(wù)A也能共享到客戶端服務(wù)環(huán)境中的服務(wù)。S106:若未找到所述投影的服務(wù)創(chuàng)建器,從被請求的服務(wù)提供者逐層向上檢索至其它的服務(wù)提供者。如在圖5中,底層首先調(diào)用服務(wù),用戶控件(UserControl)(例如打開服務(wù)表單)打開窗口即包含一服務(wù)容器(服務(wù)提供者M11),其中包含一些與此控件相關(guān)的控制服務(wù)。例如格式控制、某一字段顯示顏色的服務(wù),這些服務(wù)都注冊在用戶控件的服務(wù)提供者內(nèi),直接獲取即可。又如,點擊保存工具欄按鈕,調(diào)用客戶端合法性檢查,由于合法性檢查服務(wù)是直接注冊在此窗體之內(nèi),因此可以直接在窗體的服務(wù)提供者獲取。例如若要執(zhí)行保存服務(wù),而保存服務(wù)是注冊在服務(wù)端,于是,通過所述多層相鏈的服務(wù)提供者的服務(wù)鏈路逐層向上檢索。首先在用戶控件的服務(wù)提供者中,即在服務(wù)提供者Mll的內(nèi)部字典中進行查找,若沒有找到,則此請求轉(zhuǎn)發(fā)至上一層的服務(wù)提供者M20,若在所述的上一層的服務(wù)提供者M20中也沒有找到,則再一次轉(zhuǎn)發(fā)至客戶端服務(wù)提供者M30,在客戶端服務(wù)提供者M30內(nèi)部查找有無該鍵,若有則返回服務(wù)實例,若無則繼續(xù)向上查找(即在服務(wù)端服務(wù)提供者M40的內(nèi)部字典中查找)。若在服務(wù)端(在服務(wù)器或appdomain機器上)查找,需要跨越網(wǎng)絡(luò)邊界。S107:當檢索到所述投影的服務(wù)創(chuàng)建器時,返回所述服務(wù)實例。服務(wù)端服務(wù)提供者M40接收到保存服務(wù)的調(diào)用后,在字典中檢索并找到所述鍵,從對應(yīng)的值中獲取業(yè)務(wù)領(lǐng)域中的保存服務(wù)對應(yīng)的服務(wù)創(chuàng)建器,根據(jù)生命周期類型的設(shè)置,創(chuàng)建一保存服務(wù)實例,并予以返回。在每一服務(wù)提供者中設(shè)置有一標記(字段),用于標識當前等級的服務(wù)提供者的上級服務(wù)提供者。在逐層向上檢索所述投影步驟中,當需要跨越網(wǎng)絡(luò)邊界時,若發(fā)現(xiàn)所述服務(wù)類型具有中斷標記,則停止逐層向上檢索該投影的服務(wù)創(chuàng)建器。也就是說,只在本地的服務(wù)提供者的字典中進行查找,不進行跨越網(wǎng)絡(luò)。如果在整個檢索過程中檢索不到所述投影的服務(wù)創(chuàng)建器(檢索過程結(jié)束包括檢索完最上層的服務(wù)提供者以及在跨越網(wǎng)絡(luò)邊界時中斷檢索)時,會引發(fā)異常,即服務(wù)找不到。
參見圖6,以下給出本發(fā)明一具體實施例的方法,其具體步驟如下:
步驟S601:首先在軟件系統(tǒng)中定義一些通用功能和通用接口,例如ISaveService,IApproveService, IDeleteService等通用接口。然后在一業(yè)務(wù)領(lǐng)域,比如為了實現(xiàn)訂單的業(yè)務(wù)邏輯,訂單業(yè)務(wù)邏輯中需運用一保存的服務(wù)實現(xiàn)。若發(fā)現(xiàn)沒有所述保存訂單的服務(wù)實現(xiàn),需為訂單服務(wù)創(chuàng)建所述保存的服務(wù)實現(xiàn),即實現(xiàn)ISaveService接口。步驟S602:在定義服務(wù)時,設(shè)置一功能點類別標記(服務(wù)類型)。當功能包應(yīng)用時所述服務(wù)功能點被實現(xiàn)。步驟S603:在定義服務(wù)(實現(xiàn)服務(wù))時,根據(jù)服務(wù)接口中的方法約定及業(yè)務(wù)領(lǐng)域中的業(yè)務(wù)需求來進行實現(xiàn)。在服務(wù)接口 ISaveService中聲明了 Save方法,在實現(xiàn)保存服務(wù)時,實現(xiàn)ISaveService接口,需提供Save方法的具體實現(xiàn)。步驟S604:服務(wù)的功能點和服務(wù)的功能點解釋器預(yù)先設(shè)定。功能點解釋器在接收功能點集合之后,依據(jù)功能點類別標記,將所述功能點對應(yīng)的服務(wù)投影置于相應(yīng)的服務(wù)提供者的服務(wù)容器中,功能點的應(yīng)用方法也存放于解釋器中。步驟S605:所述保存服務(wù),在保存服務(wù)的功能點上標注為服務(wù)類型。在軟件系統(tǒng)加載的時候,將保存服務(wù)置于服務(wù)提供者容器中。同時需要對保存服務(wù)的生命周期類型進行定義設(shè)置(例如,所述保存服務(wù)生命周期類型為Singleton)。至此,保存服務(wù)定義完畢。步驟S606:將所述的保存服務(wù)配置于一功能包中,例如將所述保存服務(wù)置于訂單的功能包中。訂單的業(yè)務(wù)領(lǐng)域標識為A,在訂單加載過程中,系統(tǒng)將保存服務(wù)注冊至服務(wù)端服務(wù)提供者,在服務(wù)端服務(wù)提供者的內(nèi)部字典中,鍵為ISaveService+A,值為保存服務(wù)對應(yīng)的服務(wù)創(chuàng)建器。至此,完成系統(tǒng)對訂單中保存服務(wù)的加載過程。步驟S607:在軟件系統(tǒng)執(zhí)行時,客戶端前端界面對業(yè)務(wù)領(lǐng)域A的單據(jù)進行保存操作,后端即向當前控件的服務(wù)提供者請求保存服務(wù),采用通用的方法入口 GetService,以ISaveService作為服務(wù)接口類型,以A為業(yè)務(wù)領(lǐng)域標識。當前用戶控件的服務(wù)提供者接收到保存服務(wù)的調(diào)用后,在用戶控件的服務(wù)提供者的字典中檢索(ISaveService+A)的鍵。步驟S608:當用戶控件的服務(wù)提供者發(fā)現(xiàn)在字典中沒有找到,根據(jù)服務(wù)鏈路,找到上層窗體服務(wù)提供者。當窗體服務(wù)提供者接收到保存服務(wù)的調(diào)用后,在窗體服務(wù)提供者的字典中檢索(ISaveService+A)的鍵。當窗體服務(wù)提供者發(fā)現(xiàn)在字典中沒有找到,根據(jù)服務(wù)鏈路,找到客戶端服務(wù)提供者。當客戶端服務(wù)提供者接收到保存服務(wù)的調(diào)用后,在客戶端服務(wù)提供者的字典中檢索(ISaveService+A)的鍵。如果客戶端服提供者務(wù)發(fā)現(xiàn)在字典中沒有找到,根據(jù)服務(wù)鏈路,跨越網(wǎng)絡(luò)邊界至服務(wù)端服務(wù)提供者。步驟S609:當服務(wù)端服務(wù)提供者接收到保存服務(wù)的調(diào)用后,在服務(wù)端服務(wù)提供者的字典中檢索(ISaveService+A)的鍵。如果服務(wù)端服務(wù)提供者找到該鍵,從對應(yīng)的值中獲取業(yè)務(wù)領(lǐng)域A中的保存服務(wù)對應(yīng)的服務(wù)創(chuàng)建器,由于所述保存服務(wù)的生命周期類型為Singleton,所以進行判斷是否已有的SaveService服務(wù)實例,若有則不創(chuàng)建,若無則所述服務(wù)創(chuàng)建器創(chuàng)建一個新的保存服務(wù)(SaveService)實例。步驟S610:調(diào)用所述保存服務(wù)的服務(wù)實例業(yè)務(wù)實現(xiàn)方法,執(zhí)行單據(jù)A的保存邏輯。本發(fā)明有益效果在于,通過業(yè)務(wù)領(lǐng)域細分服務(wù),使得服務(wù)請求者可以利用業(yè)務(wù)領(lǐng)域和服務(wù)接口類型組合方式,以及向上尋址的服務(wù)提供者鏈路,正確定位及存儲服務(wù),完成開發(fā)需求。
以上所述僅是本發(fā)明的優(yōu)選實施方式,應(yīng)當指出,對于本技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應(yīng)視為本發(fā)明的保護范圍。
權(quán)利要求
1.一種服務(wù)管理的方法,所述服務(wù)管理的方法應(yīng)用于一軟件系統(tǒng)中,其特征在于,包括以下步驟: (a)通過業(yè)務(wù)領(lǐng)域細分一服務(wù),每一業(yè)務(wù)領(lǐng)域具有一業(yè)務(wù)領(lǐng)域標識; (b)根據(jù)細分結(jié)果將所述服務(wù)在所述業(yè)務(wù)領(lǐng)域上的一投影(project)添加至至少一服務(wù)提供者中,所述投影包括所述業(yè)務(wù)領(lǐng)域標識、一服務(wù)類型以及一服務(wù)創(chuàng)建器; (c)在請求所述服務(wù)時,根據(jù)所述業(yè)務(wù)領(lǐng)域標識和所述服務(wù)類型,取得所述投影的服務(wù)創(chuàng)建器,由所述的服務(wù)創(chuàng)建器返回一服務(wù)實例。
2.如權(quán)利要求1所述的服務(wù)管理的方法,其特征在于,所述至少一服務(wù)提供者為多個相鏈的服務(wù)提供者。
3.如權(quán)利要求2所述的服務(wù)管理的方法,其特征在于,所述的步驟(b)中,依據(jù)所述投影的應(yīng)用范圍添加至所述多個服務(wù)提供者中。
4.如權(quán)利要求2所述的服務(wù)管理的方法,其特征在于,所述的步驟(c)中,進一步包括以下步驟: 在請求所述服務(wù)時,通過所述至少一服務(wù)提供者提供的GetService方法請求服務(wù),從所述至少一服務(wù)提供者開始逐一檢索至其它服務(wù)提供者,查找所述投影的服務(wù)創(chuàng)建器;以及 當檢索到所述投影的服務(wù)創(chuàng)建器時,由所述服務(wù)創(chuàng)建器返回所述服務(wù)實例。
5.如權(quán)利要求4所述的服務(wù)管理的方法,其特征在于,在返回所述服務(wù)實例的步驟中,當檢索不到所述投影時,引發(fā)異常。
6.如權(quán)利要求4所述的服務(wù)管理的方法,其特征在于,在檢索所述投影的服務(wù)創(chuàng)建器的步驟中,進一步包括當發(fā)現(xiàn)所述服務(wù)類型具有中斷標記時,則停止檢索。
7.如權(quán)利要求1所述的服務(wù)管理的方法,其特征在于,所述的步驟(a)后,還包括: 按照業(yè)務(wù)領(lǐng)域標識,分為不同的文件目錄,將所述服務(wù)定義于所述所有文件目錄中。
8.如權(quán)利要求1所述的服務(wù)管理的方法,其特征在于,所述的軟件系統(tǒng)是一企業(yè)資源規(guī)劃系統(tǒng)。
9.一種服務(wù)管理的方法,其特征在于,包括以下步驟: 在軟件系統(tǒng)中識別通用功能并定義服務(wù)接口; 根據(jù)服務(wù)接口,為每個業(yè)務(wù)領(lǐng)域提供服務(wù)接口對應(yīng)的具體的服務(wù)實現(xiàn); 為每一服務(wù)設(shè)置生命周期類型,根據(jù)生命周期類型指定服務(wù)創(chuàng)建器; 按照服務(wù)應(yīng)用范圍,將所述服務(wù)接口類型、所述業(yè)務(wù)領(lǐng)域標識以及所述服務(wù)創(chuàng)建器一起作為服務(wù)投影放入服務(wù)提供者中; 當接收服務(wù)請求,通過業(yè)務(wù)領(lǐng)域標識和服務(wù)類型,從多層服務(wù)提供者的其中一服務(wù)提供者開始檢索對應(yīng)的服務(wù)創(chuàng)建器; 通過所述多層服務(wù)提供者的服務(wù)鏈路逐層向上檢索對應(yīng)的服務(wù)創(chuàng)建器;以及當檢索到所述對應(yīng)的服務(wù)創(chuàng)建器時,服務(wù)創(chuàng)建器依據(jù)所述服務(wù)的生命周期類型返回所述服務(wù)實例。
全文摘要
本發(fā)明是一種服務(wù)管理的方法應(yīng)用于一軟件系統(tǒng)中,包括通過業(yè)務(wù)領(lǐng)域細分一服務(wù),每一業(yè)務(wù)領(lǐng)域具有一業(yè)務(wù)領(lǐng)域標識;根據(jù)細分結(jié)果將服務(wù)在業(yè)務(wù)領(lǐng)域上的一投影添加至至少一服務(wù)提供者中,投影包括業(yè)務(wù)領(lǐng)域標識、一服務(wù)類型以及一服務(wù)創(chuàng)建器;在請求服務(wù)時,根據(jù)業(yè)務(wù)領(lǐng)域標識和服務(wù)類型,取得投影的服務(wù)創(chuàng)建器,由服務(wù)創(chuàng)建器返回一服務(wù)實例。本發(fā)明不僅通過業(yè)務(wù)領(lǐng)域細分服務(wù),使服務(wù)的請求者僅需關(guān)心業(yè)務(wù)領(lǐng)域和服務(wù)接口類型,而且使用服務(wù)提供者及服務(wù)創(chuàng)建器儲存及管理服務(wù),根據(jù)服務(wù)的應(yīng)用范圍將服務(wù)投影添加到服務(wù)提供者中。同時本發(fā)明提供向上尋址的服務(wù)提供者鏈路,保證了服務(wù)可被正確定位及儲存。此外,本發(fā)明還提供不同的服務(wù)生命周期類型。
文檔編號G06F9/46GK103186417SQ20111045448
公開日2013年7月3日 申請日期2011年12月30日 優(yōu)先權(quán)日2011年12月30日
發(fā)明者孫海林 申請人:鼎捷軟件股份有限公司