曹渝昆
(上海電力學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,上海 200090)
電力營銷管理信息系統(tǒng)是供電企業(yè)的關(guān)鍵業(yè)務(wù)系統(tǒng),是提高電力企業(yè)經(jīng)濟(jì)效益的關(guān)鍵環(huán)節(jié),具有基礎(chǔ)性和先導(dǎo)性的重要作用.為了適應(yīng)電力體制改革的不斷深入和電力市場不斷發(fā)展的需要,不斷提高營銷管理與客戶服務(wù)水平,各個(gè)省的電力公司先后建成了營銷管理信息系統(tǒng)、95598客戶服務(wù)系統(tǒng)、繳費(fèi)系統(tǒng)和負(fù)荷管理系統(tǒng)等多個(gè)營銷應(yīng)用系統(tǒng),為各省營銷工作提供了重要的技術(shù)支持.
但隨著營銷業(yè)務(wù)的發(fā)展和IT技術(shù)的進(jìn)步,這些系統(tǒng)在管理理念、整體集成、技術(shù)體系、系統(tǒng)功能、可擴(kuò)展性、可維護(hù)性、可靠性等各方面都越來越難以滿足需求,在一定程度上阻礙了營銷管理水平向更高層次提高.因此,在現(xiàn)有的基礎(chǔ)上對營銷技術(shù)支撐系統(tǒng)進(jìn)行全面改造、升級(jí),推出高度集成的營銷管理業(yè)務(wù)應(yīng)用系統(tǒng)已勢在必行.本文提出了一種新型的遵循面向服務(wù)架構(gòu)(Service Oriented Architecture,SOA)的分布式企業(yè)服務(wù)總線模型,采用分布式服務(wù)總線的模式,實(shí)現(xiàn)了與現(xiàn)有營銷相關(guān)的業(yè)務(wù)系統(tǒng)的大集成,極大地提升了電力企業(yè)對營銷工作的管理力度.
SOA是一種業(yè)務(wù)驅(qū)動(dòng)的IT架構(gòu)方式,支持對業(yè)務(wù)進(jìn)行整合,并使其成為一種相互聯(lián)系、可重用的業(yè)務(wù)任務(wù)或者服務(wù).通過在不同的應(yīng)用和信息資源之間建立聯(lián)系,SOA能夠幫助客戶提高業(yè)務(wù)流程的靈活性,穩(wěn)固企業(yè)底層的IT基礎(chǔ)架構(gòu),并重用現(xiàn)有的IT投資[1].因此,選擇SOA架構(gòu)作為現(xiàn)有營銷業(yè)務(wù)系統(tǒng)集成平臺(tái)的架構(gòu),不僅能夠最大限度地保護(hù)已有的業(yè)務(wù)系統(tǒng),還能夠?qū)ΜF(xiàn)有的營銷業(yè)務(wù)系統(tǒng)進(jìn)行優(yōu)化和集成,為今后營銷系統(tǒng)的進(jìn)一步發(fā)展預(yù)留出足夠的空間.
企業(yè)要做出有效的決策,應(yīng)推動(dòng)創(chuàng)新,提高靈活性,并對日新月異的市場壓力做出迅速反應(yīng).如果為了當(dāng)前的緊急需求,采用缺乏遠(yuǎn)見的方式,機(jī)械地對IT系統(tǒng)進(jìn)行整合,將會(huì)導(dǎo)致變革的過程困難重重,且耗時(shí)巨大、費(fèi)用驚人.相反,SOA能夠?qū)T分解為便于組裝、配置及重用的構(gòu)建模塊,即服務(wù).這些服務(wù)構(gòu)建在開放的標(biāo)準(zhǔn)基礎(chǔ)之上,能夠很容易地與其他IT系統(tǒng)整合,而不用擔(dān)心與個(gè)別供應(yīng)商專用系統(tǒng)的互聯(lián)互通問題,同時(shí)還能夠促進(jìn)重用.因此,企業(yè)能夠在啟用服務(wù)的形式下,使用已經(jīng)擁有的資源添加新的構(gòu)建模塊(或服務(wù)),或者與其他模塊(或服務(wù))結(jié)合起來成為新的應(yīng)用,而無需對現(xiàn)有的、可靠的應(yīng)用和系統(tǒng)進(jìn)行調(diào)整[2,3].SOA 具體的參考架構(gòu)如圖1所示.
圖1 SOA參考架構(gòu)
服務(wù)基礎(chǔ)架構(gòu)提供了一個(gè)管理、監(jiān)測并協(xié)調(diào)所有服務(wù)請求的環(huán)境,分為訪問服務(wù)層、數(shù)據(jù)服務(wù)層、業(yè)務(wù)服務(wù)層、業(yè)務(wù)流程層、展現(xiàn)服務(wù)層.
服務(wù)基礎(chǔ)架構(gòu)的前端為企業(yè)服務(wù)總線(ESB),任何服務(wù)調(diào)用者提出的請求都將通過ESB進(jìn)行協(xié)調(diào),才能調(diào)用服務(wù)基礎(chǔ)架構(gòu)中所包含的各層服務(wù).ESB的作用類似于一個(gè)服務(wù)中介,其責(zé)任是協(xié)調(diào)和調(diào)度業(yè)務(wù)服務(wù),其功能包括路由、轉(zhuǎn)換、聚合、遞增等.另外,ESB還負(fù)責(zé)審核、日志、監(jiān)測和安全等公用服務(wù)與其他類型服務(wù)和應(yīng)用之間的溝通[4,5].
ESB是SOA架構(gòu)的核心部件,通過ESB能夠?qū)崿F(xiàn)業(yè)務(wù)系統(tǒng)的分布式部署[6,7].圖 2是一個(gè)基于SOA架構(gòu)的分布式企業(yè)服務(wù)總線框架,它以各個(gè)企業(yè)中的ESB為基礎(chǔ),以服務(wù)為接口來訪問各種應(yīng)用系統(tǒng),包括共享服務(wù)、業(yè)務(wù)流程、非共享應(yīng)用和相關(guān)數(shù)據(jù)等.在基于SOA的分布式ESB架構(gòu)上可以掛接多種應(yīng)用系統(tǒng),從這些應(yīng)用系統(tǒng)的內(nèi)部看,它們?nèi)匀蛔鳛楠?dú)立系統(tǒng)在運(yùn)行,而從整體架構(gòu)的邏輯構(gòu)成考慮,它們是作為整體框架的服務(wù)和功能模塊存在的.
圖2 基于SOA的分布式企業(yè)服務(wù)總線架構(gòu)
由于目標(biāo)架構(gòu)中的每一個(gè)應(yīng)用系統(tǒng)都提供了服務(wù)接口,因此用戶不需要專門的集成平臺(tái),就可以直接接入服務(wù)總線,并可以通過ESB直接訪問應(yīng)用系統(tǒng)中提供的所有服務(wù).企業(yè)原有的應(yīng)用系統(tǒng)所提供的共享服務(wù)可以通過服務(wù)注冊進(jìn)行發(fā)布,并在系統(tǒng)設(shè)計(jì)階段檢測是否有類似的服務(wù)存在,從而實(shí)現(xiàn)服務(wù)的重用.企業(yè)還可以將服務(wù)發(fā)布到全公司,使其為其他省市或全球的用戶服務(wù).企業(yè)新建的所有應(yīng)用系統(tǒng)都可以作為目標(biāo)架構(gòu)中共享服務(wù)的一部分嵌入到整個(gè)EAI架構(gòu)中.
目標(biāo)架構(gòu)中的每一個(gè)域都包含自己的服務(wù)倉庫,用于存儲(chǔ)所有服務(wù)的元數(shù)據(jù),包括服務(wù)接口定義(WSDL)、請求規(guī)范、反饋消息、服務(wù)契約和服務(wù)要求等信息.另外,每一個(gè)域中的安全服務(wù)還提供了基于服務(wù)的訪問和管理安全數(shù)據(jù)的方法,這些安全數(shù)據(jù)可能包括用戶、組、角色和屬性信息等細(xì)粒度的權(quán)限信息.安全數(shù)據(jù)可能分散在不同的域中,或者是匯總到統(tǒng)一的安全域中.大多數(shù)安全功能是由服務(wù)基礎(chǔ)架構(gòu)實(shí)現(xiàn)的(如J2EE容器),其他安全服務(wù)則遵從服務(wù)提供者/消費(fèi)者模式,如在消息層的加密、解密和審計(jì)功能等都可以封裝為安全服務(wù).
作為SOA基礎(chǔ)架構(gòu)的關(guān)鍵部分,ESB的功能主要體現(xiàn)在通信、服務(wù)交互、應(yīng)用集成、服務(wù)質(zhì)量、安全性,以及管理和監(jiān)控等方面[5].在本文提出的分布式企業(yè)服務(wù)總線設(shè)計(jì)中應(yīng)該實(shí)現(xiàn)的功能包括:服務(wù)接入;服務(wù)路由;訪問控制;服務(wù)適配器;日志;錯(cuò)誤處理;配置;同步.
服務(wù)接入框架負(fù)責(zé)服務(wù)調(diào)用者的接入,接收服務(wù)調(diào)用者的請求,并且調(diào)用其他模塊的功能來完成服務(wù)路由、用戶鑒權(quán)、服務(wù)調(diào)用等功能.比如:為一個(gè)Web Services和一個(gè)Message Driven Bean分別提供對Web Services和JMS方式的接入.
服務(wù)請求數(shù)據(jù)進(jìn)入服務(wù)接入框架后,會(huì)被轉(zhuǎn)換成服務(wù)總線的標(biāo)準(zhǔn)Java消息對象.服務(wù)總線的處理邏輯都是針對總線標(biāo)準(zhǔn)的Java消息對象,而不會(huì)針對特定協(xié)議的消息對象,比如JMS,Web Services等,這樣就可以把總線的處理邏輯和接入?yún)f(xié)議松耦合.如果除了Web Services和JMS,還要支持新的接入?yún)f(xié)議,比如RMI,只需添加RMI對象并將其轉(zhuǎn)換到服務(wù)總線的標(biāo)準(zhǔn)Java消息對象的邏輯即可,其余的邏輯都不需要改變.
服務(wù)路由模塊負(fù)責(zé)查找服務(wù)的路由信息,并計(jì)算調(diào)用服務(wù)需要經(jīng)過總線的最短路徑.服務(wù)路由模塊中有路由信息查詢功能,該功能可以查詢服務(wù)目錄得到服務(wù)的路由信息,支持Web Services和數(shù)據(jù)庫兩種查詢接口,可根據(jù)實(shí)際情況選擇一種,這兩種查詢方式通過修改配置文件進(jìn)行切換.
取得路由信息后,如果該服務(wù)是注冊在其他總線上的,這時(shí)就需要計(jì)算路由的最短路徑,而服務(wù)總線自身會(huì)提供一個(gè)計(jì)算最短路徑的服務(wù),(此服務(wù)包括所有總線的層次結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,并可以根據(jù)圖論算法計(jì)算從某個(gè)總線到另一個(gè)總線所要經(jīng)過的最短路徑.)這個(gè)服務(wù)可以部署在服務(wù)總線上,也可以獨(dú)立部署.路由信息和最短路徑會(huì)被儲(chǔ)存在內(nèi)存緩存中,下次調(diào)用時(shí)無需再計(jì)算.內(nèi)存緩存采用LRU算法,同時(shí)有超時(shí)機(jī)制,超時(shí)后需要重新查詢路由信息和計(jì)算最短路徑,可以通過修改配置文件啟用和禁止內(nèi)存緩存,以及更改超時(shí)時(shí)間和緩存大小等參數(shù).
訪問控制模塊包含了判斷用戶能否訪問服務(wù)的邏輯.控制平臺(tái)會(huì)給每個(gè)需要調(diào)用服務(wù)總線的系統(tǒng)頒發(fā)證書,這些系統(tǒng)必須用頒發(fā)的證書為服務(wù)調(diào)用人員簽名,并將簽名置于請求參數(shù)的頭信息上傳入服務(wù)總線.這時(shí)服務(wù)總線會(huì)驗(yàn)證請求數(shù)據(jù)中的簽名,以判斷用戶是否為合法用戶.
權(quán)限判斷功能決定了用戶是否有權(quán)限訪問所調(diào)用的服務(wù),權(quán)限信息存放在平臺(tái)管理模塊的數(shù)據(jù)庫中.該功能可以通過Web Services接口訪問平臺(tái)管理中安全控制模塊,傳入用戶標(biāo)識(shí)和服務(wù)標(biāo)識(shí),而安全控制模塊則返回用戶是否能訪問服務(wù)、或者直接訪問平臺(tái)管理數(shù)據(jù)庫查詢權(quán)限的信息.
服務(wù)適配器負(fù)責(zé)調(diào)用服務(wù),其中Web Services適配器調(diào)用Web Services服務(wù),JMS適配器調(diào)用JMS服務(wù).
日志模塊負(fù)責(zé)記錄服務(wù)調(diào)用的輸入輸出參數(shù)、服務(wù)調(diào)用的狀態(tài)、服務(wù)調(diào)用的異常信息等,這些數(shù)據(jù)存在數(shù)據(jù)庫中.管理員可以配置日志級(jí)別,具體的日志級(jí)別如表1所示.
表1 日志級(jí)別
錯(cuò)誤處理模塊負(fù)責(zé)對服務(wù)調(diào)用過程中的異常情況進(jìn)行處理.當(dāng)服務(wù)內(nèi)部自身發(fā)生異常時(shí),服務(wù)總線不負(fù)責(zé)處理,而服務(wù)必須將錯(cuò)誤代碼和錯(cuò)誤原因返回給服務(wù)總線.如果服務(wù)調(diào)用者在調(diào)用服務(wù)總線之前或調(diào)用完成后發(fā)生異常,服務(wù)總線也不負(fù)責(zé)處理,而是由服務(wù)調(diào)用者自行處理.
服務(wù)總線僅僅對以下過程中發(fā)生的異常進(jìn)行處理:請求數(shù)據(jù)進(jìn)入服務(wù)總線之后,服務(wù)總線對請求數(shù)據(jù)作處理,然后調(diào)用服務(wù),并將接收服務(wù)執(zhí)行結(jié)果返回給服務(wù)調(diào)用者(異步調(diào)用不需要執(zhí)行結(jié)果,則不需要返回結(jié)果).
配置模塊用于讀取服務(wù)總線的配制信息.
當(dāng)服務(wù)目錄中的服務(wù)信息被修改后,服務(wù)目錄會(huì)通知服務(wù)總線的同步模塊來刷新緩存中的數(shù)據(jù).它支持兩種緩存數(shù)據(jù)失效方式:
(1)完全失效 當(dāng)收到完全失效的通知時(shí),同步模塊將緩存內(nèi)的數(shù)據(jù)全部置為失效,緩存數(shù)據(jù)將在后續(xù)的調(diào)用中重新裝載;
(2)部分失效 部分失效通知包含被修改服務(wù)的惟一標(biāo)識(shí),同步模塊根據(jù)該惟一標(biāo)識(shí),有選擇地將相關(guān)數(shù)據(jù)置為無效.
為了滿足大型企業(yè)業(yè)務(wù)系統(tǒng)的分布式部署的需要,要求根據(jù)IT基礎(chǔ)架構(gòu)現(xiàn)狀來設(shè)計(jì)分層次的企業(yè)總線架構(gòu).在企業(yè)服務(wù)總線的設(shè)計(jì)中,可以根據(jù)業(yè)務(wù)系統(tǒng)的分布層次來確定所需的企業(yè)總線層次.將前文中提出的分布式企業(yè)服務(wù)總線框架應(yīng)用在某大型電力企業(yè)的營銷系統(tǒng)設(shè)計(jì)中,充分利用了現(xiàn)有的IT資源,有效保護(hù)了原有投資.
該營銷系統(tǒng)是一個(gè)基于分布式企業(yè)服務(wù)總線的大型營銷系統(tǒng),其設(shè)計(jì)理念是在應(yīng)用分布式企業(yè)服務(wù)總線的基礎(chǔ)上,嚴(yán)格遵循包括兩層不同級(jí)別總線架構(gòu)形式——省電力公司和各個(gè)地市級(jí)電力公司的SOA架構(gòu).其中,在省電力公司設(shè)置了營銷管理數(shù)據(jù)中心,各個(gè)分公司通過分布式企業(yè)服務(wù)總線將營銷系統(tǒng)中的數(shù)據(jù)匯總到省電力公司,以實(shí)現(xiàn)營銷數(shù)據(jù)的統(tǒng)一管理和高度集中.在省電力公司還設(shè)置了輔助決策分析模塊,營銷管理業(yè)務(wù)系統(tǒng)可以通過本地的企業(yè)服務(wù)總線ESB來調(diào)用輔助決策分析模塊中的各種數(shù)據(jù)挖掘和分析工具,并對營銷管理數(shù)據(jù)倉庫中的數(shù)據(jù)進(jìn)行深層次挖掘,從而為高層管理人員的營銷決策提供數(shù)據(jù)支持.圖3是基于分布式企業(yè)服務(wù)總線的某電力公司營銷系統(tǒng)總體框架.
圖3 基于分布式企業(yè)服務(wù)總線的大型電力企業(yè)營銷系統(tǒng)架構(gòu)
本架構(gòu)中包括分布式企業(yè)服務(wù)總線、基礎(chǔ)公共服務(wù)平臺(tái)、基于SOA架構(gòu)的應(yīng)用集成平臺(tái)3個(gè)主要部分.營銷業(yè)務(wù)管理系統(tǒng)等其他系統(tǒng)首先與基于SOA架構(gòu)的應(yīng)用集成平臺(tái)進(jìn)行集成,將功能封裝為服務(wù)后,通過分布式企業(yè)服務(wù)總線向外部提供服務(wù).
在基于SOA的架構(gòu)中,各個(gè)地市公司原來開發(fā)的與營銷業(yè)務(wù)管理系統(tǒng)相關(guān)的系統(tǒng)(如95585客戶服務(wù)系統(tǒng)、負(fù)荷管理系統(tǒng)、銀行實(shí)施繳費(fèi)系統(tǒng)、營銷數(shù)據(jù)倉庫系統(tǒng)等),在經(jīng)過SOA改造后都可以繼續(xù)使用.在對這些系統(tǒng)進(jìn)行SOA改造的過程中,將它們與營銷業(yè)務(wù)管理系統(tǒng)相關(guān)的功能盡可能封裝為服務(wù),納入基礎(chǔ)公共服務(wù)平臺(tái)中,然后通過應(yīng)用分布式企業(yè)服務(wù)總線與營銷業(yè)務(wù)管理系統(tǒng)實(shí)現(xiàn)互連互通.
此架構(gòu)的最大優(yōu)勢在于:各個(gè)地市公司以前開發(fā)的系統(tǒng)絕大多數(shù)都可以保留下來,而且界面與功能都不會(huì)發(fā)生變化;現(xiàn)有系統(tǒng)在為營銷業(yè)務(wù)管理系統(tǒng)提供服務(wù)的同時(shí),仍然可作為獨(dú)立系統(tǒng)運(yùn)行;在企業(yè)今后的信息化建設(shè)過程中新建的營銷業(yè)務(wù)管理系統(tǒng)的新業(yè)務(wù)功能,或者是新建的業(yè)務(wù)應(yīng)用系統(tǒng),只要遵循分布式企業(yè)服務(wù)總線的服務(wù)接口定義,就可以直接與營銷業(yè)務(wù)管理系統(tǒng)進(jìn)行信息互通,從而為新功能和新系統(tǒng)的集成提供了相應(yīng)的技術(shù)保障.這樣既可以實(shí)現(xiàn)營銷業(yè)務(wù)管理系統(tǒng)的統(tǒng)一和營銷數(shù)據(jù)的高度集中,又可以使各個(gè)下屬公司的營銷業(yè)務(wù)管理系統(tǒng)保留一定的靈活性和可擴(kuò)展性,從而保護(hù)了原有投資,又降低了實(shí)施的風(fēng)險(xiǎn)和成本.
此架構(gòu)嚴(yán)格遵循SOA的設(shè)計(jì)理念,以分布式企業(yè)服務(wù)總線為橋梁,以服務(wù)為接口,實(shí)現(xiàn)了不同級(jí)別的營銷系統(tǒng)之間的松耦合集成.除營銷系統(tǒng)外,在該架構(gòu)中還可以集成多種應(yīng)用系統(tǒng),包括與營銷系統(tǒng)相關(guān)的營銷輔助決策分析模塊,以及其他業(yè)務(wù)系統(tǒng)和企業(yè)門戶系統(tǒng)等.
本文提出的基于SOA架構(gòu)的分布式企業(yè)服務(wù)總線非常適用于大型企業(yè)的分布式業(yè)務(wù)系統(tǒng).由于企業(yè)服務(wù)總線可以分布在企業(yè)的下屬子公司中,而下屬子公司內(nèi)部的獨(dú)立業(yè)務(wù)系統(tǒng)可以通過企業(yè)服務(wù)總線接入到統(tǒng)一的業(yè)務(wù)集成平臺(tái)當(dāng)中,以實(shí)現(xiàn)各個(gè)不同業(yè)務(wù)系統(tǒng)的互連互通.同時(shí),通過基于SOA架構(gòu)的分布式企業(yè)服務(wù)總線還可以有效利用企業(yè)內(nèi)部現(xiàn)有的IT資源,充分保護(hù)已有投資,具有較高的實(shí)用價(jià)值.本架構(gòu)已經(jīng)應(yīng)用于某電力公司的營銷系統(tǒng)中,并取得了很好的效果.
[1]費(fèi)圣英.電力企業(yè)信息化SOA實(shí)踐[M].南京:南京大學(xué)出版社,2007:28-31.
[2]邵歡慶,康建初.企業(yè)服務(wù)總線的研究與應(yīng)用[J].計(jì)算機(jī)工程,2007(2):220-222.
[3]DIETRICH A J,KIRN S.A service oriented architecture for mass customization-a shoe industry case study[J].IEEE Transactions on Engineering Management,2008,54(1):190-204.
[4]黃安安,王麗芳.基于ESB的企業(yè)應(yīng)用集成研究[J].微計(jì)算機(jī)應(yīng)用,2007(9):168-172.
[5]麻志毅,陳泓婕.一種面向服務(wù)的體系結(jié)構(gòu)參考模型[J].計(jì)算機(jī)學(xué)報(bào),2006(7):45-49.
[6]饒?jiān)?面向服務(wù)體系結(jié)構(gòu)的企業(yè)資源計(jì)劃系統(tǒng)應(yīng)用模型與集成策略[J].計(jì)算機(jī)集成制造系統(tǒng),2009(10):56-60.
[7]GUDEDES D, MEIRA W.Anteater:a service-oriented architecture for high performance data mining[J].Internet Computing,IEEE,2009,10(4):36-43.