建筑施工信息管理系统的设计与实现.docx
建筑施工信息管理系统的设计与实现目录目录i摘要IllAbstractIV第一章绪论11.1 研究背景11.2 国内外研究现状11.3 研究内容4第二章相关技术简介52.1 J2EE平台概述52.1.1 J2EE多层平台52.1.2 轻量级J2EE框架62.2 SOA架构概述122.2.1 SOA技术简介122.2.2 J2EE对SOA架构的支持15第三章系统分析193.1 系统需求概述193.1.1 系统需求分析原则193.1.2 需求概述193.2 具体功能需求分析203.3 系统开发模式233.4 可行性分析25第四章系统设计与实现264.1 总体结构设计264.2 数据库设计与实现264.2.1 具体表结构设计264.2.2 数据库持久化实现294.2.3 数据库存取优化314.3 系统框架实现324.3.1 表现层实现334.3.2 逻辑层实现344.3.3 持久层实现354.4 功能实现364.4.1 采购管理子系统实现364.4.2 成本管理子系统实现384.5 系统对外接口实现404.5.1 功能实现414.5.2 服务发布414.5.3 服务调用424.6 系统安全实现434.6.1 数据备份功能434.6.2 数据恢复功能46第五章总结50参考文献Sl摘要项目管理软件的开发对于项目管理的信息化,企业效益的提高有着非常重要的意义。虽然,随着信息技术的不断发展,我国几乎所有的大型建筑企业以及在一部分本文针对基于SoA技术的工程项目管理系统主要进行了如下几个方面的研究:首先,在对工程项目管理系统的研究背景进行分析,并针对目前国内工程项目管理系统在建设方面存在的不足以及在集成方面存在不足的问题,提出了基于SoA技术来进行工程项目系统的策略;然后,针对本文对工程项目管理系统研究中所涉及的J2EE技术以及SOA技术进行了简单介绍和研究;其次,在对系统需求进行简单概述的基础上,针对系统建设所需要的具体功能,以及系统建设的可行性进行了研究;最后,在对系统总体结构进行设计的基础上,对系统实现的框架进行了分析,并且主要以材料采购管理子系统以及成本管理子系统为例,对工程项目管理系统的具体功能进行了研究,并以项目管理子系统之间的信息通信为例,对SC)A技术在工程项目管理系统中的应用进行了研究。小型建筑企业都开始使用项目管理软件对工程项目进行管理,但是在系统建设方面、系统的集成方面以及工程项目管理软件的应用方面都存在较大的不足,为此,本文主要从系统建设方面以及系统集成方面提出使用SOA技术来进行工程项目管理系统的研究。基于SoA技术的工程项目管理系统,不仅能够很好的解决项目管理系统中各个业务功能子系统之间的信息通信问题,同时还有助于集团公司及时掌握项目的进展情况,为此,基于SOA技术的工程项目管理系统的研究就有非常重要的现实意义。关键字:SoA技术;工程项目管理;材料采购;材料库存;成本管理AbstractProjectmanagementsoftwaredevelopmentforprojectmanagementinformation,enterpriseefficiencyhasaveryimportantsignificance.Although,withthedevelopmentofitinourcountry,almostallofthelargebuildingenterprise,andinpartofthesmallbuildingenterprisebeganusingtheprojectmanagementsoftwareonprojectmanagement,butinthesystemconstruction,systemintegrationandprojectmanagementsoftwareapplicationtherearelargershortage,forthis,thisarticlemainlyfromthesystemconstructionandsystemintegrationtousetechnologytocarryoutSOAengineeringprojectmanagementsystemofresearch.ThispaperbasedonthetechnologyoftheSOAengineeringprojectmanagementsystemmainlymakethefollowingseveralaspectsofresearch:firstofall,intheengineeringprojectmanagementsystemintheresearchbackgroundanalysis,andinthelightofthecurrentdomesticengineeringprojectmanagementsysteminconstructionandthedeficiencyoftheexistingintheintegrationoftheinadequacyoftheproblems,andputforwardbasedonSOAtechnologytocarryouttheprojectsystemstrategy;Then,accordingtothisarticleintheengineeringprojectmanagementsystemtheresearchonJ2EEtechnologyandSOAtechnologyareintroducedinbriefandresearch;Secondly,inabriefoverviewofthesystemneeds,onthebasisoftheconstructionofsystemtothespecificfunctionofthesystem,andthefeasibilityofconstruction,theFinally,intotalstructuredesignofthesystem,onthebasisoftheframeofthesystemareanalyzed,andthemainmanagementsubsystemtomaterialpurchasingandcostmanagementsubsystem,forexample,intheengineeringprojectmanagementsystemofthespecificfunction,andtoprojectmanagementsubsystemofinformationcommunicationbetweenasanexample,theSOAtechnologyinconstructionprojectmanagementoftheapplicationofthesystemarestudied.BasedonthetechnologyoftheSOAengineeringProjeCtmanagementsystem,cannotonlybeasolutiontotheprojectmanagementsystemofvariousbusinessfunctionsofinformationcommunicationbetweensubsystemsand,atthesametime,alsohelpgroupcompanyintimecontroloftheprogressoftheproject,therefore,thetechnologybasedonSOAengineeringprojectmanagementsystem,thestudyisoneveryimportantpracticalsignificance.Keywords:SOAtechnology;Engineeringprojectmanagement;Materialpurchase;Materialinventory;Costmanagement第一章绪论1.1 研究背景随着计算机信息技术的飞速发展,社会已经发展到了知识经济时代,信息技术已经普及到了社会的各个领域,建筑工程项目管理的信息化也成为了必然的发展趋势。随着信息技术的发展,信息己经呈现了爆炸式增长趋势,因此,传统的人工管理已经满足不了知识爆炸式发展的趋势,项目管理越来越依赖于计算机信息处理手段。从某种意义上而言,社会的竞争已经发展成为了信息的竞争。进入21实际之后,知识经济已经来临,与之相应的项目管理也已经成为了人们热点研窕的问题。在美国著名杂志Fortune中预测项目经理将是人们首选的职业以这说明,项目管理已经成为了企业管理以及社会管理现代化的一个非常重要的内容。知识经济即将知识转变成企业效益的经济,在知识经济时代下,项目管理就是通过信息、知识的共享,从而合理的利用集体的指挥来提高整个项目的创新能力和应变能力。知识经济更加看重智力资源的意义,由于信息共享而产生的知识,可以为带来新的成果,从而给企业带来新的财务。在知识经济下,通过信息共享产生知识,最终提高企业效益的过程是简单的重复、批量生产是无法实现的,在这个过程中对信息进行高效处理的计算机信息技术就起了不可替代的作用。目前,西方发达国家己经普遍在使用了信息技术来对建筑工程项目进行管理,实现了建筑施工的网络化。面对信息技术给建筑项目管理带来的挑战和机遇,我国也给予了高度的重视,在中共中央关于制定国民经济和社会发展第十一个五年计划的建议中,就明确指出了:“信息技术是社会发展的趋势,同时也是进行我国产业化省级以及实现社会现代化、工业化的关键环节,在我国的发展中,应该将社会的信息化以放在优先位置”。项目管理软件是项目管理信息化建设中的一个重要内容。目前,例如美国Primavera公司的P3软件、北京梦龙的Mr2000以及钢筋下料系统Bcs2.0等软件在我国的建筑项目管理和实施中起到了非常重要的作用除叫种种迹象表明,进入21世纪之后,计算机技术和网络技术对项目管理将起着越来越重要的作用,而项目管理软件的开发对于项目管理的信息化,企业效益的提高有着非常重要的意义。1.2 国内外研究现状(1)国外研究现状国外建筑工程项目管理经过多年的发展,已经在项目合同管理、项目进度管理的信息化方面已经开发了一系列成熟的商业化软件,国外建筑工程项目管理的应用已经经历了单项应用、综合应用和系统应用三个阶段。各种项目管理软件已经从原有的单一功能发展到了多种功能有机结合的集成化功能。目前,国外应用较为广泛的项目管理软件有P3软件、Expedition.SureTrak>PARADE>MonteCarIo等软件,并且可以根据具体项目管理的特征,灵活的进行二次开发和软件配套。1) P3(Primavera、Projiet>Planner)美国Primavera公司所推出的P3软件主要用于项目管理的进度计划、动态控制以及费用管理和资源管理。从而实现对项目组织过程以及实施步骤的全面规划和安排,并且对建筑项目进行合理、科学、灵活的进度计划。进度控制需要在建筑项目实施之前,就对目标计划值进行规划和确定;在项目的实施过程中,根据项目的进展情况,进行动态的跟踪和计划调整,并且对计划进行定期或者不定期的调整,从而了解项目的完成进度以及预测。P3为项目管理的进度控制提供了非常有利的工具,P3所包括的内容主要有:项目计划的制定和优化、项目资源管理、项目进度的跟踪以及调整、项目费用控制以及项目报告的制定。2) SureTrakSureTrak软件同样是Primavera公司开发的,与P3相比,SureTrak具有的功能较少,但是价格也相对较低。由于属于同一个公司开发,因此SUreTrak与P3的数据结构完全兼容,有很多建筑公司在总部使用P3软件管理,而在具体的项目中使用SUreTrak,从而降低企业管理成本。3) Expedition主要用于对工程项目中的合同管理。可以帮助用户对工程建设中的合同事务进行信息化管理,同时还包括合同订货单、工程变更、材料打偶哦支付、收发文图、工程进度款支付等。Expedition能够有效的对合同事务进行等级、统计、归类、事件关联、检索等管理。4)MiCroSOftProjeCt有美国Microsoft公司开发的,针对项目管理开发的项目进度管理软件,能够帮助用户建立工程项目的进度几乎啊,从而对工程项目计划进行分析以及优化,当计划实施发生改变时,可以对工程进度的目标进行控制和管理。MicrosoftProject软件可能够为用户对工程项目进度的控制提供所需要的信息。软件所提供的功能主要包括:进度计划的建立、项目资源的安排、进度计划的而优化、项目信息的管理以及项目进度的跟踪比较。(2)国内发展现状目前,计算机在社会上各个领域的应用已经十分普遍。我国工程项目管理软件的研究,在最近的三十年内才得到长足的发展,目前已经成为了项目管理过程中不可或缺的一部分闻。我国最早的项目管理软件研究重点在于网络计划软件,从而使得的人们可以利用网络来进行项目管理信息的分析。到八九十年代,国内对项目管理软件的研究重点集中项目管理成本以及资源利用的平衡和分析方面等对网络模型分析软件的完善和扩展方面,而且由于这段时间的计算机应用并不普遍,使得项目管理的应用范围较窄,只有在大型的建筑企业,才有可能使用项目管理软件来进行项目管理,而中小型企业,以及中小型的项目都不会考虑使用计算机来对项目进行管理。从九十年代末以来,由于计算机的广泛应用,促进了项目管理软件的研究和应用。随着PC机的不断普及;项目管理理论的不断完善以及项目管理软件的功能不断增强、价格下降,使得中小型的企业以及一些中小型的项目也可以使用信息技术来进行处理,从而使得项目管理软件得到了真正的发展,从而大大提高了项目管理的效率,降低了项目管理的成本【划。随着信息技术的不断发展,我国几乎所有的大型建筑企业,以及一部分的中小型建筑企业在进行项目管理时,都使用了项目管理软件来对项目进行管理。但是同时也存在一些问题:1)首先,在系统建设方面存在的不足。目前,我国国内缺少先进的工程管理软件,很多公司都是单纯的依靠购买国外的商品软件来进行项目管理,不仅需要大量的财力支持,而且由于国外环境与国内环境的差异,使得许多在国外项目管理中有着优异表现的工程管理软件无法在国内充分的发挥其功能。例如许多在国外应用广泛的投资控制软件,就无法适应我国工程项目中的定额管理的投资体制。2)其次,在系统的集成方面存在问题。工程项目管理本身就是一个非常庞杂的工程,包括工程进度管理子系统、收费管理子系统、风险管理子系统、施工管理子系统、质量控制管理子系统、库存管理子系统等众多具体业务管理系统,而且这些子系统相互之间还存在非常复杂的关系。为此,一个优秀的工程项目管理系统,除了需要满足这些工程项目管理中具体业务需求之外,还需要有一个高效的通信机制来实现这些系统之间的相互通信。但是,目前我国虽然也有一部分较为优秀的工程项目管理软件,但是这些软件往往都是关注于其中某一个具体业务方面,缺乏一个统一的机制来对整个工程项目的各个方面进行管理,同时国内一些大型企业的工程项目管理信息化建设,也存在各系统之间通信困难,从而形成一个个“信息孤岛”的问题。3)除此之外,在工程项目管理软件的应用方面也存在一些问题。由于我国项目管理的信息化时间较短,在实际的工程应用中,项目管理软件的应用缺乏有效的数据进行支持,并且基层数据的管理比较混乱,从而制约了项目管理软件功能的发挥。同时,软件使用者的素质也对工程项目软件的应用产生了许多不利的影响。1.3研究内容本文主要从五大章节来对工程项目管理系统进行研究:第一章绪论,主要对工程项目管理系统的研究背景进行分析,并对目前我国项目管理系统建设以及研究所存在的不足进行了研究,并针对目前国内工程项目管理系统在建设方面存在的不足以及在集成方面存在不足的问题,提出了基于SOA技术来进行工程项目系统的策略。第二章相关技术简介,主要针对本文对工程项目管理系统研究中所涉及的J2EE技术以及SOA技术进行了简单介绍和研究。第三章系统分析,在对系统需求进行简单概述的基础上,针对系统建设所需要的具体功能,以及系统建设的可行性进行了研究。第四章系统设计与实现,在对系统总体结构进行设计的基础上,对系统实现的框架进行了分析,并且主要以材料采购管理子系统以及成本管理子系统为例,对工程项目管理系统的具体功能进行了研究,并以项目管理子系统之间的信息通信为例,对SOA技术在工程项目管理系统中的应用进行了研究。第五章总结,对全文所做的工作进行了总结。第二章相关技术简介2.1 J2EE平台概述J2EE(Java2Platform,EnterpriseEdition,Java2平台企业版)是SUn公司为企业级应用所推出的标准平台。J2EE平台具有JDBCAPI方便用户的数据库数据存储、CORBA技术、"编写一次,随处运行”的特性以及因特网中数据安全模式等优点,同时还提供了对XML技术、EJB(EnterpriseJavaBeans)>JSP(JavaServerPages)、JavaServeletsAPI等的支持,从而大幅度节省开发者的精力,缩短系统的建设时间J2EE是由二十多种技术所组成的系统开发平台,目前J2EE更是被认为是一种系统设计的思想以及企业级应用的软件架构。2.1.1 J2EE多层平台J2EE使用了分布式多层应用模型。按照功能的不同,基于J2EE平台的系统划分成不同的组件,不同的组件按照不同的层次分布在不同的服务器上,从而实现系统的分布式部署。虽然,J2EE可以非常方便的分成三层或者四层部署,但是绝大多数情况下,被分成客户端、J2EE服务器和数据库三层。J2EE的多层模式如图2T所示口3J2EE应用程序1J2EE应用程序2程序客户端HTML页面客户层客户端机器JSP页面Web层J2EE服务器企业级JaVaBeanS企业级JayaBeans业务逻辑层一V数据库数据库数据乂数据库服务器图2-1J2EE平台的多层结构模型(1)客户层客户层运行在客户端上,基于J2EE平台的系统是基于Web形式的。因此,客户层一般是以浏览器的形式存在。(2) Web层在J2EE平台中,Web层主要是通过SerVIet、JSP组成。用户在使用系统时,会向系统的Web层发送各种指令,而该层在接收到指令后,做出相应的处理。目前,有许多开源项目(例如StrUtS等)都对JSP或SCrVIet做了进一步的集成,从而更加方便开发者进行开发。(3)业务逻辑层业务逻辑层用于系统满足某种特定的业务,系统中所有业务处理都集中在这一层中。在业务逻辑层中,也有许多对业务逻辑进行处理的组件(例如SPring)把整个系统进行连接。(4)数据层数据层负责数据库的管理,包括对数据库中数据的增加、更新、查询以及删除等操作。J2EE提供了许多项目(例如Hibernate)来方便用户对数据库中数据进行操作。J2EE平台是一个组件化平台,从而大幅度提高了平台中代码的可重用性。例如,系统中数据库层组件,就可以被系统中不同的业务模型使用;而业务模型层的组件也可以被用来实现不同的业务。从而使得基于J2EE平台的系统开发更加灵活。2.1 .2轻量级J2EE框架虽然,J2EE主要是基于JSP和SCrVIet技术而实现的,但是随着J2EE的发展,有许多开源技术对J2EE平台中的各层进行了进一步的集成,从而进一步减轻了系统开发人员的负担。目前,应用最为广泛的是StrUtS+Spring+Hibemate轻量级J2EE架构,通过StUrtS技术、SPring技术以及Hibernate技术分别对J2EE平台中的Web层、业务逻辑层以及数据层进行进一步集成来减轻开发者的负担。(1) StrUtS框架吠Struts是ASF(Apache软件基金会)所赞助的一个开源项目。Struts借助于JSP技术和Servlet技术来实现了MVC框架。在目前市面上众多的MVC框架中,StrUtS应用的范围最广,具有广泛的项目应用和较高的成熟度。StrUtS是一个典型的MVC模式实现,对MVC模型中的MOde1、View、ContrOIIer都提供了如图2-2所示的现实组件:图2-2Struts框架图MOdeI部分其中,Struts的Model部分是由JavaBean和ActionForm共同组成的。系统使用用户在提交请求时的交互信息都被ActionForm进行自动封装,实际上所有的用户请求都会被封装成ActionForm实例。该实例被Struts框架中的ActionServlet转发给Action,然后Action根据ActionForm请求对象中的参数来对用户的请求进行进一步的处理。JavaBean主用用于对系统中更底层的业务逻辑(例如数据库访问等)进行进一步的封装。VieW部分Struts中的View部分主要是通过JSP技术来进行实现的。当系统使用者向系统提出请求时,请求会被系统的ActionServlet截获,然后ActionServlet会根据具体请求中的参数来调用相应的Model来进行用户请求处理,当用户的请求处理完成之后,再将用户请求的响应展示给用户。ControIIer部分Struts框架通过ACtionSerVlet来实现MVC中的ControlIeroActionServlet是一个标准的Servlet,是HttpServlet的子类。所有的用户请求都通过ActionServlet进行截获和处理,并且根据系统中的配置文件(Struts-Config.xml文件)来将用户请求分配给相应的Action对象来进行处理。Sturts框架通过Struts-Config.xml配置文件来对ActionForm和Action进行配置。Controller会根据配置文件中的配置来进行叶面的跳转和业务处理。Struts-config.xml配置文件中的内容如下:<actionattribute=z,LoginFormz,input=z"formlogin.jspname=z,LoginFormz,Path="/login”SCoPe="request”type="Org.springframework,web.struts.DelegatingACtiOnProXy”><forwardPath=Z7formmain.jspname二SUCCeSs/><forwardpath=zz/form/failure,jsp“name=z"failurez,><action>在上面的配置文件中,根据ACtion对用户请求处理的结果,来进行页面的跳转。上述代码代表了如下的业务逻辑:如果ACtiOn对用户的请求处理的结果为"success”,那么系统向用户返回“formmain.jsp”页面;如果ACtiOn对用户的请求处理结果为“failure”,那么系统向用户返回7formfailure.jsp”页面。Struts框架的整体运作流程如图2-3所示:图2-3Struts运作流程整个处理流程由用户的请求开始。ActionServlet在拦截到用户请求之后,根据配置文件中的配置,为不同类型的用户请求进行不同方式的处理,一般而言用户请求分成简单的转发请求和需要控制器进行处理的请求两类。简单的转发请求简单的转发请求即简单的页面跳转请求,ActionServlet根据配置文件中的配置,不需要进行ACtiOnForm的填充,只需要简单的将JSP页面转发给用户即可。需要控制器进行处理的请求如果用户请求需要Action实现的业务逻辑来进行处理,那么ActionServlet在监听到此类用户请求时,会根据配置文件中的配置,将用户填写的ActionForm转交给相应的Action进行处理。Action从ActionForm中读取用户请求的参数,并且调用Model对象来进行处理,并且将处理的结果返回给ACtionSerVlet。在配置文件中,会根据每一种返回的结果,选择相应的JSP页面转发给用户,从而完成了用户请求-回复操作。(2) Spring框架SPring是ROdJOhnSOn在2003年提出的一种基于实用思想的开发框架。在SPring之前,有许多出色的解决方案,但是这些工具的整合是J2EE架构实现的一个难题,甚至有的时候成为J2EE架构实现的一种负担。而SPring就是以提供一个将各种解决方案进行整合的框架,为系统提供以中贯穿始终的解决方案。Spring的目的并不是取代这些已有的框架,而是关注与这些框架的无缝整合。Spring框架包括了如图2-4所示的七个模块:图2-4SPring框架结构Core封装包,是SPring框架中最基础的封装包,提供了以来注入特性和IoC特性。COnteXt封装包是基于Core封装包的。DAO提供了JDBC的抽象实现。ORM封装包提供了“对象/关系”映射。AOP封装包提供了AOP(面向方向编程)的实现。Web封装包针对Web开发特性的封装包。MVC封装包提供了基于Spring的MVC实现。Spring较之前的解决方案最大的特点在于依赖注入。使得系统组件可以通过设置,而不是编码方式进行耦合。当JaVa实例需要其他实例时,系统会根据配置文件中的配置信息来自动提供实例。以来注入又称之为IoC(InversionofControl,控制反转),其工作流程如下:当系统中某个调用者(JaVa实例)需要使用被调用者(另一个JaVa实例)中的功能时,Spring容器就会根据配置文件中的配置,来进行被动用着的实例化,然后注入到调用者实例中,从而让调用者使用被调用者所提供的方法,而无需要调用者在代码中实现调用者的实例化。这种灵活的动态方式来进行Java实例的管理,可以使得对象与对象之间的调用更加透明。Spring中应用最为广泛的以来注入有设值注入和构造注入两种。设值注入设值注入通过Setter方法将被调用者注入到调用者实例中。例如如下代码:publicclassProcImplimplementsIProceprivateInfoinfo;publicvoidsetlnfo(lnfoinfo)this,info=info;在上述的代码中,实现了IPrOC接口的ProeImPI类声明了一个私有的,类型为Info的参数,这个参数可以通过SetInfo函数来进行确定。传统的做法是在使用PrOClmPI实例时,在代码中为PrOCImPI实例注入InfO实例,但是一旦业务逻辑发生改变,需要不同实现的Info实例时,则需要改变Info类的实现,并且将整个项目进行重新编译。而在SPring框架中,仅需要改变配置文件中的配置,而不需要进行重新编译,SPring框架中的配置如下:<beans><beanid=winfoTempwCIaSS="Info"/><beanid="procImpl,class=wProcImpl,><propertyname=,info,><refbean=winfoTempv><property><bean><beans>Spring容器根据上述配置文件的内容,自动生成Info和ProcInipl两个实力(分别为infoTemp和proclmpl),并且将InfoTemp自动赋值给ProCImPl实例。构造注入构造注入指的是通过类中的构造函数,而不是setter方法来实现类实例之间的依赖,例如:publicclassProclmplimplementsIProceprivateInfoinfo;publicProclmpl(Infoinfo)this,info-info;)在Spring的配置文件中进行如下的配置,既可以进行Java实例之间的动态注入,如下:<beans><beanid="infoTemp”class=wInfow><beanid="proclmpl,class="Proclmpl,><constructor-argv><refbean="infoTemp,></constructor-arg><bean><beans>Spring容器根据上述配置文件的内容,自动生成Info和ProcImpl两个实力(分别为InfoTemp和proclmpl),并且在infoTemp实例生成时,并通过ProcInipl的构造函数自动将infoTemp实例赋值给proclmpl实例中的info参数。(3) Hibernate框架Hibernate通过系统中的映射文件来为JaVa对象和关系数据库中的表之间建立一种映射关系,从而可以方便的根据Java对象来对关系数据库中的数据进行操作。Hibernate需要建立一持久化类来与数据库中的表进行对应。持久化类中的成员与数据库中表的字段进行对应,同时通过XML文件来进行关联。Hibernate的总体框架如图2-5所示:Hibernate框架大大的简化了对数据库中数据的操作,但是在Hibernate使用时,需要重点考虑DAO组件的编写。Spring为Hibernate中DAO的实现提供了HibernateDaoSupport工具类。这个工具类是Hibernate实现DAO的基类,在HibernateDaoSupport中有getHiberanteTemplate和SetSessionFactory两个非常重要的方法。其中,SetSessionFactor通过接受Spring容器中的以来注入,从而在为Hibernate实例注入SessionFactory实例。getHibernateTemplate根据通过SetSessionFactory参数所注入的Session,生成HibernateTemplate来实现对数据库中数据的操作。HibernateDaoSupport使得数据库的操作进一步被简化了,可以再HibernatC实现的基础上,通过简单的一段代码来实现数据库中数据的操作,如下所示:getHibernateTemplateO.save(carriageinfo);2.2 SOA架构概述2.2.1SoA技术简介从总体结构来看,SOA是一个更灵活、更易于复用的体系结构,不仅能够让各子系统保持正常数据通信的同时保留各子系统相对的独立性,使得各系统以一种松耦合的方式集成在一起。从软件设计的角度来看,SOA是面向对模型的集成和发展。从分布式系统的角度来看,SOA系统中各子系统之间的通信是基于SoAP通信协议的,这使得SOA不会被绑定在某一个特定的硬件平台或者是操作系统上,甚至不会依附于某个特定的编程语言。总之,SOA从不同的角度分析,会有不同的理解。因此,首先简单的介绍SOA架构的概念以及特征。虽然,SOA是最近才被广泛应用,但是早在1996年,就有美国Gartner公司就提出了SOA的概念。但是对于SOA的具体定义,学术界和业界的说法不一,这里主要给出两个最具代表性的定义。定义1:SOA是一种对分布式资源进行组织和使用的规范,通过这个规范可以对部署在不同管理域中的资源进行组织和管理。这是由OASIS组织给出的定义,OASlS组织对SOA进行了比较细致的研究,并且发布了SOA的参考模型规范。虽然这个定义能够概括SOA的特性,但是过于抽象,因此在实际工程中很少被采用。在实际开发过程中大多采用下面的SOA定义。定义2:SOA是一种软件的架构,如图2.1所示。在这个架构中主要包括了如下的五个关键概念:应用程序前段、服务、服务库、服务总线和服务流程。其中一个服务至少包含了一个合约、一个或者多个接口及其实现。图2-6SOA定义(1)应用程序前端指的是子系统中发布的服务的消费者,是SOA中的活跃元素,使用系统中的服务。应用程序前端可以有很多种形式,例如:EJB组件、Web应用等。只要是支持SOA相关协议的应用都可以被用来做应用程序前端。(2)服务是一个功能的具体实现及其对外的接口,给应用程序前端提供和一定的具体功能实现。在集体的实现中,无论是高层的业务对象还是底层的程序代码都可以被封装成为服务。从应用程序前端来看,服务就是一个黑盒,应用程序前端只需要指导这个服务的接口,及其所实现的功能,就可以使用这个服务来完成相应的操作,而不需要了解这个服务的具体实现。合约:服务的合约就是一个对服务功能、作用的说明,是一个描述服务功能的信息规范。接口:服务的接口是向应用程序前端公开的,接口的描述其实就是合约的一个部分,用来描述应用程序前端调用服务时,所必须遵循的规范。实现:服务中的实现就是从技术上对接口的实现,为接口提供相应的数据和具体的业务逻辑实现。服务实现可以有配置数据、数据库和程序中的一个或者多个来组成。(3)服务库服务库中存储着各个服务的合约。应用程序前端通过服务库来发现其所需要的服务,并且了解该服务的接口,提交相应的服务参数后,获取服务的结果。服务库提供不同的服务绑定功能,比如运行时绑定和开发时绑定。运行时绑定:应用程序前端在运行时基于反射发现来按照名称或者属性来寻找服务,虽然运行时绑定比较灵活,但是实现起来非常复杂。开发时绑定:开发时绑定比运用时绑定更加简单,只需要设计人员在进行应用程序前端设计时,了解服务的接口信息,就可以在开发过程中直接调用该服务来完成一定的现实功能,由于开发时绑定比运行时绑定更加简便。因此,在实际应用中,开发时绑定使用更为广泛。(4)服务总线服务总线就是将SOA架构中的应用程序前端以及服务等所有参与者连在一起,使它们之间能够通过服务总线进行数据传输。为了能够保证SOA的开放性,服务总线必须满足如下的需求:连接性:将SOA中的参与者连接在一起,保证它们相互之间的通信。技术异质性:服务总线应该能够将异构的系统连接在一起,可以满足用不同语言是实现的应用程序前端、不同类型的操作系统、不同类型的服务器之间的通信。通信的异质性:对于不同应用程序前端的要求,服务总线应该提供异步响应、同步相应等不通的通信模式。技术服务:SOA除了需要满足基本的连接和通信要求以外,还必须提供一些信息转换、安全、审计、日志记录等技术服务。(5)服务流程服务流程的功能是将分布的服务单元按照某种规范编排在一起,为应用程序终端提供业务功能。通常服务流程可以跨越多个部门,涵盖多个步骤,需要组合很多的服务实现某个特定的业务功能,来最终为应用程序终端提供服务。例如信贷的最终完成就需要贷款申请、申请资料审核、领导审核等流程才能完成,这个时候,使用SOA就可以将这些部门信息系统所提供的服务编排起来,暴露为一个统一的信贷申请的服务单元。基于SOA架构的信息管理系统有如下的特征:(1)松耦合性耦合在软件领域指的就是软件组件之间的相互依赖程度。SOA区别于其他体系最明显的特征就是SOA的松耦合性。主要表现在服务提供者和服务消费的应用程序终端之间的相互独立性,两者之间的耦合仅仅是通过一个文档形式的服务契约,服务提供者根据这个契约提供服务,而应