劉建濤 李春雷 楊河山
勝利油田分公司地質(zhì)科學(xué)研究院,山東東營 257015
發(fā)在線、巖心發(fā)布系統(tǒng)、實驗數(shù)據(jù)發(fā)布系統(tǒng)、開發(fā)GIS、油藏動態(tài)分析軟件、開發(fā)決策支持系統(tǒng)、勘探?jīng)Q策支持系統(tǒng)等大量的特色軟件,而且在各自的業(yè)務(wù)領(lǐng)域取得了較好的應(yīng)用效果,但是,隨著油田勘探開發(fā)業(yè)務(wù)水平的不斷提高和信息化工作的不斷深入,“跨學(xué)科的復(fù)合型人才”、“勘探開發(fā)一體化應(yīng)用”等時髦詞匯被推上日程,油田迫切希望以現(xiàn)有的應(yīng)用軟件為基礎(chǔ),以最小的投資解決勘探開發(fā)業(yè)務(wù)軟件的應(yīng)用集成問題。
目前,主流的集成解決方案是基于SOA思想的ESB平臺架構(gòu),它以數(shù)據(jù)整合為基礎(chǔ),解決整個企業(yè)完整業(yè)務(wù)流程中的應(yīng)用集成問題,投資成本高,見效周期長。插件式集成解決方案能充分利用現(xiàn)有的應(yīng)用軟件資源,即把應(yīng)用軟件改造成插件掛接到集成框架中,實現(xiàn)勘探開發(fā)一體化的應(yīng)用集成,該解決方案綜合成本低、實現(xiàn)周期短,而且集成框架具有較好的可擴(kuò)展性,能夠滿足油田勘探開發(fā)綜合研究迫切的一體化應(yīng)用需求。
國際上不同的學(xué)術(shù)團(tuán)體、油公司對未來數(shù)字化油田的提法各異,而且隨著技術(shù)的進(jìn)步和應(yīng)用的深入,數(shù)字油氣田的概念也處于不斷的發(fā)展之中,因此,沒有一個確切的概念,根據(jù)勝利油田信息化建設(shè)的特點,將數(shù)字油氣田定義為:以油田為研究對象,以計算機(jī)和高速網(wǎng)絡(luò)為載體,以空間坐標(biāo)信息為參考,將油田的生產(chǎn)和管理的多種數(shù)據(jù)進(jìn)行高度融合,利用數(shù)字虛擬等技術(shù)對數(shù)據(jù)進(jìn)行多維可視化表達(dá),實現(xiàn)橫向上涵蓋整個油田地域,縱向上油田從地面到地下的多層次信息定位,提高油田總體數(shù)據(jù)查詢和信息分析能力,并用集成技術(shù)實現(xiàn)功能完善的勘探開發(fā)一體化應(yīng)用系統(tǒng),以支持油田勘探開發(fā)核心業(yè)務(wù)的決策分析,提高數(shù)據(jù)利用率、數(shù)據(jù)查詢效率和決策水平[2]。
數(shù)字油氣田概念的定位決定了數(shù)字油氣田建設(shè)的主要內(nèi)容包括:數(shù)據(jù)集成、地下關(guān)鍵信息的虛擬、以平面GIS、三維可視化技術(shù)、數(shù)據(jù)查詢?yōu)榛A(chǔ)的信息綜合展示、應(yīng)用集成、實時監(jiān)測、實時分析決策、實時優(yōu)化等。這些建設(shè)內(nèi)容涵蓋了多源異構(gòu)數(shù)據(jù)集成、業(yè)務(wù)軟件應(yīng)用集成、關(guān)鍵地質(zhì)體的三維可視化、實時分析決策、智能化等關(guān)鍵技術(shù);同時還包括了一項重要的應(yīng)用成果:數(shù)字油氣田應(yīng)用系統(tǒng),它是集成了通用查詢、主題查詢、定制查詢、三維可視化導(dǎo)航查詢等多種數(shù)據(jù)服務(wù)方式,以及開發(fā)方案編制、油藏動態(tài)分析、勘探井位部署、生產(chǎn)過程決策等油田勘探開發(fā)主體業(yè)務(wù)功能的綜合型應(yīng)用系統(tǒng)。
數(shù)字油氣田建設(shè)是一項復(fù)雜的、長期的工程,需要分階段、有步驟的進(jìn)行,數(shù)字油氣田技術(shù)的升級換代可以劃分為三個層次:一是信息資源整合,實現(xiàn)靈活多樣、快捷便利的數(shù)據(jù)綜合服務(wù);二是在攻克三維可視化、GIS導(dǎo)航、應(yīng)用集成等關(guān)鍵技術(shù)的基礎(chǔ)上,實現(xiàn)勘探開發(fā)一體化的業(yè)務(wù)應(yīng)用;三是利用實時監(jiān)測、實時分析決策、實時優(yōu)化等高端技術(shù),實現(xiàn)智能化數(shù)字油氣田。
目前,勝利油田已建立了完善的數(shù)據(jù)存儲和數(shù)據(jù)應(yīng)用體系,并儲備了信息資源整合、數(shù)據(jù)綜合服務(wù)、三維可視化表示、GIS導(dǎo)航等關(guān)鍵技術(shù),但各業(yè)務(wù)應(yīng)用相對獨(dú)立,導(dǎo)致勘探開發(fā)過程中的業(yè)務(wù)銜接不好,可見,勝利的數(shù)字油田建設(shè)正處于勘探開發(fā)業(yè)務(wù)應(yīng)用集成的關(guān)鍵時期。
針對數(shù)字油氣田建設(shè)過程中的集成應(yīng)用需求,設(shè)計了插件式集成解決方案,它適合解決獨(dú)立分散、業(yè)務(wù)功能專一的各種業(yè)務(wù)軟件的集成問題,而且實現(xiàn)快、成本相對較低、可擴(kuò)展性好。
插件是系統(tǒng)功能的表現(xiàn),通常以dll或COM組件的形式存在。插件式集成是把獨(dú)立、分散的應(yīng)用程序或服務(wù)改造成一個獨(dú)立的插件,集成框架預(yù)先留出接口,把插件掛接在集成框架上,這樣,這些插件應(yīng)用程序就能裝載到同一個服務(wù)容器內(nèi),使它們能夠在統(tǒng)一的界面平臺上運(yùn)行,用戶體驗就像是同一個應(yīng)用系統(tǒng)里實現(xiàn)了不同功能,同時,通過插件通訊技術(shù)實現(xiàn)各個應(yīng)用程序間的數(shù)據(jù)交換和消息通訊。插件式集成框架是實現(xiàn)系統(tǒng)集成功能的成熟的框架體系,它負(fù)責(zé)對插件提供公共的服務(wù),并實現(xiàn)對插件的管理。
插件式集成技術(shù)采用的是面向?qū)ο蠛兔嫦蚍?wù)的思想,它為應(yīng)用程序的功能擴(kuò)展提供的無限的想象空間。一個應(yīng)用程序,無論前期做了多少的市場調(diào)查,需求分析做的多么完美,也只是迎合一部分人的期望,甚至只能迎合一部分人的一部分期望,或者一部分人在某一時間的一部分期望。而插件式集成框架能在提供新功能時不必重新發(fā)布程序,人們也可以根據(jù)自己的需要來開發(fā)新的功能在插件集成框架中擴(kuò)展來滿足自己的業(yè)務(wù)功能需求。
插件式集成解決方案框圖如圖1所示,它主要包括兩部分,一部分是插件式集成框架;另一部分是插件。服務(wù)端采用云技術(shù)實現(xiàn)對插件服務(wù)的管理;用戶通過統(tǒng)一交互界面使用各種插件應(yīng)用程序的功能,統(tǒng)一交互界面在表現(xiàn)形式上就是一個包裝好的外殼,實現(xiàn)插件的裝載、卸載,它的內(nèi)部實現(xiàn)插件通訊的細(xì)節(jié),并為插件提供界面風(fēng)格、窗體樣式等各種公共服務(wù);外部應(yīng)用程序通過實現(xiàn)插件接口功能、訂閱和發(fā)布消息、設(shè)置啟動界面等工作后編譯成插件,即可裝載到集成平臺上,不用時可隨時卸載[1]。
圖1 插件集成解決方案框圖
良好的插件式集成框架的特點是:插件的裝載卸載方便、插件程序改造的代碼改動少、能支持不同粒度的服務(wù)或應(yīng)用的集成、功能重用性好、可擴(kuò)展性好、安裝部署容易。插件式集成框架解決了訂立契約、加載插件、提供公共服務(wù)、管理插件、進(jìn)行通訊等五個方面的技術(shù)問題。
(1)通過接口訂立契約,使遵循規(guī)則的插件能夠被加載
契約是集成框架與插件之間進(jìn)行交互的依據(jù)和憑證,框架必須聲明有什么功能可被插件使用,插件必須滿足何種條件才能被加載。反之,插件必須要知道框架提供什么樣的功能,才能將自己的功能融入到框架體系中。
通常使用接口或抽象類訂立契約,在插件式集成框架中使用接口訂立契約,因為集成框架是在滿足服務(wù)的基礎(chǔ)上來提供附加的插件功能,就這一點來說,接口更靈活,更容易擴(kuò)展。
(2)動靜態(tài)加載機(jī)制相結(jié)合實現(xiàn)插件的加載
靜態(tài)插件加載機(jī)制是客戶端應(yīng)用開發(fā)人員將自己特色的服務(wù)(非共享式服務(wù))采用配置文件添加插件應(yīng)用,客戶端在集成框架啟動之前分解該XML配置文件,加載服務(wù)。下面是單井信息集成服務(wù)插件靜態(tài)加載的配置代碼。
通用的基礎(chǔ)服務(wù)則由服務(wù)器統(tǒng)一提供,原理結(jié)構(gòu)圖如圖2所示。在集成框架啟動之前,桌面端門戶的服務(wù)容器通過遠(yuǎn)程服務(wù)加載器interfaceConfigLoader和Dispatcher調(diào)用指定的信道ICommonicationChannel到通用服務(wù)器抽取服務(wù)信息。
插件動態(tài)加載機(jī)制是在程序集運(yùn)行時加載插件,將插件下載到客戶端指定的目錄,集成框架啟動時,搜索插件并實現(xiàn)加載。
(3)通過服務(wù)容器提供公共服務(wù)
應(yīng)用程序向插件提供服務(wù)有兩種方式,一種是直接在集成框架程序接口中聲明屬性或者方法,一種是將集成框架接口聲明成一個服務(wù)容器。一般來說,明確的功能就在接口中直接聲明成屬性或者方法,否則將集成框架接口聲明成一個服務(wù)容器,以方便插入更多的服務(wù)功能,提高應(yīng)用程序的可擴(kuò)展性。在集成框架中定義一個服務(wù)根容器,各個服務(wù)容器構(gòu)成了一個服務(wù)容器樹,每一個節(jié)點的服務(wù)都可以一直向上傳遞,直到根部,而每一個節(jié)點請求服務(wù)的時候,總是可以從根節(jié)點獲得。這個根節(jié)點好比一個服務(wù)中心,它匯總了所有可提供的服務(wù),當(dāng)某個對象要請求服務(wù)時,只需要向根結(jié)點發(fā)送要獲得的服務(wù),根結(jié)點就可以把服務(wù)的對象傳遞給它。
(4)通過訂閱、發(fā)布事件實現(xiàn)插件間通訊
集成框架為系統(tǒng)提供了插件間通訊的接口,插件模塊可以使用BaseUseCase類提供的AddPublication(string idName,object publisher, string eventName)、AddSubscription(string idName, object subscriber, string methodName)方法來添加發(fā)布和訂閱事件,采用RemovePublication(string idName,object publisher, string eventName)、RemoveSubscription(string idName,object subscriber, string methodName)移除發(fā)布和訂閱事件。
通過在插件的SampleUseCase類中添加對InstallEvents()方法的重載將事件訂閱到事件消息中,示例代碼如下:
它是將E v e n t s命名空間下的R e c e i v e C a b E v e n t對象的ReceiveSignalsBullet方法訂閱到了cab事件消息中。
為了使這個消息生效,在另一個插件中發(fā)布cab事件即可,示例代碼如下:
圖2 通用服務(wù)靜態(tài)加載機(jī)制
圖3 插件實現(xiàn)接口模型
當(dāng)兩個插件都添加到客戶端框架時,框架會將插件中的事件進(jìn)行掛接。框架會將SignalsBullet事件與SampleUseCase中的ReceiveSignalsBullet方法根據(jù)"cab"標(biāo)識自動連接在一起,示例代碼如下:
事件,執(zhí)行ReceiveCabEvent(),.ReceiveSignalsBullet方法。
(5)FTP與數(shù)據(jù)表相結(jié)合的方式實現(xiàn)插件管理。
將所有的插件文件夾上傳FTP服務(wù)器上,同時插件相關(guān)信息的描述存儲在oracle數(shù)據(jù)表中,通過用戶信息、插件信息、插件文件路徑和插件名稱的同步修改來實現(xiàn)插件的統(tǒng)一管理
應(yīng)用軟件必須遵循一定的規(guī)則才能成為插件,并加載到集成框架中,這一過程即為插件的實現(xiàn)過程。由于集成框架封裝了大量的功能代碼,并拋出了插件接口、服務(wù)接口、通訊接口等,使得應(yīng)用程序的插件代碼改造變得非常容易,插件接口實現(xiàn)模型圖如圖3所示。只需在應(yīng)用程序源代碼中添加插件類,實現(xiàn)插件接口的加載、卸載和啟動三個方法,即可實現(xiàn)插件;若要實現(xiàn)插件間的消息通訊,可以通過前面介紹的訂閱和發(fā)布消息事件的方式來實現(xiàn)。
插件的部署采用的是ftp服務(wù)的方式。每個應(yīng)用程序生產(chǎn)的插件是一個或多個dll程序,有的復(fù)雜的插件還包括一些xml、圖片等資源文件,因此,一個特定功能的插件的全部資源保存在ftp的一個文件夾中,用戶注冊安裝插件時,從ftp服務(wù)器上一次性下載該文件夾,客戶端的集成框架啟動時自動搜索可用的插件。
插件的使用管理結(jié)合集成系統(tǒng)的用戶管理,根據(jù)用戶的權(quán)限,客戶端遵從插件申請、審核、注冊安裝、卸載等基本流程,服務(wù)器端實現(xiàn)對插件基本信息的管理。
根據(jù)數(shù)字油氣田應(yīng)用系統(tǒng)的業(yè)務(wù)應(yīng)用需求,結(jié)合勝利油田現(xiàn)有應(yīng)用系統(tǒng)的使用狀況,利用插件式集成技術(shù)對開發(fā)井網(wǎng)部署、新區(qū)規(guī)劃方案設(shè)計決策、新區(qū)產(chǎn)能建設(shè)方案決策、老區(qū)效果及潛力分析、油藏開發(fā)動態(tài)分析、探井生產(chǎn)運(yùn)行管理、開發(fā)案例庫、勘探井位部署、勘探生產(chǎn)過程決策等12個模塊進(jìn)行了集成。集成效果如圖4、圖5所示。
數(shù)字油氣田應(yīng)用系統(tǒng)實現(xiàn)了勘探開發(fā)信息綜合展示和業(yè)務(wù)的一體化應(yīng)用。數(shù)據(jù)綜合服務(wù)提供了主題查詢、用戶定制查詢、主題查詢、三維導(dǎo)航查詢等多種查詢手段,提高了數(shù)據(jù)查詢效率和靈活性??碧介_發(fā)決策支持功能涵蓋了勘探井位部署、探井生產(chǎn)管理、勘探生產(chǎn)過程決策、開發(fā)井位部署、油田開發(fā)方案設(shè)計等油田的主體業(yè)務(wù),能夠滿足勘探開發(fā)綜合研究的業(yè)務(wù)應(yīng)用需求,具有較好的推廣應(yīng)用前景。目前井網(wǎng)部署、新區(qū)規(guī)劃方案決策、新區(qū)產(chǎn)能建設(shè)方案決策、老區(qū)開發(fā)效果分析、勘探井位部署、勘探生產(chǎn)過程決策、開發(fā)案例庫等7個應(yīng)用模塊已在油田生產(chǎn)中實際應(yīng)用,并初見成效。
圖4 集成模塊注冊安裝界面
圖5 集成運(yùn)行效果
插件式集成框架能很好的解決分散獨(dú)立的應(yīng)用軟件的集成問題,而且具有成本低、實現(xiàn)周期短、可擴(kuò)展性好等優(yōu)點,通過插件式集成解決方案在數(shù)字油氣田建設(shè)中的實例應(yīng)用所取得的效果,進(jìn)一步表明插件式集成框架的合理性、有效性和實用性。此外,插件式集成框架本身與石油行業(yè)的特點無關(guān),具有普遍適用性,能夠推廣應(yīng)用到其它領(lǐng)域。
[1]祖兆研.基于插件的軟件架構(gòu)原理分析.中國科技論文在線
[2]嚴(yán)坤,倪桂強(qiáng)等.基于AOM和插件模式的輕量級框架研究.計算機(jī)技術(shù)與發(fā)展, 2010,(10)
[3]陳翥.插件體系結(jié)構(gòu)軟件的原理和實現(xiàn).科技傳播, 2010, (18)
[4]王權(quán),楊斌,張萬里.數(shù)字油田模式探討
[5]龍穎波,何貞銘,彭李.數(shù)字油田理論探討.信息系統(tǒng)工程,2010,(3)
[6]沈建林.數(shù)字新疆油田的建設(shè)實踐.數(shù)字石油和化工,2008,(1)