謝 天 張丹松
中圖分類號:F270 文獻標識碼:A
內(nèi)容摘要:本文分析了傳統(tǒng)企業(yè)資源計劃(ERP)系統(tǒng)的局限性,闡述了服務(wù)組件架構(gòu)(SCA)的內(nèi)涵、構(gòu)成和特點,最后利用SCA、Web服務(wù)、企業(yè)服務(wù)總線(ESB)和業(yè)務(wù)流程執(zhí)行語言(BPEL)等技術(shù)對ERP系統(tǒng)的架構(gòu)重新設(shè)計,并提出基于SCA的ERP系統(tǒng)架構(gòu)。
關(guān)鍵詞:ERP 面向服務(wù)架構(gòu)(SOA) 服務(wù)組件架構(gòu)(SCA)
現(xiàn)有ERP系統(tǒng)的局限性
ERP是由美國的Gartner Group Inc公司提出的。ERP的概念原本十分狹窄,僅僅局限在制造業(yè)的企業(yè)資源計劃方面,但是隨著供需鏈管理(SCM)和企業(yè)業(yè)務(wù)流程重組(BRP)等管理理論的引入,ERP所管理的對象包括了企業(yè)人、財、物、信息等所有的資源和產(chǎn)、供、銷等所有業(yè)務(wù)。ERP擴展了企業(yè)內(nèi)部各種管理功能的信息集成,而且超出了企業(yè)本身的范圍,實現(xiàn)了整個供需鏈上所有相關(guān)業(yè)務(wù)的信息集成。隨著全球經(jīng)濟已逐漸從以制造經(jīng)濟為主的工業(yè)社會進入以服務(wù)經(jīng)濟為主的后工業(yè)社會,市場經(jīng)濟下客戶對產(chǎn)品和服務(wù)的個性化需求的增加,企業(yè)隨需應(yīng)變、按需服務(wù)的能力變得越發(fā)重要。以產(chǎn)品為中心的傳統(tǒng)ERP系統(tǒng)在面臨迅速變化的服務(wù)經(jīng)濟下全球市場時,凸顯出局限性,主要表現(xiàn)為:
設(shè)計架構(gòu)僵化,系統(tǒng)業(yè)務(wù)靈活性差。傳統(tǒng)的ERP系統(tǒng)設(shè)計是從結(jié)構(gòu)化、基于組件結(jié)構(gòu)以及三層架構(gòu)等程序分析設(shè)計架構(gòu)發(fā)展而來的,是建立在企業(yè)固定的職能組織結(jié)構(gòu)上的。這種僵化的非流程的組織結(jié)構(gòu)固化了ERP系統(tǒng)的系統(tǒng)結(jié)構(gòu),限制了系統(tǒng)的靈活性。
異構(gòu)系統(tǒng)之間沒有統(tǒng)一的集成標準規(guī)范,產(chǎn)生信息孤島。信息孤島的產(chǎn)生導(dǎo)致供應(yīng)鏈中的節(jié)點企業(yè)無法進行信息資源整合與共享,影響了競爭力的提升。所以,傳統(tǒng)的ERP系統(tǒng)必須在完善內(nèi)部集成的同時,實現(xiàn)和供應(yīng)鏈上下游、協(xié)作企業(yè)和客戶信息的外部集成。
系統(tǒng)維護和二次開發(fā)困難。從維護和二次開發(fā)的角度看,目前各個ERP軟件提供商提供的成品軟件功能固定,很難根據(jù)新管理模式下的業(yè)務(wù)要求重新構(gòu)建符合要求的ERP系統(tǒng)。要實現(xiàn)ERP功能,無論是由原來的軟件提供商進行二次開發(fā),還是購買新的ERP軟件,成本都很高昂。
為了解決現(xiàn)有ERP系統(tǒng)不能靈活地支持供應(yīng)鏈管理功能,難以與企業(yè)之外的供應(yīng)商、分銷商集成的問題,以及異構(gòu)系統(tǒng)之間的互操作,本文提出了基于SCA的ERP系統(tǒng)體系結(jié)構(gòu)。
SCA的內(nèi)涵、構(gòu)成及特點
(一)SCA的內(nèi)涵
SCA(Service Component Architecture,服務(wù)組件架構(gòu))是一個規(guī)范,它描述用于使用SOA構(gòu)建應(yīng)用程序和系統(tǒng)的模型。SOA(Service Oriented Architecture,面向服務(wù)架構(gòu))指面向服務(wù)的企業(yè)應(yīng)用體系結(jié)構(gòu),是一種分布式的軟件架構(gòu)模型。在該模型中,任何業(yè)務(wù)功能都被作為提供的一個服務(wù)使用,應(yīng)用程序的不同功能(服務(wù))通過這些服務(wù)之間定義的結(jié)構(gòu)和合約聯(lián)系,應(yīng)用系統(tǒng)可以看作是一系列服務(wù)的集成。ERP系統(tǒng)由財務(wù)、資產(chǎn)、人力資源、客戶關(guān)系、生產(chǎn)、成本、銷售、供應(yīng)鏈等多個子系統(tǒng)組成。子系統(tǒng)可以單獨存在,完成業(yè)務(wù)需要;也可以相互之間聯(lián)系,互相提供信息來完成?;贓RP系統(tǒng)的這種特性,本文利用SOA架構(gòu)將各個模塊中的業(yè)務(wù)處理抽象為服務(wù)組件,不僅本組織的ERP系統(tǒng)可以互相使用該服務(wù)組件,而且外部組織同樣可以在授權(quán)的情況下使用,達到組織間的協(xié)同。
SCA是一個用于構(gòu)建SOA應(yīng)用和解決方案的編程模型,在應(yīng)用集成上不但發(fā)展了Web服務(wù)技術(shù),還能較好地解決集成過程中的服務(wù)組裝問題。它的基本思想是:業(yè)務(wù)功能總是由一系列的服務(wù)組成,這些服務(wù)裝配在一起就構(gòu)成了能滿足一定商業(yè)需求的應(yīng)用和解決方案。而這些服務(wù)既包含專門為該應(yīng)用創(chuàng)新的新服務(wù),也包含來自既有系統(tǒng)和應(yīng)用的可重用業(yè)務(wù)功能。SCA的目標是為這種基于服務(wù)的系統(tǒng)建立一個簡單的模型。
(二)SCA的構(gòu)成
SCA是基于Component(組件)的復(fù)用,組件是其最主要的組成部分。在SCA規(guī)范中,相對較為獨立的組件只有三個,粒度由小到大分別是Component、Composite和Domain,分別對應(yīng)系統(tǒng)的三個不同層面。Component是SCA規(guī)范中最基本的元素,是粒度最小的執(zhí)行單元或者實現(xiàn)單元。一個SCA組件由四部分構(gòu)成。
服務(wù)(services)表示由本組件提供給其他組件使用的業(yè)務(wù)功能;實現(xiàn)(implementation)指提供了特定業(yè)務(wù)功能的代碼段;屬性(properties)是一些影響業(yè)務(wù)功能的數(shù)據(jù)值,可以通過設(shè)置這些屬性值對實現(xiàn)進行配置;引用(references)表示本組件的實現(xiàn)所依賴的由其他組件提供的服務(wù)。
一個Composite構(gòu)件內(nèi)部的組件彼此連接,如同創(chuàng)建一個運行在同一進程中的緊耦合的應(yīng)用程序。構(gòu)件包含0...n個Component, Service, Reference, Wire, Property, 以及包含其他的Composite。一個構(gòu)件由若干組件組合而成,這些組件之間通過連接(Wire)相連。構(gòu)件通過提升(promote)內(nèi)部組件的服務(wù)、引用和屬性來形成自己的服務(wù)、引用和屬性。一個服務(wù)是以接口(interface)的方式提供的,比如Java接口和WSDL端口類型。而一個服務(wù)的訪問方式是用綁定(binding)來描述的。類似地,引用也通過綁定和接口去調(diào)用它所依賴的服務(wù)。
(三)SCA的特點
1.松耦合。SCA中服務(wù)的定義、實現(xiàn)和使用是相分離的。組件和構(gòu)建以接口的方式提供服務(wù),服務(wù)的調(diào)用者只需要看到服務(wù)接口,而無須知道組件和構(gòu)建的內(nèi)部細節(jié)。組件在提供指定服務(wù)的前提下可以任意選擇合適的實現(xiàn)技術(shù),并且可以更換實現(xiàn)而不影響服務(wù)調(diào)用者。同一個服務(wù)還可以通過不同的綁定,也就是連接方式,供不同的客戶端使用。這種松耦合的結(jié)構(gòu)使得SCA應(yīng)用靈活而易于擴展,適應(yīng)多變的現(xiàn)實,實現(xiàn)對應(yīng)用部件的按需調(diào)整和擴展。
2.異構(gòu)。SCA提供了統(tǒng)一的調(diào)用方式,支持寬泛的用于服務(wù)組件實現(xiàn)和連接的各種技術(shù)。在服務(wù)實現(xiàn)方面,SCA支持眾多的編程語言,包括傳統(tǒng)語言如Java,C++和BPEL,腳本語言如PHP和JavaScript,以及聲明性語言如XQuery和SQL。對這些語言的支持還包括支持其所使用的框架和環(huán)境。在服務(wù)連接方面,SCA支持常見的通信和服務(wù)訪問技術(shù),如Web服務(wù)、消息系統(tǒng)和RPC。
3.重用。SCA組件和構(gòu)件是SCA應(yīng)用的構(gòu)建單元,就好比堆積木一樣,組件和構(gòu)件這些“積木塊”可以用不同的組合方式構(gòu)成不同的應(yīng)用,而既有的非SCA系統(tǒng)也可以通過作為SCA組件實現(xiàn)的方式很方便地加入到SCA系統(tǒng),成為構(gòu)建其他應(yīng)用的“積木塊”;或通過一定的方式連接到SCA系統(tǒng),成為服務(wù)的提供者和消費者。
基于SCA的ERP系統(tǒng)體系結(jié)構(gòu)設(shè)計
按照SOA架構(gòu)模型,結(jié)合ERP系統(tǒng)的業(yè)務(wù)需求,本文提出了基于SCA技術(shù)的ERP系統(tǒng)架構(gòu)(見圖1)。該架構(gòu)主要包括6個服務(wù)模塊,每一模塊又包含一些有特定業(yè)務(wù)功能的SCA業(yè)務(wù)服務(wù)組件和構(gòu)件。
首先,在流程自動化方面,用BPEL描述的主要業(yè)務(wù)流程定義為SCA服務(wù)組件類型,通過BPEL引擎的運行來動態(tài)編排和引用其他模塊中需要的服務(wù)組件(構(gòu)件)。其次,在用戶交互方面,模型提供了用戶交互服務(wù)。最后,在實現(xiàn)服務(wù)集成和數(shù)據(jù)傳輸方面,企業(yè)服務(wù)總線(Enterprise Services Bus,ESB)支持各種服務(wù)在消息總線上的熱插拔(可通過多種傳輸方式,如MQ、MQ JMS、JMS、Web Service、HTTP、SCA、SOAP等),完成格式轉(zhuǎn)換、消息路由等功能。而對數(shù)據(jù)源的訪問,主要是通過SDO數(shù)據(jù)圖的方式進行的(SDO是SCA的姐妹規(guī)范,SCA主要負責(zé)服務(wù)的標準化,SDO主要負責(zé)數(shù)據(jù)標準化)。
對于系統(tǒng)原有的遺留子系統(tǒng)功能模塊,只需利用WSDL文檔描述為標準接口,通過綁定功能將其導(dǎo)成SCA型服務(wù)組件,再由BPEL描述和執(zhí)行的主流程組件直接調(diào)用,從而對現(xiàn)有系統(tǒng)的重構(gòu)和業(yè)務(wù)流程重組,最終實現(xiàn)靈活的業(yè)務(wù)流程管理。
遺留系統(tǒng)中包括ERP系統(tǒng)現(xiàn)有的許多子系統(tǒng),如生產(chǎn)管理系統(tǒng)、銷售管理系統(tǒng)、庫存管理系統(tǒng)等。為了實現(xiàn)對這些系統(tǒng)功能按業(yè)務(wù)流程靈活的應(yīng)用,本文提出基于SCA技術(shù)的ERP系統(tǒng)詳細邏輯架構(gòu)(見圖2)。
通過綁定和利用WSDL文檔標準化接口,把現(xiàn)有子系統(tǒng)按各自業(yè)務(wù)功能封裝為粗粒度SCA服務(wù)構(gòu)件(服務(wù)模塊);把子系統(tǒng)的內(nèi)部子功能封裝為細粒度的SCA服務(wù)組件。一個粗粒度的SCA服務(wù)構(gòu)件由多個細粒度的SCA服務(wù)組件組合而成,如銷售管理構(gòu)件包括銷售報價、客戶訂單、客戶出貨等組件。同時,每個服務(wù)組件客戶端按照SDO標準通過DAS(Data Access Service,數(shù)據(jù)訪問服務(wù))訪問本地或網(wǎng)絡(luò)數(shù)據(jù)庫(即使是異構(gòu)數(shù)據(jù)源—關(guān)系數(shù)據(jù)庫RDB、XML數(shù)據(jù)等),并對數(shù)據(jù)庫表進行查找、更新、保存和刪除等操作。
綜上所述,基于SCA的ERP系統(tǒng)架構(gòu),把ERP系統(tǒng)模塊利用WSDL文檔描述為標準接口,通過綁定功能將其導(dǎo)成不同粒度的SCA服務(wù)組件和構(gòu)件,再由BPEL描述和執(zhí)行的主流程組件直接調(diào)用,從而實現(xiàn)對現(xiàn)有系統(tǒng)的重構(gòu)和業(yè)務(wù)流程重組。同時,通過企業(yè)服務(wù)總線完成格式轉(zhuǎn)換、消息路由等功能,最終實現(xiàn)供應(yīng)鏈內(nèi)靈活的業(yè)務(wù)流程管理。
參考文獻:
1.陳啟申.知己知彼知理知用[M].電子工業(yè)出版社,2007
2.王紫瑤,南俊杰,段紫輝等.SOA核心技術(shù)和應(yīng)用[M].電子工業(yè)出版社,2008
3.曾志常.基于SCA模型的應(yīng)用集成架構(gòu)研究[D].廣東工業(yè)大學(xué),2007