??? 近年來,IT行業(yè)技術(shù)方向變幻莫測,技術(shù)發(fā)展一日千里,能正確理解技術(shù)、運(yùn)用技術(shù)為企業(yè)構(gòu)建解決方案的人員為數(shù)不多,而在實(shí)際的項(xiàng)目的需求中又要求在盡可能短的時間內(nèi)滿足用戶的復(fù)雜需求,這樣導(dǎo)致一個應(yīng)用系統(tǒng)" title="應(yīng)用系統(tǒng)">應(yīng)用系統(tǒng)很難在效率、穩(wěn)定性、易維護(hù)性方面取得最佳平衡。UniEAP正是基于這樣一種考慮而構(gòu)建的一個基于Web等多種接入方式的三層結(jié)構(gòu)的分布式對象模型系統(tǒng)。我們的目標(biāo)是,使應(yīng)用系統(tǒng)的設(shè)計(jì)和開發(fā)人員從激烈變化的“技術(shù)洪水”中解放出來,避免重復(fù)性的勞動,避免不必要的代碼維護(hù)和升級,集中精力了解用戶需求,搞好業(yè)務(wù)系統(tǒng)的設(shè)計(jì)和開發(fā)。
??? J2EE作為企業(yè)級應(yīng)用的完整解決方案,為應(yīng)用系統(tǒng)提供了跨平臺的可移植性, 開放性和可擴(kuò)展性,同時也為創(chuàng)建Internet和n-tier應(yīng)用提供了底層的技術(shù)架構(gòu)。因此,J2EE在企業(yè)高端解決方案中有著廣泛的應(yīng)用。但是,Java和J2EE也并不是“銀彈”,在不理解或者沒有經(jīng)驗(yàn)的情況下,有可能錯誤的使用并構(gòu)造帶有很多問題的應(yīng)用,這將是一個災(zāi)難。
??? UniEAP平臺面向業(yè)務(wù),為應(yīng)用系統(tǒng)提供一個滿足需求的分布式企業(yè)核心應(yīng)用支撐平臺,保證安全高速地開發(fā)系統(tǒng),平臺的開發(fā)遵循業(yè)界標(biāo)準(zhǔn),具有擴(kuò)展(開放)性強(qiáng)、高強(qiáng)壯性、高穩(wěn)定性,屏蔽業(yè)務(wù)開發(fā)人員對基礎(chǔ)技術(shù)的了解,促進(jìn)業(yè)務(wù)模塊的再利用,能針對用戶需求在多種環(huán)境下應(yīng)用。面向未來,UniEAP平臺同時保證:技術(shù)的變化不會影響業(yè)務(wù)模型,業(yè)務(wù)的變化通過對系統(tǒng)的配置來實(shí)現(xiàn)。
2 體系結(jié)構(gòu)及特點(diǎn)
體系架構(gòu):UniEAP在J2EE的基礎(chǔ)上采用分布式體系結(jié)構(gòu)技術(shù),大大減小了項(xiàng)目的實(shí)施成本。平臺采用的多應(yīng)用支持技術(shù)、Web事件機(jī)制、對象持久化技術(shù)、負(fù)載均衡" title="負(fù)載均衡">負(fù)載均衡等技術(shù),大大增加了平臺的可配置性,可擴(kuò)展性。同時,UniEAP平臺支持主流應(yīng)用服務(wù)器" title="應(yīng)用服務(wù)器">應(yīng)用服務(wù)器和中間件產(chǎn)品,具有開發(fā)周期短,質(zhì)量高的特點(diǎn)。它是一個支持B/S模式應(yīng)用開發(fā)的通用框架和平臺,運(yùn)行在J2EE兼容的應(yīng)用服務(wù)器之上。
.UI管理層是基于WebServer和Servlet來實(shí)現(xiàn)的。客戶端的請求通過Web協(xié)議傳給服務(wù)器端的WebServer, WebServer再將其中的Servlet請求傳給Servlet 容器, Servlet容器再調(diào)用UniEAP的入口Servlet,即各種Listener, Listner再將各類請求轉(zhuǎn)變?yōu)榻y(tǒng)一的UniEAP支持的事件格式,傳遞給事件響應(yīng)和處理系統(tǒng),由該機(jī)構(gòu)根據(jù)事件的接受者找到相應(yīng)的UIM層的窗口對象,再將請求交由該對象來處理。
.業(yè)務(wù)層的業(yè)務(wù)組件根據(jù)需要調(diào)用對象持久化層的數(shù)據(jù)訪問接口訪問數(shù)據(jù)。
.對象持久化層提供一組訪問數(shù)據(jù)庫的標(biāo)準(zhǔn)接口,用于存儲指定的業(yè)務(wù)數(shù)據(jù)。
.Listener,處理各種終端協(xié)議的機(jī)構(gòu),同時產(chǎn)生統(tǒng)一的事件。
.Translator,將業(yè)務(wù)處理的結(jié)果,轉(zhuǎn)換為各種終端支持的結(jié)果后傳遞給終端。
??? UniEAP的對象關(guān)系模型(請見圖2)形象地描述了其對象間的關(guān)系,UniEAP平臺的設(shè)計(jì)是分層的,層與層之間通過接口進(jìn)行調(diào)用;同時在各層內(nèi)又都是面向?qū)ο蟮?,各層?fù)責(zé)管理自已的對象,而對象與對象之間又是互相關(guān)聯(lián)的,這種關(guān)聯(lián)關(guān)系將各層的對象貫穿在一起,而OP層不但將各對象的屬性持久化到數(shù)據(jù)庫,同時也持久化了對象間的關(guān)系,從而使整個系統(tǒng)成為一個基于對象的,可配置的,靈活的應(yīng)用系統(tǒng)。
??? 從圖2可以看出,BO對象是系統(tǒng)的核心,向下,BO的屬性與數(shù)據(jù)庫中一個或多個表的字段對應(yīng);向上,BO的屬性通過Panel來顯示。
?
界面層:UniEAP界面成采用了J2EE的JSP和Servlet的技術(shù)。平臺定義了系統(tǒng)的界面模型,它是對實(shí)際用戶界面的抽象,界面模型如右圖所示。其中:
Panel:用戶界面元素的容器,是用戶與系統(tǒng)交互的基本單元;
View:應(yīng)用系統(tǒng)業(yè)務(wù)組件的視圖,是界面上相關(guān)Panel的容器;
Child Menu:相關(guān)View之間的導(dǎo)航工具,每個菜單項(xiàng)與一個View對應(yīng),用于在某個功能組的各子模塊間導(dǎo)航,每個功能子模塊都與一個View相對應(yīng);
Root Menu:應(yīng)用系統(tǒng)不同功能組之間的導(dǎo)航工具,用于在應(yīng)用的Child Menu間導(dǎo)航;
Application:一個應(yīng)用系統(tǒng)的完整表現(xiàn),是Root Menu、Chile Menu和View等界面組件的容器。
業(yè)務(wù)層:UniEAP定義了平臺的業(yè)務(wù)模型組件規(guī)范,描述為Business Object,以下簡稱BO。我們需要將業(yè)務(wù)邏輯、數(shù)據(jù)等包裝成商業(yè)對象BO,并利用BOMA(通過工作流技術(shù)把多個BO和一些人的活動連接成相對復(fù)雜的商業(yè)對象)來完成復(fù)雜業(yè)務(wù)。業(yè)務(wù)層主要功能包括負(fù)載均衡,調(diào)用代理自動生成,業(yè)務(wù)對象生存期管理。
數(shù)據(jù)層:數(shù)據(jù)層是對應(yīng)用數(shù)據(jù)源的訪問功能的一種抽象,數(shù)據(jù)層支持以下特性。在實(shí)現(xiàn)上采用了采用的J2EE的JDBC和JCA等技術(shù)。
特性? |
說明? |
對象的批量操作? |
可一次讀取、修改、刪除多個對象。? |
對象的級聯(lián)操作? |
在對主對象進(jìn)行讀取、刪除、復(fù)制等操作時,可以自動對與它相關(guān)聯(lián)的對象進(jìn)行相應(yīng)的操作。? |
事務(wù)處理能力? |
提供統(tǒng)一的基于J2EE的分布式事務(wù)處理功能。? |
支持多種數(shù)據(jù)庫? |
可以支持目前比較流行的幾種關(guān)系數(shù)據(jù)庫系統(tǒng)。? |
支持多個數(shù)據(jù)源? |
在同一個系統(tǒng)中,可以同時訪問不同的數(shù)據(jù)源,各個對象可以來自不同的數(shù)據(jù)源。? |
連接池管理? |
數(shù)據(jù)庫連接的共享資源池管理能力。? |
業(yè)務(wù)對象可定制性? |
在系統(tǒng)運(yùn)行期增加業(yè)務(wù)對象的定義和修改業(yè)務(wù)對象的屬性。? |
擴(kuò)展性? |
允許二次開發(fā)商提供特殊的Persistence訪問類。? |
產(chǎn)品特點(diǎn):
分布式體系架構(gòu):UniEAP采用分布、并行的處理方式,大大減小平臺的實(shí)施成本;
支持多應(yīng)用開發(fā):UniEAP平臺支持在一個Web應(yīng)用下構(gòu)造多個業(yè)務(wù)應(yīng)用的概念;并且不同的業(yè)務(wù)應(yīng)用擁有屬于自已的資源(包括界面資源和業(yè)務(wù)對象資源和數(shù)據(jù)源);
負(fù)載均衡技術(shù):UniEAP的業(yè)務(wù)對象支持多種訪問方式(如本地、J2EE的RMI、SOAP等),支持分布式調(diào)用。當(dāng)具體調(diào)用發(fā)生時,由調(diào)度管理器決定調(diào)用的目標(biāo),達(dá)到負(fù)載均衡的目的;
遵循業(yè)界標(biāo)準(zhǔn):為了保證系統(tǒng)的良好開放性及代碼復(fù)用率,整個UniEAP的開發(fā)遵循如下業(yè)界標(biāo)準(zhǔn):JAVA 1.3/1.4, JSP 1.0/1.1, Servlet 2.2/2.3, XML 2.0, EJB 2.0, JDBC2.0,SOAP1.1;
Web事件響應(yīng)機(jī)制:提供Web請求的事件響應(yīng)機(jī)制,簡化Web應(yīng)用的開發(fā);事件主要發(fā)生在Application,Menu,View,Panel上,其中尤其以Panel上的事件最復(fù)雜。右圖給出事件傳遞及轉(zhuǎn)換的一個圖形表示:
支持主流應(yīng)用服務(wù)器、中間件產(chǎn)品和數(shù)據(jù)庫:BEA? Weblogic/Tuxdeo,IBM?? Websphere/CICS,Tomcat, Oracle,SyBase,…
提供大量的功能組件:包括工作流,日志,異常處理" title="異常處理">異常處理,打印,報(bào)表等。
UniEAP平臺功能介紹
可外掛式組織機(jī)構(gòu):UniEAP 支持外掛式組織機(jī)構(gòu)模塊功能,即不僅可以使用 UniEAP 提供的組織機(jī)構(gòu)模塊,也可以根據(jù)開發(fā)者自身的需要,按照約定的接口規(guī)范,自己重寫一套組織機(jī)構(gòu)處理模塊。這一功能,為復(fù)用舊有系統(tǒng)中組織機(jī)構(gòu)信息提供了方便。
??? 分布式事務(wù)支持:UniEAP 提供對分布式事務(wù)的支持,極大簡化二次開發(fā)者進(jìn)行分布式事務(wù)處理的工作量。它使得對我們以統(tǒng)一的方式和配置的方法來處理分布式事務(wù)。
分級日志管理:UniEAP 提供了一套完整的可配置可擴(kuò)展的日志輸出機(jī)制,可根據(jù)不同的類定義不同的日志輸出類型,每一種輸出類型規(guī)定了日志輸出的特定形式,包括輸出介質(zhì)、輸出格式、優(yōu)先級別等幾個方面。優(yōu)先級別包括由低到高的五個級別:DEBUG、INFO、WARN、ERROR和FATAL,用于描述日志的重要程度。有五種方法來輸出日志信息,分別對應(yīng)以上的五個級別。當(dāng)輸出方法的級別大于等于日志類型的級別時,該日志信息被輸出,否則被屏蔽。
通用異??刂葡到y(tǒng):英文“Universal Exception Control System”,簡稱為UniECS。
??? 主要有以下幾個功能:
統(tǒng)一的異常處理模式:在每一個catch塊中只需調(diào)用相同或相似的語句來處理異常。
不同的類、不同的方法可以選擇不同的處理方案:UniECS有幾種缺省的異常處理方案,用戶也可以自定義異常處理方案。每一種異常處理方案都有一個唯一的用來標(biāo)識的方案碼。在配置文件中,可以對不同的類、不同的方法設(shè)定采用不同的方案碼,以表示對他們采用不同的異常處理方案。
可自定義異常輸出方案:用戶可以舍棄UniECS缺省的采用Log4j的異常信息輸出方式,而自定義類實(shí)現(xiàn)ExcLog來進(jìn)行異常輸出。
多業(yè)務(wù)" title="多業(yè)務(wù)">多業(yè)務(wù)應(yīng)用的支持:用戶通過使用UniEAP,可以建立多業(yè)務(wù)應(yīng)用,并且時多個業(yè)務(wù)應(yīng)用允許在同一個Web服務(wù)上。用戶可以通過配置工具管理各個業(yè)務(wù)應(yīng)用的運(yùn)行狀態(tài),并且當(dāng)應(yīng)用狀態(tài)改變時會自動的釋放相應(yīng)占用的各種資源。不同的業(yè)務(wù)應(yīng)用可以根據(jù)需要創(chuàng)建自己的Panel、BO以及基于UniEAP的各種資源。
權(quán)限管理:包括模塊級的權(quán)限管理(Rolesbility)、數(shù)據(jù)級的權(quán)限管理(Visibility)、操作級的權(quán)限管理(Operationbility)三方面。其中:
Rolesbility對用戶所能訪問的菜單和視圖導(dǎo)航條進(jìn)行限制,達(dá)到模塊級控制。
Visibility對用戶所能訪問的視圖的記錄集進(jìn)行限制,達(dá)到數(shù)據(jù)級的控制。
Operationbility對用戶所能接觸的操作界面進(jìn)行限制,從而達(dá)到操作級的權(quán)限控制。
配置工具:“UniEAP配置工具”是UniEAP系統(tǒng)的輔助開發(fā)工具,她通過友善的界面與完整的功能使用戶能夠在一個統(tǒng)一的模式下輕松的對企業(yè)的應(yīng)用進(jìn)行配置。典型的界面如下:
?? “UniEAP工作臺”工具具有以下特點(diǎn):1)配置的集成度高;2)支持多應(yīng)用的定制;3)支持各種界面組件的可視化配置;4)支持?jǐn)?shù)據(jù)源的定制;5)提供組織機(jī)構(gòu)配置和權(quán)限配置;6)支持遠(yuǎn)程配置服務(wù)器的自動查找和配置正確性檢驗(yàn);7)采用純Java技術(shù)開發(fā),不受開發(fā)平臺和系統(tǒng)語言環(huán)境的限制,可以應(yīng)用在多種開發(fā)平臺并支持多語言環(huán)境。
總結(jié)
??? J2EE的廣泛應(yīng)用已經(jīng)使得眾多用戶受益,在J2EE的基礎(chǔ)上,UniEAP平臺的產(chǎn)生,更加加快了企業(yè)級應(yīng)用系統(tǒng)的構(gòu)建過程,并使得系統(tǒng)質(zhì)量進(jìn)一步提升。
??? 目前,UniEAP的用戶已分布在很多應(yīng)用領(lǐng)域,包括:上海通用汽車客服中心,海爾綜合信息系統(tǒng)及客服中心,華夏基金網(wǎng)上交易系統(tǒng),安徽煙草管理系統(tǒng)、南海社保、遼寧聯(lián)通、山西聯(lián)通、安徽聯(lián)通客戶服務(wù)中心等,并逐漸向關(guān)鍵業(yè)務(wù)領(lǐng)域滲透。