基于 BIRT 的报表开发
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中国科技论文在线
基于 BIRT 的报表开发
夏俊 1,邹仕洪 1,林宇 2
1. 北京邮电大学网络与交换技术国家重点实验室,北京 (100876) 2. 北京网秦天下科技有限公司,北京 (100013)
E-mail:xiajun99@
摘 要:BIRT 是一个基于 Eclipse 的开放源代码报表系统,主要用在基于 Java 与 J2EE 的 Web 应用程序上。
BIRT 主要由两部分组成:一个基于 Eclipse 的报表设计器,一个可以部署 到应用服务器的运行期组件。
BIRT 拥有和 Dreamweaver 一样灵活的操作界面, 可以像画 table 一样画报表,也可以生成图片、导出 excel 和 html。
本文通过对 BIRT 特性的研究,给出了 如何利用 BIRT 生成统计报表的方法。
关键词:BIRT;报表;特性 中图分类号:TP311
1.引言
报表就是用表格、图表等格式来动态显示数据[1]。
在没有计算机以前,人们利用纸和 笔来记录数据。
通过这种方式记录数据,有许多不便之处,比如:报表数据和报表格式是紧 密结合在一起的,都记在同一个本子上,数据的表现形式几乎只有记账的人才能理解,而且 这种形式难以修改。
随着计算机和互联网技术的不断进步, 越来越多的企业借助互联网络广 泛地从事商品服务,人们开始利用计算机处理数据,通过界面设计功能来生成和展示报表。
由于报表可以帮助企业访问、格式化数据,并把数据信息以可靠和安全的方式呈现给 使用者,可以深入洞察企业运营状况,是企业发展的强大驱动力。
报表成了企业管理的基本 措施和途径,是企业的基本业务要求。
在商务智能领域,一个最重要目标就是在Web 环境 上实现报表功能,提供一个可达的、易用的报表设计环境。
企业对可灵活操作的报表需求也 来越强烈,各种报表工具也应运而生。
BIRT是一个基于 Eclipse 平台的报表工具[2],特别之 处在于它是以 Java 和 J2EE 的Web应用程序为基础。
2.基本概念
2.1 报表组成
BIRT 报表包含四个部分:数据源、数据转换、业务逻辑、展现[3]。
数据源:数据库、Web 服务、Java 对象,这些都可以作为 BIRT 报表源。
数据转换:报表通过对数据的分类、统计、过滤以及分组来适应用户需求。
数据库能实 现这些功能,当遇到普通文件和 Java 对象时 BIRT 必须以 "simple" 数据源方式处理。
BIRT 允许复杂的操作,比如总合分组、整体共计的百分比,等等。
业务逻辑:真实世界的数据很少提供理想的、结构良好的报表,许多报表要求用具体逻 辑把原始数据转换成用户的有用信息。
如果该逻辑仅仅用于该报表,可以用 BIRT 的 JavaScript 脚本支持。
如果程序中已包含这些逻辑,可以调用已有的 Java 代码。
展现:一旦数据准备好了,可以在很大的范围内选择表现形式,表格、图表、文字等等 都可以。
单一数据集可以有多种方式表现,而单一报表可以表现多个数据集。
2.2 报表种类
BIRT 报表的主要种类有:列表,图表,交叉表,信函和文档,混合报表等。
-1-
中国科技论文在线
3.开发与部署
3.1 安装
BIRT 有两种方式安装[4]:
第一种是下载包含了 BIRT 的 eclipse,这种方法最方便(推荐使用) 。
下载地址: /downloads/download.php?file=/technology/epp/downloads/release/ganyme de/SR2/eclipse-reporting-ganymede-SR2-win32.zip 第二种是下载 BIRT 的插件安装至已有的 eclipse 下。
需要以下插件: Graphics Editor Framework (GEF) runtime Eclipse Modeling Framework (EMF) runtime
3.2 报表设计器
报表设计器是 BIRT 的一部分,它提供拖拽能力,可以快速设计报表,主要由报表编辑 器、属性编辑器、数据浏览区域、调色板、大纲视图等组成。
图 1 报表设计器
(1)报表编辑器用来构建报表,并且定位和格式化报表元素。
在该视图中有很多标签页, 例如:布局、母板页、脚本、XML 源以及预览。
布局标签页用来对报表进行可视化布局并且提供了拖拽的功能。
母板页用来设定整个报表的头、脚及背景图片。
脚本标签页提供了对 JavaScript 编辑器的访问。
XML 源标签页可以显示用于报表设计 XML 源代码,在此标签页中可以编辑 XML 代码。
预览标签页可以快速地将报表转化为 HTML,浏览页面实际效果。
-2-
中国科技论文在线
型,属性窗口中显示一些通用设置,例如样式、宽度和字体信息。
(2)属性编辑器用来设置报表元素的属性。
视图中显示项目为报表编辑器中所选的元素类
(3)数据浏览区域可添加报表的数据源、数据集以及报表查询条件等。
数据源就是数据连接。
数据集是可执行的查询以及该查询所返回的特定的列。
BIRT 还提供了一个叫做 Joint Data Set 的特殊数据集以使用内外连接来整合不同数据源的数据集。
报表查询条件分为静态和动态两种。
静态条件允许用户选择预先定义好的值集, 或者在文本 框中输入一个值 。
动态条件可以是绑定到现存的 BIRT 数据集的一些数据。
比如,用户可 以从一个数据集提供的客户列表中选择一个客户作为输入条件。
此外 BIRT 支持级联参数, 它可以显示多个下拉列表, 并且一个下拉列表显示的内容会随着前一个列表的内容的改变而 动态改变。
(4)调色板用来向报表画布中添加报表条目。
调色板视图包含了一些报表元素,这些元素 用来显示从数据浏览视图中获得的数据。
从调色板视图中拖拽报表到报表编辑器中就可以使 用该报表了。
图 2 调色板
(5) 大纲视图展示了报表设计的图形化继承体系结构, 同时说明了报表元素与容器的关系。
我们可以直接在大纲视图中选择报表元素。
-3-
中国科技论文在线
图 3 大纲视图
3.3 报表 Web 查看器
报表开发完成后,我们可以使用 BIRT 的 Web 查看器来浏览效果,这是一个基于 AJAX 的 J2EE 应用,可以集成到现有的 Web 应用中。
Web 查看器可用来产生报表,同时也支持更多的交互性特征,例如内容表格、多种格式 导出报表内容、 客户端和服务器端打印以及报表分页。
利用查看器导航和工具栏使得这些特 征成为可能。
下图展示了使用查看器的一个示例:
图 4 Web 查看器
3.4 部署
报表开发完成后,如何部署到 Web 呢?
-4-
中国科技论文在线
下载 birt-runtime,地址为:
/downloads/download.php?file=/birt/downloads/drops/R-R1-2_3_2_1-2009 04141342/birt-runtime-2_3_2_1.zip 下载解压后,其中有一个目录是 ReportEngine 的目录,所有的 Birt 能够运行都需要这 个目录下的程序(这个目录下的文件其实在 WebViewerExample 中也有一份) 。
另外一个就 是 WebViewerExample 目录, 这是一个 eclipse 的 sample ,直接把它放到 tomcat webapps 目录 下就可以了。
运行成功后应该直接有 BIRT viewer has been installed 的提示, 下面有个 View Example 的链接,它会调用一个 Servlet 处理一个 test.rptdesing 的模板,并且接受一个默认的参数“my parameter”,test.rptdesign 文件在 WebViewerExample 下面,另外还有一个 test1.rptdesing 文 件把你的浏览器指 http://localhost:8080/WebViewerExample/frameset?__report=test1.rptdesign, 会弹出来一个 parameter 对话框,随便输入两个 1 ,点击 OK 即可展示报表。
4.常用技巧
4.1 隔行高亮显示
使用者在查看报表数据时,为了便于观察比较,常常需要数据隔行高亮显示,BIRT 也 提供了这一功能。
具体实现方法如下:选中列表的 detail 行,打开属性编辑器,并切换到 Highlight 标签页,点击 add 增加一个新的条件,在 condition 区域编写表达式来控制显示, 点击打开脚本编辑器, 输入 BirtMath.mod (row.__rownum,2), 其中 BirtMath.mod 是取余函数, row.__rownum 表示当前行的序列, 表示对 2 取余。
2 完成后关闭窗口, 在前一界面选择 equal to 0,这样当偶数行时就会应用已经配置好的样式。
同理,我们也可以配置奇数行的样式, 这样就可以交替显示了。
对于一些需要特别的数据, 我们也可以通过这个功能设定它的条件 来高亮显示。
4.2 设置级联菜单
在选择条件进行报表数据查询时, 两个查询条件有时候是有级联关系的, 比如国家和运 营商,这是就需要开发时在后台进行特殊处理。
首先,定义国家、运营商两个数据集,然后 在 parameters 节点单击右键,新建一个 Cascading Parameter 输入参数,在弹出对话框的 Cascading Parameter 中输入参数的名字, Data Set Model 选择为 Multi Data Set。
Parameters 在 表中定义一个名为 country 的参数,并将其关联至国家这个数据集,其取值为国家数据集中 的 value 字段。
这样 country 这个层叠参数的取值就是一个列表,country 此时也成为一个动 态参数。
完成后,定义另一参数 mcnc,方法和定义 country 相同,并同运营商数据集关联起 来。
由于运营商数据集的局部参数需要和前面定义的 country 参数关联后才能产生数据结果 集合,所以需要将数据集运营商与参数 country 关联。
4.3 显示和隐藏图表
在报表查询时,有时候需要对没有数据的情况进行特殊显示,例如:如果没有数据就不 显示表格或其他组件,并给出没有数据的提示。
可以通过如下方法实现:选择表格(或其他 对象,这里假设就是表格) ,点击属性,选择可见性,在可见性选择隐藏元素,在表达式里
-5-
中国科技论文在线
表达式写上:Total.count()>=1 即可。
写上 Total.count()<=0。
然后,在另一个标签里写上文字“没有数据”,同上,设置隐藏元素,
4.4 增加聚合计算
报表中常常会要求显示总计,一般有两种方法可以实现。
一种是在查询 SQL 语句里加 上总计的 SQL 连起来,还有一种是放在前台由报表来计算。
报表系统提供了一些函数来实 现这个功能。
实现方法:首先选中表头,单击右键增加一个新的行,然后从调色板中选取 “∑Aggregation”,并拖至需要总计的列,这时会弹出编辑页面。
在 function 选项我们可选择 相应的操作,主要有 sum、count、countdistinct 去重,expression 中是需要计算的列,还可 以在 filter condition 中设定条件过滤一些不需要计算的数据
4.5 使用 webserver 的连接池管理数据库连接
用编辑器打开 DATASOURCE.rptlibrary 文件修改下面数据源定义 <data-sources> <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="bossDS" id="40"> <property name="odaDriverClass">oracle.jdbc.driver.OracleDriver</property> <property name="odaURL">jdbc:oracle:thin:@192.168.0.18:1521:nquser</property> <property name="odaUser">userinfov2</property> <encrypted-property name="odaPassword" encryptionID="base64">bWlzc3BlbGw= </encrypted-property> </oda-data-source> </data-sources> 修改为: <data-sources> <oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="bossDS" id="40"> <property name="odaJndiName">java:comp/env/jdbc/user2</property> </oda-data-source> </data-sources>
5.总结
在对 BIRT 的研究和使用过程中,发现 BIRT 具有以下特点。
优点: (1)开发方便,由于集成在 Eclipse 中,不用再开启其他的开发工具窗口,可以很方便地在 一个报表中混合展现概要数据和详细数据,生成的报表完全是 XML 格式,扩展性好。
(2)操作界面友好大方,提供了强大灵活的样式定义,BIRT 支持外部 CSS 模板,在开发 之前可以定义好样式,便于整个项目的报表样式统一。
(3)是开源的报表产品,降低了开发成本,还可以对源代码进行深层的定制开发。
缺点: (1)虽然是开源产品,但是可用文档不多,并且需要收费。
(2)在和其他框架整合时会遇到很多困难,比如 spring、struts 这些流行的开源框架。
(3)有些非常复杂的报表实现起来比较困难。
6.致谢
感谢老师的悉心指导, 感谢北京网秦天下科技有限公司提供测试平台, 感谢网秦员工的
-6-
中国科技论文在线
热心帮助。
参考文献
[1] [2] [3] [4]
董经纬.财务报表分析.北京:人民日报出版社,2006.7. 郑阿奇.Eclipse 实用教程.北京:电子工业出版社,2009.7. 张云涛.解析 BIRT-Eclipse 商业智能和报表工具[M] .北京:电子工业出版社,2007.4. 未知.eclipse 报表插件 BIRT 中文教程及示例./birt/phoenix/,2009.1.
The Development of Reporting Based on BIRT
Xia Jun1, Zou Shihong1, Lin Yu2
1. State Key Lab of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing (100876) 2. Beijing NetQin Tech. Co., Ltd, Beijing (100013) Abstract BIRT (Business Intelligence and Reporting Tools) is an Eclipse-based open source reporting system for web applications, especially those based on Java and J2EE. BIRT has two main components: a report designer based on Eclipse, and a runtime component that can be deployed on the application server. BIRT has a flexible user interface as Dreamweaver, by which you can draw report forms like painting the tables, you can also generate images, export excel and html. This thesis devotes on the research of characteristics of BIRT and the methodology of how to generate statistical reports by using BIRT. Keywords: BIRT, Eclipse, characteristics 作者简介:夏俊,女,1984 年生,硕士研究生,主要研究方向是移动应用运营支撑系统的 设计与实现。
-7-
。