吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6886|回复: 1
收起左侧

[Java 转载] Eclipse中实现Birt 的Java事件处理

[复制链接]
hy_xyz 发表于 2014-1-3 11:26
最近项目刚好遇到这个问题,需要用到,在网上找了好些资料 就这个比较详细,有图有真相。虽然和我做的东西不一样但是还是触类旁通还是可以的。

百灵报表(BIRT)是一个非常实用的开源报表工具,它不仅能满足商业智能领域报表设计的一般需求,还可以通过与 Java 语言相结合,来实现一些更为丰富的个性化报表样式。本文通过一个简单的实例,在 Eclipse 中创建一个单一工程,使用 Java 语言实现百灵报表(BIRT)的事件响应处理程序。引导读者在短时间内对百灵报表(BIRT)有一个初步了解,并掌握使用 Java 语言创建百灵报表(BIRT)事件响应处理程序的基本步骤和调试方法。

    概述

    在新近发布的 Eclipse Ganymede 软件包站点上,提供了一个新的软件包 Eclipse IDE for Java and Report Developers(图一),它来自 Eclipse 社区的顶级项目 BIRT(Business Intelligence and Reporting Tools,参见参考资料中“获得产品和技术”一栏)。

    图 1. Eclipse Ganymede 软件包站点

    这是一个具有强大功能的商业智能报表开发工具,它有一个很好听的中文名字,叫百灵报表。到本文撰写时为止,按照 Eclipse 系列划分,该软件包的最新版本是3.4.0,按照百灵报表(BIRT)的系列划分,它的最新版本是2.3.0.这也就是说,该软件包是由3.4.0的 Eclipse 平台与2.3.0的百灵报表(BIRT)插件的集成而成。本文以下所提到的百灵报表(BIRT)和百灵报表(BIRT)设计器,均指该软件包。

    作为一个专门的报表设计工具,开发者使用百灵报表(BIRT)设计器,可以完成大多数商业智能领域的数据模型组建和报表布局设计。但是,在实践中经常会遇到一些比较特殊的个性化需求,很难用一般的设计手段来实现。这往往需要开发者定制相应的报表事件响应处理程序来解决。百灵报表(BIRT)设计器提供了一个 JavaScript 的开发和调试环境,开发者可以很方便地使用 JavaScript 来实现报表的事件响应处理程序。同时,百灵报表(BIRT)也具有直接调用 Java 编写的事件响应处理类的机制,尽管与 JavaScript 相比,使用 Java 来完成这一工作显得有些复杂,但对于习惯使用 Java 语言、或者希望利用丰富的 Java 资源的开发者来说,这种办法是一个相当好的选择。

    本文接下来就通过一个简单的实例,在 Eclipse 中创建一个单一工程,引入样例报表,使用 Java 语言实现报表事件响应处理程序。引导读者在短时间内对百灵报表(BIRT)有一个初步了解,并掌握使用 Java 语言创建百灵报表(BIRT)事件响应处理程序的基本步骤和调试方法。

准备

    首先在 Eclipse Ganymede 软件包站点(参见参考资料中“获得产品和技术”一栏) 下载百灵报表(BIRT - Eclipse IDE for Java and Report Developers) ,下载之后解压缩到系统,即完成安装。

    建立工程

    按照如下步骤,建立一个Java工程,同时引入BIRT Engine API JAR 包。

    图 2. 建立工程

    1. 启动百灵报表(BIRT),在主菜单中选择 File -> New -> Project…… 菜单项,打开 New Project 对话框。

    图 3. New Project 对话框

    2. 在 New Project 对话框中选择 Java -> Java Project 项目,单击 Next 按钮,打开 New Java Project 对话框。

    图 4. New Java Project 对话框

3. 在 Project name 处输入“BirtWithJava”作为项目名称,单击 Next 按钮,打开 Java Settings 对话框。

    图 5. Java Settings 对话框

    4. 在 Java Settings 对话框中选择 Libraries 页面,单击 Add External JARs…… 按钮。

    图 6. Libraries 页面

    5. 选择 “<百灵报表(BIRT)根目录>/plug-ins/org.eclipse.birt.report.engine_2.3.0.v20080616.jar” 文件,添加为工程类库。这个 JAR 包文件是百灵报表(BIRT) 的 Engine API.对于不同版本的百灵报表(BIRT),该文件的文件名中所附带的版本信息是不一样的。

    图 7. 引入 Engine API

    6. 单击 Finish 按钮,当系统提示 “Open Associated Perspective?” 时,单击 Yes 按钮,如下结构的 Java 工程被创建出来。

    图 8. BirtWithJava 工程


导入样例报表

    按照如下步骤,导入一个样例报表。

    图 9. 打开 Show View 对话框

    1. 在主菜单中选择 Window -> Show View -> Other…… 菜单项,打开 Show View 对话框。

    图 10. Show View 对话框

    2. 在 Show View 对话框中选择 Report and Chart Design -> Report Examples 项目,单击 OK 按钮,打开 Report Examples 窗口。

    图 11. Report Examples 窗口

    3. 在 Report Examples 窗口的 Sample Reports 列表中选择 Reporting Feature Examples -> Cross tab -> CrosstabSampleRevenue.rptdesign 项目。这是一个样例报表,它采用交叉表格式来展示一份商品销售情况报告,其数据来自百灵报表(BIRT)内嵌的一个样例数据库。交叉表的具体用法较为复杂,本文不做过多讨论。选择好样例报表后,单击窗口右上角的导入按钮,打开 Project Name 对话框。

    图 12. Project Name 对话框

    4. 在 Project Name 对话框中输入 BirtWithJava,单击 OK 按钮,系统显示 Project Exists 提示框。

    图 13. Project Exists 提示框

    5. 在 Project Exists 提示框中单击 Proceed 按钮,将选择的样例报表 CrosstabSampleRevenue.rptdesign 导入到本文的示例工程 BirtWithJava 中。导入成功后,此报表被自动打开。

    图 14. 样例报表

    6. 单击报表 CrosstabSampleRevenue.rptdesign 的 Preview 页面,预览此报表。

    7. 系统显示处理状态,表示正在生成报表,这可能需要等待几十秒钟的时间。

    图 15. 预览报表

    8. 当系统处理完成后,报表被显示出来。这是一份商品销售报告,显示的是每类商品的季度销售额以及累计情况。接下来,我们尝试用 Java 创建一个事件响应处理类,把每季度销售额在10万美元以上的数据用红色标示出来。


创建 Java 类

    按照如下步骤,用 Java 创建百灵报表(BIRT)的事件响应处理程序。

    图 16. 创建 Java 类

    1. 在主菜单中选择 File -> New -> Class 菜单项,打开 New Java Class 对话框。

    图 17. New Java Class 对话框

    2. 在 New Java Class 对话框的 Name 处输入 DataItemEventHandler ,作为该事件响应处理类的名字。单击 Browse…… 按钮,打开 Superclass Selection 对话框。选择或直接输入 "org.eclipse.birt.report.engine.api.script.eventadapter.DataItemEventAdapter" 作为父类。

    3. 单击 Finish 按钮,一个名称为 DataItemEventHandler.java 的文件被创建出来,在这个文件里输入如下代码:

    清单 1. 报表事件响应处理类


import org.eclipse.birt.report.engine.api.script.IReportContext;
import org.eclipse.birt.report.engine.api.script.eventadapter.DataItemEventAdapter;
import org.eclipse.birt.report.engine.api.script.instance.IDAtaItemInstance;

public class DataItemEventHandler extends DataItemEventAdapter {

public void onRender(IDataItemInstance data, IReportContext reportContext) {
super.onRender(data, reportContext);

if (((Double) data.getValue()).doubleValue() > 100000) {
data.getStyle().setColor("red");
}
}
}

    在上面这段代码中,我们重写了 DataItemEventHandler 类的 onRender 方法。该方法带有两个参数,其中 data 就是当前我们要操作的数据实例,在这里我们通过条件判断来把大于10万美元的数据设置为红色。另外一个参数 reportContext 则是一个全局的上下文对象,利用这个上下文对象,可以在不同的事件响应处理类中传递信息。

    4. 确认无误后存盘,报表事件响应处理类创建完成。

Java 类与报表关联

    按照如下步骤,将创建好的 Java 事件响应处理类和样例报表关联起来。

    图 18. 打开报表属性页面

    1. 切换到报表 Layout 页面,在主菜单中选择 Window -> Show View -> Other 菜单项,打开 Show View 对话框。

    图 19. Show View 对话框

    2. 在 Show View 对话框中选择 Report Design -> Property Editor 项目,单击 OK 按钮,打开 Property Editor 窗口。

    图 20. Property Editor 窗口

    3. 选中报表设计区中的第一个 revenue 数据项,这就是我们要操作的季度销售数据。

    4. 在 Property Editor - Data 窗口左侧选择 Event Handler 页面。

    5. 在 Event Handler 页面中,单击 Browse…… 按钮,打开 Class Selection 对话框。

    图 21. Class Selection 对话框

    6. 在 Class Selection 对话框中选择 DataItemEventHandler 类,单击 OK 按钮,完成报表数据项和 Java 事件响应处理类的关联。

    图 22. 关联 Java 类

    7. 单击报表的 Preview 页面,可以看到10万美元以上的季度销售数据(不包括累计数据)都被标示为红色了。这表明我们定制的 Java 事件响应处理类已经和报表成功关联起来。

    图 23. 预览报表

调试 Java 类

    对于任何一个开发工作,调试都是不可避免的。百灵报表(BIRT)提供了一个调试器,开发者可以利用这个调试器,对定制的 Java 事件响应处理类进行调试。

    1. 在 Java 类 DataItemEventHandle 中设置断点。

    图 24. 设置断点

    2. 在主菜单中选择 Run -> Debug Configurations…… 菜单项,打开 Debug Configurations 对话框。

    图 25. Debug Configurations 对话框

    3. 在 Debug Configurations 对话框中,选择 Report 列表项目,单击鼠标右键。在弹出菜单中,选择 New 菜单项,创建一个新的调试环境配置 New_configuration.

    图 26. 配置调试环境

    4. 在 Main 页面中,选择 Debug type 为 Java,并选中 Output 中的 “Open generated file when finished”。


5. 单击 Classpath,打开 Classpath 页面。

    图 27. Classpath 页面

    6. 在 Classpath 页面中,选中 User Entries 项目,单击 Add Projects…… 按钮,打开 Project Selection 对话框。

    图 28. Project Selection 对话框

    7. 在 Project Selection 对话框中,选择 BirtWithJava 工程项目,单击 OK 按钮,回到 Debug Configurations 对话框。

    图 29. Debug Configurations 对话框

    8. 在 Debug Configurations 对话框中, 单击 Debug 按钮,开始调试。

    9. 系统准备进入调试状态,这可能需要几十秒钟的时间。当提示 “Confirm Perspective Switch” 对话框时,单击 Yes 按钮,进入调试画面。

    图 30. 开始调试

    10. 系统运行停留在断点处,开始调试。调试完成后,去除断点,单击 Resume (F8) 按钮继续运行,最终生成的报表在外部浏览器中被打开。

    图 31. 运行结果

    结束语

    众所周知, Java 语言具有良好的结构性和丰富的程序资源。利用本文所提供的方法,可以充分提高报表事件响应处理程序的算法复杂性,实现普通设计手段难以达到的效果。但需要注意的是,当设计好的报表被部署到 WEB 时,采用 Java 实现的事件响应处理类是在百灵报表(BIRT)的服务器端被加载和运行的。因此,除非能够保证客户端和服务器端总是运行在同一台计算机上,否则任何试图利用本文所描述的方法,在客户端与用户进行交互的尝试,都有可能导致失败。


(本文转载自:http://java.chinaitlab.com/Eclipse/759651.html  如涉及侵权,请联系删除 谢谢)


免费评分

参与人数 1热心值 +1 收起 理由
我是用户 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

斷了緣ゞ遇見妳 发表于 2014-8-3 13:54
头大啊...........
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 18:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表