辽宁日报党委决策支持系统的设计与实现
马莹莹 舒迅 关玉强
(辽宁报业传媒集团)
[摘要]辽宁日报党委决策支持系统是针对集团高层管理者做出总体战略目标的实现而作出的决策需求而设计的。可以实现系统管理员登录后按照开会时间上传会议内容、稿件、排序、人员管理、会议管理、领导意见管理、投票管理等功能,并且稿件支持.doc .docx .xls .jpg .txt .png .jpeg等多种文件格式。各位用户登录后可按时间查看会议内容,按照日期、内容、汇报人查询会议信息、查看文件、下载文件、进行投票、查看投票结果、统计投票结果,用户对文件批阅等相关功能。本系统按照管理权限分为:管理员、社长、普通可投票用户、不可投票用户。本系统采用J2EE规范,分布式体系架构技术,支持主流应用服务器和中间件产品。采用 B/S/S三层结构,很好的解决客户机/服务器结构的维护成本问题,改善客户机/服务器结构延展性问题,解决应用逻辑重复使用的问题,整合不同系统结构的需要,应用新技术的需要。浏览器客户端,数据集中,便于维护,使用方便。本文从MVC三个不同层次介绍辽宁日报党委决策支持系统的实现过程。视图层通过html,JSP技术实现,重点介绍JSP自定义标签的创建使用。模型层通过Dao类实现。控制器通过Action类,Applogic类,Interactoin类实现,重点介绍了Action类,Applogic类,Interactoin类实现的具体过程。并且本文给出了调用jacob实现excle文档转换html文档的部份代码实例。[关键词]STRUTSJSPJDBCMVCJACOB JAVA 1 引言1.1 课题研究的背景和实际意义《辽宁日报党委决策支持系统》是针对辽宁日报党委领导看稿、开会投票决策的需求而设计的。党委领导的决策关系到集团的定位和发展的方向,本系统采用权限管理投票方式,可保证投票决策的真实性和有效性。1.2 本文的内容及主要工作本文详细介绍了管理决策支持系统的开发过程。本文基于B/S/S三层结构及MVC,Struts架构,主要针对MVC架构的具体实现,即视图层,模型层,控制层的实现方法进行了详细的介绍,并且介绍了实现excel文件转换为html文件的代码实例。本系统主要解决的问题:1.文件上传过程中解决单个文件、批量文件、顺序调整的问题;2.上传的文件格式,支持.doc .xls .jpg .txt .docx .jpeg .png .ppt等多种格式,并且可转换成网页形式进行投票。3.同时打开多个文件进行投票占用系统资源,内存消耗过多的问题。4.用户打开一个文件生成一个html文件数据量巨大的问题。5.图片名称是中文名字的页面显示问题。6.显示投票结果用饼形图显示的即时刷新效果问题。7.四类用户权限控制问题。 2 系统设计2.1系统体系结构设计2.1.1系统设计原则和方法系统先进性、可靠性、通用性、规范性、安全性2.2系统功能设计2.2.1 系统功能描述对辽宁日报党委决策支持系统,总体上作如下设计:1.将访问系统的用户按身份分为四类:管理员、社长、普通可投票用户、不可投票用户。2.系统管理员可进入管理系统和统筹系统,并且只允许系统管理员进入管理系统进行管理。管理系统包括四个模块:人员管理、会议管理、投票管理、领导意见管理。每个模块管理员可进行增、删、查、改操作。管理员进入统筹系统可查询、查看会议信息、看稿、查看所有用户留言信息,所有用户投票统计结果、明细结果。3.社长进入统筹系统后可查询、查看会议信息、看稿、投票、查看所有用户投票结果。投票后投票区域不显示,并可立刻显示投票统计结果、明细结果。4.普通可投票用户进入统筹系统后可查询、查看会议信息、看稿、投票、查看自己留言信息。投票后投票区域不显示,并可立刻显示投票统计结果。5.普通不可投票用户进入统筹系统后可查询、查看会议信息、看稿、查看自己留言信息。查看投票统计结果。以上四类用户分别拥有自己的权限和操作功能。根据操作划分模块,每一个操作模块都要实现自身的功能,并且在整个操作流程中负责承上启下。下面根据这几个方面的需要,分述各个模块功能1.会议信息模块功能是查看今日会议的议题、内容、稿件(稿件可下载)。2. 投票信息模块功能是对会议内容表决进行投票;根据权限视投票结果(统计结果、明细结果)。3. 意见信息模块功能是提供留言信息,根据各权限视留言信息(所有用户留言信息、自己留言信息)。4. 用户信息管理模块功能是对用户信息进行管理,包括增、删、查、改用户信息(管理员用)。5. 会议信息管理模块功能是对会议信息进行管理,包括增、删、查、改会议信息及上传稿件(管理员用)。- 领导意见管理模块
- 投票信息管理模块
图2.1 系统功能模块图
2.4数据库设计2.4.1数据库软件选择需要选择什么样的数据库软件来支持本系统呢?根据需求调研得知,本系统运行时,需要服务器端远程数据库系统能承受的并发用户数最大为所有投票者的数量。另外,随着时间的推移,业务办理量越来越多,本系统服务器端备档数据库内需要保存一个极为庞大的用户证件图片信息库。最后,在通过调研和比较,选用了Oracle9i数据库作为本系统的后台数据库。2.4.2数据安全性数据是信息系统最为宝贵的资源,因此数据安全是安全管理中非常重要的一个方面。数据安全管理包括数据库系统安全、数据传输安全和数据备份与恢复三个方面。2.4.3数据库系统安全数据库权限控制通过数据库提供的系统权限、对象权限(查询、修改、删除、插入等)来进行控制,并且利用权限角色将相应的权限分类,使得权限管理更加灵活。数据库日志通过利用Oracle提供的归档日志分析工具,可以分析数据库数据操作的全部过程,从中发现安全隐患,及时解决。数据一致性维护对数据进行严格的合理性校验,提高原始数据的可靠性;通过数据库本身的机制以及程序中的控制来保证数据的完整性和一致性。数据库审计通过安全审计记录和跟踪用户对数据库的操作,防止否认对数据库的安全责任。2.4.4数据传输安全对于传输的数据要采用对称或非对称的加密技术,对于实时的数据交换采用安全交易的方式保证数据的安全性和完整性;对于非实时的数据交换采用队列的方式传输,保证数据的完整性;在重要数据的传输中还可以采用数据签名技术,防止系统数据的被窃取及篡改,保证信息传输的安全。上述两种数据交换方式都没有对外将数据库放开,保证了中心数据的安全性。2.4.5数据备份与恢复为保证数据系统的安全,确保在应急情况下的紧急处理,必须对系统的数据采用备份和恢复机制。在系统数据出现问题的时候,通过数据恢复系统,对损坏的数据进行恢复。 3 系统实现 根据上一章对系统的总体设计以及分析,本章对系统中的实现情况作了较为详细的介绍。辽宁日报党委决策支持系统项目基于J2EE体系结构的标准平台,采用J2EE多层应用程序方案。系统架构的调用模式主要采用了层次化的设计思想,主要应用MVC的设计模式,系统横向以MVC模式分层。MVC做为一个设计模式,强制性的应用程序的输入、处理和输出分开。MVC应用程序分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。Struts 1.1中的MVC实现示意图:
图3.2 Struts 1.1中的MVC实现示意图
3.1视图层的实现视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。3.1.1 JSP自定义标签
视图的角色主要是由 JSP 来完成,从 JSP 的规范中可以看出,在视图层可以"折腾"的技术不是很多,主要的就是自定义标记库(Taglib)的应用。Struts 1.1 在原有的四个标记库 html、logic、bean、template的基础上新增了两个标记库:Tiles 和 Nested我们重点讲一下自定义标签的过程:例如上面的<%@ tagliburi="/WEB-INF/taglib/lndaily" prefix="lndaily"%>1、 定义一个与之相关联的两个类:public class HtmlTag extends TagSupport{ publicintdoStartTag()throwsJSPException{ }publicintdoEndTag()throwsJSPException{ResponseUtils.write(pageContext, "</html>");return 6;}}2、 写.tld 文件:lndaily.Tld部分源码为:<tag><name>html</name><tagclass>com.lndaily.taglib.tc.HtmlTag(对应上面的HtmlTab类)</tagclass></tag>3、确信将 lndaily.tld 文件复制到 WEB-INF 目录中。4、在部署描述符(WEB.xml 文件)中注册标签库:<taglib><taglib-uri>/WEB-INF/taglib/lndaily</taglib-uri><taglib-location>/WEB-INF/taglib/lndaily.tld</taglib-location></taglib>5、现在就可以在 JSP 中应用这个标签了:在 JSP 页面开始加上<%@ tagliburi="/WEB-INF/taglib/lndaily" prefix="lndaily"%>3.2 模型层的设计与实现模型是应用程序的主体部分。模型表示业务数据和业务逻辑。一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。基于Struts的模型表示应用程序的状态和业务逻辑。对于大型应用,业务逻辑通常由JavaBean或EJB组件来实现。3.2.1 DAO类实现3.2.1.1 DAO类实现细节实体DAO类通过实体的dataset来完成数据的查询、增删改操作。创建DataStore时,使用的dataSetName统一从getDataSetName()方法获取。publicValueDataSetqueryByID(Long id) throws AppException {
DataStore store = super.createDataStore(getDataSetName());
store.setFilters("[empCode]=?"); //设置查询条件
Object[] params = { id };
store.setParaValues(params); //设置参数
super.getStoreData(store);returnstore.getDataSet();}3.3 控制器的设计与实现3.3.1 Action类实现Action为收发HTTP请求的Interaction的门童。它的职责是:1.从HTTPRequest中提取请求参数,转换成Interaction能识别的Java类型,包括把DataStore从XML格式转换成DataStore对象;2.构造AppContext,AppContext是贯穿WEB Container和EJB Container的“线”,我们称之为应用上下文,比如UserInfo、SessionID等信息都包在AppContext中。AppContext在获取Interaction对象中将作为入参传到EJB Container中。Action的基类会帮助你构造出AppContext;3.获取一个Interaction对象,然后将一次交互所需的所有信息压入RequestEvenlope中,并准备好一个接收出参的ResponeEvenlope空盒子,接着调用Interaction对象的服务方法;4.把ResponeEvenlope中的Java对象转换成PB Client能认识的格式——一个大XML流,包括DataStore。最后把这个XML返回给PB Client。再解释一下“大XML流”的概念,Action答复给PB Client的是一个XML流,这个XML包括header和body两大部分,在body中包含多个Parameter和多个DataStore,所以即使你要返回多个DataStore,也只要一次writeResponseXML();5.如果要支持Browser,Action要把ResponeEvenlope中的Java对象转发给JSP然后把请求forword到JSP。3.3.2Interaction类实现Interaction就是业务模型中的交互对象,我们追求AppLogic的最大复用性,Interaction是复用性在放在第二位性的,如果界面变化比较大,Interaction在本地化时的“变”是不可避免的。。3.3.3Applogic类实现(一)AppLogic的功能与职责:1.最小的业务处理功能单元,核心业务处理组件2.通过接口与实现分离的方式实现数据库访问,业务逻辑与核心算法,当业务逻辑发生变化的时候,保证了接口不发生变化,降低了层次间的耦合(二)AppLogic对象的加载与调用方式1.配置与注册在统一的配置文件中,对AppLogic进行注册管理,统一维护2.加载在服务器端程序启动过程中,根据配置文件中AppLogic对象的描述信息,加载并且实例化3.调用在业务程序的运行过程中通过线程调用对象池中的已经加载并且缓存的AppLogic对象 3.4 部分功能设计与实现举例Excel文件转换为html文件的部分实现代码:ComThread.InitSTA();ActiveXComponent app = new ActiveXComponent("Excel.Application"); // 启动exceltry {app.setProperty("Visible", new Variant(false));Dispatch excels = app.getProperty("Workbooks").toDispatch();Dispatch excel = Dispatch.invoke(excels,"Open",Dispatch.Method,new Object[] { xlsfile, new Variant(false),new Variant(true) }, new int[1]).toDispatch();Dispatch.invoke(excel, "SaveAs", Dispatch.Method, new Object[] {htmlfile, new Variant(EXCEL_HTML) }, new int[1]);Variant f = new Variant(false);Dispatch.call(excel, "Close", f);} catch (Exception e) {e.printStackTrace();} finally {app.invoke("Quit", new Variant[] {});//关闭com的线程ComThread.Release();}4 结论辽宁日报党委决策支持系统是通过对本单位实际情况进行详细调研,确定了系统需求以及涉及的领域后开发的系统。它包括数据库设计、通用模块设计、以及系统维护管理子系统设计等,是一个能适用本单位现状的完整系统。这个系统是一个具有实际应用意义的典型系统。在系统中,实现了系统需求的各种功能及客户的要求,并且成功应用,达到了系统的设计目标。本系统具有如下特点:1.通用模块的设计实现组件化。这样使得许多组件可以直接或者仅仅稍作修改即可在其他项目或工程中重用,节省对相关技术的重复研究费用。使得系统组件具备良好的可重用性。2. 用户业务逻辑和各个技术要点基本分离。业务逻辑封装在主流程中,通过对象消息调用核心技术组件。修改业务流程不会影响各个组件的实现。因此具有高的适应性以及良好的可维护性。3. 具备完整的用户权限管理能力。实现了不同用户只能获得相应权限模块的使用权限。使系统具备良好的安全性。由于因为本项目时间要求相当紧张,因此,该系统还有很多方面做的工作还不够。为了方便日常操作及数据统计,此系统还可以增加一些实用的功能模块。另外,该系统还可以提供数据备份、数据恢复等安全措施,这将大大提高用户原始文件的安全性。 5 参考文献[1]孙卫琴 李洪成 Tomcat于Java WEB开发技术详解 电子工业出版社[2]孙卫琴 精通Struts: 基于MVC的Java WEB 设计与开发 电子工业出版社[3](美)Marty Hall,Larry Brown著 赵学良 译 Servlet 于JSP心编程(第2版) 清华大学出版社[4]王家华.软件工程[M],沈阳:东北大学出版社,2001,1-303[5]萨师煊,王珊.数据库系统概论[M],北京:高等教育出版社,2000,1-109 编辑:中国新闻技术工作者联合会
评论 点击评论