一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運行系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運行系統(tǒng)。其中,該方法包括:解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信息;基于所述組件信息在所述組件容器中注冊配置文件;其中,所述組件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺上,業(yè)務(wù)基礎(chǔ)平臺與所述業(yè)務(wù)組件松耦合;在業(yè)務(wù)基礎(chǔ)平臺需要升級時,根據(jù)所述配置文件升級對應(yīng)的業(yè)務(wù)組件。通過本發(fā)明的業(yè)務(wù)組件加載方法及業(yè)務(wù)組件運行系統(tǒng),實現(xiàn)了業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺松耦合,業(yè)務(wù)基礎(chǔ)平臺的升級不再對業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升級成本。業(yè)務(wù)組件通過組件容器的加載,有各自清晰的物理界限。每個業(yè)務(wù)組件有各自的版本,便于業(yè)務(wù)組件的管理,降低了維護成本。
【專利說明】
一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運行系統(tǒng)
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及計算機軟件技術(shù)領(lǐng)域,尤其涉及一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù) 組件運行系統(tǒng)。
【背景技術(shù)】
[0002] 軟件復(fù)用是一種計算機軟件工程理論,60年代的"軟件危機"使程序設(shè)計人員明白 軟件維護成本是極其高昂的,當(dāng)軟件的規(guī)模不斷擴大時,軟件的綜合成本非常高,并且即使 投入了高昂的資金也難以得到可靠的產(chǎn)品,而軟件重用是解決這一問題的根本方法。
[0003] 軟件復(fù)用就是基于已有的軟件成分構(gòu)造新的軟件系統(tǒng),可以被復(fù)用的軟件成分一 般稱作可復(fù)用組件,無論是原封不動地使用可復(fù)用組件還是對可復(fù)用組件作適當(dāng)修改后再 使用,只要是用來構(gòu)造新的軟件系統(tǒng),則都可稱作"軟件復(fù)用"。
[0004] 在企業(yè)級應(yīng)用開發(fā)領(lǐng)域,如何將一些通用的業(yè)務(wù)組件(可復(fù)用軟件)進行復(fù)用,是 軟件廠商思考的核心問題之一。目前,國內(nèi)廠商提出了業(yè)務(wù)基礎(chǔ)平臺的概念用以解決業(yè)務(wù) 組件復(fù)用的問題。
[0005] 國內(nèi)軟件廠商通過采用"Spring Framework"(Spring框架,Spring是J2EE應(yīng)用程 序框架,是輕量級的I〇C和A0P的容器框架,主要是針對javaBean的生命周期進行管理的輕 量級容器)等開源軟件為基礎(chǔ)技術(shù)框架,業(yè)務(wù)基礎(chǔ)平臺基于技術(shù)框架將可復(fù)用組件進行簡 單的累加,業(yè)務(wù)系統(tǒng)基于解決方案平臺進行二次開發(fā),這樣用以實現(xiàn)軟件復(fù)用。目前常用的 平臺主要包括:浪潮Loushang平臺、SAP(System Applications and Products,企業(yè)管理系 列軟件)的Net Weaver (集成化應(yīng)用平臺)、金蝶Apusic(Apus Promote Internet Computing,企業(yè)基礎(chǔ)架構(gòu)軟件平臺)、普元EOS等。
[0006]圖1是根據(jù)相關(guān)技術(shù)的傳統(tǒng)業(yè)務(wù)基礎(chǔ)平臺結(jié)構(gòu)圖,如圖1所示,業(yè)務(wù)基礎(chǔ)平臺和業(yè) 務(wù)組件沒有清晰的物理界限,業(yè)務(wù)組件只是一堆軟件代碼資源,沒有清晰的定義。業(yè)務(wù)基礎(chǔ) 平臺不具備組件加載能力,業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺的代碼混合在一起,一起加載到應(yīng)用 服務(wù)器(J2EE Server)上,并在硬件基礎(chǔ)平臺上運行。
[0007]傳統(tǒng)業(yè)務(wù)基礎(chǔ)平臺的結(jié)構(gòu)具有如下缺點:
[0008] 1、業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺緊耦合,一旦解決方案平臺升級,業(yè)務(wù)組件也不得不 升級,很多業(yè)務(wù)系統(tǒng)需要重寫;
[0009] 2、隨著業(yè)務(wù)的發(fā)展,系統(tǒng)共性部分不斷增加,業(yè)務(wù)基礎(chǔ)平臺越來越龐大,特別是隨 著業(yè)務(wù)基礎(chǔ)平臺代碼的不斷增加,性能越來越差;
[0010] 3、業(yè)務(wù)基礎(chǔ)平臺功能是一體化的,導(dǎo)致很小的功能改動都會升級整個業(yè)務(wù)基礎(chǔ)平 臺,各功能無法獨自升級。
[0011] 針對傳統(tǒng)業(yè)務(wù)基礎(chǔ)平臺的上述問題,目前尚未提出有效的解決方案。
【發(fā)明內(nèi)容】
[0012] 本發(fā)明提供了一種業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運行系統(tǒng),以至少解決業(yè) 務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺緊耦合的問題。
[0013]根據(jù)本發(fā)明的一個方面,提供了一種業(yè)務(wù)組件加載方法,其中,該方法包括:解壓 發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信息;基于所述組件信息 在所述組件容器中注冊配置文件;其中,所述組件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺上,所述業(yè)務(wù)基 礎(chǔ)平臺與所述業(yè)務(wù)組件松耦合;在所述業(yè)務(wù)基礎(chǔ)平臺需要升級時,根據(jù)所述配置文件升級 對應(yīng)的業(yè)務(wù)組件。
[0014] 優(yōu)選地,所述業(yè)務(wù)組件包括四個層次:菜單層、UI(User Interface,用戶界面)層、 服務(wù)層、持久層;所述組件信息包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組件 持久層信息。
[0015] 優(yōu)選地,基于所述組件信息在所述組件容器中注冊配置文件,包括:讀取所述信息 包中的所述組件菜單信息,根據(jù)所述組件菜單信息在所述組件容器中注冊組件菜單權(quán)限配 置文件;讀取所述信息包中的所述組件UI層信息,根據(jù)所述組件UI層信息在所述組件容器 中注冊組件UI層配置文件;讀取所述信息包中的所述組件服務(wù)層信息,根據(jù)所述組件服務(wù) 層信息在所述組件容器中注冊組件服務(wù)層配置文件;讀取所述信息包中的所述組件持久層 信息,根據(jù)所述組件持久層信息在所述組件容器中注冊組件持久層配置文件。
[0016] 優(yōu)選地,所述組件UI層配置文件至少包括:faces-conf ig ? xml文件、val idate-conf ig? xml文件、web ? xml文件;所述組件服務(wù)層配置文件至少包括:service ? xml文件;所 述組件持久層配置文件至少包括:sql-map-conf ig. xml文件。
[0017] 優(yōu)選地,基于所述組件信息在所述組件容器中注冊配置文件,采用以下技術(shù)實現(xiàn): dom4j解析技術(shù)。
[0018] 優(yōu)選地,讀取所述信息包中的組件信息之后,所述方法還包括:將所述組件信息對 應(yīng)拷貝到系統(tǒng)目錄中;其中,所述系統(tǒng)目錄位于與所述業(yè)務(wù)基礎(chǔ)平臺相連接的應(yīng)用服務(wù)器 中,用于對所述業(yè)務(wù)組件的組件信息進行分類管理。
[0019] 優(yōu)選地,所述信息包是在所述業(yè)務(wù)組件的開發(fā)階段將業(yè)務(wù)組件的信息壓縮形成的 壓縮包。
[0020] 優(yōu)選地,所述組件信息至少包括以下之一:組件中文名稱、組件英文名稱、組件版 本號、組件的包路徑、組件依賴的jar包文名、待注冊的配置文件、菜單權(quán)限文件。
[0021 ]優(yōu)選地,所述組件容器定義如下目錄結(jié)構(gòu): |- [組件英文名.zip] I-[組件英文名]
[0022] 卜[Hb] i- [src]
[-[WebContent];
[0023]其中,lib用于存放業(yè)務(wù)組件依賴的第三方j(luò)ar包,src用于存放業(yè)務(wù)組件包含的 java源代碼以及相關(guān)配置文件,WebContent用于存放業(yè)務(wù)組件包含的web資源文件。
[0024]根據(jù)本發(fā)明的另一個方面,提供了一種業(yè)務(wù)組件加載裝置,其中,該裝置包括:信 息處理模塊,用于解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信 息;文件注冊模塊,用于基于所述組件信息在所述組件容器中注冊配置文件;其中,所述組 件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺上,所述業(yè)務(wù)基礎(chǔ)平臺與所述業(yè)務(wù)組件松耦合;組件升級模塊, 用于在所述業(yè)務(wù)基礎(chǔ)平臺需要升級時,根據(jù)所述配置文件升級對應(yīng)的業(yè)務(wù)組件。
[0025] 優(yōu)選地,所述業(yè)務(wù)組件包括四個層次:菜單層、用戶界面UI層、服務(wù)層、持久層;所 述組件信息包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組件持久層信息。
[0026] 優(yōu)選地,所述文件注冊模塊包括:組件菜單權(quán)限加載單元,用于讀取所述信息包中 的所述組件菜單信息,根據(jù)所述組件菜單信息在所述組件容器中注冊組件菜單權(quán)限配置文 件;組件UI層加載單元,用于讀取所述信息包中的所述組件UI層信息,根據(jù)所述組件UI層信 息在所述組件容器中注冊組件UI層配置文件;組件服務(wù)層加載單元,用于讀取所述信息包 中的所述組件服務(wù)層信息,根據(jù)所述組件服務(wù)層信息在所述組件容器中注冊組件服務(wù)層配 置文件;組件持久層加載單元,用于讀取所述信息包中的所述組件持久層信息,根據(jù)所述組 件持久層信息在所述組件容器中注冊組件持久層配置文件。
[0027] 優(yōu)選地,所述裝置還包括:資源拷貝模塊,用于將所述組件信息對應(yīng)拷貝到系統(tǒng)目 錄中;其中,所述系統(tǒng)目錄位于與所述業(yè)務(wù)基礎(chǔ)平臺相連接的應(yīng)用服務(wù)器中,用于對所述業(yè) 務(wù)組件的組件信息進行分類管理。
[0028] 根據(jù)本發(fā)明的另一個方面,提供了一種業(yè)務(wù)組件運行系統(tǒng),其中,該系統(tǒng)自下而上 包括:應(yīng)用服務(wù)器、業(yè)務(wù)基礎(chǔ)平臺、由多個業(yè)務(wù)組件構(gòu)成的組件系統(tǒng);其中,所述業(yè)務(wù)基礎(chǔ)平 臺包括組件容器;所述組件容器,用于解壓所述各個業(yè)務(wù)組件的信息包,讀取所述信息包中 的組件信息,基于所述組件信息注冊配置文件;其中,所述配置文件用于對所述業(yè)務(wù)組件進 行升級;所述業(yè)務(wù)基礎(chǔ)平臺,與所述組件系統(tǒng)松耦合,用于升級所述業(yè)務(wù)組件以實現(xiàn)軟件復(fù) 用。
[0029] 優(yōu)選地,所述組件容器,還用于將所述組件信息對應(yīng)拷貝到系統(tǒng)目錄中;其中,所 述系統(tǒng)目錄位于所述應(yīng)用服務(wù)器中,用于對所述業(yè)務(wù)組件的組件信息進行分類管理。
[0030] 通過本發(fā)明的業(yè)務(wù)組件加載方法、裝置及業(yè)務(wù)組件運行系統(tǒng),實現(xiàn)了業(yè)務(wù)組件和 業(yè)務(wù)基礎(chǔ)平臺松耦合,業(yè)務(wù)基礎(chǔ)平臺的升級不再對業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升 級成本。業(yè)務(wù)組件通過組件容器的加載,有各自清晰的物理界限。每個業(yè)務(wù)組件有各自的版 本,便于業(yè)務(wù)組件的管理,降低了維護成本。
【附圖說明】
[0031] 此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限定。在附圖中:
[0032] 圖1是根據(jù)相關(guān)技術(shù)的傳統(tǒng)業(yè)務(wù)基礎(chǔ)平臺結(jié)構(gòu)圖;
[0033] 圖2是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件加載方法的流程圖;
[0034] 圖3是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件加載裝置的結(jié)構(gòu)示意圖;
[0035] 圖4是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件加載裝置的第一優(yōu)選結(jié)構(gòu)示意圖;
[0036] 圖5是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件加載裝置的第二優(yōu)選結(jié)構(gòu)示意圖;
[0037] 圖6是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件運行系統(tǒng)的結(jié)構(gòu)示意圖;
[0038] 圖7是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件運行系統(tǒng)的優(yōu)選結(jié)構(gòu)示意圖;
[0039] 圖8是根據(jù)本發(fā)明實施例的組件加載流程圖。
【具體實施方式】
[0040] 下面結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整 地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒?發(fā)明的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施 例,都屬于本發(fā)明的保護范圍。
[0041] 本發(fā)明實施例提供了一種業(yè)務(wù)組件加載方法,圖2是根據(jù)本發(fā)明實施例的業(yè)務(wù)組 件加載方法的流程圖,如圖2所示,該方法包括以下步驟(步驟S202-步驟S206):
[0042]步驟S202,解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取信息包中的組件信息; 其中,該信息包是在業(yè)務(wù)組件的開發(fā)階段將業(yè)務(wù)組件的信息壓縮形成的壓縮包。
[0043]步驟S204,基于組件信息在組件容器中注冊配置文件;其中,組件容器設(shè)置于業(yè)務(wù) 基礎(chǔ)平臺上,業(yè)務(wù)基礎(chǔ)平臺與業(yè)務(wù)組件松耦合。
[0044] 步驟S206,在業(yè)務(wù)基礎(chǔ)平臺需要升級時,根據(jù)上述配置文件升級對應(yīng)的業(yè)務(wù)組件。
[0045] 通過上述方法,能夠?qū)崿F(xiàn)業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺的松耦合,業(yè)務(wù)基礎(chǔ)平臺的升 級不再對業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升級成本。業(yè)務(wù)組件通過組件容器的加載,有 各自清晰的物理界限。每個業(yè)務(wù)組件有各自的版本,便于業(yè)務(wù)組件的管理,降低了維護成 本。
[0046] 在讀取信息包中的組件信息之后,還可以將組件信息對應(yīng)拷貝到系統(tǒng)目錄中,系 統(tǒng)目錄位于與業(yè)務(wù)基礎(chǔ)平臺相連接的應(yīng)用服務(wù)器中,用于對業(yè)務(wù)組件的組件信息進行分類 管理。基于此,在組件容器中注冊配置文件時,可以方便查詢調(diào)取對應(yīng)的組件信息。
[0047] 在本實施例中,業(yè)務(wù)組件主要包括以下四個層次:菜單層、UI層、服務(wù)層、持久層。 相應(yīng)地,業(yè)務(wù)組件的組件信息主要包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組 件持久層信息。
[0048]結(jié)合上述四種組件信息,步驟S204中基于組件信息在組件容器中注冊配置文件, 主要通過以下方式實現(xiàn):讀取信息包中的組件菜單信息,根據(jù)組件菜單信息在組件容器中 注冊組件菜單權(quán)限配置文件;讀取信息包中的組件UI層信息,根據(jù)組件UI層信息在組件容 器中注冊組件UI層配置文件;讀取信息包中的組件服務(wù)層信息,根據(jù)組件服務(wù)層信息在組 件容器中注冊組件服務(wù)層配置文件;讀取信息包中的組件持久層信息,根據(jù)組件持久層信 息在組件容器中注冊組件持久層配置文件?;诖耍M件容器中加載了與各個業(yè)務(wù)組件相 關(guān)的配置文件,這樣,在業(yè)務(wù)基礎(chǔ)平臺需要升級時,可以根據(jù)配置文件升級對應(yīng)的業(yè)務(wù)組 件,不再對業(yè)務(wù)系統(tǒng)造成影響,實現(xiàn)了業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺的松耦合。
[0049] -實施例中,基于組件信息在組件容器中注冊配置文件,一般可采用以下技術(shù)實 現(xiàn):dom4 j解析技術(shù)。組件UI層配置文件至少包括:faces-conf ig. xml文件、val idate-conf ig ? xml文件、web ? xml文件;組件服務(wù)層配置文件至少包括:service ? xml文件;組件持 久層配置文件至少包括:sql-map-conf ig ? xml文件。
[0050] -實施例中,組件容器可采用技術(shù)框架JSF+Spring+Mybatis實現(xiàn),可定義如下目 錄結(jié)構(gòu): I-[組件英文名.zip] I-[組件英文名]
[0051] 卜[lib] 卜[src] |- [WcbContcnt];
[0052]其中,lib用于存放業(yè)務(wù)組件依賴的第三方j(luò)ar包。src用于存放業(yè)務(wù)組件包含的 java源代碼以及相關(guān)配置文件,WebContent用于存放業(yè)務(wù)組件包含的web資源文件。
[0053] 基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種業(yè)務(wù)組件加載裝置,可以用于 實現(xiàn)上述實施例所描述的方法,如下面的實施例所述。由于業(yè)務(wù)組件加載裝置解決問題的 原理與業(yè)務(wù)組件加載方法相似,因此業(yè)務(wù)組件加載裝置的實施可以參見業(yè)務(wù)組件加載方法 的實施,重復(fù)之處不再贅述。以下所使用的,術(shù)語"單元"或者"模塊"可以實現(xiàn)預(yù)定功能的軟 件和/或硬件的組合。盡管以下實施例所描述的系統(tǒng)較佳地以軟件來實現(xiàn),但是硬件,或者 軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。
[0054] 圖3是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件加載裝置的結(jié)構(gòu)示意圖,如圖3所示,該裝置 包括:信息處理模塊10、文件注冊模塊20、組件升級模塊30,下面對該結(jié)構(gòu)進行具體說明。
[0055] 信息處理模塊10,用于解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取信息包中 的組件信息;
[0056]文件注冊模塊20,連接至信息處理模塊10,用于基于組件信息在組件容器中注冊 配置文件;其中,組件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺上,業(yè)務(wù)基礎(chǔ)平臺與業(yè)務(wù)組件松耦合;
[0057]組件升級模塊30,連接至文件注冊模塊20,用于在業(yè)務(wù)基礎(chǔ)平臺需要升級時,根據(jù) 配置文件升級對應(yīng)的業(yè)務(wù)組件。
[0058] 通過上述裝置,能夠?qū)崿F(xiàn)業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺的松耦合,業(yè)務(wù)基礎(chǔ)平臺的升 級不再對業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升級成本。業(yè)務(wù)組件通過組件容器的加載,有 各自清晰的物理界限。每個業(yè)務(wù)組件有各自的版本,便于業(yè)務(wù)組件的管理,降低了維護成 本。
[0059] -實施例中,業(yè)務(wù)組件加載裝置還可以包括:資源拷貝模塊,用于將組件信息對應(yīng) 拷貝到系統(tǒng)目錄中;其中,系統(tǒng)目錄位于與業(yè)務(wù)基礎(chǔ)平臺相連接的應(yīng)用服務(wù)器中,用于對業(yè) 務(wù)組件的組件信息進行分類管理?;诖?,在組件容器中注冊配置文件時,可以方便查詢調(diào) 取對應(yīng)的組件信息。
[0060] 一本實施例中,業(yè)務(wù)組件主要包括以下四個層次:菜單層、UI層、服務(wù)層、持久層。 相應(yīng)地,業(yè)務(wù)組件的組件信息主要包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組 件持久層信息。
[0061] 圖4是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件加載裝置的第一優(yōu)選結(jié)構(gòu)示意圖,如圖4所 示,文件注冊模塊20可以包括:
[0062] 組件菜單權(quán)限加載單元22,用于讀取信息包中的組件菜單信息,根據(jù)組件菜單信 息在組件容器中注冊組件菜單權(quán)限配置文件;
[0063]組件UI層加載單元24,用于讀取信息包中的組件UI層信息,根據(jù)組件UI層信息在 組件容器中注冊組件UI層配置文件;
[0064]組件服務(wù)層加載單元26,用于讀取信息包中的組件服務(wù)層信息,根據(jù)組件服務(wù)層 信息在組件容器中注冊組件服務(wù)層配置文件;
[0065]組件持久層加載單元28,用于讀取信息包中的組件持久層信息,根據(jù)組件持久層 信息在組件容器中注冊組件持久層配置文件。
[0066]基于此,組件容器中加載了與各個業(yè)務(wù)組件相關(guān)的配置文件,這樣,在業(yè)務(wù)基礎(chǔ)平 臺需要升級時,可以根據(jù)配置文件升級對應(yīng)的業(yè)務(wù)組件,不再對業(yè)務(wù)系統(tǒng)造成影響,實現(xiàn)了 業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺的松耦合。
[0067]當(dāng)然,上述模塊劃分只是一種示意劃分,本發(fā)明并不局限于此。上述信息處理模塊 10還可以包括:解壓單元12和組件信息讀取單元14,如圖5所示的業(yè)務(wù)組件加載裝置的第二 優(yōu)選結(jié)構(gòu)示意圖,解壓單元12采用Java技術(shù)提供的zip解壓技術(shù)實現(xiàn),用于對業(yè)務(wù)組件的信 息包(zip包)進行解壓。組件信息讀取單元14采用dom4j技術(shù)讀取組件描述信息xml文件,用 于讀取信息包中的組件信息,解析組件信息,組件信息主要包括:組件的中文名、組件的英 文名、組件版本號、組件的包路徑、組件依賴的jar包文名、組件配置文件等。需要讀取的詳 細(xì)信息如表1所示。
[0068]表 1
[0070]組件菜單權(quán)限加載單元22用于加載組件的權(quán)限菜單xml文件,組件權(quán)限菜單xml文 件記錄組件的菜單和對應(yīng)的功能權(quán)限。加載和解析技術(shù)采用dom4j。組件菜單權(quán)限加載單元 22讀取解壓內(nèi)容(即組件信息),將其中的組件菜單信息加載到組件容器的主配置文件中。
[0071]組件UI層加載單元24用于加載組件對應(yīng)的UI配置文件,UI層采用JSF技術(shù)框架實 現(xiàn),需加載的配置文件包括 faces-conf ig ? xml、validate-conf ig ? xml、web ? xml文件。加載 和解析技術(shù)采用dom4j。組件UI層加載單元24讀取解壓內(nèi)容,將組件UI層信息加載到組件容 器的主配置文件中。
[0072]組件服務(wù)層加載單元26用于加載組件對應(yīng)的服務(wù)層配置文件,服務(wù)層采用Spring 技術(shù)框架實現(xiàn),需加載的配置文件service. xml文件。加載和解析技術(shù)采用dom4j。組件服務(wù) 層加載單元26讀取解壓內(nèi)容,將組件服務(wù)層信息加載到組件容器的主配置文件中。
[0073]組件持久層加載單元28用于加載組件對應(yīng)的持久層配置文件,持久層采用 Mybatis技術(shù)框架實現(xiàn),需加載的配置文件sql-map-conf ig. xml文件。加載和解析技術(shù)采用 dom4j。組件持久層加載單元28讀取解壓內(nèi)容,將組件持久層信息加載到組件容器的主配置 文件中。
[0074]資源拷貝模塊40用于將解壓的組件信息拷貝到符合J2EE server服務(wù)器規(guī)范的操 作系統(tǒng)目錄上,需拷貝的資源至少包括UI層java文件、服務(wù)層java文件、持久層java文件、 UI層jsp、css等web資源文件、組件需要的jar包等。
[0075]每個業(yè)務(wù)組件都有一個唯一的英文名,并以[英文名.zip]形式,將所有的組件資 源壓縮在信息包(zip包)中,例如:業(yè)務(wù)組件的英文名為component,對應(yīng)的zip包為 component?zip〇
[0076] 基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種業(yè)務(wù)組件運行系統(tǒng),可以用于 實現(xiàn)上述實施例所描述的方法,如下面的實施例所述。由于業(yè)務(wù)組件運行系統(tǒng)解決問題的 原理與業(yè)務(wù)組件加載方法相似,因此業(yè)務(wù)組件運行系統(tǒng)的實施可以參見業(yè)務(wù)組件加載方法 的實施,重復(fù)之處不再贅述。
[0077] 圖6是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件運行系統(tǒng)的結(jié)構(gòu)示意圖,如圖6所示,業(yè)務(wù)組 件運行系統(tǒng)自下而上包括:應(yīng)用服務(wù)器、業(yè)務(wù)基礎(chǔ)平臺、由多個業(yè)務(wù)組件構(gòu)成的組件系統(tǒng), 其中,組件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺上,業(yè)務(wù)基礎(chǔ)平臺與業(yè)務(wù)組件松耦合。
[0078] 組件容器,用于解壓各個業(yè)務(wù)組件的信息包,讀取信息包中的組件信息,基于組件 信息注冊配置文件;其中,配置文件用于對業(yè)務(wù)組件進行升級;還用于將組件信息對應(yīng)拷貝 到系統(tǒng)目錄中;其中,系統(tǒng)目錄位于應(yīng)用服務(wù)器中,用于對業(yè)務(wù)組件的組件信息進行分類管 理。
[0079] 業(yè)務(wù)基礎(chǔ)平臺,與組件系統(tǒng)松耦合,用于升級業(yè)務(wù)組件以實現(xiàn)軟件復(fù)用。
[0080] 通過上述業(yè)務(wù)組件運行系統(tǒng),能夠?qū)崿F(xiàn)業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺的松耦合,業(yè)務(wù) 基礎(chǔ)平臺的升級不再對業(yè)務(wù)系統(tǒng)造成影響,降低了業(yè)務(wù)系統(tǒng)升級成本。業(yè)務(wù)組件通過組件 容器的加載,有各自清晰的物理界限。每個業(yè)務(wù)組件有各自的版本,便于業(yè)務(wù)組件的管理, 降低了維護成本。
[0081] 圖7是根據(jù)本發(fā)明實施例的業(yè)務(wù)組件運行系統(tǒng)的優(yōu)選結(jié)構(gòu)示意圖,如圖7所示,應(yīng) 用服務(wù)器可以包括:基礎(chǔ)軟件環(huán)境和基礎(chǔ)硬件平臺。其中,基礎(chǔ)軟件環(huán)境可以是J2EE Server,基礎(chǔ)硬件平臺可以實現(xiàn)網(wǎng)絡(luò)交互功能、計算機功能、存儲功能等。
[0082]為了對本發(fā)明的技術(shù)方案進行更為清楚的解釋,下面結(jié)合具體的實施例來進行說 明,然而值得注意的是該實施例僅是為了更好地說明本發(fā)明,并不構(gòu)成對本發(fā)明不當(dāng)?shù)南?定。
[0083]圖8是根據(jù)本發(fā)明實施例的組件加載流程圖,如圖8所示,該流程包括以下步驟(步 驟 S801-步驟 S807):
[0084]步驟S801,將業(yè)務(wù)組件發(fā)布到組件容器。業(yè)務(wù)組件主要是指基于J2EE規(guī)范的業(yè)務(wù) 代碼的集合,這些代碼分為四個層次,包括:組件菜單信息、組件UI層代碼資源、組件服務(wù)層 代碼資源、組件持久層代碼資源。
[0085]步驟S802,解壓業(yè)務(wù)組件的信息包,讀取并記錄信息包中的組件信息。
[0086]步驟S803,讀取組件菜單信息,將組組件菜單信息注冊到組件容器的主菜單權(quán)限 配置文件中。
[0087] 步驟S804,讀取組件UI層代碼資源,將代碼資源拷貝到符合J2EE server服務(wù)器規(guī) 范的操作系統(tǒng)目錄上,將組件UI層配置文件注冊到組件容器的主UI層配置文件中。
[0088]步驟S805,讀取組件服務(wù)層代碼資源,將代碼資源拷貝到符合J2EE server服務(wù)器 規(guī)范的操作系統(tǒng)目錄上,將組件服務(wù)層配置文件注冊到組件容器的主服務(wù)層配置文件中。 [0089] 步驟S806,讀取組件持久層代碼資源,將代碼資源拷貝到符合J2EE server服務(wù)器 規(guī)范的操作系統(tǒng)目錄上,將組件持久層配置文件注冊到組件容器的主持久層配置文件中。
[0090] 步驟S807,該流程結(jié)束。
[0091] 本發(fā)明在原有的業(yè)務(wù)基礎(chǔ)平臺的基礎(chǔ)上,增加了組件容器,通過組件容器加載技 術(shù),有效的解決了傳統(tǒng)平臺遇到的業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺緊耦合問題。主要達到了以下 效果:
[0092] 1、業(yè)務(wù)組件和業(yè)務(wù)基礎(chǔ)平臺松耦合,業(yè)務(wù)基礎(chǔ)平臺的升級不影響業(yè)務(wù)系統(tǒng),降低 了業(yè)務(wù)系統(tǒng)升級成本;
[0093] 2、隨著業(yè)務(wù)的發(fā)展,系統(tǒng)共性部分不斷增加,雖然業(yè)務(wù)基礎(chǔ)平臺變的龐大,但業(yè)務(wù) 系統(tǒng)可裁剪不必要的組件,有效的控制了代碼量,提高了業(yè)務(wù)系統(tǒng)性能;
[0094] 3、業(yè)務(wù)組件通過業(yè)務(wù)組件容器的加載,有各自清晰的物理界限。每個業(yè)務(wù)組件有 各自的版本,便于管理,降低了維護成本。
[0095] 流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括 一個或更多個用于實現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部 分,并且本發(fā)明的優(yōu)選實施方式的范圍包括另外的實現(xiàn),其中可以不按所示出或討論的順 序,包括根據(jù)所涉及的功能按基本同時的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明 的實施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
[0096] 應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實現(xiàn)。在上述 實施方式中,多個步驟或方法可以用存儲在存儲器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件 或固件來實現(xiàn)。例如,如果用硬件來實現(xiàn),和在另一實施方式中一樣,可用本領(lǐng)域公知的下 列技術(shù)中的任一項或他們的組合來實現(xiàn):具有用于對數(shù)據(jù)信號實現(xiàn)邏輯功能的邏輯門電路 的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(PGA),現(xiàn)場 可編程門陣列(FPGA)等。
[0097]本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實現(xiàn)上述實施例方法攜帶的全部或部分步 驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲于一種計算機可讀存儲介 質(zhì)中,該程序在執(zhí)行時,包括方法實施例的步驟之一或其組合。
[0098] 此外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理模塊中,也可以 是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個模塊中。上述集成的模 塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。所述集成的模塊如 果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,也可以存儲在一個計算機 可讀取存儲介質(zhì)中。
[0099] 在本說明書的描述中,參考術(shù)語"一個實施例"、"一些實施例"、"示例"、"具體示 例"、或"一些示例"等的描述意指結(jié)合該實施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特 點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不 一定指的是相同的實施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點可以在任何 的一個或多個實施例或示例中以合適的方式結(jié)合。
[0100]以上所述的具體實施例,對本發(fā)明的目的、技術(shù)方案和有益效果進行了進一步詳 細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實施例而已,并不用于限定本發(fā)明的保 護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應(yīng)包含在本 發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1. 一種業(yè)務(wù)組件加載方法,其特征在于,包括: 解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信息; 基于所述組件信息在所述組件容器中注冊配置文件;其中,所述組件容器設(shè)置于業(yè)務(wù) 基礎(chǔ)平臺上,所述業(yè)務(wù)基礎(chǔ)平臺與所述業(yè)務(wù)組件松耦合; 在所述業(yè)務(wù)基礎(chǔ)平臺需要升級時,根據(jù)所述配置文件升級對應(yīng)的業(yè)務(wù)組件。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述業(yè)務(wù)組件包括四個層次:菜單層、用戶界面UI層、服務(wù)層、持久層; 所述組件信息包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組件持久層信息。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,基于所述組件信息在所述組件容器中注冊 配置文件,包括: 讀取所述信息包中的所述組件菜單信息,根據(jù)所述組件菜單信息在所述組件容器中注 冊組件菜單權(quán)限配置文件; 讀取所述信息包中的所述組件UI層信息,根據(jù)所述組件UI層信息在所述組件容器中注 冊組件UI層配置文件; 讀取所述信息包中的所述組件服務(wù)層信息,根據(jù)所述組件服務(wù)層信息在所述組件容器 中注冊組件服務(wù)層配置文件; 讀取所述信息包中的所述組件持久層信息,根據(jù)所述組件持久層信息在所述組件容器 中注冊組件持久層配置文件。4. 根據(jù)權(quán)利要求3所述的方法,其特征在于, 所述組件UI層配置文件至少包括:faces-conf ig · xml文件、val idate-conf ig · xml文 件、web. xml文件; 所述組件服務(wù)層配置文件至少包括:service. xml文件; 所述組件持久層配置文件至少包括:sql-map-conf ig · xml文件。5. 根據(jù)權(quán)利要求1所述的方法,其特征在于, 基于所述組件信息在所述組件容器中注冊配置文件,采用以下技術(shù)實現(xiàn):dom4j解析技 術(shù)。6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,讀取所述信息包中的組件信息之后,所述 方法還包括: 將所述組件信息對應(yīng)拷貝到系統(tǒng)目錄中;其中,所述系統(tǒng)目錄位于與所述業(yè)務(wù)基礎(chǔ)平 臺相連接的應(yīng)用服務(wù)器中,用于對所述業(yè)務(wù)組件的組件信息進行分類管理。7. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述信息包是在所述業(yè)務(wù)組件的開發(fā)階段 將業(yè)務(wù)組件的信息壓縮形成的壓縮包。8. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述組件信息至少包括以下之一:組件中 文名稱、組件英文名稱、組件版本號、組件的包路徑、組件依賴的jar包文名、待注冊的配置 文件、菜單權(quán)限文件。9. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述組件容器定義如下目錄結(jié)構(gòu): I-[組件英文名.zip] -[組件英文名] -[lib] -[src] -[WebContent]; 其中,lib用于存放業(yè)務(wù)組件依賴的第三方j(luò)ar包,src用于存放業(yè)務(wù)組件包含的java源 代碼以及相關(guān)配置文件,WebContent用于存放業(yè)務(wù)組件包含的web資源文件。10. -種業(yè)務(wù)組件加載裝置,其特征在于,包括: 信息處理模塊,用于解壓發(fā)布到組件容器的業(yè)務(wù)組件的信息包,讀取所述信息包中的 組件信息; 文件注冊模塊,用于基于所述組件信息在所述組件容器中注冊配置文件;其中,所述組 件容器設(shè)置于業(yè)務(wù)基礎(chǔ)平臺上,所述業(yè)務(wù)基礎(chǔ)平臺與所述業(yè)務(wù)組件松耦合; 組件升級模塊,用于在所述業(yè)務(wù)基礎(chǔ)平臺需要升級時,根據(jù)所述配置文件升級對應(yīng)的 業(yè)務(wù)組件。11. 根據(jù)權(quán)利要求10所述的裝置,其特征在于, 所述業(yè)務(wù)組件包括四個層次:菜單層、用戶界面UI層、服務(wù)層、持久層; 所述組件信息包括:組件菜單信息、組件UI層信息、組件服務(wù)層信息、組件持久層信息。12. 根據(jù)權(quán)利要求11所述的裝置,其特征在于,所述文件注冊模塊包括: 組件菜單權(quán)限加載單元,用于讀取所述信息包中的所述組件菜單信息,根據(jù)所述組件 菜單信息在所述組件容器中注冊組件菜單權(quán)限配置文件; 組件UI層加載單元,用于讀取所述信息包中的所述組件UI層信息,根據(jù)所述組件UI層 信息在所述組件容器中注冊組件UI層配置文件; 組件服務(wù)層加載單元,用于讀取所述信息包中的所述組件服務(wù)層信息,根據(jù)所述組件 服務(wù)層信息在所述組件容器中注冊組件服務(wù)層配置文件; 組件持久層加載單元,用于讀取所述信息包中的所述組件持久層信息,根據(jù)所述組件 持久層信息在所述組件容器中注冊組件持久層配置文件。13. 根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述裝置還包括: 資源拷貝模塊,用于將所述組件信息對應(yīng)拷貝到系統(tǒng)目錄中;其中,所述系統(tǒng)目錄位于 與所述業(yè)務(wù)基礎(chǔ)平臺相連接的應(yīng)用服務(wù)器中,用于對所述業(yè)務(wù)組件的組件信息進行分類管 理。14. 一種業(yè)務(wù)組件運行系統(tǒng),其特征在于,所述系統(tǒng)自下而上包括:應(yīng)用服務(wù)器、業(yè)務(wù)基 礎(chǔ)平臺、由多個業(yè)務(wù)組件構(gòu)成的組件系統(tǒng);其中,所述業(yè)務(wù)基礎(chǔ)平臺包括組件容器; 所述組件容器,用于解壓所述各個業(yè)務(wù)組件的信息包,讀取所述信息包中的組件信息, 基于所述組件信息注冊配置文件;其中,所述配置文件用于對所述業(yè)務(wù)組件進行升級; 所述業(yè)務(wù)基礎(chǔ)平臺,與所述組件系統(tǒng)松耦合,用于升級所述業(yè)務(wù)組件以實現(xiàn)軟件復(fù)用。15. 根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于, 所述組件容器,還用于將所述組件信息對應(yīng)拷貝到系統(tǒng)目錄中;其中,所述系統(tǒng)目錄位 于所述應(yīng)用服務(wù)器中,用于對所述業(yè)務(wù)組件的組件信息進行分類管理。
【文檔編號】G06F9/44GK105893045SQ201610197297
【公開日】2016年8月24日
【申請日】2016年3月31日
【發(fā)明人】張永福, 潘潤紅, 付朋輝, 呂鋒, 馮慶
【申請人】金電技術(shù)開發(fā)中心