2013-08-12 19 views
9

TFS 2012 APIを使用してWorkItemの "Kanban列"にプログラムでアクセスする方法はありますか?作業項目のKanban列(チーム固有のフィールド)にアクセス

Scrum 2.2テンプレートを使用すると、バグまたは製品のバックログ項目の履歴は、作業項目がボード上のかんばん列間でドラッグされたときに常に[[MyProject \ MyTeam] Kanban Column]特にTFS APIを使用してワークアイテムを取得する場合はアクセスできません。

Microsoft.TeamFoundation.Framework.Server.ISubscriberインターフェイスでProcessEventメソッドを実装すると、WorkItemChangedEventオブジェクトの変更フィールドとしても表示されます。

回避策: 同僚は、最新の値をキャプチャするためにWorkItemChangedEventを利用して、かんばん列の値を永続化するために、読み取り専用のカスタムフィールドの作成についてblogpostを見つけました。この列を照会することは可能です。このアプローチの1つの問題は、単一のチームのかんばん列しか追跡できないことです。

更新: このblogpostによると、かんばん列は「WIT拡張」むしろ、フィールドではありません。これは答えにつながるかもしれません。

答えて

6

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

これらのクラスはどのDLLにありますか? – Greg

+0

これはサーバー側でのみ動作するように見えます。クライアントアプリケーションからアクセスする方法はありますか? –

+0

このコードサンプルでは、​​解決されない変数がたくさんあるため、大きくなる可能性があります。:-( –

0

私はScrum 2.2テンプレートに慣れていませんが、TFSワークアイテムトラッキングに関しては、CMMIまたはScrumテンプレートでは同じです。

はこのような何かを試してみてください:

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

作業項目のテンプレートXMLファイルで指定した列の実際の名前に応じて。お役に立てれば。

私は への道がISubscriber.ProcessEventメソッド内、TFS 2013 APIを使用して値を読み取ることがわかりました
+0

TFS上で発見されたフィールド識別子を下回るXXXXXXXXを交換し、かんばん列は、添字を使用してこれらの列にアクセスすることはできませんので、スクラムテンプレートでチームごとに一意ですオペラトルーマン – JoeGaggler

1

あなたがデータベースに掘るために準備されている場合は、この情報を採掘することができますでる。私はまだ完全にはTFSのチームのモデリングを理解していないが、最初のあなたが出て作業する必要があるフィールドID興味のあるチームは、以下のように(2012 TFS)をかんばん状態を記憶している。


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% 

はその後、2012年には複数のチームをサポートしています


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