3

標準の CMMI テンプレート要件作業項目に部門承認を追加しました。すべての部門の承認が「はい」に設定されている場合にのみ、提案済みからアクティブに変更できるように System.State フィールドを制限したいと思います。
承認済みの要件作業項目

Requirement.xml に次の変更を加えてみました

<FIELD name="State" refname="System.State" type="String" reportable="dimension">
  <WHEN field="Approval.Marketing" value="No">
    <READONLY />
  </WHEN>
  <WHEN field="Approval.Quality" value="No">
    <READONLY />
  </WHEN>
  <WHEN field="Approval.RD" value="No">
    <READONLY />
   </WHEN>
   <WHEN field="Approval.System" value="No">
     <READONLY />
   </WHEN>
   <WHEN field="Approval.ProgManagement" value="No">
     <READONLY />
   </WHEN>
</FIELD>

これにより、承認フィールドのいずれかが「いいえ」に設定されている場合、State フィールドが READONLY になります。ただし、最初は承認がすべて「いいえ」であるため、新しい要件を作成するときに問題が発生し、状態の初期の「提案済み」デフォルトは READONLY 条件のために設定されません。私がやりたいのは、上記の WHEN 条件にロジックを追加して、条件 System.State="Proposed" でANDすることです。などのWHEN句を入れ子にしてみました

<FIELD name="State" refname="System.State" type="String" reportable="dimension">
  <WHEN field="System.State" value="Proposed">
    <WHEN field="Approval.Marketing" value="No">
      <READONLY />
    </WHEN>
         . . .
  </WHEN>
</FIELD>

しかし、インポート時にWHEN句に WHEN を含めることができないというエラーが発生します。承認フィールドのいずれかが「いいえ」に設定されている場合、状態の変更を提案済みからアクティブに禁止するにはどうすればよいですか?

4

1 に答える 1

0

他のフィールドと同じようにSystem.Stateのデフォルト値を設定することはできないため、機能するバリエーションを考え出すことができるかどうかを考えるのに少し時間を費やしました。うまくいくものを思いつく前に、おそらく50かそこらのバリエーションを経験しました。確かに、それは理想的ではありませんが、最初の作成後に問題を解決します。

各遷移状態の中に、when句を追加できます。私の例では、優先度フィールドを使用して、次のようなことを行っていました。

<State value="Proposed">
  <FIELDS>
    <FIELD refname="Microsoft.VSTS.Common.ResolvedDate">
      <EMPTY />
    </FIELD>
    ...
    <FIELD refname="System.State">
      <WHEN field="Microsoft.VSTS.Common.Priority" value="2">
        <READONLY />
      </WHEN>
    </FIELD>
  </FIELDS>
</State>

もちろん、他の状態(アクティブ、クローズ、解決済み)に句を追加する必要があります。

それを行ったら、新しい要件を作成します。新しい要件を作成する場合、2つのオプションがあります。

すべてのオプションをyesに設定するか、stateをproposedに設定して保存することができます。次に、戻ってそれらをnoに設定し、保存します。

または

カスタムフィールドをすべてデフォルトのyesに変更します。要件を作成して保存します。編集し、すべての値を「いいえ」に切り替えて保存します。

どちらの方法でも、この最初のハードルが要件の作成で終わったら、どちらに行くかを選択します。それはあなたがそれを望んでいたように行動します。つまり、いずれかの値がnoの場合、状態は読み取り専用になります。

System.Stateフィールドの制限を考えると、これが私が思いついた最高のものでした。

于 2011-06-30T01:49:54.510 に答える