您的位置:首页 > 其它

基于SSH框架的PLM构件库管理系统的设计与实现

2013-02-06 17:43 417 查看
0 引言

随着企业信息化管理的进一步深入和企业对信息化要求的提高,企业越来越重视将各类信息化管理软件(如CIMS、IPD、ERP、PDM、SCM、OA、CRM等)集成到一个白适应的软件集成平台中,这也是PLM(产品生命周期管理)软件开发的目的。

软件行业的工业化趋势导致了构件的产生,让部分软件能够像硬件系统那样组合起来构建软件系统,就实现了软件的复用。若能结合系统的实际情况,充分利用已有的软件构件,将会大大提高生产效率,减少大量的重复劳动。因此,为了方便构件的管理和复用,解决传统的软件开发模式中通用性差、柔性低、开发效率低等一系列问题,笔者采用“高内聚,低耦合”的成熟框架Stmts+S研ng+Hibemate(简称SSH框架)来进行PLM构件库管理系统的开发,以加快整个PLM项目的开发进度,达到软件复用的目的。

1 关键技术

Struts、Spring、Hibernate是三个既相互独立又彼此关联的框架,它们可以无缝地整合起来构建灵活、易于扩展的多层Web应用程序,Struts用来实现表示层,Spring实现业务层,Hibemate实现持久层。




图1. Struts、Spring、Hibernate关系图
1.1 Struts

Struts使用MVC的设计模式来开发程序,在项目中负责表示层的开发,体系结构如图2所示。其中,WEB容器对来自H11P的每个请求创建一个request对象,并用一个response对象作出响应;视图(View)是一系列提交到客户浏览器进行显示的JSP文件,即用户看到并与之交互的界面,在这些界面中没有业务逻辑和模型信息,只有标签。控制器(Controller)接收来自浏览器的请求,在struts中是由一个Servlet来充当控制器的角色,用struts—config.xml文件配置控制器,模型(Model)表示应用程序的状态和业务逻辑。在struts中,由Action类充当业务逻辑的包装器,ActionForm是程序的状态。




图2. Struts框架图
1.2 Spring

Spring是一个以依赖注入(DI)原则和面向方面编程思想(AOP)为基础的轻量级框架。在业务层中,许多对象是需要管理的,原来对象的创建是由工厂完成的,但是对象之间不只是创建,它们之间还有很多依赖关系,在传统的工厂模式中这些关系是我们自己来维护的。而Spring实现了IOC(控制反转)容器,它可以管理对象之间的关系,并且它还提供了一个事物的概念,使用它就不用专门来写事物的建立、回滚、提交了。

1.3 Hibernate

传统的JDBC操作的是关系型数据库,而且操作步骤比较繁琐,而用JAVA开发程序则使用面向对象的思想,Hibemate正是在这两种不同的模型之间建立关联(如图3所示),提供了利用面向对象的思想来操作关系型数据库的接口,把对象模型的实体保存到关系模型中,实体中的类对应关系模型的一个表,其属性对应表中的字段,而实例则对应关系数据库表中的一条记录。有了Hibernate,对数据库的一些操作,直接操作对象就能完成了。




图3. Hibernate框架图
2 PLM构件库管理系统的设计

本文采用的构件库管理框架模型如图4所示。在研究构件的描述方法、分类模型和信息表示的基础上,采用StrutS、spring和Hibernate技术实现了对构件的存储、检索、删除、更新和组装。构件的描述主要是实现对构件功能、接口、与其他构件关系的说明;软构件的分类决定了构件库的组织、管理,以及构件库的查询和用户对软件构件的理解;构件信息只有被有效地表示,才能方便地存储和检索构件。

2.1 构件的描述

构件描述方法是指运用某种表示法描绘构件的抽象特征,它是基于构件的软件开发和构件复用过程中的一项关键技术,它规定了一个软件构件所需的结构和内容。本文采用了BNF文法来对构件进行描述,描述构件的语法如下:

::=【】

一个构件由概念、上下文和内容三部分组成。Concept描述软件完成什么功能,描述构件的接口和语义,它和内容(Content)能够进行通信;Context是构件详细描述,描述上下文、组件在其适用领域内的配置,通过对概念、操作和实现特征的详细说明。上下文能够使软件寻找到满足应用需求的组件;Content描述如何实现这个构件,一般情况下,构件的内容信息对临时用户是隐藏的,只有需要对构件作修改的用户才是可知的。

2.2 构件的分类

对大量构件进行分类,既便于组织管理,又方便查询和辅助理解。在众多的分类方法中,刻面分类模式具有准确的分类能力,能够解决构件分类的二义性问题和冗余问题,又具有可扩充性和灵活性。易于维护,是较为理想的构件分类方法。因此,在本构件库系统中笔者采用刻面分类方法,为系统设计了刻面与子刻面(见表1)。

表1. 刻面分类表




2.3 构件的表示

构件描述可以展开为一棵刻面描述树,而XML语言本身的树结构特征,使得XML语言成为构件刻面描述的理想工具。此外,XML schema是一种模式定义语言,利用该语言可以定义XML模式来约束XML文档。因此,本文以XML schema为基础,来实现对XML文档的验证,验证通过的XML文档才可存人数据库中。限于篇幅,这里不再列出XML Schema文件。以下是用XML表示的构件基本信息:





3 基于SSH框架的PLM构件库管理系统的实现

PLM构件库管理系统是采用Struts、Spring、Hibernate这三个架构通过无缝的整合来开发的。其基本业务流程为:(1)通过JSP页面实现交互界面,负责传递请求和接受响应;(2)在表示层引入Struts,根据Struts ActionServlet接受到的Request,委派相应的Action;(3)在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件,提升系统性能,保证数据完整性;(4)持久层依赖于Hibernate的对象化映射和数据库交互以处理DAO组件请求的数据,并返回处理结果。整个系统如图5示。





图5. 基于SSH框架的PLM构件库管理系统

3.1 表示层的实现

表示层由Struts框架来实现,在PLM构件库管理系统中,构件的添加、修改、删除、检索、组装等前台显示页面是由Struts技术来实现的。以Struts-config.xml配置文件为核心,Controller负责控制流程,由Actionservlet负责读取Struts-config.xml,并使用ActionMapping来查找对应的Action,Model由系统状态BeanActionForm和业务逻辑JavaBean来构建,View是由JSP和Struts提供的自定义标签(Struts Taglib)来实现。开发人员在业务流控制方面的主要工作是对Struts-config.xml进行配置,Actionservlet将会按照这个配置文件,在收到客户端发来的请求后,将其转发到相应的JSP页面并进行验证和填充等业务逻辑操作。在配置文件中使用FormBean对页面请求或返回页面的数据进行封装,使数据持久层和业务逻辑分离,并提供它们之间的接口。当页面发来的请求数据和业务逻辑处理完成后的返回数据都按Fo珊Bean中的格式进行封装后,才转给下一个业务逻辑处理或将页面返回给用户。

3.2 业务层的实现

Spring是业务逻辑层的容器,起到连接表示层和持久层的作用,它把对持久层的操作都封装在自己层的bean里,然后让前端表示层调用相应的bean来完成对后台数据库的操作。对PLM构件的增加、删除、修改等业务逻辑均在此层实现,我们通过应用Spring的反向控制原理和面向切面的编程技术成功地实现了系统中业务逻辑层的功能,并完成了与struts的完美结合。这里所采用的方法是将业务逻辑对象通过Spring注入到Struts的Action中,从而避免了在Action类中的直接代码查询,因为Action需要调用业务逻辑方法,所以需要在Action中提供server方法,让spring将业务逻辑对象注入过来。在Struts-config.xml文件中要配置标签中的type属性,将其修改为org.springframework.web.struts.DelegatingActionProxy,它的主要作用是取得BeanFactory,然后根据中的path属性值,到IoC容器中取得本次请求对应的Action在Spring配置文件中需要定义Struts的Action,例如:





在这里必须使用name属性,并且name属性值必须和struts-config.xml文件中标签的path属性值一致,而且必须注入业务逻辑对象。

3.3 持久层的实现

数据的持久化是用Hibernate来完成的,在PLM构件库管理系统中所有与数据库交互的工作都交由它来完成。Hibernate改变了传统的开发方式,做项目不再先建表,而是直接操作对象,先把对象模型建立起来,针对项目中的所有实体,把它们的关系都建立起来,然后用Hibernate将这些关系一一映射,就把这些对象生成表了。这样的开发方式更加面向对象,因为我们可以不知道表的存在。

使用Hibernate来操纵数据库要通过以下几个步骤:(1)创建Hibernate配置文件Hibernate.cfg.xml;(2)定义实体类和它的映射文件Component.hbm.xml,并将此文件加入到hibernate.cfg.xml文件中;(3)编写hbm2ddl工具类,将实体类生成数据库表,这样就可以用HQL语言来和数据库交互了。

Spring为持久层的开发提供了强有力的支持,其中对于Hibernate的支持包括Hibernate Template、Hibernate Interceptor和Hibernate transaction manager。Hibernate的连接、事务管理等是由SessionFactory开始的,SessionFactory底层的Datasource可以使用Spring的IoC注入,然后将SessionFactory注入到相应的对象中,从而实现Hibernate和Spring的完美整合。

4 结束语

本文在研究构件的描述、分类、表示以及构件库体系结构的基础上,通过对构件库中构件模型和分类模型的研究,设计实现了一个采用刻面分类模式描述构件,用XML表示构件,结合J2EE框架整合了当前国内外软件企业流行的Struts+Hibemate+Spring这三种应用技术的构件库管理系统。和传统的构件库相比,Struts的三层结构使动作控制、数据处理、结果显示分离开来,Spring利用延时注入思想组装代码,大大增强了项目的可扩展性,降低了维护成本,提高了软件开发效率;Hibernate的引入避免了手工编写访问数据持久层的方法,使系统具有良好的交互性、较好的可移植性和维护性,为项目中其他模块的快速开发做出了贡献。

http://articles.e-works.net.cn/PDM/Article73926_1.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: