文/張志浩 張麗
隨著人們生活水平的提高和電子商務的壯大,物流行業(yè)得到了快速發(fā)展。物流業(yè)是包含倉儲、運輸、配送、流通加工等一系列活動的行業(yè),其中倉儲在降本增效上發(fā)揮著重要的作用。如何對倉儲進行科學管理,建立倉儲管理系統(tǒng),成為物流快速流通和資金流快速運轉的關鍵因素。
模塊、視圖、控制器是MVC設計模式的三個重要模塊,不同模塊完成不同的功能。控制器的功能是獲取客戶端發(fā)送的請求參數(shù)信息,并調(diào)用模型查詢數(shù)據(jù),獲取數(shù)據(jù),將查詢到的數(shù)據(jù)交給視圖展示。模型的功能是進行業(yè)務邏輯操作,比如查詢數(shù)據(jù)庫,封裝數(shù)據(jù)等。視圖的功能比較單一,只是用來展示數(shù)據(jù)。早期的Java項目沒有MVC模式,在頁面中同時編寫大量的代碼邏輯以及超文本標簽,導致項目難以閱讀和維護。Javaee或Java web的項目開發(fā)借鑒MVC開發(fā)模式之后,使程序設計更加合理,大大降低程序間的耦合度,方便項目維護、分工和復用。
B/S架構是一種開發(fā)架構,開發(fā)架構有兩種,分別是基于客戶端/服務器的C/S架構和基于瀏覽器/服務器的B/S架構。Java對于服務器端的開發(fā),一般使用B/S架構。B/S架構分為三層架構,第一層是表現(xiàn)層,主要是與瀏覽器進行數(shù)據(jù)交互,獲取請求的參數(shù)信息,調(diào)用業(yè)務層的方法,給瀏覽器返回與請求相對應的數(shù)據(jù)。第二層為業(yè)務層,處理業(yè)務需求,調(diào)用持久層邏輯。第三層是持久層,進行與數(shù)據(jù)庫有關的操作,根據(jù)傳遞過來的參數(shù),對數(shù)據(jù)庫中的數(shù)據(jù)進行查詢,保存等操作。一次瀏覽器與服務器的交互流程:(1)瀏覽器給服務器端發(fā)送請求,請求先到達表現(xiàn)層,表現(xiàn)層請求參數(shù),調(diào)用業(yè)務層。(2)業(yè)務層對需求進行處理,調(diào)用持久層的程序。(3)持久層與數(shù)據(jù)庫進行交互,并返回數(shù)據(jù)查詢結果。(4)最終表現(xiàn)層拿到返回的數(shù)據(jù),把響應結果回寫給瀏覽器,用戶從瀏覽器直觀的看到響應的結果,一次交互結束。
基于B/S和MVC模式的物流倉儲管理系統(tǒng),以Servlet為控制器,JavaBean為模型,JSP作為視圖,采用B/S三層分布式系統(tǒng)控制流程模式,將瀏覽器作為客戶端,客戶端請求服務器資源,Servlet獲取客戶端的請求信息,調(diào)用JavaBean,把獲取的數(shù)據(jù)封裝起來,調(diào)用業(yè)務層的方法,進行業(yè)務操作,例如查詢數(shù)據(jù)庫數(shù)據(jù),把數(shù)據(jù)返回給Servlet,Servlet再把返回的數(shù)據(jù)回寫給JSP,最終對瀏覽器客戶端做出對應的響應。基于B/S和MVC模式的物流倉儲管理系統(tǒng)流程控制圖如圖1所示。
在開發(fā)中使用MVC開發(fā)模式雖然有很多優(yōu)點,但是同時也增加了代碼的復雜性,對于一些相對簡單的web程序,如果嚴格地使用MVC設計模型,會導致一個JSP視圖有多個響應數(shù)據(jù)訪問,產(chǎn)生重復訪問問題,影響系統(tǒng)的執(zhí)行效率。
因此,本系統(tǒng)在表現(xiàn)層并沒有嚴格的遵循MVC設計模式,在持久層與數(shù)據(jù)庫進行交互時,將持久層劃分為多個層,使用工廠模式完成層與層之間的交互,增強了系統(tǒng)對不同數(shù)據(jù)庫的兼容性,避免因為更改數(shù)據(jù)庫而對持久層中的底層代碼進行更改,從而降低了程序的耦合度,提高了程序的復用性,使程序更方便維護和擴展。
表現(xiàn)層:用戶在界面輸入和輸出數(shù)據(jù)時,表現(xiàn)層顯示頁面的方式是Web方式,表現(xiàn)層的頁面設計要符合用戶的操作習慣,幫助用戶了解當前項目界面以及系統(tǒng)中信息數(shù)據(jù)的進度。
業(yè)務層:為表現(xiàn)層包裝的請求數(shù)據(jù)的具體的調(diào)用方法,處理表現(xiàn)成的業(yè)務需求,用戶通過瀏覽器發(fā)送請求的參數(shù)數(shù)據(jù)是隨意變更的,數(shù)據(jù)經(jīng)過表現(xiàn)層獲取發(fā)給業(yè)務層的業(yè)務需求也是變動的,邏輯層的調(diào)用方法設計應該能夠為表現(xiàn)層的請求提供充分的數(shù)據(jù)支持。
持久層:通過業(yè)務層的調(diào)用,根據(jù)業(yè)務層傳遞的參數(shù)信息,訪問數(shù)據(jù)庫的數(shù)據(jù),對于存在的數(shù)據(jù)返回查詢數(shù)據(jù)的結果,對不存在的數(shù)據(jù)進行保存或者返回數(shù)據(jù)不存在的信息,持久層對數(shù)據(jù)庫的操作通過兩種方式進行,一是通過解析XML文件,一是通過EF技術,向業(yè)務層和表現(xiàn)層響應實體類以及對傳遞的數(shù)據(jù)進行操作。
圖1 物流倉儲管理系統(tǒng)流程控制
基于B/S和MVC開發(fā)模式的物流倉儲管理系統(tǒng)分為系統(tǒng)管理模塊、補貨管理、出入庫管理、移庫管理四個功能模塊,按照不同的邏輯處理系統(tǒng)中的數(shù)據(jù),系統(tǒng)管理對系統(tǒng)靜態(tài)數(shù)據(jù)、庫存初始數(shù)據(jù)、用戶數(shù)據(jù)的進行設置與管理,補貨管理對貨物的補貨量、補貨策略、補貨單進行管理,出入庫管理完成出庫和入庫的業(yè)務管理以及相應庫存數(shù)據(jù)的查詢,移庫管理對貨物的移庫業(yè)務進行調(diào)度管理。
基于MVC設計模式的物流倉儲管理系統(tǒng)總體框架如圖2所示。
采用MySQL數(shù)據(jù)庫,通過對系統(tǒng)數(shù)據(jù)需求分析,建立數(shù)據(jù)庫統(tǒng)計系統(tǒng)中的數(shù)據(jù),對系統(tǒng)中的有效數(shù)據(jù)信息建立數(shù)據(jù)表,主要用于查找,修改和存儲系統(tǒng)中出現(xiàn)的員工信息,庫存信息,補貨信息,出入庫信息等數(shù)據(jù)。倉儲管理系統(tǒng)運行之前需要將系統(tǒng)的基礎資料數(shù)據(jù)錄入到系統(tǒng)數(shù)據(jù)庫,并根據(jù)不同的系統(tǒng)需求設計不同的邏輯,將數(shù)據(jù)表按一對一、一對多、多對多的關系關聯(lián)起來,例如員工表和部門表。員工表與部門表的實體關系圖如圖3所示。
本系統(tǒng)按照Javaweb開發(fā)原理,采用MVC開發(fā)模式和B/S三層開發(fā)架構,使用IDEA作為集成開發(fā)環(huán)境,MySQL作為關系型數(shù)據(jù)庫,完成系統(tǒng)開發(fā)。
倉儲物流管理系統(tǒng)是不允許用戶通過注冊登錄的管理系統(tǒng),只有擁有登錄權限的員工才可以登陸系統(tǒng),登錄權限由最高權限系統(tǒng)管理員分配系統(tǒng)登陸相關的信息授權。
用戶登錄倉儲管理系統(tǒng),系統(tǒng)回自動彈出登錄頁面,用戶輸入正確的登錄信息及驗證碼登錄系統(tǒng),登錄成功進入系統(tǒng)首頁。普通員工登錄系統(tǒng),無法修改個人信息,只能修改登錄相關的用戶信息,如登錄名和登錄密碼,只有系統(tǒng)管理員有權限修改員工信息,以及分配給不同部門的員工對數(shù)據(jù)庫操作的權限,普通用戶只能在權限內(nèi)通過系統(tǒng)對系統(tǒng)中的數(shù)據(jù)進行操作。
使用倉儲物流管理系統(tǒng),需要將系統(tǒng)需要的基礎數(shù)據(jù)如員工信息、部門信息、貨物信息、客戶信息、供應商信息等數(shù)據(jù)錄入系統(tǒng)中,數(shù)據(jù)錄入可以通過系統(tǒng)輸入后保存到數(shù)據(jù)庫,也可以直接將基礎數(shù)據(jù)導入數(shù)據(jù)庫,登錄的用戶根據(jù)權限對系統(tǒng)基礎數(shù)據(jù)進行業(yè)務操作。
出入庫管理主要是對進入倉庫的貨物進行統(tǒng)計,核查貨物出入庫的單據(jù)以及貨物的調(diào)度。其中入庫調(diào)度并不是真實對貨物進行出入庫操作,而是在貨物入庫前對貨物進行調(diào)度,入庫管理是對貨物進行真實的出入庫操作。
圖2 物流倉儲管理系統(tǒng)結構框架
為了保證基于B/S和MVC開發(fā)模式的物流倉儲管理系統(tǒng)能夠達到預期的功能實現(xiàn),需要對系統(tǒng)進行測試,主要是測試系統(tǒng)能否對不同的業(yè)務操作做出對應的響應,包括對系統(tǒng)的輸入測試、操作測試、GUI測試、鏈接測試以及功能測試等等。輸入測試:測試系統(tǒng)能否正確識別輸入的語言,系統(tǒng)是否出現(xiàn)亂碼。操作測試:測試系統(tǒng)的各個界面的操作按鈕是否有效,是否能做出正確的響應。GIU測試:在系統(tǒng)的不同的頁面上能否執(zhí)行用戶輸入的語句,是否能正確響應頁面的布局和響應數(shù)據(jù)的結果,達到用戶期望的結果。
定期對基于B/S和MVC開發(fā)模式的物流倉儲管理系統(tǒng)進行系統(tǒng)維護是為了保證系統(tǒng)能夠持續(xù)的正常使用,通過對系統(tǒng)運行時出現(xiàn)bug進行修復,保證系統(tǒng)的穩(wěn)定性以及安全性,同時為了提升系統(tǒng)的性能,添加更全面的功能,還需要對系統(tǒng)進行更新,每一次修復,更新之后都需要對系統(tǒng)進行測試。物流倉儲管理系統(tǒng)的系統(tǒng)維護主要包括:對系統(tǒng)中的數(shù)據(jù)進行修改,清理系統(tǒng)中出現(xiàn)的無效數(shù)據(jù),比如清理離職員工的信息、變動的部門信息等;對系統(tǒng)中運行效率低的程序進行更改,從而提升系統(tǒng)運行速度等等,為信息化倉儲管理的工程開發(fā)提供可行性方案。
基于B/S和MVC開發(fā)模式的物流倉儲管理系統(tǒng)所使用的項目框架和開發(fā)邏輯,滿足現(xiàn)代物流倉儲管理的流程,對物流行業(yè)起到了降本增效的作用。根據(jù)項目的控制流程和結構層次制定的開發(fā)邏輯,為倉儲管理信息化工程的開發(fā)提供可行性方案。