内容


使用 BIRT 和 Rational Team Concert 创建定制报表,第 3 部分

高级报表技术

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用 BIRT 和 Rational Team Concert 创建定制报表,第 3 部分

敬请期待该系列的后续内容。

此内容是该系列的一部分:使用 BIRT 和 Rational Team Concert 创建定制报表,第 3 部分

敬请期待该系列的后续内容。

关于本文

IBM® Rational Team Concert™ 可以帮助软件开发团队存储和组织大量的信息,包括工作计划与任务,构建和测试,以及源代码和其他的文件。有了如此规模的存储库,可视化问题就成为我们的主要关注点了:怎样得到 Rational Team Concert 正在追踪的项目的高层次视图?操作板与工作项查询提供了查看该信息的一些方式,但是对于更加可定制的视图,Rational Team Concert 支持定制 Eclipse Business Information and Reporting Tools (BIRT) 直接上传到 Web 客户端上。

目标

这些指南包含了以下的主题:

  • 定制带有参数的报告
  • 对数据集合应用 JavaScript 代码来使用复杂的逻辑
  • 计算的工作项满足特定的标准
  • 从 Rational Team Concert 存储库中获得历史性的数据
  • 理解数据表格与历史性数据之间在行为上的不同之处
  • 从 Rational Team Concert 存储库的不同领域使用数据
  • 从报告到相关工作项的链接

前提条件

本文假设您对 Rational Team Concert 中的报告已经有了一个基本的了解,正如第 1 部分与第 2 部分中介绍的那样。如果您对 Rational Team Concert 和 BIRT 中的报告不熟悉的话,您可以先看一下前部的文章。

按照下面的指南,您需要 jazz.net 的一个免费的账号,以及 Rational Team Concert 服务器和 Rational Team Concert 客户端的完整版或者试用版。如果您没有一个服务器和客户端,那么第 1 部分中描述了怎样得到 Rational Team Concert 服务器的试用版以及 Rational Team Concert 客户端的免费版。

使用参数来筛选报告

在前面的文章(第 2 部分)中,您会看到怎样向报告中的单个表格传递一个参数。您还可以得到报告的定制参数,并使用尽可能多数据集中的这些参数。例如,您可能想要筛选团队区域,以显示您感兴趣的部分。在这种情况下,您可以创建一个新的数据集合,以代表所有的团队区域,然后您可以向报告用户将数据集作为一个列表框公布。然后您可以将其他的数据集限制为报告用户在列表框中选择的团队区域。

  1. 从命令数据源 TEAM_AREA 表格中创建一个名为 Team area 选项的数据集。
  2. 选择 TEAM_AREA_NAME 与 TEAM_AREA_ITEMID 列作为输出,将 TEAM_AREA_ARCHIVED 作为参数。
图 1. 创建团队区域的数据集
New Jazz Data Set 窗口
New Jazz Data Set 窗口
  1. 将得到的参数设置为假。
  2. 使用数据集作为可能值来为报告创建一个参数:
    1. 在 Data Explorer 视图中,右击 Report Parameters 然后点击 New Parameter
    2. 在 Edit Parameter 窗口中,将参数命名为 选择的团队区域
    3. Prompt Text 区域中,输入 团队区域
    4. Data type 列表中,选择 String
    5. Display type 列表中,选择 List Box
    6. Display As 之下,清除 Hidden 复选框的选择并选中 Is Required 复选框。
    7. List of values 下面,点击 Dynamic。该选项允许您去为值使用数据集,而不是手动地全部输入它们。
    8. 清除 Allow Multiple Values 复选框的选择。Rational Team Concert 并不会识别到该复选框;Rational Team Concert 支持参数的多个值显示为一个列表框,而参数的单个值显示为一个组合框。
    9. Data set 列表中,选择 Team area options 数据集。
    10. Select value column 列表中,选择 TEAM_AREA_ITEMID。该列对于团队区域来说是一个独一无二的标识符。
    11. Select display text 列表中,选择 TEAM_AREA_NAME。该列就是团队区域的名字,参数将其作为标签使用。
    12. Sort by 列表中,选择 TEAM_AREA_NAME。
    13. 点击 OK
图 2. 创建一个参数
Edit Parameter 对话框窗口
Edit Parameter 对话框窗口

如果您向服务器上传了报告并运行了它,那么您见会看到一个列表框,您可以从中选择一个或者多个团队区域,您可以选择您感兴趣的团队区域并点击 Run,但是因为参数尚未与其他部分绑定到一起,所以参数并没有限制数据集合。

图 3. 为运行时的报告指定参数值
My Work Items 视图
My Work Items 视图
  1. 按照下面的方法来将参数与团队区域数据集联系起来:
    1. 在 Data Explorer 视图中,双击用户数据集合。
    2. 在数据集合编辑器的 Fact Information 项上,向数据集的参数添加 TEAM_AREA_ITEMID 列。在数据集编辑器的 Parameters 项上,选择 TEAM_AREA_ITEMID 参数然后点击 Edit
    3. 在 Edit Parameter 窗口的 Linked To Report Parameter 列表中,选择 Selected team areas 参数。
图 4. 将数据集合与参数联系起来
Edit Data Set–Users 视图中的 Edit Parameter 窗口
Edit Data Set–Users 视图中的 Edit Parameter 窗口
  1. 点击 OK 以保存并关闭数据集。

现在,当您向服务器上传报告时,为参数选择一个团队区域,并运行报告,您将会看到一系列的与指定团队区域相联系的用户。工作项数据集显示了所有与每一个用户相联系的工作项,而不管工作项的团队区域如何。如果您想要的话,那么您可以根据团队区域参数来筛选工作项。

通过这种方式,参数使得您可以将报告限制为一个可以管理的规模之内,因为降低报告中所显示数据的数量,可以使其运行地更快,并显示更简介的信息。

参数还可以使您为特定的读者定制报告。当您点击 Rational Team Concert 中的 Edit 按钮,并为报告设置参数时,您可以点击 Save Copy 以保存报告的新拷贝了。这个新拷贝使用与不同参数一样的报告模板,如果您上传一个新报告设计文件的话,它会进行自动更新。

交替引用数据的其他技术

第 2 部分中描述的固定数据集技术,通常已经足够在一份 Rational Team Concert 报告上显示复杂的数据了。但是,将一个数据集与其他的数据集联系起来还有其他的技术。

脚本化的变量

您可以创建一个存储表格的全局 JavaScript 对象,然后每次您需要访问数据时就使用该对象。对于报告中一直稳定的数据,或者您想要一直引用的数据来说,这种方法十分的方便,因为每次您想要使用它时都不需要去固定一个数据集了。

例如,工作项的优先级和严重性通常都存储在 ENUMERATIONS 表格中。该表格还包含了任意的您所创建的定制枚举,例如如果您想要向工作项添加一个定制变量的话、如果您创建一个基于 ENUMERATIONS 表格的简单数据集,并传递枚举 ID 及项目区域的 ID 时,结果如代码清单 1 所示。

清单 1. 严重性枚举
ENUMERATION_ID  LITERAL_ID  LITERAL_NAME	
severity        1           Unclassified	
severity        2           Minor	
severity        3           Normal	
severity        4           Major	
severity        5           Critical	
severity        6           Blocker

ENUMERATIONS 表格所创建的数据集需要 PROJECT_AREA_ITEMID 参数。如果您让该参数保持空白,那么在数据集中您就不会得到什么结果了。您可以使用 '{Current Project Area}' 变量(当您传递参数时包含了引用号),以得到当前的项目区域,或者您可以手动指定项目区域 ID。

处于可读性考虑,您可能想要显示枚举值的标签(在现在的情况下,例如“Major”与“Minor”之类的字符串值),而不是该值的唯一 ID。但是,包含关于工作项信息的表格,例如 LIVE_WORKITEMS_CNT 表格,显示了值的 ID 而不是表格,如代码清单 2 所演示的那样。

清单 2. 严重性的工作项
WI_ID   SUMMARY         WI_SEVERITY	
1234    Small glitch    2	
5678    Medium problem  3	
9123    Big problem!    5

因此,您必须将 LIVE_WORKITEMS_CNT 表格中的独特 ID 与 ENUMERATIONS 表格中的值交替引用一下。但是,您的报告可能使用一些地方的这些枚举。您可以将一个枚举数据集固定到使用枚举值的任何地方,但是这将会创建报告上的表格的更多数量,并增加它的上传时间。您可以将枚举数据集合加入到工作项数据集合中,但是如果工作项数据集还加入到了另一个数据集中,那么这可能会更加方便。一个更简单的方法,是创建一个全局的 JavaScript 对象,它会向其标签发布每一个枚举值。然后,不论何时您需要查找工作项的严重性,都可以引用该对象。

接下来的步骤包含了以下技术的基础:

  1. 为枚举值创建一个数据集,例如严重性枚举的范例。使用 Preview 项,确定它为您所感兴趣的枚举显示了数据。

您不想要在报告上直接显示这些数据系列,但是您必须以相同的方式将其添加至报告中,否则报告就不会写入数据了。接下来的步骤向报告上的数据集合添加了一个看不见的引用。

  1. 从 Palette 视图中,将一个动态的文本区域拖拉到报告的顶部。
  2. 在表达式编辑器中输入以下的表达式:
    Total.count();
  3. 点击 OK
  4. 选择新的动态文本区域,并打开 Property Editor 视图至 Binding 项。
  5. Data Set 列表中,选择您的数据集合。
  6. 切换至 Properties 项并点击 Visibility 部分。
  7. 选中 Hide Element 复选框与 For all outputs 单选框。

当报告运行时,数据集合将会得到实现,但是原始的数据将会直接出现在报告上。

  1. 在 Data Explorer 视图中,选择数据集合。
  2. 在报告编辑器中,切换至 Script 项。

该项显示了控制数据集合的定制脚本。对 BIRT 脚本的完整指导超出了本文的讨论范围,对您说简单来说,每一个数据集合都有一些事件处理器,它会在数据集合生命周期的特定点上运行。在这种情况下,当数据集合打开时您需要创建一个 JavaScript 对象,然后您需要为数据集合中的每一行添加对对象的信息。

  1. 在编辑器顶部的 Script 列表中,选择 beforeOpen 事件。该事件只会发生一次:在数据集合被数据填充之前。
  2. 在编辑器中输入以下的代码:
    severity = new Object();
  3. Script 列表中,选择 onFetch。这个事件对于数据集合的每一行都只发生一次。
  4. 输入以下的代码作为 onFetch 事件处理器:
    severity[row["LITERAL_ID"]] = row["LITERAL_NAME"];

该代码向对象添加了一个连接的名字和值。当数据集合完全填充满而且对象也被创建之后,您就可以使用它来查看枚举中每一个值的标签。例如,插入代码 severity[1] 产生“未分配”。

使用其他数据集合之中的对象

现在您可以使用其他数据集合中的对象。例如,如果您有一系列的工作项,那么您就可以添加显示严重程度的计算列了。

  1. 为列出工作项的数据集合打开数据集合编辑器。
  2. 对于 Fact Information,确定 WI_SEVERITY 项作为输出列选中了。
  3. 对于 Computed Columns 项,添加一个 String 类型且名为 Severity Name 的新计算列。

Expression 区域中,输入以下的代码:
severity[row["WI_SEVERITY"]]

图 5. 创建计算列
编辑数据集合 – 新计算列
编辑数据集合 – 新计算列

该数据集合并没有在 Preview Result 项上显示任何信息,因为 JavaScript 对象尚未得到实现。但是,当您运行报告时,数据集合会在适当的列上显示严重性名称,因为它可以使用来自对象的值,如代码清单 3 所示:

清单 3.包括新计算列的工作项数据集
WI_ID   SUMMARY         WI_SEVERITY  Severity Name
1234    Small glitch    2            Minor
5678    Medium problem  3            Normal
9123    Big problem!    5            Critical

表格联系

在 SQL 中,BIRT 数据集合可以相互之间联系起来。SQL 表格联系的具体内容超出了本文的讨论范围。但是用简单的术语来说,一个表格联系会从两个不同的表格创建一个组合表格。

这种方法拥有使用存储库中两个表格信息,来创建单个数据集的优势,不像固定的数据集技术一样。有一个单个数据集协同工作,可以让使用需要来自两个表格的信息的逻辑变得更加容易,而且与多个固定的表格相比,在表格上格式化和安排单个的表格要更加的容易。同样,有一些数据源类型(例如 XML 文件)并不支持参数,所以表格可能是最好的选项了。

例如,WORKITEMS_SNAPSHOT 快照中的 STATE 表格(代码清单 4)存储了关于工作项可能状态的信息。

清单 4. 来自 STATE 表格的范例数据
STATE      STATE_GROUP         STATE_NAME 
_Efk74JK1  OPEN_STATES         New 
_Efk74JK6  OPEN_STATES         Reopened 
_Efk74JK7  OPEN_STATES         Triaged 
_Efk74JK2  IN_PROGRESS_STATES  In Progress 
_Efk74JK4  CLOSED_STATES       Verified 
_Efk74JK3  CLOSED_STATES       Resolved 
_Efk74JK5  CLOSED_STATES       Closed

LIVE_WORKITEM_CNT 表格(代码清单 5)包含了一个引用 STATE 表格的列。STATE 表格中的状态前缀是项目区域 ID,而 LIVE_WORKITEM_CNT 表格中的状态是不,但是稍后您可以对此作出校正。

清单 5. 来自 LIVE_WORKITEM_CNT 表格的范例数据
WI_ID   SUMMARY         STATE_NAME
4321    Fixed issue     3
9876    New problem     1
1111    Current work    2

有了前面章节中提到过的严重性枚举,在与工作项信息相同的数据集中拥有状态组和状态名信息就更加方便了。您可以联系表格,并合并表格中的信息来完成这一点。在 SQL 术语中,该合并会调用一个 外层联系,它会将工作项数据集合中的每一行,与状态数据集合中的单个行使用匹配状态 ID 来匹配起来。

  1. 创建一个列出工作项的数据集,包括 STATE_NAME 列。
  2. 向名为“State ID”的工作项数据集添加一个计算的列,它将下面区域名字与 STATE_NAME 列联系起来(参见代码清单 6)。该列的值可能如下所示:
    '_Efk74JK'+row["STATE_NAME"] 该计算列会匹配状态表中的 ID 值。
清单 6. 来自 STATE 表格的范例数据
WI_ID   SUMMARY         STATE_NAME  State ID
4321    Fixed issue     3           _Efk74JK3
9876    New problem     1           _Efk74JK1
1111    Current work    2           _Efk74JK2
  1. 创建一个在 STATE 表格中列出状态的数据集合。
  2. 在 Data Explorer 视图中,右击 Data Sets 然后点击 New Joint Data Set
  3. 在 New Joint Data Set 窗口中,选择左边的工作项数据集,然后选择数据集名下面的 State ID 列。
  4. 在右边,选择状态数据集然后选择 STATE 列。
  5. Join Types 下面,选择 Left Outer Join
  6. 给数据集起一个像 Join Work Items to States 之类的名字。
图 6. 加入数据集
Join Data Set 窗口
Join Data Set 窗口
  1. 点击 Finish

新关系数据集(代码清单 7)包含了来自数据集的合并信息。不要删除两个原始的数据集,因为表格仍然会使用它们来实现关系数据集。

清单 7. 关系数据集的结果
Work items::WI_ID  Work items::State ID  States::STATE  States::STATE_NAME
4321              _Efk74JK3              _Efk74JK3      Resolved
9876              _Efk74JK1              _Efk74JK1      New
1111              _Efk74JK2              _Efk74JK2      In Progress

使用 WI_COUNT 列计算结果

工作项快照的大多数表格都包含有 WI_COUNT 列,它显示了匹配特征的一些工作项。例如,假设您想要知道在存储库中有多少的工作项。在这种情况下,您可以使用 LIVE_WORKITEM_CNT 表格,并只指定输出中的 WI_COUNT 列:

WI_COUNT	
656

如果您指定了其他的列,以包含在结果中,WI_COUNT 列根据这些列来计算工作项的数量。例如,如果您向输出添加 TEAM_AREA_NAME 列,那么 WI_COUNT column 显示了每一个团队区域中工作项的数量 :

TEAM_AREA_NAME  WI_COUNT	
Team A          134
Team B          312
Team C          210

通过只加入输出列中的 WI_COUNT 与 WI_TYPE,您可以对工作项类型执行相同的操作:

WI_TYPE     WI_COUNT
story       25
defect      505
task        126

WI_COUNT 列通常与历史表格一起使用,如下面的章节中所描述的那样。

获得历史数据

到目前为止,您已经看到了 表格 中报告的 Rational Team Concert 信息,它组成了 BIRT 数据集的基础。有一些表格来自于 Rational Team Concert 存储库的信息,例如 您为工作项的信息使用到的 LIVE_WORKITEMS_CNT 表格。如果工作项发生了变更,那么更改就会立即在该表格中反映出来。

其他的表格来自于一个 数据集市,而不是直接来自于存储库。Rational Team Concert 会筛选并格式化复杂的信息到数据集市,以一种更加方便的结构提供数据。例如,Rational Team Concert 服务器记录了数据集市中对存储库所做变更的信息,例如每一天创建了多少的新工作项。因此,有了数据集市,您就可以获得不仅仅是存储库当前状态的信息,而且还有关于趋势、更改和时间阶段的信息。

当您创建或者运行报告时,您一定要记住数据集市中的信息可能会滞后于存储库中的数据。在本系列文章的前两篇中,您创建了一系列的用户。如果您已经安装了 Rational Team Concert 服务器,那么表格就不会在存储库中显示任何的用户了。为了解决这个问题,您必须让服务器对存储库做一个快照,并更新数据集市。与之类似,如果您创建一个新的团队区域,那么团队区域就不会出现在 TEAM_AREA 表格中,直到服务器更新了数据集市为止(默认条件下,Rational Team Concert 会每隔 24 小时自动更新数据集市一次,但是管理员可以手动更新数据集市之中的快照)。

在有些情况下,您可以从数据集市选择数据,从存储库中选择数据。例如,COMMON_SNAPSHOT 快照包含了关于 Rational Team Concert 用户信息的两个表:

  • CONTRIBUTOR,它显示了来自数据集市的信息
  • LIVE_CONTRIBUTOR,它显示了直接来自存储库的信息

每一个表格都提供了稍微不同的信息,所以您要意识到您使用到的是活性数据还是历史性数据,以避免引入冲突或者报告的不稳定性。

您可以将数据集市想做是存储库数据的一个缓存。访问缓存而不是直接访问存储库,要更加方便并提供更好的性能。同样,BIRT 可以利用数据集市作为缓存的优势。如果在您向服务器上传报告模板时,您选中了 Supports Data Caching 复选框,那么 BIRT 会只使用来自数据集市的数据。因此,如果您的报告只使用来自数据集市的表格,那么您可以选中复选框;如果您的报告只使用活性表格,就清除该复选框的选择。

报告中大多数的表格都来自于数据集市。大多数的活性表格有在名字有一个“live”的关键字。这些就是 Rational Team Concert 2.0 中的活性表格:

  • 所有的表格都位于 LIVE_SNAPSHOT 快照中。
  • 在 WORKITEMS_SNAPSHOT 快照中,有以下的表格:
    • LIVE_WORKITEM_CNT
    • WORKITEM_EXTRA_DATA
    • WORKITEM_QUERY_RESULTS
    • ENUMERATIONS
  • 在 APT_SNAPSHOT 快照中,有以下的表格:
    • CONTRIBUTOR_ABSENCE
    • LIVE_CONTRIBUTOR_ASSIGNMENT
    • LIVE_CONTRIBUTOR_WORKITEM_TIME
    • LIVE_TEAM_CAPACITY


所有其他的表格都显示了来自数据集市的数据。

这些是 WORKITEMS 快照的一些表格,它显示了来自数据集市工作项的信息:

WORKITEM_CHNGS

这个表格(代码清单 8)显示了关于工作项更改的信息。例如,如果您将工作项号码作为参数传递,结果的数据集会显示对工作项更改的日期和时间,以及关于工作项的信息,例如评论的数量以及工作项的状态。

清单 8. 来自 WORKITEM_CHNGS 表格的范例数据
TIME_ID.TIMESTAMP     WI_ID CONTRIBUTOR_NAME STATE_GROUP  COMMENT_COUNT

Dec 9, 2008 3:37 PM   1234  Bill             OPEN_STATES              0

Apr 14, 2009 4:54 PM  1234  Joe              OPEN_STATES              1

Jun 2, 2009 1:40 PM   1234  Joe              OPEN_STATES              1

Oct 7, 2009 9:32 AM   1234  Joe              OPEN_STATES              2

Oct 30, 2009 1:20 PM  1234  Jane             OPEN_STATES              2

Oct 30, 2009 3:35 PM  1234  Steve            OPEN_STATES              2

Oct 30, 2009 3:50 PM  1234  Steve            CLOSED_STATES            3

Nov 9, 2009 1:20 PM   1234  Steve            CLOSED_STATES            3

有了这些活性的表格,您就可以传递不同的参数,并从表格中得到不同的信息。例如,如果您要传递一个用户名,作为 PREV_OWNER_ID.CONTRIBUTOR_USERID 参数(这就是说,作为工作项的优先拥有者),并传递一个不同的用户名作为 OWNER_ID.CONTRIBUTOR_USERID 参数(工作项的当前拥有者),结果的数据集将会一直显示从首个用户传递给第二个用户的工作项。

NEW_WI_COUNT

该表格(代码清单 9)显示了根据您在参数中指定的标准,给定日期所创建的新工作项。例如,如果您选择了 TIMESTAMP, WI_SEVERITY,以及 WI_COUNT 作为输出列,那么数据集会显示每天所创建严重性的工作项的数量。

清单 9. 来自 NEW_WI_COUNT 表格的范例数据
TIMESTAMP             WI_SEVERITY  WI_COUNT 
Apr 22, 2009 8:00 PM  Normal       27 
Apr 23, 2009 8:00 PM  Normal       38 
Apr 24, 2009 8:00 PM  Major        4 
Apr 24, 2009 8:00 PM  Normal       12
Apr 25, 2009 8:00 PM  Major        2 
Apr 25, 2009 8:00 PM  Normal       13

如果您选择了 TEAM_AREA_NAME 列而不是严重性列,那么数据集(代码清单 10)显示了根据所创建的团队区域,每天所创建的工作项的数量。

清单 10. 来自 NEW_WI_COUNT 表格的范例数据
TIMESTAMP             TEAM_AREA_NAME  WI_COUNT 
Jun 25, 2009 8:00 PM  /Team A         1 
Jun 25, 2009 8:00 PM  /Team B         4 
Jun 25, 2009 8:00 PM  /Team C         1 
Jun 26, 2009 8:00 PM  /Team A         2 
Jun 26, 2009 8:00 PM  /Team B         5 
Jun 26, 2009 8:00 PM  /Team C         2

这个表格存储了存储库创建时的数据;因此,结果得到的数据集可能会是巨大的的。为了让结果变得简洁一些,NEW_WI_COUNT 表格包含了称为 FROM_TIME 及 TO_TIME 的默认参数,您可以使用它来为结果指定一个日期范围。您可以使用 BIRT 表达式编辑器中的 JavaScript 代码,来计算这些范围,但是 BIRT 包含了对这些参数的日期、事件与时间标记对象。例如,如果您想要将结果限制为最近的 10 天,那么您以将 TO_TIME 指定为 BirtDateTime.today(),将 FROM_TIME 指定为 BirtDateTime.addDay(BirtDateTime.today(), -10) (参见图 7)。

图 7. 为历史性数据集设置事件范围
Data Set 视图显示了 Parameters 表格
Data Set 视图显示了 Parameters 表格

这些 BIRT 对象可以在 BIRT Functions 之下的表达式编辑器中获得。

图 8. 选择 BIRT today() 函数
显示选中的 'today() : DateTime' 函数
显示选中的 'today() : DateTime' 函数

这些对象的引用信息可以通过 Eclipse BIRT 引用获得(查看 参考资料 部分)。

WORKITEM_STATES

就像 NEW_WI_COUNT 表格一样,该表(代码清单 11)显示了关于满足特定时间点标准的工作项数量的信息。例如,如果您选择了 WI_SEVERITY 列,那么结果显示了每一天严重性的工作项的数量。

清单 11. 来自 WORKITEM_STATES 表格的范例数据
TIMESTAMP              WI_SEVERITY   WI_COUNT 
Nov 10, 2009 12:20 PM  Blocker       15 
Nov 10, 2009 12:20 PM  Critical      50 
Nov 10, 2009 12:20 PM  Major         183 
Nov 10, 2009 12:20 PM  Minor         79 
Nov 10, 2009 12:20 PM  Normal        10832 
Nov 10, 2009 12:20 PM  Unclassified  10 
Nov 11, 2009 12:20 PM  Blocker       16
Nov 11, 2009 12:20 PM  Critical      48
Nov 11, 2009 12:20 PM  Major         192 
Nov 11, 2009 12:20 PM  Minor         76 
Nov 11, 2009 12:20 PM  Normal        10882 
Nov 11, 2009 12:20 PM  Unclassified  9

(在本例中,您可能想要筛选关闭的工作项。)

与之类似,您可以选择 TEAM_AREA_NAME 列(代码清单 12)来查看与每一个团队区域相联系的工作项的数量。

清单 12. 来自 WORKITEM_STATES 表格的范例数据
TIMESTAMP             TEAM_AREA_NAME  WI_COUNT 
Nov 2, 2009 12:05 PM  /Team A         6 
Nov 2, 2009 12:05 PM  /Team B         12 
Nov 2, 2009 12:05 PM  /Team C         3 
Nov 1, 2009 12:05 PM  /Team A         8
Nov 1, 2009 12:05 PM  /Team B         10 
Nov 1, 2009 12:05 PM  /Team C         6

表格与快照进一步的信息可以通过 jazz.net wiki 获得(参见 参考资料)。

其他的格式化技巧与策略

对工作项的链接

如果您想要一系列的工作项的话,创建报告对工作项的连接就很容易了,它作为 WI_ID 列显示了出来。例如,如果您在表格上拥有一个表格的工作项的话,您可以选中表格中的任意字段(就算它不是 WI_ID 字段),并将其连接至相应的工作项上。

  1. 向报告添加一个表格的工作项。
  2. 在表格中选择任意的数据字段,例如 SUMMARY 字段。
  3. 在 Property Editor 视图中,点击 Hyperlink 项。
  4. 点击 Link 旁边的省略号(浏览,三个点) ... 按钮。
  5. 在 Hyperlink Options 窗口中,点击 URI 并在 Location 字段中插入以下的代码:
    '/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/'+row["WI_ID"]
  6. 点击 OK

工作项弹出窗口

在 Rational Team Concert 操作部中,当您将鼠标在工作项的链接上停留一段时间的话,会出现一个弹出窗口去显示关于工作项的信息。您可以从操作板处获得代码,并使弹出菜单出现在工作项上的链接上。笔者没有得到弹出菜单以及操作板(弹出菜单显示了这里并不支持的一些信息),而这些弹出信息在官方上并不能被 Rational Team Concert 所支持,但是对于基本的使用来说这些工作已经足够了。

图 9. 操作板之上的工作项弹出视图
关于弹出视图中工作项的信息
关于弹出视图中工作项的信息
  1. 点击报告编辑器的 Master Page 项。Master Page 在顶部和底部有头部信息与注脚信息。您可以导入头部信息的操作板代码,这样报告中只会将代码导入一次。
  2. 从 Palette 视图中,将 Text 字段拖拉到报告的头区域中。
  3. 插入文本区域中如代码清单 13 所示的代码。
清单 13. 报告中工作项弹出视图的代码
<code style="display:none">
<script>


dojo.require("jazz.app.ResourceLink");
dojo.require("jazz.app.proxy");
dojo.require("jazz.app.auth");

this.inherited(arguments);
this._skipOAuth = true;

</script>
</code>
  1. 在报告表格的数据单元中,添加另一个 Text 区域。您将会看到该文本区域位于从数据集显示信息的数据区域,例如工作项的总结与 ID。
  2. 在该文本区域中,输入以下代码清单 14 的代码。
清单 14. 报告中工作项弹出的代码
<a target="_self" class="jazz-app-ResourceLink" 
id="jazz_app_ResourceLink_<VALUE-OF>row["WI_ID"]</VALUE-OF>" 
href="/jazz/resource/itemName/com.ibm.team.workitem.WorkItem/
<VALUE-OF>row["WI_ID"]</VALUE-OF>">
<VALUE-OF>row["SUMMARY"]</VALUE-OF></a>

<code style="display:none">
<script>
titleLink = 
document.getElementById("jazz_app_ResourceLink_<VALUE-OF>row["WI_ID"]</VALUE-OF>");
new jazz.app.ResourceLink({retainLinkText: true},titleLink);
if (titleLink.lastChild.nodeName == "IMG"){
titleLink.removeChild(titleLink.lastChild);
};
</script>
</code>

该代码以 <a> 标签中的工作项的链接开始。代码会向 <a> 标签分配一个特定的 ID。在现在的情况下,它会向 jazz_app_ResourceLink_ 字符串添加工作项号码,来创建一个独一无二的 ID。注意: 该 ID 对于整个报告来说是独一无二的。如果工作项在报告中显示了不止一次,您必须区分各个 ID。

代码中的第二部分,在 <code> 标签中,根据单独的 ID 获得了该 <a> 标签。然后,它会创建一个 JavaScript jazz.app.ResourceLink 对象,该对象代表了弹出项,并连接至标签的对象。最后,有一个 if 声明,会在报告上的 <a> 标签输出执行一些清洁工作。

结果类似于操作板上的链接与弹出项。

使用其他的快照

本文关注于普通和工作项快照,因为这些快照提供了 Rational Team Concert 中报告所使用的大多数信息。但是,其他的快照可以提供关于存储库其他领域的信息。如果您想要得到关于快照和表格的更多信息,那么您可以查看 Rational Team Concert wiki (链接在 参考资料 部分之中)。

表 1. 存储库的其他快照
快照 描述
APT_SNAPSHOT该快照提供了用户分配及特定工作分配时间的信息。
BUILD_SNAPSHOT该快照中的表格包含了关于服务器上构建与测试的信息。
LIVE_SNAPSHOT该快照提供了对存储库中信息直接的访问途径。这些信息要更加的复杂,因为信息是由完全合格的类名索引的,而不是人可读的标签,但是如果您不能找到其他快照中您所需要的,那么您可能要在这里找到它。
REPOSITORY_SNAPSHOT该快照记录了关于存储库全部内容的信息,包括操作板、构建机理以及更改集。大多数的信息可以在其他的快照中获得。
SCM_SNAPSHOT该快照中的表格包含了关于源控制存储库的信息,例如更改集,构件和流程。

致谢

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


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=593539
ArticleTitle=使用 BIRT 和 Rational Team Concert 创建定制报表,第 3 部分: 高级报表技术
publish-date=09152010