蔡麗霞,任曉娜
?
一種中型企業辦公自動化系統的設計與實現
蔡麗霞,任曉娜
摘 要:以SSH為代表的多層架構的辦公自動化系統能很好地滿足中型企業的需求。深入研究了Struts、Spring、Hibernate的開源框架,在此基礎上整合基于AJAX技術的DWR框架,并完成對RBAC權限模型的改進,以JBPM開源工作流為基礎實現了公文流轉模塊的開發,最后進行了系統測試。結果表明,該系統方便實用,安全可靠。
關鍵詞:SSH框架;RBAC權限模型;JBPM工作流;公文流轉;
為企業定制一套自動化程度較高的辦公自動化系統,不僅可以依據企業自身需求,改進企業業務流程和管理模式,更好適應信息化發展的趨勢;還可以加快企業內部的信息交流,提高運行效率,降低成本,提高競爭力[1][2]。
本文以筆者所在的某市某中型集團企業為例,闡述基于B/S架構,采用SSH[3][4]框架、JBPM[5][6]工作流引擎及RBA C[7][8]模型,如何設計與實現開源架構的辦公自動化系統,并對其中采用的關鍵技術進行了較為深入的探討,最后,通過測試運行表明該系統控制比較靈活,訪問安全,實用性好。
1.1 系統功能模塊的設計
系統的開發目標是按需為企業量身打造,以“用”為本,設計了系統架構,如圖1所示:

圖1 系統架構圖
由門戶平臺、系統設置平臺和流程引擎平臺,實現核心功能的流程模塊和提供便捷服務的非流程模塊構成。
其中公文管理模塊和工作流程模塊是系統的核心功能,主要來定義企業的各種流程,并針對不同的流程定義表單。
系統管理模塊包含權限管理、系統初始化等。采用基于角色的權限控制策略,可以靈活去定義角色,對角色分配權限,為用戶分配角色,為用戶分配權限等操作。
個人事務模塊共6個子模塊,主要實現個人日常工作的功能。
行政辦公模塊分為六個子模塊,分別為會議管理、車輛管理、用品管理、圖書管理、印章管理和資產管理子模塊。
人事管理模塊主要包含人事檔案管理、考勤管理、合同管理、工資管理、招聘管理和績效考核等內容。
消息管理模塊可以發送各種通知、公告、會議等消息,并能隨時查看本用戶已發送和接收的各類通知。
信息交流模塊主要為實現企業內部的信息共享和互動,可以發送和回收調查問卷、使用內部博客、論壇和電子郵件等。
1.2 系統開發技術、工具與環境
為降低系統的開發成本,減輕企業負擔,可選擇一些成熟的開源軟件,解決高成本的問題。為滿足該企業集團用戶的大數據量、高可用性的要求,則采用目前比較成熟流行的基于SSH框架J2EE的B/S的解決方案。
在目前的JAVA EE開發中,存在著多種開發工具,其中Eclipse的使用最為廣泛,已成為通用的語言開發工具平臺;考慮到系統的跨平臺和低成本要求,則優先選擇開源免費的MySql;應用服務器同樣也選擇了開源的Tomcat[9]。
對于一個中型企業集團用戶來說,所選擇的上述運行環境可以完全滿足應用的需要。
2.1 SSH框架整合的具體實現
在該系統中,SSH框架采用逐步整合的方式,首先整合中間層的Spring和Hibernate,然后整合Struts[10-12]。
(1)添加SSH框架所必須的jar包
使用MyEclipse創建工程,分別拷貝Struts、Spring和Hibernate的jar包到工程的lib目錄下。
(2)修改web.xm l文件。在文件中增加如下內容:
Spring的配置內容:指定Spring的配置文件。
Struts的配置內容:主要是增加Struts的ActionServlet,使Tomcat容器在啟動的時候自動讀取初始參數struts-config. xm l加載并啟動,這樣就能響應用戶的請求。
在類路徑下創建Spring的配置文件:application-con text.xm l,并在其中配置數據源,將Hibernate交給Spring管理。
整合Struts:在WEB-INF目錄下加入struts-config.xm l,另外在web.xm l文件中加入對Action的配置,這樣把Struts納入Spring的管理后,就完成了SSH框架的整合。
(3)添加DWR[13]的支持
DWR是一種廣泛使用并且易用的Ajax開源框架,可以快捷地創建到服務器端Java對象的Ajax接口,對各功能模塊的開發都有較大的幫助。
2.2 權限管理模塊的實現
RBAC權限模型是基于角色進行授權的。這種授權大大的減少了系統中權限管理的負擔,但在一些信息管理不太規范的企業中,往往需要超級管理員既可以針對角色授權,也可以單獨針對用戶授權。該系統的權限管理以RBAC權限模型為基礎,并對RBAC3模型進行了改進,采用針對角色授權和針對用戶授權相結合的方式[14-15],來滿足企業的實際需求,授權模型如圖2所示:

圖2 系統權限管理模型
由于該系統擴充了典型的RBAC權限模型,不同角色的權限有可能產生沖突,因此要設置角色的優先級,以確保權限沖突時不至于產生二義性。角色的優先級約定原則為:若用戶屬于多個角色,當不同角色所擁有的權限發生沖突時,發生沖突的權限以優先級高的角色所擁有的權限為準,與之沖突的低優先級的角色權限作廢;不沖突時權限則為這些角色權限的并集。
在本系統對權限管理的實現中,可以根據企業信息管理的需求給每一個角色分配不同的權限,角色添加之后就可以對角色進行授權,相應的權限只需要選中或取消復選框,就可以直接完成對角色的授權或取消授權;對用戶授權時,設置“不繼承”復選框,只有勾選這個復選框時,用戶的單獨授權設置才有效,否則將使用其擁有的角色權限,對用戶的授權如圖3所示:

圖3 對用戶的授權
2.3 JBPM實現工作流的管理
該系統的核心功能是企業流程的管理和自動化,實際就是工作流的管理。JBPM就是一個靈活可擴展的工作流管理系統。
JBPM的流程操作:
(1)創建數據庫表
Jbpm會把流程定義和流程執行持久化到數據庫中,需要在數據庫中創建所需的數據庫表.
JbpmConfiguration.getInstance().createSchema()
(2)部署流程
創建jbpmConfiguration對象:
JbpmConfiguration.getInstance();
接著讀取流程定義文件,創建processdefinition對象:
ProcessDefinition.parseXm lResource(String);
中國國際商會副秘書長張屹在致辭中表示,中國國際商會負責與瀾湄對口機構開展機制性的務實合作。作為2018瀾湄合作博覽會的主辦單位,中國國際商會積極發揮對外交流的渠道和專業服務的優勢,為云南的對外開放和經濟社會發展作出一份貢獻。他強調,中國國際商會愿與瀾湄國家貿易投資促進機構和商協會組織共同努力,為瀾湄國家企業提供更好的專業化貿易信息以及投資、促進、綜合一體化服務,為瀾湄國家綜合服務作出努力。
創建jbpmContext對象:
jbpmConfiguration.createJbpmContext();
部署流程到數據庫:
context.deployProcessDefinition(definition);
(3)創建公文,并與流程實例綁定
從數據庫中加載processDefinition對象,根據加載讀取的流程文件創建流程實例并存儲,加載公文,綁定公文到創建的流程實例:
processIn
sIn
stance.getContextInstance.createVariable("document",documen t.getId())
(4)公文創建者提交公文
根據各個節點的審批情況進行下一個流程節點的觸發,直至流程結束。
2.4 公文流轉模塊的設計與實現
公文流轉模塊是系統的核心功能模塊,是辦公自動化系統最重要的功能之一。它分為兩部分:公文管理和流程管理。
2.4.1 公文流轉模塊的領域模型
通過對用戶用例的分析,抽象出公文流轉的領域模型,在公文流轉中涉及到了公文、流程、審批歷史、參與者、流程實例、表單、表單域等對象,采用UML[16]圖表示如圖4所示:

圖4 公文流轉的領域模型
2.4.2 公文流轉模塊的動態建模
公文管理模塊實現了對公文的管理,包括添加公文、刪除公文、提交公文、待審公文以及已審公文管理等操作。下面對公文流轉模塊中的核心功能進行動態建模來闡述其實現思路。
(1)部署流程
當完成流程定義后,需將流程持久化到數據庫,再進行后續的操作。
(2)創建公文
完成了流程定義的部署后,選擇流程,創建公文,并根據流程對應的動態表單,顯示不同的公文錄入界面。錄入后,公文將在工作流引擎的支持下,根據流程的定義向下流轉,其動態順序圖如圖5所示:

圖5 創建公文順序圖
公文的創建中,因為公文屬于一個具體的流程,在創建時需在流程列表中查詢選擇某個具體的流程,若沒有流程則無法創建公文。
在創建流程實例對象的時候,需從數據庫中加載流程定義對象,并根據流程定義對象來創建流程實例對象??稍诠闹性O置一個processInstanceId屬性,以記錄其對應的流程實例對象,可將公文的ID作為一個流程實例變量存儲起來,這樣可以通過流程實例對象確定所攜帶的信息屬于某個公文對象。
(3)提交到流程
提交到流程的參與者可能是審批者,也可能是創建者。對于不同的參與者含義不同,但都需提交到流程,公文才能按流程定義流轉到下一節點。
(4)審批公文
人員登錄之后,可對此公文進行審批,可以查看流轉到當前登錄人的所有公文。
2.4.3公文流轉模塊的實現
(1)實體類和相應的數據庫表
根據領域模型,首先設計本模塊中的實體類,并導出數據庫表,實體類及其屬性設計如下:公文類Document、流程類Workflow、審批歷史信息ApproveInfo、流程表單Flow Form、表單類型FieldType、表單輸入形式Field Input。
(2)業務邏輯類Manager的創建
①公文管理類DocumentManager,主要包括如下方法:addDocument(Document document,int workflow Id,int userId):根據工作流id和用戶id添加一個新的公文信息。
searchApproveInfos(int documentId):查詢公文的審批信息。
addApproveInfo(ApproveInfo approveInfo,int documentId,int approverId):存儲審批者對公文的審批信息。
submitToWorkflow(int userId,int documentId,String transistionName):當用戶審批完畢,提交到流程,使公文流轉到下一個節點。
②工作流管理類WorkflowManager,主要包括如下方法:
deployProcessDefinition(byte[] processDefinition,byte[]processImage):根據流程定義文件和流程定義圖片將流程部署到數據庫。
findWorkflow(int workflow Id):根據流程標識符查找流程。
addProcessInstance(String workflowName,int documentId):根據流程名稱和公文標識添加流程實例。
當定義了工作流管理類后,可以對工作流進行部署和管理,流程管理的實現如圖6所示:

圖6 流程管理界面
③表單管理器FormManager,主要完成對表單、表單域、表單域類型的管理,包含的主要方法如下:
addForm(FlowForm form,int workflow Id):添加表單。
delForm(int form Id):刪除表單。
addField(Form Field field,int form Id,int fieldTypeId,int field InputId):添加表單域。
delField(int field Id):刪除表單域。
(3)創建相Action和ActionForm
創建DocumentAction、Workflow Action、Flow FormA -ction和相應的Form,實現控制層和顯示層。
在該系統的開發過程和系統正式部署前,進行了嚴格的測試,包括客戶端瀏覽器的兼容性測試、系統功能性測試和安全性相關測試。
3.1 瀏覽器兼容性測試
在進行瀏覽器兼容測試時,主要做了兩方面的測試:一是不同平臺下的測試,在目前主流的一些操作系統平臺下進行了Web兼容性測試;二是對不同的瀏覽器的測試工作及不同廠商不同版本瀏覽器的兼容性測試。結果表明:由于在前臺頁面開發中使用JQuery框架,所以對不同平臺和不同廠商的瀏覽器都有完美支持。
3.2 Junit[17]白盒測試
該系統開發過程中的單元測試,主要使用Junit測試框架進行。在開發過程中建立了test文件夾,專門進行系統測試,每一個模塊在提交之前必須寫成測試單元,大大提高系統性的健壯性,降低了出錯幾率。測試結構如圖7所示:

圖7 JUnit單元測試結構圖
本文對適合中型企業的辦公自動化系統進行總體設計,明確該系統的基本功能和基本架構,采用SSH的開源架構,利用開源代碼軟件平臺,最終實現一個管理性、可維護性和可擴展性良好的系統,并在實際應用中取得了較好的效果,達到了設計的預期目標。
參考文獻
[1] 杜雯翠,高明華.信息化提升對中小企業成長空間研究—來自中小企業的調查分析[J].現代財經,2013,(03): 86-96+118
[2] 羅正軍,沈洋,邱廣華.協同辦公環境下企業信息化集成研究[J].信息技術,2011,(07):8-11
[3] 劉斌.精通Java Web整合開發:JSP+AJAX+Struts+Hiber -nate[M].北京:電子工業出版社,2007:51-57.
[4] 4.G. Berry, J. Carnell, M. Juric. J2EE Design Patterns Applied[M]. W rox, 2003:78-117.
[5] 陳廣智,潘嶸,李磊. 工作流建模技術綜述及其研究趨勢[J].計算機科學,.2014.41(6A): 11-17+23.
[6] 董崇杰.基于JBPM流程設計器[J].計算機系統應用,2013,22(10):55-59.
[7] 邵奇峰,韓玉民,鄭秋生.一種混合授權的RBAC模型及其UML建模[J].武漢大學學報(理學版),2014(05):419-423.
[8] 劉強,王磊,何琳.RBAC模型研究歷程中的系列問題分析[J].計算機科學,.2012,39(11):13-18
[9] 吳小青.JSP+TOMCAT+MYSQL開源軟件整合配臵初探——以揭陽職業技術學院圖書館網站服務器配臵為例[J]. 齊齊哈爾大學學報(自然科學版),2012,28(4):66-69.
[10] 李剛.輕量級J2EE企業應用實戰-Struts+Spring+Hibe rnate整合開發[M].北京:電子工業出版社,2007:124-128.
[11] Shenoy S., Mallya N.. Struts Survival Guide. [M] ObjectSource LLC, 2004:177-180.
[12] James Elliott.Hibernate:A Developer's NoteBook[M]. [S.l.]:O'Reilly,2004:128.
[13] 林萍.基于SSH+DWR的高校科研管理系統研究與實現[J].計算機應用與軟件,2014,31(07):66-68.
[14] Sandhu RS,Coyne EJ, Feinsten HI. Role-based access control models[J].IEEE Computer,1996,29(2):38-47.
[15] 黎川,周定康,熊娟.數字校園中基于角色的訪問控制[J].計算機與現代化, 2009,(4):20-21+26.
[16] 普里斯特.面向對象設計UML實踐(第2版)[M].龔曉慶,卞雷,譯.北京:清華大學出版社,2005:112.
[17] 高遠,夏敏,呂林峰.基于Myeclipse集成環境下的JUnit單元測試[J]. 指揮信息系統與技術,2010,1(06):20-23.
Design and Imp lementation of OA System for M edium-sized Enterprise
Cai Lixia, Ren Xiaona
(Network Management Center, Henan Polytechnic Institute, Nayang 473000, China)
Abstract:Multi-tier architecture office automation system like Struts, Spring and Hibemate (SSH) can well satisfy the needs of medium-sized enterprises. The open source framework of SHH is further studied, and by this basis it integrates DWR framework based on AJAX technology, then improves RBAC permissions model, and develops document flow module based on JBPM open source workflow. The test results show that this system is convenient, practical and reliable.
Key words:SSH Framework; RBAC Perm issions Model; JBPM Workflow; Document Flow
中圖分類號:TP391.4
文獻標志碼:A
文章編號:1007-757X(2016)05-0046-04
作者簡介:蔡麗霞(1979-),女(漢)河南南陽人,河南工業職業技術學院,網絡管理中心,講師,碩士,研究方向:計算機應用,南陽,473000任曉娜(1981-),女,河南工業職業技術學院,網絡管理中心,碩士,講師,研究方向:計算機應用,南陽,473000
收稿日期:(2015.11.27)