




已阅读5页,还剩62页未读, 继续免费阅读
(计算机应用技术专业论文)基于j2ee设计模式的申报评审系统的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
i 摘摘 要要 软件项目需求的日益复杂和频繁变更,要求在系统开发时能通过合理的层次 划分和先进的开发技术保证开发质量、提高开发效率以及为程序的升级和移植提 供便利。 能够充分利用己有的软件开发经验将使开发工作事半功倍。设计模式的出现 就是帮助人们利用成功软件设计师们的集体经验设计出更加优秀的软件。设计模 式描述了某一问题在某一环境下的解决方案。通过研究优秀的设计模式,将其引 入实际开发工作,不仅可以植入优化系统性能的设计思想,而且可以尽可能多地 复用代码。j2ee 设计模式则是 j2ee 架构中应用设计模式的经验总结,其中大部 分是 sun java 中心的架构师们在多年的工作过程中积累的已验证有效的设计和构 架。 本文在广泛研究 j2ee 设计模式的基础上,以江西省科技厅成果申报评审系统 为依托,详细阐述了拦截过滤器、外观模式、数据访问对象、适配器模式、传输 对象等 j2ee 设计模式在实际系统开发环境中进行的选用和实现。此外,论文结合 评审工作流程提出了若干设计模式配合使用的设计实例评审工作流微架构, 着重阐述了对此进行的研究、设计及其实现。 设计模式及微架构的使用,实现了系统各层之间的松耦合、增强了业务逻辑 内的紧耦合,使系统具有一定的灵活性和扩展性,有利于满足用户需求的变更或 是系统的后期维护和升级。同时,这样的构成更容易展开团队合作,提高了代码 生产率,加速了软件产品投放市场的周期。 关键词:设计模式,j2ee 设计模式,申报评审系统,评审工作流微架构 ii abstract needs of software projects are increasingly complex and frequently changed. thus, during developing systems, it is requested to ensure the quality of development, enhance the efficiency of development as well as provide facility for upgrading and transplanting procedures by reasonable level dividing and advanced developing technology. taking full advantage of software development experience will enable developing to achieve maximum results with little effort. the design patterns emerge for people to make use of software experience summarized by successful designers to design more outstanding software. every design pattern describes a general solution to a specific problem in particular context. by studying excellent design patterns, and introducing its into actual development work, not only design ideas about optimizing system performance can be embedded, but also code can be as much as possible reused. and j2ee design patterns are a lot of experience of applying design patterns in j2ee architecture, most of them are effective design and architecture proven and accumulated by architecturers from sun java centre in the years work process. based on extensive research on j2ee design patterns, and on the background of jiangxi province science and technology office declaration and assessment of results system, this thesis elaborates the selection and implementation of the intercepting filter, facade pattern, data access object, adapter pattern, and transfer object in the actual systems development. moreover, the paper, combining assessment workflow with the foregoing system, brings out a design example of the conjunction of several design patterns - assessment work flow micro-architecture. the paper places an emphasis on its research, design and realization. using design patterns and micro-architecture does achieve loose coupling between the system layers, enhance tight coupling within the business logic, make the system have a certain degree of flexibility and scalability, and meet the changing needs of users or systems posterior maintenance and upgrade. at the same time, this composition makes team to start more easily, improves code productivity and accelerates the period to put the software products on the market. key words: design pattern, j2ee design pattern, declaration and assessment system, assessment work flow micro-architecture 南昌航空大学硕士学位论文原创性声明 本人郑重声明:所呈交的硕士学位论文,是我个人在导师指导下, 在南昌航空大学攻读硕士学位期间独立进行研究工作所取得的成果。 尽我所知,论文中除已注明部分外不包含他人已发表或撰写过的研究 成果。对本文的研究工作做出重要贡献的个人和集体,均已在文中作 了明确地说明并表示了谢意。本声明的法律结果将完全由本人承担。 签名: 日期: 南昌航空大学硕士学位论文使用授权书 本论文的研究成果归南昌航空大学所有,本论文的研究内容不得 以其它单位的名义发表。本人完全了解南昌航空大学关于保存、使用 学位论文的规定,同意学校保留并向有关部门送交论文的复印件和电 子版本,允许论文被查阅和借阅。本人授权南昌航空大学,可以采用 影印、缩印或其他复制手段保存论文,可以公布论文的全部或部分内 容。同时授权中国科学技术信息研究所将本学位论文收录到中国学 位论文全文数据库 ,并通过网络向社会公众提供信息服务。 (保密的学位论文在解密后适用本授权书) 签名: 导师签名: 日期: 南昌航空大学硕士学位论文 第 1 章 绪论 1 第 1 章 绪论 1.1 课题背景及意义 随着企业级应用程序需求的剧增和多样化,我们面临的最大挑战是如何高质 量、高效率地开发出满足不同需求的软件1。 作为企业级应用系统的一个划分, 电子政务系统2是要把复杂的政府业务工作 流程信息化。这不仅是一个涉及计算机专业各应用领域的复杂的技术工程,同时 又是一个涉及多部门多行业的复杂的社会系统工程。因此,其系统架构势必要以 多层次、分布式应用为发展方向3,要求通过合理的层次划分和开发技术保证开发 质量、提高开发效率以及为程序的升级和移植提供便利4。 在世界各大软件公司和机构纷纷推出的开发平台中,sun 公司提出的 j2ee (java 2 platform,enterprise edition)技术,提供了多层分布式应用系统模型、统 一的安全模型,具备灵活的事务控制以及重用组件的能力5,能够快速、高效地开 发出具有可伸缩性、灵活性、易维护性的企业级应用程序6。经过实践证明,j2ee 是一种可以信赖的企业级软件开发技术,受到许多 it 业大厂商的支持,业已成为 开发基于 internet 和事务处理的业务应用程序的一种广泛使用的技术平台。 尽管 j2ee 从高层抽象基础技术,已经减少了开发人员的工作量,但是开发一 个新的应用时仍然要建模和设计方案,因为开发人员在实际工作中要围绕着设计 目标对众多具体问题采用较为优良的解决方案7。因此,设计层次上的研究一直是 设计结构良好的企业级应用系统工作的重点8。 幸运的是,在这方面我们不是孤立无援的。sun java 中心的架构师们在与来自 全球的客户合作过程中,致力于成功地设计、规划、构建、部署各种不同类型的 基于 java 和 j2ee 的系统。 目前已经有大量已验证有效的设计和构架, 将这些设计 经验固化下来并加以总结就形成了j2ee设计模式。 j2ee模式提供了一组基于j2ee 平台的常见问题的解决方案,使用这些模式可以提升系统的开发效率;降低系统 复杂程度;提高系统的可用性、可靠性、安全性、可扩展性和灵活性9,10。 成果申报评审业务是政府部门科研管理类事务性工作,实现其信息化、网络 化,符合我国电子政务发展方向,使评审工作更客观、科学,提高了工作效率, 还能有效节约人力物力。研究并选用适当的 j2ee 技术、设计模式,设计专门的工 南昌航空大学硕士学位论文 第 1 章 绪论 2 作流微架构来实现成果申报评审系统,提升了代码的可复用性和扩展性,缩短了 开发周期,提高了开发效率,而且为用户的使用和日后的升级维护提供了便利, 对此类系统的高效开发具有抛砖引玉的作用。 1.2 国内外研究现状 1.2.1 j2ee 技术研究现状 从 1999 年 sun 公司正式发布了 j2ee 第一个版本至 2006 年 j2ee1.5 的发布, j2ee 规范不断地进行着改进和完善,全新组件模型的定义以及对最初的 servlet、 jsp、ejb 等技术进行的性能扩展与优化,使 j2ee 受到越来越多的企业客户及软 件开发者的青睐,成为当前软件开发领域的一大主流技术。 j2ee 是多层结构,具有解耦性好、维护拓展、方便灵活的优点。典型的 j2ee 至少划分为三个层次:表现层/业务逻辑组件层/持久层11。目前最新版本的 j2ee1.512在三个层次上都有所改进, 其一就是在 web 层加入了 jsf 和 jstl 这两 种前端技术构成的新的表现层框架。jsf 是一组 api,支持以基于组件的方式开发 用户界面。jstl 是一组标记库,支持在 jsp 中嵌入过程式逻辑、对 javabean 的访 问方法、sql 命令、本地化格式指令和 xml 处理。jsf、jstl 和 jsp 的最新版本 支持一种统一表达式语言(expression language,el) ,使这些技术更容易集成在 一起。其二是对 ejb 开发的简化。ejb3.013大大改进了 ejb 编程模型,它不需要 扩展特定的类,只需要实现一个远程接口,可以自定义这个接口,也可以让 ide 自动生成它,大大提高了开发人员生产率。其三是引入新的持久化层标准。java persistence api(jpa1.0)引入了一个用于 java 对象持久化的对象-关系映射 (object-relational mapping,orm)框架。开发时主要考虑 ejb 的需要,也可以 用于任何 java 对象。可以使用注解指定哪些对象和字段应该持久化,以及它们应 该映射到哪些数据库表和字段。jpa 给 javaee 平台提供了新功能,解决了与手工 持久化和容器持久化相关的许多麻烦。 j2ee 被认为是成长最快的技术应用框架,但今天,正是 j2ee 与.net 两大平 台对峙的时候,国内外各用户会根据其特点考虑开发环境和应用环境进行理性的 选择。就企业而言,内部众多系统的整合、系统的延展性、安全性是更需要注意 的议题,而这些都是 j2ee 能够发挥优势的领地,也是.net 的不足之处。在效率 方面,j2ee 阵营主张通过硬件的效能增加来弥补软件的不足。开放标准、功能强 大、易于移植,这些都是 j2ee 的卖点。但是.net 支持多语言的功能和它的易用 南昌航空大学硕士学位论文 第 1 章 绪论 3 性又是 j2ee 所不具备的。不过,我们相信,随着软件界工程师们的不懈努力,未 来终会出现更完美的技术解决方案。 1.2.2 j2ee 设计模式研究现状 1995 年,gof(gang-of-four,erich gamma,richard helm,ralph johnson 和 john vlissides, “四人组” )的经典著作设计模式一可复用面向对象软件的基 础14问世,提出了 23 种通用的设计模式,引起了软件工程界对设计模式的极大 关注。至今十几年里,在不断的研究和实践中,人们已经认识到,恰当地运用设 计模式能够对软件开发起到事半功倍的作用,因此,对设计模式的研究一直是软 件工程领域中的热门课题。 目前,国外软件工程界把设计模式应用于软件体系结构的设计和软件开发各 阶段,其理论成果主要体现在从 1994 年开始的“程序设计模式语言(pattern languages of programming,plop) ”年会论文集中。国内的软件开发由于重构等技 术与资金的问题,很多公司在模式的研究和使用上还只是刚刚起步。尤其是电子 政务方面,政府工作网络化本身就是一个新课题。政府部门的支持、各行业各部 门间的合作、开发人员的技术丰实,等等,都是电子政务得以发展的先决条件。 因此,从布署到实现直至普及一定是一个循序渐进的过程。不过,由于软件技术 的蓬勃发展,电子政务应用设计模式的起点就在一个较高的技术水平上,迅速地 融合、普及是必然的前景。 j2ee 设计模式是 j2ee 平台和设计模式相结合的产物,基于 j2ee 的应用系统 使用设计模式不仅具有使用一般模式的好处而且还具有基于 j2ee 开发的好处。因 为这些模式针对 j2ee 体系,不像一般模式那么抽象,从而简化了特定系统和应用 程序中的标识、使用与适配15。 当前,j2ee 模式有两大来源,一个是在 theserverside.com 模式仓库中。另 一个重要的 j2ee 模式源是 sunjavacenter,包含了 21 个 j2ee 模式,在j2ee 核 心模式 10中有详细的表述。 值得一提的是 sunjavacenter 遵循 j2ee 平台的多层思路,把层之间的区别看 成是一种逻辑区分,每个层与相邻的层之间都存在松耦合,整个系统表现为多个 层堆叠而成。 j2ee 核心模式列出的 21 个表现层模式、业务层模式、集成层模 式对 j2ee 成熟框架的开发提出了很多优秀的解决方案。 与此同时,在 j2ee 大家庭中也涌现出了很多优秀的开源项目,提出了优秀的 组件框架。例如 log4、spring16、hibernate17等等都能大大减轻开发者的工作量, 南昌航空大学硕士学位论文 第 1 章 绪论 4 提高项目的成熟度。 设计模式的研究及其在各开发平台上的应用可以解决企业应用设计开发中现 存的许多问题,人们可以更简单方便的复用成功的设计和体系结构。随着企业应 用的迅速发展和产品化,对设计模式的研究会日益热烈,基于设计模式的企业应 用开发之路将深植于当今的网络时代。 1.3 本文研究的主要内容 本文深入探讨、研究了 j2ee 设计模式以及如何在基于 j2ee 平台的企业级应 用系统中合理的选用各种设计模式;如何对某些模式进行有效的组合,解决大型 问题,发挥设计模式的更大威力;等等。在此理论基础上,通过对成果申报评审 业务的详细了解及对系统的开发分析,本文选用了若干 j2ee 设计模式并设计了专 门的评审工作流微架构来实现此系统。实际工作以 eclipse、jboss 为开发工具,采 用 tapestry、spring 框架等技术相结合来展开。对于系统的实现,本文着重讨论了 系统中 j2ee 设计模式的运用、评审工作流微架构的设计及其作用。 本文内容按照如下结构安排:第一章对本文研究背景及技术现状做一简 要介绍;第二章全面地介绍了与系统开发相关的概念及技术,主要包括 j2ee 和设计模式相关理论知识;第三章详细阐述了成果申报评审系统的总体设计; 第四章深入探讨了系统中 j2ee 设计模式的选用及评审工作流微架构的设计; 第五章详细阐明 j2ee 设计模式及评审工作流微架构在系统中的实现;第六章 对此类系统开发的总结与展望。 南昌航空大学硕士学位论文 第 2 章 系统开发相关技术研究 5 第 2 章 系统开发相关技术研究 2.1 j2ee 概述 2.1.1 什么是 j2ee 1999 年 sun 公司根据不同应用领域把 java 技术划归为三个平台,它们分别是 适用于小型设备和智能卡的 java 2 平台 micro 版(java 2 platform micro edition, j2me) 、适用于桌面系统的 java 2 平台标准版(java 2 platform standard edition, j2se) 、适用于创建服务器应用程序和服务的 java 2 平台企业版(java 2 platform enterprise edition,j2ee) ,现在改名为 java se、java ee 和 java me18。 其中的 j2ee 以核心 java 平台或 java2 平台的标准版为基础, 是一种通过提供 多层次分布式应用模型及一系列规范 api 来简化与企业应用的开发、部署和管理 相关的复杂问题的体系结构。所谓的多层次分布式应用模型是指根据功能把应用 逻辑分成多个层次,每个层次支持相应的服务器和组件,组件在分布式服务器的 组件容器中运行(如 servlet 组件在 servlet 容器上运行,ejb 组件在 ejb 容器上运 行) ,容器间通过相关的协议进行通讯,实现组件间的相互调用19,20。 j2ee 不仅巩固了标准版中的许多优点,例如”一次编写、随处运行”的特性、 方便存取数据库的 jdbc api、 corba 技术以及能够在 internet 应用中保护数据的 安全模式等,同时还提供了对 ejb(enterprise javabeans) 、java servlets api、jsp (java server pages)以及 xml 技术的全面支持。 通过提供统一的开发平台,j2ee 降低了开发多层应用的费用和复杂性,使大 型企业应用软件系统的开发得到了广泛的技术支持,使开发工作变得简单、快捷, 其最终目的就是成为一个能够使系统开发者大幅缩短产品投放市场时间的体系结 构。 2.1.2 j2ee 的结构 典型的 j2ee 应用程序结构分为四层,如图 2-1 所示,各层及其组件介绍如下 6,18,21,22: 南昌航空大学硕士学位论文 第 2 章 系统开发相关技术研究 6 图 1-1 j2ee 的结构 web browser servle ejb jsphtml applet java application client tier middle tier eis tier web server desktop ejb containerdevice java client server services container services database 图 2-1 j2ee 的结构 (1)运行在客户端机器上的客户层组件(client tier) 客户端可以是基于 web 的网络浏览器,也可以是不基于 web 的桌面应用程序 或移动设备(例如手机、掌上电脑等) 。 在一个基于 web 的 j2ee 应用中,浏览器就在客户层中运行,它从一个 web 服务器上下载 web 层的静态 html 页面或由 jsp 或 servlet 生成的动态 html 页 面,显示在浏览器里,有时页面里可能包含 applet 小程序,这样浏览器就要通过 jvm 来调用这些小程序。 在不基于 web 的 j2ee 应用程序中,一个独立的客户程序在客户层中运行, 可以不经过 web 层而直接访问 ejb 或数据库资源。这种客户层也有可能包括一个 javabean 类管理着用户输入,并将该输入发送到在业务层中运行的 ejb 组件来处 理。 (2)运行在 j2ee 服务器上的 web 层组件(web tier) j2ee web 组件可以由 jsp 页面、显示 html 页面的 servlets 或 javabeans 组 成。servlet 是一个 java 编程语言类,它可以动态地处理请求并做出响应;jsp 页 面是一个基于文本的文档,它以 servlet 的方式执行,可以更方便地建立静态内容。 web 层还有可能包括一个 javabean,与上面所介绍的客户层中所包含的 javabean 南昌航空大学硕士学位论文 第 2 章 系统开发相关技术研究 7 功能类似。 (3)运行在 j2ee 服务器上的业务逻辑层组件(business tier) : 作为解决或满足某个特定业务领域(比如银行、保险、零售或金融业)需要 的业务逻辑代码由运行在业务层的 enterprise beans 来处理。一个 enterprise javabean 可以从客户端接受数据,并对它进行处理,并将其发送到企业信息系统 层进行存储;同时它也可以从存储器中检索数据,处理后将其发送到客户端应用 程序。 业务层和 web 层一起构成了 j2ee 应用的中间层(middle tier)。 (4)运行在 eis(enterprise information system)服务器上的企业信息系统层 (eis tier) : 企业信息系统层包含企业基础建设系统,例如企业资源计划(erp) 、数据库 系统和其它传统信息系统等。 2.1.3 j2ee 核心技术 j2ee 提供了 13 种技术规范, 下面对其中的几种核心技术做一简单介绍6,18,23: (1)ejb(enterprise javabean) : j2ee 中一个引人注目的技术就是 ejb。它提供了一个框架来开发和实施分布 式业务逻辑,简化了扩展性高度复杂的企业级应用的开发。ejb 规范定义了 ejb 组件应该如何及在何时与它们的容器交互。由 ejb 容器负责提供普通的服务,例 如目录服务、事务管理、安全性、资源缓冲池以及容错性等。 ejb 组件模型包含三种类型的 ejb: 1)会话 bean 会话 bean 在 j2ee 应用程序中被用来完成一些服务器端的业务操作,例如访 问数据库、调用其他 ejb 组件等等。会话 bean 分为两类:有状态会话 bean 和无 状态会话 bean,二者的区别在于是否保存客户端的状态信息。 2)实体 bean 实体 bean 代表持久保存的数据,典型的是存储在数据库中的数据,多个客户 端可以使用 ejb 表示同样的数据。 3)消息驱动 bean 消息驱动 bean 结合了 bean 和 jms 的消息监听器的特性,允许一个业务层组 件异步接收 jms 消息。 (2)servlet: 南昌航空大学硕士学位论文 第 2 章 系统开发相关技术研究 8 servlets 是一些运行于 web 服务器端的 java 小程序,用来扩展 web 服务器的 功能。由于 servlet 是用 java 编写的,所以移植性较强,具有平台无关性。而且, 纯java编写使servlet能够访问整个java api库, 包括用于访问企业数据库的jdbc api。 (3)jsp(java sevrer pages) : jsp 技术可以提供与 servlet 相同的功能, 但是开发起来比 servlet 要简便。 jsp 页面是由 html 代码和嵌入其中的 java 代码所组成。当第一次请求一个 jsp 页面 时,应用服务器需要先把该 jsp 编译为一个 servlet,为请求提供服务。在客户请 求 jsp 页面的的时候, 服务器就会对这些 java 代码进行处理, 然后将生成的 html 页面返回给客户端的浏览器。 (4)jdbc(java database connectivity) : jdbc 为 java 应用程序访问数据库提供了一个统一的接口,定义了用来访问 数据源的标准 java 库,对开发者屏蔽了一些细节问题。通过 jdbc 可以完成建立 到数据库的连接、执行 sql 语句等操作,方便地访问数据库。另外,jdbc 对数 据库的访问具有平台无关性。 通过 jdbc 访问数据库需要有相应数据库的 jdbc 驱动程序 (通常由数据库厂 商提供) ,jdbc 驱动程序负责将 jdbc 操作转换为特定的数据库操作。 jdbc 的目标就是使应用程序开发人员使用 jdbc 连接任何提供了 jdbc 驱动 程序的数据库,使程序员无需对特定的数据库系统的特点有过多的了解,从而大 大简化和加快了开发过程。 (5)jndi(java naming /申报项审查 public void checkprojects(integer projectid, string checkif, string checkmsg); /按条件遴选专家 affair verifyexperts() checkprojects() selectexperts() experts declaration publish assessmentselectexperts 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 48 public list selectexperts(object. args); 实现类中各个方法的实现就是调用那些具有独立功能的类。下面的例子是 affair 实现类部分代码: public class affairfacimpl implements iaffairfac private iexpertser expertser; public void setexpertser(iexpertser ser) expertser = ser; private iprofessiongroupser professiongroupser; public void setprofessiongroupser (iprofessiongroupser ser) professiongroupser = ser; /按条件遴选专家 public list selectexperts(object. args) list expertlist= expertser.getexpertbycondition(args); professiongroupser.setexperts(expertlist); return expertlist; 5.3 集成层设计模式的实现 在申报评审系统中,使用 dao 设计模式封装了对数据源的 crud 操作。在 具体实现上,结合传统的 dao 引入了 spring dao。 传统的数据访问对象(dao)在业务逻辑层和持久存储层之间引入了一个抽 象层,将持久性存储访问和操作代码封装到一个单独的层集成层。理论上, 当数据源改变时,比如更换数据库供应商或是数据库的类型时,仅需改变数据访 问对象,从而把对业务对象的影响降到最低。但这种设计在实现时由于各实现类 中不断进行着相同操作的代码重复,不符合面向对象设计的代码重用原则。 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 49 要解决上述问题,先要识别出代码中发生变化的部分,然后将这一部分代码 分离出来或者封装起来。 首先将通用的、基本固定的 crud 操作封装在 ibasicdao 接口中: public interface ibasicdao /* * 保存实体 * * param entity 实体 * return pk 键值 */ public pk saveentity(t entity); /* * 删除实体 * * param pk 键值 */ public void delentity(pk pk); /* * 查询实体 * * param pk 键值 * return 实体 */ public t getentity(pk pk); /* * 查找所有实体 * * return list 实体集合 */ public list getall(); 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 50 /* * 删除所有实体 * * return list 实体集合 */ public void deleteall(); /* * 批量保存 * * param list 实体集合 * param batchsize 批次大小 */ public void savebatch(list list,int batchsize); /* * 批量删除 * * param list 主键集合 * param batchsize 批次大小 */ public void deletebatch(list list,int batchsize); 接下来使用 spring 框架提供的 hibernatetemplate 修改 dao 实现类。 spring 实 现了与基于orm的hibernate框架的整合, 就有助于消除传统的基于jdbc的dao 中资源耗损、代码脆弱、代码重复等缺点。 public class basicdaoimpl extends hibernatetemplate implements ibasicdao private class type; public basicdaoimpl(class type) 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 51 this.type = type; public pk saveentity(t entity) saveorupdate(entity); return null; suppresswarnings(unchecked) public t getentity(pk pk) return (t) this.get(type, pk); public void delentity(pk pk) t entity = getentity(pk); if (entity = null)return; this.delete(entity); suppresswarnings(unchecked) public list getall() return loadall(type); public void deleteall() string name = type.getsimplename(); string hql = delete + name; this.bulkupdate(hql); private static final int batch_size = 50; public void savebatch(list list, int batchsize) 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 52 if (batchsize = 0) batchsize = batch_size; for (int i = 0; i list.size(); i+) saveentity(list.get(i); if (i % batchsize = 0) flushclear(); flushclear(); public void deletebatch(list list, int batchsize) if (batchsize = 0) batchsize = batch_size; for (int i = 0; i list.size(); i+) delentity(list.get(i); if (i % batchsize = 0) flushclear(); flushclear(); private void flushclear() flush(); clear(); 下一步就是定义具体的业务 dao 接口及其实现类。 其中, 每个具体业务 dao 接口都是上述 ibasicdao 接口的子类,对于其中已定义方法可不必重复。 最后,要实现上面的功能,还要在 spring 配置文件中将所有带 spring bean 容 器的 dao 实现类进行配置。如在 applicationcontext-dao.xml 文件中将专业组 dao 的实现类进行如下配置: 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 53 由上述可以得知,当业务需求发生变化,出现新的 dao 对象时,新建其接口 及实现类后,我们只需要去修改 dao 的 xml 配置文件就可以解决变动,而不需要 做其它任何修改。而且,新建接口是继承 ibasicdao 类的子类,不需要再重复那 些通用的操作代码的编写,实现类中需要的时候可以直接使用,增强了代码的重 用度。 5.4 评审工作流微架构的实现 本文第四章详细讲述了评审工作流微架构的设计,其中提及工作流微架构的 实现涉及两部分:一部分是由 action adapter 实现 web 应用和工作流子系统之间 的结合,另一部分是由 project faade 实现工作流子系统和用户之间的结合。其中 涉及了适配器、dao、门面模式及传输对象等设计模式的综合应用与实现。 (1) action adapter 的实现涉及两种数据: 一个是工作项状态, 另一个便是 “状 态命令操作”的映射,其中,工作项状态可以从申报项数据表中抽取数 据。因此主要是对两张数据库表的操作。如前所述系统在数据持久层采用 dao 来 实现数据访问,因此这两张表分别映射为 projectdao 和 currentstatedao。 适配器为完成工作流命令的处理编写了十二个方法,其中十一个方法是根据 不同状态下的命令内容查询“状态命令操作”映射表,获得相应的操作, 然后由第十二个方法完成工作项状态的修改。与工作流程相对应,分别为:申报 项提交,审查意见提交、审查修改提交、选定初评专家、初评意见提交、评定意 见提交、公示异议提交、公示处理结果提交、选定评审专家、评审意见提交、审 定结果提交。适配器操作接口部分代码如下: package org.jict.dacore.actionadapter.fac; import java.util.list; import org.jict.dacore.baseexception; import org.jict.dacore.application.model.project; /* * 适配器接口 * */ 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 54 public interface iactionadapterfac /* * 申报项提交 * * project 申报项对象 * return 状态 id */ public integer projectsubmit(project project); /* * 审查意见提交 * * checkif 审查是否通过 * checkmsg 审查意见 * return 状态 id */ public integer checksubmit(integer projectid, string checkif, string checkmsg); /* * 公示处理结果提交 * * proveif 公示是否通过 * publishmsg 公示处理意见 * return 状态 id */ public integer provesubmit(integer projectid, string proveif, string publishmsg); /* * 评定结果提交 * 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 55 * return 操作是否成功 */ public boolean assesssubmit(object. args); /* * 工作项状态修改 * * projectstate 修改状态 * return 状态 id */ public void upstate(integer projectid, integer projectstate); 适配器则是对上述接口的实现,每个方法的实现包括两部分内容,一个是使 用业务逻辑中已有的操作,一个是对工作项状态的修改,即通过申报项子系统对 projectdao 的操作。如审查意见提交方法实现如下: package org.jict.dacore.actionadapter.fac.impl; /* * 适配器 */ public interface iactionadapterfacimpl private iprojectfac projectfac; public void setprojectfac(iprojectfac fac) jectfac = fac; public integer checksubmit(integer projectid, string checkif, string checkmsg) projectfac.modifycheck(projectid, checkif, checkmsg); ingeter state = 0; if(checkif = = 0)state = 4; if(checkif = = 1)state = 5; if(checkif = = 2)state = 3; this.upstate(projected, state); 南昌航空大学硕士学位论文 第 5 章 j2ee 设计模式在成果申报评审系统中的实现 56 public void upstate(integer projectid, integer projectstate) projectfac.changestate(projectid, projectstate); 2project faade 的实现: 根据系统整体业务层框架,我们用一个门面模式来实现工作项列表的获取。 在这个模式中,最重要的一个方法就是 getprojectlist(),这个方法根据用户名,返 回给用户一个工作项集合,每个工作项要包括申报项基本信息、申报项状态、该 用户对申报项可进行的操作以及对申报项的各阶段评审意见。因此,要把这些来 自不同业务组件、 不同类型的数据组装成一个多重传输对象, 最后由 tapestry 页面 以列表的形式将工作项集合显示给用户。不同角色的用户具有不同的工作项视图。 具体的多重传输对象组装步骤如下: (1)调用 projectdao 的 getprojectlistb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业互联网平台区块链智能合约安全漏洞报告与分析
- 2025年环保产业技术创新动态产业升级路径实践策略研究报告
- 2025年生态修复工程中城市绿地生态系统服务功能评价研究
- 2025年环境影响评价中公众参与的法律问题与对策报告
- 长期土地租赁合同范本
- 理财公司贷款合同范本
- 购买抗原模板合同范本
- 株洲门面装修合同范本
- 道路施工环保合同范本
- 酒店住宿月结合同范本
- 搅拌桩机使用说明书
- LY/T 1063-2008全国森林火险区划等级
- GB/T 4852-2002压敏胶粘带初粘性试验方法(滚球法)
- 2023年高考全国1卷理科数学和答案详解(word版本)
- GMP质量体系状态标志、标识编制及管理规程
- 情绪压力管理-情绪压力管理课件
- 万科物业管理服务工作手册
- 简单的电动车代理合同模板
- DDI辅导员工迈向成功-辅导领导力系列
- 竞选大学心理委员ppt模板
- 煤矿井筒装备安装方案
评论
0/150
提交评论