我正在尝试对TFS2010中的工作项进行大量验证。我知道验证可以使用Microsoft提供的开箱即用规则来完成,但我希望进行更高级的验证。例如,
1)如果之前的Sprint正在进行中,则不应该进行Sprint规划。
2)我也在寻找工作项类型之间的验证。例如,除了当前Sprint中计划的状态更改外,所有用户故事都不应允许状态更改。
是可以通过API实现的,如果是这样的话,请指导我以上两个是我的要求....
另一个查询,或者是否有可能为此场景编写验证错误...因为我们尝试保存任何没有标题的工作项而它会抛出TF20012 ......
同样我们可以处理这个案子......如果是这样,请指导我......
但我正在尝试这样,启动我正在尝试下面的代码为前一个sprint说我包括开始和结束日期跟踪,如果是这样那么我必须写所有n个冲刺结束。 ..哪种方式最好继续
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();
}
}
}
答案 0 :(得分:0)
我认为您可以通过组合API和工作项类型模板来实现它。您可以修改TFS工作项定义类型并在字段上设置一些规则,也可以定义自己的自定义字段并在其上设置条件/值。恩。您可以创建跟踪sprint状态的自定义字段,并使用When, AllowedValues, ProhibitedValues
工作项类型。
您还可以使用NotEmpty
条件将标题设置为When
。您可以参考this了解如何在字段上定义规则,自定义工作项类型等。
我希望这会对你有所帮助。