如何:使用 VersionOne SDK 创建资产

How to: Create an Asset using the VersionOne SDK

我正在尝试编写一些 C# 代码来利用 VersionOne SDK 创建缺陷资产。我查询了我们的系统并确定了所需的属性:

Defect derives from PrimaryWorkitem

  • Description : LongText
  • Name : Text
  • Parent : Relation to Theme — reciprocal of Children
  • Priority : Relation to WorkitemPriority — reciprocal of PrimaryWorkitems
  • Scope : Relation to Scope — reciprocal of Workitems
  • Source : Relation to StorySource — reciprocal of PrimaryWorkitems
  • Status : Relation to StoryStatus — reciprocal of PrimaryWorkitems
  • Team : Relation to Team — reciprocal of Workitems

有些值是显而易见的,而另一些则有些抽象。例如,我不确定为“Parent”属性或“Scope”指定什么。使用 SDK 创建资产的文档非常少。我似乎找不到任何使用 SDK 的代码示例。目前,我的代码 returns 异常:

The remote server returned an error: (400) Bad Request Violation'Required'AttributeDefinition'Parent'Defect

而且,这是我目前使用的代码:

static void AddV1Record(List<V1WerRecord> records)
        {
            V1Connector connector = V1Connector
                .WithInstanceUrl(VersionOneURL)
                .WithUserAgentHeader("VersionOneUpdate", "1.0")
                .WithUsernameAndPassword(VersionOneId, VersionOnePwd)
                .Build();

            IServices services = new Services(connector);

            Oid projectId = services.GetOid("Scope:0");
            IAssetType storyType = services.Meta.GetAssetType("Defect");
            Asset newDefect = services.New(storyType, projectId);
            IAttributeDefinition descAttribute = storyType.GetAttributeDefinition("Description");
            newDefect.SetAttributeValue(descAttribute, "My New Defect");
            IAttributeDefinition nameAttribute = storyType.GetAttributeDefinition("Name");
            newDefect.SetAttributeValue(nameAttribute, "My Name");
            services.Save(newDefect);

我知道这个错误是由于 没有 指定所有必需的属性造成的。我不知道为某些属性指定什么:Parent、Scope 等。

有谁知道解释如何使用 SDK 创建资产的更好的文档?有没有好的SDK examples/sample代码可用?

创建缺陷或故事等主要工作项时,您必须在特定项目的上下文中创建它。该项目在系统级别被称为 Scope。 Defect 的 Parent 属性就是所谓的 Theme。默认情况下,这不是必需的属性。您组织中的某个人已根据需要声明了此特定项目。

Parent: Relation to Theme 表示 Parent 属性接受对特定主题。您可以将 Parent 属性设置为如下格式的内容

Theme:1036

这称为 OID。它只是一个类似于 table 的结构的系统引用,称为关系,它包含系统中所有不同的主题。如果您查询您的数据 API,您可以获得所有这些主题的列表。查询看起来像这样

yourVersionOneURL/rest-1.v1/Data/Theme?sel=ID,Name

您将在您的浏览器中得到一个 xml 列表,其中显示了 n 个

因此,如果我想将名为 Shirts 的 Theme 与我的 Defect 相关联,我会将 Parent 属性设置为 Theme:1036。

您可以将此添加到您的代码中

IAttributeDefinition parentAttribute = newDefect.GetAttributeDefinition("Parent");
newDefect.SetAttributeValue(parentAttribute,”Theme:1036”);

同样的过程也适用于 Scope。有一种替代查询的方法。您可以进入 VersionOne UI,找到您需要的项目(或其他资产)的名称,将鼠标悬停在项目名称(范围)上,然后在浏览器底部的状态栏中看到指示与该项目名称关联的范围 OID 的内容。

我会与您的 VersionOne 管理员交谈并弄清楚为什么您的组织需要所需的主题