作業項目のクエリ

クエリは、確認、優先順位付け、更新する作業項目を見つけたり、レポートを生成したりするのに役立ちます。

検索ボックスを使用して作業項目を検索します。 ID を入力するか、フィルターを使用します。 作業項目の単純なリスト、ツリー クエリによる階層リスト、またはダイレクト リンク クエリによる依存関係の一覧を使用する場合には、クエリ エディターを使用してクエリの種類を選択します。

クエリの作成は、Visual Studio Online、Team Web Access (TWA)、チーム エクスプローラーで行えます。 また、ExcelProject でクエリを開いて、一括変更を実行することもできます。

検索ボックスを使用して ID で作業項目を検索する

[作業項目の検索] ボックスに ID を入力し、検索アイコンをクリックします。

[作業項目の検索] ボックス

[コンテキスト メニュー] アイコン コンテキスト メニューを使用すると、割り当て、状態、キーワード、または作業項目の種類に基づいて項目を一覧表示するフィルターを追加できます。

たとえば、自分に割り当てられているタスクをすべて一覧表示するには、「A=@Me T=Task」と入力します。

単純なリストのクエリを開いて編集する

クエリを定義する最も簡単な方法は、既存の共有クエリから開始することです。 次の例では、アジャイル プロセス テンプレートに用意されている "アクティブなバグ" 共有クエリを変更して、すべての終了したバグを検索する方法を示します。 これらの例は、Web ブラウザーで提供されるユーザー インターフェイスに基づいています。

  1. 共有クエリを開きます。 たとえば、"アクティブなバグ" か、同様の単純なリストのクエリを開きます。

    共有クエリ (アクティブなバグなど) を開く

       

  2. 終了したバグを検索するようにクエリを編集してから、そのクエリを実行します。 現在の句の前に句を挿入するには、添付ファイルの追加 (新しいフィルター行を挿入) を使用します。 句を削除するには、句の削除 (フィルター行を削除) を使用します。

    単純なリストのクエリに対応する [エディター] ビュー

       

  3. マイ クエリ フォルダーにクエリを保存します。

    [クエリに名前を付けて保存]、フォルダー = マイ クエリ

       

    共有クエリ フォルダーにクエリを保存するには、チーム管理者またはプロジェクト管理者グループのメンバーであるか、フォルダーの [投稿] アクセス許可が [許可] に設定されている必要があります。

クエリの作成

TWA のクエリ ページまたはチーム エクスプローラーの作業項目ページにある [新規作成] メニューから開始します。

新しいクエリを開く

句をグループ化して一覧を絞り込む

グループ化された句は、残りのクエリから分離した 1 つの単位として動作します。これは、数学の方程式や論理式の一部をかっこで囲むのと似ています。 グループ内の最初の句に対する AND または OR が、グループ全体に適用されます。

次の例では、最初の式によって、優先度 1 の作業項目と任意の優先度のアクティブなすべてのバグが返されます。 2 番目の式は、優先度 1 のアクティブなすべての作業項目と優先度 1 のすべてのバグ (アクティブであるかないかに関係なく) を返します。

グループ化された句

論理式

OR/AND 論理式を使用してフィルター処理

Priority=1 OR (Work Item Type=Bug AND State=Active)

AND/OR 論理式を使用してフィルター処理

Priority=1 AND (Work Item Type=Bug OR State=Active)

1 つ以上の句をグループ化するには、それらを選択し、クエリ句のグループ化 (句のグループ化) アイコンをクリックします。

選択されたクエリ句をグループ化する

クエリ結果が、予期していた作業項目セットを返さなかった場合は、次の手順を実行します。

  • それぞれの句が意図したとおりに定義されていることを確認します。

  • 各句の AND/OR の割り当てを確認します。 予期していた数よりも多くの作業項目が結果に含まれる場合は、AND 句ではなく OR 句が使用されています。

  • クエリ句をグループ化するかどうか、またはクエリ句のグループとグループ化されたそれぞれの句の AND/OR の割り当てを変更する必要があるかどうかを判断します。

  • クエリ句をさらに追加し、クエリのフィルター条件を絞り込みます。

  • フィールド、演算子、および値を指定するためのオプションを確認します。

ツリー クエリを使用して階層リストを表示する

ツリー クエリ (ツリー クエリ) を使用して、作業項目のリストを入れ子になった多層のリストとして表示できます。 たとえば、すべてのバックログ項目と、それらにリンクされたタスクを表示できます。

ツリーのクエリを示す結果リスト

葉ノードを展開 (ノードの展開 (Team System Web Access)) するか、折りたたんで (ノードの折りたたみ (Team System Web Access))、ツリーのさまざまな部分に注目します。

親と子の両方の作業項目に対してフィルター条件を定義します。

ツリー クエリのフィルター

リンクされた子を検索するには、[最上位の作業項目を最初に照合する] を選択します。 リンクされた親を検索するには、[リンクされた作業項目を最初に照合する] を選択します。

ダイレクト リンク クエリを使用して依存関係を表示する

ダイレクト リンク クエリ (ダイレクト リンク クエリ) を使用して、タスク、バグ、懸案事項、機能など、追跡対象となっている他の作業に依存する作業項目を追跡します。 たとえば、実装中の他の項目や修正中のバグに依存するバックログ項目を表示できます。

ダイレクト リンク クエリの結果

ダイレクト リンク クエリは、自分のチームが依存している他のチームの作業を追跡したり、自分のチームから他のチームに対して行ったコミットメントを管理したりする場合に使用します。 最上位の作業項目およびリンクされた作業項目の両方にフィルター条件を指定し、依存関係をフィルター処理するときに使用するリンクの種類を選択します。

ダイレクト リンク クエリ エディター

次のオプションのいずれかを選択して、作業項目の第 1 層リストをフィルター処理します。

  • [指定されたリンクが定義されている項目だけを戻す]: 第 1 層の作業項目のうち、リンクされた作業項目のフィルター条件で指定された作業項目へのリンクが定義されているものだけを返します。

  • [最上位の作業項目すべてを戻す]: リンクされた作業項目のフィルター条件に関係なく、第 1 層のすべての作業項目を返します。 第 1 層にリンクされた第 2 層の作業項目は、作業項目のフィルター条件に一致する場合に返されます。

  • [指定されたリンクが定義されていない項目だけを戻す]: 第 1 層の作業項目のうち、リンクされた作業項目のフィルター条件で指定された作業項目へのリンクが定義されていないものだけを返します。

Q & A

Q: 使用できるクエリ演算子と変数にはどのようなものがありますか。

A: 使用できる演算子と変数は、選択したフィールドによって異なります。 4 つの変数は、プロジェクト名フィールドで使用できる @Project、人名フィールドで使用できる @Me、日時フィールドで使用できる @Today、および [Any] です。 「クエリ フィールド、演算子、値、および変数」を参照してください。

Q: 他にどのようなクエリの例がありますか。

A:作業項目クエリの例」および「検索ボックス クエリの例」を参照してください。

Q: クエリの結果をグラフ化するにはどうすればよいですか。

A: Visual Studio Online および TWA から、フラット リスト クエリの結果をすべてグラフ化できます。 TWA の上級アクセス グループのメンバーである必要があります。

または、Excel でクエリを開き、Excel の関数を使用してグラフを作成できます。

Q: 現在のスプリントまたはイテレーションに基づいてどのようにしてクエリを自動的に更新しますか。

A: このための自動的な方法はありません。現在のスプリントを参照するように手動でクエリを更新する必要があります。 チーム プロジェクトがスクラムまたはアジャイルに基づく場合、[現在のスプリント] フォルダーまたは [現在のイテレーション] フォルダーのクエリ セットを利用できます。 現在のスプリントに定義された項目を返す各クエリについて、日付に従って最新のイテレーションにイテレーション パスを更新する必要があります。

.wiq ファイルとして保存することにより、多数のクエリを変更できます。 チーム エクスプローラーでクエリを開き、[クエリの編集] を選択した後、[ファイル]、[名前を付けて保存] の順に選択して、各クエリを .wiq ファイルとして保存します。 ここでは、Release 2\Sprint 59 に対応するために更新された "進行中の作業" クエリの例を示します。

<?xml version="1.0" encoding="utf-8"?>
<WorkItemQuery Version="1">
  <Wiql>
    SELECT [System.Id],
           [System.WorkItemType],
           [System.Title],
           [System.AssignedTo],
           [System.State],
           [Microsoft.VSTS.Scheduling.RemainingWork],
    FROM WorkItems 
      WHERE [System.TeamProject] = @project and 
            [System.IterationPath] under 'FabrikamPrime\Release 2\Sprint 59' and 
            [System.WorkItemType] in group 'Microsoft.TaskCategory' and 
            [System.State] = 'In Progress' 
      ORDER BY [System.AssignedTo],
               [Microsoft.VSTS.Common.BacklogPriority],
               [System.Id] 
   </Wiql>
</WorkItemQuery>

Q: 結果リストの列を追加または変更する方法を教えてください。

A: 列の追加または削除、列の順序の変更、および列の並べ替え順序の変更を行うには、[列のオプション] を開きます。

[列のオプション] ダイアログ ボックス内の [列の表示] タブ

また、結果リストから、列を新しい位置にドラッグしたり、列のタイトルを選択して列による並べ替え順序を変更したりできます。

Q: タグを使用してクエリをフィルター処理することはできますか。

A: Visual Studio Online を使用している場合、または TFS 2013 更新プログラム 2 で追加された更新が含まれるオンプレミスの TFS を使用している場合にはできます。その他のオンプレミスの配置に関してはできません。

Visual Studio Online の場合、および Visual Studio 2013 更新プログラム 2 が適用されている場合、フィルター対象フィールドとして [タグ] を選択できます。 また、Excel からクエリを開き、作業項目に割り当てられたタグを一括変更できます。 Visual Studio を使用する作業項目へタグを追加することもできます。

Eclipse 用のチーム エクスプローラー プラグインからは、タグによってクエリをフィルター処理できます。ただし、ユーザー インターフェースからはタグの追加も変更も行えません。 タグの追加と変更を行うには、Web ポータルを使用する必要があります。

TFS 2013 更新プログラム 2 が適用されていないオンプレミスの TSF の場合、クエリ結果内の列としてタグを表示し、タグに基づいてリストをフィルター処理できますが、フィルター基準に対する句としてタグを追加することはできません。

Q: クエリ結果を使用して、リンクの関係をすばやく変更することはできますか。

A: Visual Studio 用チーム エクスプローラー プラグインから、作業項目のインデント (Indent)、インデント解除 (Outdent)、ドラッグの操作を実行し、階層を変更できます。

また、Excel or Project でクエリを開いて、親子のリンク関係や先行処理と後続処理のリンク関係を一括で変更することもできます。

Q: チームに共有したクエリを他の人が変更できないようにする方法を教えてください。

A: クエリのアクセス許可を設定して読み取り専用にします。

Q: クエリを共有クエリまたはチームのお気に入りに追加する方法を教えてください。

A: クエリを共有クエリ フォルダーに保存するには、プロジェクト管理者グループのメンバーになるか、または自身のアクセス許可を、共有クエリの下位にあるフォルダーに設定する必要があります。

クエリをチームのお気に入りに追加するには、クエリの [コンテキスト メニュー] アイコン コンテキスト メニューを開き、チームのお気に入りとして追加します。 クエリをチームのお気に入りに追加するには、チーム管理者であることが必要です。

チームのお気に入りへの共有クエリの追加のみが可能で、その場合にはチーム管理者アクセス許可が必要です。

Q: チームのお気に入りフォルダーを追加できますか。

A: いいえ。 [マイ クエリ][共有クエリ] にのみフォルダーを追加できます。

Q: クエリを電子メールで送信することはできますか。

A: できます。 「TFS の作業項目およびクエリに対する URL リンクを電子メールで送信する」を参照してください。

Q: クエリを開くハイパーリンクを定義することはできますか。

A: できます。 ハイパーリンクを定義する最も簡単な方法は、目的の結果を返すクエリを作成し、そのクエリの URL をコピーすることです。 ハイパーリンクでは作業項目クエリ言語 (WIQL: Work Item Query Language) が使用されます。これは Transact-SQL に似ており、次のような構文になります。

**http://ServerName:**Port/ /tfs/CollectionName/TeamProjectName/**q.aspx?pname=Project&wiql=**WorkItemQueryLanguage

たとえば、次のハイパーリンクは、AdventureWorksProject プロジェクトについて、ビルド番号が 9.0.30304 と定義されているすべてのバグの ID、タイトル、および状態を一覧表示します。

http://AdventureWorks:8080/tfs/ /q.aspx?pname=AdventureWorksProject&wiql==SELECT [System.ID], [System.Title], [System.State] FROM WorkItems WHERE [System.TeamProject]='AdventureWorksProject' AND [System.WorkItemType]='Bug' AND [System.FoundIn]='9.0.30304' http://Server1:8091/tfs/web/wi.aspx?id=9035

Q: クエリをエクスポートすることはできますか。

A: できます。 チーム エクスプローラーのクエリ エディターから [ファイル] メニューを使用して、クエリを .wiq ファイルとして保存します。 チーム プロジェクトを作成すると、プロセス テンプレートで定義されている .wiq ファイルに基づいて共有クエリが作成されます。

Q: タスク ボードのコンテンツは、作成したクエリでリストされたコンテンツと異なりますか。

A: タスクをイテレーションに割り当てることはできますが、親バックログ項目にリンクすることはできません。 これらの項目は作成されたクエリに表示されますが、タスク ボードそのものには表示されません。 TFS はクエリを実行していくつかのバックグラウンド プロセスを適用してから、タスク ボード項目を表示します。

次の 3 つの原因により、タスク カテゴリに属している作業項目がスプリント バックログまたはタスク ボードに表示されないことがあります。

  • 親バックログ項目にタスクがリンクされていない。 イテレーション パスがスプリントに設定されている親プロダクト バックログ項目 (スクラム)、ユーザー ストーリー (アジャイル)、または要件 (CMMI) にリンクしたバグおよびタスクのみが、スプリント バックログ ページに表示されます。

  • タスクが、別のタスクの親である。 タスクの階層を作成したときに、階層の下位に子レベルのタスクのみが表示されます。

  • タスクのリンクされている親が、他のチームに定義されているバックログ項目に対応している。 または、タスクの親バックログ項目の区分パスが、タスクの区分パスと異なっている。

Q: 作業項目に対するクエリをプログラムによって実行することはできますか。動的クエリを作成することはできますか。

A: できます。 「バグ、タスク、およびその他の作業項目の照会」を参照してください。

参照

概念

タスクをサポートするための Team Foundation クライアントの選択