範例自定義規則案例
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
本文提供自定義規則定義的範例。 所有自訂規則都會針對工作項目類型定義。 針對繼承和內部部署 XML 流程模型提供範例。
新增自訂規則之前,請先閱讀規則和規則評估,並將規則新增至工作專案類型(繼承程式)。
定義相依的必要欄位
只有當另一個字段包含特定值時,您才能指定欄位是必要的。 在下列範例中,當客戶回報問題時,自定義 [客戶報告 ] 欄位會設定為 True,而 [嚴重性 ] 字段會變成必要字段。 如果客戶未回報問題,則不需要 [ 嚴重性 ] 欄位的值。
WHEN
您可以在工作項目類型定義區段內FIELDS
指定欄位定義的規則語句。
<FIELDS>
...
<FIELD refname="MyCorp.Severity" name="Customer Severity" type="String">
<ALLOWEDVALUES>
<LISTITEM value="Blocking" />
<LISTITEM value="Major" />
<LISTITEM value="Minor" />
</ALLOWEDVALUES>
<WHEN field="MyCorp.CustomerReported" value="true">
<REQUIRED />
</WHEN>
</FIELD>
...
</FIELDS>
清除相依欄位的值
下列範例說明定義自定義規則,以在對開始日期進行變更時清除 Story Points 的值。
WHENCHANGED
您可以在工作項目類型定義區段內FIELDS
指定欄位定義的規則語句。
<FIELDS>
...
<FIELD name="Story Points" refname="Microsoft.VSTS.Scheduling.StoryPoints" type="Double" reportable="measure" formula="sum">
<HELPTEXT>The size of work estimated for implementing this user story</HELPTEXT>
<WHENCHANGED field="Microsoft.VSTS.Scheduling.StartDate">
<EMPTY />
</WHENCHANGED>
</FIELD>
...
</FIELDS>
設定相依域值
下列範例說明如何根據針對自定義欄位[Tee-Shirt Size] 欄位選取的值來對應 Size 字段的值。
[Tee-Shirt 大小] 選擇清單包含四個值[小型]、[中]、[大] 和 [X-Large]。 當 [Tee-Shirt Size] 欄位變更為特定值時,會定義四個自定義規則來指派 [大小] 字段。 為了簡化使用方式,Tee-Shirt 大小的預設值為 Small。
[Tee-Shirt 大小] 字段的 [編輯字段] 對話框
自訂規則
四個自定義規則
您可以在工作項目類型定義的 區段中指定 Size 欄位FIELDS
的值。 您可以使用一系列的WHEN
規則語句來進行對應,並使用COPY value="value"
規則設定 Size 字段的值。
<FIELDS>
...
<FIELD name="Tee-Shirt Size" refname="Fabrikam.TShirt.Size" type="String">
<HELPTEXT>Estimate of overall size for work to be done; Small (2), Medium (6), Large (18), X-Large (30).</HELPTEXT>
<ALLOWEDVALUES expanditems="true">
<LISTITEM value="Large" />
<LISTITEM value="Medium" />
<LISTITEM value="Small" />
<LISTITEM value="X-Large" />
</ALLOWEDVALUES>
</FIELD>
<FIELD name="Size" refname="Fabrikam.Size" type="Integer">
<HELPTEXT>Integer estimate of overall size for work to be done; Automatically fill in based on Tee-Shirt Size. Allow any value.</HELPTEXT>
<WHEN field="Fabrikam.TShirt.Size" value="Small">
<COPY value="2" />
</WHEN>
<WHEN field="Fabrikam.TShirt.Size" value="Medium">
<COPY value="6" />
</WHEN>
<WHEN field="Fabrikam.TShirt.Size" value="Large">
<COPY value="18" />
</WHEN>
<WHEN field="Fabrikam.TShirt.Size" value="X-Large">
<COPY value="30" />
</WHEN>
</FIELD>
...
</FIELDS>
狀態變更時需要域值
下列範例顯示當工作工作流程狀態變更為作用中時,如何要求 [剩餘工時] 欄位的規格。
當工作專案的 [狀態] 字段值設定為 [作用中] 且工作專案儲存時,[啟用者] 和 [指派給] 字段的值會自動設定為目前使用者的名稱。 該用戶必須是Team Foundation Server Valid Users 群組的成員。 [啟用日期] 欄位的值也會自動設定。 下列範例顯示強制執行此規則的專案:
<WORKFLOW>
. . .
<STATE value="Active">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Scheduling.RemainingWork">
<REQUIRED />
</FIELD>
</FIELDS>
</STATE>
. . .
</WORKFLOW>
在關閉狀態時清除欄位的值
若要在關閉工作時自動清除 [剩餘工 時] 字段,請依照指示定義自定義規則。
<WORKFLOW>
. . .
<STATE value="Closed">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Scheduling.RemainingWork">
<EMPTY />
</FIELD>
</FIELDS>
</STATE>
. . .
</WORKFLOW>
依群組限制工作項目的建立
自定義規則,可限制轉換至 工作項目類型的 [建議 ] 狀態類別,實際上不允許建立該類型的工作專案。 藉由將規則套用至特定群組,您實際上不允許該群組建立該類型的工作專案。
下列自定義規則會限制專案小組建立工作專案,因為 建議 的狀態類別目錄會對應至 新的 工作流程狀態。
下列自定義規則會藉由不允許轉換至新的工作流程狀態,限制 Fabrikam Review Team (for attribute) 無法建立工作專案。
<WORKFLOW>
...
<TRANSITION from=" " to="New"
for="[Project]\Developers"
not="[Project]\Fabrikam Review Team"
. . .
</TRANSITION>
...
</WORKFLOW>
依群組限制工作項目的修改
針對繼承程式,您可以藉由在區域路徑上設定群組的拒絕許可權,防止使用者修改工作專案。 針對內部部署 XML 程式,您可以針對防止將工作專案儲存在任何狀態的群組的每個工作流程狀態設定限制。
無法定義限制特定類型工作專案修改的自定義規則。 您只能依狀態指定限制。 如果使用者未變更狀態,則他們可以修改其他欄位,除非群組的所有欄位都是唯讀的。
相反地,如果您想要限制一組使用者修改任何類型的選取工作專案,您可以將這些工作專案指派給區域路徑。 定義安全組,然後針對該群組的 [區域路徑] 設定編輯工作專案的限制,如下圖所示。 如需詳細資訊,請參閱 設定工作追蹤的許可權和存取權、建立子節點和修改區域路徑下的工作專案
下列自定義規則會禁止針對用戶劇本工作項目類型定義的所有工作流程狀態,來限制 Fabrikam Review Team (for attribute) 修改用戶劇本。 因為沒有任何工作流程狀態對特定小組有效,因此該小組的成員無法儲存任何變更的工作專案。
<WORKFLOW>
...
<STATE value="New">
not="[Project]\Fabrikam Review Team"
</STATE>
<STATE value="Active">
not="[Project]\Fabrikam Review Team"
</STATE>
<STATE value="Resolved">
not="[Project]\Fabrikam Review Team"
</STATE>
<STATE value="Closed">
not="[Project]\Fabrikam Review Team"
</STATE>
...
</WORKFLOW>
限制狀態轉換
對於繼承的進程,系統會自動定義任何狀態轉換。 這可讓使用者將工作流程狀態從新的進階到完成,但也可在需要的情況下向後移動。 定義自定義規則以限制轉換時,請記住,如果使用者在更新工作流程時發生錯誤,他們可能無法更正它。 例如,他們可以藉由將工作專案卡片移至面板上的稍後階段來更新狀態,但無法將其移回。
提示
請考慮限制部分使用者而非所有使用者的狀態轉換。 如此一來,如果使用者犯了錯誤,他們可以要求另一個小組成員重設 State 值以略過限制。
定義狀態轉換規則之前,請先檢閱 規則和規則評估、自動產生的規則 ,以及 工作流程狀態和狀態類別在待處理專案和面板中的使用方式。
限制關閉工作專案的修改
視您的商務程式而定,您可能想要防止用戶繼續修改或更新已關閉或完成的工作專案。 您可以將規則新增至工作項目類型,以防止使用者重新開啟關閉的工作專案。
針對繼承的進程,您可以新增限制狀態轉換的規則。 例如,下列規則會限制從關閉到其他兩個狀態 New 和 Active 的轉換。
注意
條件 A work item state moved from ...
適用於 Azure DevOps Server 2020 和更新版本。
注意
視您指定的規則動作而定, 工作項目表單上的 [儲存 ] 按鈕可能會停用,或者當受限制的用戶嘗試修改工作專案時,會顯示錯誤訊息。
針對內部部署,您可以將規則新增至工作項目類型,以避免在關閉工作項目之後重新開啟。 例如,下列工作流程轉換規則可讓 Testers 重新開啟工作專案,但不允許開發人員群組的成員。
<WORKFLOW>
. . .
<TRANSITION from="Closed" to="New"
for="[Project]\Testers"
not="[Project]\Developers"
. . .
</TRANSITION
<TRANSITION from="Closed" to="Active"
for="[Project]\Testers"
not="[Project]\Developers"
. . .
</TRANSITION
. . .
</WORKFLOW>
根據使用者或群組隱藏或限制欄位的修改
當您選取 Current user is a member of group...
或 Current user is not a member of group...
時,可以隱藏欄位、將欄位設為唯讀,或讓欄位成為必要欄位。
例如,下列條件表示為不屬於 Fabrikam Fiber\Voice 群組的成員隱藏 [理由] 字段。
注意
工作專案受限於套用的規則。 系統會針對網頁瀏覽器快取以使用者或群組成員資格為基礎的條件式規則。 如果您發現自己受限於更新工作專案,您可能遇到其中一個規則。 如果您認為您遇到不適用於您的問題,請參閱 工作專案窗體 IndexDB 快取問題。
根據使用者或群組限制選取欄位的修改
您可以自定義工作項目類型,以限制誰可以修改工作項目類型的特定欄位。
注意
針對 Azure DevOps Server 2019 和舊版,您只能使用內部部署 XML 進程模型,根據使用者或群組限制修改工作專案。
使用下列兩個條件之一,您可以為安全組的使用者或不是安全組成員的使用者建立選取字段。
current user is a member of a group...
current user is not a member of a group...
提示
若要避免可能發生的規則評估問題,請指定 Azure DevOps 安全組,而不是Microsoft Entra ID 或 Active Directory 安全組。 如需詳細資訊,請參閱 默認規則和規則引擎。
例如,您可以針對選取的使用者或群組,將 [標題] 或 [狀態] 字段設為唯讀。
例如, [使用者故事] 工作項目類型的 [優先順序 ] 欄位會變成 Fabrikam Fiber\Voice 群組成員的唯讀字段。 當此群組的用戶開啟 [用戶劇本] 時,他們無法變更 [優先順序] 字段的值。
針對內部部署 XML 進程模型,您可以自訂工作項目類型以支援這些限制要求:
- 限制誰可以建立或修改工作專案
- 限制誰可以建立特定的工作項目類型,例如 Epic 或功能
例如,您可以將規則新增至工作項目類型,通常是在 WORKFLOW 區段中限制修改工作專案。
您可以透過下列兩種方式之一限制工作追蹤物件的存取:
- 設定條件字段規則、以條件為基礎的欄位規則,或套用至群組之兩者的組合。 您可以藉由指定限定規則並將其套用至特定群組,來限制對字段所做的變更。 條件式規則可以包含 CANNOTLOSEVALUE、 EMPTY、 FROZEN、 NOTSAMEAS、 READONLY 和 REQUIRED 元素。
- 藉由 將 WIT 新增至隱藏類別群組,您可以防止大部分的項目參與者建立它們。 您可以 建立範本 的超連結,以開啟工作項目表單,並與想要建立工作專案表單的小組成員共用該連結。
相關文章