1、 目 录摘 要IABSTRACTII第1章 绪论11.1 背景知识介绍11.2 系统概述1第2章 软件的架构及开发工具的选择22.1 软件架构选择22.2 数据库系统的选择22.3 开发技术及开发工具32.3.1 Struts技术简介32.3.2 Hibernate技术简介4第3章 系统分析及总体设计53.1 系统需求分析53.2 系统功能分析63.2.1 系统功能63.2.2 系统结构73.3 系统总体设计方案7第4章 系统的详细设计及代码实现94.1 类图94.1.1 表现层94.1.2 业务层114.1.3 数据持久层124.2 代码实现134.2.1 树形图展示的实现134.2.2 数
2、据库实现和配置文件介绍154.3 用户界面介绍174.3.1 树形图界面174.3.2 岗位查询界面18结 论19参考文献20河南大学本科毕业生学士学位论文摘 要随着计算机技术、互联网和高级管理学的推动,人力资源管理电子化(e-HR)时代到来了。目前的人力资源管理系统中只是提供了组织单元信息以及隶属关系的维护功能,而越来越多的客户要求提供可以展示组织结构图的功能,因此实现组织结构的图形展示成为一个迫在眉睫的工作。本文中描述的组织结构图将组织单元的隶属关系用图形方式展现出来,以便用户能更好的了解组织单元中各部分之间的层次关系。主要功能有设置组织结构图查看选项,显示组织单元的详细信息,以树形或伞形
3、显示当前组织结构,显示当前组织单元的岗位和人员信息等。该系统采用B/S设计模式,是在J2EE平台上开发的,使用java语言编写,并使用Oracle9i存储数据。关键词 组织单元,岗位管理,人员管理,JSP,OracleABSTRACTAlong with the impetus of computer technology, the Internet development and the high-level management study, e-HR (human resources management system) age is arrived. In the present, E
4、-HR only provides functions of organization unit information and relationship maintenance. But, more and more clients show the interest of the organization structure drawing display. So the work of showing the organization structure drawing is necessary.This paper describes the organization structur
5、e drawing which unfold the organization unit with the graphic mode in order to make the user understand the organization unit structure better. The main functions includes setting display options of organization structure drawing, showing organization unit information in details, displaying current
6、organization structure by tree or umbrella display mode, position and people information of current organization unit, etc.The design mode is B/S. The development is based on J2EE platform. The language is Java language. Oracle9i is used as data storage.Keywords Organization Unit, station management
7、, human management, JSP, Oracle第 20 页第1章 绪论组织结构图展示是人力资源管理系统的功能之一。本章主要介绍组织结构图的背景知识,使读者对组织结构图有个总体的了解。1.1 背景知识介绍随着计算机技术、互联网和高级管理学的推动,人力资源管理电子化(e-HR)时代到来了。“e-HR”是一个赋予了崭新意义的概念,是一种以电子商务、互联网为基础,以客户为导向,使人力资源业务流程优化、人力资源管理全面化的新型人力资源管理模式。目前的人力资源管理系统中只是提供了组织单元信息以及隶属关系的维护功能,而越来越多的客户要求提供可以展示组织结构图的功能,因此实现组织结构的图形展示
8、成为一个迫在眉睫的工作。总之,组织结构图子系统是一种以网络化为基础的系统,是现代人力资源综合解决方案的一部分,它的开发将会使人力资源管理更为方便快捷。在此环境下,身处校园里的同学们也很有必要对组织结构图的实现过程有一个大致的了解。该系统即针对此目的开发出来的。1.2 系统概述e-HR包括核心的人力资源管理业务如:组织机构管理、人员配置管理、招聘管理、培训考核管理、福利管理、时间管理、绩效管理、薪酬管理等。e-HR的使用者,除了一般的HR从业者外,普通员工、经理及总裁都将与e-HR的基础平台发生相应权限的互动关系。本系统会提供一个更为方便的方式来管理人力资源。本系统主要是为组织管理模块提供展示组
9、织结构图的功能,把系统中已经维护好了的组织单元隶属关系用图形的方式展示出来,并且提供结构图的输出功能,方便用户了解组织单元的构成。第2章 软件的架构及开发工具的选择好的软件架构和开发工具能使系统的开发简单化。本章主要介绍开发工具的选择,数据库的选择以及用到的关键技术。2.1 软件架构选择根据系统需求分析,结合目前网络的特点,决定采用基于B/S(browser/service)的三层设计模式。本系统采用Java 2 Platform Enterprise Edition(J2EE)架构,包括数据库层、应用服务器层及客户层。基于B/S体系结构,所有的操作都在浏览器中进行,业务操作客户端将借助浏览器
10、访问服务器端的资源。中间业务逻辑层包含了大量的供客户端程序调用的业务逻辑规则,以帮助其完成业务操作。它的优点就在于它所具有的可伸缩性,可使其随具体业务的变化而改变,但在客户层和数据服务层所做的改动较小,适合于快速开发。数据服务层主要由中间业务层来调用并完成业务逻辑,当数据库的结构确定后,对于它的改动也就比较小了。数据服务器作为数据处理的焦点,便于对数据的集中管理;充分利用服务器的系统资源;降低了对客户机的要求。2.2 数据库系统的选择由于本次程序设计是基于Internet的B/S网络数据库应用模式,所以选择数据库平台时考虑的因素就要以能够更好的满足B/S模式的需求为前提,主要应该考虑以下几点:
11、1性能:反应时间和吞吐量;2查询优化:提高系统处理能力和降低网络流量;3事务处理:保证数据的完整性和一致性,可恢复性;4联机备份和恢复:保证系统的可靠性、完整性和可恢复性。并且随着Internet的发展,对数据库平台也有了新的要求,如对Internet标准的支持、应能通过Web对数据进行访问、较高的易用性和较低的拥有成本以及相对简单的开发和管理等。Oracle9i是一个可移植的数据库它在相关的每一个平台上都可以使用,它专门为分布式客户服务器计算环境而设计。它的可靠的联机备份功能、高可用性、安全性、强大的管理工具和开放的体系结构为信息管理系统提供了一个很好的平台。由于Oracle9i具有上述特点
12、,因此我们选择它作为基于Internet和数据库的组织结构图展示的数据库平台。2.3 开发技术及开发工具该系统主要是在struts框架下开发的,本节对该系统用到的struts技术和Hibernate技术做一个简单介绍。2.3.1 Struts技术简介Struts是一个基于J2EE平台的MVC框架,主要是采用Servlet和JSP(Java server page)技术来实现的。Struts把Servlet、JSP、自定义标签和信息资源整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。Struts框架可
13、分为以下四个主要部分,其中三个就和MVC模式紧密相关:(1)模型(Model),本质上来说在Struts中Model是一个Action类,开发者通过其实现商业逻辑,同时用户请求通过控制器(Controller)向Action的转发过程是基于由struts-config.xml文件描述的配置信息的。(2)视图(View),View是由与控制器Servlet配合工作的一整套JSP定制标签库构成,利用它们我们可以快速建立应用系统的界面。(3)控制器(Controller),本质上是一个Servlet,将客户端请求转发到相应的Action类。(4)用来做XML文件解析的工具包,Struts是用XML来
14、描述如何自动产生一些JavaBean的属性的,此外Struts还利用XML来描述在国际化应用中的用户提示信息(实现了应用系统的多语言支持)。MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开。MVC模式把应用程序分成三个核心模块:模型、视图和控制器,它们分别承担不同的任务。用户通过视图向控制器发请求,控制器接受请求并进行业务处理,这三个模块各自的功能以及它们之间的关系如图2-1所示。图2-1 MVC模式功能图2.3.2 Hibernate技术简介Hibernate的工作原理是通过文件把值对象和数据库表之间建立起一个映射关系,这样,我们只需要通过操作这些值对象和Hibernate提
15、供的一些基本类,就可以达到使用数据库的目的。例如,使用Hibernate的查询,可以直接返回包含某个值对象的列表(List),而不必像传统的JDBC(Java数据库连接)访问方式一样把结果集的数据逐个装载到一个值对象中,为我们的编码工作节省了大量的时间。Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据库之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API(应用编程接口).在基于MVC设计模式的Java Web应用中,Hibernate可以作为应用的数据访问层或持久层。第3章 系统分析及总体设计目前“慧
16、鼎”人力资源管理系统中只提供了组织单元隶属关系的维护功能,并没有把组织单元层次结构用图形方式展现出来,而客户要求提供这个功能,因此,应客户的要求,该子系统将对这一功能进行设计和实现。本章首先对该子系统的需求进行分析,然后通过功能分析得到该系统的结构和设计方案。3.1 系统需求分析下面对系统的目标、要求、用户以及运行环境做一下描述。(1) 系统目标本系统的目标是给用户提供可以展示组织结构图的功能,主要是把系统中已经维护好了的组织单元隶属关系用图形的方式展示出来。(2) 系统用户该系统的用户主要是人力资源系统的使用者,在使用该系统的过程中,用户可以根据自己的喜好来设置颜色以及查看的维度。(3) 系
17、统要求a. 质量和性能规定可用性要求风格统一,便于用户操作。性能要求可以同时显示至少100个组织单元,显示的时间为2秒以内。b. 安全性要求使用权限的约束,目的是为了让有权限的操作人员进行相关功能的操作,增加系统的安全性。c. 数据管理数据库至少支持Oracle和SQL Server以及DB2,使用通用的SQL语句。语言采用以Java为主。要求数据库管理系统具有数据一致性,安全性,数据导入、导出等的服务功能。d. 输入输出尽量让用户的输入量将至最低,在必须输入时,应做到输入方法简单、迅速和方便用户。输出的内容应和用户的操作同步并且要简洁得体。(4) 运行环境规定a. 硬件服务器:CPU:3.0
18、G以上;内存:1GB以上;硬盘:40G以上。客户端:CPU:C3(r)866MHz以上;内存:128MB以上;硬盘:20G以上;以太网卡。b. 软件服务器:Tomcat5.0/WebSphere/WebLogic 服务器。客户端:Microsoft Windows Me/XP/2000 ;Linux ;Unix。数据库平台:Oracle 9i;Microsoft SQL Server 2000;DB2。网络协议:HTTP协议。3.2 系统功能分析本小节首先对该子系统将要实现的功能进行分析,然后说明一下系统结构。3.2.1 系统功能组织结构图子系统将要实现的功能分析如下:组织结构图主要是以图形的
19、方式展示上级与下级组织单元的关系,使得组织单元隶属关系按照设定的方式进行显示,设置显示的内容包括:1.设置显示样式;2.设置显示维度;3.设置组织单元框颜色。该系统主要是让用户方便的了解组织单元的结构,下面对系统的功能做一下详细介绍。(1) 设置组织结构图查看选项:设置组织结构图的查看方式;查看维度,显示图形的根节点;设置查看框图的颜色。(2) 显示组织单元的详细信息:当展示树形或伞形结构图时,使用者可以查看组织单元的详细信息。(3) 以树形图显示当前组织结构。(4) 以伞形图显示当前组织结构。(5) 显示当前组织单元的岗位信息:用隐藏的查询页面查询想要的岗信息。(6) 显示当前组织单元的人员
20、信息:用隐藏的查询页面查询想要的人员信息。3.2.2 系统结构本子系统是把组织单元的隶属关系用图形方式展现出来,它的结构是用户登录到主页面,然后打开设置查看选项页面,用户可以在这个页面中设置用树形图或者伞形图方式来展示组织单元的层次结构,并且可以为不同的组织单元类型设置不同的显示颜色,客户通过点击树形图和伞形图上面的小图标可以查看岗位信息、人员信息和公司详细信息,在显示岗位信息和人员信息的页面上有隐藏的框图,在这里用户可以查询想要的信息。系统的层次结构如图3-1所示。图3-1 系统结构层次图3.3 系统总体设计方案要想开发出一个好的系统,就必须要对系统的需求有一个明确的认识,然后做出一个总体的
21、设计方案,最后按照设计方案进行开发。本节主要介绍该子系统的总体设计方案。软件系统是实施整个系统各项功能于目标的中心环节,软件系统的设计与实施是系统建设的重点与关键所在。软件系统总体设计的主要任务是根据系统的总体目标和功能将整个系统合理划分若干个功能模块,得出系统的流程图及正确地处理模块之间的调用关系和数据关系,定义各个模块的内部结构等等。因此系统总体结构设计显得尤其重要。本系统在整体上可以划分数据持久层,表现层和业务层三个部分,现将各个部分作具体描述,以便对组织结构图的设计与实现系统做一个总体的认识。(1) 表现层包括设置查看选项页面,树形图查看页面,伞形图查看页面,岗位信息查看页面,人员信息
22、查看页面以及公司详细信息查看页面,一般由Window窗体实现。(2) 业务层是对表现层传过来的数据进行操作,提供整个系统业务方法,并对数据进行验证,通过在Action类中创建对象来调用它类中的方法,在业务层的方法中返回查询条件给DAO类数据持久层。经过处理的数据会放在一个PO类中,然后经过在DAO类里面调用方法把PO类转换为VO类。之后再把数据返回给业务层,通过在Action类中创建封装好的Service类的对象来调用它类中的方法把数据存入FormBean中,最后通过Action中FormBean的实例把数据返回给JSP页面。(3) 数据持久层是系统的最底层,它存储系统的所有数据,并且实现数据
23、库里面数据的查询,因此数据库的设计应符合数据库的理论。本系统严格按照上述思想设计了以上几个部分。第4章 系统的详细设计及代码实现本章主要介绍系统的设计过程以及代码的实现。首先介绍开发本系统用到的表现层文件,业务层文件和数据持久层文件,并详细说明这些文件的作用,然后再介绍该系统功能的实现。4.1 类图由于本系统是用基于Struts的MVC框架来做的,所以首先要根据前面的系统分析来做一下系统的详细设计,得出该系统中用到的表现层、业务层和数据持久层的JAVA类以及它们要实现的功能,本节会介绍一下系统中将会用到的JAVA类以及各类的作用。4.1.1 表现层由于该系统是在浏览器下查看的,所以决定用JSP
24、页面实现客户端查看功能。下面介绍一下系统中用到的表现层的文件。(1) JSP文件系统中用到的JSP文件如图4-1所示。图4-1 表现层类图tree_test.jsp:显示树形图展示组织结构的页面,页面上的操作按钮包括“岗位信息查询(图标)”“人员信息查询(图标)”“设置查看选项”“组织单元详细信息查询(标签)”。station.jsp:显示岗位信息的页面,页面上的操作按钮包括“包含岗位查询”。unitInfo.jsp:显示组织单元详细信息的页面。(2) Action和FormBean文件系统中用到的Action和FormBean文件如图4-2所示。图4-2 业务逻辑处理图OrgUnitActi
25、on类中方法的说明:listTest_tree():以树形显示组织单元,在这个方法中要先通过创建集成好的funcVO 类的对象调用getFuncCode()方法获得功能代码,然后在FormBean中设置功能代码这个属性,最后在JSP中通过和 标签来显示出树形结构。viewStation():获得组织单元所包含的岗位列表,form中的属性需要包括OrgUnitVO类的一个对象,然后在Spring中配置一下业务层文件,通过使用getBean(orgUnitCommonService)语句来创建系统中集成好的OrgUnitCommonService类的对象,通过对象调用方法实现查询岗位信息的功能。v
26、iewInfo():该方法主要是获得组织单元基本信息,form中的属性需要包括OrgUnitVO类的一个对象,然后在Spring配置文件中配置一下业务层类用到的java类文件,通过使用父类中已经定义好的getBean(orgUnitCommonService)语句来创建系统中集成好的OrgUnitCommonService类的对象,通过对象调用方法实现查询组织单元详细信息的功能。 4.1.2 业务层由于该系统中只用到了查询功能,所以在业务层没有验证功能,只需要创建数据层的对象,然后调用方法即可。下面介绍一下系统中用到的业务层文件。(1) Service业务层接口和接口的实现系统中用到的业务层文
27、件如图4-3所示。图4-3 业务层类图用到的方法说明:getOrgUnitBaseInfo(String code):获取组织单元的基本信息。通过一个DAO的对象调用DAO里面的getOrgUnitBaseInfo()方法,把PO转换成VO并返回,再通过Service的实例传给Action。根据code取得组织单元的基本信息。该方法返回一个OrgUnitVO类的对象,抛出BaseException异常。listAllUnit():返回组织单元的一个列表。通过DAO的对象调用DAO里面的listAllUnit()方法,返回一个组织单元的列表。getOrgUnitBaseInfoByOid():获
28、取组织单元基本信息里面的Oid。setOrgUnitDAO():设置组织单元的DAO。(2) VO类系统中用到的VO类如图4-4所示。图4-4 VO类图level:组织单元的级别。addOn:附加信息status:状态unitOID:组织单元号code:组织单元编号hiberarchyID:维度系统编号4.1.3 数据持久层下面介绍一下与数据持久层相关的类文件。(1) DAO类系统中用到的DAO类如图4-5所示。图4-5 数据类图方法说明如下:converToVO():把PO转换为VO,参数是unitPO的对象,返回组织单元信息。 getOrgUnitBaseInfo():根据code取得组织
29、单元的基本信息,该方法返回一个OrgUnitVO类的对象,抛出SystemException异常。listAllUnit(unitID,hiberarchyID):取得组织单元在指定维度下的汇报关系,返回一个由PO组成的List,抛出SystemException异常。(2) PO类 系统中用到的PO类如图4-6所示。图4-6 PO类图UnitOID:组织单元号Code:组织单元编号hiberarchyID:维度系统编号addOn:附加信息status:状态remark:备注level:组织单元的级别4.2 代码实现本小节中对系统中用到的关键代码进行介绍。4.2.1 树形图展示的实现树形图展示
30、的实现主要分如下两步:第一,先在配置文件TalentBase.tld中的配置一个listTree标签,然后再JSP页面中引用这个标签来展示树形图,在展示这个图形的时候JSP页面的代码是很少的,关键是标签的代码,在标签的四个JAVA文件中的playByTree()类中用一个render()方法来具体实现,具体在配置文件中的配置如下: listTree /这个名字是标签的名字,在页面中可以引用 mon.business.organization.orgunit.orgtag.OrgUnitTreeTag /这个是这个标签所在的路径。 fromUnitID false /这个属性是设置单元框的ID,
31、可以通过该ID来查询信息 hiberarchyID false /这个属性是维度的ID,通过这个ID可以按照不同的维度显示出不同的组织单元 第二,在标签中用render()方法实现。这个方法中首先要定义一个表,确定树形图显示的位置,然后通过判断用定义好的图把图形显示出来。private void render ( StringBuffer buffer, StructureChartNode treeNode, boolean last, Boolean first ) buffer.append (); buffer.append (); /下面是图形的形成过程,先通过判断再显示图片。 bu
32、ffer.append (img src=).append (contextPath);/先判断是不是最后一个图片,然后再判断,如果是打开的话显示lastOpenBranchImg这个图片,如果是关闭的话显示lastCloseBranchImg这个图片。 if (last) if ( if Open(String.valueOf(treeNode.getUnitId() buffer.append (lastOpenBranchImg); else buffer.append (lastCloseBranchImg); /不是最后一个图片的话按照下面的方法显示。 else if (if Ope
33、n (String.value Of (treeNode.get UnitId() buffer.append (openBranchImg); else buffer.append (closeBranchImg); 4.2.2 数据库实现和配置文件介绍本系统用的是远程连接数据库,所以首先应在datasource.xml配置文件中与数据库建立连接,在此配置文件中要定义数据库的名字和要连接数据库的地址,还要配置一下用户名和密码,具体实现如下: oracle /说明用到的数据库不得类型 oracle.jdbc.driver.OracleDriver /配置一下oracle数据库的驱动器 jdbc
34、:oracle:thin:192.168.29.100:1521:oradb /说明数据库的用户名和密码 tb_group5 tb_group5 下面举个例子来说明数据库中的表是怎样与数据库进行映射的,并说明一下数据库中的表是怎样映射到JAVA类中的。如岗位表TB_ORG_JOB和它对应的Hibernate映射文件jobPO.hbm.xml表TB_ORG_JOB结构如图4-7所示。图4-7 岗位表结构图对应的映射文件中要先定义表的名字,然后再对表中的列进行定义,对每一列进行命名,以方便在PO和VO 中使用,关键代码如下:/说明与JobPO类对应的表TB_ORG_JOB,以便用PO来存储数据操作
35、的结果/定义表中的一列为id,并另外命名为oid,在影射文件jobPO.hbm.xml中应有该属性的定义为了把数据层和业务层分开,系统中定义了一个VO类来实现这个功能,DAO类中又把PO类转换为VO类的方法的实现,具体做法是先创建一个VO类的对象,然后调用系统的方法把PO转换为VO代码如下:public Object doConvert (Object po) throws SystemException OrgUnitVO vo = new OrgUnitVO(); return BeanUtil.copyBeanProperties (vo, po); 该系统的各个文件大多是通过配置文件实
36、现映射并执行的,所以在这里介绍一下配置文件我觉得是很有必要的。(1) web.xml 这个文件主要是用来映射Struts配置文件的,系统在执行时要先通过这个文件找到用到的struts-config.xml。(2) struts-config.xml 这个文件的主要作用是配置系统中要用到的一些FormBean和Action文件,里面会有一个Path,还有一个Forward对应的路径,通过调用Action里面的方法返回一个Forward。此配置文件里面还有一个关于Tiles-org.xml的配置,系统通过这个文件中配置的路径,找到Tiles-org.xml文件。(3) tiles-org.xml
37、这个文件主要是映射Jsp文件的,通过Struts文件中forward对应的路径来找到在这个文件中对应得Jsp文件。(4) spring-org.xml 在这个文件中要用一个name属性来对应业务层的类,在Action方法中用GetBean()方法来创建业务层类的对象。4.3 用户界面介绍本小节中要简要描述一下客户所看到的页面。4.3.1 树形图界面用户通过在“设置查看选项”页面里面的选择树形展示可以显示这个页面,本界面是用户看到的树形图的展示,用户可以通过点击图形上的图标来查看岗位和人员信息。界面如图4-8所示。图4-8 树形展示图4.3.2 岗位查询界面用户在树形/伞形图上点击“”图标会弹出
38、这个页面,并通过输入查询条件来查询岗位信息。界面如图4-9所示。图4-9 岗位查询图结 论在人力资源重要性日益突出的今天,人力资源管理系统的出现也是必然,组织结构管理是人力资源管理的核心业务之一,在此环境下,开发组织结构图管理系统的目的是使人力资源管理简单化。由此在校园里的学生也很有必要了解组织结构图的功能,该系统就是基于此目的开发出来的。其中着重介绍了树形图和伞形图的展示,还介绍了岗位信息和人员信息查询。系统主要包括设置组织结构图查看选项、以树形图和伞形图显示当前组织结构、显示当前组织单元的岗位信息和人员信息三个功能模块。该系统是用Struts框架做出来的,通过这次毕业设计,我深深地体会到理
39、论与实际相结合的重要性。在实际做系统的过程中,我们可以将以前所学的知识综合运用,更加透彻的去理解运用这些知识。在解决系统中所遇到的问题时,还要使用到以前没有学习过的知识,这就需要我们不断学习新的知识。当然该系统只是一个初步的设计,它如果要真正应用于人力资源管理系统仍有一定的差距。如用PDF格式输出,在此系统中这次就没有实现,所以此系统有待继续开发和完善。 参考文献1 廖卫东等著,Java程序设计实用指南,北京机械工业出版社,1996年10月2 Karl Avedal著,JSP编程指南,电子工业出版社,2001年3 梁立新著,基于 Struts-Spring-Hibernate 的 Java 应用开发,电子工业出版社,2006年4 孙卫琴著, 精通Struts:基于MVC的Java Web设计与开发, 电子工业出版社, 2004年5 高昂等著, 基于Hibernate与Struts框架的数据持久化应用研究,2005年 6 Deitel著,Java大学基础教程(第六版)(英文版),电子工业出版社,2005年9月