文/王浩嚴
隨著海油銷售公司的不斷發展,對信息化管理的要求逐漸提高,進一步發揮信息化管理的優勢變得十分重要。企業信息化管理是依托信息化系統,整合企業的數據要素,通過數據價值的有效挖掘,提升企業從產品設計到管理的各個流程的效率,充分發揮企業的信息資源的作用。通過數據資源的整合,利用先進的數據挖掘等技術,提高決策的科學性,更加精準的定位客戶群體。最終達到提高企業效率、科學管理庫存、快速響應市場變化、提升企業競爭力的目的。
本系統支持根據用戶需求,記錄用戶錄入數據,并最終以報表形式呈現,支持數據錄入與修改、數據查詢、批量導入、報表導出、圖表查看;同時報表需要支持自定義功能,為保證數據的準確性,報表中很多通過公式計算的數據不是每次有數據輸入時就計算好存儲在數據庫系統中,而是實時計算并呈現給用戶,支持用戶自己配置公式程序自動計算。
目前大部分系統的報表都是以二維表格的形式呈現數據。一般數據都是在后臺已經計算好,只是在前臺進行展現。這種報表形式具有以下的缺點:
報表采用固定的形式進行設計,無法靈活進行修改和擴展。由于業務發展較快,對報表的需求變化也較快,因此這種固定的報表形式無法滿足業務的需求。由于調整需要耗費開發資源,也為軟件開發人員帶來了較大的壓力。
由于固定形式的報表不能支持公式計算等功能,因此業務在進一步分析數據時需要將報表進行導出,然后在EXCEL上進行處理,降低了業務的效率。
固定形式的報表很難實現結構的復用,兩張報表之間有細微差異都將導致重新開發。
固定形式的報表很難支持復雜的自定義查詢。
為了解決以上問題,滿足業務人員的報表需求,本系統實現了智能報表功能,允許用戶進行自定義查詢,提高業務的效率。
本系統的智能報表基于語義模型,通過語義模型解耦報表數據與報表位置的映射,重新采用語義建立二者的映射關系,進而支持對報表的結構與數據的自定義。假設P代表報表、T代表數據、Ο代表數據所有人,則報表的語義模型S由如下公式所定義:

通過該語義能夠對報表進行最小完備的描述,比如s={凝析油,190101-190601,營口}表示2019年1月1日至2019年6月1日營口的凝析油庫存量。報表中的數據單元格可定義為:

其中D代表了報表中的數據值域。同理,單元格可定義為:

其中PosX、PosY代表單元格所在位置。允許單元格上進行公示運算,則單元格的公式定義為:

其中F表示用戶可自定義的各類公式。
以表1的報表形式為例,本文將進行形式化描述:
其中可以A1(代表列坐標,1代表行坐標)、B1、C1、D1為主欄,對應報表的列標題。可以用形式化描述為SA1={null、月份、null}、SB1={產品、null、null}、SC1={地區、null、null}、SC1={null、null、銷量},則可定義單元信息如下:

則D5的數據可以表達為:
SD5=SD,×S,5={<產品,地區>,月份,銷量}={<凝析油,營口>,1月,銷量}
則該單元格的數據便能通過形式化語義被描述出來。

圖1:智能報表實現架構圖
在公式的自定義上,F支持各種表內公式、表間公式,同時支持若干內置函數。公式的形式化語言定義如下:

其中VT代表各類終結符,VN代表終結符,P代表產生式集合,S代表開始符號。則本系統的自定義語法如下:

可以看到函數自定義表示說支持加減乘除及乘方等運算,運行用戶自定義表達式對報表進行自定義。
如圖1所示,智能報表的實現共分為四層結構,最底層是存儲層、然后依次是數據處理層、語義層以及交互層,其中:
存儲層:本層實現對報表元數據的存儲,包括報表結構數據、公式數據、元祖數據以及報表的其他記錄數據。
數據處理層:本層對各類報表數據進行處理,包括結構數據、公式數據的存儲于維護,各類元數據的提取。
語義層:本層包括對各類語義的正向以及逆向解析,對語言元素進行定義與操作,對公式進行解析。
交互層:本層實現報表的展示與交互,包括交互式的結構設計、查詢分析以及權限定義等輔助功能。
本報表的開發基于Spring-boot架構,其中語法解析使用LEX工具按照語法形式化表達式定義解析語言。對公式的解析使用commons-jexl3,該庫能夠支持jexl表達式語言引擎,commons-jexl3提供了該語言引擎的Java支持。本系統的實現效果如圖2所示。
本文詳細的分析了油氣數據采集測評及風險預警系統中智能報表的形式化語義的設計與實現方案,從數學原理對該系統的實現進行了描述。通過智能報表的實現有力的提升了海油銷售公司的數據整合能力,提高了報表系統的智能化與擴展性,提升了公司的市場競爭力。

圖2:智能報表實現效果