更新:2007 年 11 月
本節將說明使用 <DEFAULT>、<COPY> 和 <WHEN*> 規則時,會有什麼預期的行為與互動。下列步驟以適當的順序示範 Team Foundation Server 和工作項目表單的使用者所進行的互動,使用者所進行的互動只有步驟 1、8 和 13。
經由使用 Visual Studio 使用者介面,使用者採取行動以建立新的工作項目,或是編輯現有的工作項目。
填入欄位預設值。針對所有欄位,使用 <WHEN*> 規則外的任何 <DEFAULT> 規則。
複製欄位值。針對所有欄位,使用 <WHEN*> 子句外的任何 <COPY> 規則。
針對具有相符之 <WHEN> 規則的所有欄位,首先執行 <DEFAULT> 然後執行內部的 <COPY> 規則。
針對具有相符之 <WHENNOT> 規則的所有欄位,首先執行 <DEFAULT> 然後執行內部的 <COPY> 規則。
注意事項:Team Foundation Server 一定會先處理 <WHEN> 規則,然後才處理 <WHENNOT> 規則。
針對在步驟 1 之後變更了值以及包含 <WHENCHANGED> 規則的所有欄位,首先執行 <DEFAULT> 然後執行內部的 <COPY> 規則。
允許使用者開始進行編輯。
使用者變更某個欄位值,然後從該欄位移開焦點。
針對該欄位引發任何符合新值的 <WHEN> 規則。
針對該欄位引發任何符合新值的 <WHENNOT> 規則。
針對該欄位引發任何符合新值的 <WHENCHANGED> 規則。
讓使用者再度能夠進行編輯。
使用者採取行動要將變更儲存至資料庫。
針對所有欄位,直接或間接在 <WHEN> 或 <WHENNOT> 規則下,執行為欄位所定義的 <SERVERDEFAULT> 作業。
按鍵的處理
當使用者使用圖形化使用者介面來編輯工作項目表單時,每次針對某個欄位輸入某個按鍵時就會設定新的值。這表示只要符合了 <WHEN* 規則的必要條件,就可能不預期的發生此規則。
在下面的 XML 範例中,當您在 Status 欄位中輸入「Approved Again」時,就會清空 SubStatus,因為雖然使用者最終並不是要輸入「Approve」,但只要使用者一輸入「Approved」中的「e」這個字母時,就會發生 <WHEN*> 規則。因此,使用條件規則時必須特別注意。
<FIELD refname="MyCorp.SubStatus" />
<WHEN field="MyCorp.Status" value="Approve" >
<EMPTY />
</WHEN>
</FIELD>