内容


使用 Rational Team Concert 与 BIRT 为数据处理创建定制报表,第 1 部分

BIRT 与算法简介

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: 使用 Rational Team Concert 与 BIRT 为数据处理创建定制报表,第 1 部分

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

此内容是该系列的一部分:使用 Rational Team Concert 与 BIRT 为数据处理创建定制报表,第 1 部分

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

下载试用版:IBM® Rational® Team Concert 标准版  |  IBM® Rational® Team Concert 免费版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

引言

IBM® Rational® Team Concert 解决方案可以帮助软件开发,测试和其他的团队组织并存储大量的信息 —,这些信息可以帮助开发员,架构师,项目管理员与项目拥有者有效地协作。Rational Team Concert 工具集成了工作性追踪,源控制管理,持续性的构建和迭代规划,提供了高度可配置的进程支持系统,可以帮助您按照自己喜爱的方式工作。基于您配置 Rational Team Concert 环境的方式,您可以从工具之中收集不同的信息。

而且,如果您想要得到不能从服务器之中直接获取的信息,我们可以对 Rational Team Concert 环境做一些处理,通过计算得到它。我们的核心需求是我们想要得到工作性的状态。这就是说,我们需要两件事:与工作性信息相关的当前工作性的每一个私人或者一组操作者的工作状态,加上操作者的时间分配。另外,我们需要知道工作性是否位于日程安排之中,以及工作性操作者节省了多少时间,或者多晚才能交付。

工作性的状态不能直接从储存库中获得;它应该基于原始的数据来进行计算,所以我们需要找到配置 Rational Team Concert 方案的方式。通常来说,实施需要有两种方法。

首先,我们可以基于 API 来为 Rational Team Concert 开发一个插件。使用这种方法,就可以更轻松地满足特定的需求了,但是对于那些没有参与到 Rational Team Concert 开发的人员来说,该操作就变得十分困难了,因为他们会花大量的时间在他们所熟悉的 API 和插件开发环境之上。第二,我们可以定制一个报表,以满足基于业务职能和报表工具(BIRT)的需求。为什么我们要使用 BIRT 方法的原因,就是它更容易,更灵活,并且提供了应对工作项报表挑战的方案。

选择 BIRT 方案

BIRT 是一种开源的报表工具。有了 BIRT 报表,您可以向程序添加大量的各种类型的报表。但是,Rational Team Concert 环境提供了与 BIRT 很好的集成方式,而 Rational Team Concert 产品之中的 BIRT 可以使用 Jazz Data Source 方法来访问 IBM Jazz™ Team Server。在我们的需求中,BIRT 报表工具可以得到工作性的状态:

  • 定制的报表可以轻松地部署到服务器上,这样我们就可以使用 Rational Team Concert 极其网络浏览器,来与其他的成员共享它和访问它。在 Jazz Team Server 中,有一个 Enterprise Reports Server。Rational Team Concert 的 BIRT 插件会在客户端执行,但是定制的报表可以部署到 Enterprise Reports Server 上。可以参考图 1。
图 1. 平台环境中 BIRT 的相关位置
Jazz 平台的整体架构
Jazz 平台的整体架构
  • 我们可以通过编写 JavaScript 代码来实施一些复杂的逻辑。如果我们得到了工作性的状态,那么我们就需要处理这些数据之间的大量的数据和关系,因为每一个工作项可能包含了一个或者多个子类,这样 JavaScript 就可以帮助我们应对挑战了。
  • BIRT 提供了许多元素,可以帮助您定制报表,例如表格,图表等等。我们还可以在数据附近添加一些需要的词语,以让报表更具可读性。而且,您可以使用那些元素来组织信息,这样定制的报表就可以在数据之中显示复杂的关系。
  • 报表基底上元素的事件序列显示了相关的位置。通常来说,左边元素的事件发生时间比右边的更早,而上边时间的发生时间要比下边的更早。对于固定的元素来说,事情变得更加复杂。我们可以使用事件序列来总结和估算数据。

在我们开始设计报表之前,我们需要决定怎样计算工作项的状态。

计算工作项状态的算法

追踪工作项的状态,对于停留在项目顶端来说十分关键。我们想要知道工作性是否处于日程安排之中,而工作项状态与时间评价又有关系。如果我们想要让数据变得更加精确,那么我们就必须考虑一下分配给这种方法的操作者的使用频率。

首先,我们必须关注工作项本身,不要考虑它的子工作项。工作项拥有不同的类型,例如任务,事例,以及主题等等。有一些类型的工作项包含了与时间计算相关的信息,而有的则不含,所以我们必须使用不同的算法,来估计不同类型工作项的工作项状态。

在 Rational Team Concert 方案中,事例,主题和其他类型的工作项并没有包含与时间计算相关的信息,而其工作项状态是在日程安排中计算的。对于其他的工作项来说,算法是十分复杂的,那些工作项包含了与时间计算相关的以下数据区域(见于图 2)、输出列中所使用到的项目在下面做了定义。

图 2. 与工作项相关的数据区域
工作项数据集输出列屏幕截图
工作项数据集输出列屏幕截图

图 2 的大图

  • 持续时间:工作项的持续期,它会在用户界面中显示为“Estimate”,如果操作者并没有对该数据区域设置值,那么我们相信它的值为 0。
  • 校正估计时间:工作项的校正估计时间,如果操作者没有设置该数据区域的值,那么我们相信该值为 0。
  • 花费的时间:花费在该工作项之上的时间,如果操作者没有设置该数据区域的值,那么我们相信该值为 0。
  • 到期日:当工作被指定为到期时,如果操作者没有设置该数据区域的值,那么我们相信它的值就是迭代的截止日期。
  • 使用日期:工作项操作者的使用日期,如果操作者没有设置该值的话,我们相信该值为 1。
  • 当前的日期:当前的时间,我们可以使用 JavaScript 代码得到。

为了估计工作项的状态,我们需要考虑工作项的状态。状态的值可以为 New,In progress 或者 Closed,这样我们就需要得到该数据区域的值,我们需要名为 State 的变量以存储该值。

有了六个变量,我们就可以按照下面的五步来估计工作项的状态:

  1. 估计 Extra-plan Time。Extra-plan Time 反映了原始方案与当前方案之间的差异。计算表达式:Extra-plan Time = 持续时间 - 校正估计时间。
清单 1. 估计 Extra-plan 时间的代码
//function get Extra-plan Time
function getExtraplan(duration, correctEstimate){
	var extra = 0;
	if(correctEstimate>0) extra = correctEstimate - duration;
	extra = extra/28800;
	return extra;
}
  1. 估计需要的时间,需要的时间就是操作者完成工作项所需要的时间,计算表达式:需要的时间 = 持续时间 - 花费的时间
清单 2. 估计 Extra-plan 时间的代码
//function get Require Time
function getRequire(duration, correctEstimate, timespent){
	var require = 0;
	if(correctEstimate >0) require = correctEstimate - timespent;
	else require = duration - timespent;
	require = require/28800;
	return require;
}
  1. 估计剩余的时间。剩余的时间就是我们完成工作项可用的时间。剩余时间并不包括夜晚时间以及周末时间,计算表达式:剩余时间 = 到期日期 - 当前日期
清单 3. 估计剩余时间的代码
//function get Remain Time
function getRemain(startdate, enddate){
	var num = DateTimeSpan.days(startdate, enddate)+1;
	var residue = parseInt(num%7);
	var week = parseInt(num/7);
	var weekend = week*2;
	if(residue != 0){
		var start = startdate.getDay();
		var end = enddate.getDay();
		if(end<start) end = end + 7;
		start = start+1;
		for(var i=start;i<=end;i++){
			if(i==6||i==7) weekend++;
		}
	}
	num = num - weekend;
	return num;
}
  1. 估计平衡时间。平衡时间就是操作者拥有的时间,以及操作者完成工作项所需要的时间之间的差异。
    为了得到操作者所需要的时间,我们应该考虑操作者的使用频率。计算表达式:平衡时间 = 剩余时间 * 使用频率 - 需要的时间
清单 4. 计算平衡时间的代码
//function get Balance Time
function getBalance(remain, require, utilizationRate){
	return remain*utilizationRate - require;
}
  1. 计算工作性的状态。在这一步中,我们需要考虑工作项的状态。如果工作项的状态是 New 或者 In Progress,那么工作项状态可以使用 平衡时间和 Extra-plan 来判断。如果状态是 Closed,那么我们可以基于持续时间和花费时间的值,来计算工作项的状态。
清单 5. 计算工作项状态的代码
//function get Work Item status of work item 
//whose state is In progress or New
function getProStatus(balance, extra){
	var wistatus = extra;
	if(balance<0 && balance<extra){
		wistatus = balance;
	}
	return wistatus;
}

//function get Work Item status of work item whose state is Closed
function getComStatus(duration, timespent){
	return (timespent - duration)/28800;
}

总结

正如我们从上面所概括的步骤中所学到的那样,知道工作项的状态,对软件开发,测试,以及有效地与协作十分有用。从一个包含有一个或者多个子工作项的工作项中,我们需要知道以下的数据:

  • 总共的平衡时间:子工作项的总平衡时间及其平衡时间 — 平衡时间是实际的值,不会考虑使用频率。这样我们就可以直接添加它了。
  • 总 Extra-plan 时间:子工作项的总 Extra-plan 时间及其 Extra-plan 时间。Extra-plan 时间就是实际的值,不会考虑使用频率。

在您得到总平衡时间以及总 Extra-plan 时间之后,我们就可以按照上面所定义的五步,来判断该工作项的状态。这样做的原因就是我们并不知道构建报表之前,子工作项的层次有多深。

虽然总平衡时间和总 Extra-plan 时间不能进行轻松地总结,但是报表中所包含的时间发生序列,可以帮助我们解决这个难题。


下载资源


相关主题


评论

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Rational
ArticleID=643603
ArticleTitle=使用 Rational Team Concert 与 BIRT 为数据处理创建定制报表,第 1 部分: BIRT 与算法简介
publish-date=03282011