《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 基于组件的物流配送系统设计及其EJB实现方案

基于组件的物流配送系统设计及其EJB实现方案

2009-01-06
作者:王欣
1 绪论 
1.1 物流概述

    物流(logistics)是指物品从供应地向接收地的实体流动过程。根据实际需要,将运输、储存、装卸、包装、流通加工、配送、信息处理等基本功能实施有机结合。随着电子商务的兴起,各种网络通讯技术的不断进步,软件工程学的面向对象和基于组件方法的广泛应用,通过EDI、GPS和网络技术,使得实现物流信息化和虚拟物流(以计算机网络技术进行物流动作与管理,实现企业间物流资源共享和优化配置的物流方式)成为可能。 

    物流的正式概念最早出现于日本,目前世界上物流水平最高的国家还有美国、加拿大、英国和澳大利亚。这些国家的物流基础设施比较完备,交通便利,仓储规范,因此具备实现大规模物流软件系统的基本条件。在物流发达的国家中,各种物流企业根据自己的业务范围,利用功能强大的物流系统软件,不仅可以为客户提供各种方便快捷的服务即电子商务中的B2C,还可以实现企业间(包括国际间)的事务合作和资源共享即电子商务中的B2B。 

    比较而言,我国的物流由于基础设施不完备,交通和仓储设施存在着地区性的较大差异,因此水平不高,而且要实现大规模的信息化存在着很多困难。所幸的是,国内企业现在也十分重视物流的发展,为了更有效地整合资源,提高产品的生产效率,增强客户对产品和服务的满意程度,进而全面提升企业的市场竞争实力,许多公司都单独设立了的物流部,并采用现代化的信息和网络技术来提高该部门的服务质量。与此同时,社会上也出现了许多提供专业化物流配送一条龙服务的第三方物流企业。 

    随着中国加入WTO日程的临近,来自国际的竞争肯定将是激烈的,面对着机遇与挑战并存的前景,我们必须发展自己的物流信息化ERP平台,提高物流服务的整体水平。 

    为了实现物流电子化、信息化,我们有两条路可以走:1、全盘西化,利用国外现成的软件;2、采用先进的信息技术,结合实际,自主开发大型物流企业ERP平台。方法1有其方便快捷的优点,但是也存在着比较大的缺点: 

1. 国外的条件和我国的客观实际存在着比较大的差异,如果拿国外的软件直接用的话,会有“食洋不化”的情况出现。 

2. 系统维护不便,出现问题后修改的周期比较长。 

3. 沟通和交流障碍将会影响软件的使用。 

4. 不利于我国在物流软件方面出现有自主版权的产品。 

    因此,尽管存在着从零做起、没有任何经验可循的困难,我们仍然要毫不犹豫地选择第二种方案,中储物流便是在此方针指导下,开始立项建设自主开发的、覆盖面达全国范围60余家仓库的、大规模的、基于J2EE的分布式物流企业ERP平台的。 

1.2 问题的提出 

    J2EE框架旨在通过JSP/Servlet/EJB的三层架构来分离Web应用程序的显示/业务/数据三层逻辑,但实践证明在通常的Web应用系统开发中JSP因其使用简单、开发速度较快而成为被广泛使用的技术。但在大量采用JSP技术开发的Web应用中,存在着一些显著的缺点,例如:HTML、JAVA代码以及实现客户端功能的Javascript代码强耦合在一起,系统的业务逻辑内嵌在网页中,使得代码的阅读、调试和维护都具有一定困难;冗余代码比较多,软件可复用效率不高等。 

    比较而言通过结合使用Java Struts、XSLT、EJB等技术,可以使应用系统的框架更加合理,更加有效地分离显示/业务/数据三层逻辑,更加有利于系统的移植和扩充。 

    Java Struts是基于Web层进行应用系统开发的框架,它采用MVC设计模式,可以很好地分离显示和业务逻辑,尤其将Java Struts和XSLT结合起来,可以产生更好的分离显示和业务逻辑效果。 

    EJB是服务器端的组件模型,通过EJB不但可以清晰地划分各个功能接口及业务逻辑,而且能够将应用系统部署到不同的机器上,从而通过分布式计算来减轻服务器端和数据库系统的负载。 

    采用传统的面向过程的程序设计和实现方法,对于某种类型的问题来说,有着其特有的开发时间短,见效快,人员不需要经过特别培训等优点,例如我们的项目,因为它的模型是基于企业事务的流程建立起来的,因此采用面向过程的设计和实现方法就显得既自然又简单,没有必要进行太多的抽象。但是,简便的实现方案是要付出代价的,这就是系统的可维护性和可重用性不好,当业务逻辑发生变化时(这对于企业来说是经常有的事),我们就不得不对大量的代码进行修改,并且由于代码模块间的紧密耦合,使得修改一个地方有可能对另外的许多地方产生影响,因此会给系统的维护和升级带来许多麻烦。 

    采用基于组件的软件设计和开发方法,虽然在设计阶段需要比较高层次上的分析和抽象,这往往不太容易做到,但是却为今后的代码实现和重用带来很大的方便,而且好的设计方案可以使系统实现的层次结构更加清晰,从而有利于日后代码模块的维护和更新。 

    设计模式是比组件更高一个层次上的软件抽象和复用。在软件设计模式和框架方面的可重用性是面向对象的发展趋势。例如,Java Struts通过提供符合MVC模式的框架,使在其基础上开发的系统具有模块化、组件化等优点。 

目前,客户端组件开发已经比较成熟,业界有许多专门从事开发构件的第三方组件提供商,随着Web Service的不断发展和成熟,服务器端组件开发将是未来网络应用系统发展的趋势。J2EE的EJB是专用于开发服务器端组件的技术,它通过提供统一的资源管理和事务处理机制,可以大大简化开发服务器端组件的复杂性,使服务器端组件的开发不必考虑server如何分配系统资源,如何进行线程调用,以及用什么机制调用该组件等一系列实现的细节,而只需将重点放在组件需要实现的业务逻辑上,从而达到简化和加快系统开发的目的。 

    本文旨在通过对面向对象和基于组件开发等软件工程学方法的研究,提出符合EJB规范的物流配送系统设计方案,并且期望通过该设计方案能够提高系统程序代码的可维护性、可复用性和可扩展性。 

2 基于组件开发和EJB在物流配送系统中的应用 
2.1 物流配送系统的主要功能及特点 

    配送系统是中储物流企业ERP平台中的一部分,其主要功能有:接收客户订单,并为其代理货物运输;货物在途监控及监控信息的网上发布;各种合同管理;结算及费用预缴、补缴管理;保险业务管理;信息统计汇总及生成各种报表。 

    配送系统基于具体的物流配送业务,具有以下特点:业务涉及的主体很多,例如,客户、仓库、货物签收单位(可能是仓库或超市等)、运输公司、运输个人、交通部门包括铁路、海运、航空等,和保险公司,因此,系统中的对象比较多,而且对象之间的关系比较复杂;业务完成的空间和时间范围较大,根据客户的订单,一批货物需要从一个城市运往另一个城市(市内配送除外),途经许多其它城市,一般无法当天到达,因此货物从出库到顺利运达直至正常签收,不但需要经过空间上的转移,而且需要经过时间上的延续,因此,在业务流程中,会出现许多可能的情况,并且这些情况都需要考虑在系统控制之内,所以每一类对象都存在着多种状态,并且这些状态会随时间而变化;系统需要支持多种用户,各种用户对系统的操作权限也不同,一般客户仅可以浏览或查询同自己的业务相关的信息,而公司内部业务人员和系统操作维护人员,则可以同时对数据进行修改和删除等操作,即系统需要同时对共享数据进行读和写操作,并且需要保证数据的完整性,一致性和安全性。 

2.2 系统开发采用的主要软件及技术 

    基于物流配送本身的业务特点及企业对系统功能的具体要求,决定了本系统采用的主要软件和技术如下: 

1. Web服务器及应用服务器:BEA Weblogic 6.0 

2. 软件编码工具:Borland Jbuilder6.0,Ultra Edit8.0 

3. 分析及设计软件:Rational Rose,Microsoft Viso 

4. 项目工作组支持软件:GUN CVS 

5. 数据库系统软件:Oracle 8.16 

6. 主要应用的技术:CBD,J2EE,XML 

3 需求分析 

    本系统面向的服务对象是第三方物流公司,通过将其业务流程全面信息化,能产生出有利用价值的数据,再通过对这些数据的分析和整理就可以为公司现在和将来的经营决策提供帮助。此外本系统还通过Internet接口提供企业对外的宣传窗口,使客户可以通过访问Web页面得到相关信息和其他公用信息。 

    本系统涉及到的实体比较多,包括:承运人,运输人,客户,签收人以及保险公司等,其中承运人,即第三方物流公司,可以掌握系统中的全部数据,并且可以对系统进行操作:录入客户订单、选择运输人、车辆和路线、派车、录入出库单、对在运输途中的车辆和货物进行监控以及录入签收单等。客户则只能通过Internet录入订单,查询相关信息。司机与系统的接口主要用于及时反馈运输情况和货物有无破损等信息。签收人可以通过Internet访问与之相关的签收单,确认签收或者退货。 

4 EJB设计模式 

    Session Fa?ade 是EJB最基本的设计模式之一,它将实体Bean隐藏于会话Bean之后,即客户端不能直接访问实体Bean,而只能同会话Bean 进行交互,再由会话Bean对实体Bean进行修改、删除等操作。这样就使实体Bean层,即服务器端对象模型,对于客户端来说是完全透明的,从而清晰地划分了客户端层、业务逻辑层和实体模型层。采用Session Fa?ade还可以将需求分析阶段产生的,用以描述应用业务逻辑及工作流程的Use Case直接对应于会话Bean的各实现方法,使整个应用从逻辑的角度来看,层次更加清晰。因为客户端不能直接访问实体Bean,而只能通过会话Bean来接入网络,因此采用Session Fa?ade可以使系统的结构更加趋于合理,有效地减少了客户端与服务器端之间的交互,从而达到减轻网络负载的目的。 

    Message Fa?ade也是EJB最基本的设计模式之一,它同Session Fa?ade一样位于客户端和服务器端实体模型之间。Message Fa?ade和Session Fa?ade之间的区别在于Message Fa?ade可以用来实现系统的一些异步功能,即当客户端发出请求后,并不需要等待服务器端的回应,而由服务器端EJB组件内部进行与之相应的一系列操作,在系统暂时繁忙或者出故障时,就将事务回滚,将客户端请求挂起并排到一个队列中,待系统空闲或服务器恢复服务时,不需要客户端的干预而自动地再次执行相关的操作,因此Message Fa?ade具有一定的系统容错性。 

    以车辆在途监控Use Case为例:当司机在运输途中到达了监控计划指定的地点,或者遇到车辆、货物的破损等一些意外情况时,可以通过电话、手机或者网络将意外以及车辆到达某地的时间等信息输入系统,然后由系统的服务器端组件负责针对不同的信息及情况进行不同的处理,例如当货物发生损失时,系统需要通知保险公司进行货物定损及理赔等,这时司机并不需要等待系统的回应就可以直接继续上路了,由配送中心负责处理一些相关事宜。 

    Message Fa?ade设计模式除了继承Session Fa?ade设计模式的优点之外还具有的特点是:当客户发送了一个JMS消息后,就可以随意进行其他活动,而不必等待服务器完成了整个Use Case的业务逻辑之后才给予答复,因此适合用在相对耗时且比较复杂的应用系统中;使用消息Bean将保证应用系统在它所赖以运行的EJB Server或者其他一些子系统出现故障并且暂停服务时仍能够继续运行,例如,在车辆在途监控Use Case中,如果数据库系统出现了问题,那么车辆及货物运输途中的异常处理事务将无法完成,这时由客户端传来的异常消息会被保存到一个消息队列里,并且在一段时间后自动重试。若EJB容器发生了故障,那么消息也会被保存起来等待下一次的使用。这些克服故障的能力是同步模式,即Session Facade所不能具有的,虽然网络的复杂性使得只采用消息Bean没有办法避免所有的风险,但它至少也减轻了网络应用系统运行过程中由于网络的不稳定性而造成的异常。 

5 结论及展望 

    基于中储物流配送系统的实际开发经验,本论文得出以下结论:面向对象和基于组件开发是软件工程学发展的主流方向,因为随着设计模式(Design Pattern)、UML用例设计(Use Case)和统一软件开发过程(UDP)等先进技术在应用系统开发中的广泛使用,系统设计和开发人员已从中体会到了面向对象和基于组件开发带来的好处,即系统实现代码的逻辑层次清晰,具有较好的可维护性、可移植性和可复用性;随着Web Service的不断发展和成熟,服务器端组件开发将是未来网络应用系统发展的趋势,Java的J2EE开发平台为开发分布式的服务器端组件提供了专用的工具,即EJB(Enterprise Java Beans),EJB通过提供统一的资源和事务处理机制,可以大大简化开发服务器端组件的复杂性,使服务器端组件的开发人员不必考虑服务器如何分配系统资源,如何进行线程调用,以及用什么机制调用该组件等一系列实现细节,而只需将重点放在组件要实现的业务逻辑上,从而达到简化和加快系统开发的目的;随着网络、信息和通讯技术的不断发展,现代物流配送可以完全实现电子化及信息化,即车辆运输货物的过程可以通过网络达到全程监控和随意调度的目的。 

    从软件工程的角度来说,未来的发展方向有:各种不同组件技术之间的任意组合,即根据具体应用的特点采用最合适的组件技术,然后再将用不同技术实现的组件通过一定机制结合在一起,使它们可以协作共同实现系统的各项功能;建立大多数软件和应用系统所需要的通用组件库,从而进一步提高组件的可重用性;提供更高层次上的软件复用,例如,各种设计模式的总结和重复使用。 

    从物流配送系统的角度来说,未来的发展方向有:引入GPS,从而进一步加强对在途货物的监控力度,真正达到实时性信息交互;无线网络应用的发展使得电子商务由原来的E_Commerce向M_Commerce (Commerce that use mobilephones 手机商务)发展,利用JAVA的J2ME技术可以方便地在原有的JAVA系统平台上扩展出无线应用子系统,例如SMS手机短信业务,免去了客户上网查询的麻烦,随时可以用手机查到自己货物的运输位置和状态;利用Web Service将数码仓库与配送系统进行整合,这样已经存在数码仓库中的数据就可以直接进入配送系统进行货物运输和在途监控了。 

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。