2010-05-17 5 views
2

Je tente d'importer des éléments d'un système de suivi des problèmes hérités stocké dans une feuille Excel dans Team Foundation Server. Je parcours avec succès les lignes du fichier Excel et je peux créer de nouveaux éléments de travail, mais ils sont toujours dans l'état Proposé. Si je tente de modifier l'état en Closed, puis appelez la méthode Validate pour l'élément de travail, une erreur de validation s'affiche sur la propriété State - InvalidListValue {4}.Comment fermer un élément de travail TFS par programme

Dim MyProj As Project = store.Projects("MyProject") 
    Dim WIT As WorkItemType = MyProj.WorkItemTypes("Task") 
    Dim WorkItem As WorkItem = WIT.NewWorkItem() 

    WorkItem.Title = Title 
    WorkItem.Description = Description 
    WorkItem.History = History 
    WorkItem.State = "Closed" 
    WorkItem.Fields("Assigned To").Value = AssignedTo 
    WorkItem.Fields("Priority").Value = Priority 
    WorkItem.Fields("Closed By").Value = ClosedBy 

J'ai aussi essayé le code ci-dessous, en essayant d'enregistrer l'élément de travail, changer l'Etat fermé, et l'enregistrer à nouveau, mais cela ne semble pas fonctionner soit - l'Etat est toujours proposée lorsque je ouvrir sous la Articles Mon travail recherche TFS:

 WorkItem.Save() 

     WorkItem.State = "Closed" 
     WorkItem.Fields("Closed By").Value = ClosedBy 
     WorkItem.Save() 

quelqu'un at-il essayé d'autre une telle chose et réussi, ou avoir des idées pour le faire? Oh, et c'est une tâche CMMI que j'essaye de créer et fermer. Je me demande si j'essaie de sauter certaines activités requises par le CMMI, mais je suis nouveau à ce sujet, et c'est juste une supposition.

Répondre

5

J'ai trouvé comment créer et fermer une tâche TFS CMMI par programme. La clé était de passer par le processus CMMI, qui peut être trouvé à http://msdn.microsoft.com/en-us/library/bb668962.aspx, en changeant la propriété Etat et en sauvegardant le WorkItem après chaque changement.

 ... WorkItem creation tasks 
     WorkItem.Fields("Assigned To").Value = AssignedTo 
     WorkItem.Fields("Priority").Value = Priority 

     'This first Save creates a WorkItem in the Proposed state' 
     WorkItem.Save() 

     WorkItem.State = "Active" 
     Errors = WorkItem.Validate() 
     WorkItem.Save() 

     WorkItem.State = "Resolved" 
     WorkItem.Fields("Resolved By").Value = ClosedBy 
     WorkItem.Fields("Resolved Reason").Value = "Just because" 
     Errors = WorkItem.Validate() 
     WorkItem.Save() 

     WorkItem.State = "Closed" 
     WorkItem.Fields("Closed By").Value = ClosedBy 
     Errors = WorkItem.Validate() 
     WorkItem.Save() 
0

L'autre façon de contourner cela est de intsall "Process Editor".
Ouvrez le "Type WIT-WorkItem" à partir du serveur en utilisant Visual Studio.
Sélectionnez le WorkItem à modifier dans la liste des projets d'équipe et modifiez le workflow en supprimant assignto = None et en le remplaçant par "Obligatoire".

Questions connexes