2013-06-12 2 views
0

Я пытаюсь выполнить обширную проверку рабочих элементов в 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(); 


        } 

       } 
      } 

ответ

0

Я думаю, вы можете достичь этого, объединив шаблоны типов API и рабочего элемента. Вы можете изменить типы определения рабочих элементов TFS и установить какое-либо правило в полях, или вы можете определить свои собственные настраиваемые поля и установить для него условие/значение. ех. Вы можете создать настраиваемое поле, которое отслеживает статус спринта и использовать When, AllowedValues, ProhibitedValues типа рабочего элемента.

Вы также можете установить заголовок как NotEmpty с When состояние. вы можете сослаться на this, чтобы знать, как определять правила в поле, настраивать тип рабочего элемента и т. д.

Я надеюсь, что это вам поможет.