如何:使用VersionOne SDK创建资产

时间:2016-10-18 12:40:52

标签: c# sdk versionone

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

  

缺陷来自PrimaryWorkitem

     
      
  • 描述:LongText
  •   
  • 姓名:文字
  •   
  • 父母:与主题的关系 - 儿童的互惠
  •   
  • 优先级:与WorkitemPriority的关系 - PrimaryWorkitems的倒数
  •   
  • 范围:与范围的关系 - 工作项的互惠
  •   
  • 来源:与StorySource的关系 - PrimaryWorkitems的倒数
  •   
  • 状态:与StoryStatus的关系 - PrimaryWorkitems的倒数
  •   
  • 团队:与团队的关系 - 工作项目的互惠
  •   

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

  

远程服务器返回错误:(400)错误请求   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);

我理解错误是由指定所有必需属性引起的。我对某些属性的指定感到茫然:父,范围等

有没有人知道使用SDK创建资产的更好的文档?有没有可用的SDK示例/示例代码?

1 个答案:

答案 0 :(得分:1)

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

关系主题表示Parent属性接受对特定主题的引用。您可以将Parent属性设置为类似

的格式

Theme:1036

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

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

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

enter image description here

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

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

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

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

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