1. 复合JavaBean数据源
1.1 说明
在使用Eclipse BIRT进行报表开发时,会遇到使用复合型的JavaBean作为数据源的情况,例如Contact对象有一个Address类型的对应address,而Address对象又具有两个属性,分别为addressId和addressName,在此种情况下应该使用Eclipse BIRT提供的“Script Data Source”进行数据源。如下将通过实例展现在Eclipse BIRT中如何使用复合JavaBean作为数据源。
所用环境说明:
l IDE环境:birt-report-designer-all-in-one-2_2_1_1;、
l Tomcat:5.5.27;
l Eclipse BIRT版本:2.2.1
l birt-runtime-2_2_1_1。
1.2 开发实例
1.2.1 在Java工程中创建复合JavaBean类Contact.java
在集成了BIRT的Eclipse中建立Java工程:birtJavaProject,并建立amigo.report包,并在该包下建立复合JavaBean的类:Contact.java,该类的代码如下所示:
package amigo.report;
public class Contact {
private String firstName;
private String lastName;
private String phoneNum;
private Address address;
public Contact(
String firstName, String lastName,
String phoneNum, Address address){
this.firstName = firstName;
this.lastName = lastName;
this.phoneNum = phoneNum;
this.address = address;
}
// 省略getter/setter方法
}
1.2.2 在Java工程创建复合JavaBean的关联JavaBean类Address.java
接下来在amigo.report包下建立Contact类关联的JavaBean类,代码如下所示:
package amigo.report;
public class Address {
private String addressId;
private String addressName;
public Address(String addressId, String addressName) {
this.addressId = addressId;
this.addressName = addressName;
}
// 省略getter/setter方法
}
1.2.3 在Java工程中创建数据工厂类ContactListFactory.java
在Java工程中还需要创建制造数据的工程类:ContactListFactory.java,该类的代码如下所示:
package amigo.report;
/** *//**
* 数据制造工厂类.
* @author AmigoXie(xieingxing1121@126.com)
*/
public class ContactListFactory {
public Contact[] createContactList(){
Contact[] c = new Contact[10];
Address address1 = new Address("1", "address1");
Address address2 = new Address("2", "address2");
Address address3 = new Address("3", "address3");
Address address4 = new Address("4", "address4");
c[0] = new Contact("stavros", "kounis", "2310886269", address1);
c[1] = new Contact("dimitris", "kounis", "2310888270", address2);
c[2] = new Contact("dimitris", "adamos", "2310998417", address3);
c[3] = new Contact("nikos", "koufotolis", "2321013770", address4);
c[4] = new Contact("谢", "星星", "1399998383", address1);
c[5] = new Contact("阿", "蜜果", "13535353", address1);
c[6] = new Contact("test0", "test00", "1388996969", address1);
c[7] = new Contact("test1", "test11", "33333", address3);
c[8] = new Contact("test2", "test22", "44444", address2);
c[9] = new Contact("test3", "test33", "66666", address3);
return c;
}
}
截至此步,Java源码已经编写完毕,余下的工作是做报表编程。
1.2.4 创建报表工程
在开发环境中选择“New”-> “Project”,如下所示:
在弹出对话框选择“Bussiness Intelligence…” -> “Report Project”,如下图所示:
而后点击“Next >”,在弹出对话框中输入报表工程的名称“birtreport”后,点击“Finish”按钮完成报表工程的创建。
1.2.5 创建报表
选择报表工程“birtreport”后点击右键,选择“New” –> “Report”,如下图所示:
在弹出窗口中输入报表的名称:helloBirt.rptdesign,点击“Finish”按钮完成报表的创建。
1.2.6 创建Scripted数据源
使用JavaBean作为数据源,需要创建Script数据源。首先打开“Data Explorer”视图,(若该视图被关闭,请使用“Show View”打开)。在“Data Explorer”中选择“Data Sources”->“New Data Source”,如下图所示:
创建数据源的弹出窗口如下图所示:
在上述窗口中选择“Scripted Data Source”,在“Data Source Name”中输入数据源的名字,例如“Data Source”,点击“Finish”按钮完成数据源的创建。
1.2.7 创建数据集
在“Data Explorer”视图中点击“Data Sets”->“New Data Set”,弹出窗口如下所示:
在“Data Set Name”中输入数据集的名称,例如“Data Set”,在“Data Source”中选择刚才创建的Scripted数据源,而后点击“Next >”按钮,输入列名和显示名称等信息,窗口如下所示:
1.2.8 编写数据访问脚本
打开“helloBirt.rptdesign”,切换到“Script”,在“Data Explorer”视图中选择刚才创建的数据集,open对应的脚本如下所示:
count = 0;
cf = new Packages.amigo.report.ContactListFactory();
c = cf.createContactList();
对应图形如下所示:
在“Script”的下拉框中选择“fetch”,对应的脚本如下所示:
if (count <= c.length - 1){
row["firstName"] = c[count].getFirstName();
row["lastName"] = c[count].getLastName();
row["phoneNum"] = c[count].getPhoneNum();
row["addressId"] = c[count].getAddress().getAddressId();
row["addressName"] = c[count].getAddress().getAddressName();
count ++;
return true;
}
1.2.9 设计报表视图
视图中选择layout,简单的将我们建立的data set 拖到报表视图中即可,完成这步以后可以在preview中查看预览效果了。
1.2.10 部署与浏览
将birt-runtime-2_2_1_1目录下的WebViewerExample工程拷贝到Tomcat的webapps下面,并将helloBirt.rptdesign报表文件拷贝到Tomcat根目录/webapps/WebViewerExample工程下。
接着在:Tomcat根目录/webapps/WebViewerExample/WEB-INF目录下建立classes子目录,存放Java工程中的三个类文件对应的class文件,将birtJavaProject/bin下的amigo目录整个拷贝到Tomcat根目录/webapps/WebViewerExample/WEB-INF/classes目录,完成报表文件的部署。
访问地址为:
http://localhost:8080/WebViewerExample/frameset?__report=helloBirt.rptdesign
在浏览器的运行效果图如下所示:
2. 对JavaBean数据源的数据进行分组
2.1 说明
在复合JavaBean作为数据源的实例中,展示了如何进行复合JavaBean数据的展示,但是在某些情况下,需要对JavaBean进行分组显示,本实例将展示如何对JavaBean数据源进行分组显示。
2.2 开发实例
2.2.1 创建报表
在报表工程中创建报表groupByReport.rptdesign,创建方式与上例一样。
2.2.2 创建数据源和数据集
因为该实例的数据源和数据集与上例相同,只需要在“Data Explorer”视图中将数据源和数据集拷贝到本实例即可,编写的数据访问脚本和设计的报表也与上例一样。
2.2.3 对数据进行分组
接下来将向读者展示如何按照addressId对数据进行分组,首先在“Layout”中选择table后,点击右键,选择“Insert Group”-> “Above”,如下所示:
弹出的新建分组的窗口如下所示,在窗口中输入分组的名称,例如:addressIdGroup,在“Group on”中选择“addressId”,在“Interval”中选择“Interval”,在“Range”中输入1,如下图所示:
在上图中点击“OK”按钮完成分组的创建。
2.2.4 部署与浏览
部署的方法与上例相似,访问地址为:
http://localhost:8080/WebViewerExample/frameset?__report=groupByReport.rptdesign
运行效果如下图所示:
3. 将BIRT集成到现有Web项目中
3.1 说明
在上面的实例中,将报表和相关的类文件放在BIRT对应的Web项目WebViewerExample中来进行报表的查看和浏览,但是在实际的开发过程中,已经有Web项目,将报表的部分部署到WebViewerExample项目,而其它的部分部署到另一个Web项目,显然不太合适,本实例讲解如何将BIRT集成到现有的Web项目中,并进行报表的查看。
参考文章:http://blog.csdn.net/bjd14/archive/2006/12/25/1458947.aspx
3.2 集成实例
3.2.1 新建项目的Web工程
在MyEclipse新建一个Web Project,名为reportintegration,将上例中的amigo.report包以及其下的所有三个类(Contact.java、Address.java和ContactListFactory.java)拷贝到src目录下。并将helloBirt.rptdesign和groupByReport.rptdesign两个报表文件拷贝到WebRoot目录下。
3.2.2 拷贝BIRT的Web项目WebViewerExample的文件
打开Tomcat下的WebViewerExample项目,其目录结构如下图所示:
将该目录下的两个子目录report和webcontent拷贝到工程的WebRoot目录下。
接下来进入WebViewerExample"WEB-INF目录,目录结构如下所示:
将lib、platform和tlds三个子目录拷贝到Web工程的WebRoot"WEB-INF目录,并拷贝server-config.wsdd、viewer.properties和web.xml三个文件。到此所有文件都拷贝完毕。Web工程的结构如下图所示:
lib目录的结构如下图所示:
3.2.3 部署与浏览
部署reportintegration到Tomcat下,启动成功后,访问路径类似如下所示:
http://localhost:8080/reportintegration/frameset?__report=groupByReport.rptdesign
运行效果与上例一样,不再赘述。
3.2.4 访问参数说明
在访问时,路径实例如下所示:
http://localhost:8080/reportintegration/frameset?__report=groupByReport.rptdesign
其中”__report”表示访问的报表文件的路径,若将groupByReport.rptdesign报表文件拷贝到WebRoot/report目录下,则访问路径变成:
http://localhost:8080/reportintegration/frameset?__report=report/groupByReport.rptdesign
其它访问参数的说明如下所示:
选项
|
说明
|
__format
|
报表输出格式:html或pdf,缺省是html。对于frameset不起作用。
|
__isnull
|
指明一个参数是null,常用于字符串类型。如果提供参数且值为空: - 对于日期和数字类型,BIRT会将它们当作null处理。 - 对于字符串,BIRT会将它作为空字符串。因此,为了说明某个字符串是null,通常写为:__isnull=参数。
|
__locale
|
本地化选项,缺省是jvm的locale。
|
__report
|
报表设计文件路径。
|
报表参数
|
报表参数参数值对,形式:参数名=参数值。对于frameset,直接在地址栏中输入参数名=参数值后回车,不会影响报表结果。虽然,此时选择"运行报表"时,弹出的参数值已经改变。
|
posted on 2009-05-03 12:11
阿蜜果 阅读(14859)
评论(11) 编辑 收藏 所属分类:
Eclipse BIRT