儲澤楠 王偉
摘 要: 重點研究了當前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