1

这是“使用 REST API 添加 VersionOne 表达式”的后续问题...

我正在尝试向 VersionOne 中的故事添加一个表达式(评论)。我现在可以做到这一点(在一些帮助下 - 请参阅原始帖子),但我有一个相关的问题:

在 VersionOne 中,每个故事都有一个编号(例如“B-01123”)和一个名称(例如“修复 ProcVars REST 功能”)。可以使用以下方式查询这些内容:

<Server Base URI>/rest-1.v1/Data/Story?sel=Name,Number&where=Number='B-01123'

但是,在内部,所有 VersionOne 资产都有一个 OID - 例如,上面的故事可能有一个 OID 为“Story:2017”。这是唯一的资产标识符。

似乎要向故事添加表达式或链接,您需要知道故事的 OID,因为添加内容时,您通常需要在 POSTed XML 中包含以下内容:

<Relation name="Asset" act="set">
    <Asset href="<Server Base URI>/rest-1.v1/Data/Story/2017" idref="Story:2017" />
</Relation>

当然,您可以执行查询(如上)以获取包含 OID 的 XML 响应,然后从 XML 中解析出来并在新请求中传递它。然而,这是一个由两部分组成的任务,并且是一个巨大的麻烦。

是否可以向故事添加链接或表达式,而您只知道故事编号(用户可见位)?

4

1 回答 1

0

是否可以向故事添加链接或表达式,而您只知道故事编号(用户可见位)?

不。 Number 属性只是一个文本标签。它间接地与 OID 关联,因为它是具有 OID 但不能替代 OID 的资产的一部分。OID 代表官方系统资产。每当您决定更新、添加或删除 VersionOne 中的任何资产时,您别无选择,只能参考资产的官方“OID”。

由于 Number 是一个只读的唯一字段,我想您可能会认为您可以将其用作参考。只需创建一个采用这样的 Number 的方法并像您一直在做的那样解析输出。

string GetOid(string Number)
{

    string URL="rest-1.v1//Data//PrimaryWorkitem?sel=ID,Number&where=Number=\'"+Number+"\'");
    var response = POST(URL); 
.
.
.  //Xml plumbing to extract OID from response
.
.
.  return OID;
}


GetOID("Defect","D-01001");

这适用于缺陷、故事或测试集。如果您改用关键字 Workitem,除了 PrimaryWorkitems,您还可以访问 Themes、Epics、Tests、Tasks

仅供参考:有一个现有的 VersionOne SDK 可以完成所有的 xml 管道。

于 2014-06-16T02:12:24.480 回答