Я пытаюсь создать Azure рабочих элементов DevOps программно в C#, но когда я добавляю поле System.State
со значением "Active"
, я получаю сообщение об ошибке:
RuleValidationException: поле «State» содержит значение «Active», которого нет в списке поддерживаемых значений
Я использую два метода для создания рабочего элемента (userstory), чтобы добавить несколько рабочих элементов (задач) в эту userstory и второй способ их связывания.
// create work item. Used for both Userstory and Task.
static WorkItem CreateWorkItem(string ProjectName, string WorkItemTypeName, Dictionary<string, object> Fields)
{
JsonPatchDocument patchDocument = new JsonPatchDocument();
foreach (var key in Fields.Keys)
{
Console.WriteLine($"{key} - {Fields[key]}");
patchDocument.Add(new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/fields/" + key,
Value = Fields[key]
});
}
return WorkItemClient.CreateWorkItemAsync(patchDocument, ProjectName, WorkItemTypeName).Result; // <==FAILS WITH ABOVE ERROR MESSAGE, after the first childitem. The parent item goes fine.
}
// Связывание пользовательской истории и дочерних элементов.
static WorkItem LinkChildItems(int ParentWorkItemID, string ChildWorkItemUrl)
{
JsonPatchDocument patchDocument = new JsonPatchDocument();
patchDocument.Add(new JsonPatchOperation()
{
Operation = Operation.Add,
Path = "/relations/-",
Value = new
{
rel = "System.LinkTypes.Hierarchy-Forward",
url = ChildWorkItemUrl,
attributes = new
{
comment = "Automatically added using ADO API."
}
}
});
return WorkItemClient.UpdateWorkItemAsync(patchDocument, ParentWorkItemID).Result;
}
Оба метода используются в a для l oop:
// Create new parent item with params projectName, WorkItemType (here: US) and the fields of the dictionary.
var parentItem = CreateWorkItem(teamProject, "User Story", fields);
int parentItemID = parentItem.Id.GetValueOrDefault();
// Counter
int i = 1;
// Loop to create childitems.
foreach (string activity in activityList)
{
fields["System.Title"] = $"{i}) {activity}: {WorkItemTitle}";
var childItem = CreateWorkItem(teamProject, "Task", fields);
var linkChildToParent = LinkChildItems(parentItemID, childItem.Url);
i++;
}
fields - это словарь
string WorkItemTitle = "New API used for bulk import";
Dictionary<string, object> fields = new Dictionary<string, object>();
fields.Add("System.Title", WorkItemTitle);
fields.Add("System.Description", $"Automatically created at {DateTime.Now}.");
fields.Add("Microsoft.VSTS.Common.Priority", 4);
fields.Add("System.AssignedTo", "Some Person");
fields.Add("System.State", "Active"); //<--SETS THE STATE ATTRIBUTE
Если поле System.State
удалено, пользовательская история с дочерними элементами (Задачами) создается без проблем. Допустимые значения для System.State
должны включать Active
, Closed
, New
и Resolved
. Если я просто создаю один элемент с System.State
, установленным на "Active
", это также работает. Только когда l oop используется на нескольких элементах, мой код не работает. У кого-нибудь есть идеи, почему это так?
Любая помощь приветствуется!