BI 前端实践 18: 集成 DBD 功能及二次开发
实践目标
润乾的DBD功能是开源的,前端Javascript和后端JAVA都提供源码,可以把它作为一个功能模块集成到自己的信息系统中。有个性化需求时,可以基于它做二次开发。通过本篇实践,学会集成它的方法、了解其主要代码及位置。
集成润乾DBD
DBD中所展示的报表是润乾报表,不同于用设计器手工做出的报表(.rpx),DBD中是用润乾报表JAVA API动态生成的。集成DBD,必然也要集成润乾报表。
依赖文件
润乾报表内置了tomcat服务器,安装润乾报表后,能看到WEB应用根目录…/report/web/webapps/demo/,把这个目录下除WEB-INF/web.xml以外的文件全部复制到自己的WEB应用中,然后再修改配置。润乾报表中心及DBD都包含在其中。这种方式比较偷懒,有些功能用不到时,会有些多余的文件,但在不熟悉之前,免去了详细了解、挑选文件的麻烦。
一些主要的目录:
配置文件大多在WEB-INF下;
WEB-INF/lib下的raqsoftReport.jar、guide.jar是润乾报表、多维分析/DBD的主要JAVA程序;
raqsoft/guide/dbd2.0/下的css、img、js、jsp目录存放DBD功能的web文件。
修改配置
润乾web.xml要和自己的web.xml合并,注意listener、filter、servlet、taglib节点有顺序要求,需要按顺序逐步的合并,其中大多是润乾报表、报表中心的设置。直接涉及DBD功能的只有一个taglib文件,/WEB-INF/raqsoftAnalyse.tld中定义了DBD的tag类com.raqsoft.guide.tag.LayoutDashboardTag2.java:
<taglib>
<taglib-uri>/WEB-INF/raqsoftAnalyse.tld</taglib-uri>
<taglib-location>/WEB-INF/raqsoftAnalyse.tld</taglib-location>
</taglib>
raqsoftConfig.xml是润乾环境的主要配置文件,DBD中用到的数据源就在这里定义,复制其中的一个数据源标签,配置成自己数据库(Mysql/Oracle等等)的数据源:
运行中的各类型文件
DBD是大号的多维分析,所以也会涉及多维分析中用到的文件:
xlsx、txt、csv等数据文件,默认目录WEB-INF/files/fileData/;
数据处理脚本文件dfx,默认目录WEB-INF/files/dfx/;
多维分析文件olap,默认目录WEB-INF/files/dfx/。
这些目录在二次开发时,可以针对不同用户做个性化的设置,如张三的数据文件目录通过JS API设置guideConf.fileDataFolderOnServer="users/fileData/zhangsan/",李四设置guideConf.fileDataFolderOnServer="users/fileData/lisi/"
除此之外DBD还上传、管理了一些背景图片,默认目录是raqsoft/guide/dbd2.0/img/dbdStyleImage/。
编写一个能管理DBD的JSP主页
预先制作好了一个“简单.dbd”,在服务器上看到它再“WEB-INF\files\dbd”目录下,编写一个能够新建、编辑、发布预览DBD的dbdIndex.jsp:
访问这个JSP,点击相关链接,能在新弹出的窗口里(也可以用iframe嵌入的窗口)实现这些操作。新建DBD,用的是olaptabs.jsp;编辑时也用它,通过参数把要编辑的dbd传进去,olaptabs.jsp?dbd=/简单.dbd;发布预览时,用另外一个jsp,也是通过参数把要预览的dbd传进去,finalView.jsp?dbd=/简单.dbd。
给编辑页面增加一个清空按钮
DBD编辑页面没有提供清空按钮,通过修改相应jsp,增加js方法实现它,点击后能一下清除所有图表:
修改raqsoft/guide/dbd2.0/data.jsp,复制一个按钮,修改按钮名称,点击时触发clearDBD()函数:
在jsp最下方的js代码区域,定义clearDBD():
这时再访问编辑页面,点击按钮,就直接清空所有报表了。
去掉发布页面的“返回目录”
产品中的发布页面,顶端有返回目录的按钮。嵌入自己系统时,不需要顶端,可以修改finalView.jsp去掉它
删掉下面的html代码块就可以了:
不同用户使用自己的DBD目录
产品中默认的dbd都在WEB-INF/files/dbd/目录下,多用户系统使用时,混在一起互相干扰,就期望给每个登录用户设置一个自己的目录,在session里可以设置这个用户子目录:
在zhangsan子目录下只有张三.dbd
在界面上打开服务器dbd时,就只能看到zhangsan目录下的dbd了。
源代码
根据可能的集成需求,上面做了一些二次开发,更复杂的个性化改造,就需要对源代码有更深入的了解,下面了解主要代码的位置:
DBD的几个界面jsp在raqsoft/guide/dbd2.0/jsp/目录下;
DBD界面功能是用Javascript实现,主要文件都在raqsoft/guide/dbd2.0/js/目录下:
dashboard.js,实现dbd模块的主要逻辑;
dqlApi_d2.js、dqlreport_d2.js、query_d2.js、common_d2.js、where_d2.js等是从多维分析模块拷贝过来的,根据DBD的功能需求稍作修改,可以理解为润乾DBD是基于润乾多维分析做二次开发的一个范例。推而广之,读者也可以基于润乾多维分析,二次开发出一种自己的DBD;或基于润乾DBD,稍作修改,也能开发出适应自己的DBD。
专属DBD模块的JAVA代码不多,它的JSP标签类com.raqsoft.guide.tag.LayoutDashboardTag2.java是复制多维分析的AnalyseTag.java,针对DBD需求稍作了些修改;
com.raqsoft.guide.web.dbd.DDWData.java是处理数据的类;
多维分析中的处理web请求的类ActionResultPage.java中增加了三个管理DBD背景图片的操作:
对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅
嗯,还不太了解好多乾?