0

TFS2010 で作業項目の広範な検証を行おうとしています。Microsoft が提供する標準のルールを使用して検証を実行できることは理解していますが、より高度な検証を行うことを検討しています。例えば、

1) 前のスプリントが進行中の場合、スプリント計画は実行されません。

2)作業項目タイプ間の検証も探しています。たとえば、すべてのユーザー ストーリーは、現在のスプリントで計画されているもの以外のステータス変更を許可してはなりません。

APIを介してそれは可能ですか?そうであれば、上記の2つが私の要件です....

別のクエリ、またはこのシナリオの検証エラーを書き込むことは可能ですか..たとえば、タイトルなしでワークアイテムを保存しようとすると、TF20012 がスローされます...

同様に、このケースを処理できます...そうであれば、私を案内してください...

しかし、私はこのようにしようとしていました.開始するには、以前のスプリントのコードの下でこれを試しています.追跡する開始日と終了日を含めていると言います.先に進むのが最善の方法です

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


                    }

                }
            }
4

1 に答える 1

0

APIとワークアイテム型のテンプレートを組み合わせることで実現できると思います。TFS 作業項目定義タイプを変更してフィールドにルールを設定するか、独自のカスタム フィールドを定義して条件/値を設定することができます。元。スプリントのステータスと When, AllowedValues, ProhibitedValues作業項目タイプの使用を追跡するカスタム フィールドを作成できます。

NotEmpty条件と同様にタイトルを設定することもできWhenます。これを参照して、フィールドのルールを定義する方法、作業項目タイプをカスタマイズする方法などを知ることができます。

これがお役に立てば幸いです。

于 2013-11-20T13:24:34.003 に答える