利用BeX5平台实现与后台数据库的交互应用
2017-07-05张泽恩
张泽恩
摘 要本文以软件开发为手段,解决当前头台公司在数据利用方面所面临的问题。利用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