Я пытаюсь выполнить обширную проверку рабочих элементов в TFS2010. Я понимаю, что валидация может быть выполнена с использованием готовых правил, предоставленных Microsoft, однако я стараюсь сделать более продвинутые проверки. Например,Возможна перекрестная проверка TFS?
1) Спринт Планирование не должно происходить, если предыдущий Спринт находится в процессе выполнения.
2) Я также ищу подтверждение между типами рабочих элементов. Например, все истории пользователей не должны допускать изменения статуса, отличные от тех, которые запланированы в текущем Sprint.
является то, что возможно через API, если да наставит меня выше две мои требования ....
другой запрос, или можно написать сообщение об ошибке проверки для этого scenario..say, как мы пытаемся сохранить любой WorkItem без заголовка он бросает TF20012 ...
Аналогично мы можем обрабатывать этот случай ... если да наставит меня ...
Но я пытался, как это, чтобы начать я пытаюсь это ниже код для предыдущий спринт говорит, что я включаю начало и конец даты, чтобы отслеживать, если это так, то мне нужно написать для всего n числа спринтов, которые прошли ... какой путь лучше всего пойти ahea d
Uri tfsUri = (args.Length < 1) ?
new Uri("http://cscdbche646:8080/tfs") : new Uri(args[0]);
TfsConfigurationServer configurationServer = TfsConfigurationServerFactory.GetConfigurationServer(tfsUri);
// Get the catalog of team project collections
ReadOnlyCollection<CatalogNode> collectionNodes = configurationServer.CatalogNode.QueryChildren(
new[] { CatalogResourceTypes.ProjectCollection },
false, CatalogQueryOptions.None);
// List the team project collections
foreach (CatalogNode collectionNode in collectionNodes)
{
// Use the InstanceId property to get the team project collection
Guid collectionId = new Guid(collectionNode.Resource.Properties["InstanceId"]);
TfsTeamProjectCollection teamProjectCollection = configurationServer.GetTeamProjectCollection(collectionId);
// Print the name of the team project collection
Console.WriteLine("Collection: " + teamProjectCollection.Name);
// Get a catalog of team projects for the collection
ReadOnlyCollection<CatalogNode> projectNodes = collectionNode.QueryChildren(
new[] { CatalogResourceTypes.TeamProject },
false, CatalogQueryOptions.None);
// List the team projects in the collection
foreach (CatalogNode projectNode in projectNodes)
{
Console.WriteLine(" Team Project: " + projectNode.Resource.DisplayName);
// Get the work item store
WorkItemStore workItemStore = teamProjectCollection.GetService<WorkItemStore>();
// WorkItemCollection queryResults = workItemStore.Query(" Select [State], [Title] From WorkItems Where [Work Item Type] = 'Bug'");
WorkItemCollection queryResults = workItemStore.Query("Select [Work Item Type] = 'User Story' From WorkItems Where [State] = 'Closed' And ([System.StartDate.SDate] = '10/05/13') And ([System.EndDate.EDate] = '20/05/13')");
foreach (WorkItem wi in queryResults)
{
Console.WriteLine("State = " + wi.State.ToString());
Console.WriteLine("Title = " + wi.Title.ToString());
//string oldAssignedTo = (string)wi.Fields["State"].Value;
//wi.Fields["State"].Value = "In-Progress";
if (wi.IsDirty)
Console.WriteLine("The work item state cannot be changed.");
string oldAssignedTo = (string)wi.State;
wi.Fields["State"].Value = oldAssignedTo;
wi.Save();
}
}
}