劉 杰, 支影亞
(沈陽師范大學 科信軟件學院, 沈陽 110034)
在電子商務蓬勃發展的背景下,物流行業得到飛速的發展,因此也致使倉儲管理這個行業得到快速的發展[1-3]。所以對于倉儲管理系統的研究和實現也是具有巨大意義的。觀察傳統軟件的模式,經歷初期開發、具體實施以及運營維護等階段。在這些階段中,企業用戶需要有以下方面的投入:
1) 初期開發的費用:開發軟件所需用的費用,可能還需要添置相關硬件設施。
2) 意外情況的費用:如果項目實施過程中失敗,需要承擔這些風險,而且有可能在開發接近尾聲的時候項目需求發生了重大變化,需要重新開發。
3) 后期維護費用:需要有專業人員專門維護項目。
而“軟件即服務”模式即SaaS(Software as a Service)[4-8],則可以在上面所述的很多方面上有很大的改善,主要體現在:
1) SaaS軟件是根據企業用戶實際的需要來提供服務的。所以企業可以靈活的根據不同時期的實際需求來調整對于軟件的費用投入。
2) 用戶使用特別便捷,因為SaaS模式的軟件是基于互聯網的服務,用戶租用時僅僅需要有普通PC和網絡即可,所以也節約了用戶對于硬件設備的費用投入。
3) 由于SaaS模式的軟件是基于互聯網的服務,所以軟件的主要的運行的環境都是由服務商進行維護和跟蹤的,在此基礎上也降低了企業在這方面的人員投入。
在當今的背景之下,SaaS是軟件發展的方向,如何將SaaS模式很好的應用到物流的倉庫管理系統(WMS)中具有很大的研究意義[9-11]?!?/p>
倉庫管理系統(Warehouse Management System,WMS)包括:業務決策、業務管理、業務操作和系統輔助四大類12個子系統。

圖1 倉庫管理系統WMS的系統結構圖Fig.1 System structure diagram of warehouse management system WMS
1) 業務決策類,包括: 費用管理、績效管理、計劃管理;
2) 業務管理類,包括: 資料管理、策略管理、配置管理;
3) 業務操作類,包括: 入庫管理、出庫管理、庫存管理;
4) 系統輔助類,包括: 報表中心、系統設置、租戶運維。
業務分析-入庫流程
1) 到貨通知: 倉儲管理系統根據數據新增到貨通知單(根據實際情況導入或者新增明細表),之后生成對應的收貨任務(生成入庫單);
2) 收貨作業: 根據到貨通知生成的入庫單,進行收貨操作,如果整單收貨,需要在整單收貨之前先打印入庫單;
3) 上架操作: 執行收貨操作之后的對應單號,會顯示在上架作業頁面,在此頁面執行上架操作。
入庫流程如圖2所示。

圖2業務流程
Fig.2 Operation flow
首先實現支持系統運行的前提功能包括:設置中心(包括系統設置,系統參數,系統日志以及審計日志),報表中心(包括查詢中心,統計報表以及日志報表),數據中心(包括資料管理,策略管理,配置管理,費用管理,績效管理以及計劃管理),其次實現入庫管理模塊的:到貨通知,收貨操作,上架操作對應的倉儲管理功能。功能模塊所包含的基本內容如圖3所示。

圖3 入庫管理模塊功能Fig.3 Warehousing management module function
1) 到貨通知: 到貨通知單主要是指在貨物未到達倉庫之前生成的到貨通知單,表明貨物即將到達倉庫,實現到貨通知功能模塊“新增,生成收貨任務,撤銷,導出,導入到貨通知,下載導入模板,查詢,重置”等子功能。
2) 收貨操作: 入庫單功能主要是輔助倉庫進行入庫收貨的。用戶可以對入庫單進行新增和修改操作,收貨員根據入庫單進行收貨操作,根據對應入庫單號實現收貨作業功能模塊“作業信息維護,關閉入庫單,返回,打印記錄,打印入庫單,整單預收” 等子功能。
3)上架操作: 將產品收到指定的上架庫位完成上架操作。
2.1.1 基于.NET的ABP框架(ASP.NET Boilerplate Project)
本項目采用ABP框架來進行開發。ABP遵循DDD(領域驅動設計)的原則[12-13],將工程分為4個層:
1) 展現層(Presentation): 提供一個用戶界面,實現用戶交互操作。
2) 應用層(Application): 進行展現層與領域層之間的協調,它不包含業務邏輯。
3) 領域層(Domain): 包括業務對象和業務規則,這是應用程序的核心層。倉儲接口和工作單元接口全部放在領域層。
4) 基礎設施層(Infrastructure): 提供通用技術來支持更高的層。例如基礎設施層的倉儲(Repository)可通過ORM來實現數據庫交互。
采用ABP框架來進行開發的的優點:
ABP遵循的DDD(領域驅動設計)原則,把軟件開發視為一個過程,根據此原則對軟件開發和維護進行過程監控和研究,領域模型可以維護領域內數據之間的業務規則以及數據的一致性,可以使其更加科學化、標準化、使企業能夠更好地實現商業目標。

圖4 ABP框架分層Fig.4 ABP framework layering
2.1.2 Web層使用ASP.NET MVC來實現頁面應用程序
MVC是Model-View-Controller的簡稱,即模型-視圖-控制器[14-15]。
1) Model(模型): 其主要功能是對用戶提交的數據進行加工、對業務流程的處理、制定服務于業務邏輯的規則和實現制定的業務邏輯流程或邏輯規則。
2) View(視圖): 用于展示用戶交互界面(UI)。
3) Controller(控制器): 控制用戶的和系統之間的交互。

圖5 WEB應用中的MVC框架圖Fig.5 MVC framework diagram in WEB application
本項目采用理論、設計、和實現相結合的研究方法,技術路線如下:

圖6 入庫單數據模型Fig.6 Warehousing data model

圖7 入庫單明細數據模型Fig.7 Warehousing detailed data model
1) 采用ABP框架進行開發。ABP遵循DDD(領域驅動設計)的原則。
2) 應用程序服務層的開發采用基于ASP.NET MVC框架的解決方案。
3) 數據層采用Entity Framework for Data Source的數據訪問模式,對數據進行增刪改查。
在項目開始階段,先構建了相關業務設計,并進行建模,通過EF將數據庫實體映射到平臺數據層中,再分別建立不通的model用于服務各個業務場景規則,通過接口的形式與倉儲管理平臺MVC框架中的控制器相關聯,并指定視圖進行輸出,實現其功能。
使用TestManager來創建一個測試計劃,基于黑盒測試原理,對倉儲管理系統進行功能測試,并且使用TestManager對用例進行管理以及驗證用例的可行性。
1) 首先搭建好測試環境,將源碼發布包部署到服務器上,在本地安裝TestManager并創建每個部分各個功能對應的測試用例,配置好之后開始測試基本功能。
2) 創建測試用例文件夾來分層次地組織測試用例,分別對入庫管理模塊的到貨通知,收貨操作以及上架操作的每一個基礎功能進行編寫測試用例。
設置中心:系統設置,系統參數,系統日志以及審計日志;報表中心:包括查詢中心,統計報表以及日志報表;數據中心:包括資料管理,策略管理,配置管理,費用管理,績效管理以及計劃管理基本功能均測試通過。
入庫管理模塊:到貨通知,收貨操作,上架操作對應的倉儲管理功能均測試通過。
本文主要從理論到實踐上對基于ABP框架SaaS模式入庫管理云倉儲系統進行了設計與實現,入庫管理模塊主要實現了3大功能:到貨通知,收貨作業和上架作業,且驗證了3個功能模塊的可行性。