【问题标题】:TFS workitem cross-validations is possible?TFS 工作项交叉验证是否可行?
【发布时间】:2013-11-20 21:24:34
【问题描述】:

我正在尝试对 TFS2010 中的工作项进行广泛的验证。我知道可以使用 Microsoft 提供的开箱即用规则来完成验证,但是我希望进行更高级的验证。例如,

1)如果前一个 Sprint 正在进行中,则不应进行 Sprint 计划。

2)我也在寻找工作项类型之间的验证。例如,除了当前 Sprint 中计划的状态之外,所有用户故事都不应允许状态更改。

是否可以通过 API 实现,如果可以,请指导我以上两个是我的要求....

另一个查询,或者是否可以为这种情况编写验证错误..说当我们尝试保存任何没有标题的工作项时它会抛出 TF20012...

同样我们可以处理这种情况...如果可以的话请指导我...

但我正在尝试这样,开始我正在尝试下面的代码,用于之前的 sprint 说我包括要跟踪的开始和结束日期,如果是这样,那么我必须为所有 n 个结束的 sprint 编写。 ..哪条路最好走

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();


                    }

                }
            }

【问题讨论】:

    标签: tfs tfs-sdk


    【解决方案1】:

    我认为您可以通过结合 API 和工作项类型模板来实现它。您可以修改 TFS 工作项定义类型并在字段上设置一些规则,或者您可以定义自己的自定义字段并在其上设置条件/值。前任。您可以创建一个自定义字段来跟踪 sprint 状态并使用工作项类型的When, AllowedValues, ProhibitedValues

    您还可以使用When 条件将标题设置为NotEmpty。您可以参考this 了解如何定义字段规则、自定义工作项类型等。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2018-08-16
      • 1970-01-01
      • 2014-09-07
      • 2015-10-26
      • 1970-01-01
      • 2019-09-29
      • 2018-03-30
      • 2020-10-04
      • 1970-01-01
      相关资源
      最近更新 更多