我不知道如何在Rally中获取一个用户故事的所有字段。现在,我需要获取最后5个迭代,并为每个迭代计算完成点。
我通过指定来获取迭代,type: iteration
但不知道如何获取这些迭代的用户故事,以及如何仅指定完成。我应该处理TaskStatus
与用户故事相关的任务吗?
我猜用户故事在迭代上有参考,但我不确定它的外观。我觉得这本手册不是很简洁,我还应该使用其他文档吗?
编辑:
我看到在HierarchicalRequirement中,我具有带有以下字段的Iteration对象:
_rallyAPIMajor: 2
_rallyAPIMinor: 0
_ref: https://rally1.rallydev.com/slm/webservice/v2.0/iteration/18831411089
_refObjectUUID: 8053fbd0-867c-4126-805c-18ccbc958a93
_refObjectName: Iteration 1
_type: Iteration
问题:我应该如何使用?我当时想获取5个迭代(按EndDate排序),然后为每个迭代获取所有任务。但是我不确定如何为此指定查询(该任务属于迭代)。这个问题听起来很愚蠢,但是我仍然在和Rally一起在黑暗中射击。关于完成的要求,我应该只获取那些已完成TaskStatus的人员吗?
Web Services API文档中提供了Rally对象模型。
HierarchicalRequirement(用户故事)对象上有Iteration属性,该属性是对Iteration对象的引用,因此可以通过迭代查询故事。
您参考的手册特定于LookbackAPI,并且需要熟悉WS API文档中的对象模型。
这是一个LookbackAPI端点,用于查询为三个迭代之一安排的用户故事,其中222,333,444是迭代的ObjectID:
"Iteration" : {$in: [222,333,444]}
并获取'FormattedID','ScheduleState','PlanEstimate'
用户故事字段。
https://rally1.rallydev.com/analytics/v2.0/service/rally/workspace/111/artifact/snapshot/query.js?find={"Iteration" : {$in: [222,333,444]},"_TypeHierarchy":"HierarchicalRequirement","__At" : "current"}&fields=['FormattedID','ScheduleState','PlanEstimate'],hydrate=['ScheduleState']
这是一个类似的WS API端点:
https://rally1.rallydev.com/slm/webservice/v2.0/hierarchicalrequirement?workspace=https://rally1.rallydev.com/slm/webservice/v2.0/workspace/1119&query=(((Iteration.ObjectID = 222) OR (Iteration.ObjectID = 333)) OR (Iteration.ObjectID = 444))&fetch=FormattedID,ScheduleState,PlanEstimate&pagesize=200
两个查询返回相同的结果。
即使您想要获取对象的当前状态,也可以使用Lookback API查询而不是WS API查询,例如在上面的示例中使用"__At" : "current"
,但是Lookback API旨在提供历史数据。WS API仅返回对象的当前状态,而Lookback API可以及时返回这些对象的快照。
反弹节点并没有有一个内置的回溯API支持。
这是一个集会节点示例,它通过3次迭代查询故事:
var rally = require('rally'),
queryUtils = rally.util.query;
mySettings = {
apiKey: '_XYZ...',
server: 'https://rally1.rallydev.com', //this is the default
requestOptions: {
headers: {
'X-RallyIntegrationName': 'stories by iteration node.js program',
'X-RallyIntegrationVendor': 'My company'
'X-RallyIntegrationVersion': '1.0'
},
}
},
restApi = rally(mySettings);
var q = queryUtils.where('Iteration.ObjectID', '=', 222).or('Iteration.ObjectID', '=', 333).or('Iteration.ObjectID', '=', 444);
restApi.query({
type: 'hierarchicalrequirement'
fetch: ['FormattedID', 'Name', 'ScheduleState', 'PlanEstimate', 'Iteration'],
query: q,
scope: {
workspace: '/workspace/111',
},
}, function(error, result) {
if(error) {
console.log(error);
} else {
console.log(result.Results);
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句