李建华 周鹏 陈祥儒 史晓娟
摘 要: 针对西安某速运公司的物流管理状况,设计并实现了物流信息系统。论述了物流信息系统总体框架及其主要功能,对用户提交订单后系统进行自动分单的业务逻辑实现进行了重点描述,强调了在系统间远程调用使用消息队列,并加入了缓存技术Redis,以实现网站业务的可拓展性设计及高并发情况下对系统性能的提升。最终,通过该物流信息系统对该物流企业的协助,提高了企业整体的信息化水平及客户满意度,同时改善了运营管理效率。
关键词: 物流管理; 物流信息系统; 功能论述; 业务逻辑描述; 远程调用; 拓展性设计
中图分类号: TN911.2?34; TP311 文献标识码: A 文章编号: 1004?373X(2020)23?0090?04
Abstract: According to the logistics management status of an express company in Xian, a logistics information system is designed and implemented. The overall framework and main functions of logistics information system are discussed. The business logic implementation of automatic order distribution after users submit orders is described emphatically. The message queue used for remote call between systems is emphasized. In addition, the caching technology Redis is adopted to achieve expandable design of the website business and improve system performance in circumstance of high concurrency. With the assistance of the logistics information system, the logistics enterprise improves its overall informationization level and customer satisfaction, and also the efficiency of operation management.
Keywords: logistics management; logistics information system; function discussion; business logic description; remote procedure call; expansibility design
0 引 言
近年來,国内电子商务的飞速发展,使得原本落后的物流业得到了快速发展,同时也催生出了大批的中小型物流企业[1]。如今,物流已然成为国民经济发展中的重要组成部分,中小型企业间的竞争也变得越发激烈。虽然国内中小型企业数量较多,但其规模普遍较小、营业额和市场份额低、服务功能和高素质人才少,最重要的表现为信息化程度低,从而直接导致了企业整体管理效率低下以及由人工处理带来的串货、缺货、损货等,使得客户体验差,失去同行竞争力[2]。因此,中小型企业要提高竞争力以适应同行间的竞争,信息化管理是必经之路。
物流行业的传统格局随着信息技术的出现发生了巨大变化,现如今,加强企业系统的管理效率已经成为整个物流行业发展的关键所在。以信息技术加强物流企业的管理,就是要用信息技术达到即时的信息共享,提高整个企业的管理效率,最大限度降低总成本,提升客户满意度,从而改善企业的竞争力[3]。信息化和自动化的发展往往能够提升物流企业的管理效率,对于国内大型物流公司企业,信息化和自动化水平逐渐趋于成熟,如无人配送机、自动分拣中心等,但仍然有不少小型物流企业的信息化水平处于落后状态,这不仅降低了客户的体验指数,还极大地降低了工作人员的工作效率。因此,提高中小型企业的信息化管理水平,已然迫在眉睫。
1 系统总体框架及功能设计
1.1 系统总体框架设计
该物流信息系统的设计包含四种服务器,分别是:前台Web服务器、后台Web服务器、客户关系服务器和Oracle数据库服务器,如图1所示。
前台用户系统的前端页面采用jQuery框架设计,服务端采用Spring和Struts2框架接收前端请求数据并进行处理。后台管理系统供企业内部管理人员使用,页面简洁实用即可,所以前端页面采用EasyUI框架设计,使得页面开发效率大大提升,从而节省出更多的时间用于后端开发。服务端使用MVC设计模式分层开发,采用SSH框架,又在Hibernate的基础上整合了Spring提供的一套简化JPA开发的框架Spring Data JPA,使得DAO层的开发更加高效,从而在开发的过程中能够将更多的精力放在业务逻辑的实现上[4?5]。
客户关系系统是一个辅助系统,它没有前端页面的展示,服务端也采用SSH框架设计,和前台系统基本一致。客户关系系统和后台管理系统都使用Oracle数据库存储数据,因为Oracle没有自动增长类型,所以对于需要主键自动增长的数据表,需要维护相应的序列。
1.2 系统功能设计
该物流企业的物流信息系统包括前台用户系统、后台管理系统和客户关系系统,如图2所示。因为本文篇幅有限,所以只列举了系统重要的功能[6?7]。
1.2.1 前臺用户系统
前台系统基于B/S模式开发,面向用户设计。用户可以通过网址进行访问,如果需要进行业务相关操作,如提交订单,需在登录之后进行。若用户没有账号,则可先进行在线注册后登录。
用户寄件时需要在前台系统填写寄件人信息、收件人信息和快件信息。寄件人信息主要包括:姓名、联系方式、省市区和详细地址等;收件人信息主要包括:姓名、联系方式、省市区和详细地址等;快件信息主要包括:寄托物、重量和付款方式等。登录的用户还可在前台系统查询订单列表及订单详情。
1.2.2 后台管理系统
后台系统基于B/S模式开发,面向物流企业内部管理人员设计。后台系统的主要功能有三个模块:基础数据管理模块、运单管理模块和用户权限模块,分别由基础数据管理员、运单管理员和系统管理员进行管理。
基础数据模块主要对收派标准、快递员、区域、定区和分区进行管理。系统将要承接的货物按重量和体积两个指标确定货物所属的标准,以便在自动派单时将不同标准的货物分派给相应派送能力的快递员。区域就是国家划分的行政区域,如陕西省西安市雁塔区。分区是为了更好地进行自动派单,区域里面包含了多个分区。定区则是快递员的取派范围,可以包含多个分区。
运单管理模块包括运单快速录入、运单录入和运单的管理。运单快速录入功能是在订单数量高峰期用于快速录入基本运单信息,包括运单编号、到达地、产品、件数、重量和配载要求。运单信息包括所有订单信息,所以运单录入功能支持根据订单号辅助录入运单信息,以及根据运单号辅助录入快速录入的那部分基本运单信息。
用户权限模块用于给用户绑定角色,也可给角色绑定资源。本系统中设置了三种角色:运单管理员、基础数据管理员和系统管理员。如拥有运单管理员角色的用户登录后台系统后,只能对运单进行操作,而拥有系统管理员角色的用户只能分配用户的权限[8]。
1.2.3 客户关系系统
客户关系系统不提供前台页面的显示,主要是对前台系统已注册的客户信息进行管理。
2 物流信息系统的实现
本文从两方面阐述了物流信息系统的实现,分别是业务实现和技术实现。由于篇幅有限,所以只分析了关键的业务和技术实现。
2.1 自动分单业务的实现
用户在前台系统提交订单后,远程调用后台系统存储订单数据,并进行相关业务逻辑处理。后台系统得到前台系统传递来的订单数据后,根据订单信息进行自动派单,最终需要分配一个合适的快递员上门取件。本系统设计实现了两种自动派单逻辑[9]。
2.1.1 精确匹配
由客户的地址精确匹配如图3所示。根据订单信息中的寄件人地址,远程调用客户关系系统。在客户关系系统中使用寄件人地址精确查找对应的客户,找到后返回给后台系统。因为在后台系统的定区管理中,可以进行定区关联客户,以便根据客户信息匹配到对应的定区。最后由定区匹配到快递员,后台系统调用阿里大于的接口给快递员发送取件短信,并生成快递员工作单。
2.1.2 模糊匹配
根据分区的关键词模糊匹配如图4所示。后台系统中,根据订单信息中的省市区数据,在区域表中联合查询出对应的区域记录。一个区域对应着多个分区,继而查询出对应的多条分区记录。再根据订单信息中寄件人地址匹配分区记录中的地址关键字,进而确定唯一的分区。由分区匹配唯一定区,最终匹配到合适的快递员,后台系统调用阿里大于的接口给快递员发送取件短信,并生成快递员工作单。
2.2 关键技术实现
2.2.1 消息队列
本系统实现过程中涉及到多次系统间的远程调用,如图5所示。用户在前台系统进行注册时,需要将用户信息传递到客户关系系统保存;在登录时,同样需要将用户信息传递到客户关系系统进行验证。用户在前台系统填写的订单数据需要传递给后台系统进行保存和处理相关业务。定区关联客户时,也需要远程调用客户关系系统,查找未绑定的客户并且进行绑定。
这种系统间的远程调用可以使用传统的技术Web Service实现,但它有明显的缺点,即无法对消息进行异步处理,只能同步进行,并且效率低下。假如用户在前台系统提交订单,远程调用后台系统进行处理,此时正好后台系统处于维护或瘫痪状态,用户提交的订单数据将会丢失,而这对于一个物流企业来说是决不允许发生的。所以本系统采用消息队列实现系统间的消息同步。
消息队列可以看作一个容器,用于存放消息,谁需要消息直接从容器中拿即可。常见的消息队列有ActiveMQ、RabbitMQ、RocketMQ和Kafka,本系统中采用ActiveMQ。消息队列常用于分布式系统,本文物流信息系统虽不是分布式系统,但使用消息队列也可实现异步处理,以达到业务的可拓展性设计和系统性能的提升。
消息队列的工作模式有两种,分别为点对点和发布?订阅模式。发布?订阅模式指消息发送者即生产者发布消息,对应有多个消息接收者即消费者订阅消息,如图6所示。
从图6可以看到应用程序A和应用程序B,C,D之间不存在直接耦合,消息队列接收到来自应用程序A的消息后,订阅了该消息的应用程序B,C,D从消息队列中获取消息,进而处理后续操作,而对于消费者无需关心该消息的出处。如果需要新增业务,只要对该类消息感兴趣,即可从消息队列中订阅该消息。这对原有系统和业务没有任何影响,从而实现网站业务的可拓展性设计。
本系统只用到了点对点模式,如图7所示。也就是一个生产者发送消息,只有一个消费者进行接收。比如前台系统发送客户注册的消息,只有客户关系系统进行接收,后台系统是接收不到的。如此一来,用户在前台系统提交订单将数据发送给消息队列后,即便后台系统处于维护或瘫痪状态甚至是未启动状态,消息队列也会为后台系统保留该订单数据,直到后台系统恢复正常状态后,消息队列会将该数据发送给后台,这时就算后台系统接收失败,消息队列还会多次发送数据。
消息队列不仅能用于系统间的远程调用,还能用于应用服务器和数据库服务器之间,如图8所示。物流企业的前台网站在物流高峰期时會产生大量的订单数据,此时如果这些高并发数据直接写入数据库,会给数据库造成较大的压力,甚至崩溃。消息队列作用于应用服务器和数据库之间实现异步处理后,这些数据不会直接写入数据库,而会先发送给消息队列立即返回,再由对应的消费者拿到数据,这样便能以异步方式将数据写入数据库。对于用户而言响应速度得到了大幅提升,对于整个物流信息系统而言性能得到了大幅改善[10]。
2.2.2 缓 存
前台用户系统中很有可能出现高并发的情况,比如同一时刻有百万级的访问量,就极有可能导致后台系统崩溃,所以本系统中使用了高性能、高并发的缓存技术Redis,如图9所示。
可以将Redis看作一个数据库,但Redis是将数据存放在内存中的,而传统的数据库数据是在硬盘上的,所以Redis存取数据的速度非常快。Redis的功能无比强大,它提供了多种数据类型以支持不同的业务场景,如:String、Hash、List、Set和Sorted Set;Redis支持事务和持久化机制,持久化方式有RDB(快照)和AOF(只追加文件);同时它也支持LUA脚本、LRU驱动事件及多种集群方案。
本系统中有两处用到了Redis:
1) 前台系统中展示的广告信息存放在Redis中。整个后台系统启动后,第一个用户访问前台系统时,从数据库中读取所有广告信息,并将其缓存到Redis中,以后的所有用户访问前台系统时,直接从Redis中读取广告信息即可。Redis的存在不仅提高了用户的体验指数,更重要的是减缓了数据库访问的压力,使得整个物流信息系统的性能得到大幅提升。
2) 本系统中,用户在前台系统中提交订单后对订单的处理上也用到了Redis。前台系统提交的订单最终会被保存到数据库中,但在整个物流信息系统中,需要多次查询订单信息,比如,前台用户系统中的订单查询功能,以及后台管理系统中的运单快速录入功能。所以将订单信息缓存到Redis中是很有必要的。
3 结 语
本文以当前国内中小型物流企业发展中存在信息化水平落后的状况为出发点,设计研发了基于B/S模式以后台管理系统为主,前台用户系统和客户关系系统为辅的企业物流信息系统。同时,考虑到整体系统的高可用性和可拓展性,使用消息队列进行系统间的数据同步。针对前台用户系统的高访问量,使用Redis缓存提升系统性能。最终通过该系统,西安某速运公司的信息化水平得到了有效的提升,降低了物流管理成本,同时也具有很好的社会和经济效益。
参考文献
[1] 魏祎.电子商务环境下物流管理模式的革新[J].现代经济信息,2019(7):356.
[2] 吴婷.物流配送信息智能传输系统设计[J].现代电子技术,2017,40(13):83?86.
[3] 罗俊彦,张轶鹏.现代物流企业管理问题及对策[J].农村经济与科技,2018,29(24):57.
[4] 马万祺,杨超宇.基于J2EE的物流管理信息系统的设计与实现[J].黑龙江工业学院学报(综合版),2018,18(9):64?70.
[5] 蔡朝鹏.基于Java EE的物流管理系统设计[J].科技创新与应用,2019(19):109?110.
[6] 罗葳.物流管理信息化系统设计探析[J].企业科技与发展,2019(6):97?98.
[7] 李海玲.物流信息系统的运用情况分析[J].广西质量监督导报,2018(12):20.
[8] 许迅安.小微企业的物流资源管理现状及其优化策略[J].现代营销,2019(8):150?151.
[9] 吴爱萍.基于B/S的物流客户服务系统设计与实现[J].物流技术,2018,37(7):86?89.
[10] 孙弋,温迅.一种面向消息的中间件的设计与实现[J].物联网技术,2019,9(3):81?84.