Eclipse BIRT问题解决汇总(不断更新)

Eclipse BIRT问题解决汇总(不断更新)
 

1.    复合JavaBean数据源

1.1 说明

在使用Eclipse BIRT进行报表开发时,会遇到使用复合型的JavaBean作为数据源的情况,例如Contact对象有一个Address类型的对应address,而Address对象又具有两个属性,分别为addressIdaddressName,在此种情况下应该使用Eclipse BIRT提供的“Script Data Source”进行数据源。如下将通过实例展现在Eclipse BIRT中如何使用复合JavaBean作为数据源。

所用环境说明:

IDE环境:birt-report-designer-all-in-one-2_2_1_1;、

Tomcat5.5.27

Eclipse BIRT版本:2.2.1

birt-runtime-2_2_1_1

1.2 开发实例

1.2.1 Java工程中创建复合JavaBeanContact.java

在集成了BIRTEclipse中建立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的关联JavaBeanAddress.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([email protected])

 
*/


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”,如下所示:

Eclipse BIRT问题解决汇总(不断更新)_第1张图片

在弹出对话框选择“Bussiness Intelligence… -> Report Project ”,如下图所示:

 

Eclipse BIRT问题解决汇总(不断更新)_第2张图片


而后点击“Next  >,在弹出对话框中输入报表工程的名称“birtreport”后,点击“Finish”按钮完成报表工程的创建。

1.2.5 创建报表

         选择报表工程“birtreport”后点击右键,选择“New –> Report”,如下图所示:

Eclipse BIRT问题解决汇总(不断更新)_第3张图片

 

在弹出窗口中输入报表的名称:helloBirt.rptdesign,点击“Finish”按钮完成报表的创建。

1.2.6 创建Scripted数据源

使用JavaBean作为数据源,需要创建Script数据源。首先打开“Data Explorer”视图,(若该视图被关闭,请使用“Show View”打开)。在“Data Explorer”中选择“Data Sources->New Data Source”,如下图所示:
     

创建数据源的弹出窗口如下图所示:

Eclipse BIRT问题解决汇总(不断更新)_第4张图片

 

在上述窗口中选择“Scripted Data Source”,在“Data Source Name”中输入数据源的名字,例如“Data Source”,点击“Finish”按钮完成数据源的创建。

1.2.7 创建数据集

在“Data Explorer”视图中点击“Data Sets->New Data Set”,弹出窗口如下所示:

Eclipse BIRT问题解决汇总(不断更新)_第5张图片

 

在“Data Set Name”中输入数据集的名称,例如“Data Set”,在“Data Source”中选择刚才创建的Scripted数据源,而后点击“Next >”按钮,输入列名和显示名称等信息,窗口如下所示:

Eclipse BIRT问题解决汇总(不断更新)_第6张图片

 

1.2.8 编写数据访问脚本

打开“helloBirt.rptdesign”,切换到“Script”,在“Data Explorer”视图中选择刚才创建的数据集,open对应的脚本如下所示:

count = 0;

cf = new Packages.amigo.report.ContactListFactory();

c = cf.createContactList();

对应图形如下所示:

Eclipse BIRT问题解决汇总(不断更新)_第7张图片

 

在“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工程拷贝到Tomcatwebapps下面,并将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

在浏览器的运行效果图如下所示:
Eclipse BIRT问题解决汇总(不断更新)_第8张图片

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,如下图所示:

Eclipse BIRT问题解决汇总(不断更新)_第9张图片

 

         在上图中点击“OK”按钮完成分组的创建。

2.2.4 部署与浏览

         部署的方法与上例相似,访问地址为:

http://localhost:8080/WebViewerExample/frameset?__report=groupByReport.rptdesign

         运行效果如下图所示:

Eclipse BIRT问题解决汇总(不断更新)_第10张图片

 

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.javaAddress.javaContactListFactory.java)拷贝到src目录下。并将helloBirt.rptdesigngroupByReport.rptdesign两个报表文件拷贝到WebRoot目录下。

3.2.2 拷贝BIRTWeb项目WebViewerExample的文件

         打开Tomcat下的WebViewerExample项目,其目录结构如下图所示:

Eclipse BIRT问题解决汇总(不断更新)_第11张图片

 

         将该目录下的两个子目录reportwebcontent拷贝到工程的WebRoot目录下。

         接下来进入WebViewerExample"WEB-INF目录,目录结构如下所示:

Eclipse BIRT问题解决汇总(不断更新)_第12张图片

 

         libplatformtlds三个子目录拷贝到Web工程的WebRoot"WEB-INF目录,并拷贝server-config.wsddviewer.propertiesweb.xml三个文件。到此所有文件都拷贝完毕。Web工程的结构如下图所示:

Eclipse BIRT问题解决汇总(不断更新)_第13张图片

         lib目录的结构如下图所示:

Eclipse BIRT问题解决汇总(不断更新)_第14张图片

3.2.3 部署与浏览

         部署reportintegrationTomcat下,启动成功后,访问路径类似如下所示:

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

报表输出格式:htmlpdf,缺省是html。对于frameset不起作用。

__isnull

指明一个参数是null,常用于字符串类型。如果提供参数且值为空: - 对于日期和数字类型,BIRT会将它们当作null处理。 - 对于字符串,BIRT会将它作为空字符串。因此,为了说明某个字符串是null,通常写为:__isnull=参数。

__locale

本地化选项,缺省是jvmlocale

__report

报表设计文件路径。

报表参数

报表参数参数值对,形式:参数名=参数值。对于frameset,直接在地址栏中输入参数名=参数值后回车,不会影响报表结果。虽然,此时选择"运行报表"时,弹出的参数值已经改变。

你可能感兴趣的:(Eclipse BIRT问题解决汇总(不断更新))