【问题标题】:How to: Create an Asset using the VersionOne SDK如何:使用 VersionOne SDK 创建资产
【发布时间】:2016-10-18 12:40:51
【问题描述】:

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

缺陷源自 PrimaryWorkitem

  • 说明:长文本
  • 名称:文字
  • 父级:与主题的关系 — 子级的倒数
  • 优先级:与 WorkitemPriority 的关系 — PrimaryWorkitems 的倒数
  • 范围:与范围的关系 - 工作项的倒数
  • 来源:与 StorySource 的关系 — PrimaryWorkitems 的倒数
  • 状态:与 StoryStatus 的关系 — PrimaryWorkitems 的倒数
  • 团队:与团队的关系 - 工作项的倒数

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

远程服务器返回错误:(400) Bad Request 违反'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 示例/示例代码可用?

【问题讨论】:

    标签: c# sdk versionone


    【解决方案1】:

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

    ParentRelationTheme 意味着 Parent 属性接受对特定 Theme 的引用。您可以将 Parent 属性设置为类似这样的格式

    Theme:1036

    这称为 OID。它只是一个表结构的系统引用,称为关系,它包含系统中所有不同的主题。如果您查询您的数据 API,您可以获得所有这些主题的列表。查询如下所示

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

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

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

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

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

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

    我会与您的 VersionOne 管理员聊天,了解为什么您的组织需要所需的主题

    【讨论】:

    • 感谢您的帮助。这确实为如何使用 SDK 构建代码提供了很多启示。您提供的查询语法是我需要的中断。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    相关资源
    最近更新 更多