我正在尝试编写一些C#代码来利用VersionOne SDK来创建缺陷资产。我已经查询了我们的系统并确定了所需的属性:
缺陷来源于PrimaryWorkitem
有些值是显而易见的,而另一些则是抽象的。例如,我不知道该为“父”属性或“作用域”指定什么。使用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示例/示例代码可用?
发布于 2016-10-18 14:54:11
在创建主要工作项(如缺陷或故事)时,必须在特定项目的上下文中创建它。该项目在系统级别上被称为范围。缺陷上的父属性称为主题。默认情况下,这不是必需的属性。您的组织中有人已根据需要声明了此特定项。
父:Relation to Theme 意味着父属性接受对特定主题的引用。您可以将父属性设置为如下格式
Theme:1036
这被称为OID。它只是一个系统引用,它是一个类似于表的结构,称为一个包含系统中所有不同主题的关系。如果查询数据API,可以获得所有这些主题的列表。该查询如下所示
yourVersionOneURL/rest-1.v1/Data/Theme?sel=ID,Name您将在浏览器中获得一个xml列表,其中显示n个

因此,如果我想将一个名为恤的主题与我的缺陷联系起来,我会将父属性设置为主题:1036。
您可以将此添加到代码中。
IAttributeDefinition parentAttribute = newDefect.GetAttributeDefinition("Parent");
newDefect.SetAttributeValue(parentAttribute,”Theme:1036”);同样的过程也适用于范围。除了查询之外,还有一种选择。您可以进入VersionOne UI,找到所需的项目名称(或其他资产),将鼠标悬停在项目名称(范围)上,并在浏览器底部的状态栏中看到一些指示与该项目名称关联的作用域OID的内容。
我会与您的VersionOne管理员聊天,并弄清楚为什么您的组织需要所需的主题。
https://stackoverflow.com/questions/40108568
复制相似问题