简介: 这部分三篇文章组成的系列,介绍了怎样通过 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 所示。
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 表格中创建一个数据集合。
- 切换至 Report Design 视角,并从您在前文中所创建的工作项报表中删除掉表格。
提示:
为了选择并删除整个的表格,您可以将鼠标停留在表格上面,直到您看到表格左下部的 Table 项为止。点击该项以选择整个的表格,然后点击 Delete。
接下来,按照以下的方法来创建一个列出用户的数据集合:
- 从 COMMON_SNAPSHOT 快照中创建一个名为 Common 的数据源。
图 2. 从 COMMON_SNAPSHOT 快照中创建一个数据源
- 使用 LIVE_CONTRIBUTOR 表格来创建一个名为 Users 的数据集合(图 3)。
- 选择 CONTRIBUTOR_USERID、CONTRIBUTOR_NAME 与 TEAM_AREA_NAME 作为输出字段。
- 选择 CONTRIBUTOR_ARCHIVED 作为一个参数字段。
图 3. 从 LIVE_CONTRIBUTOR 表格中创建一个数据集合
- 点击 Finish。
- 在数据集合编辑器的 Parameters 项上,将 CONTRIBUTOR_ARCHIVED 参数设置为逻辑类型的 False 值。这种方式,数据集合只包含了储存库中的非档案用户 。
提示:
注意用户已经多次列出了:用户所联系的每一个团队区域。接下来的一篇文章将会展示,怎样对您所感兴趣的团队区域筛选这些条目。您还可以选择,通过从输出中删除 TEAM_AREA_NAME 表格,可以只将每一个用户显示一次。在这里的范例中,每一个用户在结果中只会显示一次,因为每一个用户的其他实例,都会筛选出结果集合之外 。
如果您在 Preview Results 项中没有看到任何的数据,那么有两件事情会引起问题 :
- 在项目区域中尚未存在什么团队区域。如果没有团队区域存在,那么在 LIVE_CONTRIBUTOR 表格中就不会列出什么用户,就算储存库中拥有一个或者多个用户时也是这样。在这里的情况下,添加一个团队区域并添加至少一个用户。
- 将数据记录到快照上的自动化任务可能尚未运行。这种情况可能会发生,因为您正在使用 Rational Team Concert 服务器的一个实例,它是新建的或者根本就没有运行过。为了对快照记录数据,您可以作为管理员登录到 Web 客户端的 Reports 项上,点击 Administer Data Warehouse,然后点击 Update All Snapshot Data。在较短的时间内,可以从数据集中获得数据。
- 将 Users 数据集拖拉到报表上。
- 右击表格顶部的框架来向表格添加一个新列,然后点击 Insert > Column to the Right。新列在顶部拥有一个头单元,中部的一个数据单元,以及底部的一个底单元。不管您将什么置于数据单元中,都要对表格中的每一行重复执行。
如果您现在查看报表,那么您会看到一个报表,它在每一个用户之下列出了数据库中的用户,还会看到一个储存库中所有工作项的表格。为了实现这一份报表,您必须将 inner 表格限制为只显示 outer 表格行中用户所拥有的工作项。您可以通过从外层表格向内层表格发送一个参数(在本例中,是所有者的用户 ID),来实现这项任务。
- 点击表格(见于图 8)左下部的 Table 项,来选择工作项的内层表格。注意 Property Editor 视图的标题是“Property Editor - Table”。在处理 Property Editor 视图之前选择报表上的适当元素是非常重要的,因为该视图根据您是否选择表格、一列、一行、一个单元或者表格中的一个元素,会对报表造成不同的影响。
- 在 Property Editor 视图的 Binding 项之下,点击 Dataset Parameter Binding。
Dataset Parameter Binding 窗口中显示了数据集合的参数。在您创建数据集合时,您可以使用它来更改指定的值。
- 选择 CONTRIBUTOR_USERID 参数然后点击 Edit。
- 在“Edit data set parameter binding”弹出窗口中,点击 Open Expression Builder 按钮(Value 字段的右边),如图 10 所示。
您可以使用 BIRT 表达式编辑器来编写带有 JavaScript. 代码与 BIRT 代码联合的复杂表达式。稍后您将会学到更多关于这些表达式的信息。现在,输入一个表达式,引用外层表格当前行的用户 ID,如以下步骤中所述:
- 在表达式构建器中, Category 之下,点击 Available Column Bindings。
- 在 Sub-Category 之下,点击 Table,它会引用用户外层表格,而不是工作项的内层表格 。
- 在 Double Click to insert 之下,双击 CONTRIBUTOR_USERID。
表达式编辑器现在显示有以下的代码:
row["CONTRIBUTOR_USERID"]
- 点击 OK 三次以关闭弹出窗口。
现在,当您查看报表,或者上传 Rational Team Concert 服务器的新版本(如前文所述)时,工作项的内层表格只会显示与外层表格相关的工作项。通过按照这种方式来交替引用表格,您就可以显示报表中的复杂数据,并将数据集合相互之间联系起来。
A common task in Rational Team Concert 报表中的一个普通任务,是获得连接至特定工作项的项目。例如,您可能想要显示一些重要的工作项,然后显示这些工作项的下级。这项任务要比它看起来的更加复杂,因为在工作项表格中没有“上级”或者“下级”。相反,工作项目之间的联系在 COMMON_SNAPSHOT 快照的 LINKS 表格中是单独的实体。
通过这种方式,获得重要工作项的下级需要三个固定的表格:
- 外层的表格显示了重要的工作项。
- 接下来的表格显示了来自重要工作项的上级联系 。
- 内层的表格显示了那些联系目标的工作项。
接下来的范例向您展示了怎样显示工作项的下级:
- 从 LIVE_WORKITEM_CNT 表格中为上级工作项创建一个数据集合。对于参数,您可以使用 WI_TYPE 列来限制对重要工作项或者改进的数据集合,或者您可以使用 TEAM_AREA_NAME 列来限制特定团队区域上的项目。该数据集合必须包含输出中的 WI_ITEMID 列,因为该表提供了您将会使用到的键,来获取来自这些工作项的联系。
- 从 COMMON_SNAPSHOT 快照的 LINKS 表格中创建一个数据集合。它最少在输出中含有 SOURCE_ITEMID 与 TARGET_ITEMID 列。将 LINK_TYPE 参数设置成 com.ibm.team.workitem.linktype.parentworkitem ,它还在参数列表中包含有 TARGET_ITEMID 列。 Rational Team Concert 中的联系从下级(源)到上级(目标),这样您就可以将该 TARGET_ITEMID 参数与外层表格中的 WI_ITEMID 列联系起来。
- 将上级工作项数据集合拖拉到报表中,并添加一个额外的列以显示下级工作项。您可以直接添加一个列,或者从已存在的列中删除掉字段以腾出空间。
- 将联系数据集合拖拉到重要工作项表格的空白数据单元中。
- 选择联系的内部表格,并将其 TARGET_ITEMID 列于外层表格(图 15)的 WI_ITEMID 列联系起来。现在内部表格只是显示了外层表格中的工作项作为目标。
- 将下级工作项数据拖拉到连接表格中的空白数据单元中。
- 选择下级工作项的表格,并将其 WI_ITEMID 列与连接表格(图 16)中的 SOURCE_ITEMID 列联系起来。现在最内层的表格只显示了连接表格中联系的源。
- 因为对联系本身并不感兴趣,所以您可以点击联系表格中的字段(图 17),并点击 Delete。通过从表格中删除掉数据,您就可以利用最里层表格中的数据,而不用将其在报表中直接显示出来 。
完整的报表显示了上级项目以及它们的下级项目(图 18).
固定表格的这项技术,在许多其他的区域内都十分有用,但是在本文中并没有进行讨论。当您需要将一个数据集合与另一个数据集合联系的时候,这项技术是一个选项。三篇文章组成的系列中的最后一篇文章,将会讨论交替引用数据的其他方式,包括交接表格 。
作者非常感谢 Rational Team Concert 开发员 James Moody 和 Rafik Jaouani 对本文所做的建议,以及他们在 jazz.net 和 jazz.net 论坛上提供的有用信息。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14780873/viewspace-673162/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14780873/viewspace-673162/