胡宏濤,李 皎
(西安石油大學(xué) 計(jì)算機(jī)學(xué)院,西安 710065)
伴隨著國內(nèi)油田開發(fā)的逐步深入,許多油田區(qū)塊進(jìn)入開發(fā)的中后期,開采難度不斷上升,使得石油企業(yè)更加注重油田區(qū)塊產(chǎn)量運(yùn)行。RESTFUL Web Service是一種常見的REST的應(yīng)用,遵守了REST風(fēng)格的Web服務(wù)。RESTFUL架構(gòu)是目前流行的一種互聯(lián)網(wǎng)軟件架構(gòu)[1]。因此,開發(fā)基于RESTFUL架構(gòu)的產(chǎn)量運(yùn)行系統(tǒng)顯得尤為迫切與必要。基于REST模式的Web服務(wù)完全拋棄了SOAP協(xié)議框架,真正的將HTTP協(xié)議作為應(yīng)用協(xié)議,消息的傳輸直接建立在HTTP應(yīng)用協(xié)議之上。通過HTTP定義的請求方法即可直接完成對資源的操作,極大的簡化了Web服務(wù)的設(shè)計(jì)和開發(fā)、服務(wù)請求和響應(yīng)的過程。克服了基于SOAP的WCF局限性,可避免給開發(fā)人員帶來復(fù)雜繁瑣的配置操作[2]。RESTFUL架構(gòu)實(shí)現(xiàn)了在不同數(shù)據(jù)規(guī)模下,資源操作響應(yīng)時(shí)間短、返回?cái)?shù)據(jù)包小的優(yōu)勢。因此,開發(fā)基于RESTFUL架構(gòu)的油田區(qū)塊產(chǎn)量運(yùn)行設(shè)計(jì),來提升油田區(qū)塊產(chǎn)量,使油田企業(yè)管理者能夠準(zhǔn)確、方便地掌握油田區(qū)塊產(chǎn)量的運(yùn)行情況,提出合理的生產(chǎn)管理措施,從而達(dá)到增產(chǎn)提效的目的。
REST(Representational State Transfer,“表現(xiàn)層狀態(tài)轉(zhuǎn)移”)是一種新的軟件架構(gòu)規(guī)則[3]。則RESTFUL架構(gòu)就是一組協(xié)作的符合REST原則的架構(gòu)約束,而RESTFUL API就是符合REST約束的網(wǎng)絡(luò)應(yīng)用接口[4]。REST將互聯(lián)網(wǎng)上的一切實(shí)體定義為資源,每一個(gè)資源至少對應(yīng)一個(gè)URI(統(tǒng)一資源定位符),每個(gè)URI代表一類操作,使得Web資源、服務(wù)具有可尋址性[5]。此外,客戶端與服務(wù)器間的交互是無狀態(tài)的,而是通過標(biāo)準(zhǔn)的HTTP方法(GET、POST、PUT、DELETE等)實(shí)現(xiàn)網(wǎng)絡(luò)資源的處理。基于RESTFUL的HTTP服務(wù)資源操作流程如圖1所示。瀏覽器通過URI向服務(wù)器發(fā)送請求,服務(wù)器依據(jù)指定的方法進(jìn)行處理,并再次通過URI返回相應(yīng)數(shù)據(jù)格式的信息,根據(jù)數(shù)據(jù)源的變更來修改URI。
圖1 基于RESTFUL的HTTP服務(wù)資源操作流程Fig.1 HTTP service resource operation process based on RESTFUL
考慮到系統(tǒng)的穩(wěn)定性、安全性及可維護(hù)性等特點(diǎn)[6],本系統(tǒng)采用分層架構(gòu)開發(fā)。上層使用下層的各種服務(wù),降低層與層之間的耦合度,以此保證開發(fā)過程各層相互獨(dú)立,提高工作效率。整個(gè)系統(tǒng)的流程設(shè)計(jì)分為需求分析、功能設(shè)計(jì)、系統(tǒng)開發(fā)與部署及系統(tǒng)維護(hù)四個(gè)步驟,具體流程如圖2所示。
圖2 面向RESTFUL Web的產(chǎn)量運(yùn)行系統(tǒng)設(shè)計(jì)流程Fig.2 Design process of RESTFUL Web-oriented production operation system
數(shù)據(jù)庫是整個(gè)軟件系統(tǒng)后臺(tái)的核心,系統(tǒng)的所有數(shù)據(jù)都依賴于后臺(tái)數(shù)據(jù)庫系統(tǒng),所以設(shè)計(jì)一套簡單、完整的數(shù)據(jù)庫表是數(shù)據(jù)庫設(shè)計(jì)的重中之重。產(chǎn)量運(yùn)行系統(tǒng)是由用戶管理、井基本數(shù)據(jù)管理、井產(chǎn)量數(shù)據(jù)管理、井產(chǎn)量構(gòu)成數(shù)據(jù)管理。本系統(tǒng)數(shù)據(jù)庫使用MySQL設(shè)計(jì)與開發(fā)工具,通過對產(chǎn)量運(yùn)行系統(tǒng)數(shù)據(jù)流程分析,針對系統(tǒng)需求,部分?jǐn)?shù)據(jù)表關(guān)系模型設(shè)計(jì)如下:
用戶(賬號,用戶名,密碼,身份,電話,性別)
井基本信息(井名,井號,井類別,設(shè)計(jì)人,設(shè)計(jì)單位,設(shè)計(jì)時(shí)間)
井產(chǎn)量數(shù)據(jù)(井號,井名,井類別,日產(chǎn)油量,日產(chǎn)水量,日產(chǎn)氣量,月產(chǎn)油量,月產(chǎn)水量,月產(chǎn)氣量,年產(chǎn)水量,年產(chǎn)油量,年產(chǎn)氣量,年累計(jì)產(chǎn)油量,日累計(jì)產(chǎn)油量,月累計(jì)產(chǎn)油量,年累計(jì)產(chǎn)氣量,月累計(jì)產(chǎn)氣量,日累計(jì)產(chǎn)氣量,年累計(jì)產(chǎn)水量,月累計(jì)產(chǎn)水量,日累計(jì)產(chǎn)水量)
產(chǎn)量構(gòu)成計(jì)劃數(shù)據(jù)信息(井號,井名,井類別,年月,計(jì)劃措施井?dāng)?shù),計(jì)劃日增油量,計(jì)劃年增油量,計(jì)劃月增油量,計(jì)劃月增氣量,計(jì)劃日增氣量,計(jì)劃年增氣量,更新日期,數(shù)據(jù)來源)
分級統(tǒng)計(jì)數(shù)據(jù)信息(區(qū)塊,井名,井類別,總井?dāng)?shù),原產(chǎn)油量,單井產(chǎn)量統(tǒng)計(jì),井組產(chǎn)量統(tǒng)計(jì),區(qū)塊產(chǎn)量統(tǒng)計(jì),油田名稱)
產(chǎn)量完成情況數(shù)據(jù)信息(井號,井名,井類別,總井?dāng)?shù),開井?dāng)?shù),日產(chǎn)油能力,日產(chǎn)水能力,日產(chǎn)氣能力,月產(chǎn)水能力,月產(chǎn)氣能力,月產(chǎn)油能力,年產(chǎn)油能力,年產(chǎn)水能力,年產(chǎn)氣能力)
井類型(井號,井名,井別,總井?dāng)?shù),開井?dāng)?shù),備注)
由于產(chǎn)量運(yùn)行動(dòng)態(tài)分析系統(tǒng)在需求上要求多終端和開放性,考慮到系統(tǒng)的穩(wěn)定性、可擴(kuò)展性和可移植性等特點(diǎn),本次平臺(tái)開發(fā)采用分布式框架,即用分層的方法對產(chǎn)量運(yùn)行系統(tǒng)進(jìn)行業(yè)務(wù)處理[7]。產(chǎn)量運(yùn)行的系統(tǒng)架構(gòu)如圖3所示。
圖3 產(chǎn)量運(yùn)行系統(tǒng)架構(gòu)Fig.3 Production operation system architecture
根據(jù)系統(tǒng)的總體架構(gòu)圖可以發(fā)現(xiàn),整個(gè)產(chǎn)量運(yùn)行分析系統(tǒng)可分為3層設(shè)計(jì),分別為表示層(客戶端)、RESTFUL服務(wù)接口層和數(shù)據(jù)層。其中,表示層客戶端主要為系統(tǒng)所有用戶提供登陸和對應(yīng)業(yè)務(wù)操作服務(wù);RESTFUL服務(wù)接口層主要是提供對于業(yè)務(wù)的支撐保障服務(wù),服務(wù)于生產(chǎn)運(yùn)行分析、產(chǎn)量構(gòu)成分析、產(chǎn)量統(tǒng)計(jì)分析以及用戶信息管理這4大核心功能。數(shù)據(jù)層涵蓋了用戶的相關(guān)信息數(shù)據(jù)庫、各種井產(chǎn)量數(shù)據(jù)庫及產(chǎn)量構(gòu)成數(shù)據(jù)庫和分級統(tǒng)計(jì)數(shù)據(jù)庫,為保持系統(tǒng)平穩(wěn)運(yùn)行提供數(shù)據(jù)支撐和保障。
基于RESTFUL架構(gòu)的油田區(qū)塊產(chǎn)量運(yùn)行系統(tǒng)設(shè)計(jì),為了解決傳統(tǒng)的產(chǎn)量運(yùn)行軟件中出現(xiàn)的信息孤島問題,使用服務(wù)理念即RESTFUL Web的開發(fā),研究和實(shí)現(xiàn)產(chǎn)量運(yùn)行系統(tǒng)。對產(chǎn)量運(yùn)行系統(tǒng)進(jìn)行功能分析、模塊劃分和低耦合的服務(wù)封裝,有針對性地建立基于RESTFUL Web的產(chǎn)量運(yùn)行系統(tǒng)。本系統(tǒng)主要分為4個(gè)功能模塊:生產(chǎn)運(yùn)行模塊、產(chǎn)量構(gòu)成模塊、分級統(tǒng)計(jì)模塊和用戶管理模塊4部分。功能模塊結(jié)構(gòu)如圖4所示。
圖4 模塊功能圖Fig.4 Module function diagram
(1)生產(chǎn)運(yùn)行模塊:根據(jù)產(chǎn)量數(shù)據(jù)表,實(shí)現(xiàn)不同種類井的產(chǎn)量運(yùn)行曲線圖,輸出產(chǎn)量完成情況統(tǒng)計(jì)表。
(2)產(chǎn)量構(gòu)成模塊:實(shí)現(xiàn)不同方式的產(chǎn)量構(gòu)成,分析其產(chǎn)量構(gòu)成情況。
(3)分級統(tǒng)計(jì)模塊:根據(jù)區(qū)塊、井組、單井來進(jìn)行產(chǎn)量統(tǒng)計(jì),實(shí)現(xiàn)分級統(tǒng)計(jì)產(chǎn)量。
(4)用戶管理模塊:不同的用戶分配不同的權(quán)限來管理系統(tǒng),并滿足不同的用戶需求。
不同操作系統(tǒng)、各種終端的瀏覽器向提供Web服務(wù)的服務(wù)器發(fā)送HTTP請求,RESTFUL API利用OData(開放數(shù)據(jù)協(xié)議)將各種數(shù)據(jù)轉(zhuǎn)換為標(biāo)準(zhǔn)化,再對HTTP請求進(jìn)行數(shù)據(jù)的增添、刪除、修改、查找等處理[8]。例如URI(統(tǒng)一資源標(biāo)志符)路由和Action解析、路由選擇和控制器選擇等。采用實(shí)體對象映射模型(ORM)封裝,從產(chǎn)量運(yùn)行系統(tǒng)的數(shù)據(jù)庫獲取數(shù)據(jù),并返回結(jié)果集(JSON、XML形式表達(dá)),接著返回給請求源。系統(tǒng)原理如圖5所示。
圖5 系統(tǒng)工作原理Fig.5 System working principle
本文根據(jù)油田的區(qū)塊產(chǎn)量運(yùn)行實(shí)際背景流程,使用基于RESTFUL Web面向服務(wù)架構(gòu)的新思想,利用計(jì)算機(jī)相關(guān)協(xié)議以及軟件開發(fā)技術(shù),展開對產(chǎn)量運(yùn)行系統(tǒng)的軟件架構(gòu)設(shè)計(jì)和各種新型相關(guān)的開發(fā)技術(shù)的研究,旨在利用RESTFUL API、HTTP協(xié)議以及RESTFUL風(fēng)格和.NET開發(fā)技術(shù)等有效方法,設(shè)計(jì)一套基于RESTFUL接口的Web服務(wù)應(yīng)用框架,幫助油田管理人員科學(xué)、高效、合理的進(jìn)行產(chǎn)量分析,達(dá)到科學(xué)化的管理,來提升油田區(qū)塊產(chǎn)量,準(zhǔn)確及時(shí)地提出產(chǎn)量運(yùn)行的合理化建議,實(shí)現(xiàn)增產(chǎn)提效的目的。