一种中型企业办公自动化系统的设计与实现
2016-07-07蔡丽霞任晓娜
蔡丽霞,任晓娜
一种中型企业办公自动化系统的设计与实现
蔡丽霞,任晓娜
摘 要:以SSH为代表的多层架构的办公自动化系统能很好地满足中型企业的需求。深入研究了Struts、Spring、Hibernate的开源框架,在此基础上整合基于AJAX技术的DWR框架,并完成对RBAC权限模型的改进,以JBPM开源工作流为基础实现了公文流转模块的开发,最后进行了系统测试。结果表明,该系统方便实用,安全可靠。
关键词:SSH框架;RBAC权限模型;JBPM工作流;公文流转;
0 引言
为企业定制一套自动化程度较高的办公自动化系统,不仅可以依据企业自身需求,改进企业业务流程和管理模式,更好适应信息化发展的趋势;还可以加快企业内部的信息交流,提高运行效率,降低成本,提高竞争力[1][2]。
本文以笔者所在的某市某中型集团企业为例,阐述基于B/S架构,采用SSH[3][4]框架、JBPM[5][6]工作流引擎及RBA C[7][8]模型,如何设计与实现开源架构的办公自动化系统,并对其中采用的关键技术进行了较为深入的探讨,最后,通过测试运行表明该系统控制比较灵活,访问安全,实用性好。
1 办公自动化系统的总体设计
1.1 系统功能模块的设计
系统的开发目标是按需为企业量身打造,以“用”为本,设计了系统架构,如图1所示:
图1 系统架构图
由门户平台、系统设置平台和流程引擎平台,实现核心功能的流程模块和提供便捷服务的非流程模块构成。
其中公文管理模块和工作流程模块是系统的核心功能,主要来定义企业的各种流程,并针对不同的流程定义表单。
系统管理模块包含权限管理、系统初始化等。采用基于角色的权限控制策略,可以灵活去定义角色,对角色分配权限,为用户分配角色,为用户分配权限等操作。
个人事务模块共6个子模块,主要实现个人日常工作的功能。
行政办公模块分为六个子模块,分别为会议管理、车辆管理、用品管理、图书管理、印章管理和资产管理子模块。
人事管理模块主要包含人事档案管理、考勤管理、合同管理、工资管理、招聘管理和绩效考核等内容。
消息管理模块可以发送各种通知、公告、会议等消息,并能随时查看本用户已发送和接收的各类通知。
信息交流模块主要为实现企业内部的信息共享和互动,可以发送和回收调查问卷、使用内部博客、论坛和电子邮件等。
1.2 系统开发技术、工具与环境
为降低系统的开发成本,减轻企业负担,可选择一些成熟的开源软件,解决高成本的问题。为满足该企业集团用户的大数据量、高可用性的要求,则采用目前比较成熟流行的基于SSH框架J2EE的B/S的解决方案。
在目前的JAVA EE开发中,存在着多种开发工具,其中Eclipse的使用最为广泛,已成为通用的语言开发工具平台;考虑到系统的跨平台和低成本要求,则优先选择开源免费的MySql;应用服务器同样也选择了开源的Tomcat[9]。
对于一个中型企业集团用户来说,所选择的上述运行环境可以完全满足应用的需要。
2 办公自动化系统的实现
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 创建公文顺序图
公文的创建中,因为公文属于一个具体的流程,在创建时需在流程列表中查询选择某个具体的流程,若没有流程则无法创建公文。
在创建流程实例对象的时候,需从数据库中加载流程定义对象,并根据流程定义对象来创建流程实例对象。可在公文中设置一个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 系统测试
在该系统的开发过程和系统正式部署前,进行了严格的测试,包括客户端浏览器的兼容性测试、系统功能性测试和安全性相关测试。
3.1 浏览器兼容性测试
在进行浏览器兼容测试时,主要做了两方面的测试:一是不同平台下的测试,在目前主流的一些操作系统平台下进行了Web兼容性测试;二是对不同的浏览器的测试工作及不同厂商不同版本浏览器的兼容性测试。结果表明:由于在前台页面开发中使用JQuery框架,所以对不同平台和不同厂商的浏览器都有完美支持。
3.2 Junit[17]白盒测试
该系统开发过程中的单元测试,主要使用Junit测试框架进行。在开发过程中建立了test文件夹,专门进行系统测试,每一个模块在提交之前必须写成测试单元,大大提高系统性的健壮性,降低了出错几率。测试结构如图7所示:
图7 JUnit单元测试结构图
4 总结
本文对适合中型企业的办公自动化系统进行总体设计,明确该系统的基本功能和基本架构,采用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)