毕业设计(论文)-基于SSH的工作流公司管理系统的研究.doc_第1页
毕业设计(论文)-基于SSH的工作流公司管理系统的研究.doc_第2页
毕业设计(论文)-基于SSH的工作流公司管理系统的研究.doc_第3页
毕业设计(论文)-基于SSH的工作流公司管理系统的研究.doc_第4页
毕业设计(论文)-基于SSH的工作流公司管理系统的研究.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于SSH的工作流公司管理系统的研究1 绪论 现如今的社会,计算机技术已经在社会中得到广泛的应用和高度的认可,人们已经让信息技术得到了很好地发展,呈现出了全球化和商业化的趋势,现如今企业的核心竞争力已不再由单纯的收益体现,企业管理本身的合理性和高效率也会让企业在竞争中处于优势,对此,网络交付相对应的业务活动已经出现了很大的优势,大多数世界各地的公司正在或将要使用这项技术,不同类型的企业也在积极推广。于此同时,利用信息技术和网络的公司也在慢慢地改变自己公司的企业结构和业务流程,但在大多数公司的管理结构中,其重点已经在向信息化迈进。 1.1 课题研究背景及意义 1.1.1 课题的研究背景在过去很长时间内,人们往往采用文件管理的方法处理公司内部的管理问题。长时间采用人工方式管理文件的模式带给了公司管理的诸多不便。大量的文档必然会造成员工即便浏览一遍标题都会花费大量的时间和精力,靠人工有效管理几乎不可能,导致了诸如低效率、安全性差、管理混乱等缺点。 现如今随着企业信息化和计算机技术的使用正在不断地提高和完善,终于在20世纪80年代,依靠在网络上的工作流技术的出现来,很好的缓解了人工管理低效、安全性差和管理混乱的弊病。公司文件采用人工传输的方式已经被电子文件的形式所取缔,因为工作流是完全自动化操作,无需人工操作,既避免了传送延时,也很好的提高了公司效率。虽然全球化企业正在飞速发展,但避免不了会出现管理的不足之处,而工作流和网络技术的相结合,使不足之处得到了很大的改善,例如通过电子邮件、即时通讯工具和自定义工作流的手段都是即时的反应,并且也是完全避免等待的,很好的促使了全球化的企业能有机的联系在一起。如果公司想创造更多财富,那么建立和完善工作流公司管理系统是必不可少的环节,同时也是现代化企业向科学的管理和标准化建设的重要推动力。企业在当下为了提高工作效率和企业自身信息共享的灵活性,大部分企业已经接受了信息化管理的模式,并已经在开始实施了,这样的转变已近成功的为自身创造了更多的财富和价值,这些价值已近足够能说明信息化管理对于企业的必要性。 1.1.2 课题的研究意义 在传统的公司里,员工的考勤、工资和人事关系等管理往往都是采用低效率的人工方式来进行管理,这样员工的信息维护和升级会变得异常困难,同时也会对员工信息的更新、查阅造成不便,特别是在拥有庞大数量员工的企业里面,这些问题会特别突出,那么这些问题必然会对企业人事管理造成一系列影响。如今虽然很多公司已经开始采用信息化管理本公司的员工,但有些管理系统会存在很多不足之处,尤其是产品本身的功能缺失和设计的不足,这会给企业带来很大的困扰和不便。例如,有些管理系统只能对员工进行考勤,缺少薪资自动结算的功能,还有的只能对员工信息进行新增和删除,不能修改员工信息,这些不全面的功能会导致对员工的管理回到传统的管理方式中去,会给公司带来压力。这时,计算机资源和员工信息的统一管理显得尤为重要,解决了这些传统管理所存在的不足之处。对于一个企业而言,必须为企业的切身利益考虑,我做的系统:基于SSH的工作流公司管理系统,很好地结合了计算机软件的许多优势,即查找迅速、操作简便、稳定性高和数据库存储成本低廉、容量大的优势,即弥补了传统管理方式的不足,又提高了企业信息管理水平,使用管理系统的方式来取缔人工管理,是公司走向科学化、正规化的必经之路。 1.2 国内外研究现状 1.2.1 国外研究现状 人力资源的管理软件在70年代末到80年代初已经在国外企业开始投入使用,直到上世纪九十年代,计算机得到大范围的普及,B/S和C/S架构的先后出现,获得了程序员们的青睐,很快便运用到了公司信息管理中,并获得业界好评。很多公司管理系统为了完善其中的不足,运用B/S和C/S的架构开始使用在公司管理系统中,这个阶段最重要的就是人力资源信息的采集,之后随着不断的发展和完善,网络化实现人力资源管理系统终于实现,又给系统增添了很多功能,比如,人才招聘、员工培训等管理相关的模块,这些发展都为日后更优质的管理系统打下了坚实的基础。自身管理系统的研究和信息化的建设在发达国家的企业眼里显得尤为重要,而在这部分企业里,跨国企业为了提升企业财富和价值,投入大量资金来开发相应的技术和系统产品。 由于国外的公司起步较早,随着不断地完善,国外的企业管理系统软件显得尤为的成熟,再加上国外企业对自身的高要求,使得研发公司开发出了不同类型的公司管理系统,并投放到不同领域的市场里,解决了不同领域公司的管理方案。随着系统的更新和硬件的加强,第四代公司管理系统的问世,更加保证了企业员工的切身利益和工作的积极性,图1-1展示了公司管理系统的发展历程。 图1-1 公司管理系统的发展历程 如今,以Oracle、SAP为领头羊的大型软件开发公司已经将人力资源管理电子信息化指定为未来管理软件的发展方向,很多相关的企业级应用已经推出,并获得了市场一致好评。 1.2.2 国内研究相比国外,我国的公司管理系统起步较慢,在90年代初期,国外的公司管理系统被我国引进。随着我国不断地蓬勃发展,国内越来越多的领域开始接受使用信息化管理平台。现如今,仍处于过渡期的我们,正在从传统的人力管理向信息化管理转变,与此同时,国内新兴的软件公司也在不断摸索出适合我国企业实际情况的管理系统。虽然国内软件市场在快速的发展,但由于我国企业存在很多制度的不完善,我国自主开发的软件仍有很多缺陷和不足之处,与国外的企业相比,还是有较大的差距,比如功能单一、不稳定的性能等问题仍然需要解决和完善。但国外并不了解国内企业的实际情况,错误的估计了国内市场的情况,昂贵的市场价格让软件产品处在了竞争劣势,所以我国自主开发的软件更贴近本国企业的实际情况,这样也让本国产品占有一定的市场比例。用友、金蝶、金益康等是我国自主开发公司管理系统的领头羊。 1.3 本文的主要工作本课题实现一个简单的工作流系统,在该系统中并没有任何工作流引擎,完成是由程序自己实现公司日常工作的流程管理。系统可以完成员工每日上下班打卡、而系统将负责为每个员工进行考勤,当员工发现自己的考勤异常时,可以向其他经理申请改变考勤。实现到一个月的指定时间,根据员工的考勤,系统自动结算当月工资的功能。基于SSH框架的工作流公司管理系统的设计和实现是本文的重点内容。实现基于SSH工作流公司管理系统的设计,系统会以JAVA EE体系为基础,以SSH框架技术为核心来实现程序的编译。 1.4 论文的组织结构 本论文一共分为六个章节。第一章节为绪论部分,主要介绍了课题的相关背景、国内外研究现状和论文的主要工作。第二章节介绍系统实现时候的关键技术,包括SSH框架技术、MVC模式的实现、JSP模式的实现和Quartz调度的实现。第三章节介绍了系统的架构和可行性分析,包括系统功能架构、系统设计要求和系统的开发环境。第四章节介绍了系统是怎样设计的,先从系统功能结构入手,再分析系统数据流程,给出一个整体思路,之后从代码设计原则入手,再到系统数据库分析,最后将给出本次系统模块的数据流图。第五章节介绍了系统的实现,分析了每个模块的详细设计。第六章节为结束语部分,分析了本次课题的意义和不足之处。2 系统相关的知识和技术介绍 2.1 SSH框架技术 SSH (Struts+Spring+Hibemate)框架是J2EE平台下Structs、Spring 和 Hibernate三个主流框架的统称。SSH是一种可扩展性框架,给出方案用于解决系统的基本构成。 2.1.1 Structs 现如今,系统开发人员需要更深入了解系统的内部机制,就需要开放的源代码,Structs满足了这项需求,Structs由于本身所具有的属性,可以让Servlet 、JSP、JavaBean、XML和自定义标签可以整合到一个统一的框架中,这样的一个可复用的MVC被Struts所组成,让程序员在构建web应用时 更加简单明了。在面向对象的java设计方法中,Structs框架也占有不可撼动的位置,不仅结合了MVC的特性,同时也充分发挥了MVC的优势,Structs框架可以使用自己的Controller,也可以利用其它实现方式进行Model和View的变异。Structe的灵活性和强大的编译性能在此被充分体现。 2.1.2 SpringSpring具有灵活性,降低成本,开发周期短的显著特点。从业务层开源来讲,是基于java语言的应用程序框架,其最终目地是解决开发中企业级程序繁琐的弊病。Spring提供给开发人员大量的中间层模块以及统一的应用程序。除此以外,其亦可代替EJB技术轻量的框架结构。Spring通过其特有的分层架构,对数据层和业务的逻辑进行改进,简化了JZEE的开发难度,提高工作效率。 由七个不同的模块(独立使用,亦可和其它模块共同应用)组成的Spring框架,如图2-1所示。 图2-1 Spring框架结构 Springl框架的核心思想是loC(Invention of control,控制翻转),也可称之为DI(Dependence Injectiom,依赖注入)而控制翻转的含义并不是传统意思上的使用程序代码进行直接控制,而是为组件提供特定的运行的工作环境的“容器”,来控制组件之间的关系。另一方面,依赖注入则是一种拟人化的注释当容器在运行的过程中,动态的将接口,参数和对象一系列关系注入于整个容器组件中。由此将开发人员定义的改由电脑系统进行自动控制,从而提供了更加灵便的工作环境与平台,增加重复利用率。与此同时,Spring框架由于采用控制翻转,便可以提高实现bean的装备率,面相切面的编程(即AOP)的支持,从而提高事务管理率。 2.1.3 Hibernate 开放源代码的对象关系映射框架需有Hiberate提供,所以JAVA程序员可以随意通过对象编程思维从而控制整个数据库,这也是Hibernate的主要功能,其主要功能则是在运用JAVA客户端程序的同时,亦可以运用任何的JDBC的场合,以及servlet/JSP的web应用中的使用。 同时,Hibernate可以有效处理所有运用JDBC的情况。在整个Hibernate框架下通过管理数据表和JAVA之间的映射以到提供查找或者处理数据的方法,由此程序人员的工作只需要简单的修改配置文件盒和为持久化对象编制XML映射文件即可。(如图所示,2-2)。Hibernate作为O/Rmapping框架使用,其O/RMaping功能不光光是在JDBC层上提供更好的封装,以面向对象的形式操作整个数据库。用这种方法操作数据库,可以有效地简化了对整个数据库的访问量。 图2-2 Hibernate架构原理 2.2 MVC概述 MVC是Model、View和Controller的缩写,通常MVC会存在于桌面程序中,程序员在进行编译代码时,为了让一个程序可以有不同的表现形式,那么必须将Model和View的代码进行分离,MVC在这个环节取到了至关重要的作用。业务模块和用户界面要想实现同步,那么就需要控制器的存在,控制器的存在可以让用户界面随着业务模型的转变而即时更新。对于MVC模式的三个部分,其实就是软件的扩展和维护,如图2-3所示。图2-3 MVC结构详细介绍一下MVC的三个部分。1、业务模型:是应用程序的核心部分。 我们定义业务模型用于表示公司数据和业务规则,与视图和控制器相比,业务模块就需要处理最多的任务,为了减少代码的重复性,并且能为多个视图提供数据,业务模块就显得尤为重要,它可以把代码直接应用与模型中。2、视图:为数据显示提供方法。 我们定义视图为用户看到并进行控制和反馈的界面。视图在MVC中占有主要地位,但它只是作为一种输出数据。3、控制器:主要负责代码的输入处理。控制器在接受了用户的输入和用户的请求时,需要调用模型和视图去完成,这成了控制器的职责所在,负责整体的控制。 2.3 JSP模式 JSP被人们定义为一种动态技术标准。在传统的网页中,为实现建立动态网站所需要的功能,例如操作数据库和发送E-mail等,需要自传统的网页中加入JAVA程序片段和JSP标签,这样的做法让服务器端执行了所有程序的操作,收到的将仅仅是网络传送的结果,使客户客户端浏览器的需求被降低。浏览器不支持JAVA也不成问题,由于JSP本身是一个简化的Servlet设计,在HTML语法中,JSP可以为JAVA提供扩展。 JSP与Servlet一样是在服务器端被执行的。当用户在使用WEB服务器时,请求访问JSP网页,那么程序段会被服务器执行,执行结果与JSP中的HTML代码再统一返回给客户端,而返回给客户端的仅仅是一个HTML文本,所以只要用户有浏览器就可以浏览。 实现网页的静态化新要求、提取数据是JSP页面的功能。JSP页面由HTML代码和嵌入其中的代码所组成。而且JSP技术的基础是Java Servlet,Java Servlet和JSP配合能够完成大型的WEB应用程序的编译。 2.4 Quartz Quartz是一个开源的组织,它主要是与J2EE与J2SE互相结合的运用程序,Quartz可以单独使用。其可以建立为10个乃至好几万个的Jobs这样的复杂程序。于此同时,其最新版本2.2.1quartz可以做成EJBS,java的标准组件。 Quartz的组件之大,拥有300个JAVA相似几口,在这点上市与其他开源框架类似的,并被有效组织于12个包中,在这点用法可以和Apache相类似。虽然他的规模用于衡量框架的质量的特性几乎为0,但quartz的关键,是其包含的功能成为了是否能过作为,以及应该作为评测一个开源或者非开源框架质量的关键因素。调度器负责管理是QuatzeD的核心元素,其主要负责Quartz应用运行时的环境。其依赖框架类关键部件,联合进行工作。Quartz运用了基于多线程的架构,保证其可伸缩性。Quartz怎样能并发运行多个作业的原理在启动时,初始化一套worker线程,然后进行预订的作业。3 系统架构和可行性分析 3.1 系统架构 系统采用了先进的JAVA EE 应用结构技术,主要有以下几层分类。 1、表现层:由JSP页面组成。 2、MVC层:使用MVC框架技术。 3、业务逻辑层:Spring IoC提供容器管理,负责业务逻辑的组件构成。 4、DAO层:由7个DAO组件组成。 5、领域对象层:通过Hibernate Session的管理和7个PO组成,实现对数据库的访问。 6、数据库服务层:在该层中,MySQL数据库会被使用,并且该数据库可以存储持久化数据。 系统架构参见下图3-1所示。 图3-1系统架构图 Spring IoC 容器负责生成和管理上图蓝色部分的业务逻辑层、DAO层和领域对象等组件。 3.2 系统功能架构图3-2 基于SSH公司管理系统功能实现架构图由以上架构图所示,本系统可以分为两个模块:经理模块和员工模块。员工在登陆了员工管理系统后便可查看基本信息,如薪资情况、个人考勤内容、员工基本信息和查看其它消息等。经理权限相对更大,对于经理而言,还会有更大的权限,包括消息管理权限、考核管理权限、薪资管理权限、考勤管理权限、员工管理权限等。普通员工和经理业务逻辑组件是这两个模块主要实现业务逻辑的关键因素,通过这两个业务逻辑组件可以实现封装DAO组件。系统借助业务逻辑组件封装DAO组件,而这些DAO组件又反作用于业务逻辑组件底层,从而完成系统业务逻辑的功能。本系统主要有7个DAO对象。1、ApplicationDao:提供对app_table表的基本操作。2、AttendDao:提供对attend_table表的基本操作。3、AttendTypeDao :提供对type_table表的基本操作。4、CheckBackDao:提供对check_table表的基本操作。5、EmployeeDao:提供对emp_table表的基本操作。6、ManagerDao:提供对mgr_table表的基本操作。7、PaymentDao:提供对pay_table表的基本操作。本系统还具有2个如下的业务逻辑组件1、EmpManager:提供Employees需要的业务逻辑功能。2、MgrManager:提供Managers需要的业务逻辑功能。图3-3展示了这9个中间层主要组件之间的结构关系。 图3-3系统组件结构图 3.3 系统设计要求 1、安全性 员工通过身份验证的方式进入系统,只有通过验证的用户才有使用该系统的权限。 2、操作效率 普通操作比如查找,插入,更改等操作在网络流畅的情况下可以具有较高效率。 3、可重用性 为保证代码可重用,系统应使得各个模块尽可能强内聚、低耦合。 3.4 系统开发环境1、软件 A、操作系统:Windows 7 64位。 B、WEB Service:tomcat6.0。 C、相关软件开发工具:Myeclipse6.6、WPS、IE9 。 D、数据库及java环境:JDK 1.7.02、 硬件 A、处理器:Intel(R)Core(TM)i5-480M CPU2.67Hz。 B、内存:4G 4 系统的详细设计在前面的内容中对系统的技术背景、需求进行了详细的分析,以上内容只是做了一个简单的了解,如果需要进行系统编码,还要进行分析及设计。 4.1 系统功能结构功能结构需要在完成系统分析之后方可形成,但功能结构设计出来后便可以比较直观的看到系统的结构图,结构图如图4-1。图4-1 系统功能结构图上图体现出了7个模块:1、用户登录模块做为整个系统的开始端,模块员工及经理的登录模块不一致,系统登录时需将正确的用户名、密码及验证码进行输入,但员工及经理所进入的界面是不同的,具有各自的界面。2、员工管理模块在这个模块中,部门员工的所有个人信息可以被所属经理查询,并且所属经理还可以对员工的信息进行增加、修改和删除。3、考勤信息管理此模块完成员工的考勤,并生成记录可以让员工查看自己的考勤记录,同时也给予所属经理有权限去查询及修改员工的考勤信息。在考勤管理中,如果出现员工的考勤信息有误的,员工可以通过系统发出申请,当经理收到申请时,核实无误后,可有权限对员工考勤进行更改。4、个人事务中心 主要用于处理个人的待办事务,同时也具有查询个人基本信息的功能,如员工自己的考勤信息、工资信息等,员工都可自行查询。5、薪资信息管理此模块为薪资查询模块,员工及经理都具有权限,员工可查询个人的薪资信息,同时经理也可查询对应下属的薪资信息。 6、部门机构管理新员工入职时对应所属经理的设定。 7、消息管理提供查询、增加、修改和删除消息是该模块的主要功能。 4.2 系统数据流程图对各模块进行了详细的分析后,使我们清晰认识了一个公司的管理系统,接下来我们将从数据传递的角度,对系统进行分析,数据传递主要有以下三方面组成:1、数据流:数据流是一些流动的数据,它是体现数据在整个系统中所走的流向,固定的数据组成数据流,并且数据流需要对其进行命名。2、数据源(终点):人、物或其他软件系统也在数据源的范畴中,属于系统之外的实体。3、数据存储:用于表示文件或者是文件中的一部分和数据库的元素等,可以当成是一个信息的静态存储系统。图4-2更直观的反应出系统中对应数据传递的关系。 图4-2系统数据流图注:通过图示我们可以清晰的看到:1、考勤管理模块会将明天员工的考勤记录自动生成并保存到数据库中;2、在考勤管理模块中,员工个人及经理都能各自单独的查询自己的考勤信息,唯一不同的是,经理即可以查看自己的考勤记录又可以管理对应员工的考勤;3、根据员工的考核及考勤记录,系统自动进行计算员工的工资,并将员工工资生成记录并保存到数据库中,这样员工可以通过系统查询到自己的考勤信息及工资发放情况; 4.3 数据库E-R图及数据库设计1、数据库E-R图:可以叫做实体联系图(Entity Relationship Diagram),此系统一共包括7个部分的实体内容:A、Application : 考勤申请;B、Attend : 考勤;C、AttendType : 考勤类别;D、CheckBack : 批复;E、Employee : 员工;F、Manager : 经理;G、Payment : 薪水;详细的数据库E-R图如图4-3:图4-3 数据库E-R图2、数据库设计本系统涉及到7张数据库表,如下所示。表1 数据库表信息表2 员工考勤申请表表3员工考勤表表4考勤类别表表5批复表表6系统员工信息表表7员工薪资表 4.4 代码设计代码顾名思义是用数字或者符号的形式将一些事物表现出来,是搭接计算机与人的联系符号。1、代码设计是应做好以下几点:1、标准化:代码引用于现已规定下来的标准;2、规范性:代码的编写要求必须统一;3、唯一性:每个代码是唯一性;4、合理性:代码编制方式必须合理;5、可扩充性:代码设计应该具有眼见,这样以后为修改或增加降低了难度。6、系统性: 所有的代码设计要求、所包括的内容及编码的原则,要有互通性,这样整个系统的才具有应用性;7、简单性:代码结构尽量简单,以便记忆;2、输入设计马上进入到输入设计,输入设计时应充分考虑操作者的方便、简单及易懂性,并能保证信息输入的正确性,同时应考虑减少操作者的工作量,原则如下:1、少转换原则:有些时候在避免数据转换过程中可能会出现的错误,这是在所难免的,所以在输入数据处理时应考虑所涉及的形式记录。2、早检验原则:为避免错误在后期发生,在输入设计阶段时应对系统数据进行检验,这样可以使错误在前期得到改正,比较接近源数据产生点。3、输出设计为了满足用户需求信息,接下来需做输出设计,此设计是整个系统的关键,它可以反应系统所需的信息及组成信息,如果设计做不好,便不能满足系统的使用效果。所以此设计阶段也是系统的关键,就要做好输出内容的确定。 4.5 各模块的详细设计 4.5.1 员工信息模块详细设计 此模块主要有以下几个功能:1、经理负责对新进所属员工建立员工档案,将新进员工的相关信息进行录入;2、经理可以查询员工信息,员工也可以通过自己对应的用户名、密码来查询 自己的个人信息,包括考勤、工资、对应的经理和收到的消息,当然这些基本功能对于经理来说都是通用的。 我会对各功能块的数据流进行详细的解释: 1、经理管理新进员工; 公司内新进员工时,对应员工的经理将员工的信息进行录入,并为员工建立一个用户,并为此用户名设置初始密码,新员工可以通过经理给自己设定的用户名和自己设定的密码登陆系统,图4-5反映的是新增员工的数据流图。 图4-5 新增员工数据流图 2、经理和员工的功能关系经理查询所对应部门员工的薪资、考勤和个人信息情况,图4-6反映的是对应的查询员工信息数据流图图4-6 查询员工信息数据流图 4.5.2 考勤模块的详细设计此模块设计包括员工的考勤、上班时间及有没有上班,要考虑所有用户。此模块的设计介绍如图4-7。图4-7 员工考勤数据流图 4.5.3 考勤申请模块的详细设计当员工发现自己的考勤于实际情况不符时,员工可以通过此模块提出修改考勤的申请。1、考勤申请 员工通过此模块提交申请,包括请假申请、出差申请、信息不符申请后,系统会直接提交给相对应的部门经理审批。具体的务流程图如图4-8: 图4-8 考勤申请业务流程图2、查看员工信息 经理看到申请消息后,进行员工核实,就需要查看员工信息,是否符合实际情况,根据这依据进行审核。3、查看个人的考勤信息员工每月可以用自己的用户名及密码登陆系统查询自己的考勤信息,当员工发现本人的考勤记录有问题时,可以通过系统向经理提出申请。 4.5.4 员工薪水模块的详细设计此模块可以自动结算员工薪资,根据员工的考勤信息、考勤状况及考勤申请是否批复进行结算。该模块还包括发薪时间、领薪的员工及所发的薪资数。系统可自动生成数据库,并存储前3个月的薪资表。业务流程图如图4-9。图4-9 员工薪资发放流程图员工上班打卡,并查询自己的打卡情况,如果发现不符,提交给部门经理进行改正,部门经理即时进行修改,并反馈给考勤申请模块。每月员工薪资自动发放模块会根据考勤模块和考勤申请模块进行发放员工薪资,并生成记录。5系统实现 表现层、MVC层、业务逻辑层、DAO层和数据库服务层是本章我将介绍的重点。实现任务的自动调度层、Hibernate持久层、实现DAO层、实现Service层和实现系统web层是基于SSH工作流的公司管理系统的重点。 5.1 Hibernate 持久层使用Hibernate的持久层,在系统中可以有效的避免很多问题的出现,系统会用传统的JAVA 数据库连接方式来操控数据库,为了保证整个软件开发过程通过面向对象的方式进行,我会利用Hibernate提供的O/R Mapping支持,让许程序使用面向对象的操作方式,达到程序可以使用相关联的数据库的功能。 5.1.1 设计持久化实体 根据系统需求提供应用中的对象,先将这些对象抽象成类,再从这些类中抽取出持久化对象类。本系统设计了7个持久化类。1、Application:普通员工提出申请;2、Attend:对应每天的考勤;3、AttendType:对应考勤的类别;4、CheckBack:对应批复;5、Employee:对应系统的员工信息;6、Manager:对应系统的经理信息;7、Payment:对应每月所发的薪水信息;在富领域模式的设计过程中,这7个PO对象也需要包含系统的业务逻辑方法,即使用领域对象来为他们建模;但是因为本应用采用贫血模式设计,所以不为它们提供任何的业务逻辑方法,而是在业务逻辑组件中实现所有的业务逻辑方法。当架构模型采用贫血模式时,能够简洁的看出系统中的领域对象,它们都是单纯的数据类,对于包含哪些业务逻辑方法在此模式中是不用进行考虑的,因此开发起来非常方便;本系统是由逻辑组件负责完成所有的业务逻辑,这就使系统的开发简单明了。以上所述的7个持久化类并不是孤立存在的,它们之间有复杂的关联关系,图5-1给出了之间的关系图。1、Employee是Manager的父类,直接存在N-1的关系;2、Employee和Payment存在1-N的关系;3、Employee和Attend之间存在1-N的关系;4、Manager继承了Employee类,具有Employee全部属性。5、Application与Attend Type存在N-1的关系;6、Application与Attend存在N-1的关系;7、Attend与Attend Type存在N-1的关系; 图5-1 7个PO之间的类关系图 5.1.2 创建持久化实体类上面所提到的持久化对象之间的关联关系最主要的表现方式是它们自身的属性,上图5-1给出了很好的解释。当然,这些属性需要setter方法和getter方法的支持,持久化类相互之间的关联通常和数据库里的主、外键约束相对应。 在持久化对象中,普通属性也是必须存在的,普通属性一般是和数据库的字段相对应。而持久化对象提供的无参数的构造器是Hibernate对于持久化对象的唯一要求,如果需要将这些对象放入HashSet集合中,还应该根据实际需要重写hashCode()和equals()两个方法。 Hibernate可以将普通的JAVA对象映射成为持久化实体,而要想成功转化,必须遵守以下3个规则:1、提供一个构造器,能够实现无参数化。2、提供一个标识属性,能够用于标识实例。3、使用非final的类。 除此之外,Employee对象里的用户名在公司管理系统中是唯一的,所以可以根据name属性类重写Employee类的equals()和hashCode()两个方法。这两个方法并不可以根据标识属性来重写,因为持久化对象处于瞬态时,这些对象的标识属性值可能是null。 5.1.3 映射持久化实体面向对象分析阶段中首要的任务是提取类,而且还要着重分析对象之间的关联关系。此外,继承层次也起到很重要的作用,在分析对象之间的关系时,继承层次是必不可少的分析。继承也同样担负软件复原这一重要作用蕴含于对象的设计。本程序在选择继承策略时,使用作为本程序继承映射策略,整棵继承树的全部实例都能够通过这种映射策略保存于一张数据表中,这种映射策略的性能最好,不管应用程序是需要多态查询或是查询子类的实体,在一个表格中都能查询到。 5.2 实现DAO层 DAO模式在JAVA EE 中经常被使用,其中DAO组件可以对数据库进行再次封装操作。这种模式在被使用时,充分体现出业务逻辑组件封装DAO组件的模式,同时也表现出了分离业务逻辑组件与DAO组件的功能。DAO模式引进到在公司管理系统中后,数据库的访问逻辑可以通过DAO组件完成;同时,DAO组件也可以完成每一个数据库表基本的读取、更新、增加和删除的操作。 三个部分来实现DAO模式: 1、DAO工厂类。 2、DAO接口。3、DAO接口的实现类。 5.2.1 DAO组件的定义 各持久化对象的基本操作由DAO组件提供。选择DAO接口有个好处,就是能够很好解决业务逻辑组件与特定的DAO组件产生的碰撞。但DAO组件并不是一开始就设计出来的,而是随着业务逻辑的相关需求,能有很多的方法添加进去,并且有些方法是通用的。 1、get(Serializable id):根据主键加载持久化实例。 2、save(Object entity):保存持久化实例。 3、update(Object entity):关系持久化实例。 4、delete(Object entity):删除持久化实例。 5、delete(Serializable id):根据主键来删除持久化实例。DAO接口不参与任何技术的实现,仅定义了增加、读取、更新、删除方法的,底层的持久化技术是这些方法定义的实现的重要保证,传统Java数据库连接以及Hibernate持久化技术的实现,DAO组件都能实现。 5.2.2 实现DAO组件Spring的DAO相关支持帮助了DAO实现类的组件,给程序编译带来了很大的编译好处,并且Spring为各种常用的持久化技术提供了支持。Spring为HibernateDaoSupport提供DAO基类是:HibernateDaoSupport只需要传入一个SessionFactory引用,就会生成一个HibernateTemplate实例,从而使大部分数据库的操作都能够轻松的实现。系统扩展,要满足系统要求,让其实现分页,这个功能是HibernateDaoSuppor的一个子类,定义为YeekuHibernateDaoSupport。HibernateDaoSupport都要通过系统中实际的DAO实现类来继承,以及实现相应的DAO接口。 5.2.3 部署DAO层1、 DAO组件运行的基础 Spring跟Hibernate作为应用的DAO组件的基础,DAO组件的生成与管理都是由Spring容器负责的。 Spring提供了大量工具类为整合Hibernate,通过LocalSessionFactoryBean类,IoC容器内可以纳入Hibernate的SessionFactory。2、 配置DAO组件 SessionFactory的写入,为 DAO实现类继承了HibernateDaoSupport,在系统中使用Bean继承,简化了DAO组建的配置。 5.3 实现Service层 Manager和Employee两个角色模块组件是本系统仅有的两个业务逻辑组件。下面将重点介绍业务逻辑组件的设计和系统是如何实现业务逻辑组件的。1、业务逻辑组件的设计DAO组件为业务逻辑组件的实现提供了基础,在图5-2中体现了DAO对象与业务逻辑组件之间的关系。 图5-1 EmpManager 与DAO组件接口的类图大量的业务方法在EmpManager接口里得到定义,DAO组件成为这些方法的实现的基石。DAO操作是单个的数据记录的操作,而很多业务方法要涉及到多个DAO操作,设计多个DAO操作是访问业务逻辑的方法,因此设计多条访问记录成为实现务逻辑方法的必需。2、实现业务逻辑组件系统业务方法的实现主要依赖于业务逻辑组件,系统中所有的业务要求都由业务逻辑组件提供。贫血模式的架构模型是本系统采用的架构模型,因此业务逻辑组件只需要负责提供相关的业务逻辑方法。Autopunch和Autopay两个方法存在于系统的业务逻辑组件中,客户端并不能直接调用这两个方法,这一操作必须是由任务调度来完成的,每天员工的考勤和员工工资的结算是由autopunch负责的。在程序中运行前,每天每个员工的考勤记录设定是旷工,只有当员工上班打卡、下班打卡时,系统才会根据员工的打卡时间来判断该员工究竟是正常上班、迟到还是早退等。所以当员工打卡时,并不是去插入考勤记录,而是修改系统插入的考勤记录,这样减弱了数据库的压力。 5.4 实现任务的自动调度本系统中需要自动执行的任务,这些任务的执行具有一定的时间频率,同时也要求在制定时间点自动执行,任务的自动调度是让这些任务实现自动执行不可或缺的模块。本系统使用Quartz来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论