Access the Kanban Column (a Team-Specific Field) for a Work Item

后端 未结 3 1545
無奈伤痛
無奈伤痛 2021-01-04 21:01

Is there a way to programmatically access the \"Kanban Column\" for a WorkItem using the TFS 2012 API?

Using the Scrum 2.2 template, the history of a Bug or Product

相关标签:
3条回答
  • 2021-01-04 21:20

    I've found a way to read the value using the TFS 2013 API, inside the ISubscriber.ProcessEvent method:

    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];
            }
        }
    }
    
    0 讨论(0)
  • 2021-01-04 21:20

    If you are prepared to dig into the database you can mine this information out. I don't fully understand the modelling of the teams in TFS yet but first you need to work out which field id the team of interest is storing the Kanban state in as follows (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%
    

    Then replace XXXXXXXX below with the FieldId discovered above


     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
    
    0 讨论(0)
  • 2021-01-04 21:34

    I am not familiar with the Scrum 2.2 template, but the works are the same for CMMI or Scrum templates when it comes to TFS Work Item tracking.

    Try something like this:

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

    Depending on the actual name of the column, specified in the Work Item Template XML file. Hope this helps.

    0 讨论(0)
提交回复
热议问题