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