2016-10-21 3 views
0

erforderlich sind, wenn ich ein neues workitem bin zu schaffen, ich es einrichten wie:Validate-Methode gibt Felder, die nicht

WorkItem workitem = new WorkiItem(workItemType); 

Und dann Felder Ich bin immer alle erforderlichen einfach direkt Validierung, so dass ich weiß, welche Felder ich vor dem Speichern ausfüllen muss.

ArrayList requiredFields = workitem.Validate(); 

Aber im Innern meines requiredFields, gibt es ein Feld, die als Pflichtfelder in der Fielddefinition nicht markiert sind. Es gibt zum Beispiel ein Feld "Assigned To", das kein Pflichtfeld ist, also kann ich innerhalb der TFS-Webapplikation ein Workitem erstellen, ohne dieses Feld zu füllen. Warum wird es bei der Validierung in die Pflichtfeldliste aufgenommen? Ich möchte es nicht speichern, wenn es nicht validiert ist.

+0

Mögliche Duplikat [Erhalte Pflichtfelder für einige WorkItems] (http://stackoverflow.com/questions/21621866/get-required-fields-for-some-workitem) – DaveShaw

+0

Was ist der Typ des validierten Workitems? Das Feld Zugewiesen ist für einige Arbeitsaufgabentypen erforderlich. –

Antwort

0

WorkItem-Validierung ist in der Vorlage des WorkItemType definiert. Die Felder können verschiedene Validierungsanforderungen an die (option1) aktuellen Zustand des WorkItem basiert oder die Berechtigungen des aktuellen Benutzers (option2) Der folgende Code ist ein Beispiel für die beiden Optionen für Ihre Referenz:

// Set the following variables accordingly 
     string workItemTypeName = "Bug"; 
     string teamProjectName = "My Project"; 
     string usernameToImpersonate = "XXX"; 
     string tfsTeamProjectCollectionUrl = "http://xxx:8080/tfs/defaultcollection"; 

    // OPTION 1: no impersonation. 
    // Get an instance to TFS using the current thread's identity. 
    // NOTE: The current thread's identity needs to have the "" permision or else you will receive 
    //  a runtime SOAP exception: "Access Denied: [username] needs the following permission(s) to perform this action: Make requests on behalf of others" 
    TfsTeamProjectCollection tfs = new TfsTeamProjectCollection(new Uri(tfsTeamProjectCollectionUrl)); 
    IIdentityManagementService identityManagementService = tfs.GetService<IIdentityManagementService>(); 

    // OPTION 2: impersonation. Remove the following two lines of code if you don't need to impersonate. 
    // Get an instance to TFS impersonating the specified user. 
    // NOTE: This is not needed if the current thread's identity is that of the user 
    //  needed to impersonate. Simple use the ablve TfsTeamProjectCollection instance 
    TeamFoundationIdentity identity = identityManagementService.ReadIdentity(IdentitySearchFactor.AccountName, usernameToImpersonate, MembershipQuery.None, ReadIdentityOptions.None); 
    tfs = new TfsTeamProjectCollection(tfs.Uri, identity.Descriptor); 

    WorkItem workItem = null; 
    WorkItemStore store = tfs.GetService<WorkItemStore>(); 

    // Determine if we are creating a new WorkItem or loading an existing WorkItem. 
    if(workItemId.HasValue) { 
     workItem = store.GetWorkItem(workItemId.Value); 
    } 
    else { 
     Project project = store.Projects[ teamProjectName ]; 
     WorkItemType workItemType = project.WorkItemTypes[ workItemTypeName ]; 
     workItem = new WorkItem(workItemType); 
    } 

    if(workItem != null) { 

     foreach(Field field in workItem.Fields) { 
      if(field.IsRequired) { 
      // TODO 
      } 
     } 
    } 
+0

das scheint hilfreich, aber wo bekommen Sie die workItemId-Variable? –

+0

Verwenden von workItemId als Beispiel, damit Sie sehen können, wie Sie ein vorhandenes workItem erhalten. Wenn Ihre Anwendung das Bearbeiten vorhandener Arbeitselemente unterstützt, müssen Sie das vorhandene Arbeitselement ermitteln, um festzustellen, welche Felder erforderlich sind. Wenn Sie immer nur neue Workitems anlegen, dann brauchen Sie das if (workItemId.HasValue) nicht. –

+0

Weitere Details finden Sie in diesem Tutorial https://blog.joergbattermann.com/2016/05/05/vsts -tfs-rest-api-06-Abfrage-und-Abfrage-für-existierende-Work-Items / –

Verwandte Themen