摘 要:基于J2EE的企業(yè)應用系統分為表現層、業(yè)務層、持久層、EIS層。輕量級開發(fā)在遵循這種開發(fā)規(guī)范的基礎上以Spring為容器,充分利用Struts和Hibernate的技術優(yōu)勢,來滿足系統快速開發(fā)、及時維護和動態(tài)擴展的需要。采用SSH技術針對企業(yè)數字公文流轉系統的復雜性進行分解,分析SSH技術之間最佳的整合方案,實現了公文流轉的業(yè)務功能和系統結構的輕量模式,使系統具有較強的靈活性、可維護性和可擴展性。
關鍵詞:輕量級開發(fā);輕量級架構SSH;公文流轉;J2EE
中圖分類號:TP319 文獻標識碼:B
文章編號:1004-373X(2008)10-027-03
Design of Digital Document Flow System Based on SSH
LI Peng,CHAO Ainong,LIU Mengqiang
(Air Force Engineering University,Xi′an,710038,China)
Abstract:Enterprise′s application system based on J2EE is devided into presentation layer,business layer,persistence layer and EIS layer.Following the regular,lightweight development adopts the container Spring and takes advantage of Struts and Hibernate to meet the needs of quick development,timely maintenance and dynamic expandedness.The SSH is adopted to resolve the complicacy of the digital document flow system.It analyses the best conformity scheme of SSH,realizes business functions of document flow and the lightweight structure of the system to make it more flexible,maintainable and extensible.
Keywords:lightweight development;lightweight frame SSH;document flow;J2EE
J2EE為企業(yè)網絡辦公自動化系統提供一種基于B/S結構的開發(fā)規(guī)范,是開發(fā)企業(yè)管理信息系統的基礎平臺。但隨著企業(yè)信息化的發(fā)展,業(yè)務數據不斷增加,新的需求不斷產生,導致企業(yè)數字公文系統的復雜程度迅速上升,使整個系統的開發(fā)、維護與擴展工作變得十分困難,不利于企業(yè)未來發(fā)展的需要。因此迫切需要一種優(yōu)化的架構方案來分解系統的復雜,簡化應用開發(fā)的過程和系統維護的工作。
1 SSH技術簡介
SSH(Spring+Struts+Hibernate)是基于J2EE平臺的一種輕量級架構,在網絡信息系統開發(fā)上具有強大的優(yōu)勢:首先Spring輕量級容器以插件式體系結構,實現了Struts,Hibernate的技術整合,可以充分利用技術的優(yōu)勢分解系統的復雜,減少許多重復性的開發(fā)工作;其次,業(yè)務組件JavaBean的設計采用POJO,降低了開發(fā)的難度和工作量;第三,整個系統以XML結構化文件整合組件,減小組件間的代碼耦合,實現了“積木式”的開發(fā)和系統的功能定制;第四,SSH具有良好的適應性、動態(tài)擴展性和可維護性,可根據企業(yè)的需要迅速構建出系統的原型,并在不影響系統日常運行的情況下,隨著需求的變化對系統功能子模塊進行增減和重構。
2 系統設計
2.1 公文流的提取與建模
“工作流是一類能夠完全或者部分自動執(zhí)行的業(yè)務過程,根據一系列過程規(guī)則、文檔、信息或任務能夠在不同的執(zhí)行者之間傳遞、執(zhí)行[1]?!豹?/p>
公文流涉及到比較復雜的辦公流程,但主要包含收文管理和發(fā)文管理。收文管理主要完成收文登記、擬辦、批辦、批閱流轉、辦理和歸檔等工作;發(fā)文管理包括發(fā)文擬稿、核稿、簽發(fā)、批閱流轉、歸檔等工作。其流程如圖1所示。
2.2 功能設計
為了更好地管理公文流,將公文流轉系統分解為公文處理、傳輸管理、文檔管理、日志管理、用戶管理等5個模塊。
[HTF]公文處理 對公文進行創(chuàng)建、修改、收發(fā)、審批、查詢等操作處理,實現對公文分類、標識信息(包括緩急、密級、收文字號、收發(fā)單位、發(fā)文負責人等)的登記,批示和處理情況的登記(包括經手的領導、部門名單、收文時間、領導對文件內容審核批示意見、 對正式發(fā)文稿的校對情況、有關領導對文稿的會簽記錄等)。
圖1 公文收發(fā)流程
[HTF]傳輸管理 根據公文的密級類別以及發(fā)送的對象,采用RSA算法對公文內容實施加密與簽名,保證公文的安全傳輸,實現公文的逐級審批和責任簽名。
[HTF]文檔管理 按歸檔要求對發(fā)文進行立卷登記或銷毀登記并維護文檔數據庫以供查詢。
[HTF]日志管理 對于公文處理中存在的大量修改行為,實施跟蹤IP,記錄用戶身份及其對公文的各種修改行為,并在數據庫中保留公文處理的痕跡,保證公文的原始信息,以備審核。
[HTF]用戶管理 根據管理權限,把公文系統的用戶分為系統管理員、公文管理員、領導、普通用戶等角色。系統管理員擁有最高權限、可以管理用戶、調整和監(jiān)控公文處理、維護系統功能的正常運行。公文管理員負責督辦、下發(fā)通知、匯報情況等協調公文流轉業(yè)務以及維護文檔存儲與發(fā)布的工作。
2.3 系統開發(fā)環(huán)境配置
集成開發(fā)環(huán)境netbeans;JavaWeb服務器Glassfish;組件管理器Spring;Web業(yè)務層開發(fā)包Struts;數據持久化工具Hibernate;數據庫驅動引擎JDBC For SQL Server 2005;數據庫服務器SQL Server 2005。
2.4 系統結構
整個開發(fā)系統分為表現層、Web業(yè)務層、數據持久層和EIS層,結構圖如圖2所示。
圖2 公文流轉系統結構
表現層 采用JSP動態(tài)表現技術渲染用戶界面,結合AJAX異步數據傳輸,增強用戶桌面體驗,實現人機交互,并驗證客戶端的公文數據;
Web業(yè)務層 以Struts為框架,分為視圖(View)、控制(Control)、處理模塊(Model)3個部分,控制公文操作請求的轉發(fā)與處理。
數據持久層 Hibernate實現公文對象到數據庫表的映射,并提供面向公文的數據操作。
EIS(企業(yè)信息系統) 數據庫服務,提供數據的存儲、查詢與管理。
3 系統實現
3.1 系統整合
Struts攔截來自客戶端的請求,并負責請求的映射轉發(fā)和響應處理,是系統業(yè)務流程的核心樞紐,所以在Web.xml中配置其核心控制類ActionServlet,使他隨Web的啟動而優(yōu)先加載。Spring作為組件管理器,在程序運行時動態(tài)地創(chuàng)建和管理組件實例,并從外部為組件注入依賴關系,是系統功能整合實現的基礎,因此也要隨系統的啟動而運行。
實現兩者協同工作有2種策略:Struts的業(yè)務控制器Action調用Spring容器中的bean;系統控制器ActionServlet將請求直接轉發(fā)給Spring容器中的bean進行處理,即,將Action整合到Spring容器中。前者,Action需要調用Spring的實例化接口WebApplicationContext獲取業(yè)務bean處理請求。這種方法每次都要采用編碼方式將Struts和Spring整合在一起,不利于系統的維護。后者在Struts-config.xml文件中配置Spring的裝載類和請求代理類,讓Spring隨Struts啟動,并將核心控制器ActionServlet收到的請求直接轉發(fā)給容器中相應的業(yè)務bean。這種方案避免了程序中顯式地定位工廠,即調用實例化接口,降低了組件間的耦合,充分利用Spring依賴注入的特性,是一種低侵入低代碼污染的整合方式,有利于系統的維護與擴展。其配置如下:
…
… Hibernate在實現公文對象數據結構映射的同時,也完成數據類型的轉換工作,降低編程的工作量和復雜度。 3.3 公文操作集DAO Hibernate在實現公文映射的基礎上,還提供面向對象域的數據操作集(DAO)。DAO包含了抽象數據對象到數據庫的添加、刪除、修改、查詢等基本操作,可以根據企業(yè)本身的業(yè)務處理來自定義具體的操作方法,為系統上層提供通用的數據訪問接口。在SSH中,公文DAO需要調用Hibernate的數據連接服務和操作方法實現業(yè)務的邏輯操作,因此,要在公文DAO中封裝Hibernate的配置屬性以及相應的set方法,以獲取數據會話實例。如下面代碼,實現了公文存儲的業(yè)務操作。 public class DaoFile { private SessionFactory sessionFactory;[JY]//會話工廠 private Session session;[JY]//會話子對象 private Transaction transaction;[JY]//事務子對象 public void setSessionFactory(SessionFactory sessionFactory){ [ZK(]/*Spring注入會話工廠實例時調用的方法*/this.sessionFactory=sessionFactory;}[ZK)] public void addFile(FileOjb fileOjb){[JY]//添加文件的操作 session=sessionFactory.openSession();[JY]//創(chuàng)建數據會話實例 transaction=session.beginTransaction(); session.save(fileOjb);[JY]//調用Hibernate的DAO操作存儲文件對象 transaction.commit(); session.close(); } …} 3.4 公文處理 公文處理即調用公文PO的操作方法對來自客戶端的公文數據進行處理。公文處理模塊實際上是Struts的被整合到Spring容器中的業(yè)務邏輯控制器Action的子類。作為業(yè)務邏輯組件,他必須包含公文PO類和公文操作方法DAO類的子對象以及他們相應的set方法,以供Spring注入實例。由于使用Spring管理所有的公文處理模塊,所以程序間功能代碼的耦合很小,功能的擴展和維護非常方便,并易于系統的調試。如下代碼,實現了來自客戶端的公文對象到數據庫的提交。 public class FileProcess extends Action { private FileOjb fileOjb;[JY]//公文對象 private DaoFile daoFile;[JY]//公文操作方法集 public void setFileOjb(File fileOjb){ this.fileOjb=fileOjb;}[JY]//Spring向此類注入fileOjb實例時調用的方法 public void setDaoFile(DaoFile daoFile){this.daoFile=daoFile;} public ActionForward execute(ActionMapping mapping,ActionFormform, HttpServletRequest request,HttpServletResponse response){FileForm fileForm=(FileForm) form; fileOjb.setFile(fileForm.getFile());[JY]//直接使用文件子對象并設置參數 daoFile.addFile(fileOjb);[JY]//向數據庫中添加公文數據,實現持久化操作 }…} 4 結 語 企業(yè)信息系統中實際的公文流程非常復雜,并不是一成不變的。利用SSH技術架構體系可以根據企業(yè)當前實際的業(yè)務需要快速松散地構建出公文流的原型系統,并在不影響系統日常工作的情況下,隨需求的變更對系統進行維護和擴展,使系統具有較大的靈活性、適用性和可擴展性,能夠滿足企業(yè)信息化發(fā)展的基本需要,具有良好的使用前景。本文分析提取企業(yè)信息化業(yè)務中的公文流,采用輕量級技術架構SSH對公文流轉系統進行分析設計;利用技術整合的優(yōu)勢,實現系統輕量松散的結構模式,展現了SSH在系統開發(fā)維護和擴展方面的輕便性、靈活性,為企業(yè)復雜的信息系統開發(fā)提供了一種新的解決方案。 參 考 文 獻 [1]胡乃平,王紅,馬海菊.基于Web的工作流技術在企業(yè)中的應用[J].微計算機信息,2007,23(27):28-29,15. [2]李剛.輕量級J2EE企業(yè)應用實戰(zhàn)[M].北京:電子工業(yè)出版社,2007. [3]劉曉華,張建,周慧貞.JSP應用開發(fā)詳解[M].3版.北京:電子工業(yè)出版社,2007. [4]陳鵬,程勇.J2EE項目開發(fā)實用案例[M].北京:科學出版社,2006. [5]黃永欣,周淑秋.用Spring搭建Web應用的輕量級解決方案[J].計算機技術與發(fā)展,2007,17(1):189-192. [6]施偉,張忠能.輕量級容器的設計與應用[J].計算機工程,2006,32(20):65-66,71. 作者簡介 李 朋 男,1979年出生,河南人,碩士研究生。主要從事網絡信息技術、數據庫設計的研究。 晁愛農 男,1969年出生,安徽人,教授,碩士生導師。主要從事網絡信息技術、數據庫設計、數據挖掘方面的研究。 注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。