舒志強(qiáng) 文俊浩 王 靜
(1.重慶大學(xué)計算機(jī)學(xué)院,重慶 400030;2.中國建筑科學(xué)研究院,北京 100013)
在 21世紀(jì)這個信息時代,各個企業(yè)在激烈的市場競爭環(huán)境中,對變化的市場和客戶化的產(chǎn)品和服務(wù)做出快速而準(zhǔn)確的反應(yīng)已經(jīng)成為企業(yè)賴以生存和發(fā)展的前提[1]。具有不同資源與優(yōu)勢的項目參與方為了共同的目標(biāo),必然會越來越多地需要密切的合作,通過組成多參與方的項目協(xié)同合作模式而實現(xiàn)“共贏”。在這種多方參與的項目管理模式下:一是需要對資源、數(shù)據(jù)進(jìn)行集中管理,實現(xiàn)多個應(yīng)用系統(tǒng)的集成和整合;二是各參與方自身業(yè)務(wù)的快速變化,需要不斷更新原有業(yè)務(wù)流程和應(yīng)用模式、快速搭建并實施新的應(yīng)用系統(tǒng)[2]。
當(dāng)前實現(xiàn)多參與方的項目管理的信息化技術(shù)主要是基于傳統(tǒng)企業(yè)集成技術(shù)(EAI),如基于 CORBA、DCOM、RMI。其不足之處主要有以下幾點(diǎn):首先,傳統(tǒng)企業(yè)集成技術(shù)依賴于特定的廠商,不利于來自不同廠商軟件應(yīng)用程序之間相互操作,無法擴(kuò)展到安全與事務(wù)管理這樣的更高級別的服務(wù);其次,傳統(tǒng)企業(yè)集成技術(shù)存在緊耦合,使得各個應(yīng)用程序的服務(wù)器端與客戶端的類型是唯一對應(yīng)的關(guān)系,接口的任何更改都將影響服務(wù)器與客戶端之間的通訊,極大的約束了程序的可維護(hù)性與靈活性;第三,傳統(tǒng)企業(yè)集成技術(shù)與平臺綁定,如 DCOM不適用于非 Windows平臺,RMI也只能在 JVM(Java虛擬機(jī))平臺上工作。
SOA(Service Oriented Architecture)是一種基于網(wǎng)絡(luò)、松耦合、多應(yīng)用集成的技術(shù)解決方案,是目前信息系統(tǒng)技術(shù)發(fā)展的主流方向。按照“軟件就是服務(wù)”的觀點(diǎn),SOA將分布在網(wǎng)絡(luò)中的各種軟件資源看作是不同的服務(wù)內(nèi)容,而不需要考慮每個應(yīng)用是用什么編程語言開發(fā)或在什么操作系統(tǒng)下運(yùn)行,在這種模式下,一個應(yīng)用或軟件的一部分就是一種服務(wù)。通過將注意力放在服務(wù)上,應(yīng)用程序能夠集中起來提供更加豐富、目的性更強(qiáng)的商業(yè)流程。因此,基于 SOA的多參與方的項目協(xié)同管理系統(tǒng)將會更加真實地反映與實際業(yè)務(wù)模型的結(jié)合、更加貼切地滿足多方參與的項目管理現(xiàn)實業(yè)務(wù)需求。
圖1 基于 SOA的多參與方項目協(xié)同管理系統(tǒng)的整體架構(gòu)示意圖
基于 SOA的多參與方項目協(xié)同管理系統(tǒng)的整體架構(gòu)代表了系統(tǒng)的高層次抽象,著眼于多方參與項目管理業(yè)務(wù)應(yīng)用的實際需求,采用松耦合架構(gòu)特點(diǎn),將業(yè)務(wù)應(yīng)用劃分為獨(dú)立的業(yè)務(wù)功能或流程,分為協(xié)同層、流程層、服務(wù)層、服務(wù)組件層、應(yīng)用服務(wù)層、數(shù)據(jù)服務(wù)層等,不同層次的服務(wù)主要通過企業(yè)服務(wù)總線 ESB進(jìn)行調(diào)用,見圖1。
協(xié)同層為多參與方提供了一個統(tǒng)一的信息門戶平臺,使得參與方之間能夠更容易地進(jìn)行協(xié)作,例如即時通訊、查看任務(wù)列表、查看發(fā)布信息、單點(diǎn)登錄等,也能夠把已有數(shù)據(jù)、服務(wù)或界面快速組合到新應(yīng)用中。通過協(xié)同層,用戶不再與多個孤立的系統(tǒng)進(jìn)行交互,而是面對一個有機(jī)的整體。
協(xié)同層由與參與方交互的服務(wù)所組成,主要實現(xiàn)流程、服務(wù)、應(yīng)用和參與方之間的協(xié)同。與所有的服務(wù)一樣,這些服務(wù)接口應(yīng)基于某種標(biāo)準(zhǔn),如 HTTP、SOAP、JMS、WSRP Portlet等,提供對 Ajax、Web Service、Java Client等多種客戶端接入方式的支持,使得這些服務(wù)可以作為共享服務(wù)的一種來進(jìn)行應(yīng)用,比如:業(yè)務(wù)服務(wù)、表示服務(wù)可以是一些簡單的操作(天氣預(yù)報,計算器等),也可以是一些復(fù)雜的流程(合同管理、項目審批等)。
流程層主要實現(xiàn)跨系統(tǒng)之間業(yè)務(wù)狀態(tài)的維護(hù),主要實現(xiàn)項目系統(tǒng)中分散在 ERP或各個參與方信息系統(tǒng)之中流程的自動化,以達(dá)到多參與方不同信息系統(tǒng)之間的集成。例如,定義三個業(yè)務(wù)服務(wù):投標(biāo)服務(wù)、合同服務(wù)以及項目服務(wù),這三個服務(wù)可能來自不同參與方(如投標(biāo)服務(wù)、合同服務(wù)分別來自經(jīng)營部門不同科室系統(tǒng)、項目服務(wù)一些功能服務(wù)可能是第三方提供的專業(yè)化服務(wù)),是相互獨(dú)立的,不存在服務(wù)的調(diào)用關(guān)系,流程層則按照業(yè)務(wù)需求以一定的順序(投標(biāo)、合同、項目)調(diào)用這三個服務(wù),實現(xiàn)一個完整的業(yè)務(wù)流程邏輯。
基于 XML的 Web服務(wù)業(yè)務(wù)流程執(zhí)行語言(WSBPEL,Web Services Business Process Execution Language)定義了一種標(biāo)準(zhǔn)的流程集成語言,以業(yè)務(wù)流程及其參與者的交互為基礎(chǔ)提供了一種快速復(fù)合和協(xié)調(diào)服務(wù)的方法。WSBPEL可以表示用于在多參與方之間交換交互模式的流程(抽象流程)和意在轉(zhuǎn)換內(nèi)部邏輯的流程(具體可執(zhí)行流程)。當(dāng)所需的應(yīng)用程序或復(fù)合以流程為中心,并且涉及到調(diào)用服務(wù)并用流程邏輯和簡單的映射將其連在一起時,WSBPEL是實現(xiàn)此層應(yīng)用程序比較好的方法[3]。
服務(wù)層主要提供支持、公開業(yè)務(wù)的服務(wù),這些服務(wù)將應(yīng)用系統(tǒng)提供的邏輯以標(biāo)準(zhǔn)化的方式暴露出來,從而屏蔽了業(yè)務(wù)邏輯的不同實現(xiàn)方式,使調(diào)用者不需要關(guān)心邏輯的具體實現(xiàn)技術(shù)與細(xì)節(jié)。處于服務(wù)層的服務(wù)可以獲取各個參與方企業(yè)的業(yè)務(wù)功能組件或業(yè)務(wù)單元特定組件,以及第三方提供的專業(yè)服務(wù)組件,以服務(wù)描述的形式具體化他們的接口子集[4]。
服務(wù)層將組件層實現(xiàn)的各個組件按照統(tǒng)一的組件模型裝配成服務(wù)的方式暴露給其他模塊或系統(tǒng)。服務(wù)組件架構(gòu)(Service Component Architecture,SCA)是 IBM和 BEA等公司提出的一種面向服務(wù)的SOA編程模型,用來實現(xiàn)組件接口與傳輸協(xié)議解耦的問題,從而極大簡化業(yè)務(wù)組件的開發(fā)、組裝和部署流程,提高了系統(tǒng)的可移植性。SCA包括的元素主要有:對應(yīng)實現(xiàn)層的服務(wù)組件(Component)、對應(yīng)架構(gòu)層的服務(wù)模塊組件(Composite)及對應(yīng)業(yè)務(wù)層的服務(wù)域組件 (Domain)。服務(wù) (Service)、參考(Reference)、連線(Wire)等輔助性元素是以上三個組件的組成部分。SCA體系結(jié)構(gòu)如圖2所示。
圖2 SCA體系結(jié)構(gòu)圖[5]
服務(wù)組件層由負(fù)責(zé)實現(xiàn)具體業(yè)務(wù)功能和保持公開服務(wù)的服務(wù)質(zhì)量(QoS,Quality of Service)的參與方企業(yè)組件組成。這些組件通過架構(gòu)最佳實踐應(yīng)用程序來負(fù)責(zé)確保服務(wù)等級協(xié)議(SLA,Service-Level Agreement)的一致[4],為某項服務(wù)提供了實現(xiàn)、認(rèn)識、或者操作。
服務(wù)層的各種服務(wù)通過調(diào)用這些組件完成相應(yīng)的工作。按照服務(wù)層中基于 SOA的SCA標(biāo)準(zhǔn),對于服務(wù)組件的實現(xiàn)可以有多種不同方式,如基于Web Service、Java、EJB、RMI、JMS。一般情況下,采用 Web Service的實現(xiàn)方式。Web Service屬于分布式組件的一種,是可互操作的分布式應(yīng)用程序,以一種標(biāo)準(zhǔn)的形式完成企業(yè)內(nèi)部和外部的集成和互調(diào),主要用來支持網(wǎng)絡(luò)上異構(gòu)系統(tǒng)之間的互操作。其體系結(jié)構(gòu)基于三種角色的協(xié)作(服務(wù)提供者、服務(wù)注冊中心或服務(wù)目錄、服務(wù)消費(fèi)者),主要有服務(wù)的發(fā)布、查找及綁定操作。Web Service體系結(jié)構(gòu)如圖3所示。
應(yīng)用服務(wù)層向服務(wù)組件層提供與數(shù)據(jù)庫、操作系統(tǒng)、網(wǎng)絡(luò)資源等交互的所有自定義的或者打包的應(yīng)用程序服務(wù),以供服務(wù)組件層進(jìn)行調(diào)用。這些應(yīng)用服務(wù)可以支持熱插拔的方式部署,也可以使用AOP、依賴注入的方式編程實現(xiàn)。
應(yīng)用服務(wù)層主要包含各參與方企業(yè)遺留系統(tǒng)應(yīng)用服務(wù)(如 CRM和 ERP打包應(yīng)用程序等)、第三方提供的專業(yè)化應(yīng)用服務(wù)(如郵件服務(wù)、短信服務(wù)、視頻服務(wù)等),以及用戶自定義的應(yīng)用服務(wù)(如公文審批、合同會簽、圖紙設(shè)校審程序服務(wù)等)。該層的實現(xiàn)技術(shù)主要基于 J2EE或.net平臺,結(jié)合 REST、AOP、MVC等編程模式,及針對第三方專業(yè)化服務(wù)的 Web服務(wù)封裝等方式進(jìn)行應(yīng)用服務(wù)實現(xiàn)。
數(shù)據(jù)服務(wù)層主要實現(xiàn)系統(tǒng)的數(shù)據(jù)整合,需要通過一個數(shù)據(jù)編程模式統(tǒng)一對不同數(shù)據(jù)源(比如數(shù)據(jù)庫、Web服務(wù)、輕量級目錄訪問協(xié)議、遺留應(yīng)用程序等)的訪問,特別是針對不同參與方系統(tǒng)遺留數(shù)據(jù)的統(tǒng)一訪問,完成不同參與方系統(tǒng)數(shù)據(jù)源的數(shù)據(jù)標(biāo)準(zhǔn)化(數(shù)據(jù)標(biāo)準(zhǔn)化就是通過實現(xiàn)統(tǒng)一的數(shù)據(jù)接口,以統(tǒng)一的數(shù)據(jù)視圖展示數(shù)據(jù);提供統(tǒng)一的數(shù)據(jù)模型機(jī)制,實現(xiàn)數(shù)據(jù)的持久化、查找等功能,屏蔽不同的數(shù)據(jù)源[5])。
服務(wù)數(shù)據(jù)對象(SDO,Service Data Objects)是一種針對在不同的數(shù)據(jù)源之間使用統(tǒng)一的數(shù)據(jù)編程模型的規(guī)范標(biāo)準(zhǔn),統(tǒng)一了不同類型數(shù)據(jù)源的數(shù)據(jù)編程,提供了數(shù)據(jù)編程架構(gòu)和 API。SDO使得開發(fā)人員可以對不同的數(shù)據(jù)源以統(tǒng)一的方式訪問和操縱數(shù)據(jù),從而大大簡化了開發(fā)過程。SDO基本結(jié)構(gòu)如圖4所示。
多參與方項目協(xié)同管理主要目的是實現(xiàn)各個參與方之間的高效協(xié)作,因此多參與方項目協(xié)同管理系統(tǒng)的架構(gòu)機(jī)制實現(xiàn)要點(diǎn)在于多參與方項目信息門戶的實現(xiàn),以及多參與方項目權(quán)限管理的實現(xiàn)。
傳統(tǒng)意義上的項目信息門戶采用緊耦合的方式,門戶中的所有功能都緊密集成到一個門戶系統(tǒng)中,門戶功能模塊與其他系統(tǒng)相互隔裂,并且當(dāng)需要在門戶中增加或者刪除個別功能時,需要對門戶系統(tǒng)作較大幅度的調(diào)整。基于 SOA的多參與方項目信息門戶具有良好的用戶體驗,通過用戶可定制的內(nèi)容展現(xiàn)方式,提供參與方企業(yè)員工間、參與方企業(yè)和客戶、參與方企業(yè)之間良好的連通性,使得項目信息門戶在數(shù)據(jù)共享、應(yīng)用系統(tǒng)間通信、及第三方的專業(yè)服務(wù)融入等方面具有較好的聚合效應(yīng),實現(xiàn)豐富、高效、一致的應(yīng)用界面。
基于 SOA架構(gòu)的多參與方的項目信息門戶實現(xiàn)展現(xiàn)邏輯和業(yè)務(wù)邏輯的分離,使得用戶界面中的應(yīng)用符合 SOA的可重用性和松散耦合原則。通過采用這種方式,當(dāng)新服務(wù)和復(fù)合應(yīng)用程序不斷產(chǎn)生時,門戶能夠繼續(xù)為終端用戶提供所需的用戶界面并保持概念一致性[7]。其架構(gòu)框圖如圖5所示。
圖5 基于SOA的多參與方項目信息門戶實現(xiàn)機(jī)制示意圖
該架構(gòu)主要結(jié)合了當(dāng)前主流的 Web2.0實現(xiàn)技術(shù),其中:
(1)展現(xiàn)邏輯層
主要作用是實現(xiàn)門戶與用戶進(jìn)行交互并展示獨(dú)立 IT服務(wù)視圖的功能。使用的主要技術(shù)如FLEX、Ajax、JavaFX、Mash-up(網(wǎng)站采用混合技術(shù)搭建)等可以提供良好的用戶體驗,用戶可以按照個人偏好自行定義表現(xiàn)層;使得門戶能支持同步/異步的通訊機(jī)制及訪問藍(lán)牙通訊、相機(jī)和 GPS等近似桌面系統(tǒng)的功能。
(2)訪問通訊機(jī)制層
主要作用是實現(xiàn)展現(xiàn)邏輯層與業(yè)務(wù)邏輯相分離。傳統(tǒng)的項目信息門戶由于基于緊耦合模式,其訪問通訊機(jī)制層概念相對模糊。結(jié)合 SOA架構(gòu)理念,該層主要實現(xiàn)多參與方應(yīng)用系統(tǒng)之間接口通訊,提供展現(xiàn)邏輯層與業(yè)務(wù)邏輯進(jìn)行通訊的相關(guān)協(xié)議支持。如針對 Portlet、Web服務(wù)、WSBPEL業(yè)務(wù)流程服務(wù)通訊的 SOAP協(xié)議,基于 REST思想的面向服務(wù) UI通訊的 HTTP協(xié)議,及傳統(tǒng)企業(yè)集成技術(shù)(EAI)通訊機(jī)制 CORBA、DCOM、RMI等。
(3)業(yè)務(wù)邏輯層
主要作用是實現(xiàn)展現(xiàn)邏輯層所需求的具體業(yè)務(wù)功能并提供獨(dú)立 IT服務(wù),如第三方提供的專業(yè)化服務(wù)、互聯(lián)網(wǎng)公共服務(wù)等。
多參與方項目權(quán)限管理的關(guān)鍵是建立有效的安全訪問控制機(jī)制,結(jié)合多參與方項目業(yè)務(wù)特點(diǎn)與實際需求,本文采用基于角色的面向服務(wù)架構(gòu)的訪問控制機(jī)制。
基于角色的訪問控制模型(RBAC)目前是國際上流行的先進(jìn)的訪問控制方法[8],是一種靈活、高效的訪問控制方法。RBAC通過在用戶和權(quán)限之間引入角色的概念,使系統(tǒng)管理員可以按著實際需要將各個用戶定義為不同的角色,并設(shè)置和角色相對應(yīng)的訪問權(quán)限,這樣訪問權(quán)限和角色相關(guān)聯(lián),角色再與用戶關(guān)聯(lián),從而實現(xiàn)了用戶與訪問權(quán)限的邏輯分離,RBAC基本模型見圖6。
圖6 RBAC基本模型示意圖
圖7 基于 SOA的多參與方項目權(quán)限管理實現(xiàn)機(jī)制示意圖
多參與方參與的項目協(xié)同管理系統(tǒng)需要協(xié)調(diào)處理多個不同參與方及眾多系統(tǒng)資源,設(shè)計并實現(xiàn)基于 SOA的多參與方參與項目的項目權(quán)限管理功能,可以使得用戶在異構(gòu)的、跨域的環(huán)境中能夠“一次登錄,處處通行”,能有效避免各參與方在系統(tǒng)之間重復(fù)的登錄和冗余的用戶權(quán)限驗證。多參與方項目權(quán)限管理采用面向服務(wù)架構(gòu)的理念,將公共的業(yè)務(wù)“權(quán)限管理模塊”包裝成獨(dú)立的 Web服務(wù),并集成到企業(yè)服務(wù)總線中。異構(gòu)的系統(tǒng)可以通過企業(yè)服務(wù)總線代理訪問“權(quán)限管理服務(wù)”。在服務(wù)接口不變的情況下,權(quán)限管理服務(wù)與調(diào)用它的業(yè)務(wù)系統(tǒng)可以獨(dú)立演化。因此整個架構(gòu)中的系統(tǒng)是平臺無關(guān)的,松耦合的,并且“權(quán)限管理服務(wù)”可重用,如圖7所示。
本文主要研究了基于 SOA的多參與方項目協(xié)同管理系統(tǒng)的架構(gòu)機(jī)制,分析了基于 SOA的多參與方項目協(xié)同管理系統(tǒng)的實現(xiàn)技術(shù),詳細(xì)闡述了多參與方項目協(xié)同管理系統(tǒng)中信息門戶及權(quán)限管理基于 SOA的實現(xiàn)機(jī)制及相關(guān)技術(shù)。
結(jié)合國家“十一五”科技支撐計劃子課題“勘察設(shè)計企業(yè)多參與方參與的項目協(xié)同管理系統(tǒng)”的研究成果,當(dāng)前勘察設(shè)計企業(yè)正逐步在向總承包模式過渡,越來越多企業(yè)為了整合優(yōu)勢資源,需要將自身某個專業(yè)外包給其他企業(yè),或者憑借優(yōu)勢專業(yè)服務(wù)而加入另一個多方參與的項目。工程總承包模式已是當(dāng)前工程建設(shè)項目的一種生產(chǎn)模式,而多方參與的項目管理是傳統(tǒng)項目過渡到工程總承包項目的前提。研究多參與方的項目管理系統(tǒng)架構(gòu)機(jī)制,對于實施工程總承包模式的項目管理有一定的參考與借鑒意義。
[1]高孟.虛擬企業(yè)業(yè)務(wù)流程構(gòu)建技術(shù)研究[D].濟(jì)南:山東大學(xué)碩士學(xué)位論文,2009.4
[2]林光炎.基于 SOA的集成架構(gòu)研究及在浙江移動CRM的應(yīng)用[D].杭州:浙江工商大學(xué)碩士學(xué)位論文,2009.2
[3]余浩,朱成,丁鵬.SOA實踐——構(gòu)建基于 Jave Web服務(wù)和BPEL的企業(yè)級應(yīng)用[M].北京:電子工業(yè)出版社,2009
[4]佟偉.基于 SCA的輕量級 BPEL引擎的設(shè)計與實現(xiàn)[D].北京:北京工業(yè)大學(xué)碩士學(xué)位論文,2008.4
[5]焦烈焱,馮興智,楊洪波.SOA中國路線圖(實施版)[M].北京:清華大學(xué)出版社,2009
[6]鄭冀之.面向服務(wù)架構(gòu)的企業(yè)集成設(shè)計與研究[D].華東師范大學(xué),2008.12
[7]費(fèi)圣英,馬蘇龍,魯庭瑞,等.電力企業(yè)信息化 SOA實踐[D].南京:南京大學(xué)出版社,2007
[8]孫群.多組織多用戶條件下基于角色的訪問控制[D].濟(jì)南:山東大學(xué)碩士學(xué)位論文,2005.4
[9]馬智亮,羅小春,李志新.基于萬維網(wǎng)的工程項目管理系統(tǒng)綜述[J].土木工程學(xué)報,2006,39(10):117-126..
[10]王靜,陳岱林,梁曉.勘察設(shè)計企業(yè)信息化實施方案探討[J].施工技術(shù),2005,34(2):16-18.
[11]文俊浩,宋鵬飛,田清.基于 SOA的勘察設(shè)計企業(yè)業(yè)務(wù)架構(gòu)與信息集成平臺的研究與應(yīng)用[J].北京:土木建筑工程信息技術(shù).2009,1(1):24-28.
[12]Tiejun Gu,Bingyong Tang,YiLi.Study on Virtual Work flow of Collaborative Commerce Oriented Web Services Composition Path Optimization Algorithm[C].2009 International Conference on In formation Technology and Computer Science.Wuxi,China:[s.n.],2009:142-145.
[13]童曉陽.基于Web服務(wù)的分布式廣域服務(wù)協(xié)作框架及原型的初步研究[J].計算機(jī)集成制造系統(tǒng),2007,13(6):1184-1190.
[14]Ali Arsanjani.基于服務(wù)的建模和架構(gòu).[EB/OL].(2004-12-18)[2010-05-17]http://www.um l.org.cn/zjjs/200608044.htm