1

在尝试从分析引擎加载信息时,我无法加载自定义字段。特别是,我希望加载属于 Portfolio Items 的信息。有一些返回 OID 的字段,例如状态,我可以在分析场景文档中进行水合,但无法通过 SDK 进行水合。事实上,我无法检索任何 State 值。看起来,虽然为 InvestmentCategory 返回了一个 OID,但它对于每条记录都是相同的,并且水合物为“无”。

我想知道 SDK 的这一部分有多成熟,和/或是否有我只是缺少的额外参数?自定义字段是否还需要以“c_”为前缀?我试过用和不带前缀来指定它们,但没有运气。

EDIT1:看来我只需要增加限制。我看到自定义字段返回的值以“c_”为前缀。当我确认只是早期的记录让我感到困惑时,我将发布另一个更新。水合作用“问题”仍然存在。我只看到 InvestmentCategory 被水合了。

EDIT2:确实,“问题”是,随着时间的推移,必填字段集发生了变化,而旧记录没有指定/定义某些字段,例如投资类别。State 字段的水合作用问题仍然存在,我希望在有更新时收到 Mark 的回复。我希望将来会有更新允许更多领域的水合作用。

4

1 回答 1

4

我在 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 样式语法的问题。两者之间的性能差异应该可以忽略不计(尽管我承认,我还没有在微基准测试中对此进行过测试)。

该缺陷仍在待调查的积压中,但目前的理论是它可能是针对已删除的状态的,我们只能使用当前值来水合值 - 我们使用“今天的镜头”来处理这些外国键。将来这种情况可能会改变,但我不能保证任何事情,对不起。当发现缺陷时,我会再次更新。

于 2012-11-16T20:07:33.807 回答