Adhoc 技术分析
页面所有的信息都在两个js的资源包:
/webContent/adhoc/js/common/ui/messages/nls/message_strings.js
/webContent/adhoc/js/ui/messages/nls/message_strings.js
汉化需要在/webContent/adhoc/js/ui/messages/nls/下面新建zh-cn文件夹,并将nls/message_strings.js复制到/webContent/adhoc/js/ui/messages/nls/zh-cn,然后将message_strings.js的相应的英文翻译为中文。
注意:如果没有找到zh-cn下的message_strings.js,系统会采用/nls/message_strings.js。所以直接修改/nls/message_strings.js也可以。模型、视图等信息要修改metadata里面的地方,具体参见下文metadata designer使用指南。
参考文献:http://wiki.pentaho.com/display/PentahoDoc/Localization
2. 报表模版
模版位于Solutions/system/waqr/templates下面,Solutions为pentaho的方案。
新建自己的文件夹,index.xml中描述要建立的文件夹的信息以及其它信息,这个文件很重要,系统会依照它来标示一个模版。简单的变化可以修改report.xreportspec、thumbnail.png等相关文件里面的内容,更高的要求要用Report Designer来做。详情参照后文Report Designer使用指南。
index.xml,report.xreportspec等文件具体参数的含义请参照参考文献。
参考文献:
http://wiki.pentaho.com/display/ServerDoc1x/Adhoc+Reporting+Templates
3. metadata designer指南
这里面涉及了一些概念如 domain、business models、business table、business view等,要先有所了解,可以参见 http://blog.csdn.net/wengyupeng/archive/2008/08/07/2782655.aspx
或去http://d.download.csdn.net/source/479228下载,我做的一点概念翻译。
首先要pentaho-metadata-editor,打开以后
连接选择要连接的数据库
然后创建业务模型、关系、视图等
各种操作可以通过右键、提示信息等完成。完成保存以后,可以通过菜单file下面的publish来发布到solution里面。具体如下图,
发布密码在Solutions/system/publisher_config.xml里面设定,用户、密码为登陆pentaho平台的用户、密码(password默认)。
更多信息参照参考文献。
参考文献:http://wiki.pentaho.com/display/PentahoDoc/Pentaho+Metadata+Editor
4. Report designer指南
要使用pentaho- Report-designer,打开以后
左边为一些可拖移的控件
右边是结构、属性
单击data sets右键,可以和数据库连接。
报表函数提供很多函数作为数据计算的工具,可以依据自己要求向报表里面添加
File 菜单下面的publish to server 可以用来发布做好的报表到solution
Import pentaho reporting report definition (xml) 可以导入 xml和.xreportspec(模版文件)文件
通过report wizard可以快速生成一些既有格式的报表,最后生成的文件为.xreportspec
其它具体操作细节可参照参考文献。
参考文献:http://wiki.pentaho.com/display/Reporting/Report+Designer
5. adhoc js概述
Adhoc 的首页是waqr.html,用到了很多js 以及ajax的dojo包。
所有的页面初始化都是通过html标签的id进行的,比如页面的
<td id='busyContainer' style='width:100%;'>
Js 里面会依据'busyContainer',进行相应的初始化,所以要跟踪任何控件只要在eclipse里面搜对应的id就可以。上面的<td id='busyContainer'对应的效果为
在webContent/adhoc/js目录下发应了adhoc相应的功能结构
Controller里面的Controller.js是整个部分的控制器,负载加载model等。RepositoryBrowserController.js是负责页面从solution获取路径的,model里面的js 负责将metadata editor 生的metadata.xmi(位于Solutions/samples下面)文件转化分解为系统的数据格式。结果如下图所示
这些里面的数据,都是model里面的js从metadata.xmi提取出来的。
有几个重要的js ,位于/webContent/adhoc/js/ui下面
WizPg0.js-WizPg3.js对应的adhoc查询的1-4步。WaqrWizard.js是总的控制器。这几个js是分析页面逻辑的入口。
其它每个部分对应一个js,具体不再赘述。2页左边位置,对应的js是AvailableItemsCtrl.js。