一、開發背景
目前市面上的進銷存系統主要存在以下問題:
1.不同行業,甚至同一行業不同物料的屬性差異很大,在開發過程中往往需要根據不同行業的特性,進行定制化開發,主要原因在于物料管理系統的靈活性和可擴展性不足;
2.雖然企業信息化的目的是要達到“物流、資金流、信息流三流合一”的目的,但大多數系統在分析層面和設計層面(尤其是數據庫設計層面)對于“物流、資金流”的設計缺乏足夠的重視,造成在信息流的不暢,雖然在實現層面采用大量的代碼來實現上述功能,但由于設計方面的缺陷,只能是治標不治本;
3.不同企業的業務流程不同,對于同一單據的處理流程不盡相同,現有系統在設計和實現中往往采用功能配置的方法加以實現。功能配置的方法雖然能夠實現流程的定制功能,但往往需要大量代碼維護復雜的業務邏輯,在業務流程需要擴展或者系統功能發生擴展的時候,不便于系統的快速升級。
為解決上述問題,需要從設計層面入手,精心構思和設計系統,使之具有更好的可擴展性、適應性等,滿足不同行業的業務需求。
二、設計思路
本系統的設計思路主要有以下幾點:
1.物料為核心:通過對物料及物料屬性的抽象,并充分考慮企業在采購、銷售以及統計等方面的需求,構造靈活、健壯的物料管理系統,使之能夠滿足不同行業、不同物料的編碼管理及業務需求;并在此基礎上進一步發展,使之在設計層面能夠滿足物流追蹤的需求;
2.兩點一線,三方監控:通過對業務的對象化分析,拆離財務功能在業務過程中的緊耦合關系,使之成為業務過程中的第三方力量,達到“業務過程兩點一線,財務功能第三方監控”的目的,一方面使得業務的靈活性能夠得到保證,另一方面,在實現“物流、資金流和信息流三流合一”的同時,還能夠保證三流的互相監督作用;
3.狀態機:在業務流轉中,采用狀態機原理,實現單據狀態的靈活可配置性,其優點主要表現在降低實現(編碼)層面的復雜性。
圖1、狀態機示意圖

4.MVC結構:根據多年經驗,利用現有的MVC架構(Struts),并進一步擴展控制層,使得系統具有更高的靈活性和可擴展性;
5.多語種:利用Struts的優勢,只需要編寫不同語種的屬性文件,就可以輕松實現多語種功能,滿足企業國際化的需要;
6.相對獨立的權限系統:分離權限系統的主要目的在于使得系統更加靈活,以便于企業擴張和重組時,盡量通過修改權限配置來滿足企業的需求,盡可能少地修改代碼