JAVA—咖啡馆

——欢迎访问rogerfan的博客,常来《JAVA——咖啡馆》坐坐,喝杯浓香的咖啡,彼此探讨一下JAVA技术,交流工作经验,分享JAVA带来的快乐!本网站部分转载文章,如果有版权问题请与我联系。

BlogJava 首页 新随笔 联系 聚合 管理
  447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

简介

Eclipse的商业智能和报表工具(BIRT)项目是一个基于当今流行的Eclipse IDE的开源项目,用于在Java或者J2EE环境下构建和部署报表。该项目提供的主要下载项中包括以下内容:

  • BIRT设计器—用来构建报表。
  • Web查看器—一个用来部署报表的J2EE示例,其中包含了一个JSP标签库以降低与现存的web应用的耦合。
  • BIRT制图包—支持构建复杂的图表。 

BIRT项目于2005年夏天发布了第一个主版本并且到目前为止已经拥有了超过100万的下载量。请访问http://www.eclipse.org/birt来更多地了解BIRT项目,这上面有关于BIRT项目的介绍,指南,下载以及使用的例子。我们将以对BIRT设计器的介绍作为本文的开始,并且以对BIRT查看器的讨论作为本文的结束。其中,BIRT设计器用来进行报表的设计,而BIRT查看器则用来部署设计以及产生最终的报表。

BIRT 2.2 Collage

BIRT设计器 

在BIRT的中间位置是由一系列Eclipse插件组成的报表设计器,这些插件构成了一个提供拖拽能力以快速设计报表的设计透视图。报表是以XML格式创建和存储的。

 

Figure 1 - Eclipse BIRT Designer

此Eclipse透视图包含了很多视图,这些视图提供了创建报表的功能。我们将在后面对此进行阐述。

报表编辑器

报表编辑器用来构建报表并且扮演着一个画布的角色来定位和格式化报表元素。在该视图中有很多标签页,例如布局,母板页,脚本,XML源以及预览。

  • 布局标签页用来对报表进行可视化布局并且提供了拖拽的功能。
  • 母板页用来设定整个报表的头,脚以及背景图片。例如,该页通常是所有报表头的位置。
  • 脚本标签页提供了对JavaScript编辑器的访问。BIRT支持这样一种事件模型,在该模型中可以使用Java或者JavaScript来改写事件处理器。我们可以在报表产生和渲染阶段调用这些事件处理器,并且这些事件处理器还能修改报表属性,比如改变字体颜色,数据值以及调用外部代码。
  • XML源标签页可以显示XML源代码用于报表设计。尽管通常情况下最好使用布局视图,但也可以在此标签页中编辑XML代码。
  • 预览标签页允许报表设计者快速地将报表转化为HTML。 注意你也可以利用工具栏以其他被支持的格式来预览报表。

Figure 2 - BIRT Preview

数据浏览

在构建报表之前,我们通常都要建立数据源。BIRT提供了数据浏览视图以简化该任务。

Figure 3 - Data Explorer View

Eclipse视图允许设计者向报表设计器中添加数据源和数据集。本质上,一个数据源仅仅就是数据连接。数据集可以被理解为一个可执行的查询以及该查询所返回的特定的列。

BIRT提供了对JDBC,XML,flat file(译者注:falt file是一个只能连续的读写的计算机文件。它包含一条或多条记录,每个记录包含一个或多个字段,http://en.wikipedia.org/wiki/Flat_file)和脚本化的数据源的驱动。随着BIRT2.2的发布,BIRT还提供了一个Web Service数据源和一个改进的flat file驱动,现在该驱动已经支持CSV,TSV,SSV以及PSV文件格式。

BIRT还提供了一个叫做联合数据集(Joint Data Set )的特殊数据集以使用内外连接来整合现存的数据集。当从不同的数据源中整合数据集时该特性的作用就显得尤为明显。除此之外,现在BIRT数据源具备导入或者链接本地连接配置文件的能力以此来达到跨报表的连接共享的目的。

在增加报表参数和数据体时我们也会使用数据浏览视图。报表参数将呈现给报表的最终用户并且经常用来为特定的用户进行报表的个性化定制。例如:报表参数可以依赖数据集参数来修改查询,我们可以在BIRT的JavaScript表达式中用此来改变报表元素的样式和可见性,或者在脚本事件中基于选择的输出格式来定制内容。

报表参数可以是静态或者动态的。静态参数允许用户选择预先定义好的值集或者在文本框中输入一个值。动态参数可以是绑定到现存的BIRT数据集的一些数据。例如,用户可以从一个数据集提供的客户列表中选择一个客户。 

此外,BIRT支持级联参数,它可以显示多个下拉列表,并且一个下拉列表显示的内容会随着前一个列表的内容的改变而动态改变。例如,一个级联参数可以在第一个列表中显示客户列表,在第二个列表中显示选中客户的订单。

Figure 4 - Cascaded Parameter

现在BIRT2.2的动态参数可以支持使用JavaScript表达式来显示文本和参数值。这个改进使得参数列表以一种更符合逻辑的方式呈现给最终用户。例如,在开发一个详细订单的报表时,你可能希望展示一个所有订单的动态参数列表。表达式使得你可以为每个订单增加相应的客户姓名。图5显示了一个动态参数列表。

Figure 5 - Dynamic Parameter Expression

数据浏览视图也支持数据体的创建。这是BIRT2.2的新特性,且与新的交叉报表元素联合使用。BIRT数据体是多维的,基于一个或多个BIRT数据集,使用新的跨标签数据立方构建器(Cross Tab Cube Builder)来构建的。请参见下面的图表。

Figure 6 - Cross Tab Cube Builder 

除了上面提到的特性,BIRT现在提供两个新的项目类型使得Java开发者可以创建更多的数据源。这些数据源基于Open Data Access(ODA)框架,该框架由Eclipse Data Tools Platform(DTP)项目提供。我们构建图形界面时需要使用ODA设计器插件,该插件是报表开发者使用相应的驱动时所需要的。当开发你自己驱动的运行时部分时,需要利用ODA运行时驱动的插件项目。该插件通常部署在一个运行时环境中,主要负责处理对数据源的调用和结果的获取。

Figure 7 - BIRT Projects

调色板

BIRT调色板视图用来向报表画布中添加报表条目。调色板视图包含了一些报表元素,这些元素用来显示从数据浏览视图中获得的数据。仅仅是简单地从调色板视图中拖拽报表到报表编辑器中就可以使用该报表了。BIRT报表元素支持所有可在属性编辑器视图中配置且可被BIRT的报表对象模型(Report Object Model)描述的属性。

Figure 8 - Palette View

调色板支持以下报表项

  • 标签元素用来显示静态文本。像大多数报表元素一样,我们可以改变文本的外观以支持本地化,同时也可以设置超链接,字体大小和高亮等属性。
  • 文本元素与标签很相似,不过具有更多的属性:可以显示多行,格式化良好的HTML。利用BIRT的表达式构建器我们可以将现存的数据集的值,参数,JavaScript函数以及BIRT特有的函数注入到格式化的HTML中。通过使用标签,文本元素还可以用于创建可在客户端执行的脚本。
  • 动态文本元素经常用来显示CLOB数据类型值。这些值也可以利用BIRT的表达式构建器与其他数据联合使用。
  • 数据元素是用来显示来自数据源的值的基本元素。可以利用表达式构建器改变和操纵数据值。例如,如果一个数据集具有一个叫做first name的列,还有一个叫做last name的列,那么你可以利用表达式构建器将二者连接起来组成一个新的数据元素。
    dataSetRow["contactLastName"] + ", " + dataSetRow["contactFirstName"]
  • 图片元素用来管理报表中输出图片。BIRT支持获取URI中的图片以及嵌入在设计器中的图片,来自数据源的动态图片(BLOB)以及文件夹中的图片文件。
  • 网格元素作为其他报表元素的容器,以一种合乎逻辑的方式来定位元素位置。网格元素被配置为表格格式。例如,如果你的报表显示产品销量情况,而你想在表格的右侧增加一个图表,那么你就可以增加一个一行两列的网格元素来完成这个任务。
  • 列表元素也是作为其他元素的容器。列表不同于其他容器型元素的地方在于列表会迭代绑定到其上的数据集。默认的列表元素有一个头,一个尾和细节部分。当渲染列表时,头和尾通常只显示一次,而绑定到列表的数据集的每一行的细节部分都要显示。在细节部分中可以包含文本元素或者其他的容器型元素,例如网格,表格或者另一个列表。
  • 表格元素与列表元素很相似,因为他们都是容器元素并且都会迭代绑定到其上的数据集,但是表格元素是以平面列表方式展现的。表格元素的布局很像HTML的表格一样。表格元素有头,尾和细节部分以及列。
  • 聚合元素是BIRT2.2新加入的元素类型,其利用新的聚合构建器来向报表中增加聚合元素。该聚合构建器提供了超过25种不同的函数,例如SUM,MIN,MAX和AVERAGE。

Figure 9 - Aggregation element

  • 图表元素允许向报表设计器中插入图表。当一个图表元素被置于报表编辑器中时,图表构建器向导将会自动出现。该向导用来设计图表并提供三个设计标签页(选择图表类型,选择数据和选择图表格式)。BIRT2.2提供了13种图表类型以及很多子类型的组合。图表构建器提供了拖放,图表预览,数据过滤和参数化等功能。图表元素可以以PNG,JPG,BMP和SVG的输出格式呈现,并且这些输出格式支持钻透(drilling through ),高亮(highlighting),开关可视化(toggling visibility)以及客户端脚本(client side script)。

Figure 10 - Chart Wizard

  • 跨标签元素也是BIRT2.2中新出现的元素,用来显示BIRT数据体中的数据。在BIRT以前的版本中,表格元素中列的数量在设计时就要确定好,而在跨标签元素的帮助下,列和行的数量都可以动态生成。该元素也支持等级聚合和数据显示,允许三维的行和列并且会测量数据以便使其显示在恰当的交叉点上。

Figure 11 - BIRT Cross Tab element

库资源管理器

库资源管理器视图具有拖放功能,使得用户可以从现存的报表库中拖放组件到当前报表中。 BIRT中的库是一些可被其他报表使用的高效报表XML片段。这些库被使用它们的报表所引用,这意味着库的改动会自动地反映到所有使用它们的报表中去。一个很好的示例是使用一个报表库存储公司标识(logo)。如果公司标识改变了,只需要更新库就可以了,而不用更新引用它的报表。库被引用的位置是相对于资源文件夹的,在设计阶段通过设计器,在运行阶段通过Web查看器都可以配置该资源文件夹。

Figure 12 - Library Explorer

属性编辑器

属性编辑器视图用来对增加到报表上的报表元素设置属性。视图中显示何种条目将决定于报表编辑器中所选的元素类型。属性窗口中显示一些通用设置,例如样式,宽度和字体信息。此外,大多数报表元素支持可视化的属性设置,这样就可以动态地隐藏内容了。在属性标签的右侧,视图具有如下特性:排序,分组,映射,高亮和过滤页。

大多数功能都是自说明的,映射标签页允许动态构建(使用表达式构建器),以使得报表元素的显示值可以动态改变。例如,如果月份行的值是“1”,你可能想显示“January”。高亮标签页根据条件来动态地应用不同的样式,例如以红色来显示低销售量。大多数功能都允许在一个条目上应用多个条件或者关键字。一个条件可能改变字体颜色,而另一个条件可能改变字体大小。一个排序关键字可以按字母顺序列出结果,而另一个排序关键字却将“Jones”放在列表的最上面。

Figure 13 - Property Editor

此外,在BIRT2.2中,当使用高亮时,报表开发者可以指定样式而不必手动地去设置样式属性。

Figure 14 - Style Highlighting

大纲 

大纲视图展示了报表设计的图形化继承体系,同时说明了报表元素与容器的关系。我们可以直接在大纲视图中选择报表元素,当报表设计非常复杂时,这个功能非常有用。此外,在BIRT2.2中,大纲视图可用来导入或者链接外部样式,也可用来查看实现了脚本事件处理器的报表元素。

Figure 15 - Outline View

导入一个样式表会将该样式表的值复制到报表XML中。使用一个外部样式表允许你链接到BIRT资源文件夹中的样式表。 

更多特性

BIRT2.2还提供了两个新视图。一个视图显示example报表,另一个视图显示example图表并且提供了Java代码以产生图表。当在Java应用中使用图表引擎时会使用到该视图。

Figure 16 - Example Views

Eclipse BIRT Web查看器

一旦报表开发完成了,我们就可以使用BIRT的example Web查看器部署它们。在BIRT2.2中该查看器已经得到了改进,它是一个基于AJAX的J2EE应用,说明了如何使用BIRT引擎来产生和渲染报表内容。 

Web查看器概览 

Web查看器可用来产生和渲染报表,同时也支持更多的交互性特征,例如内容表格,以多种格式导出报表内容,客户端和服务器端打印以及报表分页。利用查看器导航和工具栏使得这些特征成为可能。下图展示了使用查看器的一个示例。

Figure 17 - Example Web Viewer

Toolbar

查看器的工具栏有很多图标,他们可以完成内容表格的显示,重新运行报表,导出数据,以多种格式导出报表以及客户端和服务器端打印等任务。一个内容表格是基于报表设计而自动产生的。通过修改报表的分组片段可以定制内容表格。要从example查看器中访问内容表格,请选择该图标

Figure 18 - Example Table of Contents

工具栏也提供了一个图标来重新运行现存的报表。当用户想要修改用于产生报表的参数集时,这将十分有用。要访问该特性,请选择该图标 

Figure 19 - Example report parameter dialog containing cascaded parameter

一个改进的数据导出对话框在BIRT2.2中首次出现。可以通过图标激活该对话框。

Figure 20 - Example Export Data Dialog

结果集被显示在一个下拉列表中,该下拉列表包含了报表中所有数据绑定控件。这些结果集并不是BIRT的数据集,但却包含了数据容器中绑定的列,而该数据容器中的数据则来自于一个数据集。这些可用的列显示在左边的列表框中,而对话框控制着这些列的导出。数据导出分隔符也已经得到了改进以支持更多的分隔符,例如制表符,分号,冒号,垂直线。此外,数据可以用用户指定的编码导出。

查看器同样支持以多种格式导出报表。利用导出报表对话框就可以完成报表的导出,我们可以通过选择图标来访问该对话框。

Figure 21 - Example Export Report Dialog

该对话框允许报表用户将报表导出为Word,PowerPoint,PDF,PostScript和XLS 格式。此外,用户可以选择导出所有页面或者指定范围的页面。

BIRT中的客户端打印是在example查看器中完成的,这是通过用户选择图标将报表转换为PDF格式实现的。用户可以利用标准的PDF功能打印或者保存报表。

Figure 22 - Client Print Example

BIRT2.2的example查看器也提供了服务器端打印功能。该特性可以通过在web.xml中做如下设置而禁用。

<context-param>
<param-name>BIRT_VIEWER_PRINT_SERVERSIDE</param-name>
<param-value>OFF</param-value>
</context-param>

可以通过选择图标来访问服务器端打印功能。
 

Figure 23 - Example Server Side Print Dialog

该对话框将列出可用的服务器端打印机以及影响打印结果的各种设置

Viewer Navigation Bar

当显示一个多页的报表时我们将使用查看器导航条。分页是由报表元素和分组的分页符属性来决定的。这些属性就像使用前后分页符或者分页符间隔那样简单,而分页符间隔则指定了将一个分页符插入到产生的HTML中之前一个容器元素要处理多少行。当通过Servlet映射来使用查看器时,其默认行为是加载首页且使得导航条控件可用。导航条包含了可以向前向后或者直接定位页面的控件。 

Web查看器部署向导 

利用Web Tools Platform项目(WTP)的一部分,BIRT2.2现在可以支持Web项目。该项目类型会将example查看器自动部署到你所选择的应用服务器中。此外,新的BIRT标签库也会被部署进去。通过新建项目,在Business Intelligence and Reporting Tools类别下面选择Web项目,我们可以使用该项目类型。

Figure 24 - Web Project

Web查看器标签库

现在Web查看器包含了一个标签库,该标签库可被用来定制查看器的行为。我们可以通过两种方式部署该标签库,其一是按照通常方式部署查看器;其二是利用BIRT的Web项目部署向导。此外,如果你想将BIRT部署在一个上下文中,并且将标签库放置在一个单独的上下文中,你可以通过复制birt.tld到你的WEB-INF\tlds目录下并且从查看器库目录中复制coreapi.jar,modelapi.jar,viewerservlets.jar和com.ibm.icu_3.6.1v20070417.jar到目录:新上下文/web-inf/lib下来实现。将下面的代码添加到你的web.xml文件中:

<jsp-config>
<taglib>
<taglib-uri>/birt.tld</taglib-uri>
<taglib-location>/WEB-INF/tlds/birt.tld</taglib-location>
</taglib>
</jsp-config>

在这种方式下,报表将通过BIRT查看器被引用,而不是新的上下文。

查看器标签库包含5个标签:param,paramDef,parameterPage,report和viewer。每个标签都有多个属性来控制查看器的行为。

Figure 25 - BIRT Tag Library

结论 

这篇文章介绍了BIRT2.2的一些新特性。请访问BIRT的网站和BIRT 新闻组 来了解更多信息。

查看英文原文:An Introduction to the Eclipse Business Intelligence and Reporting Tools


译者简介:张龙,同济大学软件工程硕士,现就职于理光软件研究所。主要从事文档工作流和办公自动化解决方案的研发工作。热衷于Java轻量级框架的研究,对敏捷方法很感兴趣。曾有若干年的J2EE培训讲师经历。参与InfoQ中文站内容建设,请邮件至china-editorial@infoq.com。  

3 条回复

回复

en 发表人 avatar blogbin 发表于 2008年1月31日 下午8时19分
Re: 迷途的狼 发表人 jack wan 发表于 2008年2月17日 下午7时39分
Birt报表能否实现订制 发表人 帅 曾 发表于 2008年4月7日 下午9时10分
  1. 返回顶部

    en

    2008年1月31日 下午8时19分 发表人 avatar blogbin

    birt使用有一段时间,碰到的主要问题是参数多值传递和交叉表,其它方面感觉蛮好的

  2. 返回顶部

    Re: 迷途的狼

    2008年2月17日 下午7时39分 发表人 jack wan

    感觉比以前的功能要强大很多了,有时间看看

  3. 返回顶部

    Birt报表能否实现订制

    2008年4月7日 下午9时10分 发表人 帅 曾

    我希望用birt设计出几个模版然后让用户去自己选哪个表的哪个字段最后形成一张报表,不知道birt是否能实现,希望有经验的朋友帮帮忙!

posted on 2008-09-05 14:29 rogerfan 阅读(1639) 评论(0)  编辑  收藏 所属分类: 【开源技术】【JAVA-IDE】

只有注册用户登录后才能发表评论。


网站导航: