我在 Rally Software 工作,是构建 Lookback Api 的团队的一员。我刚刚对此进行了测试,它似乎适用于 PortfolioItem InvestmentCategory 字段,但仅部分适用于 State,所以我认为您发现了问题。
要确认您的 PortfolioItems 的 InvestmentCategory 不是“None”,您可以尝试以下查询:
https://rally1.rallydev.com/analytics/v2.0/service/rally/workspace/<YOUR WORKSPACE OID HERE>/artifact/snapshot/query.js?find={_TypeHierarchy:"PortfolioItem",InvestmentCategory:{$ne:"None"}}&fields=["InvestmentCategory"]&hydrate=["InvestmentCategory"]
同样,如果您通过 SDK 进行尝试,您的 SnapshotStore 配置应该类似于:
{
context: {
workspace: this.context.getWorkspace(),
project: this.context.getProject()
},
rawFind: {
_TypeHierarchy:"PortfolioItem",
InvestmentCategory:{$ne:"None"}
},
fetch: ["InvestmentCategory"],
hydrate: ["InvestmentCategory"]
}
您可以通过在浏览器的调试器中检查服务器响应来验证调试器中查询的原始结果。在 Chrome 中,如果您转到“网络”选项卡,您应该会看到一个“查询”条目,您可以在右侧的“响应”选项卡中查看,或者(我更喜欢这样做)右键单击它并选择'在新的标签页打开链接'。如果您使用 Chrome 扩展程序“Google Chrome 的 JSONView 和 JSONLint”(https://chrome.google.com/webstore/detail/jsonview-and-jsonlint-for/mfjgkleajnieiaonjglfmanlmibchpam),它也更容易阅读。
对于 PortfolioItem 上的字段 State,我认为您发现了一个缺陷。我已将其输入为 DE15305 以进行调查。当我们知道更多时,我会在这里发帖。
编辑:
是的,我们允许您在 _TypeHierarchy 中使用类型名称的字符串版本,然后将它们解析为基础 OID。从理论上讲,使用 OID 应该会稍微快一些,所以如果你是从一个类型选择器中获得它的,但如果你对它们进行硬编码,那么使用字符串来提高可读性应该没问题。您对 PortflioItem 类型也是正确的,您可以搜索“PortfolioItem/Strategy”、“PortfolioItem/Feature”等(取决于它们是否已在您的工作区中重命名)。使用 OID 确实具有使您免于重命名的好处。
查询过滤器应该支持 rawFind 所做的一切,只是你喜欢 ExtJS 样式语法还是原生 Lookback API/MongoDB 样式语法的问题。两者之间的性能差异应该可以忽略不计(尽管我承认,我还没有在微基准测试中对此进行过测试)。
该缺陷仍在待调查的积压中,但目前的理论是它可能是针对已删除的状态的,我们只能使用当前值来水合值 - 我们使用“今天的镜头”来处理这些外国键。将来这种情况可能会改变,但我不能保证任何事情,对不起。当发现缺陷时,我会再次更新。