基于轻量级J2EE架构的ERP物流管理系统的设计与实现
2019-05-13储泽楠王伟
储泽楠 王伟
摘 要: 重点研究了当前ERP系统的架构,针对传统重量级的J2EE架构部署难及不易扩展的问题,采用当今流行的开源框架Struts、Hibernate和Spring,搭建了一个轻量级的J2EE架构。将该架构应用于ERP物流管理系统的开发中,实现了采购、销售和库存的协同一体化管理。系统的应用对降低企业物料成本、增加企业利润、提高企业竞争力有重要的意义。
关键词: Struts; Hibernate; Spring; 物流管理系统; 轻量级J2EE
中图分类号:TP311 文献标志码:A 文章编号:1006-8228(2019)03-36-03
Design and implementation of ERP logistics management system
of lightweight J2EE architecture
Chu Zenan, Wang Wei
(Department of Computer Science and Information Engineering, Anyang Institute of Technology, Anyang, Henan 455000, China)
Abstract: This paper focuses on the architecture of current ERP system. Aiming at the problem that the traditional heavyweight J2EE architecture is difficult to deploy and not easy to extend, a lightweight J2EE architecture is built by using the popular open source frameworks of Struts, Hibernate and Spring. The architecture is applied to the development of ERP logistics management system, which realizes the integrated management of procurement, sales and inventory. The application of the system is of great significance to reduce the cost of materials, increase the profits of enterprises and improve the competitive advantage of enterprises.
Key words: Struts; Hibernate; Spring; logistics management system; lightweight J2EE
0 引言
ERP系統从物流、财务、人力几个方面协同管理企业经营活动,实现了企业生产经营各个环节的信息化管理和决策支持。物流管理系统是ERP系统中一个重要的子系统,它从进销存三方面设计相应的功能,全面包含包括采购入库、销售出库、仓库盘点等业务流程,并且与ERP的其他子系统都有数据交互,因此,其开发和应用得到了企业的重视。
目前,针对物流管理系统的开发主要采用.net和J2EE平台,相比较而言J2EE平台无关性突出,受到了开发人员的青睐。然而传统的基于EJB的J2EE架构,部署困难,开发和维护成本高,因此本文采用开源框架Struts、Spring和Hibernate搭建轻量级的J2EE架构,实现对象和集成服务之间的松散耦合,解决传统J2EE架构的弊端,实现物流管理系统的各项功能。
1 轻量级J2EE架构的搭建
Struts是由Apache软件组织创建,它实现了MVC(视图、模型和控制器)设计模式,为基于Web的开发提供了一个开源框架[1]。Spring是Rod Johnson创建的一个开源框架。它使用基本的JavaBean来完成以前只可能由EJB完成的事情。其控制反转(IoC)和面向切面(AOP)的特点,是松散耦合和轻量级的最大体现[2]。Hibernate是一个实现了ORM映射的开源框架,它对JDBC进行了非常轻量级的对象封装,可在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任[3]。
Struts、Spring和Hibernate分别实现J2EE表示层、业务逻辑层和持久层的功能,如图1所示。Struts管理用户的请求和响应,并通过FilterDispatcher控制器委托业务逻辑层来处理,并选取模型数据中的内容,呈现到用户对应的视图中,在处理过程中进行必要的验证和拦截。Spring读取配置文件,自动生成Bean实例,供业务逻辑使用,利用IOC实现了业务逻辑和持久逻辑组件的松散耦合,利用AOP为业务逻辑和持久逻辑模块提供统一的切面服务,通过DAOCLASS调用持久层接口方法[4-5]。Hibernate采用ORM机制,实现领域模型对象与关系数据库的映射,解决了面向对象编程语言与关系数据库一起使用可能带来的种种麻烦,其提供的API和HQL查询接口使操作数据更有效、便捷。
2 系统功能分析
2.1 系统功能结构
ERP进销存系统功能主要包含采购管理、销售管理、库存管理等六个模块,如图2所示。采购管理主要实现了采购订单和退货的处理,销售管理主要实现了销售订单和退货的处理,库存管理主要实现了入库、出库、库位调整和送货管理。
根据用户需求,依据登录人员的职责设置不同的角色,分配相应的权限,操作对应的系统界面。系统用户角色主要包括:采购员、销售员、仓库管理员和系统管理员等。采购员负责填写并提交进货和退货单,浏览、查询、打印进货明细,添加商品信息。销售员负责填写并提交销售和退货单,浏览、查询、打印销售明细,添加客户信息。仓库管理员负责客户信息、商品信息、供应商信息和仓库信息的维护。
2.2 系统工作流程
我们根据系统各个模块的功能划分,给出具体的工作流程。由于系统功能模块较多,无法展示全部的工作流程,这里以库存管理模块为例,给出其具体的工作流程。如图3所示。
在入库管理工作中,管理员可以直接填写入库单,也可以通过采购订单产品明细列表生成,其结构包含入库单号、入库日期、入库类型、供应商、收货仓库、产品明细等内容。入库单提交确认后,对库存进行修改。
在出库管理工作中,管理员可以直接填写出库单,也可以通过销售订单产品明细列表生成“出库单”,其结构包含出库单号、出库日期、出库类型、客户、出货仓库、产品明细等内容。出库单提交确认后,对库存进行修改,生成并打印出送货单,安排配送。配送完成后,生成并打印送货回执。
在库位调整管理工作中,管理员填写库位调整单,其结构包含调整单号、调整日期和调整明细等。库位调整单确认后,对库位进行修改,实现产品库存量在库位之间的移动。
3 系统设计
3.1 系统处理流程设计
系统处理流程图描述了J2EE各层之间的调用关系,如图4所示。从上到下依次为表示层、业务逻辑层和持久层的设计。AbstractEditModeActionSupport类继承了ActionSuppor工具类的功能,实现了Action接口和validateable接口,实现了数据校验功能,简化了对象的CRUD操作。Action调用了manager,managerimpl为了实现业务逻辑功能调用了多个Dao,DaoHibernate实现了数据库对象的CRUD操作。
3.2 数据库设计
经过系统的功能分析和工作流程的分析,得到系统数据库表。核心的数据表包括:product(产品)、warehouse(仓库)、godow_nentry(入库单)、stock_out(出库单)、puchase_order(采购订单)、sales_order(销售订单)、stor_adjust(库位调整单)、client(客户)、provider(供货商)、user(用户表)、role(角色表)等。
4 系统实现
4.1 持久层的实现
持久层使用Hibernate的映射配置文件,实现了Domain Object与数据库表的映射,并通过创建Dao接口和实现类封装了针对Domain Object的各种持久化操作,进而实现对数据库的CRUD操作。Domain Object经过持久化后,就转化成为了PO(持久化对象)。
4.2 业务逻辑层
4.2.1 编辑Spring配置文件
该层借助Spring的配置文件ApplicationContext.xml与持久层的Hibernate整合。在文件中,所有的对象都以
4.2.2 创建业务逻辑接口和实现类
业务层类图设计中,设计了Manager接口和ManagerImpl实现类,接口中简单封装了针对表示层调用的各种方法,例如:货物的添加、修改、保存、删除和查询等操作。这些方法由ManagerImpl实现,它调用Dao接口实例中的持久化操作,完成相应的功能。在配置文件中,将Dao实现类注入到ManagerImpl中,根据依赖注入的要求,在ManagerImpl中定义了Dao实现类getter/setter方法。
4.2.3 表示层的实现
业务层和持久层的实现,创建了MVC设计模式中的“M(模型)”。而模式中的“V(视图)”和“C(控制器)”由表示层的Struts框架实现。
Struts使用Html的框架标签设计JSP页面的布局,把页面高层抽象为页眉、导航、主体和页脚元素的集合。在元素的具体实现过程中,使用Struts标签库和JSTL标签库进行编辑,实现视图的功能。struts提供了ActionServlet和Action組件实现控制器功能。ActionServlet接受用户的请求,实现控制和转发。ArticleAction对象根据用户请求中的?mehtod=save参数,执行其定义的save方法,在该方法中,提取ActionForm对象的属性,装配域模型对象ArticleForm,将其作为参数在各层之间进行数据传递;获取对业务层AriticleManger接口的引用,进而调用AriticleManger中的SaveArticle方法,完成信息录入的业务逻辑。
5 结论
本文主要是分析了轻量级的J2EE架构,实现了表现层、业务逻辑层和持久层的松散耦合,有效的提高了系统的可扩展性、可维护性和可移植性。并把该架构在ERP物流系统的采购、销售和管理模块加以适应,通过实验论证了该系统运行良好,实现了企业的合理生产,及时销售和库存控制,提高了企业的效率和效益。后续将考虑进一步加强J2EE轻量级架构的研究,力争在商用软件上加以重构使用,提高系统架构的稳定性和鲁棒性。
参考文献(References):
[1] 曹静,李梅,付惠茹,李沂桥,严开.基于J2EE的轻量级SSH框
架应用[J].电子技术与软件工程,2017.19:153-154
[2] 李丹.基于SSH框架的进销存管理系统设计与实现[J].内蒙
古科技与经济,2017.19:60-62
[3] 尹云霞.基于分层思想的SSH框架整合技术研究[J].新技术
新工艺,2017.4:56-58
[4] 柯常钦,史毓达.基于SSH框架的Web应用系统开发研究[J].
湖北第二师范学院学报,2010.27(8):102-105
[5] 王书程,曾贤龙,苏珏.基于Struts框架的进销存管理系统的
设计与实现[J].计算机与信息技术,2008.8:69-70