作業項目の種類のワークフローの変更

XML ファイルをエクスポートし、その内容を変更することで、作業項目の種類のワークフローを変更できます。 ワークフローを変更したら、その XML ファイルをインポートして、更新された作業項目の種類を使い始めることができます。

必要なアクセス許可

この手順を実行するには、Team Foundation 管理者グループのメンバーであるか、またはプロジェクトのプロジェクト管理者グループのメンバーである必要があります。 詳細については、「Team Foundation Server のアクセス許可」を参照してください。

ワークフローを変更するには

  1. 単一のプロジェクトで作業項目の種類を変更する場合は、witadmin exportwitd を実行して、変更する作業項目の種類の XML ファイルをエクスポートします。 詳細については、「作業項目の種類のカスタマイズと管理 [witadmin]」を参照してください。

  2. Visual Studio の [ファイル] をクリックし、[開く] をクリックして、[ファイル] をクリックします。

    [ファイルを開く] ダイアログ ボックスが表示されます。

  3. [探す場所] で、ファイルをエクスポートした場所に移動します。

    プロセス テンプレートをカスタマイズするために作業項目の種類を変更する場合は、プロセス テンプレートをダウンロードした場所に移動します。

    注意

    Windows Vista を実行している場合、アクセス権を持たないフォルダーが存在する可能性があります。 アクセス権のない場所に作業項目の種類をエクスポートしようとすると、レジストリ仮想化テクノロジが、自動的にエクスポートされたファイルをリダイレクトし、仮想ストアに保存します。 このリダイレクトが行われないようにするには、アクセス権のある場所にファイルをエクスポートします。 レジストリの仮想化の詳細については、Microsoft Web サイトの「Registry Virtualization (レジストリの仮想化)」および「Windows Vista のファイルおよびレジストリの仮想化に関する一般的な問題」を参照してください。

  4. 更新する作業項目の種類の XML ファイルを選択し、[開く] をクリックします。 改行コードに関する質問が表示されたら、[いいえ] をクリックします。

  5. 次の XML に示すように、XML ファイルの <WORKFLOW> セクションで作業項目の種類のワークフローの定義を探します。

    <WORKFLOW>
      <STATES>
        <STATE value="Active">
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
    ...
    
  6. Unapproved 状態を種類の定義に追加するため、もう 1 つの <STATE> 要素を挿入します。 新しい状態は、次の例で示すように太字で表示されます。

    <WORKFLOW>
      <STATES>
        <STATE value="Unapproved">
        </STATE>
        <STATE value="Active">
          <FIELDS>
            <FIELD refname="Microsoft.VSTS.Common.ClosedDate">
              <EMPTY />
            </FIELD>
            <FIELD refname="Microsoft.VSTS.Common.ClosedBy">
    ...
    
  7. null 状態と Unapproved 状態の間の遷移を作成します。 これを行うには、まず遷移用のワークフロー定義のセクションを探します。 次の例で太字で示されている XML を挿入します。

    注意

    この変更によって、この種類のすべての新しい作業項目は、既定の理由 New を持つ Unapproved 状態で開始されます。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
        </REASONS>
      </TRANSITION>
      <TRANSITION from="" to="Active">
        <REASONS>
          <DEFAULTREASON value="New" />
        </REASONS>
        <FIELDS>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
            <COPY from="currentuser" />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
            <COPY from="clock" />
          </FIELD>
          <FIELD refname="System.AssignedTo">
            <COPY from="currentuser" />
          </FIELD>
        </FIELDS>
      </TRANSITION>
    
  8. 次の XML で太字で強調されている、Active への遷移の部分を削除します。

    これは、開始時の遷移は 1 つしか存在できないためです。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
        </REASONS>
      </TRANSITION>
      <TRANSITION from="" to="Active">
        <REASONS>
          <DEFAULTREASON value="New" />
        </REASONS>
        <FIELDS>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
            <COPY from="currentuser" />
          </FIELD>
          <FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
            <COPY from="clock" />
          </FIELD>
          <FIELD refname="System.AssignedTo">
            <COPY from="currentuser" />
          </FIELD>
        </FIELDS>
      </TRANSITION>
    
  9. 開始時の遷移に対して "Ported" という理由を追加するために、次の例で太字で示されている XML を挿入します。 これにより、ユーザーは、作業項目が新規であるか、または別のトラッキング システムから移植されたものであるかを判別できるようになります。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
         <REASON value="Ported" />
        </REASONS>
      </TRANSITION>
    ...
    
  10. 次の例で太字で示されている COPY 規則を挿入します。 この規則によって、作業項目を作成したユーザーが Assigned To フィールドに既定で表示されます。この規則は、開始時の遷移中にのみ評価されます。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
         <REASON value="Ported" />
        </REASONS>
        <FIELDS>
           <FIELD refname="System.AssignedTo">
             <COPY from="currentuser" />
           </FIELD>
        </FIELDS>
      </TRANSITION>
    ...
    

    注意

    他の <TRANSITION> 要素または <STATE> 要素の下にこの規則を挿入すると、他の遷移または状態に対して規則が適用されます。 詳細については、「規則の評価方法」を参照してください。

  11. Unapproved 状態から Active 状態への遷移を作成するには、次の例で太字で強調されている XML を挿入します。 この変更によって、作業項目が承認されると、この遷移に入ることができます。

    <TRANSITIONS>
      <TRANSITION from="" to="Unapproved">
        <REASONS>
          <DEFAULTREASON value="New" />
         <REASON value="Ported" />
        </REASONS>
        <FIELDS>
           <FIELD refname="System.AssignedTo">
             <COPY from="currentuser" />
           </FIELD>
        </FIELDS>
      </TRANSITION>
      <TRANSITION from="Unapproved" to="Active">
        <REASONS>
          <DEFAULTREASON value="Approved" />
        </REASONS>
      </TRANSITION>
      <TRANSITION from="Active" to="Closed">
        <REASONS>
          <DEFAULTREASON value="Completed" />
          <REASON value="Deferred" />
          <REASON value="Obsolete" />
          <REASON value="Cut" />
        </REASONS>
    ...
    
  12. ツール バーの [上書き保存] をクリックして、XML ファイルへの変更を保存します。

  13. 新しい作業項目の種類を単一のプロジェクトにインポートする方法については、「作業項目の種類のカスタマイズと管理 [witadmin]」を参照してください。 作業項目の種類をプロセス テンプレートに追加するには、「プロセス テンプレートへの作業項目の種類定義の追加」を参照してください。

1 つのプロジェクトにインポートされた変更を検証するには

  1. チーム エクスプローラーで、[最新の情報に更新] をクリックして、サーバーから最新の更新をダウンロードします。

    これらの更新には、インポートした変更内容が含まれています。 [作業項目] ノードが読み込まれるまで数秒待ちます。 読み込み中のノードには、"処理中" と表示されます。

  2. 変更した作業項目の種類を使用して、新しい作業項目を作成します。 これを行うには、[作業項目] ノードを右クリックし、[作業項目の追加] をポイントして、作業項目の種類をクリックします。

    この作業項目は、変更してインポートした作業項目の種類から作成されます。

  3. 今度は最初の [状態][Unapproved] になり、[理由][新規作成] になることに注意してください。 さらに、[担当者] の値がユーザーのアカウント名になります。 [理由] フィールドをクリックして、リストに [新規作成][Ported] という理由が表示されることを確認します。

  4. [タイトル] フィールドにタイトルを入力し、[保存] をクリックして作業項目を保存します。 保存操作が完了して、ステータス バーに [アイテムが保存されました] と示されるまで待ちます。

  5. [状態] フィールドで、[アクティブ] 値を選択して作業項目を承認し、再度遷移します。 [理由] フィールドは [Approved] になります。

  6. ツール バーの [保存] をクリックして、この遷移を保存します。

  7. [閉じる] をクリックして作業項目を閉じます。

参照

概念

ワークフローのデザイン

状態遷移の制限

フィールドの規則を適用するタイミングと場所

その他の技術情報

状態、遷移、または理由に基づいたフィールド割り当ての自動化