《基于EC-CUBE的ERP系统设计与实现.pdf》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
犬ilif-大學DALIANUNIVERSITYOFTECHNOLOGY工暇硕士#位正文MASTERALDISSERTATION.V_基于EC-CUBE的ERP系统设计与实现?算机技术工释领城计i作者姓名i忌教师葛宏伟副教授指2011年_^_月_1旦答辩日期_一——— 专业学位硕士学位论文基于EC-CUBE的ERP系统设计与实现n-DesinandImlementatioofERPSstemBasedonECCUBEgpy作者姓名:吕威工程领域:计算机技术学号:41109114指导教师:葛宏伟2015/02/15:完成日期大遠《嫂工大旁DalianUniversityofTechnology 大连理工大学学位论文独创性声明作者郑重声明:所呈交的学位论文,是本人在导师的指导下进行研究工作所取得的成果。尽我所知,除文中已经注明引用内容和致谢的地方外,本论文不包含其他个人或集体已经发表的研究成果,也不包含其他已申请一学位或其他用途使用过的成果。与我同工作的同志对本研究所做的贡献均已在论文中做了明确的说明并表示了谢意。若有不实之处,本人愿意承担相关法律责任。EC-CUBE的ERP系统设计与实现学位论文题目:某于作者签名:日期:年(月}日 大连理工大学专业学位硕士学位论文摘要由于互联网的飞速发展以及人们对网络进行商务交易和企业资塬管理的认可和依赖不断增加。本人所在单位的日本某大型办公商品零售客户的老系统已经无法满足目前的商业需要一。该公司急需根据自身业务的发展重新建立套便于其客户使用和企业内部-ERPSYSTEMEES资源管理的系统(EC,)。一:B2CB2B本系统需要解决如下两个问题第,系统需要完成包括支持其客户的,处理二一,以及对公司内部的ERP资源进行综合管理。第,能够与该公司原有的套客户信息管理系统进行信息共享和通信。结合客户的业务和工期要求进行综合的技术选型后,本文使用目前在日本比较流行的开源电子商务ERP框架ECCUBE作为新系统开发的基础框架。ECCUBE目前在日本PHP、占有很大的市场,是基于开发的,具有扩展开发灵活快捷的优势。目前很多日本电商都选择ECCUBE作为系统开发的基础框架。新系统基于ECCUBE实现的MVC模式,前端采用PHP,业务层采用PHP和JAVA,数据层则使用ORACLE和ACCESS。由于基础框架的MVC模式分离的不够充分,本次开发的时候对ECCUBE的层次结构进行了改造,添加了自定义业务层和事务处理层,分离了数据持久层,使业务扩展和维护更加简单。ECCUBE已经能够满足ERP业务上所需要的大部分需求,但是对于本文客户所在行业的具体需求仍有一些需要特别处理的地方一。为了能够更好的解决第个问题,我们进行了大量业务调研,在原有的数据模型基础上,对客户的数据模型进行了大量的重构。添加了相关的实体,重新调整了各个实体之间的关联关系。增加了模块中的业务处理内容,对工作流的顺序进行了重新的调整。对于第二个问题,新系统在进行数据建模的时候考虑使用部分外部系统的数据,系统使用WebService作为获取外部数据的有效手段,通过外部系统提供的数据访问接口,系统能够方便的获取所需要的数据。经过12个月的开发及升级,新系统成功部署到了日本客户的服务器上,并且进行了6个月左右的试运行和维护工作。目前该系统已经正式上线为客户提供服务,系统运行良好。ERP部分的,达到了预期的目标本论文着重给出此项目设计与实现,及使用ECCUBE技术实现Web应用程序。:企业资源管理关键词;信息共享;模型视图控制架构--I 大连理工大学专业学位硕士学位论文smm-DeinandIlementationofERPSsteBasedonECCUBEgpyAbstractWiththerapidgrowthofInternet,onlinebusinesstransactionsandenterpriseresourcem'anagementhasattractedmoreandmoreattention.OneofmycompanysJapaneseclients,aretailerofoficesuliesoundthxistinsstemtoooutdatedtomeettheurrentbusinepp,feegycssreremm-uients.TheclientwasurenttoestablishanewssteERPSYSTEMEESqgy(EC,)basedonitsbusinessdevelopment,whichiseasyandconvenienttousebyitscustomersandorinternalresourcemanaement.gThesstemneedstoaddressthefollowingtwoissues.First,thesystemcanrovideypcomprehensivemanagementofinternalERPresourcesincludingB2CandB2Bsupporttocustomer;Secondthesstemcansuortinformationsharinandcommunicationwith,yppgtexistincustomerinformaionmanaementsstem.ggyAftercomrehensseconeedt-ivetechnololetiwdecidoadottheoensourcepgy,pp-econierceERPframeworkECCUBE.DeveeseteendmlopdbadonPHPandbeingbohflxiblaconvenient,ECCUBEcurrentlytakesalareshareoftheJaanesemarket.ThenewsystemisgpbasedonMVCmodelrealizedbUBEwithPHPforitsfrontendandPHP+JAVAforyECC,businesslayer.DuetoinsufficientseparationofMVCmodelECCUBEhierarchismodified,yduringthissystemdevelopment.Customizedbusinesslayerandtransactionlayerareaddedanddataersistencelaerissearatedforscalabilitandeaseofmaintenance.pypyThoughwithECCUBE,mostERPbusinessrequirementscanbemet,therearestillsomeindustr-secificreuemetstresseorroresovtefirsypqirnthaneedtobeaddd.Indetbetterlehtissue,wedidagreatamountofbusinessresearch,aswellasalotofrestructuringbasedonthe'clientsexistindatamodelbaddinrelatedentitiesreadustintherelationshisgyg,jgpamong-moduvariousentitiesincreasininlebusinesstransactionsandreadustintheorderof,gjgworkflows.Toaddressthesecondissue,aportionofdatafromexternalsystemisconsideredtobeusedindataremodelinofhessem.WihWebServiceasaneffectivewatossgtnewttyacceyexternaldatathereireddatacanbeeailaccedbthenewsstem.,qusysseyyAfter12monthsofdevelopmentandupgrade,thesystemhasbeensuccessfullydeployed'monontheJaaneseclientsserverandhasunderonetestinandmaintenancefor6ths.Nowp,gg,thesystemhasbeenoficiallylaunchedtooferservicestocustomers.Itisrunningwell,justasexpected.ThispaperfocusesonthedesignandimplementationofERPsectioninthisroject,paswellastherealizationofWebapplicationbyusinUBEtechnolo.gECCgyKeWords:ERPInformationSharinMVCy;g;in 大连理工大学专业学位硕士学位论文目录mmIAbstractIll1雜11.1选题背景与意义11.2国内外研究现状11.3论文的结构和内容52EES整体架构62.1EES在整个体系架构中的定位62.2系统整体结构概述..72.2.1系统构成概述82.2.2系统间的关联方式82.2.3服务器构成92.3EES研发技术基础10..1EC)及51023CUBE(smartyPHP2.3.2展示层技术112.3.3ORMHibernate11及2.3.4ORACLEllg&oci8及DB组成122.3.5Lo4PHP13g2.3.6WebService技术142.3.7开发工具142.4EES(包括ERP与P系统之间的关联14)2.5系统各个层次间相关类的实现162.6策略制定173系统分析193.1EES的设计目标和设计原则193.2需求分析213.3餘流程223.4数据分析233.5功能分析254系统ERP29(部分)框架实现42.1系统实现概述9-?V 基于EC-CUBE的ERP系统设计与实现4.2ERP实现功能简述294.3ERP部分架构构成294.3.1表不层314.3.2服务层334.3.3持久化层344.4订单处理模块部分的实现344.4.1业务实现类354.4.2数据库逻辑和物理设计374.4.3订单接收处理模块424.5各种安全问题的实现方式485系统维护与测试52.5.1测试策略及工具....52554.2测试用例及报告555.3系统维护胃^57参考文献58.考¥6062附录B部分核心代码的相关实现致谢65大连理工大学学位论文版权使用授权书66-VI- 雄理工大学专业学位硕士学位论文1绪论1.1选题背景与意义一500由于业务不断扩大,美国家世界强企业将其在日本的办公用品销售业务单独分离出来,重新进行业务整合。于此同时该公司与原有的网络服务供应商的合作年限也已经接近尾声一。在此契机之下,分离出来的日本分公司(简称X株式会社)需要套全新的贴合自己最新业务需要的客户销售/网络管理系统,来支持X株式会社的业务发展,电子商务/企业资源计划系统(EC/ERPSYSTEM,EES)由此应运而生。经过多轮次的广泛的招标之后X株式会社最终选择了一家日本本土软件公司Y公(司)来负责该包括业务调研、需求开发、架构搭建、系统实现、测试和后期维护在内的一系列工作。与此同时X株式会社同时也需要使用Y公司既有的一P套机系统(系统,该系统使VA一用JA开发)来处理其他方面的些相关数据,而且P系统目前也拥有比较稳定的使用客户群,Y公司也想以此为契机将P系统和即将开发的EES进行整合来扩大自己的业务范围。在此目标下,我们选用PHP5+JAVA进行EES系统的开发和与P系统的整合工作。一方面,上面提到的P系统的开发的全生命周期过程都是DDC来完成的,对于P一系统的需求和架构都十分了解。另方面,由于新系统的整个业务相对复杂和庞大,单独的Y公司不能消化全部的工作。而作为合作伙伴的东软集团Y公司大连幵发中心C一(DD)具备定的电子商务和ERP方面的幵发经验。所以DDC理所当然的成为了与Y公司进行EE一S共同开发的首选合作伙伴。经过段前期的磨合和调研之后,DDC参与其中,并成为该项目实施过程中不可或缺的幵发团队。因为本人一直从事WEB应用程序的开发,之前从事过多年的对日项目开发,而且有过一些ERP项目的开发经验,所以从项目立项开始便以EES的ERP组组长的角色参与其中一,与整个EES项目的其他成员起进行了项目的全程开发与测试。12.国内外研究现状EES即EC-ERPSYSTEM的英i缩写。顾名思义,本系统主要是满足电子商务活动与企业资源管理而开发的一ECERP。很长段时间,大部分人对于和之间的关系理解不正确,无法正确看待两者之间的区别与联系。由于所站的角度不同人们往往得出比较片1一EC一[]一面的认识,这样就使些人认为要相对重要些;而另些人认为ERP更加重要。--1 基于EC-CUBE的ERP系统设计与实现而实际上,两部分有各自不同的用处,两种系统结合起来使用才能更好的发挥各自的作用,更好的为企业服务。EC,(电子商务)从它诞生之初就展现出了巨大的能量根据国外和国内的经验来看。从期初国外的Amazon、CDNow的惊艳登场,到现今国内的淘宝、京东和当当如日中天,一、再到唯品会聚美优品等细分电商的蒸蒸日上,它们无不代表着蓬勃的现在和无可限2[]量的美好未来。网络爆炸式的发展直接导致了电子商务的产生,经过多年的技术变革,电子商务已经成为了网络技术在实际商品交易方面的一个全新的发展方向。原有的计算机网络所具有的各种特性,在电商内部都能够找到。正是由于这些特性,使得电子商务一超越了以往任何种商业交易模式,它正在改变企业内部的生产经营和运营管理活动,而且对整个社会的商品贸易模式的运行与贸易的结构也有着深远的影响,而且在可以预见的未来这种影响还会随着技术的不断创新继续下去。电子商务已经成为了我们现实一生活中进行商品交易的必不可少的种形式。一另方面,2000年10月GarterGroupInc.发布了以亚太地区副总裁和分析家B.Bond等六人署名的报告《ERP-isDeadLongLiveERPII》,提出了ERPII的概念。通过GarterGroupInc.对于ERPII的定义我们可以发现,其中大部分内容都是当初赋予ERP“”4一[]的内容,。不样的是定义中提出了协同商务的内容,环顾全球的电子商务市场“”不同国家和地区的发展并不均衡,整体上看表现为美三足鼎立、欧、亚的局面。作,亚洲为美国次贷危机之后的新兴经济区、特别是东亚在世界经济中作为引领全球经济发动机的地位正在日益凸显出来。日本作为东亚经济上世纪的领头羊,电子商务起步于上世纪90年代中期。作为美国经济上的盟友,紧随美国之后开始了电子商务的发展。电子商务发展初期的日本,虽然有一定增长,但是与美国相比,比率依旧很低,规模也非常有限。直到上个世纪末,由于信息技术在日本经济中的作用日益突出,日本各界都意识到了电子商务的重要性,。尤其是已经初步完成信息技术化的各个企业更是关注电商的方法和技术开发,奋力开展电子商务。以此为契机,日本电商规模开始走上大规模的快速发展的道路。一而根据数据来看,B2C领域中些知名厂商,京东商城、聚美优品年增长率均超过200%-,当当、亚马逊等B2C厂商近两年的增速也大多维50%100%之间,持在。近年来淘宝更是创造了一天销售额几百亿的神话。B2B电子商务以其相对低廉的交易成本、简化的贸易流程、超越时空限制的经营方式和由此带来的巨大利润,己经成为我国经济的新的增长点、新的经济支柱产业。而且B2B电子商务的发展能直接拉动IT产业、信息服-2- 大连理工大学专业学位硕士学位论文务业、现代物流业的快速发展,成为经济发展的新的发动机,对于国民经济的快速稳定5增长有积极的作用[]。虽然本项目是日本项目,但是对于中国国内在该方向上的发展也有很大的促进的作用。互联网营销费用的快速降低、消费者和客户使用互联网的频率和积极性快速提高,使互联网成为企业推广自己的有效手段。日本的企业普遍通过自己的公司主页、官方博客,、电子信息以及其他形式的互联网工具向客户直接提供公司及产品的相关信息。现在日本大部分企业都已经拥有自己的网站,网站80%以上的内容是有关公司经营、产品和一服务的详细介绍,,。但是目前企业利用互联网还是以输出式为主针对其他公司和般消费者业务的比例仅占30%和40%。随着社会的不断发展,这种比例正在改变,包括一-ECERP系统在内的越来越多的针对公司和般消费者的互联网产品被开发出来。在可预见的将来。,对于这种产品的需求将会不断提升IBM给我们的定义特别强调电商的使用环境是在网络环境下,是把买卖双方、厂商及其合作伙伴在万维网、内联网和外联网结合起来的应用。从这点看未来电商的发展趋6一势无疑要和网络技术紧密的结合在[]起。而从网络发展的规律来看,电商必将拥有广阔的发展前景。ERP是EnterpriseResourcePlanning(企业资源计划)的简称,是上个世纪90年代一美国的家著名的信息管理咨询公司GartnerGroupInc.公司根据当时计算机信息、IT技术发展及企业本身对供应链管理的需求,预测在今后信息时代企业管理信息系统的发展一。趋势和即将发生创新而提出的概念它是个综合的计算机管理系统,用来管理企业内一部和外部资源的有形资产、物品、HR、财务在内的各种资产。它是个软件架构,开发它的目的是促进组织内部各个业务功能部门之间的信息交互,管理企业与外部利益相关者的连接一。使用共有的数据库为信息基础,釆用个公共的处理平台,ERP系统将所7一有的业务运作整合在一[]个统的平台下,建立了企业范围的全系统管理环境。本文要阐述的是系统中ERP相关的部分。管理好相关必要信息是ERP系统需要完成的工作,系统根据这些信息来优化相应的工作流程来提升公司的竞争力ERP是集企业管理、业务流程、基础数据、人力物一一力、、计算机软件于体的综合的企业资源管理系统计算机硬件。ERP作为种先进的企业管理方式,是依托现代信息技术发展起来的、有效提高各企业经济效益的手段。其主要目的就是对企业内所拥有资源进行有效的统筹安排和优化管理,协调企业内部各管理部门之间以市场为导向开展各项业务,提高企业的核心竞争力,从而取得最大化的经济效益。-3- 基于EC-CUBE的ERP系统设计与实现企业管理所追求的目标是如何能够让企业本身的运作更加有效更加迅速。为了这个目标,企业管理的方式和方法会不断的自我更新、自我优化。衡量企业管理方式方法是否高效的指标也随着社会的发展不断变更。目前来看,衡量企业运作效率的高低,常用的四个判断工具如下:(()1)基础信息资金信息:现金流量和财务比率等;(2)生产信息(成本信息:资源利用率和总体利润等);(3)能力信息(企业相对于竞争者的专长和弱点);(4)资源分配信息(包括资源和人力等)。在ERP产生之前,传统的企业内部各部门之间的信息交流大都是通过书面形式传一递,。虽然在当时有的企业已经存在类似于企业内部网类的网络系统但当时使用这类网络的基础人群不够广泛,加之人们对网络应用的开发不够完善,人们还是习惯通过有形的文件来传递信息一。这导致企业部各个系统各自为政、互相独立、无法协调统形成统一战斗力。ERP的到来改变这种混乱低效的局面。它将企业中的各个组织按照功能模块有机地组合在一起,协同运作,从企业的层面看这样大大提高了其运行效率。如今ERP已经得到了广泛的认可和应用。网络技术的进步和成熟为企业信息管理系统提供了与客户或供应商实现信息共享和直接的数据交换的能力,从而加强了企业内部、企业和企业之间的联系,形成共同发展的生存链,实现了企业为达到生存竞争的供应链管理理9[]想。通过ERP系统的各个功能。,决策者或者业务相关方可以实现夸企业联合作战ERP主要的理充分发挥效能实施对象是企业,目的是调配企业资源,让企业资源合,帮助企业所服务的客户更好的发展一自由,从而达到让企业的竞争力进步加强,增强在竞争市场环境下的生存能力。使应用ERP的企业在激烈的市场竞争尽最大可能的发挥能量,以便取得最大化的经济效益。综上所述理平台无论从底层的理论概念依据还是从支撑其健康,整个电子商务管,发展的网络技术来看一,都有着坚实可靠的的基础。ERP系统的开发与实施能够对个企一旦旧的企业系统进行调整业的核心竞争力发挥重要的作用。近年来,,ERP系统通常1。都会作为重要备选部分整合起来[]一。本项目的客户作为个紧跟时代潮流,直面未来挑战的公司来一,开发套属于自己的ERP系统是无可厚非的。由于近些年金融危机频发,一整个社会的经济处于,个波动相对较大的时期为了能够更好的适应市场竞争,提高服一务质量,。,提高在恶略环境下的生存能力客户必须拥有套与其业务相匹配的管理系统一这套系统在原有的ERP系统基本功能的基础上,加入些定制性的功能,来整合公司-4- 大连理工大学专业学位硕士学位论文特有的业务也成为了必须要解决的事情。所以,在基本ERP概念上,使用PHP5来高效幵发并结合自身EC、WebService业务需求的ERP系统对于本公司来说是很有必要的。1.3论文的结构和内容本论文共分五个章节,分别简述如下:一、第章,是绪论,主要说明了项目背景选题意义以及国内外相关领域的现状。最后给出了论文的组织结构。第二章,是系统设计,简述整体系统框架结构,同时将EES(ERP部分)中涉及的技S与P。术作了拥要的介绍,说明了EE系统结合之后的整体架构设计包括系统构成、多系统关联方式、系统内层次关系等如何实现。第三章,是系统的分析,阐述系统的目标和原则,分析系统的业务流程和功能需求,详尽地描述了系统各个模块的功能。并对各模块的数据划分进行了详细的说明。第四章,是系统(ERP部分)的实现部分,对ERP部分(以订单处理模块为例)一的业务实现类的设计一进行了详、数据持久层、模块功能以及安全方面是如何实现都细的讲解。第五章,是系统的维护与测试,阐述了测试策略和测试技术,结合测试用例,给出了测试结果和报告;描述了系统的维护工作内容。最后,对全文进行了总结,指出本系统的优点,同时分析了系统的不足和局限性,提出了下一步如何升级和完善。-5- 基于EC-CUBE的ERP系统设计与实现2EES整体架构本章是本论文的重点,着重阐述了EES系统的设计与实现,包括EES在整个体系结构中的基本信息的概述,EES的概要设计和详细设计,展现了系统的多层架构设计,以及数据库概念、逻辑和物理设计,最后给出了系统中三个主要模块的详细设计。2.1EES在整个体系架构中的定位一由于EE一S需要和既有P系统共通运行,所以定要有个共同运行的框架来支持这种需求。因此,EES开发中需要基于以下原则:-CUBE进行自定义的扩展幵发根据开源的EC。一些必要的信息要保存在P系统中,但是顾客信息和商品信息等某些特殊数据要单独保持在EES的DB中,以提供给EES来使用,如图2.1所示。EES和P系统DB分割的例子一-、、z、,/P、系统/EES、:i!.^^i:^点数和购买次^乂I__丨_丨一()‘一数是EES特有的信顾客信息市场顾客信息i丨;—丨—一息顾客ID丁1顾客IDIyj顾客姓i顾客点数iiJi—顾客名iii购买次数i——^、*‘、、?图2.1系统DB分割图Fig.2.1SystemdatabasedivisionchartP-现在已经存在的PH的相关代码(ECCUBE的source)要尽量复用。--6 大连理工大学专业学位硕士学位论文2.2系统整体结构概述EES是由Web服务器一、应用程序服务器、数据库服务器同搭建而成的。图2.2简单说明了系统的整体框架结构。— ̄B2B/B2C客户端ERP客户端系统管理者客户端I|ApplicationS^er;;?IZ乙[]MailServerApaoheWebServer■i▼B2B/B2C应用系统管理应用资源库集合III-PHP资源库^I?ft、八、一、、、I1、/、源库i\\/收发单关联资、‘\、\\、II:、!I、、、、’、、、'、、配送关联资源库i、\、I、,,!、\“*I/、V?f‘/1\、I.I‘I、\,*、*I,'■■—■■■■-I、、\,J-‘/\\、、、J2EEApplicationSer、、、、j^、\!、‘IEES2EEWebAl^tiPi系统4pponj^w|IJ2EEWEBEEWebservicWebService)APPLICATION^I^|EESSerwAPI^ar)III'IiIIi1!:<:f;P系统SmiceAPI(Jar)1/?I-IJ^■‘‘I?t■、//?■■■■I‘II、”</II*、DBServer//I_tllAKIIIEESDBP系统DB图2.2系统架构图Fi.tg.22Systemarchitecturechar--7 基于EC-CUBE的系统设计与实现主要的展示层逻辑和使用PHP5来实现的Web应用程序都是在Apache服务器上面进行配置的。A一一pache是目前应用最为广泛的Web服务器之,PHP是种类似于ASP脚本开发语言,具有非常强大的功能,所有CGI或者JavaScript的功能PHP都能实现而且支持几乎所有流行的数据库和操作系统。整个系统的业务逻辑层预想的是使用WebApplicationArchive来实现J2EE应用程序(EAR)。由于目前还是1.0版本的开发,所以暂时可以使用PHP5来实现部分的业务逻辑功能,但是在将来的不断升级过程中,需要逐步将PHP部分的代码替换成使用JAVA来完成。一需要注意的是章节1.1中提到的P系统在整个EES完成之后将作为个组成部分与一ERP一bService进行。起成为个整体,他们之间可以通过We数据交换2.2.1系统构成概述EE一S是由Web服务器、应用程序服务器、数据库服务器同搭建而成的。主要的展示层逻辑和使用PHP5来实现的Web应用程序都是在Apache服务器上面进行配置的。整个系统的业务逻辑层预想的是使用WebApplicationArchive来实现J2EE应用程序(EAR)。由于目前还是1.0版本的开发,所以暂时可以使用PHP5来实现部分的业务逻辑功能,但是在将来的不断升级过程中,需要逐步将PHP部分的代码替换成使用JAVA来完成。2.2.2系统间的关联方式EES和P系统之间的通信需要使用WebService来进行。在与其他可能需要通信的一系统之间传递信息也需要使用WebService来进行。WebService技术是种基于XML语言和标准的网络协议实现的分布式计算技术,是实现跨平台数据交换的有效解决方案。-8- 雜理工大学专业学位硕士学位论文2.2.3服务器构成根据系统架构概要图的记述,各个项目的定义如表2.1。2表.1全系统架构说明表Tab.2.1Systemarchitecturespecification名称概要要素类型备注AlicationServerWEBServerS关于Server的OSpp、J2EE服务器、O信息Serve的运行Server。等,在其他地方会有说使用"WindowsServer明。OS,RedHatEnterpriseLinuxoWebServer使用PHP时限的表示中间件层部分的运行服务器。使用Apache2。J2EEAlicationServerJ2EElitippAppcaon的运行中间件Server,采用JBoss6/WebLogic1Ig。DatabaseServerRDB服务器。服务器、OS没有特殊要求的情况需要依赖数据库中间件。下,与应用程序服务器是同一台服务器。P系统DBRDBMS产品。中间件保存P系统相关的表信根据需要使用息。Oracle/PostgreSQL/SQLServer。EESDBRDBMS产品。中间件保存EC/ER相关的表根据需要使用信息。Oracle/PostreS/SLgQLQServer。UserPC客户端PCPC假定使用WINOSWeb浏览器P系统和EES上实现的应用程序正6+、FireFoxll+WEB系统应该能够在如下浏览器上运行:InternetExplorer、FireFoxBusinessSystemServer业务逻辑运行服务器服务器、OSBusinessApplication业务逻辑系统应用程序Load一Balancer实现负载均衡的中间中间件只需要台服务器的时件。候不需要。在需要实现多个服务器共同分担运行负荷的时候来iic-9- 基于EC-CUBE的ERP系统设计与实现2.3EES研发技术基础一ERP对于,项目的开发都是耗时的、高花费的个项目来说,所以在项目幵始之11[]前做好技术选型工作是必要的,能够为客户节省时间和资金。好的技术选型不仅对当一前的开发好处多多,而且能够为将来的升级打下个坚实的基础。2.3.1ECCUBE(smarty)及PHP5一由于客户工期的限制,选择门适合快速开发的语言是首先需要确定的问题。在JAVA、C#、PHP等主流网络开发语言中,PHP以其上手快、开发速度快而闻名。所以本次开发选择PHP作为主要的开发语言。“”PHP即超文本预处理器。基于其开放是的模块化理念进行开发和维护,此开发。语言拥有简单易用和功能强大两个主要的特点在开放的平台下,种类丰富的功能模块一层出不穷,几乎可以覆盖到Web应用领域的每个角落。LAMP一(LinuxAacheMSPHP)是最成熟的开源体系之,,p,yQL,而对于其中重要成员的PHP而言,它的简单性、它的开放性、它低廉的成本、它的安全性和它广泛的适用性,早已经被大量的Web开发人员接受。PHP中提供了作为编码语言所有的基本功能。从PHP本身提供许多实用性的功能,PHP相非常适合开发动态企业级网站类型的项目来看。PHP是世界上主要的企业级网一,。世界许站开发语言之,在整个世界运行的WEB服务器有将近1/3是PHP开发的一、PHPPHP的魅力由此多著名的网络公司(比如:脸书雅虎等)都选择,可见斑。从1996年Rasmus发布了PHP/FI2.0到2000年5月新版PHP4.0发布;再到2004年一7月PHP5正式版本的发布,PHP已经从蹒跚学步走到了青壮年代。个全新的成熟的一PHP时代已经来临。它使用了新代的核心引擎,加入了大量全新模块的支持。而其的最大改变是加入了面向对象的功能,并提供全面的向下兼容特性。开发人员可以直接按照面向对象的思想对程序进行合理的划分和编写,新版本提供了完善的访问限制、异常一■处理机制等措施,来进步提局编码的效率。在所有的使用PHP开发的模板引擎里,Smarty绝对可以算目前业界最著名PHP模一一。它,板引擎之分离了业务逻辑代码和显示内容,提供了种易于管理和使用的方法一PHP用来将原本与HTML代码混杂在起代码逻辑分离。ECCUBE是日一本方面基于SMARTY模板引擎,使用PHP幵发出来的款EC与ERP集成的日一本时下非常流行、使用非常广泛的款电子商务方面的幵源框架。ECCUBE功能模块覆盖面广(商品介绍、商品釆购、会员管理、认证管理、商品管理、--01 大连理工大学专业学位硕士学位论文顾客管理、订单管理等),架构层次简单清晰,非常适合快速进入及在此基础上进行二次扩展幵发。由于该框架是基于开源项目的,所以从开发成本上来讲也大大降低。一一ebPHP语言是,种重要的W应用程序幵发语言,目前网络上有相当部分网站釆用PHP语言作为开发工具;采用MVC(ModelViewController,MVC)开发模式来把—_"[]Web应用程序的逻辑层和表示层分开可以有效地克服传统开发模式缺点。MVC是一XeroxPARC在20世纪80年代发明的种设计模式,至今已被广泛使用,而且受到越31[]MVC开发B一来越多的WEB开发者的推崇。使用S结构的系统是将来发展的个趋势,MVC模式方便重复使用、维护起来简单、开发效率高,是近些年来开发BS结构系统的一[…一个上佳之选。由于ECCUBE本身有定安全隐患,通过合理对ECCUBE的解释器5“]进行修改之后,提高了该框架的安全性,本次EES的开发就是以ECCUBE为基础进行开发的。2.3.2展示层技术近年来画面展示层的技术发展日新月异。从最初的CSS描述,到Aax、Quer应jjy用,再到Bootstrap等展示层框架的出现,真的让人们眼花绮乱。本项目的展示层使用了大量的Ajax和JQERY技术。这是因为选定的ECCUBE在开发过程中的思想是快速,轻量化前台画面开发。因此没有使用比较复杂的展示层框架。为了和基础框架的画面一一展示风格保持致,也为了加快开发进度,因此我们只在些必要的画面增加了相应的异步处理功能,而没有釆用富客户端框架进行改造。Ajax常常被用来实现Web应用的客户端与服务器端进行异步交互,能够完成网页'[?局部刷新的工作,提高访问的速度并提升用户体验。由于是局部刷新页面,整个画面大部分内容不需要重新加载,极大的提高了用户使用的友好程度。Quer是2006年创jy一建的个幵源项目,随着不断的壮大和完善,如今已经成为集Javascript、CSS、DOM一?一于体的强大框架体系uer,。jQy也是个轻量级的JS库开发者封装了大量常用的函数,只需要使用少量代码就可以完成以前JS需要很多代码才能完成的复杂工作,这_极大的提高了展示层的实现效率。我们只需要通过使用选择器就可以实现画面多控件遍历等原来JS实现起来比较复杂的功能。很大程度上减少了工作人员编码的工作量,一从另个角度也大大提高了代码的质量,减少大量编码造成的错误的出现。2.3.3ORM及HibernateECCUBE将整个系统分为前台显示画面和后台业务处理两个层次,虽然已经将显示。和处理逻辑分开,但是后台处理没有分离彻底,也没有将所有的数据进行实例化处理在本项目开发过程中,按照MVC进行开发是必须要遵循的原则。原有框架上没有分离--11 基于EC-CUBE的ERP系统设计与实现清晰的部分,本次开发都要分离清楚。为了更好的对业务逻辑和数据持久层操作进行层次上的分离,我们需要对所有数据相关的内容进行ORM处理,只有这样才能保证分离之后的代码层次清晰。ORM一所谓(Obect/RelationMain)就是对象/关系映射,是种将数据库中对应jppg的表结构实例化后提供给程序使用的技术一。从编程的角度来看切皆是对象,但是关系型数据库结构无法很好的体现面向对象的思想,由于以上原因两套理论之间存在明显的区别。为了使两者能够更好的匹配,ORM技术应运而生。直到出现面向对象数据库为一,ORM工具会在面向对象的程序开发中仍然会直扮演重要的角色止。目前ORM框架的产品非常多,目前流行的ORM框架有:Hibernate、传统的EntityEJB、IBATIS、racenk。ernaOl的TopLi、OJB其中Hibte使用最为广泛,是目前比较流行的开源ORM框架,,性能优秀其优点有设计灵巧,文档丰富。最常用的开源的对象关系映射框架非Hibernate莫属,它对JDBC进行了轻量级对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。Hibernate一?是目前最流行的ORM框架,它是个面向JAVA等幵源环境的对象/关系ORM工具。2.3ACLE.40R11g&oci8及DB组成ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核一一S心的系列软件产品,是目前最流行的客户/服务器C/或B/S体系结构的数据库之。ORACLE数据一一,库具有完整的数据管理功能;作为个关系数据库它是个完备关系的产品;作为分布式数据库它实现了分布式处理功能。其特点可分为如下几大方面:(1)具有完整的数据管理功能;(2)完备关系的广品;(3)分布式处理功能;(4)用ORACLE能轻松的实现数据仓库的操作。由于客户的既有系统的数据完全依赖于ORACLE,运行了多年数据库依然运行良好。客户对于ORACLE的信任程度很高,而且如果继续使用ORACLE进行本期幵发可以避免因为不同数据库间进行数据交互式产生的数据格式不匹配的问题。所以本次开发直接使用相同的数据库来进行,以方便新系统与既有系统的集成。PHP提供了非常方便的访问ORACLE的方式即0CI8扩展控件。开发人员只需要对服务器的配置文件扩展服务进行简单的配置,便可以使用oa8所支持的所有操作ORACLE数据库的函数。-2-1 大连理工大学业学位硕士学位论文審0CI8允许开发人员访问ORACLE8i以上版本的ORACLE数据库。支持SQL和PL/SQL语法。支持事务处理,PHP变量对ORACLE占位符的动态绑定、支持大对象类型和集合。数据库常住连接池(DRCP和结果级缓存也是被支持的。)DB部分由三部分构成,,新系统的DB既有系统的DB,ERP部分基础运行数据的一DB一ORACLE是。对于个大型商务系统来讲个合适的选择,因为ORACLE所提供的各种功能能够使我们更自如的进行数据库模型的建立。由于Access20I0快速简单的一特性,作为轻量级数据库来使用,这次也被我们釆用来处理些基础数据2.3.5Log4PHP无论什么样的系统,对于日志文件的输出和管理都是必须要做的事情。无论是在幵,日志文件的作用都是不言而喻的,发阶段还是在系统上线运行之后。开发过程中日志是我们判断解决系统问题的可靠依据,;系统上线后我们需要通过日志文件来判断系统运行的状态,根据具体状态对系统进行适当的调整。由于日志文件如此重要,因此我们需要选择相对成熟可靠的工具来对其进行管理。本项目中我们使用的是Log4li。pp谈起Log4php就不得不提Log4j。熟悉Java的人应该知道,Log4j是Apache下属的开源项目Java开发的网络程序中。工程师可以通过Lo4,已经广泛应用于使用gj控制曰一通过设定日志的信息等级志信息输送的目的地是,;可以控制每条日志的输出样式;能够更加精确地控制日志的生成过程一。最大的个好处就是,上面提到的这类配置型的一操作可以通过个配置文件来灵活地进行而不需要修改代码,这些配置工作和编码工作是完全分离开的,有效的提高了日志文件的配置效率和编码的安全性。Lo4o一og4php是使用PHP来实现类似Lgj的功能,目前Lg4php已经作为Log4j的个子项目存在,大部分PHP。目前已经比较成熟开发项目都会使用其来管理日志文件。Log4php包被设计用来使日志信息可以用漂码的形式保存,并且不会导致高性能开销一。它遵循记录速度(即使没有记录行为)第的原则。同时,,由于日志输出可能非常庞大导致很快达到记录极限而无法再记录。Log4php一一oe中独无二的特色之是分级记录器(Lr的概念。使用记录器,使有选择的按任意gg)粒度控制输出日志语句成为可能。Lo4h是按两个特殊目来设计的:速度和灵活性。它具有的特点包括:支持多个gpp框架、、XML配置、动态配置、记录上下文、成、输出到多个记录目标分级记录结构熟稳定、以及髙性能和灵活性。--13 基于EC-CUBE的ERP系统设计与实现2.3.6WebService技术一WebService是种构建应用程序的普遍模型,可以在任何支持网络通信的操作系统一w中实施运行;它是种新的eb应用程序分支,是自包含、自描述、模块化的应用,可2'[]以发布、定位、通过web调用。WebService作为系统之间主要的通信方式。无论使用何种类型的服务器,只要运行WebService的服务器上按照WebService规定的标准(Htp、XML、Soap)进行开发,即使两台完全不同的操作系统的服务器一样可以在不借助任何其他软件或者硬件的情22[1况进行相互交换数据或集成。只要相互通信的各个应用按照WS的规范来定义好之间的接口,就能够避免常规通信方式所产生的问题,就可以畅通无阻的、高效率的进行数_据交换。由于旧系统原有数据和新系统的数据存放位置不同。新系统和旧系统需要进行数据交互。WebService的技术实现和安全性方面都能够完成需求所要求的内容。因此在与旧系统集成的过程中,为了安全性和与旧系统之间的独立性,新旧系统之间的数据交换全部使用WebService来实现。这样做也能最大限度的保留原系统,减少原有系统的改动(因为原有系统使用JAVA开发)。2.3.7开发工具一一一对于,在经过了系列的技术选型之后个项目而言。最后需要确定的件事情就是使用什么样的工具进行相关工程的建立开发和测试。在本项目中,我们选择Eclipse作为开发工具。E一clipse是种通用工具平台,是除了微软的VS之外,使用最为普遍的开放式IDE。所谓普遍使用的就是它不仅仅可以用来开发JAVA程序,也可以用来开发C/C++、PHP_,cse等程序;所谓开发时可扩展就是任何人都可以扩展其功能只要符合Elip的规范一都可以开发相关的插件(这也是使用Eclipse的另个好处:互联网上有大量的、功能丰富的免费插件可以使用)。正是由于其对于协同工作的支持以及丰富的插件扩展功能,所以本次开发所釆用Eclipse的PHP开发版本来进行。2.4EES(包括ERP)与P系统之间的关联P系统中保持了整个业务中相同的数据,在EES中没有保持这部分相同的数据,如果需要的话需要访问P系统的DB来得到。这样做的原因是为了使多个系统家族化。一EES和已经在运行的P系统之间尽量减少数据的重复程度,这样便于统管理这些数据资源。--14 大连理工大学专业学位硕士学位论文EES是使用PHP5来实现的,而P系统则是使用JAVA来实现的。由于采用了两种一不同的技术,所以两者之间的通信就成了个必须解决的问题。我们采用WebService来实现两者之间的通信。P一如果EES和系统必须同时对同个实务操作进行处理,那么需要两方共通调用JAVA的API来进行,如图2.3。另外,P系统提供的公共情报参考有:顾客信息、产品信息、产品范围信息、用户信息。EES与P系统的关联方式如下:(1)直接使用P系统提供的WS。利用既有的PHP逻辑,与P系统直接通信的时候使用WS来进行该情况下,订单信息等EES侧相关的数据并不需要被取得,只需要取得P系统DB内的通用信息。通用信息例如:商品表的商品名、顾客表的顾客名等。(2)经过EES使用WS进行通信EESMarketingEESMarketingEESliAlicationJ2EEAcationServerMarketinppServerppgDBServer-?^^—IEHEJAVA用户信息表i卞I^"丨丨i!?画面公共处理1“/等各尸::;transaction/j^—^端士/I』丁iI,nI,MarketingM^ketin/jgI1]I个别业务处理_*ebServiceServiceIPSStCmWAP\_y|11,DBServerI上/通过facade来pSstemyjI—1进行实际处理ServiceAPIC^[IIZZZI^^/商品信息表IU^^II图2.3EES系统通讯不意图Fig.2.3EESSystemcommunicationchart既有的PHP业务进行JAVA化的时候,EES和P系统两者的情报都需要提取的时候,不调用P系统的WS,而是调用EES的WS和P系统的JAVAAPI来进行联合调用处理。比如,对顾客情报进行维护,P系统有必要将每个顾客的点数和购物累计金额等EES相关的情报进行更新。这个时候,使用EES部分实现的WS来完成这个功能。EES中实现的WS首先查询EES对应DB来取得基本信息,再调用P系统中JAVAAPI来实现情报的更新操作-15- 基于EC-CUBE的ERP系统设计与实现2.5系统各个层次间相关类的实现通过程序入口控制类依次调用画面表示层、事务处理层、业务逻辑层和数据访问层。尽可能使每个层面上处理的内容都清晰明确,以提高程序的可维护性。图2.4是程序间类的调用关系。ScFacadeXXX__LCMainPaeXXX_g_\\ScServiceXXX\\ScuerXXX_Qy_ScCommonXXX__图2.4调用关系图Fi.2.4Callchartg(1)Facade的实现Facade是服务器端逻辑处理的入口类。主要用来处理事务相关上的完整性。所有业一务中涉及到的和事务相关的逻辑都应该通过Fapade来进行控制边保持事务的完整性。-6-1 大连理工大学专业学位硕士学位论文因为Facade是事务管理的执行类,所以Facade的方法被画面部分的Page类调用时,一每次必须完整结束,不允许次处理多次调用的情况发生,如图2.5。.,"""■1|SCFacadei_I+‘bIeginO:void+I:ommitdO:voi[■+rollbackOid:vo ̄AI1 ̄I ̄I:I;SCFacadeEx■__^iSCFXxIacadex^'',■I■■I?I八…、;1;fISCFacadeXxxEx_一_I1/|Fa?cade基类Facade基类扩展JI■丨I类。公共处理追加的时候需要添I‘■加全体Dao到本类中。^事务管理在该类中来实现。单独实職成图2.5Facade类图Fi.2.5Facadecglasschart(2)Service部分Service来实现各种计算处理、数据存储、与WSManager相关联的业务逻辑。Service不对Session管理相关信息进行操作。(3)DB访问层数据访问层用来对数据库进行CRUD的处理,数据访问层依靠SQL对DB进行操作。数据访问层使用EES提供的公共对象来执行SQL对DB实现访问。由于不同层次的实现类只是具体的处理业务不同,类的层次结构基本相同。在这里就不在赘述了,Server部分和DB访问部分的类层次关系可以参考Facade部分。26策.略制定(1)在线查询的处理策略需要取得P系统上公共数据的查询操作都需要通过WebService来进行操作。对于EES系统本身的用户登录信息等相关信息,可以同过SESSION来进行查询。(2)在线更新操作处理策略--17 基于EC-CUBE的系统设计与实现PHP侧的逻辑不能继续使用的情况下。可根据需要对输入校验等PHP已有的逻辑进行自定义化的修改。需要登陆处理等相关实务操作的地方,通过调用WebService来进行处理。在处理同时,必须考虑到PHP侧的逻辑中是否有必要对操作进行事务管理。PHP侧的逻辑可以复用的情况。PHP侧在进行更新操作的时候需要对其进行事务管理。在这种前提下,WebService侧是否需要进行事务管理是需要考虑在内的。比如,订单登陆的同时需要进行会员临时登陆的处理,临时登陆是在P系统中通过WebSemce一的调用来实现的。订单登陆和临时登陆分别属于不同的事务,无论两个事务中的哪个发生了错误。,两个事务都需要回滚以防止数据完整性上的错误(3)事务处理相关的注意事项有的时候WebService在处理事务的过程中会调用P(系统)的API,在这个时候不可以进行嵌套式的双重事务管理。在调用的过程中要显式的使用事务处理的开始和关闭方法。图2.6描述了事务处理的具体处理过程。LC_Page_XXXServiceLogicQuery_ExDataBase’■■■■-■—‘"‘II1.调用服务^丨i1.1I1开始?P1■?II1.2登陆或更新等単i独的操作i,?门I1‘3提交LI?rnIU\发生异常1i2.回滚;(IIIIIL±-;,!I图2.6事务处理顺序图Fi.2.6TransactionSeuenceDiaramgqg(4)报表打印策略报表的打印基本都通过WebService来实现。WebService和报表的打印功能都是通过P系统部分的功能来实现的。18 大连理工大学专业学位硕士学位论文3系统分析本章主要阐述了在EES(ERP部分)开发的前期准备过程中通过多次的与终端用户进行交流,对EES进行的全面的系统分析工作,提出EES开发的目标和原则,列出系统的业务流和功能需求。3.1EES的设计目标和设计原则一-EES(ECERPSYSTEM)的开发需求是有日本的家办公用品经销商提出的(下X一称为株式会社。)其目的是开发出套完整的包括电子商务和ERP在内的前后端业务相对完善的管理系统,来提高其行业内的综合竞争力。一ERP部分作为EES的-个重要组成部分,其设计目标是以ECCUBE为基础,以扩展的方式开发出一套符合X株式会社需要的作业流程,适合其特点的ERP操作系统。一在满足X株式会社所涉及到的各项业务操作的前提下,重新开发套覆盖范围更广、更加安全、更加高效、更加稳定、更好使用体验的新系统。因为EC-CUBE在日本有比较广泛的使用基础,而且该系统是完全开源的,进行扩展开发也比较方便,所以釆用该系统作为新系统开发的基础。公司内部开发人员使用WinXP进行开发的较多,而且Eclipse对于PHP方面的开发支持也比较好,所以开发人员的开发环境为WinXP下的EclipseForPHP。为了提高系统运行时的稳定性、安全性和运行速度,发布时我们在Linux上通过Apache来发布新系统。一另外,本系统的最终用户目前正在使用套既存的系统(以下简称P系统)进行业务和客户的管理一。P系统是X株式会社的个比较成熟的商业产品,其优点是能够快速的建立起一套功能相对完善的物流管理系统给客户使用。通过这套系统X株式会社积累一了些相对稳定的优质客户。为了充分利用既有的优质客户资源,本次新开发的系统必须能够与P系统上的数据进行整合与协调,。因此本次开发选用的数据库是P系统目前正在使用的Oraclell。仍然采用B/S结构,这样的结构可以让系统的使用者在不添置g任何新的硬件设备或者安装任何额外软件的前提下使用新系统,终端用户只需要通过IE(IE7或者更高版本,其他版本浏览器暂不支持)即可以使用本系统。一由于X株式会社是家大型的办公用品经销商,所以对于客户信息、产品信息、库存信息等数据的处理量会在百万级左右。而且随着时间的推移,各种数据会随之增加,因此新系统对于数据库的操作要能够应对大数据量的增删改查,并且能够满足安全方面的要求来保护客户的商业信息不被外泄。-9-1 基于EC-CUBE的ERP系统设计与实现一根据与客户沟通整理出下功能需求:用户角色管理、订单收发管理、商品库存管理、经营数据管理、报表下载打印、系统信息管理。图3.1描述了主要业务模块之间是如何进行交互的。、J商品信息t库存信息订单信息""""-订单N(库存管理模块、库存信息订单模块销售人员YC成本信息订单信息资金管理模块、应收帐信息/^户管理模;^\___(A客户信息ERPEC士B2BB2C,块模r、图3.1模块调用关系图Fig.3.1Modulecallrelationchart-20- 雄理工大学专业学位硕士学位论文;3.2需求分析由于原有系统的应用即将到期,而X株式会社也刚刚脱离母公司单独发展。为了更一好的整合、管理和控制好整个株式会社的资源,X株式会社急需套能够符合自身业务ERP一需求的管理系统。另外,能够与P系统进行无缝连接也是必须要考虑的个因素,只有这样才能使公司将P系统上的客户资源充分的利用起来。基于以上考虑一一,客户提出了下些需求点,作为整个新系统开发的基本要求:(1)系统基于是B/S架构(2)具备角色、权限管理功能(3)具备ERP基本功能(4)能够在后台定期完成批量性的数据计算和分析工作(5)能够以多种形式下载或打印所需样式的报表(6)能够自动发送email(7)需要考虑将来业务的发展,满足发展之后系统的可扩展性(8)能够与P系统进行信息交换(灵活读取P系统中需要的数据)一(9)整体风格统根据以上的要求,将整个系统分为三大部分:客户端部分、服务器端部分、数据存储部分。根据每个部分的处理特点不同,每个部分有包括若干功能。客户端:基本数据录入、环境参数配置、物流数据录入、既有数据导入、数据查询、报表下载服务器端:数据处理、报表生成、邮件发送、功能定制、角色管理、权限管理、数据有效性验证数据存储:DB存储、数据备份-2-1 基于EC-CUBE的ERP系统设计与实现3.3业务流程iistrt(ERP系统的角色可以分为:系统管理员(admnaor),公司内部用户用),客户(B2B,B2C用),如图3.2。EES基本运行参数配置?IIERP用户创建及配置?IERPERP运行参数配置^II发商品订单收I进出仓库管理I仓库内商品管理商品信息雒护IJ资金进出管理IEC运行参数配置(特殊用II^?户配置)特殊商品选择(指定用户〉I^I—“特殊用户?^用户基本信息维护IIf外部用户?商品检索、/L-^用户注册?商品选择j下订单,取消订单I^1图3.2全业务划分图Fi.3.2Businessdivisionrtgcha-22- 大连理工大学专业学位硕士学位论文首先由系统管理员进行对整个系统需要用到的各项参数进行具体的配置,对公司内部用户的账号和权限进行分配。然后本公司内部用户对商品相关的各项信息(进出订单。EC过程数量,商品数量,商品类别,商品权限等)进行相应的录入在整个中所需要的信息均以准备妥当之后,公司的客户可以根据自身不同的权限(B2B用户,B2C用户,‘。公司特定用户)来访问EES中的EC部分进行各种特定的商品交易与此同时,公司内部用户会通过EES中的ERP系统来及时了解系统中各个订单,商品,库存,财务上面的信息,并根据这些信息进行及时有效的调整,来最大化公司的各项资源。3.4数据分析-CUBE上进行扩展开发由于新系统是在EC,另外还要与原有P系统进行整合。所三大部分-以从大的角度来讲:ECCUBE既有数据P系统既有,相关的数据可以分为,数据,新系统数据。由于前两部分和EES中的EC部分不是本次的重点,所以在这里就一不做赘述了。在这里我们着重来说明下新系统中EC与ERP公用部分以及ERP单独运行所需的数据。(1)系统基本信息整个ERP系统如果期望能够正常运转一些基本信息作为系统基本信息,在,需要系统初始化的时候就设置完成。比如,用户角色分类或分组;不同的角色权限具有对系统不同的访问和操作权限;不同的模块能够操作的仓库与商品时不同;系统执行指定任务的时间和计划等设置,都属于系统的基本信息。例如:系统时间表、自动任务执行履历、打印信息、报表打印信息、仓库信息、系统环境配置表。(2)顾客信息客户是公司运营所围绕的核心目标,对于客户各种信息的管理直接能够影响到公司。未来的发展为了能够更好的对客户的各种属性进行评估,我们需要建立详细的客户信息。这样能够更为准确的评估客户以往的各种行为,从而能够更逐步精确判断客户的信用度、忠诚度等信息,以便为客户下次能够提供更为精准的服务。例如:企业级客户信息、个人客户信息、组织级客户信息、工作流履历。(3)商品相关信息商品作为系统操作的主要对象,本身的属性非常的丰富。为了管理好商品,需要对。商品的各个属性进行有效的划分除了商品的基本信息以外,对于商品的打折信息、相关产品信息、不同的价格分类等都需要管理起来。。例如:商品基本信息、商品附加消息表、商品与附加消息关联表-23- 基于EC-CUBE的ERP系统设计与实现(4)订单收发信息对订单的有效管理能够使得整体采购更加有效。根据这部分信息系统可确定定货量、S别供应商和产品的安全。可随时提供定购、验收信息,跟踪、催促外购或委外加工物料,保证货物及时到达。出于以上要求的考虑,需要将该部分的信息分为基本信息、订单状态一、收付款状态、退货情况等系列的信息,以便系统能够对系统内的资源进行有效的调配。例如:接收订单基本信息、接收订单详细信息、接收订单状态、接收订单优惠券使用信息、接收订单备注信息、接收订单客户关联表。(5)进出仓库及仓库间存储管理信息为了能够对库存商品的收发,、结存等活动进行有效控制保证库存商品的完整性,确保客户生产经营活动的正常顺利进行,。需要对各类商品的活动状况进行分类记录并能够以更加详细的信息表达库存商品在数量、品质等各方面的情况,以及目前商品所在的地理位置、部门、订单归属和仓储分散程度等情况进行综合管理。本系统将仓库存储部分的信息划分为下面描述的多个部分来满足以上所说的需求。例如:商品仓库内信息、仓库区域信息、货柜信息、货柜号管理表、货柜号管理明细表、存储使用信息、存储使用明细、货物打包出库信息。(6)销售相关、进出资金相关信息这部分包括了产品销售相关的资金处理信息。系统需要根据该部分的信息对整个系统的资金进行一系列的操作。包括总账管理、应收账、应付帐、现金操作、汇率操作等。系统还需要根据这部分的信息对于销售人员的状况进行有效的管理。并根据数据对整个公司的财务状况进行计划、分析和决策。例如:进账信息、担保金信息、销售部门信息、销售组别信息、销售员信息、销售业绩表、销售明细表、付款人信息、赊购账信息、除购账明细信息、赌购账整理信息、进账款操作履历、顾客区分预算信息、顾客区分月结销售信息。(7)报表和批处理用信息整个系统有着丰富的数据,如何能够更加方便快捷的从这些信息中过滤出用户想要得到的信息也是本系统需要考虑的内容,。如果关联过多的数据信息那么检索起来必然要繁琐和耗时一。我们从目前的客户需求出发,抽离出客户关注度比较高的些信息,供一客户打印和批量操作使用。如果今后客户有其他的需要,我们会根据情况作进步的划分。例如:销售实时情况信息、任务实时实施信息。-24- 大连理工大学专业学位硕士学位论文3.5功能分析EESERP部分)实现的功能包括登陆、系统管理、进货出货管理、库存管理、资金(管理、信息查询、自动批处理、报表及表格打印等功能,如图3.3。EES、统信息配置—人系统管理^EC""";ZQ細户Ic?交订糊订)内部客户\\I1\\\\_^运行参数图3.3系统功能用例图Fi.3.3Sstemfunctionalitusecasesgyy-25- 基于EC-CUBE的ERP系统设计与实现(1)系统设定该功能主要完成ERP在使用过程中所涉及到的基本参数的设定、配置特定用户信息以及针对不同用户的个性化信息设定。①基本参数在ERP系统的使用过程中在所涉及到的各个方面,有许多基本参数是必须提前设定好的,以便整个ERP系统能够正常的运行。其中包括进货出货业务、库存管理等各种业务所涉及到的参数和阀值(仓库所用到的规格、计件方式等,进货阀值、出货阀值)(、、等,财务流程中会使用到的各种阀值和基本比率客户信用阀值货币之间的汇率不同商品的税率、不同时期的税率等)的设定。②创建用户一EC来根据本株式会社特殊的业务需要,有些客户是不需要通过进行注册而直接预置到系统中可以直接使用的。这部分客户有点类似于我们所说的大客户,无论从商品的供应量、供应种类,还是从商品的价格上都和普通客户有较大的区别。这部分特殊的用户需要系统管理员提前通过ERP来创建一,并设置相应的些信息,以方便公司在未来的各个流程中直接使用。③公共信息数据初始化,方便用户填写信息时使用系统中有许多公共的信息。这些信息需要在系统中提前初始化。这个模块就是完成这部分功能。它包含很多种类的信息:、,例如国家常用省份、银行账户信息、常用客户的各种信息(地址、账户、信用度等)、商品供应商、仓库信息、常用物流公司、邮编、代理商等。(2)进货出货管理由于EC和ERP使用的都是EES的数据库,所以ERP部分能够及时的获得整个公司内部各种商品数量、状态。能够很好的了解掌握现有订单情况及时出货,也能够根据一现有订单情况和商品库存量很好的预测未来段时间内需要相应购进的货物数量。本模块就是用来完成上述功能的。(3)库存管理本株式会社的规模较大,覆盖的范围较大,业务复杂度也比较高,这就需要系统能够在各地不同的仓库之间或者本地多个仓库以及同一仓库不同货架和货柜之间进行行之有效的调配管理,来满足不同时期,不同区域内各种商品的平衡供应。这也是保障整个公司业务顺利展开的重要步骤,以上这些功能有本模块来完成。-26- 大连理工大学专业学位硕士学位论文(4)资金管理本模块检查和监督资金的使用情况,考核资金的利用效果《组织资金供应,保证整个株式会社的经营活动不间断地进行,;进而不断提高资金利用效率节约资金;并根据一积累的数据进行进步的分析,提出更加合理的使用资金的建议和措施,以便公司能够在一个良性的财务状态下快速而又稳健的扩展自己的业务。(5)信息查询作为归纳和整理信息的必要手段,查询是EES(包括ERP)系统中主要的组成部分。系统提供了分业务的多种查询方式,都可以使用户快速而有效的定位符合条件的数据,而且可以根据数据的不同特点进行特定的排序一一、归类。每项不同的业务均有个单独的查询界面。根据业务的特点,系统会提供不同的查询条件供用户使用。用户可以进行整个业务线上的全件检索、全匹配的信息检索、以及模糊匹配的信息检索。系统在显示检索结果的同时还会根据业务和检索出的每条数据的具体情况提供相应的业务操作功能给用户。(修改、查看单条信息)值得注意的是,该模块在查询的过程中还要查询出P系统既有的数据,来提供全面完整的数据给用户使用。(6)自动批处理该模块使用一JBOSS后台调用JAVA开发的程序按照定周期来执行完成后台批处理功能。。系统提供独立应用程序,通过设定不同的输入参数来完成不同的后台批处理任务由于后台批处理功能可以让系统在无人值守情况下自动执行,系统中需要操作的记录会全部自动完成,并且会以日志方式对相应记录的执行过程成功与否记录保存,使整个系统的自动化程度有了很大提高,同时节省了大量人力,显著地提高了工作效率。自动批处理是完全独立的程序模块,可以与Web系统部署在不同服务器上,运行时也不会依赖Web模块的调用。这样的分布式部署设计,使Web模块与自动批处理模块在运行时既能相互统一,又能不占用彼此的资源,使系统的运行效率得到了极大的提升。由于ERP业务中有大量的公式性、周期性的重复工作,所以此类工作大都采用该种方式来自动处理(如月底结算、周期库存清算等)。(7)报表及表格打印本系统不仅提供了丰富的报表查询而且提供了多种输出格式,系统支持HTML,Excel和PDF等。这些报表都能够在远程打印机上直接打印或者进行离线方式的本地间接打印。-27- 基于EC-CUBE的ERP系统设计与实现:系统为用户提供了几十种报表功能固定报表,满足用户去获取从各个业务方向的,、各种不同报表需求为用户提供了完善的数据汇总统计以及各种数据状态的分析,使用户可以更加便捷的获取到真正有用的信息。:自定义报表提供自定义报表功能,该功能可以根据业务的具体实际需求,以业务和客户的特定需求为中心去自定义想要的各种报表(比如显示项目、显示条数等),极大的扩展了报表功能,满足了不同业务特殊报表需要。-28- 大连理工大学专业学位硕士学位论文4系统(ERP部分)框架实现41.系统实现概述对于整个系统来讲是由两部分组成的(EC和ERP)。从业务角度来看,两个部分在业务逻辑上相互独立分开、互不干扰。有业务重叠的地方主要是在商品和客户的属性一状态部分。从技术实现的角度,由于两个部分使在同个框架下进行开发的,开发完成后也需要发布到同一服务器上进行使用,所以无论哪个部分使用的技术都是完全相同一的。这也保证了整个系统的实现风格、编码风格、用户接口的风格等的统性,便于系统整体日后的维护和升级。由于本文的重点侧重于ERP部分,因此在对实现的细节部分进行阐述的过程中主ERP一要以部分作为例子来进行说明。虽然只是系统的部分,但是除了具体业务处理一上有所不同之外、,系统其他部分的实现方式实现风格都是同的,完全能够代表整个。B。系统是如何实现的本文的最后,在附件中也给出了部分实现代码,方便大家参考4.2ERP实现功能简述要对企业内部的资源实现高效的管理就必须建立有效的信息化管理机制,这就是ERP存在的意义。对于本系统的ERP部分框架结构,要实现如下目标:(1)更加容易的实现复杂画面的功能;(2)对于网站框架内各种状态要提供相应的功能;(3)要能够优化提高组建的可维护性和复用性;(4)画面前后台的分离;(5)能够与P系统通过Webservice进行协同工作;一一(6)业务逻辑通过调用的Webservice来实现,这点对于期项目来说不会完全一PHP来暂时代替实现,其中部分功能可能使用。4.3ERP部分架构构成ERPEC-CUBE。部分以为基础,经过自定义的扩展来实现具体的业务使用EC-CUBEC-CUBE作为基础是因为E有如下优势:(1)代码为PHP开源代码,搭建简单方便;(2)功能扩展相对简单;(3)符合日本市场的需求,日本的本土化程度高于其他框架;-29- 基于EC-CUBE的ERP系统设计与实现(4)插件服务支持比较完善。EC-CUBE有助于快速搭建网站,但由于其结构相对简单,有些功能页面的处理逻辑中掺杂着对相关联的数据对象的直接操作一。这种层次分离不够清晰的情况在般的中小网站中缺陷不是特别明显,。但是对于大型的项目如果层次不清晰的话会直接影响整个项目开发的进度和日后维护的难度。而且,.基本框架也无法满足与P系统的进行数据共享的需要。为了能够更好的整合业务需求,完善系统的扩展性和可维护性,扩展之后的架构使P一用与系统样的表示层、业务逻辑层、数据持久层的三层结构。在满足扩展性和维护EC-CUBE性需要的同时利用快速开发的优势来打到提升项目整体开发效率的目的。并且能够通过WebService与P系统进行数据交换。-图4.1为使用ECCUBE为基础实现的MVC三层结构示意图。能够更好的将各层之间的逻辑分离开并为之后的扩展提供保证。表示层服务层持久化层;丨;iC'ientl端Html■P#flf:;>|ppH—;八仗甩.Dao1:PHP:()1^III/:^Facade(PHP)|II^I:^>I]——:IServicePHPI(),,\:rhz;|\Sma;rtWSManae\y\;||>g:Persistentj^浏览器!f;11;\IyIII'SL、—QDe:sinTemlateLoicgp:g/J1|;:DBI1/i丨H⑶EnM‘titodel:IIy;[[图4.1ERP架构图Fig.4.1ERParchitecturechart-30- 大连理工大学专业学位硕士学位论文4.3.1表示层表示层是提供用户使用界面的。所有在线请求处理都是用户通过浏览器访问提供的用户接口来实现具体操作的。以框架自带的UI为基础,参考Smarty的开发规范,通过修改HTML来生成客户使用的UI,通过修改Javascript来实现具体的业务逻辑。(1)关于Smarty模板EES使用的设计模板是使用PHP编写的能够被Simrty引擎解析的模板格式。扩展“名为.tr的文件是表示层所对应的主要模板文件Smart的标p。模板文件都是都是按照y“”“准规范来实现的<-。通过在html中使用定义好的界定符!和在界定符范围内{丨一我们可以使用Smarty定义好的些标签来进行画面的处理。在tpl模板里,我们可以使用内建函数和自定义函数对画面在不同情况下的表现方式进行控制。内建函数不可以被修改,开发的过程中我们必须按照规定好的方式来使用它们。一例如:if、ection和stri。}{s}我们也可以根据业务的不同需要,使用些自定{{p}等义函数:htmltihtmlelectdate。,例如oons和s{—p}{_}等_Smart自定义函数通过y内部的插件机制起作用,这些函数可以被随意修改,如果一Smarty本身提供的函数无法满足当前的需要,我们也可以自己定义些解决特定问题的函数来使用,这在框架内是完全允许的。无论是内建函数还是自定义函数在语法上都是相同的,所以使用起来没有任何的区别。使用这种标签的好处在于,画面编写好之后,如果需要修改某个变量修饰符对应元素的状态或者动作,只需要修改对应的变量修饰符就可以了,不需要逐个元素进行修改。这样既提升了效率,有减小了出错的概率。使用Smarty能够使画面表示层与业务逻辑层的分离。在业务逻辑不变的情况下,.可以对设计样式进行需要的变更;也可以使网站根据不同时期的具体情况进行相应的变更。组成Smarty的关键在于模板引擎,Smarty整体框架就是通过这个模板引擎来构成的。Smarty是PHP代码和设计模板共同组成的,并可以通过修改模板文件的参数来达到修改画面的目的。Smarty还提供了自定义修改器的扩展功能,系统在进行安全处理中就使用了这个特性。-31- 基于EC-CUBE的ERP系统设计与实现(2)画面的迁移方式Smart通过该画面对应的Pe对于y的画面迁移,浏览器表示的画面ag类中的相关处理的处理结果来决定需要迁移的具体目标.2。,如图4处理执行I^?原幽面Page类浏览器迁移画面1^I1迁移画面1<图4.2画面迁移图Fig.4.2Screenworkflowchart参考上图:,整个请求发出后画面在迁移过程中的步骤如下①用户操作浏览器发出业务请求;②服务器接收到请求之后通过Page类进行处理;③Page类处理之后调用具体的业务实现类完成请求所需要的后续操作;④根据操情况跳转到相应的迁移画面,有些业务请求会直接迁移回原画面;。⑤服务器将结果反馈给浏览器,画面处理结束(3)关于前台展示技术作为web应用程序,画面内容的动态显示和变更需要使用JavaScript和JQUERY。由于正常的网页(不使用异步请求)如需要对画面的内容进行更新,必须重新载入整个一旦处理的业务逻辑比较复杂网页页面。而这些页面、处理时间较长,会大大降低系统“”的用户体验。因此,在有些比较重要的画面(如下面介绍到的订单录入画面),为了提高客户体验,我们使用JQUERY来实现画面的异步请求操作(AJAX),这样能够大。幅度的提升系统的有好感在整个请求过程中,我们只提交画面上关键的信息到后台,这样能是页面在正常使用的情况下减少相应时间。在传输过程中,我们使用JSON作为-32- 大连理工大学专业学位硕士学位论文数据格式,,这种格式易于人阅读和编写,同时也易于机器解析和生成网络传输速度()是一种理想的数据传输格式。画面上文字大小、字体等相关的设置需要使用CSS。由于对于不同的浏览器而言JS和CSS会有不同的表现结果,所以在编码阶段这些也是要考虑在内的。本次幵发中所用4-.0JavaScritECMA2623rdedition1到的HTML版本为W3C制定的标准样式.5,,p使用CSS使用W3C的2.1版。4.3.2服务层整个系统中业务逻辑部分都是在这个服务层上来实现的。其中大部分使用PHP来实现,少量和WS相关的使用JAVA来实现。当表示层的请求传回到后台服务器之后,首先跳转到画面对应的后台处理代码(PHP),后台再根据请求的内容进行相对应的处,,并调用对应业务处理代码进行处理理来确定接下来需要进行怎样的业务逻辑处理。整个过程都是服务层来对应。我们将业务的处理细化成了两个部分。Facade层和Service层,两个部分共同组成了业务处理单元。其中Facade层主要负责事务的创建、处理和销毁,所有事务上的处理都放在这里来控制。Service层负责更加具体的业务逻辑细节上的处理,根据请求内容来判断将要如何使用的持久层对象和WS来完成相应的业务请求。这样的好处是,使事务处理和业务细节处理更加独立,从层次上更加清晰每个部分的职责。这样,既能够在开发的过程中能够清晰的划分出每个部分的具体职责;也便于日后维护过程中快速的理解代码的作用,迅速的修复或扩展系统机能。"”WSManager的作用管理本系统与外部P系统的数据交换。根据请求进行相应业务处理后,如果需要用到外部系统的相关数据,贝U需要通过Service层调用WSManager,由WSManaer对请求内容进行分配,取。WSg,调用具体的WS的实现得需要的数据Manager是使用PHP来实现的,而具体调用到的WS则是使用JAVA来对应的。因为后PHP转由一JAVA来实现。期开发打算将,这里主要是提前进行部分的基础工作本系统中使用PHP中的SOAP扩展来实现WS的相关调用。具体的实现过程中我们将WS的调用过程做成单独的WS调用类,该类暴露相关的调用接口,在WSManager中统一调用。例如:系统中SCWebSerUtil.h类所实现的功能,就是我们之前所说的WS_ppManager。该类中定义了系统需要用到的所有的WS的调用:etCustomerPerson、gudaeBasicnfoSstem、serchLoinaEnr。ptIyagDatty等-33- 基于EC-CUBE的ERP系统设计与实现每个方法中根据具体业务,生成调用对象=¥webServiceUrlSCWebSerUtilEx::""getWebServiceUrl().MarketForthputtmgLogmWebService?wsdl=¥servicenewIMarketForthputtingLoginWebService¥webServiceUrl()传入所需的参数''=n->¥aramoraizationcomanId¥formParains[hidComanId]p_gpypy=''iiioramza->namrra¥paragtione¥fomPamsregistCompanyName]_[=''->¥paramorganizationorgaiiizationId¥formParamsWdOraiiizatioiiId_[g]调用相应的WS并得到返回结果m=SparaetersnewwsMarketlngSystemForthputtingLoginParamListO=->SparametersuserinfoSCWebSerUtilEx::getUserInfo__()=->SparametersparamListarray(¥paraml)=wSparameterneforthputtingLoginQ=¥arame->rptersystemFothputtii]gLoginParainListSparameters=-->>¥result¥serviceforthputtingLogin¥arameterretum(p)另外,需要指出的是,上面调用到的¥service实例所对应的具体类的内部实现,是通过获取SoapCUent对象引用的服务来实现的。4.3.3持久化层数据持久层根据之前定义好的数据模型创建了相应的实体类。并根据具体业务的需要实现了相关实体类的具体操作类(DAO)。服务层处理之后的请求最后会调用不同的实体操作类进行真正的数据操作,以便真正完成整个业务请求。对于数据操作,如果对一统是使用H应的数据操作实体相对单,系ibernate来实现的。由于Hibernate对持久层一封装过于完整,,导致无法对SQL进行进步的优化无法灵活使用JDBC的原生SQL文;由于JDBC己经封装到了Hibernate中,所以这种数据操作方式没有JDBC直接访问DB的效率高。因此,如果操作的数据对象比较复杂,系统还是直接使用JDBC的方式来处理DB。4.4订单处理模块部分的实现由于整个系统过于庞大一,功能模块比较多,限于论文篇幅,本文主要介绍下订单处理模块相关的画面和数据持久层部分的具体实现一。虽然只是其中的个模块,但具体34 大连理工大学专业学位硕士学位论文实现的方式是按照之前介绍的系统架构来进行的,每个模块只有具体业务上面的区别,能够代表整个ERP部分的具体实现过程。4.4.1业务实现类首先需要说明一下一,系统在实现的过程中为每个业务类型的具体实现类都增加了cr个扩展类。比如:LBValidatorEx、ScFacadeXXXEx、SSeviceXXXEx、ScuerXXXEx,这样做的目的是为了将来在有业务扩展变更的时候可以更方便的对_Qy__系统进行修改。对于系统共通部分的变更,可以直接在相应模块的扩展类中来实现,从而减少了系统的变更。在目前的阶段这些扩展类中并没有具体的业务实现。系统中的每个业务模块的实现类的继承和调用关系大体上是相同的,下面以订单处“”理模块中的主要业务画面订单录入的实现类(LBPaeEA101)为例:_g_(1)该类首先继承公共主类aBPage)_整个系统中一些基本操作,所有画面都继承该类,类中只定义了画面需要的,框架中会使用到的一些基本方法都在该类中定义,该类不负责具体的业务逻辑。(2)调用验证类(LBValidator101等)进行本业务相关的校验一每个模块根据具体的业务不同,实现了个数不的数据验证类。该类的主要作用是用于验证进行业务处理的必要条件是否满足,例如:当前用户是否有权订购本次订单总额的商品。基本的原则是以画面为单位,每个有需要的画面的业务实现类会调用该类对应的验证类。(3)校验成功之后通过调用具体的业务实现主类类(SCServiceEA101Main)业务实现主类是实现业务逻辑的主要部分,根据业务逻辑的复杂程度。相对复杂的一c业务般会划分为业务主类(SCServieXXXXXMAIN)和业务子类SCSXXXXX一(erviceINNER),对于功能复杂度般的画面,直接做成相应的业务一实现类(SCServiceXXXXX)。划分的主要原则就是尽量将个复杂的功能拆分成功能相对简单的多个实现。(4)再根据具体的业务需求调用子业务模块的实现类(SCServiceEA101ImerExecute、SCServiceEAl01InnerE:xecute2等)以及周边的一ce些公共类(MEnvironment、SCServiOrderCommonl2,MComment、SCServiceOrderCommon22>SCServiceOrderCommoiil3、MEnvironment、ServiceOrderCommonll等)来完成订单录入的业务处理。-35- 基于EC-CUBE的ERP系统设计与实现图4.3给除了该业务实现类以及为了实现该业务需求所涉及到的相关类的集成和调用关系:aLBVlidatorEx——I1SCServiceDeliv__eryDate一1ALBPage_jSCServiceEAIO__A;1ILBValidatorEAT1InnerExecute'“I\LB_Page_EA101//7t//SCServiceOrder一—Coinmon22I1X//*-*SCFacadeTAc//___^c^^eOrdersHead//L—JSCServiceEAIOSCS,一—erviceEA10 ̄“__ ̄/|?TTZ!_?1IniierExecute21/M1uM—Environment1am_丄一/\MCommentSCServiceOrderSCServiceOrderSCServiceOrder——__一—Commonl3Commonl2Commonll___图4.3订单录入类图Fi4.3Ordblsdig.erusinesscasagram(5)业务处理结束之后,会调用想用的DAO或者WS对数据进行实际的CURD处理,来最后完成整个请求。-36- 大连理工大学专业学位硕士学位论文4.4.2数据库逻辑和物理设计。选择所需数据库,将数据库概念模型转换为数据库库系统所支持的实际数据模型本系统选定为甲骨文ORACLEllg,根据该关系型数据库的特点,遵循良好的DB表结、构原则,减少冗余数据,以便提高存储数据完整性和可扩展性。系统的所有数据表要求符合第三范式,字段按照预定的命名规则命名。由于文章篇幅限制,本论文只给出订单处理模块的部分数据模型。在数据库逻辑设计的基础上进行数据库的物理设计。物理设计中根据ORACLEllg的系统特点和系统处理需要,合理安排数据存储和索引。本次使用的DB服务器不是多一磁盘的,可进,所以没有选择分盘存储。如果将来条件合适步考虑将DB对象、LOG文件和DB备份分盘保存。DB设计中大体遵守第三范式,设计相应的主外键关联。虽然按照第三范式的要求,设计数据库能够消除冗余数据,减少空间占用但在数据量较大、使用频率较高的查询中消耗也相对较大一。因此为了进步提升效率除了设置索引外还在需要的地方引入了重复字段。数据库设计的目标是建立DBMS能识别的关系数据模型,而关系数据模型建立的基础是首先建立ER模型,通过ER模型才能转换为关系数据模型,它较为直观的反应了I?实体与属性的内在联系与特点。本项目在设计的时候也大量的使用ER模型来帮助建立数据模型。根据具ERP相应模块的具体处理内容的不同,大体上将整个ERP部分的DB分成如下几个大的模块,4,如图4。(1)顾客订货处理;(2)仓库库存;(3)顾客信息;(4)商品信息;(5)供应商管理;(6)财务结算;(8)EC关联数据等。-37- 基于EC-CUBE的ERP系统设计与实现一备^单主—Z产^^乂乂订单顾客订单主编(:))订单备“表丨々发送订单客户信息表」 ̄k,.物流ID)y、订早 ̄r^\/->\\接收订单明广V^)\■优细SI|\^,)—接受订“Vm5^丨X/T^商品信息主表I广^55(^^订单优惠信息表库存信息『卜:5£)图4.4订货处理ER图Fig.4.4OrderrocessERdiamp^-38- 大连理工大学专业学位硕士学位论文上图是订货处理相关的DB设计的部分ER图。一,些各个部分都尽量按照上面所述的原则进行设计,同时根据具体情况的需要对具体的细节进行了特殊的调整,以满足客户对于系统在性能上面的要求。另外根据上面的设计下面给出相关的部分表结构设计。表4.1接受订单信息主表Tab.4.1orderheadinfo项目名物理名DB型位数主订单IDACCEORDERSHEADIDNUMBER10___CREATEDATETIMESTAMP做成日期_CREATEDBYNUMBER10做成者—UPDATEDATETIMESTAMP更新日期_UPDATEDBYNUMBER10更新者-DELETEFIAGNUMBER1删除标志位—INVALIDATEFLAGNUMBER1无效标志位_版本号VERSIONNUMBER10BASELOGINn)NUMBER10登录m__ACCEORDERSPARENTNUMVARCHAR210主订单号___ACCEORDERSBRANNUMVARCHAR22子订单好__ACCEORDERSDATECHAR8订单日期__订单状态ACCEPTING_ORDERS—STATUSCHAR3COMPANYGROUPCODEIDNUMBER10企业组别ID___COMPANYGROUPCODEVARCHAR220企业组别号__订单类型ACCEORDERSASSOCHAR2__销售员IDSALESPERSONIDNUMBER10__SALESPERSONNAMEVARCHAR240销售员名__仓库IDSTOREHOUSEIDNUMBER10_仓▲编号STOREHOUSECODEVARCHAR220_仓库名STOREHOUSENAMEVARCHAR240—BUDMANAGROPIDNUMBER10预i管理组别ID___CUSTOMERORDNUMBERIDVARCHAR210顾i订单号ID___顾客订单号CUSTOMERORDERNUMBERVARCHAR230__预算项目IDBUDGET_ITEM_IDNUMBER10BUDGETITEMCODEVARCHAR230预算项目编号__SENDTRADERIDNUMBER10物流ID__SENDTRADERNAMEVARCHAR240流名__配送预定日SEND_PLANS_DATECHAR8配送预定时间IDSEND_PLANS_TIME_IDNUMBER10SENDTRAENQNUMVARCHAR214物流査询号___SUMPTIONTAXRATENUMBER3—费税率CONJ—CASHREPAYkcfuMNUMBER12现金返款累计额___LSENDFLAGNUMBER1邮件发送标志位MAI__39 基于EC-CUBE的ERP系统设计与实现表4.2接收订单明细表Tab.4.2acceorderseicalinfo__p_项目名物理名DB型位数ACCEORDERSSPECIIDNUMBER10订单详细ID___CREATEDATETIMESTAMP做成日期_CREATEDBYNUMBER10做成者_UPDATEDATETIMESTAMP更新日期_更新者UPDATED_BYNUMBER10DELETEFLAGNUMBER1消除标志位_无效标志位INVALIDATEFLAGNUMBER1_版本号VERSIONNUMBER10EDACCEORDERSHEADIDNUMBER10主订单___范围代码CATALOG_CODEVARCHAR220SKUE)NUMBER10商品ID_COMMODITYNAMEVARCHAR240商品名_COMMODITYUANTITYNUMBER10商品数量_QSALEUNITCLASSIFICATIONCHAR3销__i单位区分后台未处理标志位baciCprd_security_flagnumber1ACCEORDERSSUMSUBTLNUMBER12订单金额(小计)___C:OMAMOMONREGUFLAGNUMBER1商金额调整标志位____COMAMOMONREACOMMVARCHAR2200商品别金额调整注释____商品别金额调整额COM_AMO_MON_REGij_SlJMNUMBER12COMINFCOMMODETCOMMVARCHAR2200()商品信息商品注释____COMINFORCROSSREFFLAGNUMBER1商品信息(商品标志位)____商品信息(商品ID)CMM_INFR_CROSS_PR_SKU_IDNUMBER10C0MINF0iCRRiFfARkuVARCHAR220商品信息(关联商品)____j£cominforacZ:eflagnumber1品情報(饰品标志位)___COMRETGOODSACCUCNTNUMBER10商品退货累计数___COMRETGOODSEXCCNTTNUMBER10商品换货累计数___COMUNCSTTAXCNUMBER12(商品单价含税)___JNCOMUNCSTTAXEXCNUMBER12商品单价(不含税)____免税标志位TAX_FREE_FLAGNUMBER1表示顺序DISPLAY—RANKNUMBER10优惠‘IDCOUPONJDNUMBER10明细编号SPECIFICATION_NUMBERNUMBER0IVALWAITINGITyNUMBER10入货等待数量ARR__QUANTDISCOUNiCLASSIFlicATIONVARCHAR22打折区分_范围IDCATALOGJDNUMBER10PROSTOREACCORDSUMSUBNUMBER12代理订单额^__(PROSTOCOMUNTAXINCNUMBER12___代理商品价含税)___PROSTCTAXEXCNUMBER12代理商品价(不含税)_LCOM_UN__40 大连理工大学专业学位硕士学位论文表4.3订单优惠信息表Tab.4.3acceorderconinfo__p_项目名物理名DB型位数ACCEORDHEADCOPNINFOIDNUMBER10订单优惠券信息ID____CREATEDATETTMESTAMP做成日期_CREATEDBYNUMBER10做成者_UPDATEDATETIMESTAMP更新日期_更新者UPDATEDBYNUMBER10_消除标志位DELETE_FLAGNUMBER1INVALnJATEFLAGNUMBER1无效标志位_订每头)ACCEORDERSHEADIDNUMBER10K___表4.4发送订单客户信息表Tab.4.4acceordercustomerinfo项目名物理名DBS位数ACCEORDERSHEADCUSTIDNUMBER10订单顾客ID____做成日期CREA^E_DATETIMESTAMP做成者CREATEDBYNUMBER10—DATEDATETIMESTAMP更新日期UP—PDATEDBYNUMBER10更新者U—DELETEFLAGNUMBER消除标志位—无效标志位INVALIDATEFLAGNUMBER1_版本号VERSIONNUMBER10CCEORDERSHEADK)NUMBER10订单头IDA___ACCEORDERSPARENTNLiMVARCHAR210订单主编号___CCEORDERSBRANNUMVARCHAR22订单分号A___BILLDESTCUSTIDNUMBER10订货顾客ID___BILLDESTCUSTNAMEVARCHAR240订货顾客名___BILLDESTCUSTNAMERUBYVARCHAR240请求顾客名拼音___BILLDESTCUSTPOSTNUMVARCHAR210请求顾客邮编____BILLDESTINAAREACODEVARCHAR22请求顾客地址编号_——BILLDESTINAADDRESSCODEVARCHAR220请求顾客住所编号___BILLDESTCUSTADDVARCHAR2320请求顾客住所___物流IDSHIPPINGJDNUMBER10流名称SHIPPINGCUSTNAMEVARCHAR240___SHIPPINGCUSTNAMERUBYVARCHAR240物流名拼音___SHIPPINGNUMBERVARCHAR220物流编号_SHIPCUSTPERIDNUMBER10物流负责人ID___SHIPCUSTPERNAMEVARCHAR240物流负责人名___物流传真SHIPCUSTFAXNUMVARCHAR215___41- 基于EC ̄CUBE的ERP系统设计与实现表4.5商品库存信息表Tab.4.5skustoreinfo项目名物理名DB型位数SKUSTORINFORIDNUMBER10商品仓库信息ID___CREATEDATETMESTAMP作成时间_成者CREATEDBYNUMBER10_IJPDATEDATETIMESTAMP更新时间_UPDATEDBYNUMBER10更新者—ELETEFLAGNUMBER1消除标志位D_INVALIDATEFLAGNUMBER1无效志位—版i号VERSIONNUMBER0仓库IDSTOREHOUSEIDNUMBER10_商品IDSKUJDNUMBER10PACKINGSIZEIDTHNUMBER8包装型号(宽)-JW包装型号(高)PACKING_SIZE_HEIGHTNUMBER8_包装型号(深)PACKINGSIZEDEPTHNUMBER8—_包装型号(重量)PACKING—SIZE—WEIGHTNUMBER8FULLCASEWIDTHNUMBER8全件(-)——全件(高)fullj:ase_heightnumber8FULLCASEDEPTHNUMBER8全件(深)__FULLCASEWEIGHTNUMBER8全林(重量)__空容积比率EMPTYCAPACITYRATIONUMBER3__移动数量MOVEMENTQUANTITYNUMBER10-家具标志位FURNITUREFLAGNUMBER1_标签数LABELNUMBEROFSHEETNUMBER10___CASElULTIPLENUMBER10件数混合数_iPICKINGCOMMENTVARCHAR2200包裹备注_FOLDINGRATIONUMBER3折叠率_EXTRAPROHIBITIONFLAGNUMBER1禁止追加标志位__全件数FULLCASENUMBER10_LASTORDERDATETIMESTAMP最终订货日期_—LASTSALEDATETIMESTAMP最终销售日期——初次进货日期FIRSTTIMEARRIVALDATETIMESTAMP___最终进货日期LASTARRIVALDATETIMESTAMP——初次入库日期FSTTIMESTORINGDATETIMESTAMP____最终入‘日期LASTSTORINGDATETIMESTAMP__4.4.3订单接收处理模块该模块的主要业务流程有订单录入、订单查看、订单管理、批量订单生成,辅助此模块的功能有商品选择、金额调整、业务员选择等,操作人员必须根据不同的情况将订单录入到系统中一,才能作为条有效的数据进行余下的各种业务处理。下面对本模块中-42- 难理工大学专业学位硕士学位论文一些有代表性的画面进行具体说明的。对于整个系统中多个画面都会涉及到的处理和处理所遵守的规范,会在对每个具体方法进行阐述的过程中内进行详细的说明,以便读者能够更好的理解本系统的设计初衷。(1)订单录入订单录入画面是整个订单处理的核心,根据不同的情况生成不同类型的订单是该画一查面的主要功能。使用者可以直接进入该画面来创建条全新的订购信息,也可以通过看订单列表来选择一个已经存在订单信息进行需要的修改。该画面可以设定相应的订货人信息、客户信息、订购的商品信息、送货信息等,还提供诸如送货要求设置、附加服务设置等特殊的需求。而且可以根据所选的各项订购信息,对所订购的商品进行即时的价格计算并在画面上显示出来。该画面中主要的功能方法如下:①InitParam对页面使用数据进行初始化处理。本画面是整个订单业务的核心画面,对应的业务一。功能比较复杂根据页面请求传递到后台的参数不同,画面在某些特殊部分会有些区别。画面的显示情况可以分为以下几种状态:初始订单录入、复制已存在订单、通过EMAIL录入的订单、对订单的更新、对既存订单的查看、对既存订单的删除等。每种一。状态下,对应的画面显示都有所区别,所能完成的具体功能也不是完全致该方法的主要功能就是根据不同的状态来控制画面上各个功能模块和按钮的显示状态和活性状0②setTransitionParam画面迁移时将迁移画面的参数进行设置。如果画面的请求需要将画面迁移到其他的,处理画面继续进行处理,那么在跳转之前会调用setTransitionParam,方法会根据具体请。求查找该请求所需要的相关参数并赋值,为后面的业务做好准备这样做能够尽量减少迁移过程中不必要的数据传输,从整个系统上看能够提高系统的整体性能。③changeAmountAdjustmentRetum“”de订购商品情报(金额调整)请求之后的跳转处理,该方法只负责调用具体的Faca。类,请求主要是完成当前订单对于所订购的商品情报调整之后,订单总额的修改④chaneCommentButong“"备注选择画面请求之后的处理,该方法只负责调用具体的Facade类。用来修改订单中备注相关的内容。⑤changeCommodityRetum-43- 基于EC-CUBE的ERP系统设计与实现“”商品追加、变更、查看请求之后的处理,根据商品信。首先取得请求的商品信息、息获得相应商品的打折信息优惠券使用情况的信息,从而综合以上情况返回正确的商品情报。⑥changeDestination"”配送地址选择请求之后的处理,该方法只负责调用具体的Facade类。如果订单的。配送地址信息发生了变化,该方法会修改相应的配送信息⑦changeStorehouseCombox“”订单头信息.仓库Fa请求之后的处理,该方法只负责调用具体的cade类。用于处理订单信息头部中所涉及到的仓库的相关信息的变化。⑧changeDeliveryGompanyCombox“”配送信息.配送者请求之后的处理,该方法只负责调用具体的Facade类。用于处理配送者相关信息的变化。⑨changeAcceOrdersArriWaitRadio“”配送信息.进货等待请求之后的处理,该方法只负责调用具体的Facade类。如果一。旦货物补充所在订单中涉及到货物存在备货不足的情况,系统会在画面上反映出来完毕,订单录入人员需要将状态修改为正常以便本单货物的状态变为正常,进行接下来的业务处理。⑩insertOrderlnfoBChecky“"确定请求之后的验证处理。订单信息填写完毕之后,如果操作人员进行了确定操。作,那么首先会调用该方法该方法会对画面录入的所有相关信息进行确认,确认之后。会判定整个画面的状态是否可以提交,并传回画面进行接下来的异步请求处理insertOrderlnfo如果方法10得到的状态是可以录入订单的话。画面会请求该方法来执行真正的订单内容的登陆操作。该方法只负责调用具体的Facade类,具体的操作在业务逻辑层处理。cancelOrder“”取消请求之后的处理,该方法只负责调用具体的Facade类。该请求执行后,系统。会逻辑撤销当前订单,将该订单的逻辑显示状态设置为不显示一需要说明的是,系统内的所有订单相关数据都会有个逻辑可用状态,系统在进行。删除操作的时候,只是将这个状态设置为不可用,而不是真正的去进行屋里删除这样的设计是根据客户的实际情况而确定的。由于订单信息对于客户十分重要,所以为了能够方便的追述到以前的所有订单相关的信息,客户允许对订单信息进行物理删-44- 大连理工大学专业学位硕士学位论文。.除对于日积月累造成的数据量增长,数据库性能下降的问题,采用定期备份相关数据到其他服务器的方式解决。(2)订单查看使用者可以通过使用画面提供的过滤条件来查询自己关注的订单信息。画面可以提供订单的录入日期、订单类型、订单号、订单总金额、订单的支付方式、订单的客户信息、物流公司的信息等重要的信息。一通过该画面步查询相关内容,也,也可以直接进入更加具体的订单详细画面来进可以将所选择的订单信息以CSV文档的形式输出出来给其他的程序或者模块使用。该画面中主要的功能方法如下:?InitParam一对页面使用数据进行初始化处理个检索画面,所以初始化的逻辑。由于该画面是相对简单,只是初始化画面检索条件的相关内容。②setTransitionParam画面迁移时将迁移原画面的参数进行设置。如果画面的请求需要将画面迁移到其他,的处理画面继续进行处理,那么在跳转之前会调用setTransitionParam,方法会根据具体请求查找该请求所需要的相关参数并赋值,为后面的业务做好准备。③searchOrSort检索之后对结果进行排序处理。画面发出检索请求后,会调用该方法。方法根据请求中的数据按照请求所要求的排序字段进行排序,如果没有相对应的排序字段,则按照默认的情况进行排序。④detailHandle“"。详细按钮压下之后跳转到详细画面的处理对于本系统,大部分的检索画面都是分成上下两部分,上半部分是检索条件,下半部分是检索结果列表。检索列表中的每条一数据都有个或几个超链按钮,,用来跳转到相应的画面查看该条信息更加详细的情况该方法的作用就是负责处理相关跳转。⑤CSVDownload将查询结果输出为C一般在检索画面只SV文件。本系统提供多种报表打印功能,一提供种比较常用的CSV格式,如果需要其他的打印格式需要登录到打印模块相关的画面进行。(3)订单管理一通过条件来锁定条具体的订单信息,并对该条订单进行更加具体的操作。这也是一““一种进入到订单录入画面的入口画面之。用户可以通过该画面的检索条件缩小需要-45- 基于EC-CUBE的ERP系统设计与实现一一操作的订单范围,对,并在结果列表中最终确定唯条感兴趣的订单其进行修改或删除(逻辑删除)。该画面中主要的功能方法如下:?InitParam对页面使用数据进行初始化处理。用户可以通过使用客户信息或者订单信息两种方,式进行订单的检索。该方法将根据请求方式来初始化页面的显示信息。②setTransitionParamI画面迁移时将迁移原画面的参数进行设置。如果画面的请求需要将画面迁移到其他,tTitir的处理画面继续进行处理,那么在跳转之前会调用seransonPaam,方法会根据具体。请求查找该请求所需要的相关参数并赋值,为后面的业务做好准备③searchCustomerlnfo。根据画面录入的客户信息,检索相关的订单信息并返回给画面④searchOrderlnfo根据画面录入的订单信息进行判断,如果订单信息真实存在,操作者权限符合该条“"信息的要求,那么直接跳转到订单录入画面对该条订单记录进行后续的操作。(4)商品选择ERP一个比较主要的画面该画面在整个部分也是。因为整个系统处理的商品种类一,样繁多所处理的商品各种状态也都不,所以本画面会根据当前请求的具体状态(订、商品己经发货等不同状态。单已经生效〉来搜索相应的符合业务规格的商品给用户选择如果出现库存不足的情况,画面还能够根据所选择商品的特点提供给用户相似的替代品供用户使用。“”“”该画面和订单录入画面相互配合,是订单录入画面中进行商品添加所必须的辅一助画面。从某种意义上将,虽然该画面是个辅助输入画面,但其处理的业务的复杂程“"度整个ERP中仅次于订单录入画面。画面会根据调用画面的状态分成标准模式、入库等待模式、销售截止模式、详细模式等差异化显示。该画面中主要的功能方法如下:①InitParam“”“”画面对页面使用数据进行初始化处理。通过订单录入调用启动的商品选择,在画面启动的时候需要对当前订单的商品数量、商品库存量、商品价格调整额等信息进行初始化,这些都由本方法处理。②setTransitionParam-46- 大连理工大学专业学位硕士学位论文画面迁移时,将迁移原画面的参数进行设置。如果画面的请求需要将画面迁移到其他的处理画面继续进行处理,那么在跳转之前会调用setTransitionParam,方法会根据具体。请求查找该请求所需要的相关参数并赋值,为后面的业务做好准备③addBtnHandler追加商品信息。对当前己经选择的商品进行增加删除处理。处理之后的结果会在稍后通过本画面传回到调用它的“订单录入"画面。④detailBtnHandler"“。、点击#细按钮时,提供商品的详细信息将商品相关的库存数可用状态、价格、、。替代品优惠信息等内容检索出来,提供给画面显示⑤getPageType根据请求源的不同状态,对页面的显示情况进行具体的设定。⑥setConamodityDetailList修"”改商品列表中的详细信息。商品列表信息是本画面与订单录入画面之间共享的数""“据结构。当本画面被订单录入画面打幵之后,每次对于商品列表信息的修改,订单录入”画面都会定期的通过异步请求来同步。该方法就是修改商品列表具体值的。⑦detailCountProcess根据商品列表中商品的数量进行最终确认。⑧setProductValue对商品的价格进行设置。(5)批量订单生成由于系统处理的数据量比较庞大一,单手动录入不仅效率低下而且容易造成错误。进行大批量的相同操作的订单数据处理可以大幅提高客户的运营效率一。本画面提供个接口给使用者,使其能够对大批量的订单数据进行相同的处理。画面可以同时通过数据文件读取大批量的订单信息,也可以大批量的修改订单当前的状态,,甚至是直接批量删除订单。在整个操作的过程中如果某条或某几条数据出现错误,系统不会处理该信息,并自动记录下该条数据的错误信息,以方便用户手动的进行恢复处理。该画面中主要的功能方法如下:①searchOrSort检索之后对结果进行排序处理。根据画面输入的检索信息检索出相应的记录。检索结果中包含该记录的是否已经录入等状态信息。②importAllData-47- 基于EC-gjBE的ERP系统设计与实现将检索到的数据进行核对处理,如果状态没有问题则开始批量进行数据的订单生成处理。③deleteData批量删除选中的订单数据,该方法只负责调用具体的Facade类。④errExport一旦出现错误系统就会生成一在批量生成订单的操作过程中有时会出现错误,条相应的记录并保存到日志文件中,本方法就是将报错错误的日志输出到指定位置,以方便操作人员对问题数据进行处理。4.5各种安全问题的实现方式对于Web应用程序而言,网络外部人为的恶意攻击是每个程序面临的最大威胁,也是每个Web应用程序所要防范的重点本工程根据不同的恶意攻击方式进行了有针对性的措施,以避免给客户带来不必要的损失。(1)跨站脚本攻击对策跨站脚本攻击都是由于对用户的输入没有进行严格的过滤造成的,如果程序存在XSS漏洞一,那么攻击者就会通过向页面里插入段恶意代码,通过构造恶意跨站语句来达到攻击用户的目的。所以我们必须在所有数据进入我们的网站和数据库之前把可能的危险栏截。在本系统中一,方面我们通过在Smarty的模板文件中使用变量修饰符(也叫变量“”<---->调节器)来提高对XSS的防范。类似于!¥arrFomi.delivfeecaitalize}中的{_|p“”“”caitalize这种方式,通过管道修饰符指定的具体过滤方法。caitalizeSmartIp在|py框架中已经定义好了,作用是将变量中的所有单词全部变成首字母大写。类似的,我们可以“”实现自定义的变量修饰符,例如定义securitFUter将变量中不符合安全规范的特殊字Iy符串过滤掉。这样可以躲避掉不安全的存在安全隐患的脚本。具体的实现方式是:①使用PHP来实现相关的防范XXS的过滤函数,如xxsDefence(具体的防范XXS的过滤内容在这里就不在赘述了)0②使用reistertnodifier方法来注册变量修饰符gj,""""->reistermodifice¥smartersecuritFilterxxsDefen。yg_(y,)③在有需要的模板中使用之前定义好的变量修饰符来防治XXS攻击,如-<rrlivfee-->!{¥arFom.desecuritilter。_|yF}-48- 雜理工大学专业学位硕士学位论文我们还可以使用PHP中htmlentities和htmlspecialchars对非法的HTML代码包括单双引号等进行处理。这两个函数的功能都是转换字符为HTML字符编码,特别是url和代码字符串。防止字符标记被浏览器执行。(2)SQL注入攻击对策注入攻击是对数据库进行攻击的常用手段之一。如果程序没有对使用者输入的数据合法性进行有效验证,那么程序就可能存在被注入攻击的可能。在程序实现的过程中,我们要求不能直接使用SQL来执行DB操作,而是使用PEAR的MDB2提供的预编译功能,使用该功能来进行DB相关操作。:使用类似于下面的方式执行SQL,可以很好的实现对注入攻击的防范'='*==->M¥statement¥mdb2reareSELECTFROMtablelWHEREfiledl?andfield2?TRlJEpp(,,DB2PREPARERESULT__)''=¥dataarray(testl,test2)=¥rows¥statement->execute¥data()“”通过¥mdb2->reareSpp对需要执行的SQL进行预编译,由于注入攻击只对QL语句的编译过程有破坏作用,而prepare已经准备好了,执行阶段只是把输入串作为数据处理,不再需要对SQL语句进行解析、准备,因此也就避免了SQL注入问题。(3)会话劫持对策n一攻击者利用各种手段来获取目标用户的SessioID。旦获取到SessionID,那么攻。击者可以利用目标用户的身份来登录网站,获取目标用户的操作权限,这是非常危险的对于SessionID的会话劫持等不正当的操作方式的防范措施可以实施以下几种策略。①定期更改sessionid使用函数sessionreeiierateidbooldeleteoldsession,deleteoldsession为true,_g_([__])—_则删除旧的session文件;为false,贝!J保留旧的session在画面的开头加上:sessionstart;_()sessionreenerateidTRUE;g_()_一Se这样每次从新加载都会产生个新的ssionID②对SessionID进行散列化本项目使用PHP自带的MD5方法来对SessionID进行散列化,使恶意攻击者无法猜测散列化之前的SessionID及命名规则,从而提高对于本网站的攻击门檻,达到防止恶意攻击的目的。③使用SSL加密-49- 基于EC-CUBE的ERP系统设计与实现网站使用https作为通讯协议,画面之间的信息传递是经过SSL加密后的认证信息,较之htp协议更加安全可靠。(4)跨站点请求伪造顾名思义一TP,跨站请求伪造是种允许攻击者通过伪装成正常的用户发送任意HT请求的一类攻击方法。,跨站点请求伪造攻击之所以能够成功,是因为攻击者可以完全伪造正常用户的请ki求,该请求中所有的用户验证信息都是存在于cooe中,因此攻击者可以对这些验证信一无所知的情况下直接利用用户自己的息cookie来通过安全验证。所以,要抵御跨站点,请求伪造攻击,关键在于在请求中放入攻击者所不能伪造的信息并且该信息不存在于一cookie之中。可以在HTTP请求中以参数的形式加入个随机产生的令牌(token),并一在服务器端建立个栏截器来验证这个令牌(token),如果请求中没有令牌(token〉或者令牌(token)内容不正确,则认为可能是跨站点请求伪造而拒绝该请求。令牌(token)可以在用户登陆后产生并放于session之中,然后在每次请求时把令牌(token)从session中拿出,与请求中的令牌(token)进行比对。那么如何将令牌(token)一参数的形式加入到请求中呢?对于GET请求,令牌(token)将附在请求地址之后,这样URL就变成h=tt//rl?tettokelPOST请求来说,要在form的最后加上p:ustokennva;对于""'""<n=-=iokenvarV>ittehddennametesttokenvaluet这样就把令牌(token)以参数puyp,的形式加入请求了一。由于个站点内有很多地方可以接受请求,因此可以在每次页面加载时,使用JS遍历整个dom树,对于dom中所有的a和form标签后加入令牌(token)。一些比较特殊的页面这样可以解决大部分的请求,另外,比如加载之后动态生成的html代码,还需要编码时单独的手动添加。(5)HTTP头部注入对策不能直接输出头部信息,输出头部信息需要使用PHP特定的API来进行。(6)机密信息浏览器缓存原则对于安全要求较高的、需要认证的画面(https)不可以使用缓存。使用类似于‘‘""”“"",,-headerPraa-e-rlmu-:nocache或headerCachConto:nocachestrevaUdate(gm)(;可以对,)浏览器的缓存设置进行关闭操作。(7)加密方式加密方式有两种①SHA256加密-50- 大连理工大学专业学位硕士学位论文需要进行加密并且不需要解密的情况下,SHA256使用进行加密。我们可以使用类’=’似crttestvalue¥5¥rouncis5000¥usesomesi〗lstrinforsalt¥yp(Vyg)的方式对需要的内容进行SHA256加密。-②AES128加密nd-需要进行加密并且需要在之后解密的情况下使用Riael128来进行。j加密''=¥tdmcrtmoduleopenMCRYPTRIJNDAEL128MCRYPTMODEECB___;,__;;yp_()=m¥ivcrtcreateivmcrtencetivsize¥tdMCRYPTRANDyp_(yp__(),_);__g_mcrypt_generic_init(¥td,¥key,¥iv);=¥datamcrteneric¥td¥inut;yp_g(,p)mcrtenericdeinit(¥td_;ypg_)mcrtmoduleclose¥tdyp__();解密=m¥decryptedcrypt_decrypt(MCRYPTRIJM)AEL128¥Kebase64decode¥StrMCRYPTMODEECB;_,y,_(),__)_d=¥ecsstrlen¥decrypted;()=-¥addinord(¥decrted¥decs1pgyp[;])rt=b-¥decedsustr(¥decrted0¥addmypyp,,pg);上述代码是实现加密和解密的关键步骤,相关函数的用法我们可以参考PHP手册,我们可以根据具体的情况进行相应的修改其他具体细节这里就不做赘述了。-5-1 基于EC-CUBE的ERP系统设计与实现5系统维护与测试一本系统的测试是基于web系统的测试,,整个测试过程比般的软件测试更加繁琐在集成测试和系统测试过程中不仅要验证和检查新系统的功能是否符合需求和设计,而且要对网络环境进行测试,因为用户的操作系统和浏览器不尽相同,所以还要确保系统可以正常显示在不同的浏览器上一。另方面,B/S结构的系统,高安全性和稳定性也需要满足,因而在系统测试和用户验收测试中,对安全性做到充分测试。ESS系统上线后的工作内容包括修复客户提交并确认的缺陷、检查并监控系统日志和数据合法性。、web服务器和DB服务器的性能;还有对用户新增需求的功能追加5.1测试策略及工具(1)测试目标ESS产品的测试工作由若干个不同测试组成,其目的是使系统得到充分的运行,验证各个模块之间是否能够正常运行并完成预期的任务,使产品达到最初的设计要求。参考功能需求说明书和产品设计文档,釆用黑、白盒相结合的测试方法,尽量详尽的编写用例,,通过运行这些测试用例,来验证系统和程序的正确性,今儿发现并修复错误保、证产品质量的稳定。本次系统测试主要目的是:该系统可以正常维护公司内部关系产品库存信息、客户订单信息,,对订单信息的真实性和有效性进行处理并能够根据公司内部的资源情况对订单进行最优化的处理等,并且确保系统能够长时间稳定的运行,大批量用户同时使用时用户体验不下降。(2)测试过程①测试计划的制定。相关测试人员从前期需求阶段就参与到项目中,能够很好的了解整个项目,并有针对性的制定相应的测试计划,选择适当的测试方法和测试工具,尽可能的使测试环境能够接近或达到真实的使用环境。②测试用例的编写。整个项目的实施过程遵循V模型,测试过程也不例外,从最初需求开发到后来的验收测试都由测试人员编写相应的测试用例。,确保系统的正确性③测试实施。在实施过程中,测试人员依据前期准备好的测试用例,在测试环境中进行测试一,针对每个测试项测试与预期输出的致性。-52- 大连理工大学专业学位硕士学位论文④测试报告撰写,,。所有测试结束后需要将发现的缺陷和问题汇总并进行分析提出修改建议,生成相应的测试报告。并将测试报告发给开发人员进行修正。等待修复一后,使用新版本在测试环境中进行下轮测试工作。)(3测试范围主要包括用户角色登录、订单信息处理、仓库管理、资金管理、信息检索等。:系统有系统管理员①用户登录、业务经理、业务员、库管员、客户等多种不同权限,每种权限的用户只能看到相应权限范围内的不同模块。。②订单信息处理:系统应该能够及时的获得整个公司内部各种商品数量、状态很好的了解掌握现有订单情况及时出货,也能够根据现有订单情况和商品库存量很好的预一测未来段时间内需要相应购进的货物数量。一③仓库管理:需要系统能够在各地不同的仓库之间或者本地多个仓库以及同仓库不同货架和货柜之间进行行之有效的调配管理,来满足不同时期,不同区域内各种商品的平衡供应。④资金管理,进而:组织资金供应保证整个株式会社的经营活动不间断地进行;一不断提高资金利用效率,节约资金,;并根据积累的数据进行进步的分析提出更加合理的使用资金的建议和措施一,以便公司能够在个良性的财务状态下快速而又文件的扩展自己的业务。⑤信息查询:作为归纳和整理信息的必要手段,查询是EES(包括ERP)系统中主要的组成部分。系统提供了分业务的多种查询方式,都可以使用户快速而有效的定位符合一条件的数据,而且可以根据数据的不同特点进行特定的排序、归类。每项不同的业务?一业务的特点均有,系统会提供不同的查询条件供用户使用。个单独的查询界面。根据用户可以进行整个业务线上的全件检索、全匹配的信息检索、以及模糊匹配的信息检索。系统在显示检索结果的同时还会根据业务和检索出的每条数据的具体情况提供相应的业务操作功能给用户(修改、查看单条信息)。(4)测试方法。①功能测试:根据需求式样书和设计师杨树来测试系统功能的实现是否正确软件的正确性是软件质量一一个很重要的因素,所以功能测试是整个测试中很重要的个环,整个系统采用了自动化功能测试工具Wer,节inRumi和人工测试相结合的方式来进行既能提高测试效率有可以确保整个系统在功能实现上的可靠性。②性能测试:通过使用LoadRimner来测试系统在大批量用户运行时的性能,收集运行速度、响应时间、系统资源占有等相关方面的数据。保证系统能够稳定的长时间运行。-53- 基于EC-CUBE的ERP系统设计与实现、、③可用性测试:对系统的输入输出框按钮超链、导航等进行测试,保证系统使用的正确?、准确和相关性。④安全测试:使用几组有效用户名和密码,及几组无效的用户名或密码进行组合。测试,保证系统能够正常登录。确认多次登录错误后是否有日志记录并相应处理在DB中查看用户敏感信息的加密情况,验证加密的正确性。(5)测试指标考量的指标有:障碍数、障碍跟踪情况、测试用例数、测试进度、严重缺陷率等。(6)测试工具、、代码在单元测试之后提交给测试人员进行相应的结合系统性能测试,测试过程51。edmine中使用的工具参考表.其中使用R进行了用户角色创建,能够使测试人员与dmin开发人员进行交互,每轮测试过程中,通过Ree记录相应的障碍并指派相应的负责一人员来进行相应的处理和追踪,最终确保产品在每轮的测试完整性。测试过程中使用的工具可以参考附录A中的表A.1。5.2测试用例及报告登录模块的测试是根据用户名和密码组合的有效性测试登录成功和不成功的情况,同时在正常登录的情况下,测试不同权限用户所能够操作的功能模块是否符合设计预期。测试用例和结果见附录表A.2。由于EES系统使用人数众多,因此进行压力测试和性能监测是很有必要的。首先需要搭建发布后的真是硬件环境并尽量模拟真实的网络环境,然后通过LoadRunner模拟1000到80000用户(每次增加1000个用户)同时对本系统进行访问,对数据进行读取和更改操作。经过两轮测试后,8000结果显示PMS在用户数达到数量级的时候,数据库交互8。正常,页面反应速度在秒钟内,用户体验正常,达到设计要求测试结果可以参考附录表A.3所示。由于时间相对紧张,对于新系统在满足业务需求的前提下,性能的要求倒是放到了次要的位置。对应的ERP系统因为是内部人员使用的情况较多,只要能够在正常的范围内能够忍受就可以接受,客户最初的目标是页面的响应速度12秒以内即可,结果显示能够达到客户要求的性能。虽然已经大大的超出了客户的期望一,但与些优秀的网站相比,相应时间还是稍微一有些逊色。造成这种情况的原因是多方面的,,但其中个重要的原因是由于编码过程中-54- 大连理工大学专业学位硕士学位论文开发工程师只是关注了相关业务的实现一,有些业务处理的时候在次处理过程中多次访问网络服务器,造成网络相应时间成倍增长造成的。这个问题将在后期得到解决。图5.1是性能测试的结果。aspirSmd—-._-■■_■MO■.IXD,S1XO-?--EO‘J::rTr!;:‘:丨—-—?■■-■二-一―二"-—-1■十--.卞^I聊‘=:二二:=二=i=:1::!■?:Lr^b11^^^1i;fp:::f:,苹丨軒年并I丨六里'一一一—一一4=;1厂:賞十亨^*.1IitrJ1t;1\\\fJ^I^jJ、'*M._■0r〈:I..'?1i(D?0S?W7;i8005OBS&lC01S^S??e??3??0916e?CRXS?K?cr?P3?CBKjC?m(81I0?tP????OSK406?BO3D?Wa?WfiO930Oit?*??fiS;WB?n油twsttapseitcwaM?w??:?,.,ISf??0WmUtB5联Mm1?■ITNTMmSXftKSHBXB_,RufAuVoMnAiTiirwTifw?titwwtwu_,f—"-m,l^”j教,^iMV-,jj■■-ail-…“rs\^,、SM■■?■--.rV/‘?,、?fJ1^I'-■■■■—"■I■—-*■■■—1■,;卜-—__L—^?3bI^mJ,?--——?—.一--—钱t3^i】—^‘4?I£n>--—?-??■—‘一.-j_—“?-?一14?^‘一-J■?4t?-...-?--,”一―二.—i.IW-?I\JIi<IKxo?tts3<Bcs?se?x???t????fi9IXtigjoutgt??e<i?woInLLItn<w^£si?t<w?wsn51图.性能测试结果图Fi.5Prlg.1erformancetestesut53.系统维护新系统经过用户验收测试之后,首先部署在试运行环境上,公司内部部分相关业务人员进行使用,试运行时间大约6个月左右,系统能够比较平稳的运行。但是,与此同时用户也发现了一些障碍,比如系统页面数据校验有些还不够严格,可能导致非法数据进入DB导致生成的报表结果等状态信息不正确。所以维护小组又进行了,更为严格的前端页面校验。并且强化了异常处理模块,在资源文件中对错误进行了定义、分级、编号一,使系统更加健壮和友好。同时,通过查看日志记录,也发现了些潜在问题,并及时进行了修复。一在试运行6个月后,系统正式发布。正式发布时,个非常关键的环节是与零点将原有系统切换到新系统上,并运行准备好的SQL脚本,将原有系统的必要数据导入到新的系统数据库中。由于之前已经知会相关工作人员,因此数据移植过程没有影响到系统的用户。目前该项目仍然有7名软件工程在进行维护对应工作,维护工作包括两方面内容:一是缺陷的修复,二是新模块和功能的追加。缺陷的管理是通过在服务器上安装的名为-55- 基于EC-CUBE的ERP系统设计与实现R一edmine的工具进行管理的,开发人员拥有独立的账号和权限,旦客户将新缺陷登录.到R一edmine中,通过缺陷票的详细信息,维护人员可意在本部的环境中模拟出错误,“”旦再现,,缺陷的负责人将缺陷票状态修改为处理中,然后进行修复完成后会将几个缺陷所对应的代码和脚本包提交到客户的备份服务器上并通知系统管理人员,让其进行更新。运维组很大部分的工作量是新业务模块和新功能的追加开发,客户的项目负责人(项目经理)会提出变更请求,进入需求变更流程,运维组会根据新的需求文档评估相关工作和影响的模块一旦客户认可,并将解决方案提交给客户的项目负责人进行确认,即进行增量的维护开发工作。新功能的发布仍然遵守正常的开发、测试、发布流程。-56- 大连理工大学专业学位硕士学位论文结论此ERP系统在需求调研和需求定义阶段,业务人员及开发团队与客户密切配合,并形成书名文档并签字确认,确保了需求和业务流程的清晰和稳定;以便减少后期的设计和代码修改。,使得系统的幵发能够很好地应用瀑布软件开发模型经过本人和同事对客户整体业务的前期分析后,以ERP系统的基本功能模块位基础,,,结合客户自身的业务特点,进行重新的自定义化的设计删除了不必要的模块并添加符合客户业务的流程和模块。系统符合面向对象的理念,整个系统基于MVC架构;获得了很好的扩展性和可维护性。ERP为系统管理员和业务管理员提供了流程定制接口,不同客户可以根据自己具体的业务需求进行业务流程上的自定义调整;系统对于各个业务模块的整合功能能够帮助客户更好地从整体角度把握市场反馈的信息,为客户的决策提供更有参考价值的数据支持。本系统展示层使用了大量的Ajax和JQERY技术,后台业务逻辑使用PHP实现,通过Hibernate将最终的数据保存在Oradellg数据库中,在与外部系统进行信息通信的ebService。Java,时候使用W相对于程序调试更容易,部署也来实现,开发效率更高更方便。总体说来,本系统具有如下优点:(1)页面友好简洁,符合用户使用习惯(2)实现用户、角色和权限分配管理(3)可自定义的业务流程(4)清晰简洁的配置管理功能(5)可配置的批处理和系统通知功能一一另外,,,虽然系统已实现了比较多的功能但是随着日后业务的进步发展些功能还是要完善和追加,。由于本系统包含的数据比较完整所以客户要求的报表无论种类一。和样式都会随着使用的不断深入进步增加,因此会要求增强系统的报表功能一随着系统用户数量的增加,当累积到定的数量级前,需要考虑服务器负载均衡,同时应用集群技术。一口本系统很好的满足了客户现有的业务要求,并提供了定的功能扩展接来应对随时变化的业务内容,得到了客户的认可和好评。后期还会在本系统的基础上根据上面提二阶段的开发。到的不足进行第,相信也会获得成功-57- 基于EC-CUBE的ERP系统设计与实现参考文献[1]YANGH.TheeffectiveintegrationofECsystemwithERPsystem[J].ICIII,202-1011;1516.,()-2LUCKING-REILEYD-[].SPULBERDFBusinesstobusinesselectroniccommerce[J..],-JournalofEconomicPerspectives,2000,3(6):5556.3一2010[]汪都,汪明艳.电子商务理论与实践[M].北京:清华大学出版社,.[4]毕建涛.ERP原理与实践[M].大连:大连理工大学出版社,2012.[5]荆林波,黄浩.中国城市电子商务影响力报告[M]?北京:社会科学文献出版社,2012.[6]赵乃真.电子商务技术与应用[M].北京:中国铁道出版社,2003.[7]杨建华?ERP原理与应用[M].北京:电子工业出版社2011.,[8]CHENZ,WANGT.AnITgovernanceframeworkofERPsystem[J].AMCIS2000Proceedings,2000,5(1):211.[9]李健?企业资源计划(ERP)及其应用[M]?北京:电子工业出版社,2009.[10]LOPEZC,SALMEROMJL.DynamicrisksmodellinginERPmaintenanceprojectswithFCM-[J].InformationSciences,2014,256(1):1545.[11]MABERTV,SONIA,VENKATARAMANANM.Enterpriseresourceplanning:Managingtheimplementationprocess[J].EuropeanJournalofOperationalRe-search,2003,146(2):302314.[12]高彦卿.用Smarty实现基于MVC模式的M)应用程序开发[J].电脑知识与技20073-76术(14):77.,,[13]孙卫琴.精通Struts:基于MVC的JavaWeb设计与开发[M].北京:电子工业出版社,2005.[14]冯锡讳,崔雅娟,秦航.应用MVC模式开发商务网站的研究[J].石油化工高等学校学报,2002,3(3):64.、-二-<一3?<5ECCUBE0/v々y兮4卜EB2009[1]「」全利用.古注意喚起[],[16]刘万授.基于Ajax和Smarty的新闻管理系统的设计与实现[J].现代计算机:下半月2006-版6265:.,(11)[17]陶国荣.jquery权威指南[M].北京:机械工程出版社,2011.王晶-[18],温向彬?利用jQuery操作HIML元素[J].农业网络信息,2008(4):9699.[19]白广元.JAVAWEB整合开发[M].北京:机械工程出版社,2009.[20]吴宿.浅谈超大型Oracle数据库的基础设计和优化设计[J].电脑开发与应用,2012,2(5):77.[21]CRASSOMMATEOSCZUNINOA.ETAL.EasySOC:Makingwebserviceoutsourcing,,-easier[J].InformationSciences,2014259(3):452473.,-58- 大连理工大学专业学位硕士学位论文2-.WebSice.200212:6062.[2]吕曦,王化文erv的架构与协议[J]计算机应用(),23bService2B[]张文斌,叶红云.基于We的B电子商务环境构建技术[J].计算机工2002-程,(11):6570.24l2007[]陈刚.Ecipse从入门到精通[ML北京:清华大学出版社.,-25-.ER.201430:242245.[]杨中书,刘臣宇基于模型的关系数据库设计方法[J]价值工程(,〉268-[]..商情2014(19:34349.黄悦浅谈计算机网络安全策略[J],)-59 基于EC-CUBE的ERP系统设计与实现附录A参考表表A.1工具列表Tab.A.1Toolslist类型ToolName功能工具WinRunner性能工具LoadRunnerBug管理工具Redmine错误页面截取工具Snagit表A.2用户登录测试用例Tab.A.2Usersloginusecase测试内容测试步骤预期结果测试结果“ ̄1.用户登陆名2.登陆密码正常登录系统1.错误的用户登陆名0K2.正确的登陆密码不能登录系统1.正确的用户登陆名0K用户登录2.错误的登陆密码不能登录系统1.大小写不同的用户登陆名0K2.正确的登陆密码正常登录系统1.正确的用户登陆名K2.大小写不同的登陆密码不能登录系统可见所有功能,即系统管管理员登录理界面0K不权限■显示Client用户能看到的^田户替.Client用户登录页面--60 大连理工大学专业学位硕士学位论文表A.3系统测试结果Tab.A3Sstemtestresult.y用例描述系统性能测试+i测试环境服务器:LnuxApache+客户端:WINXPPROFESSIONALLoadRunner操作过程及数据测试脚本Throughput,HitsPerSecond,AverageTransaction测试目标ResonseTimep测试工具LoadRunner测拭结果Timemm:ss()Tar.1:002:003:004:005:006:007:008:00Throughput1600040000170005000030000370006300011§000Hits/Second162.37.22.13.179TransactionResponse00002903270^^-61- 基于EC-CUBE的ERP系统设计与实现附录B部分核心代码的相关实现cassABIOOlexensPaeAdExlPagetdgiim^__{uncoQntftiiiO{-paraitimtO;"='s->s¥itliitplubnondex_;->=*¥thstl>aerager.ipjgptpr;,?¥h=is->tsuitplbtfle订单;_}ifimctonrocessQ{p''odN==ABSmelOOlthame;-'=SloggerLoggergetLoggKCixLoggerO;,'—,^*ernfim*一一“?)=->Sth.cecK)tt1000.9夕t.tsetMetIoggiKSmeodName:,aiimerne,始、plmodermti¥higod,rae(())関[]p_<O));->¥thisactionO;*'".^—*>一一'm=¥logerin£>¥metdN..ceili^ti1000.5>tl.rtfiis^e^dlioanwmmetnie,终了,podeTmt(¥oe,trueg((())I_]p_gO));}fimctionackxtiO{''dN=Smiethoameacton;””=¥loorLoerLigg::geto雜erxLo路er雜();^>liif¥oa¥E>ebuabled^^{(O)**—一¥lo^er>debu¥metbdNanieg(o闻始);一‘*->d‘)=”modeModeloerebuSmehodName夕I.iiitrthis^etraeSggg(ttp_p_(¥gt,);[]O)}¥<=^thi>leShitMods^_modts^eO;FomP=dSobi^lfinitFjiaramSisaramO;""=-¥thifr>arrMlddeii¥obFormP8ram^getSearchArrayecl008_etl002eal010eiI001eaI017cel042ETI001_;j(|_|JJJJ)-raiKhdus>tldsw(¥poe_){''casechangeAmoimtAdustment:jSd-iis>8etTnitiiParaineter¥obFoninsoi(jnParani);break;''dAAdtmenRtcaseiaimoimtusteuiii:^j-¥tfus>chai^AmountAdustmentRetum¥obFonxiParam;j(j)¥d-=>Ui^>FonPtisanFonn¥obiiaTaiihe^onnParainsjgO;f*io^>DebnaWedi(¥gisu讲O){,¥-义—夕?-3oer:^ebu¥methodName,chaneAmonntRt.rin¥bi>tgggtAdusineiiteuniSaiTFonii?trtisarrFonnrue);[gjp_(,)(]}''=mPonhMkmaeSobFo>>Valecocksae¥ctcessTarametu(ucmdienesg;^__gjgp_j)if!CUtils:isBlank¥couiicheckmessae(SJ(po__g)){=lhi^BUSESSERRORMESSAGEShkmes¥sINAREAcouponcecsage___‘__;}¥d->niissendResoseOp;break;''casechangeCommentButton;Sd->iscbaigeCoin!ientButU>nSobFoniiParami(j;)d-=->Si>titisanFonn¥obFoniiParaineFomi?aramLsjgO;-->if(SloisDebug£iabld^aieO){,?->—9C=>",戈tt.Srtti^¥k)eTdebu¥mediodName?chaneommenfiuODaiFonn.riiir¥hsarrFonntrue;g,[g]p^“,)^(()}-¥l>QdRlusSie^iseO;break;''cahCditsecangeommoy:-is>setTraistioaTameterbFormPaTaiiMitnP¥oi;(j)break;'ra'cahCditRsecangeommoyetu:-62- 大连ax大学专业学位硕士学位论文 ̄>idit¥disdiangeCoimnoyRetum¥obFonnPanunj);(break;''casedeleteCommodity:Sdus^eleteCommodity(¥objFoniParam);break;'case'iePersonesonsibleAsserln:dangRpUfoS'tli>TranPt¥bTiSsetsitionaraiieeFoonBPaTun(j);bkrea;,,caselchan移PersonRe辦n通eAsDestination:->StfaiiioPbTssetTi?istiarameter¥oonnFaram);(jbreak;''tiicasechangeDesnston:¥lhis->setTnuisitionParaineter¥obFonnParam;<j)^akt;''casechangeDe^mationRetuni:->¥diisch{uigeDestmationSobFomiParam(j;)'>=bF'>LSitliiSairFoim¥oonnParametFormParam¥jg();echoMii&OTetumJsonForQianeDedinadonOg;break;''casenserCec:ithk¥ti->kFPi8tasertOrderlofoByChecSobonoaram(j);break;caseMODEJNSERT:->tftlfi¥isi&saOnerIn)¥obFormPaiam(j);bkrea;'caselioldQiMk:-¥i>hl^FtusodCdCTByCheck¥obormParam(j);break;"*casehold:->hoSdisldOrerobFonaPaiamid¥;(j)break;'cas'elChdc:canceec¥diis^>caiicelQrderByCheckSobFonnPanim();jbkrea;caseMODECANCEL:-S&>lFonnPiscaiKeQrdeiSobaram(j);break;caseMODEMOVE:_¥ti->TonParaiteFonaa]nissetra!isitietr¥obnPr(j);blrear.de&ult:breka;}-^ifS>idblloer!)unaed(gg^O){?■-一一¥loger>debu¥metiiodName■了gg,终;()‘*-¥loger>debuSmetfaodName.reurnvogg’tid;()))fitihMObFonnPinconordeiByChedcSoaram(j{)"'e=OSmthodNamehldrderBekoOyic;""=SloggerLogger;:getLoggerixLoer;(gg)l->ibEIif(¥oersDeuiiabedO){gg^->dN—一¥loggerebu8(Smethodame開始);}**y{=¥-this>aiTEiTarrayO;S=b-fonn>tH¥ojFonnParamgeashAna>^;v=¥alidatornewLCVali<iatorEA1001Ex;___O¥va-iaor:>vaaeIsuSoFormaramPfalseldtlidtptbP,¥_OST,;(j)""Svai>lFoPPlldator^validateOkOrHodBtnSobimaram,¥OST,hod(j_);'='s->an£n¥&ioreriecktraeilldOdByG;f^-echo>iisonencoeS(hisaTETj_d();catdVliddotiiaanExceon¥w}(p){-=-->a>¥thsrrEn¥vectArrErrig;0h->ecotiisonKicode¥usaiTET();jj-63- 基于EC-CUBE的ERP系统设计与实现caci)}dicatiQii£xc?oiat}tiS£}(^p){h-MESSAGE=-ftis>BUSEERRORAREA>M¥acgetessageO^SS___;"'''=>-AREA^>echosoncnwdcanT)usinessenorareaSthis>BUSINESSERRORMESSAGE,taiisactioiid¥SESSIONtnmsactionid;j_(^(______[l))catdi()imi5ticLo^£xceionSoleItt}(^p){*MESSAGE=-M¥fli>BUSINESSERROAREAl>is¥oeetessaeJR-gg();一"""''="=>echosonencode8mcss-iTaybuenorarea>Sthis>BUSINESSERRMESSA<SEAREAtransaciomSSESSItransactiGnids__OR_,ld_ON;j_({__I]))->eisDbIld明reu疾nabeQ){“H^—一Slogg^ebug¥methodName終了;()-*->dm¥loggaebugSetiiodNaiae.retumvoid;()fiinctcatoldOtdaSoomiParamih(bjF{)''fiodNam=onetbehldOder;"'e-Srocr;;etLoerisoerlowLggggg(Lgg0;->Eif¥loeri^buiiabled(gggO){*->d一一SloggBrebug¥inethodNaine開始;()=S&cadeSCFacadcTAcce_Orders_HcadEx:gctIn^ce;____O¥&cad&^oI(iOFderSobFoiinPaTam);(j>Sdis^saieerobnPaiaietTriisitonPaTaint(SjFonin);ca(tAlcaonExceonaetiidptiS}(pp){S"MAGEAREA=->¥>BeessaethiUSINESSJERRORESSSaegtM一-gO;""""==>ccsonencocamsmesscnorarea>->BUhodisINEERRCHlESARransacSESSItransacomd(bu_StiiSSSMSAGE_EA,ttiomd¥_ONtil));j_^___[cadiOtimisticockExceioiiSole}tLt{(pp)^B=SthisUSINESSERRORMESSAGEAREASole^getMessae;___gQ'*"""d=>h-=cdi>BUISERRHlARAi>SSI1iiosonencocaiTabusincsscnorarea¥tsSNESCMESSAGEE,transacliond¥ESONransactiond;j_(y(______[l))o->erisDebuEnableifSd(gggO){‘o->一—¥erebuSmetiioa]DelggdgdN終了;(人)?*oer-^deuSmedioameS.reumvolggbgdN,tid;C)fimctioiiiaseitOrdaM)ByCheckSobFomiParaai(j){''-eodameSmnseitbiecktbNifoCh;""=SloggerLoggcr::getLoggerixLogger);(w->senaeif¥loiDbubld(gg^O){&*¥loer->debu¥meodNa]ne—一ggg(開始);""=FVSlrscontn>lflaeorderstatus¥obonnPanun^ctaluecoiitroflageordestatu_g__jg(___);oe->rsE>enaleifSlgibagEbd(gO){"**>dN:,j{一夕=nootfl.rinIrebu¥method8me,¥coiirolaeorderstatistr¥controflaeorder8tatus,trueggg([_g__]p__(_g__);*—3i¥c<HitFolfia^ordersUtus}^(___)'*conOss—S4tFIfifordeTtatuIK_^__)'*¥co—iitrolflageorefsus5lK__d_ta)){->=^usarrEfrarrayO;d=VEASw100EliatornewLCalidator1xO___;vaaor->va¥Udi?eIitobFonnParamPTruetIdtptS,¥OS,t;{j_)""->¥vllBFPOa]idatorvaid£teOkQrHodtnSoboTmP&mn,¥ST,OK(j_);"='*>¥tfisflrEnnsertrerinecktrueifiQdfoByCh;]e->cbosoneiicoeusaiT£iTj_d(¥d);-64- 大连理工大学专业学位硕士学位论文致谢首先感谢与我对应的日方BSE宫小姐,她用她的专业知识与良好的沟通、清晰明了的反馈了项目的情况,为项目的顺利展开和成功完成提供了可靠保证。一还要谢谢与我同开发的团队成员,从前期的需求整理、系统设计,再到实现、测试一,每个阶段都保持了高度的团队精神,项目的顺利完成倾注了每位成员的汗水,最。终项目通过了客户的验收测试,得到了客户的好评本次开发过程中,我主要参与了需、求开发架构设计和订单收发模块的部分实现,更多的模块是与其他同事共同完成的,这里感谢团队每一位同事的辛勤付出。更要感谢我的导师葛宏伟老师对我在撰写论文期间给予的指导和帮助。从内容到格式,葛老师每次审阅都给出了很多细致的意见和建议。导师智慧的见解,精益求精的严谨的治学态度给了我在学术及论文写作上的极大帮助。-65- 大连理工大学专业学位硕士学位论文大连理工大学学位论文版权使用授权书本人完全了解学校有关学位论文知识产权的规定,在校攻读学位期间论文工作的知识产权属于大连理工大学,允许论文被查阅和借阅。学校有权保留论文并向国家有关部门或机构送交论文的复印件和电子版,可以将、本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、或扫描等复制手段保存和汇编本学位论文缩印。C-C/BE的ERP系统学位论文题目:基于E设计与宴现/作者签名:、日期:办i年6月丨日分、导师签名:曰期:月曰yis年J-丄■
此文档下载收益归作者所有