董久敏,楊 旭
(煙臺職業(yè)學(xué)院 信息工程系,煙臺 264670)
J2EE(Java 2 Platform Enterprise Edition)是目前最復(fù)雜、最成熟、最有影響力的企業(yè)應(yīng)用模型。作為一種分布式計算的結(jié)構(gòu)體系,J2EE在事務(wù)管理[1]、持久性、安全性、組件的多實(shí)例管理等方面提供了強(qiáng)大的支持。本文描述了網(wǎng)上辦公系統(tǒng)的系統(tǒng)結(jié)構(gòu)、軟件架構(gòu)以及系統(tǒng)實(shí)現(xiàn)的一些關(guān)鍵技術(shù)。
Web Services是一個應(yīng)用組件,它邏輯性的為其他應(yīng)用程序提供數(shù)據(jù)與服務(wù)。各應(yīng)用程序通過網(wǎng)絡(luò)協(xié)議和規(guī)定的一些標(biāo)準(zhǔn)數(shù)據(jù)格式(Http,XML,Soap)來訪問Web Services,通過Web Services內(nèi)部執(zhí)行得到所需結(jié)果。如果正提供一個服務(wù),就需要將其描述給其他人;如果想使用一個服務(wù),就需要將所尋找的服務(wù)描述出來。
由于CMP在大規(guī)模操作時占用系統(tǒng)資源很多且運(yùn)行速度慢,因此對需要大量訪問的功能模塊,采用了在應(yīng)用層的Java Bean 通過JNDI(Java Naming and Directory Interface,Java 命名和目錄接口)查找數(shù)據(jù)庫連接池獲取連接來訪問數(shù)據(jù)的方式實(shí)現(xiàn)[2]。
2.2.1 權(quán)限管理系統(tǒng)的實(shí)體有[3]
用戶、角色、模塊、功能,這四個實(shí)體之間的關(guān)系如圖1所示。
圖1 權(quán)限管理模塊 E-R圖
2.2.2 公文管理系統(tǒng)的實(shí)體有
公文(Document)、回復(fù)函(Return letter)、附件(Accessories)、部門(Department),公文附件Accessories完全依賴于特定的公文Document而存在,因此建模為弱實(shí)體;回函Return letter是部門針對特定的公文Document作出的答復(fù),Document是Return letter的概化。4個實(shí)體的關(guān)系如圖2所示。其它ER圖,本文不再一一列舉。
2.3.1 權(quán)限管理模塊
主要完成授予用戶權(quán)限?;诮巧脑L問控制RBAC(Role-Based Access Control)授權(quán)模型,訪問控制策略體現(xiàn)在RBAC模型里是用戶-角色、角色-權(quán)限和角色-角色之間的關(guān)系。采用RBAC的最大好處在于將用戶和其具有的權(quán)限分離開來,管理員可以將用戶的授權(quán)和權(quán)限的劃分進(jìn)行分別處理,通過給角色授予權(quán)限,給用戶分配角色來實(shí)現(xiàn)用戶的授權(quán)操作[4]。如圖3所示。
圖2 公文管理模塊ER圖
圖3 權(quán)限分配模型
2.3.2 公告管理模塊
定期公告近期的重要活動、大事記。管理員具有最高的權(quán)限,可以進(jìn)行公告的添加、修改、刪除。
2.3.3 公文管理模塊
由Word插件實(shí)現(xiàn)公文內(nèi)容排版;公文經(jīng)相關(guān)領(lǐng)導(dǎo)批準(zhǔn);應(yīng)用商業(yè)插件將公文由Word文件轉(zhuǎn)換成PDF文件;使用SmartUpload組件實(shí)現(xiàn)公文及其附件的上傳;將公文發(fā)送到相關(guān)的部門;接收公文部門反饋簽收信息、回函。
2.3.4 電子郵件管理模塊
選擇接收Email的部門,可以實(shí)現(xiàn)帶附件電子郵件的群發(fā)。
業(yè)務(wù)邏輯層主要采用EJB3.0技術(shù)實(shí)現(xiàn),根據(jù)不同的OA功能,連接后臺管理信息數(shù)據(jù)庫,完成對基礎(chǔ)管理信息的分析和處理,實(shí)現(xiàn)不同的管理功能邏輯,并通過對應(yīng)的EJB組件為其它功能或其它應(yīng)用程序提供運(yùn)行時的調(diào)用接口。
每個功能模塊包含一個或多個業(yè)務(wù)組件,每個業(yè)務(wù)組件由下列幾部分組成,兩個HOME接口(本地和遠(yuǎn)程),兩個業(yè)務(wù)接口(本地和遠(yuǎn)程),一個實(shí)現(xiàn)了這些接口的主類,和一個部署描述符表(DD)。其中HOME接口定義了一些控制該組件生命周期的一些方法,例如:CREATE(),REMOVE()等,而業(yè)務(wù)接口中定義了該業(yè)務(wù)組件功能實(shí)現(xiàn)所需要的一系列業(yè)務(wù)方法,所有這些方法的定義都被映射到主類對各個方法的具體實(shí)現(xiàn)中,其它的業(yè)務(wù)組件或應(yīng)用程序客戶端通過這些接口對該組件進(jìn)行調(diào)用,本地調(diào)用過程跟通常的單機(jī)調(diào)用過程類似,這里不再贅述。
用Session Facade 封裝對相關(guān)數(shù)據(jù)的操作。在J2EE的實(shí)際應(yīng)用中,經(jīng)常會遇到對多個相關(guān)數(shù)據(jù)項(xiàng)目進(jìn)行一系列的操作,而每個數(shù)據(jù)項(xiàng)目封裝在各自的Entity Bean 中的情況。例如:在網(wǎng)上辦公系統(tǒng)中,要查詢一個用戶的權(quán)限,需要訪問用戶信息表、角色信息表、用戶角色信息表、模塊信息表、功能信息表、權(quán)限信息表、角色權(quán)限信息表等等。通常這些信息都封裝在獨(dú)立的Entity Bean中。在處理這類情況時。如果讓客戶程序直接與這些Entity Bean交互,在其上進(jìn)行一系列的操作,那么即使這些Entity Bean在同一個服務(wù)器上,客戶程序也要進(jìn)行多次遠(yuǎn)程調(diào)用才能完成操作,這樣的設(shè)計方式顯然會造成系統(tǒng)性能的低下。為此,我們可以采用Session Facade的設(shè)計模式,在客戶程序和Entity Bean之間引入一個叫做Session Facade的Session Bean,由Session Facade封裝對多個Entity Bean的一系列操作,并對外提供統(tǒng)一接口,客戶程序提供該Session Facade的接口進(jìn)行操作。這樣以來,客戶程序只需一次遠(yuǎn)程調(diào)用就可以完成操作,從而可以大大提高性能[5]。
網(wǎng)上辦公系統(tǒng)將 EJB3.0、Web Services、JBOSS5.0等新技術(shù)完整地結(jié)合構(gòu)建基于J2EE的Web應(yīng)用系統(tǒng),并采用緩存技術(shù)、連接池技術(shù)優(yōu)化系統(tǒng)性能;系統(tǒng)可以跨平臺穩(wěn)定運(yùn)行,應(yīng)用MDB將打印等耗時長的操作實(shí)現(xiàn)異步處理,系統(tǒng)響應(yīng)時間迅速,高效可靠地運(yùn)行。
[1] 微軟公司,Web Services 設(shè)計[M].北京:高等教育出版社,2008:86-99.
[2] 陳天河,Hibernate項(xiàng)目開發(fā)[M].北京:電子工業(yè)出版社,2009:393-398
[3] 李振捷,JSP網(wǎng)站開發(fā)[M].北京:電子工業(yè)出版社,2009:410-416
[4] 陳志泊,數(shù)據(jù)庫原理及應(yīng)用教程[M].北京:人民郵電出版社,2008:230-238
[5] Rima Patel Striganesh,Mastering EnterPrise JavaBean3.0[M].北京:電子工業(yè)出版社,2010:128-130.