2013-08-12 6 views
9

Czy istnieje sposób programowania dostępu do "Kolumny Kanban" dla WorkItem za pomocą API TFS 2012?Dostęp do kolumny Kanban (pole specyficzne dla zespołu) dla przedmiotu pracy

Używanie szablonu Scrum 2.2, historia błędu lub produktu Backlog Pozycja "[MyProject \ MyTeam] Kanban Column" jako zmienione pole, gdy element pracy jest przeciągany między kolumnami Kanban na planszy, ale pole to nie jest dostępny podczas specjalnego pobierania elementu pracy za pośrednictwem interfejsu API TFS.

Pojawia się również jako zmienione pole w obiekcie WorkItemChangedEvent podczas implementacji metody ProcessEvent w interfejsie Microsoft.TeamFoundation.Framework.Server.ISubscriber.

Obejście: Współpracownik znalazł blogpost o tworzeniu niestandardowych pole tylko do odczytu, aby utrzymywać wartość kolumny Kanban, wykorzystując WorkItemChangedEvent uchwycić ostatnią wartość. Wówczas można zapytać o tę kolumnę. Jednym z problemów z tym podejściem jest to, że można śledzić tylko kolumnę Kanban pojedynczego zespołu.

Aktualizacja: Według tego blogpost kolumna Kanban nie jest dziedziną, raczej "WIT Extension". Może to pomóc w uzyskaniu odpowiedzi.

Odpowiedz

6

Znalazłem sposób czytać wartość za pomocą TFS API 2013, wewnątrz metody ISubscriber.ProcessEvent:

var workItemId = 12345; 
var extService = new WorkItemTypeExtensionService(); 
var workItemService = new WorkItemService(); 
var wit = workItemService.GetWorkItem(requestContext, workItemId); 
foreach (var wef in extService.GetExtensions(requestContext, wit.WorkItemTypeExtensionIds)) 
{ 
    foreach (var field in wef.Fields) 
    { 
     if (field.LocalName == "Kanban Column" || field.LocalName == "Backlog items Column") 
     { 
      // Access the new column name 
      var columnName = wit.LatestData[field.Field.FieldId]; 
     } 
    } 
} 
+2

Które dll można znaleźć w tych klasach? – Greg

+0

Wygląda na to, że działa tylko po stronie serwera. Czy nie ma sposobu, aby uzyskać do niego dostęp z aplikacji klienckiej? –

+0

Ten przykładowy kod może być większy, ponieważ istnieje wiele zmiennych, które nie rozwiązują .. :-( –

0

Nie jestem zaznajomiony z szablonem Scrum 2.2, ale prace są takie same dla szablonów CMMI lub Scrum, jeśli chodzi o śledzenie pozycji pracy TFS.

spróbować czegoś takiego:

public string GetKanbanColumn(WorkItem wi) 
{ 
    if (wi != null) 
    { 
     return wi["Kanban"].ToString(); 
    } 
    return string.Empty; 
} 

zależności od rzeczywistej nazwy kolumny, określony w pliku XML Szablon Work Item. Mam nadzieję że to pomoże.

+0

TFS 2012 obsługuje wiele zespołów, a kolumna Kanban jest wyjątkowy jednej drużyny w szablonie Scrum, więc nie jest możliwe, aby uzyskać dostęp do tych kolumn przy użyciu indeks opera słup. – JoeGaggler

1

Jeśli jesteś przygotowany do dig do bazy danych można kopalnia informacji na zewnątrz. Nie w pełni zrozumieć modelowanie zespołów w TFS jeszcze, ale najpierw trzeba wypracować które pole id zespół zainteresowania zapisuje stan Kanban w sposób następujący (TFS 2012):


USE Tfs_DefaultCollection 
SELECT TOP(10) 
     MarkerField + 1 as FieldId,* 
FROM tbl_WorkItemTypeExtensions with(nolock) 
JOIN tbl_projects on tbl_WorkItemTypeExtensions.ProjectId = tbl_projects.project_id 
WHERE tbl_projects.project_name LIKE '%ProjectName% 

Następnie zastąpić XXXXXXXX poniżej z FieldId odkrytej powyżej


SELECT TOP 1000 
     wid.Id, 
     wia.State, 
     wid.StringValue as Kanban, 
     wia.[Work Item Type], 
     wia.Title, 
     tn.Name as Iteration 
FROM tbl_WorkItemData wid with(nolock) 
JOIN WorkItemsAre wia on wia.ID = wid.Id 
JOIN TreeNodes tn on wia.IterationID = tn.ID 
WHERE FieldId = XXXXXXXX and RevisedDate = '9999-01-01 00:00:00.000' 
ORDER BY Id 
Powiązane problemy