javascript - 拉力赛应用程序 SDK 2.0 : SnapshotStore unable to load custom fields and hydrate

标签 javascript extjs4 rally

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

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

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

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

最佳答案

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

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

关于javascript - 拉力赛应用程序 SDK 2.0 : SnapshotStore unable to load custom fields and hydrate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13403913/

相关文章:

javascript - Chrome 控制台对象

php - 如何根据用户命令字符串为 HTML 元素着色

extjs - 突出显示 extjs4 折线图的一部分

java - Rally Java Lookback api 无法在 Proxy 后面工作

javascript - 跨域请求适用于本地主机,但不适用于服务器

javascript - 如何在完成时阻止javascript计时器重置

javascript - ExtJS 4 密码验证

javascript - 以编程方式设置标签文本会忽略 ExtJS 中的换行符

java - 我在拉力赛中有一个测试用例。我想使用 java API 获取其中存在测试用例的测试文件夹的名称

javascript - 数据源查询回调问题(调用顺序、改变全局变量的能力)