顧娟,張楠楠
(大慶油田有限責(zé)任公司勘探開(kāi)發(fā)研究院,黑龍江 大慶 163712)
油田開(kāi)發(fā)生產(chǎn)管理對(duì)數(shù)據(jù)應(yīng)用的深度和廣度不斷擴(kuò)展,隨時(shí)出現(xiàn)大量的數(shù)據(jù)服務(wù)需求。對(duì)于信息人員來(lái)說(shuō),業(yè)務(wù)需求變更、數(shù)據(jù)結(jié)構(gòu)變化,報(bào)表要不斷升級(jí);對(duì)于業(yè)務(wù)人員來(lái)說(shuō)裝不完的業(yè)務(wù)系統(tǒng),各類報(bào)表散落在各個(gè)系統(tǒng)中,離散化嚴(yán)重,應(yīng)用成本高,依然感覺(jué)不能滿足自己的需求。需要通過(guò)信息技術(shù)與管理模式、業(yè)務(wù)模式深度融合,充分挖掘和有效利用數(shù)據(jù),提高開(kāi)發(fā)生產(chǎn)管理指令執(zhí)行效率、判斷依據(jù)精準(zhǔn)率。
結(jié)構(gòu)化數(shù)據(jù)應(yīng)用服務(wù)常規(guī)模式是由信息人員提供固定的應(yīng)用樣式,實(shí)現(xiàn)的主流方式有兩類:一類是信息人員與業(yè)務(wù)人員協(xié)作完成的編程定制方式,即自主開(kāi)發(fā)方式,面對(duì)日益復(fù)雜多變的業(yè)務(wù)需求,自主開(kāi)發(fā)方式效率低,已有系統(tǒng)應(yīng)用功能高度耦合,程序代碼復(fù)用程度差;一類是基于面向通用性的BI(商業(yè)智能)報(bào)表工具,其功能雖然強(qiáng)大,但操作門檻高、學(xué)習(xí)成本高,只能面向信息人員。無(wú)論自主開(kāi)發(fā)還是商業(yè)報(bào)表工具均需要信息人員專人維護(hù)開(kāi)發(fā),且都不能很好地適應(yīng)和快速地響應(yīng)業(yè)務(wù)需求。針對(duì)以上問(wèn)題,結(jié)合兩種
數(shù)據(jù)服務(wù)模式的優(yōu)勢(shì),將需要信息人員進(jìn)行的數(shù)據(jù)組織工作由基于模型驅(qū)動(dòng)模式替代,利用抽取通用事件,分離邏輯與功能技術(shù),設(shè)計(jì)開(kāi)發(fā)基于Web的自定義報(bào)表工具,使得在信息人員完成數(shù)據(jù)資源目錄建設(shè)前提下,業(yè)務(wù)人員能夠借助報(bào)表工具,通過(guò)選擇樹(shù)型結(jié)構(gòu)展示的數(shù)據(jù)資源,進(jìn)行簡(jiǎn)單的配置后即可獨(dú)立自主地定制出所需的統(tǒng)計(jì)或查詢報(bào)表。
功能上基于模型的報(bào)表定制工具要實(shí)現(xiàn)業(yè)務(wù)人員使用時(shí)不需要安裝任何軟件,通過(guò)支持的瀏覽器,在Web端實(shí)現(xiàn)報(bào)表定制和瀏覽。按照業(yè)務(wù)人員的角色查詢被授予訪問(wèn)權(quán)限的數(shù)據(jù)、分配對(duì)應(yīng)的操作權(quán)限,且能夠按照業(yè)務(wù)需求獨(dú)自完成報(bào)表定制工作。
基本功能需求有:
(1)數(shù)據(jù)挖掘過(guò)程中,業(yè)務(wù)人員不需要掌握數(shù)據(jù)庫(kù)相關(guān)技術(shù),根據(jù)選擇的業(yè)務(wù)指標(biāo),動(dòng)態(tài)生成訪問(wèn)數(shù)據(jù)庫(kù)的SQL。自動(dòng)獲取相關(guān)數(shù)據(jù)并呈現(xiàn),支持多維度數(shù)據(jù)分類、匯總及鉆取。
(2)將數(shù)據(jù)庫(kù)中的分析指標(biāo),以業(yè)務(wù)人員熟悉的分類樹(shù)方式展示出來(lái)。業(yè)務(wù)人員可選擇自己關(guān)注的任一生產(chǎn)指標(biāo)項(xiàng),以零代碼、全可視化方式進(jìn)行數(shù)據(jù)的多維度挖掘分析、統(tǒng)計(jì),分析手段涵蓋分類統(tǒng)計(jì)、匯總、同比、環(huán)比、趨勢(shì)等。支持圖表混排、支持?jǐn)?shù)據(jù)界限值預(yù)警,支持?jǐn)?shù)據(jù)穿透,支持?jǐn)?shù)據(jù)多維度統(tǒng)計(jì),支持個(gè)性化調(diào)整。
報(bào)表定制工具采用B/S模式,通過(guò)可視化定制和數(shù)據(jù)挖掘有機(jī)結(jié)合,實(shí)現(xiàn)功能性、易用性及定制效率的均衡。報(bào)表以模型作為底層數(shù)據(jù)驅(qū)動(dòng),以報(bào)表控件作為展示方式,實(shí)現(xiàn)數(shù)據(jù)的挖掘功能。報(bào)表功能永遠(yuǎn)不可能完全滿足業(yè)務(wù)要求,因此將報(bào)表組件作為整體控件,被外部模塊編程調(diào)用,報(bào)表本身提供接入接口,在報(bào)表控件無(wú)法滿足需求時(shí),用戶可以掛接外部模塊,實(shí)現(xiàn)功能的擴(kuò)展。
報(bào)表定制工具采用N層體系架構(gòu),具有易用性、良好的穩(wěn)定性、安全性和可擴(kuò)展性。體系結(jié)構(gòu)圖如圖1所示。
圖1 報(bào)表體系結(jié)構(gòu)圖
數(shù)據(jù)層:負(fù)責(zé)連接報(bào)表的各種數(shù)據(jù)源??梢允侨我鈹?shù)據(jù)模型的關(guān)系型數(shù)據(jù)庫(kù),多源異構(gòu)數(shù)據(jù)庫(kù)可映射到項(xiàng)目庫(kù)中統(tǒng)一使用。數(shù)據(jù)映射的方式包括視圖、同義詞、數(shù)據(jù)遷移等不同的模式,實(shí)現(xiàn)數(shù)據(jù)的流轉(zhuǎn)控制。
模型層:數(shù)據(jù)源數(shù)據(jù)模型空間關(guān)系,即數(shù)據(jù)表信息、數(shù)據(jù)表所包含數(shù)據(jù)項(xiàng)信息、數(shù)據(jù)表間關(guān)聯(lián)關(guān)系、主從關(guān)系、維度信息等。定制報(bào)表時(shí)模型驅(qū)動(dòng)引擎基于該空間關(guān)系,動(dòng)態(tài)組織SQL驅(qū)動(dòng)數(shù)據(jù)。
引擎層:報(bào)表定制功能的底層驅(qū)動(dòng),提供數(shù)據(jù)、邏輯、功能、界面的驅(qū)動(dòng),不同的引擎服務(wù)于不同的功能。引擎層可通過(guò)模型層訪問(wèn)數(shù)據(jù),也可直接訪問(wèn)數(shù)據(jù)。
工具層:在引擎層和模型層基礎(chǔ)上,實(shí)現(xiàn)零代碼、全可視化方式進(jìn)行圖表定制。
2.2.1 基于數(shù)據(jù)模型驅(qū)動(dòng)
報(bào)表業(yè)務(wù)邏輯可用類似結(jié)構(gòu)化查詢語(yǔ)言(:Structured Query Language, SQL)的形式描述,利用其數(shù)據(jù)查詢語(yǔ)言(Data Query Language, DQL)的查詢功能處理報(bào)表數(shù)據(jù)間的邏輯關(guān)系。要實(shí)現(xiàn)靈活的條件定制、分組統(tǒng)計(jì),其數(shù)據(jù)核心就是對(duì)獲取SQL的重新組織,但SQL語(yǔ)句是一個(gè)非結(jié)構(gòu)化對(duì)象,需要將報(bào)表數(shù)據(jù)源結(jié)構(gòu)映射到一個(gè)空間數(shù)據(jù)結(jié)構(gòu)中,建立數(shù)據(jù)模型對(duì)象關(guān)系,以此驅(qū)動(dòng)后端報(bào)表實(shí)現(xiàn)SQL動(dòng)態(tài)組織,即基于數(shù)據(jù)模型驅(qū)動(dòng)。
空間數(shù)據(jù)模型是以計(jì)算機(jī)能夠接受和處理的數(shù)據(jù)形式,為了反映數(shù)據(jù)庫(kù)實(shí)體的某些結(jié)構(gòu)特性和行為功能,按一定的方案建立起來(lái)的數(shù)據(jù)邏輯組織方式,是對(duì)實(shí)現(xiàn)數(shù)據(jù)庫(kù)結(jié)構(gòu)及業(yè)務(wù)邏輯的抽象表達(dá)。技術(shù)思路是將數(shù)據(jù)模型中的字段、表、業(yè)務(wù)鏈、業(yè)務(wù)模型,轉(zhuǎn)換成點(diǎn)、線、面、體的空間數(shù)據(jù)模型,每一個(gè)數(shù)據(jù)表的字段為一個(gè)點(diǎn),每一張數(shù)據(jù)表將點(diǎn)連成線,業(yè)務(wù)鏈將一張張表串起來(lái)組成一個(gè)面,多個(gè)業(yè)務(wù)鏈交叉平行組成業(yè)務(wù)模型體,實(shí)現(xiàn)數(shù)據(jù)模型空間化??臻g數(shù)據(jù)模型實(shí)體關(guān)系圖如圖2所示。
圖2 空間數(shù)據(jù)模型實(shí)體關(guān)系圖
數(shù)據(jù)模型空間化是通過(guò)建立底層規(guī)則一步步收斂不確定性的過(guò)程。一是定義數(shù)據(jù)字典,解耦專業(yè)術(shù)語(yǔ)與數(shù)據(jù)庫(kù)結(jié)構(gòu),解決表自身的不可描述性問(wèn)題;二是建立主維度,通常是報(bào)表數(shù)據(jù)源模型描述的基本實(shí)體,在油田開(kāi)發(fā)生產(chǎn)管理中主要是指組織機(jī)構(gòu)、開(kāi)發(fā)單元、集輸實(shí)體、井等,是數(shù)據(jù)分析、統(tǒng)計(jì)的基本對(duì)象;三是構(gòu)建維度鏈,通過(guò)維度鏈可以將某專業(yè)相關(guān)數(shù)據(jù)表基于主維度對(duì)象串聯(lián)起來(lái),實(shí)現(xiàn)基于某個(gè)維度、跨數(shù)據(jù)表間的直接數(shù)據(jù)關(guān)聯(lián),即以基本對(duì)象為關(guān)鍵字的活動(dòng)數(shù)據(jù)與主維度的關(guān)系;四是級(jí)聯(lián)數(shù)據(jù)字典,解決項(xiàng)與項(xiàng)之間的關(guān)系。
舉例來(lái)說(shuō),以井為基本對(duì)象的應(yīng)用,報(bào)表表頭如圖3所示。
圖3 某單位采出井日生產(chǎn)數(shù)據(jù)表
建立空間數(shù)據(jù)模型流程及有關(guān)說(shuō)明如圖4所示。
圖4 空間數(shù)據(jù)模型建立流程圖
2.2.2 基于事件驅(qū)動(dòng)
使用基于事件驅(qū)動(dòng)模式確保報(bào)表定制工具的高可擴(kuò)展性,更容易定制且對(duì)動(dòng)態(tài)處理有更好的響應(yīng)。基于事件去驅(qū)動(dòng)報(bào)表、圖形及相關(guān)功能的調(diào)度,方便與用戶界面交互?;谑录?qū)動(dòng)模式如圖5所示。
圖5 事件驅(qū)動(dòng)模式
基于事件驅(qū)動(dòng)模式是將單一目的事件定義為基礎(chǔ)組件,具有一定執(zhí)行順序的組件構(gòu)成將多個(gè)事件串聯(lián)使用,適用于報(bào)表定制的各類實(shí)際應(yīng)用場(chǎng)景。事件的處理轉(zhuǎn)換為業(yè)務(wù)功能處理,當(dāng)事件處理器A將事件傳遞給事件處理器B時(shí),A不會(huì)與該事件的后續(xù)處理發(fā)生任何聯(lián)系,事件處理器組件相互獨(dú)立無(wú)關(guān)聯(lián),事件部署、調(diào)度相對(duì)容易。
報(bào)表定制工具抽取的通用事件如表1所示。
表1 通用事件列表
2.2.3 界面與數(shù)據(jù)相分離模式
由于B/S架構(gòu)模式,界面與后臺(tái)程序有許多關(guān)聯(lián),為了使報(bào)表定制工具能夠適配各種業(yè)務(wù)數(shù)據(jù)的自動(dòng)集成,降低界面與數(shù)據(jù)間的耦合度,提高報(bào)表工具的穩(wěn)定性,同時(shí)保障數(shù)據(jù)的安全性,將界面與數(shù)據(jù)驅(qū)動(dòng)獨(dú)立封裝,設(shè)計(jì)時(shí)實(shí)時(shí)綁定實(shí)現(xiàn)數(shù)據(jù)庫(kù)及數(shù)據(jù)結(jié)構(gòu)的松耦合。通過(guò)報(bào)表中提供的數(shù)據(jù)將格式合理分離,直觀感受報(bào)表數(shù)據(jù)的具體化、格式化與靈活性。當(dāng)報(bào)表定制工具與數(shù)據(jù)庫(kù)交互時(shí),對(duì)界面和數(shù)據(jù)進(jìn)行解析、組合,從而令數(shù)據(jù)和界面完全分離,能夠提高軟件開(kāi)發(fā)代碼的復(fù)用度,降低數(shù)據(jù)結(jié)構(gòu)變化和界面改變的相互影響。
報(bào)表定制工具通過(guò)使用數(shù)據(jù)與界面相分離模式,實(shí)現(xiàn)整體報(bào)表完全的結(jié)構(gòu)化處理。界面可以實(shí)時(shí)根據(jù)用戶點(diǎn)擊的對(duì)象,按其對(duì)應(yīng)的數(shù)據(jù)表、數(shù)據(jù)項(xiàng)、條件,借助模型引擎動(dòng)態(tài)裝配相關(guān)圖表數(shù)據(jù),實(shí)現(xiàn)常規(guī)數(shù)據(jù)挖掘圖表的展示支持,模型引擎動(dòng)態(tài)裝備數(shù)據(jù)如圖6所示。
圖6 模型引擎動(dòng)態(tài)裝配數(shù)據(jù)
當(dāng)用戶通過(guò)界面點(diǎn)擊穿透數(shù)據(jù)項(xiàng)時(shí),依據(jù)用戶點(diǎn)擊的數(shù)據(jù)列、當(dāng)前列綁定的模型節(jié)點(diǎn)、關(guān)聯(lián)條件、所屬數(shù)據(jù)表、所屬字段均能準(zhǔn)確感知,后臺(tái)數(shù)據(jù)訪問(wèn)引擎可以按照界面基于數(shù)據(jù)模型引擎自動(dòng)生成穿透條件,并根據(jù)穿透表目標(biāo)動(dòng)態(tài)創(chuàng)建穿透報(bào)表,或者調(diào)用用戶預(yù)設(shè)的穿透模板,實(shí)現(xiàn)自動(dòng)穿透支持。
2.2.4 邏輯與功能相分離模式
市面上報(bào)表定制工具大都為低代碼平臺(tái),做不到無(wú)代碼是由于無(wú)法支持復(fù)雜多變的業(yè)務(wù)邏輯功能。采用邏輯、功能相分離的原則,將常規(guī)功能脫離業(yè)務(wù)需求單獨(dú)封裝,以樹(shù)型模式實(shí)現(xiàn)邏輯的可視化定制,設(shè)計(jì)報(bào)表時(shí)根據(jù)用戶需求靈活組合,適配業(yè)務(wù)邏輯的復(fù)雜性與不確定性。
編程架構(gòu)包含邏輯模塊、功能模塊。確定業(yè)務(wù)邏輯和通用功能的分工,邏輯完成報(bào)表業(yè)務(wù)數(shù)據(jù)統(tǒng)計(jì)算法,功能實(shí)現(xiàn)通用功能比如報(bào)表樣式定制。當(dāng)業(yè)務(wù)人員使用報(bào)表定制工具定義自己的統(tǒng)計(jì)算法,設(shè)計(jì)自己的報(bào)表樣式時(shí)更清晰、更便利、更易操作。自定義統(tǒng)計(jì)算法如圖7所示。
圖7 自定義統(tǒng)計(jì)算法
業(yè)務(wù)人員根據(jù)需要隨時(shí)添加主維度(如井)中的任意屬性(單位、驅(qū)動(dòng)方式、開(kāi)發(fā)單元等)作為查詢條件,不必定義新的報(bào)表或開(kāi)發(fā)新的應(yīng)用,如圖8所示。
圖8 定義查詢條件
基于模型的報(bào)表定制工具,可以由業(yè)務(wù)人員根據(jù)自己的需求獨(dú)立完成報(bào)表定制,不但降低對(duì)人員的要求,統(tǒng)計(jì)指標(biāo)的變化無(wú)須定義新的報(bào)表,大幅降低工作量,而且面對(duì)新的業(yè)務(wù)需求響應(yīng)更快,能夠滿足今后一個(gè)時(shí)期油田開(kāi)發(fā)管理的多變性、復(fù)雜性的功能增長(zhǎng)需求,同時(shí)實(shí)現(xiàn)了各專業(yè)數(shù)據(jù)的共享,為結(jié)構(gòu)化數(shù)據(jù)應(yīng)用服務(wù)提供了新的方向。