文/王浩嚴(yán)
隨著海油銷售公司的不斷發(fā)展,對(duì)信息化管理的要求逐漸提高,進(jìn)一步發(fā)揮信息化管理的優(yōu)勢(shì)變得十分重要。企業(yè)信息化管理是依托信息化系統(tǒng),整合企業(yè)的數(shù)據(jù)要素,通過(guò)數(shù)據(jù)價(jià)值的有效挖掘,提升企業(yè)從產(chǎn)品設(shè)計(jì)到管理的各個(gè)流程的效率,充分發(fā)揮企業(yè)的信息資源的作用。通過(guò)數(shù)據(jù)資源的整合,利用先進(jìn)的數(shù)據(jù)挖掘等技術(shù),提高決策的科學(xué)性,更加精準(zhǔn)的定位客戶群體。最終達(dá)到提高企業(yè)效率、科學(xué)管理庫(kù)存、快速響應(yīng)市場(chǎng)變化、提升企業(yè)競(jìng)爭(zhēng)力的目的。
本系統(tǒng)支持根據(jù)用戶需求,記錄用戶錄入數(shù)據(jù),并最終以報(bào)表形式呈現(xiàn),支持?jǐn)?shù)據(jù)錄入與修改、數(shù)據(jù)查詢、批量導(dǎo)入、報(bào)表導(dǎo)出、圖表查看;同時(shí)報(bào)表需要支持自定義功能,為保證數(shù)據(jù)的準(zhǔn)確性,報(bào)表中很多通過(guò)公式計(jì)算的數(shù)據(jù)不是每次有數(shù)據(jù)輸入時(shí)就計(jì)算好存儲(chǔ)在數(shù)據(jù)庫(kù)系統(tǒng)中,而是實(shí)時(shí)計(jì)算并呈現(xiàn)給用戶,支持用戶自己配置公式程序自動(dòng)計(jì)算。
目前大部分系統(tǒng)的報(bào)表都是以二維表格的形式呈現(xiàn)數(shù)據(jù)。一般數(shù)據(jù)都是在后臺(tái)已經(jīng)計(jì)算好,只是在前臺(tái)進(jìn)行展現(xiàn)。這種報(bào)表形式具有以下的缺點(diǎn):
報(bào)表采用固定的形式進(jìn)行設(shè)計(jì),無(wú)法靈活進(jìn)行修改和擴(kuò)展。由于業(yè)務(wù)發(fā)展較快,對(duì)報(bào)表的需求變化也較快,因此這種固定的報(bào)表形式無(wú)法滿足業(yè)務(wù)的需求。由于調(diào)整需要耗費(fèi)開(kāi)發(fā)資源,也為軟件開(kāi)發(fā)人員帶來(lái)了較大的壓力。
由于固定形式的報(bào)表不能支持公式計(jì)算等功能,因此業(yè)務(wù)在進(jìn)一步分析數(shù)據(jù)時(shí)需要將報(bào)表進(jìn)行導(dǎo)出,然后在EXCEL上進(jìn)行處理,降低了業(yè)務(wù)的效率。
固定形式的報(bào)表很難實(shí)現(xiàn)結(jié)構(gòu)的復(fù)用,兩張報(bào)表之間有細(xì)微差異都將導(dǎo)致重新開(kāi)發(fā)。
固定形式的報(bào)表很難支持復(fù)雜的自定義查詢。
為了解決以上問(wèn)題,滿足業(yè)務(wù)人員的報(bào)表需求,本系統(tǒng)實(shí)現(xiàn)了智能報(bào)表功能,允許用戶進(jìn)行自定義查詢,提高業(yè)務(wù)的效率。
本系統(tǒng)的智能報(bào)表基于語(yǔ)義模型,通過(guò)語(yǔ)義模型解耦報(bào)表數(shù)據(jù)與報(bào)表位置的映射,重新采用語(yǔ)義建立二者的映射關(guān)系,進(jìn)而支持對(duì)報(bào)表的結(jié)構(gòu)與數(shù)據(jù)的自定義。假設(shè)P代表報(bào)表、T代表數(shù)據(jù)、Ο代表數(shù)據(jù)所有人,則報(bào)表的語(yǔ)義模型S由如下公式所定義:
通過(guò)該語(yǔ)義能夠?qū)?bào)表進(jìn)行最小完備的描述,比如s={凝析油,190101-190601,營(yíng)口}表示2019年1月1日至2019年6月1日營(yíng)口的凝析油庫(kù)存量。報(bào)表中的數(shù)據(jù)單元格可定義為:
其中D代表了報(bào)表中的數(shù)據(jù)值域。同理,單元格可定義為:
其中PosX、PosY代表單元格所在位置。允許單元格上進(jìn)行公示運(yùn)算,則單元格的公式定義為:
其中F表示用戶可自定義的各類公式。
以表1的報(bào)表形式為例,本文將進(jìn)行形式化描述:
其中可以A1(代表列坐標(biāo),1代表行坐標(biāo))、B1、C1、D1為主欄,對(duì)應(yīng)報(bào)表的列標(biāo)題。可以用形式化描述為SA1={null、月份、null}、SB1={產(chǎn)品、null、null}、SC1={地區(qū)、null、null}、SC1={null、null、銷量},則可定義單元信息如下:
則D5的數(shù)據(jù)可以表達(dá)為:
SD5=SD,×S,5={<產(chǎn)品,地區(qū)>,月份,銷量}={<凝析油,營(yíng)口>,1月,銷量}
則該單元格的數(shù)據(jù)便能通過(guò)形式化語(yǔ)義被描述出來(lái)。
圖1:智能報(bào)表實(shí)現(xiàn)架構(gòu)圖
在公式的自定義上,F(xiàn)支持各種表內(nèi)公式、表間公式,同時(shí)支持若干內(nèi)置函數(shù)。公式的形式化語(yǔ)言定義如下:
其中VT代表各類終結(jié)符,VN代表終結(jié)符,P代表產(chǎn)生式集合,S代表開(kāi)始符號(hào)。則本系統(tǒng)的自定義語(yǔ)法如下:
可以看到函數(shù)自定義表示說(shuō)支持加減乘除及乘方等運(yùn)算,運(yùn)行用戶自定義表達(dá)式對(duì)報(bào)表進(jìn)行自定義。
如圖1所示,智能報(bào)表的實(shí)現(xiàn)共分為四層結(jié)構(gòu),最底層是存儲(chǔ)層、然后依次是數(shù)據(jù)處理層、語(yǔ)義層以及交互層,其中:
存儲(chǔ)層:本層實(shí)現(xiàn)對(duì)報(bào)表元數(shù)據(jù)的存儲(chǔ),包括報(bào)表結(jié)構(gòu)數(shù)據(jù)、公式數(shù)據(jù)、元祖數(shù)據(jù)以及報(bào)表的其他記錄數(shù)據(jù)。
數(shù)據(jù)處理層:本層對(duì)各類報(bào)表數(shù)據(jù)進(jìn)行處理,包括結(jié)構(gòu)數(shù)據(jù)、公式數(shù)據(jù)的存儲(chǔ)于維護(hù),各類元數(shù)據(jù)的提取。
語(yǔ)義層:本層包括對(duì)各類語(yǔ)義的正向以及逆向解析,對(duì)語(yǔ)言元素進(jìn)行定義與操作,對(duì)公式進(jìn)行解析。
交互層:本層實(shí)現(xiàn)報(bào)表的展示與交互,包括交互式的結(jié)構(gòu)設(shè)計(jì)、查詢分析以及權(quán)限定義等輔助功能。
本報(bào)表的開(kāi)發(fā)基于Spring-boot架構(gòu),其中語(yǔ)法解析使用LEX工具按照語(yǔ)法形式化表達(dá)式定義解析語(yǔ)言。對(duì)公式的解析使用commons-jexl3,該庫(kù)能夠支持jexl表達(dá)式語(yǔ)言引擎,commons-jexl3提供了該語(yǔ)言引擎的Java支持。本系統(tǒng)的實(shí)現(xiàn)效果如圖2所示。
本文詳細(xì)的分析了油氣數(shù)據(jù)采集測(cè)評(píng)及風(fēng)險(xiǎn)預(yù)警系統(tǒng)中智能報(bào)表的形式化語(yǔ)義的設(shè)計(jì)與實(shí)現(xiàn)方案,從數(shù)學(xué)原理對(duì)該系統(tǒng)的實(shí)現(xiàn)進(jìn)行了描述。通過(guò)智能報(bào)表的實(shí)現(xiàn)有力的提升了海油銷售公司的數(shù)據(jù)整合能力,提高了報(bào)表系統(tǒng)的智能化與擴(kuò)展性,提升了公司的市場(chǎng)競(jìng)爭(zhēng)力。
圖2:智能報(bào)表實(shí)現(xiàn)效果