ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 使用 BIRT 和 Rational Team Concert 创建定制报表,第 2 部分: 复杂报表与固定数据集

使用 BIRT 和 Rational Team Concert 创建定制报表,第 2 部分: 复杂报表与固定数据集

原创 Linux操作系统 作者:habug 时间:2010-09-10 15:05:21 0 删除 编辑
Tim McMackin, 软件工程师, IBM

简介: 这部分三篇文章组成的系列,介绍了怎样通过 Eclipse Business Information 和 Reporting Tools(BIRT)来设计报表,将 IBM® Rational Team Concert™ 中的信息可视化。本文,也就是本系列文章的第二篇,展示了怎样对来自储存库的信息执行高级逻辑操作。

 

关于本文

IBM® Rational Team Concert™ 可以帮助软件开发团队存储和组织大量的信息,包括工作计划与任务,构建与测试,源代码与其他的字段。对于任意规模的储存库,可视化都会成为一个问题。怎样才能得到 Rational Team Concert 所追踪项目状态的高层次视图?操作板与工作项查询提供了一些方法以查看这些信息,但是对于一个更加可以定制的视图, Rational Team Concert 支持通用 BIRT 报表直接载入到 Web 客户端中。

三篇文章所组成系列的第一篇涉及到了安装 Rational Team Concert 与 BIRT 的基础,并创建了一些简单的报表。这一部分涉及到了两个话题:

  • 使用报表中的数据来执行复杂的交替引用操作
  • 解决工作项之间的联系问题,以显示报表中的上级-下级关系

本系列文章假设您基本熟悉 Rational Team Concert 中的报表,包括创建报表,处理数据源与数据集合,并向报表添加表格等等。这些问题在第 1 部分中已经涉及到了。如果您对 Rational Team Concert 与 BIRT 中的报表不熟悉的话,那么您可以首先学习那一篇文章 。

在完成本文以后,您需要 jazz.net 上的一个自由账号,以及 Rational Team Concert 服务器与 Rational Team Concert 客户端的完整或者试用版本。如果您没有服务器和客户端,那么第 1 部分描述了怎样得到 Rational Team Concert 服务器的一个试用版本,和 Rational Team Concert 客户端的免费版本。

BIRT 报表与 Rational Team Concert 工作项查询之间的差异,是 BIRT 允许您去处理多个数据源;但是, Rational Team Concert Web 客户端只需要一次处理一个工作项查询。因此,在报表中一次可以显示不止一个数据表,而且您可以对数据集进行交替引用,以显示更加复杂的信息。

假设您是一个手下有多个员工的管理人员。如果您想要轻松看到团队的工作项,那么您可以创建一个查询,以显示团队区域的工作项,根据工作项的所有者来进行分类。一种更好的方式是显示团队成员信息,每一个成员都有一个工作项的列表。在 BIRT 报表的 固定表格 中这是可以实现的。

在另一个表格中包含有一个固定的表格。在这个范例中,外层表格的每一行都显示了关于不同用户的信息。工作项的固定表格位于外层表格的里面,这样固定的表格会重复外层表格中的每一行。这些工作项的固定表格会得到筛选,只显示外层表格当前行的工作项。报表上的结果数据的结构如代码清单 1 所示。


清单 1. 来自表格的范例数据

CONTRIBUTOR_NAME    TEAM_AREA_NAME
John Doe            Team A
                                    WI_ID    SUMMARY
                                    101      A task for John
                                    102      Something for John to do
Jane Smith          Team B
                                    WI_ID    SUMMARY
                                    103      Jane's task
                                    104      Jane needs to do this

重点:
这个部分假设您正在处理第 1 部分中所创建的报表。如果您没有学习过第 1 部分,并熟悉 Rational Team Concert 报表的话,那么您可以在为本文做准备时,可以为 COMMON_SNAPSHOT 与 WORKITEMS_SNAPSHOT 创建数据源,并从 WORKITEMS_SNAPSHOT 快照的 LIVE_WORKITEMS_CNT 表格中创建一个数据集合。

  1. 切换至 Report Design 视角,并从您在前文中所创建的工作项报表中删除掉表格。

提示:
为了选择并删除整个的表格,您可以将鼠标停留在表格上面,直到您看到表格左下部的 Table 项为止。点击该项以选择整个的表格,然后点击 Delete


图 1. 选择表格以删除它
 Table 项上的鼠标

接下来,按照以下的方法来创建一个列出用户的数据集合:

  1. 从 COMMON_SNAPSHOT 快照中创建一个名为 Common 的数据源。


图 2. 从 COMMON_SNAPSHOT 快照中创建一个数据源
New Jazz Data Source 窗口

  1. 使用 LIVE_CONTRIBUTOR 表格来创建一个名为 Users 的数据集合(图 3)。
  2. 选择 CONTRIBUTOR_USERID、CONTRIBUTOR_NAME 与 TEAM_AREA_NAME 作为输出字段。
  3. 选择 CONTRIBUTOR_ARCHIVED 作为一个参数字段。


图 3. 从 LIVE_CONTRIBUTOR 表格中创建一个数据集合
New Jazz Data Set 窗口

  1. 点击 Finish
  2. 在数据集合编辑器的 Parameters 项上,将 CONTRIBUTOR_ARCHIVED 参数设置为逻辑类型的 False 值。这种方式,数据集合只包含了储存库中的非档案用户 。


图 4. 设置获得的参数
Edit Parameter 对话框

  1. 点击 Preview Results 项以查看用户的列表以及他们的团队区域。


图 5. 查看来自用户数据集合的结果
用户数据集结果的浏览

提示:
注意用户已经多次列出了:用户所联系的每一个团队区域。接下来的一篇文章将会展示,怎样对您所感兴趣的团队区域筛选这些条目。您还可以选择,通过从输出中删除 TEAM_AREA_NAME 表格,可以只将每一个用户显示一次。在这里的范例中,每一个用户在结果中只会显示一次,因为每一个用户的其他实例,都会筛选出结果集合之外 。

如果您在 Preview Results 项中没有看到任何的数据,那么有两件事情会引起问题 :

  • 在项目区域中尚未存在什么团队区域。如果没有团队区域存在,那么在 LIVE_CONTRIBUTOR 表格中就不会列出什么用户,就算储存库中拥有一个或者多个用户时也是这样。在这里的情况下,添加一个团队区域并添加至少一个用户。
  • 将数据记录到快照上的自动化任务可能尚未运行。这种情况可能会发生,因为您正在使用 Rational Team Concert 服务器的一个实例,它是新建的或者根本就没有运行过。为了对快照记录数据,您可以作为管理员登录到 Web 客户端的 Reports 项上,点击 Administer Data Warehouse,然后点击 Update All Snapshot Data。在较短的时间内,可以从数据集中获得数据。
  1. Users 数据集拖拉到报表上。
  2. 右击表格顶部的框架来向表格添加一个新列,然后点击 Insert > Column to the Right。新列在顶部拥有一个头单元,中部的一个数据单元,以及底部的一个底单元。不管您将什么置于数据单元中,都要对表格中的每一行重复执行。


图 6. 对表格添加一个列
下拉菜单选项: Insert > Column to the right

  1. 从 Data Explorer 视图中,将工作项数据拖拉到新列中的数据单元中。现在工作项表格在用户表中的位置已经固定了。


图 7. 固定的表格
显示的固定表格的屏幕截图

如果您现在查看报表,那么您会看到一个报表,它在每一个用户之下列出了数据库中的用户,还会看到一个储存库中所有工作项的表格。为了实现这一份报表,您必须将 inner 表格限制为只显示 outer 表格行中用户所拥有的工作项。您可以通过从外层表格向内层表格发送一个参数(在本例中,是所有者的用户 ID),来实现这项任务。

  1. 点击表格(见于图 8)左下部的 Table 项,来选择工作项的内层表格。注意 Property Editor 视图的标题是“Property Editor - Table”。在处理 Property Editor 视图之前选择报表上的适当元素是非常重要的,因为该视图根据您是否选择表格、一列、一行、一个单元或者表格中的一个元素,会对报表造成不同的影响。


图 8. 选择固定的表格
 选择 Table 图标的鼠标

  1. Property Editor 视图的 Binding 项之下,点击 Dataset Parameter Binding


图 9. 为表格编辑参数联系
Property Editor 视图, Dataset Parameter Binding 按钮

Dataset Parameter Binding 窗口中显示了数据集合的参数。在您创建数据集合时,您可以使用它来更改指定的值。

  1. 选择 CONTRIBUTOR_USERID 参数然后点击 Edit
  2. 在“Edit data set parameter binding”弹出窗口中,点击 Open Expression Builder 按钮(Value 字段的右边),如图 10 所示。


图 10. 设置一个参数对用户 ID 的联系
Open . Builder 按钮,被标上 “fx”

您可以使用 BIRT 表达式编辑器来编写带有 JavaScript. 代码与 BIRT 代码联合的复杂表达式。稍后您将会学到更多关于这些表达式的信息。现在,输入一个表达式,引用外层表格当前行的用户 ID,如以下步骤中所述:

  1. 在表达式构建器中, Category 之下,点击 Available Column Bindings
  2. Sub-Category 之下,点击 Table,它会引用用户外层表格,而不是工作项的内层表格 。
  3. Double Click to insert 之下,双击 CONTRIBUTOR_USERID。

表达式编辑器现在显示有以下的代码:
row["CONTRIBUTOR_USERID"]

  1. 点击 OK 三次以关闭弹出窗口。

现在,当您查看报表,或者上传 Rational Team Concert 服务器的新版本(如前文所述)时,工作项的内层表格只会显示与外层表格相关的工作项。通过按照这种方式来交替引用表格,您就可以显示报表中的复杂数据,并将数据集合相互之间联系起来。


图 11. 固定表格中完整的报表
  Preview 项的屏幕截图

A common task in Rational Team Concert 报表中的一个普通任务,是获得连接至特定工作项的项目。例如,您可能想要显示一些重要的工作项,然后显示这些工作项的下级。这项任务要比它看起来的更加复杂,因为在工作项表格中没有“上级”或者“下级”。相反,工作项目之间的联系在 COMMON_SNAPSHOT 快照的 LINKS 表格中是单独的实体。

通过这种方式,获得重要工作项的下级需要三个固定的表格:

  • 外层的表格显示了重要的工作项。
  • 接下来的表格显示了来自重要工作项的上级联系 。
  • 内层的表格显示了那些联系目标的工作项。


接下来的范例向您展示了怎样显示工作项的下级:

  1. 从 LIVE_WORKITEM_CNT 表格中为上级工作项创建一个数据集合。对于参数,您可以使用 WI_TYPE 列来限制对重要工作项或者改进的数据集合,或者您可以使用 TEAM_AREA_NAME 列来限制特定团队区域上的项目。该数据集合必须包含输出中的 WI_ITEMID 列,因为该表提供了您将会使用到的键,来获取来自这些工作项的联系。


图 12. 数据集合显示了重要的工作项
Edit Data Set 窗口

  1. 从 COMMON_SNAPSHOT 快照的 LINKS 表格中创建一个数据集合。它最少在输出中含有 SOURCE_ITEMIDTARGET_ITEMID 列。将 LINK_TYPE 参数设置成 com.ibm.team.workitem.linktype.parentworkitem ,它还在参数列表中包含有 TARGET_ITEMID 列。 Rational Team Concert 中的联系从下级(源)到上级(目标),这样您就可以将该 TARGET_ITEMID 参数与外层表格中的 WI_ITEMID 列联系起来。


图 13. 显示上级联系的数据集合
Edit Data Set 窗口

  1. 从 LIVE_WORKITEM_CNT 表格(图 14)为下级工作项创建一个工作集合。对于参数,它包含有 WI_ITEMID 列,这样您就可以显示作为联系源的工作项 。


图 14. 显示下级工作项的数据集合
Edit Data Set 窗口

  1. 将上级工作项数据集合拖拉到报表中,并添加一个额外的列以显示下级工作项。您可以直接添加一个列,或者从已存在的列中删除掉字段以腾出空间。
  2. 将联系数据集合拖拉到重要工作项表格的空白数据单元中。
  3. 选择联系的内部表格,并将其 TARGET_ITEMID 列于外层表格(图 15)的 WI_ITEMID 列联系起来。现在内部表格只是显示了外层表格中的工作项作为目标。


图 15. 将连接表格上的参数联系起来
Parameter 联系弹出视图

  1. 将下级工作项数据拖拉到连接表格中的空白数据单元中。
  2. 选择下级工作项的表格,并将其 WI_ITEMID 列与连接表格(图 16)中的 SOURCE_ITEMID 列联系起来。现在最内层的表格只显示了连接表格中联系的源。


图 16. 联系内部工作项上的参数
联系工作项的 ID

  1. 因为对联系本身并不感兴趣,所以您可以点击联系表格中的字段(图 17),并点击 Delete。通过从表格中删除掉数据,您就可以利用最里层表格中的数据,而不用将其在报表中直接显示出来 。


图 17. 从联系表格中删除数据而不用删除表格
联系表格中的空白列

完整的报表显示了上级项目以及它们的下级项目(图 18).


图 18. 上级和下级工作项的完整报表
完整报表的浏览

固定表格的这项技术,在许多其他的区域内都十分有用,但是在本文中并没有进行讨论。当您需要将一个数据集合与另一个数据集合联系的时候,这项技术是一个选项。三篇文章组成的系列中的最后一篇文章,将会讨论交替引用数据的其他方式,包括交接表格 。

作者非常感谢 Rational Team Concert 开发员 James Moody 和 Rafik Jaouani 对本文所做的建议,以及他们在 jazz.net 和 jazz.net 论坛上提供的有用信息。

原文链接:http://www.ibm.com/developerworks/cn/rational/10/creatingcustomreportswithbirtandrtc-part2/index.html

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14780873/viewspace-673162/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-07-07

  • 博文量
    211
  • 访问量
    325261