胡宏濤,李 皎
(西安石油大學 計算機學院,西安 710065)
伴隨著國內油田開發的逐步深入,許多油田區塊進入開發的中后期,開采難度不斷上升,使得石油企業更加注重油田區塊產量運行。RESTFUL Web Service是一種常見的REST的應用,遵守了REST風格的Web服務。RESTFUL架構是目前流行的一種互聯網軟件架構[1]。因此,開發基于RESTFUL架構的產量運行系統顯得尤為迫切與必要?;赗EST模式的Web服務完全拋棄了SOAP協議框架,真正的將HTTP協議作為應用協議,消息的傳輸直接建立在HTTP應用協議之上。通過HTTP定義的請求方法即可直接完成對資源的操作,極大的簡化了Web服務的設計和開發、服務請求和響應的過程??朔嘶赟OAP的WCF局限性,可避免給開發人員帶來復雜繁瑣的配置操作[2]。RESTFUL架構實現了在不同數據規模下,資源操作響應時間短、返回數據包小的優勢。因此,開發基于RESTFUL架構的油田區塊產量運行設計,來提升油田區塊產量,使油田企業管理者能夠準確、方便地掌握油田區塊產量的運行情況,提出合理的生產管理措施,從而達到增產提效的目的。
REST(Representational State Transfer,“表現層狀態轉移”)是一種新的軟件架構規則[3]。則RESTFUL架構就是一組協作的符合REST原則的架構約束,而RESTFUL API就是符合REST約束的網絡應用接口[4]。REST將互聯網上的一切實體定義為資源,每一個資源至少對應一個URI(統一資源定位符),每個URI代表一類操作,使得Web資源、服務具有可尋址性[5]。此外,客戶端與服務器間的交互是無狀態的,而是通過標準的HTTP方法(GET、POST、PUT、DELETE等)實現網絡資源的處理?;赗ESTFUL的HTTP服務資源操作流程如圖1所示。瀏覽器通過URI向服務器發送請求,服務器依據指定的方法進行處理,并再次通過URI返回相應數據格式的信息,根據數據源的變更來修改URI。

圖1 基于RESTFUL的HTTP服務資源操作流程Fig.1 HTTP service resource operation process based on RESTFUL
考慮到系統的穩定性、安全性及可維護性等特點[6],本系統采用分層架構開發。上層使用下層的各種服務,降低層與層之間的耦合度,以此保證開發過程各層相互獨立,提高工作效率。整個系統的流程設計分為需求分析、功能設計、系統開發與部署及系統維護四個步驟,具體流程如圖2所示。

圖2 面向RESTFUL Web的產量運行系統設計流程Fig.2 Design process of RESTFUL Web-oriented production operation system
數據庫是整個軟件系統后臺的核心,系統的所有數據都依賴于后臺數據庫系統,所以設計一套簡單、完整的數據庫表是數據庫設計的重中之重。產量運行系統是由用戶管理、井基本數據管理、井產量數據管理、井產量構成數據管理。本系統數據庫使用MySQL設計與開發工具,通過對產量運行系統數據流程分析,針對系統需求,部分數據表關系模型設計如下:
用戶(賬號,用戶名,密碼,身份,電話,性別)
井基本信息(井名,井號,井類別,設計人,設計單位,設計時間)
井產量數據(井號,井名,井類別,日產油量,日產水量,日產氣量,月產油量,月產水量,月產氣量,年產水量,年產油量,年產氣量,年累計產油量,日累計產油量,月累計產油量,年累計產氣量,月累計產氣量,日累計產氣量,年累計產水量,月累計產水量,日累計產水量)
產量構成計劃數據信息(井號,井名,井類別,年月,計劃措施井數,計劃日增油量,計劃年增油量,計劃月增油量,計劃月增氣量,計劃日增氣量,計劃年增氣量,更新日期,數據來源)
分級統計數據信息(區塊,井名,井類別,總井數,原產油量,單井產量統計,井組產量統計,區塊產量統計,油田名稱)
產量完成情況數據信息(井號,井名,井類別,總井數,開井數,日產油能力,日產水能力,日產氣能力,月產水能力,月產氣能力,月產油能力,年產油能力,年產水能力,年產氣能力)
井類型(井號,井名,井別,總井數,開井數,備注)
由于產量運行動態分析系統在需求上要求多終端和開放性,考慮到系統的穩定性、可擴展性和可移植性等特點,本次平臺開發采用分布式框架,即用分層的方法對產量運行系統進行業務處理[7]。產量運行的系統架構如圖3所示。

圖3 產量運行系統架構Fig.3 Production operation system architecture
根據系統的總體架構圖可以發現,整個產量運行分析系統可分為3層設計,分別為表示層(客戶端)、RESTFUL服務接口層和數據層。其中,表示層客戶端主要為系統所有用戶提供登陸和對應業務操作服務;RESTFUL服務接口層主要是提供對于業務的支撐保障服務,服務于生產運行分析、產量構成分析、產量統計分析以及用戶信息管理這4大核心功能。數據層涵蓋了用戶的相關信息數據庫、各種井產量數據庫及產量構成數據庫和分級統計數據庫,為保持系統平穩運行提供數據支撐和保障。
基于RESTFUL架構的油田區塊產量運行系統設計,為了解決傳統的產量運行軟件中出現的信息孤島問題,使用服務理念即RESTFUL Web的開發,研究和實現產量運行系統。對產量運行系統進行功能分析、模塊劃分和低耦合的服務封裝,有針對性地建立基于RESTFUL Web的產量運行系統。本系統主要分為4個功能模塊:生產運行模塊、產量構成模塊、分級統計模塊和用戶管理模塊4部分。功能模塊結構如圖4所示。

圖4 模塊功能圖Fig.4 Module function diagram
(1)生產運行模塊:根據產量數據表,實現不同種類井的產量運行曲線圖,輸出產量完成情況統計表。
(2)產量構成模塊:實現不同方式的產量構成,分析其產量構成情況。
(3)分級統計模塊:根據區塊、井組、單井來進行產量統計,實現分級統計產量。
(4)用戶管理模塊:不同的用戶分配不同的權限來管理系統,并滿足不同的用戶需求。
不同操作系統、各種終端的瀏覽器向提供Web服務的服務器發送HTTP請求,RESTFUL API利用OData(開放數據協議)將各種數據轉換為標準化,再對HTTP請求進行數據的增添、刪除、修改、查找等處理[8]。例如URI(統一資源標志符)路由和Action解析、路由選擇和控制器選擇等。采用實體對象映射模型(ORM)封裝,從產量運行系統的數據庫獲取數據,并返回結果集(JSON、XML形式表達),接著返回給請求源。系統原理如圖5所示。

圖5 系統工作原理Fig.5 System working principle
本文根據油田的區塊產量運行實際背景流程,使用基于RESTFUL Web面向服務架構的新思想,利用計算機相關協議以及軟件開發技術,展開對產量運行系統的軟件架構設計和各種新型相關的開發技術的研究,旨在利用RESTFUL API、HTTP協議以及RESTFUL風格和.NET開發技術等有效方法,設計一套基于RESTFUL接口的Web服務應用框架,幫助油田管理人員科學、高效、合理的進行產量分析,達到科學化的管理,來提升油田區塊產量,準確及時地提出產量運行的合理化建議,實現增產提效的目的。