張澤恩
摘 要本文以軟件開發(fā)為手段,解決當(dāng)前頭臺(tái)公司在數(shù)據(jù)利用方面所面臨的問題。利用BeX5平臺(tái)搭建前臺(tái)界面和組織架構(gòu),實(shí)現(xiàn)可視化操作和精確權(quán)限控制,解決用戶不會(huì)使用SQL查詢語句和數(shù)據(jù)訪問權(quán)限混亂的現(xiàn)狀,整體提升公司數(shù)據(jù)利用水平。
【關(guān)鍵詞】BeX5平臺(tái) 數(shù)據(jù)利用 權(quán)限控制
1 研究背景
隨著油田公司A2、A5等項(xiàng)目的深入推廣,對(duì)我們數(shù)據(jù)利用提出了更高的要求,涉及到的人員也越來越多,不同系統(tǒng)對(duì)口人員需要訪問的數(shù)據(jù)也皆不相同?,F(xiàn)階段通過PL/SQL軟件直接訪問數(shù)據(jù)庫,雖然能夠滿足我們的需要,但在使用過程中存在兩個(gè)問題:
(1)PL/SQL需要通過命令來實(shí)現(xiàn)數(shù)據(jù)操控,要求操作人員必須掌握SQL語句,而實(shí)際情況大部分員工沒有這個(gè)基礎(chǔ)。
(2)數(shù)據(jù)庫使用人員都是通過公共用戶cy12登錄數(shù)據(jù)庫,對(duì)訪問權(quán)限管理模糊,可能造成用戶越權(quán)查看的情況。
2 解決方案選擇
2.1 需求分析
(1)為用戶提供簡(jiǎn)潔明了的可視化數(shù)據(jù)操作界面。將用戶常用的增、刪、改、查、電子表格導(dǎo)入、導(dǎo)出等工作必需的功能以更簡(jiǎn)潔的方式提供給用戶,不需要掌握SQL語句,降低門檻。
(2)實(shí)現(xiàn)前臺(tái)界面調(diào)用存儲(chǔ)過程和傳遞參數(shù),數(shù)據(jù)處理一鍵完成。
(3)優(yōu)化細(xì)分權(quán)限結(jié)構(gòu),根據(jù)用戶崗位分配數(shù)據(jù)權(quán)限,避免用戶越權(quán)查詢。
2.2 解決思路
利用BeX5平臺(tái)構(gòu)建UI界面來展示數(shù)據(jù),通過按鈕和組件觸發(fā)JS代碼實(shí)現(xiàn)增、刪、改、查、數(shù)據(jù)篩選、excel導(dǎo)入和導(dǎo)出;直接在前臺(tái)實(shí)現(xiàn)數(shù)據(jù)處理,前臺(tái)過于臃腫,處理效率低,系統(tǒng)運(yùn)行緩慢,因此采用數(shù)據(jù)庫中編寫存儲(chǔ)過程,前臺(tái)傳參、調(diào)用的方式;通過權(quán)限、角色、用戶建立公司組織架構(gòu),賦予員工獨(dú)立賬戶和應(yīng)有權(quán)限。
2.3 選用BeX5平臺(tái)優(yōu)勢(shì)和主要原因
(1)提供完全可視化、組件化開發(fā)環(huán)境,能實(shí)現(xiàn)快速開發(fā)應(yīng)用。
(2)BeX5平臺(tái)為公司已購軟件,無需其它額外費(fèi)用。
(3)平臺(tái)已經(jīng)上線多個(gè)自建系統(tǒng),擁有公司完整的組織架構(gòu)。
3 方案實(shí)施難點(diǎn)和問題
3.1 調(diào)整數(shù)據(jù)庫表結(jié)構(gòu)
想實(shí)現(xiàn)BeX5平臺(tái)和數(shù)據(jù)庫交互,訪問數(shù)據(jù)庫是前提和基礎(chǔ)。使用BeX5平臺(tái)獲取數(shù)據(jù)時(shí)遇到問題,原因?yàn)槿鄙賰蓚€(gè)重要字段。
3.1.1 行ID
平臺(tái)需要一個(gè)單獨(dú)字段作為行ID,oracle數(shù)據(jù)庫自身會(huì)為每條數(shù)據(jù)創(chuàng)建一個(gè)rowid,但平臺(tái)不能獲取,添加數(shù)據(jù)項(xiàng)fID作為平臺(tái)識(shí)別的行ID。
3.1.2 缺少version(版本)
BeX5利用字段version來解決并發(fā)沖突,反向映射數(shù)據(jù)后,必須增加字段version,默認(rèn)值0。
3.2 存儲(chǔ)過程調(diào)用
實(shí)現(xiàn)前、后臺(tái)交互,就是BeX5界面發(fā)出的指令,數(shù)據(jù)庫能夠接受并領(lǐng)會(huì)意圖從而執(zhí)行相應(yīng)操作。但是工作中所碰到的數(shù)據(jù)處理工作并非簡(jiǎn)單的幾句SQL語句即可完成,而是需要大量的SQL語句組成一個(gè)語句集去實(shí)現(xiàn)復(fù)雜算法,即存儲(chǔ)過程。用戶通過指定存儲(chǔ)過程的名字并給出參數(shù)(如果該存儲(chǔ)過程帶有參數(shù))來執(zhí)行它,那么調(diào)用存儲(chǔ)過程就等于執(zhí)行一個(gè)能夠?qū)崿F(xiàn)復(fù)雜算法的SQL語句集。
BeX5平臺(tái)前端UI基于html5+css3+js,后端采用JavaEE標(biāo)準(zhǔn)體系,主流可靠。因此,由用戶頁面(JavaScript語言)調(diào)用自定義Action(Java語言),再調(diào)用oracle數(shù)據(jù)庫存儲(chǔ)過程(SQL語言),解決調(diào)用數(shù)據(jù)庫存儲(chǔ)過程的問題。
3.3 參數(shù)傳遞
存儲(chǔ)過程執(zhí)行的過程中,參數(shù)的動(dòng)態(tài)變化可以告訴計(jì)算機(jī)我們的具體意圖,實(shí)現(xiàn)存儲(chǔ)過程的重用。以信息室為例,每個(gè)月都需要執(zhí)行存儲(chǔ)過程處理當(dāng)月井史,為每個(gè)月都編寫一個(gè)特定存儲(chǔ)過程是不現(xiàn)實(shí)的,通過把年月作為參數(shù)傳遞給存儲(chǔ)過程解決以上問題。
參數(shù)從用戶手中傳遞到后臺(tái)存儲(chǔ)過程需要多層傳遞:
(1)在用戶頁面上放置組件錄入?yún)?shù),再使用平臺(tái)封裝方法getValue()獲取參數(shù)值。
(2)使用param1.setString()方法將參數(shù)傳遞給Action。
(3)使用Java代碼調(diào)用相應(yīng)存儲(chǔ)過程,并將參數(shù)值傳遞給存儲(chǔ)過程。
至此,實(shí)現(xiàn)了將前臺(tái)用戶錄入的參數(shù)傳遞給oracle數(shù)據(jù)庫存儲(chǔ)過程。
3.4 異步處理
在實(shí)際應(yīng)用中,調(diào)用存儲(chǔ)過程導(dǎo)致用戶界面卡死。研究發(fā)現(xiàn)代碼為同步處理(順序執(zhí)行),執(zhí)行到存儲(chǔ)過程部分時(shí),由于數(shù)據(jù)量大、處理時(shí)間長(zhǎng),前臺(tái)長(zhǎng)時(shí)間接受不到反饋,系統(tǒng)會(huì)認(rèn)為當(dāng)前任務(wù)卡死,造成頁面未響應(yīng)。將代碼的執(zhí)行方式修改為異步處理(多線程執(zhí)行)解決以上問題。
3.5 Excel導(dǎo)入導(dǎo)出
日常工作中需要大量使用Excel,實(shí)現(xiàn)表格的導(dǎo)入導(dǎo)出十分必要。大部分情況僅需導(dǎo)入其中部分?jǐn)?shù)據(jù),而不是全部導(dǎo)入,通過xml文件來控制不同情況的導(dǎo)入需求。
4 現(xiàn)階段應(yīng)用成果
解決以上主要技術(shù)問題后,開發(fā)完成《油田開發(fā)數(shù)據(jù)管理系統(tǒng)》,實(shí)現(xiàn)了井史流程整改,系統(tǒng)主要功能模塊:
4.1 A2月報(bào)處理模塊
包含井史處理流程、數(shù)據(jù)加鎖、數(shù)據(jù)解鎖、井史處理、累計(jì)計(jì)算、打印井史等功能。
4.2 開發(fā)數(shù)據(jù)分類匯總處理模塊
包含分類匯總和自定義匯總參數(shù)錄入、一鍵處理。支持從excel導(dǎo)入自定義井號(hào)、處理結(jié)果展示和導(dǎo)出為excel表格等。
4.3 井史及匯總數(shù)據(jù)查詢展示模塊
數(shù)據(jù)查詢模塊提供了油井井史查詢(井口)、油井井史查詢(總),水井井史查詢和分層注水井井史查詢功能,支持多條件篩選。
5 結(jié)論
利用X5平臺(tái)實(shí)現(xiàn)與后臺(tái)數(shù)據(jù)庫的交互,在前臺(tái)開發(fā)平臺(tái)和后臺(tái)oracle數(shù)據(jù)庫間建立了一條橋梁,不僅限于現(xiàn)階段開發(fā)成功的應(yīng)用,同時(shí)能夠?yàn)榻窈蟮拈_發(fā)工作做技術(shù)積累。只要在數(shù)據(jù)控中可以通過SQL語句完成的數(shù)據(jù)操作都能通過以上技術(shù)實(shí)現(xiàn)前臺(tái)操作。
參考文獻(xiàn)
[1]明日科技.Java從入門到精通(第三版)[M].北京:清華大學(xué)書出版社,2012.
[2]Dacid Flanagan.李強(qiáng)等譯.JavaScript權(quán)威指南[M].北京:機(jī)械工業(yè)出版社,2011.
作者單位
大慶頭臺(tái)油田開發(fā)有限責(zé)任公司 黑龍江省大慶市 166512