项目经验总结-Eclipse图表工具Birt的使用技巧(二)

    做为Eclipse图表工具Birt的使用技巧(一)的后续,上一篇主要说明了Birt报表建立和使用的基本步骤和过程,本文旨在介绍一些经常使用的技巧,都是比较实用并且通过我本人实践可行的,但愿能给须要的人带来一些帮助.javascript

    1.  报表参数传递

    参数传递的应用场景比较普遍,在Birt设计器中有两个位置涉及到参数,一个是DataSet数据集建立的时候,有一个Parameters选项,另外就是在Data Explorer中有一个Report Parameters,这里主要介绍后者.由于Birt参数的对外接口就是Report Parameters,数据集中的参数也要经过这个报表参数去设置. java

    首先新建一个报表参数,如图: jsp

     

    这里建立一个默认名称的参数,其中Display type表示这个参数的显示类型,与它边上的hidden选项对应,若是hidden不打勾,说明这个参数会以Birt默认的View界面的形式表现.能够是多种形式,就是弹出一个窗口,要用户输入,这不符合项目的须要,因此一般咱们将参数hidden.以下: 编辑器

     

    这时建立好了参数,说一点,这个参数的可做用范围是整张报表的rptdesign文件,在能够输入脚本和表达式的地方均可以经过params["NewParameter"].value使用.上面hidden复选框上面还有一个Is Requeired选项,若是勾选,意味必需要传递这个参数,不然报表会出错. 函数

    如今用这个参数,动态的改变一下数据集合,参数传递主要涉及几个问题,一个是URL传参,一个是同request传参,这是主要的两种传参方式,都会说明一下. 工具

    下面列出主要代码,分别书写在jsp页面(能够跳转到报表页)和数据集的脚本页. 测试

jsp页面:

<a href="javascript:fun()">View Report (reports/demo_report1.rptdesign)</a>
<script>
var str = 
"<%=basePath%>"+"frameset?__report=reports/report1.rptdesign&__format=HTML&NewParameter='";
str = str + escape(encodeURI("二十五味地黄金刚大力丸")) + "'";
function fun(){
   window.location = str ;
}
</script>

DataSet Script页面:

importPackage(Packages.java.lang);

var sample = java.net.URLDecoder.decode(params["NewParameter"].value,"UTF-8"); 
System.out.println("-----------------------" + sample + "-----------------------");
if(sample == null){
   this.queryText +=" where ITEM_NAME= '治糜康栓'";
   System.out.println("-----------------------" + this.queryText + "-----------------------");
}
else {
   this.queryText +=" where ITEM_NAME=" + sample ;
}

    上面就是URL地址栏传参的方式,在Script引入lang包是为了在控制台能够经过System.out进行输出,由于Birt内置脚本不支持alert等一些调试方法.它能够混合Java和Javascript脚本同时使用. this

    同时须要注意的是,URL传参会受到大小的限制,它和form表单的get提交时同一个道理.另外若是参数是中文须要进行特殊的函数处理,比较麻烦. spa

jsp页面:
<%
  request.getSession().setAttribute("NewParameter","二十五味鬼臼丸");
%>

DataSet Script页面:

importPackage(Packages.java.lang);
importPackage(Packages.javax.servlet.http);

var request = reportContext.getHttpServletRequest();

var sample = request.getSession().getAttribute("NewParameter"));

System.out.println("-----------------------" + sample + "-----------------------");
if(sample == null){
   this.queryText +=" where ITEM_NAME= '治糜康栓'";
   System.out.println("-----------------------" + this.queryText + "-----------------------");
}
else {
   this.queryText +=" where ITEM_NAME=" + sample ;
}

    这里我是经过request的Session进行传递的参数,request也支持其余的方式.这种方式传参没有长度限制和中文转码的要求..net

    2.  报表维度动态变换

    维度变化的应用场景在项目中应该也是比较多的,好比一个柱图根据用户下拉列表的选择不一样,根据不一样的维度统计一个度量.

    若是按照Birt以前的作法须要为每一个维度制做一个报表,这明显不符合咱们的须要.这个功能以前在网上没有找到具体的资料,尝试过经过Birt Char API和图表表达式拼凑的种种方式,最后试验出如今经过数据集计算列这种方式实现,你们也能够本身尝试下别的方法.

    继续用以前的报表文件,修改它的数据集,定义一个计算列,这个列经过参数不一样,绑定不一样的真实列.如图:

     

    例子写的比较简单,若是传入的参数是1,那么这个计算的列的实际值就是ITEM_CLASS不然就是CLASS_ON_MR.最后数据集中如图:

    

    数据集修改完毕,如今去修改Cube,在Cube里咱们实际上须要的是dimension_parma这个维度,可是必需要将全部涉及到的维度,就是这个dimension_parma条件中包含的维度都加入到cube的维度中.以下:

     

    如今Cube修改完毕,去修改图表里面的数据绑定.直接将dimension_parma绑定到X轴.如图:

     

    如今测试一下,使用最简单的URL传参因此部署一下,将项目发布到Tomcat,访问结果以下:

    首先传入参数值为1

     

    改变,传入参数值为2

     

    这样就能够实现同一张报表,根据参数不一样,显示不一样维度的结果,一样的操做除了图表,还适用于交叉表格,这里就不演示了.

    3.  报表钻取

    BIRT的钻取说白了就是网页上的超连接,点击连接会出现另外一个页面而已,而须要注意的就是它能够以当前报表上的数据为查询条件进行查询,并在下一个页面中进行显示。


    说明其步骤分为以下两步:

    1、 准备两张报表,固然两个报表某些地方是须要有关联关系的.

    我准备了两张报表,1是告警种类的统计信息,其参数为别为起始时间与结束时间。2是统计信息的明细信息,其参数为超时间、结束时间及主机名称。两个报表是经过报表1的主机名及输入报表的起止时间为关联进行关联的。

    2、 为两张报表创建关联关系.

    一、 选择要关系的数据字段并在属性编辑器中选择‘超级连接’。

     

    二、 点击编辑,在弹出的对话框中选择钻取功能。

     

    三、 在‘第1步’中选择报表文件。

     

    四、 肯定后在在下面的‘报表参数’处会变成白色,在参数下的第一行单击鼠标左键会出现下拉列表,在其中选择要使用的参数,要注意的是有的版本只能逐行的这么点击,点击其它地方是没有反应的。

     

    五、选择好参数后点击值处会变成以下形式,点击出现的按钮为参数设值,若是没有为参数设置必须的值那么点击主页面的连接后会弹出报表2的参数输入框要求输入必须的参数。

     

    五、 在弹出的表达式生成器中的类别会有可供选择的几个大类型,通常我用的是头两个,其中第一个是主报表用的数据集中可用的数据,以下图所示,第二个是报表参数,就是主报表中输入的参数。

     

    六、 这是我设置好的参数,肯定后报表的连接部分便结束了。

    

    最后发两张报表的运行效果图。

    一、这是主报表,告警数量后会进行钻取。

     

    二、这是钻取后显示的页面。

     

    上面就是报表钻取的方式,这里的超连接也能够设置在图表的Format Chart这个部分,这里有交互的相关设置.

    由于页面大小篇幅限制的缘由,本文就先介绍参数传递,维度变换和报表钻取三个技巧,另开一篇Eclipse图表工具Birt的使用技巧(三)继续介绍,未完待续.

相关文章
相关标签/搜索