儲澤楠 王偉
摘 要: 重點研究了當(dāng)前ERP系統(tǒng)的架構(gòu),針對傳統(tǒng)重量級的J2EE架構(gòu)部署難及不易擴(kuò)展的問題,采用當(dāng)今流行的開源框架Struts、Hibernate和Spring,搭建了一個輕量級的J2EE架構(gòu)。將該架構(gòu)應(yīng)用于ERP物流管理系統(tǒng)的開發(fā)中,實現(xiàn)了采購、銷售和庫存的協(xié)同一體化管理。系統(tǒng)的應(yīng)用對降低企業(yè)物料成本、增加企業(yè)利潤、提高企業(yè)競爭力有重要的意義。
關(guān)鍵詞: Struts; Hibernate; Spring; 物流管理系統(tǒng); 輕量級J2EE
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼: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系統(tǒng)從物流、財務(wù)、人力幾個方面協(xié)同管理企業(yè)經(jīng)營活動,實現(xiàn)了企業(yè)生產(chǎn)經(jīng)營各個環(huán)節(jié)的信息化管理和決策支持。物流管理系統(tǒng)是ERP系統(tǒng)中一個重要的子系統(tǒng),它從進(jìn)銷存三方面設(shè)計相應(yīng)的功能,全面包含包括采購入庫、銷售出庫、倉庫盤點等業(yè)務(wù)流程,并且與ERP的其他子系統(tǒng)都有數(shù)據(jù)交互,因此,其開發(fā)和應(yīng)用得到了企業(yè)的重視。
目前,針對物流管理系統(tǒng)的開發(fā)主要采用.net和J2EE平臺,相比較而言J2EE平臺無關(guān)性突出,受到了開發(fā)人員的青睞。然而傳統(tǒng)的基于EJB的J2EE架構(gòu),部署困難,開發(fā)和維護(hù)成本高,因此本文采用開源框架Struts、Spring和Hibernate搭建輕量級的J2EE架構(gòu),實現(xiàn)對象和集成服務(wù)之間的松散耦合,解決傳統(tǒng)J2EE架構(gòu)的弊端,實現(xiàn)物流管理系統(tǒng)的各項功能。
1 輕量級J2EE架構(gòu)的搭建
Struts是由Apache軟件組織創(chuàng)建,它實現(xiàn)了MVC(視圖、模型和控制器)設(shè)計模式,為基于Web的開發(fā)提供了一個開源框架[1]。Spring是Rod Johnson創(chuàng)建的一個開源框架。它使用基本的JavaBean來完成以前只可能由EJB完成的事情。其控制反轉(zhuǎn)(IoC)和面向切面(AOP)的特點,是松散耦合和輕量級的最大體現(xiàn)[2]。Hibernate是一個實現(xiàn)了ORM映射的開源框架,它對JDBC進(jìn)行了非常輕量級的對象封裝,可在應(yīng)用EJB的J2EE架構(gòu)中取代CMP,完成數(shù)據(jù)持久化的重任[3]。
Struts、Spring和Hibernate分別實現(xiàn)J2EE表示層、業(yè)務(wù)邏輯層和持久層的功能,如圖1所示。Struts管理用戶的請求和響應(yīng),并通過FilterDispatcher控制器委托業(yè)務(wù)邏輯層來處理,并選取模型數(shù)據(jù)中的內(nèi)容,呈現(xiàn)到用戶對應(yīng)的視圖中,在處理過程中進(jìn)行必要的驗證和攔截。Spring讀取配置文件,自動生成Bean實例,供業(yè)務(wù)邏輯使用,利用IOC實現(xiàn)了業(yè)務(wù)邏輯和持久邏輯組件的松散耦合,利用AOP為業(yè)務(wù)邏輯和持久邏輯模塊提供統(tǒng)一的切面服務(wù),通過DAOCLASS調(diào)用持久層接口方法[4-5]。Hibernate采用ORM機(jī)制,實現(xiàn)領(lǐng)域模型對象與關(guān)系數(shù)據(jù)庫的映射,解決了面向?qū)ο缶幊陶Z言與關(guān)系數(shù)據(jù)庫一起使用可能帶來的種種麻煩,其提供的API和HQL查詢接口使操作數(shù)據(jù)更有效、便捷。
2 系統(tǒng)功能分析
2.1 系統(tǒng)功能結(jié)構(gòu)
ERP進(jìn)銷存系統(tǒng)功能主要包含采購管理、銷售管理、庫存管理等六個模塊,如圖2所示。采購管理主要實現(xiàn)了采購訂單和退貨的處理,銷售管理主要實現(xiàn)了銷售訂單和退貨的處理,庫存管理主要實現(xiàn)了入庫、出庫、庫位調(diào)整和送貨管理。
根據(jù)用戶需求,依據(jù)登錄人員的職責(zé)設(shè)置不同的角色,分配相應(yīng)的權(quán)限,操作對應(yīng)的系統(tǒng)界面。系統(tǒng)用戶角色主要包括:采購員、銷售員、倉庫管理員和系統(tǒng)管理員等。采購員負(fù)責(zé)填寫并提交進(jìn)貨和退貨單,瀏覽、查詢、打印進(jìn)貨明細(xì),添加商品信息。銷售員負(fù)責(zé)填寫并提交銷售和退貨單,瀏覽、查詢、打印銷售明細(xì),添加客戶信息。倉庫管理員負(fù)責(zé)客戶信息、商品信息、供應(yīng)商信息和倉庫信息的維護(hù)。
2.2 系統(tǒng)工作流程
我們根據(jù)系統(tǒng)各個模塊的功能劃分,給出具體的工作流程。由于系統(tǒng)功能模塊較多,無法展示全部的工作流程,這里以庫存管理模塊為例,給出其具體的工作流程。如圖3所示。
在入庫管理工作中,管理員可以直接填寫入庫單,也可以通過采購訂單產(chǎn)品明細(xì)列表生成,其結(jié)構(gòu)包含入庫單號、入庫日期、入庫類型、供應(yīng)商、收貨倉庫、產(chǎn)品明細(xì)等內(nèi)容。入庫單提交確認(rèn)后,對庫存進(jìn)行修改。
在出庫管理工作中,管理員可以直接填寫出庫單,也可以通過銷售訂單產(chǎn)品明細(xì)列表生成“出庫單”,其結(jié)構(gòu)包含出庫單號、出庫日期、出庫類型、客戶、出貨倉庫、產(chǎn)品明細(xì)等內(nèi)容。出庫單提交確認(rèn)后,對庫存進(jìn)行修改,生成并打印出送貨單,安排配送。配送完成后,生成并打印送貨回執(zhí)。
在庫位調(diào)整管理工作中,管理員填寫庫位調(diào)整單,其結(jié)構(gòu)包含調(diào)整單號、調(diào)整日期和調(diào)整明細(xì)等。庫位調(diào)整單確認(rèn)后,對庫位進(jìn)行修改,實現(xiàn)產(chǎn)品庫存量在庫位之間的移動。
3 系統(tǒng)設(shè)計
3.1 系統(tǒng)處理流程設(shè)計
系統(tǒng)處理流程圖描述了J2EE各層之間的調(diào)用關(guān)系,如圖4所示。從上到下依次為表示層、業(yè)務(wù)邏輯層和持久層的設(shè)計。AbstractEditModeActionSupport類繼承了ActionSuppor工具類的功能,實現(xiàn)了Action接口和validateable接口,實現(xiàn)了數(shù)據(jù)校驗功能,簡化了對象的CRUD操作。Action調(diào)用了manager,managerimpl為了實現(xiàn)業(yè)務(wù)邏輯功能調(diào)用了多個Dao,DaoHibernate實現(xiàn)了數(shù)據(jù)庫對象的CRUD操作。
3.2 數(shù)據(jù)庫設(shè)計
經(jīng)過系統(tǒng)的功能分析和工作流程的分析,得到系統(tǒng)數(shù)據(jù)庫表。核心的數(shù)據(jù)表包括:product(產(chǎn)品)、warehouse(倉庫)、godow_nentry(入庫單)、stock_out(出庫單)、puchase_order(采購訂單)、sales_order(銷售訂單)、stor_adjust(庫位調(diào)整單)、client(客戶)、provider(供貨商)、user(用戶表)、role(角色表)等。
4 系統(tǒng)實現(xiàn)
4.1 持久層的實現(xiàn)
持久層使用Hibernate的映射配置文件,實現(xiàn)了Domain Object與數(shù)據(jù)庫表的映射,并通過創(chuàng)建Dao接口和實現(xiàn)類封裝了針對Domain Object的各種持久化操作,進(jìn)而實現(xiàn)對數(shù)據(jù)庫的CRUD操作。Domain Object經(jīng)過持久化后,就轉(zhuǎn)化成為了PO(持久化對象)。
4.2 業(yè)務(wù)邏輯層
4.2.1 編輯Spring配置文件
該層借助Spring的配置文件ApplicationContext.xml與持久層的Hibernate整合。在文件中,所有的對象都以
4.2.2 創(chuàng)建業(yè)務(wù)邏輯接口和實現(xiàn)類
業(yè)務(wù)層類圖設(shè)計中,設(shè)計了Manager接口和ManagerImpl實現(xiàn)類,接口中簡單封裝了針對表示層調(diào)用的各種方法,例如:貨物的添加、修改、保存、刪除和查詢等操作。這些方法由ManagerImpl實現(xiàn),它調(diào)用Dao接口實例中的持久化操作,完成相應(yīng)的功能。在配置文件中,將Dao實現(xiàn)類注入到ManagerImpl中,根據(jù)依賴注入的要求,在ManagerImpl中定義了Dao實現(xiàn)類getter/setter方法。
4.2.3 表示層的實現(xiàn)
業(yè)務(wù)層和持久層的實現(xiàn),創(chuàng)建了MVC設(shè)計模式中的“M(模型)”。而模式中的“V(視圖)”和“C(控制器)”由表示層的Struts框架實現(xiàn)。
Struts使用Html的框架標(biāo)簽設(shè)計JSP頁面的布局,把頁面高層抽象為頁眉、導(dǎo)航、主體和頁腳元素的集合。在元素的具體實現(xiàn)過程中,使用Struts標(biāo)簽庫和JSTL標(biāo)簽庫進(jìn)行編輯,實現(xiàn)視圖的功能。struts提供了ActionServlet和Action組件實現(xiàn)控制器功能。ActionServlet接受用戶的請求,實現(xiàn)控制和轉(zhuǎn)發(fā)。ArticleAction對象根據(jù)用戶請求中的?mehtod=save參數(shù),執(zhí)行其定義的save方法,在該方法中,提取ActionForm對象的屬性,裝配域模型對象ArticleForm,將其作為參數(shù)在各層之間進(jìn)行數(shù)據(jù)傳遞;獲取對業(yè)務(wù)層AriticleManger接口的引用,進(jìn)而調(diào)用AriticleManger中的SaveArticle方法,完成信息錄入的業(yè)務(wù)邏輯。
5 結(jié)論
本文主要是分析了輕量級的J2EE架構(gòu),實現(xiàn)了表現(xiàn)層、業(yè)務(wù)邏輯層和持久層的松散耦合,有效的提高了系統(tǒng)的可擴(kuò)展性、可維護(hù)性和可移植性。并把該架構(gòu)在ERP物流系統(tǒng)的采購、銷售和管理模塊加以適應(yīng),通過實驗論證了該系統(tǒng)運(yùn)行良好,實現(xiàn)了企業(yè)的合理生產(chǎn),及時銷售和庫存控制,提高了企業(yè)的效率和效益。后續(xù)將考慮進(jìn)一步加強(qiáng)J2EE輕量級架構(gòu)的研究,力爭在商用軟件上加以重構(gòu)使用,提高系統(tǒng)架構(gòu)的穩(wěn)定性和魯棒性。
參考文獻(xiàn)(References):
[1] 曹靜,李梅,付惠茹,李沂橋,嚴(yán)開.基于J2EE的輕量級SSH框
架應(yīng)用[J].電子技術(shù)與軟件工程,2017.19:153-154
[2] 李丹.基于SSH框架的進(jìn)銷存管理系統(tǒng)設(shè)計與實現(xiàn)[J].內(nèi)蒙
古科技與經(jīng)濟(jì),2017.19:60-62
[3] 尹云霞.基于分層思想的SSH框架整合技術(shù)研究[J].新技術(shù)
新工藝,2017.4:56-58
[4] 柯常欽,史毓達(dá).基于SSH框架的Web應(yīng)用系統(tǒng)開發(fā)研究[J].
湖北第二師范學(xué)院學(xué)報,2010.27(8):102-105
[5] 王書程,曾賢龍,蘇玨.基于Struts框架的進(jìn)銷存管理系統(tǒng)的
設(shè)計與實現(xiàn)[J].計算機(jī)與信息技術(shù),2008.8:69-70