2

可能是一个回顾新手的问题,但是我如何根据稍后在其历史中设置的属性返回故事的所有历史?

具体来说,我想加载我项目中在过去两周内接受日期的所有故事/缺陷的所有历史记录。

以下查询(如下)不起作用,因为它(当然)只返回那些接受日期与查询匹配的历史记录。我真正想要的是在该日期之后最终被接受的任何缺陷/故事的所有历史记录......

filters :
[
    {
        property: "_TypeHierarchy",
        value: { $nin: [ -51009, -51012, -51031, -51078 ] }
    },
    {
        property: "_ProjectHierarchy",
        value: this.getContext().getProject().ObjectID
    },
    {
        property: "AcceptedDate",
        value: { $gt: Ext.Date.format(twoWeeksBack, 'Y-m-d') }
    }
]
4

3 回答 3

1

感谢尼克的帮助,我将其分为两个查询。第一个获取具有可接受日期的故事/缺陷的最终历史记录。我从该列表中累积对象 ID,然后启动第二个查询,该查询会查找从第一个查询返回的每个对象的整个历史记录。

请注意,我在“窗口”范围内缓存了一些变量 - 这是我蹩脚的解决方法,因为当我需要它时,我无法完全弄清楚“this”的上下文......

window.projectId = this.getContext().getProject().ObjectID;

当我执行查询时,我最终也会刷新 window.objectIds(我存储第一个查询的结果),所以我不会在重新加载时累积结果。我确信有更好的方法可以做到这一点,但我在 javascript 中遇到了作用域。

过滤第一个查询

filters : [ {
    property : "_TypeHierarchy",
    value : {
        $nin : [ -51009, -51012, -51031, -51078 ]
    }
}, {
    property : "_ProjectHierarchy",
    value : window.projectId
}, {
    property : "AcceptedDate",
    value : {
        $gt : Ext.Date.format(monthBack, 'Y-m-d')
    }
}, {
    property : "_ValidTo",
    value : {
        $gt : '3000-01-01'
    }
} ]

过滤第二个查询:

filters : [ {
    property : "_TypeHierarchy",
    value : {
        $nin : [ -51009, -51012, -51031, -51078 ]
    }
}, {
    property : "_ProjectHierarchy",
    value : window.projectId
}, {
    property : "ObjectID",
    value : {
        $in : window.objectIds
    }
}, {
    property : "c_Kanban",
    value : {
        $exists : true
    }
} ]
于 2014-02-10T18:32:06.297 回答
1

这是一个替代查询,它将仅返回表示转换为 Accepted 状态的快照。

find:{
  _TypeHierarchy: { $in : [ -51038, -51006 ] },
  _ProjectHierarchy: 999999,
  ScheduleState: { $gte: "Accepted" },
  "_PreviousValues.ScheduleState": {$lt: "Accepted", $exists: true},
  AcceptedDate: { $gte: "2014-02-01TZ" }
}

如果您需要故事/缺陷的完整历史记录,仍然需要进行第二次查询。这至少应该给你一个更清晰的初始列表。另请注意,Project: 999999 限制为给定项目,而 _ProjectHierarchy 也会在子项目中发现故事/缺陷。

如果您有兴趣,该查询类似于位于https://rally1.rallydev.com/analytics/doc/的 Lookback API 文档中的场景 #5 。

于 2014-02-11T03:59:03.237 回答
0

如果我理解这个问题,您希望获得当前被接受的故事,但您希望返回的结果包括不被接受时的快照。在编写代码之前,您可以在浏览器中测试一个等效查询,看看结果是否符合预期。

这是一个示例 - 您将不得不更改 OID。

https://rally1.rallydev.com/analytics/v2.0/service/rally/workspace/12352608129/artifact/snapshot/query.js?find={"_ProjectHierarchy":12352608219,"_TypeHierarchy":"HierarchicalRequirement","ScheduleState":"Accepted",_ValidFrom:{$gte: "2013-11-01",$lt: "2014-01-01"}}},sort:[{"ObjectID": 1},{_ValidFrom: 1}]&fields=["Name","ScheduleState","PlanEstimate"]&hydrate=["ScheduleState"]

像这样的查询是正确的:find={"AcceptedDate":{$gt:"2014-01-01T00:00:00.000Z"}}

每个满足它的故事将返回一个快照。

https://rally1.rallydev.com/analytics/v2.0/service/rally/workspace/12352608129/artifact/snapshot/query.js?find={"AcceptedDate":{$gt:"2014-01-01T00:00:00.000Z"}}&fields=true&start=0&pagesize=1000 

但是这样的查询:find={"ObjectID":{$in:[16483705391,16437964257,14943067452]}}

将返回 3 个工件的全部历史记录:

https://rally1.rallydev.com/analytics/v2.0/service/rally/workspace/12352608129/artifact/snapshot/query.js?find={"ObjectID":{$in:[16483705391,16437964257,14943067452]}}&fields=true&start=0&pagesize=1000

为了说明,这里有一些数字:最后一个查询为我返回 17 个结果。我查看每个故事的修订历史,每个故事的修订数分别为 5、5、7,总和等于查询返回的总结果数。另一方面,满足的故事数 find={"AcceptedDate":{$gt:"2014-01-01T00:00:00.000Z"}}为 13。基于接受日期的查询返回 13 个结果,每个故事一个快照。

于 2014-02-07T21:40:50.890 回答