史 景, 胡 明
(長春工業大學計算機科學與工程學院,吉林長春 130012)
隨著世界經濟的發展,企業資源計劃(Enterprise Resources Planning,ERP)被我國越來越多的企業所認同和接受,但隨著ERP的實施,傳統ERP表現出的問題越來越明顯,傳統ERP的發展達到了一個瓶頸。從系統開發及維護方面分析,主要原因是:傳統ERP不能很好適應業務流程的轉變,程序升級比較麻煩,影響了正常的生產管理,給企業造成了時間、人力、金錢的浪費。因此,建立一個可調整、易擴展的柔性ERP系統成為當前研究的熱點。
動態ERP(動態企業資源計劃)在很大程度上借鑒了建筑領域的模式思想[1],通過組件復用、框架層次分解等方法搭建系統,形成一個易擴展、可調整的柔性ERP系統,以緩解動態的企業需求和僵硬的ERP系統之間的矛盾[2-3]。
面向服務架構(Service Oriented Architecture,SOA)[4]是一種面向服務的粗粒度、松耦合的企業應用體系結構,是一種分布式的動態可變的軟件架構模型。它可以很好地實現動態ERP系統的開發敏捷性,使動態ERP系統具備更好的穩定性、伸縮性和擴展性。
ERP系統是指通過信息技術,以系統化的管理思想,為企業領導層及員工提供高效管理的平臺,從而提高企業管理的效率。隨著信息化的發展,ERP系統在企業中擔任著越來越重要的作用,但因企業流程在實際操作過程中的轉換,使得ERP系統面臨頻繁升級,因此要求系統必須滿足動態性,動態性成為現代軟件研究的焦點[2]。動態企業模型(Dynamic Business Model)的概念最早是由荷蘭BaaN公司提出的,其目的是根據企業需求調節實現細節,使企業模型隨業務流程的轉變而不斷擴展改變。隨著企業管理理論與方法的不斷發展,動態ERP的特點越來越明顯,突出表現在以下4個方面:
1)動態性。傳統ERP在設計時僅僅考慮當時的需求水平,沒有考慮到系統的發展及變化,所以缺乏靈活性。而動態ERP要求系統可以隨著企業的業務流程的轉變和擴展而改變,即系統自身可適應客戶的需求變化。
2)擴展性。動態ERP系統比傳統ERP更加松散,在設計上采用了層次結構,在開發中結合框架、設計模式等技術,增加了系統的使用靈活性,提高了企業的管理效率,升級時可以與原系統進行無縫銜接,降低了開發成本,減少了維護工作。因此,動態ERP更易擴展其自身功能。
3)穩定性。傳統ERP軟件更新換代比較快,處在不停升級、不停打補丁的狀態中,這導致軟件的穩定性比較差。而動態ERP系統因其本身所具有的特性,使得ERP的升級周期大大縮減,提高了整個系統的穩定性。
4)開放性。傳統ERP系統受多種因素的制約,如領域、企業、部門等,沒有形成統一的接口,使信息成為分散的資源,浪費了大量的人力和資金。動態ERP系統可以構建統一的接口,實現企業和部門間的跨平臺合作交流,通過互聯網還可以形成巨大的信息網,有利于企業國際化合作和多元化發展。
SOA將不同的功能模塊分別定義為獨立的服務,每個服務帶有標準可調用的接口,通過接口進行數據交換,實現服務和技術的完全分離。它屏蔽了不同平臺、操作系統、編程語言和硬件架構之間的差異,使得企業能夠快速響應業務發展需求,從而更好地實現業務靈活性,提升企業競爭優勢。
SOA體系結構[5]由3個組件組成:服務提供者(Service Provider)、服務注冊中心(Service Registry)和服務請求者(Service Requester),如圖1所示。

圖1 SOA服務角色
各組件的功能如下:
1)服務提供者。創建Web服務,接受和執行來自使用者的請求,將服務發布到服務注冊中心,以便服務使用者可以發現和訪問該服務。
2)服務注冊中心。接受存儲服務提供者注冊的服務,并對其進行分類管理,同時為服務請求者提供搜索查詢服務。
3)服務請求者。利用服務注冊表查找所需的服務,通過傳輸機制綁定到該服務,按規定的格式來調用其Web服務。
在這些組件之間,主要使用發布(Publish)、查找(Find)和綁定(Bind)3種操作。SOA最主要的技術實現手段是Web Services,它以XML技術為基礎,用描述語言WSDL來定義描述接口,使服務轉到更動態且靈活的接口系統中。Web Services體系結構包含WSDL,SOAP和UDDI這3種協議。
為了解決傳統ERP系統所存在的不足,可以將ERP系統不同的業務功能分解為粗粒度和細粒度服務,通過服務組合實現ERP系統的整體功能。當企業業務流程重組時,通過重新組合已編寫的服務部件即可容易地實現。因此,根據分層設計模式,提出基于SOA的動態ERP系統體系結構,如圖2所示。

圖2 基于SOA的動態ERP體系結構
設計時對主要功能進行分析,采用自頂向下的方式,確定業務流程,然后抽象成服務,對服務進行歸類和粒度劃分,實現主要功能或生成新的功能,強調了企業內部服務與外部服務的開發部署和管理控制。
框架體系結構分5層,分別為應用服務層、服務發布層、業務邏輯層、數據訪問層以及數據層。各層的功能分別敘述如下。
為用戶提供GUI交互界面,例如Windows界面、Web界面等,調用企業應用服務。
應用服務層為用戶提供友好的可視圖形界面和簡明的應用服務訪問接口,接受用戶數據交互,判斷界面輸入數據的有效性,為不同類別用戶提供相應的Web服務接口界面。Web服務的調用對用戶來說是完全透明的,用戶只需根據界面提供的接口和功能說明提供相應的參數即可,Web服務的最終執行者是客戶層調用的服務發布層的組件。Web服務執行結束后,結果將自動返回。
服務發布層提供各個業務服務的發布接口。
服務發布層封裝各種Session Bean,簡化復雜的對象視圖,將業務邏輯層中的各種業務通過Fecade模式封裝成粒度較大的、易用的業務中間件,通過Web Service發布各種業務,接受界面邏輯層調用,保證了服務實現與調用者的最小耦合。該層是面向服務的一層,通過該層實現SOA架構的服務發布。
封裝各種企業業務邏輯,形成業務服務中間件,實現部門的業務邏輯。
業務邏輯層包含了整個ERP系統中的企業業務流程,是系統架構中體現核心價值的部分,它處于整個系統結構的中間位置,響應著應用服務層及服務發布層的請求,管理著對事務的處理,以及通過數據訪問層與數據持久層的連接交互操作,在數據交換中起著承上啟下的作用。業務邏輯層中的業務流程可以通過調用一個或者多個Web服務來實現。
封裝數據訪問邏輯,向業務邏輯層提供統一的數據庫訪問接口。
數據訪問層分為業務邏輯數據訪問組件和統一數據庫訪問組件兩類。業務邏輯數據訪問組件包含所有實現相關操作的邏輯,向統一數據庫訪問組件提供數據請求,并將得到的結果返回給實體。統一數據訪問組件負責業務數據訪問組件與各種異構/分布實體數據庫之間的訪問,以及相應的轉換和回存,利用抽象工程模式方法實現數據庫訪問無關性,保護數據的完整性。
數據層用來存儲業務數據。
數據層作為獨立的一層,它既可以是關系型數據庫,也可以是基于XML的數據庫,還可以是一組文件,甚至可以是外部的Web服務,用來存放與應用程序相關的業務數據和控制數據,保證數據的安全性、完整性、一致性。
其中,應用服務層、服務發布層、業務邏輯層、數據訪問層之間的交互關系如圖3所示。

圖3 模型交互圖
在企業應用的大框架中,各層之間的交互實現了SOA架構。根據業務邏輯層與數據訪問層的功能設計相關服務,服務實現后由服務發布層進行統一的發布管理,這時業務邏輯層與數據訪問層充當著服務的提供者;應用服務層、業務邏輯層和數據訪問層在服務發布層查找所有的服務,與服務提供者進行交互。其中業務邏輯層和數據訪問層充當著雙重角色,既是服務的提供者,也是服務的請求者。
依據動態ERP系統的概念,可將企業劃分為若干業務領域模塊,針對其中某具體業務領域的特點進行開發與實現。按照層次結構的不同,提供相應的接口,將眾多子系統集成組裝,使其成為一個完整的動態ERP系統。根據系統功能的分析及按照SOA定義的要求,將系統中不同功能分解成不同級別的服務,通過服務組合,實現動態ERP系統的整體功能。當企業業務流程發生改變時,只需要通過重新組合已編寫好的服務部件即可輕松地實現改造。
某全國大型連鎖飼料制造企業主要業務功能模塊有:系統設置、基礎數據管理、權限管理、人事管理、采購管理、庫存管理、銷售管理和財務管理等。采購管理子系統是企業管理的重要部分,因為企業的采購關系著銷售成本的核算。因此,我們以該領域為例,介紹動態ERP的構建。動態ERP系統的用戶并不關心系統內部如何布局及其如何實現,而是關心系統能夠提供什么樣的功能(服務),對不同的事件進行如何的響應。因此,可將采購子模塊作為粗粒度服務發布,其子模塊又分為訂單管理、審批管理、采購管理、查詢管理等。通過對采購服務的分析,可以得到業務流程,它包括服務:訂單申請、訂單審批、采購入庫,操作通過服務文件中的接口來實現。采購管理的服務使用者(角色)可以分為生產處、采購處、庫房管理員和系統超級用戶4大邏輯實體,在對這4種邏輯實體進行細化分析后,可以派生出許多具體的用戶實體,見表1。

表1 動態ERP采購管理領域的角色集合
生產員提交采購申請,由采購經理進行審批,審批通過后,由采購員進行采購,進行入庫管理。
系統的具體實現工具以及使用的軟件包括:
持久層框架:Ibatis 3.0;
業務層框架:Spring 2.0;
表示層框架:Struts 2.0,JSP;
Web服務器:Tomcat 6.0;
Web服務發布框架:XFire 1.2;
開發軟件:MyEclipse 7.5;
數據庫:MySql 5.5。
隨著企業生產規模的不斷擴大,業務流程的不斷更新,ERP系統已成為現代企業不可或缺的管理手段。與傳統的ERP系統開發相比,動態ERP借助于設計模式,將業務邏輯和技術實現相分離,具有一定的可調整和可擴展性,使系統更容易維護,而SOA采用面向對象、面向組件的軟件設計方法,解決了面向技術的限制,使動態ERP系統具有更好的柔性、可擴充性、可維護性、可交互性和靈活性。因此,基于SOA的動態ERP系統體系結構可以更好地滿足企業多方面的要求,加快了開發速度,減少了開發成本。
[1] 徐向英,周重益,陳華.動態ERP系統的研究與展望[J].微計算機應用,2004,25(1):14-17.
[2] 周重益,謝章麗,宋剛玉.動態ERP系統的設計與實現[J].江蘇工業學院學報,2004,16(2):40-43.
[3] 邊世紅,薛勁松,宋學艷.ERP系統中持久對象動態性研究[J].計算機集成制造系統——CIMS,2003,9(5):378-383.
[4] 徐罡,黃濤,劉紹華,等.分布應用集成核心技術研究綜述[J].計算機學報,2005,28(4):433-444.
[5] 魏東,陳曉江,房鼎益.基于SOA體系結構的軟件開發方法研究[J].微電子學與計算機,2005,22(6):73-76.
[6] 毛新生.SOA原理方法實踐[M].北京:電子工業出版社,2007.
[7] 顧寧,劉家茂,柴曉路,等.Web Services原理與研發實踐[M].北京:機械工業出版社,2006.
[8] 梁愛虎.SOA思想技術與系統集成應用詳解[M].北京:電子工業出版社,2007.