Pravidla a vyhodnocení pravidel

Azure DevOps Services | Azure DevOps Server 2022 – Azure DevOps Server 2019

Pravidla slouží k nastavení nebo omezení přiřazení hodnot polím pracovní položky. Existují dva hlavní typy pravidel: automaticky generovaná pravidla a vlastní pravidla definovaná pro proces nebo projekt. Automaticky generovaná pravidla minimalizují potřebu přidávat vlastní pravidla pro oblasti, které by měly fungovat standardním způsobem.

Vlastní pravidla definujete pro podporu svých obchodních případů použití. V závislosti na datovém typu pole můžete nastavit různá omezení, která data se můžou do daného pole zadávat. Můžete zadat hodnoty pro výběrový seznam (rozevírací nabídka), nastavit výchozí hodnoty, vymazat položky nebo omezit změny. Pomocí podmíněných pravidel můžete pravidla pro pole použít na základě závislostí mezi hodnotami různých polí. Můžete také omezit, kdo může pole upravovat, nebo nastavit obor pravidla tak, aby se vztahoval pouze na skupinu.

Přečtěte si tento článek a seznamte se s následujícími informacemi:

  • Jak systém používá automaticky generovaná pravidla
  • Omezení definice vlastních pravidel v systémových polích
  • Různé typy vlastních pravidel, která můžete použít
  • Jak se vyhodnocují pravidla
  • Rozdíl mezi pravidly definovanými pro proces dědičnosti a místním procesem XML
  • Proč byste měli minimalizovat počet vlastních pravidel, která definujete

Před definováním vlastních pravidel si přečtěte článek Konfigurace a přizpůsobení Azure Boards , abyste získali široké znalosti o tom, jak přizpůsobit Azure Boards tak, aby vyhovovaly vašim obchodním potřebám.

Tip

Minimalizujte počet pravidel, která definujete pro definici wit. I když můžete pro typ pracovní položky vytvořit více pravidel, přidávaná pravidla můžou mít negativní vliv na výkon, když uživatel přidává a upravuje pracovní položky. Když uživatelé ukládají pracovní položky, systém ověří všechna pravidla přidružená k polím pro příslušný typ pracovní položky. Za určitých podmínek je pro SQL vyhodnocení ověřovacího výrazu pravidla příliš složité.

Automaticky generovaná pravidla

Automaticky generovaná pravidla minimalizují potřebu přidávat vlastní pravidla pro oblasti, které by měly fungovat standardním způsobem.

Pravidla přechodu stavu

Zděděné procesy generují celou sadu pravidel přechodu stavu typu any-to-any dynamicky pro každý vlastní typ pracovní položky a vlastní stav přidaný do pracovního postupu. Přechod z libovolného stavu do libovolného stavu je platný.

V případě místních procesů XML je nutné zadat platné přechody v WORKFLOW části definice typu pracovní položky.

Přechody států a pravidla polí Podle/Data

Pole Podle data odpovídají polím Created By/Date(Datum), Activated By/Date (Datum), Aktivováno podle/Date (Datum), Resolved By/Date (Datum) a Closed By/Date (Datum).

U zděděných procesů se tato pole při přechodu pracovní položky z jednoho stavu do jiného automaticky nastaví nebo vymažou. Pole Změněno podle a data nejsou zahrnuta, protože se aktualizují o každou uloženou pracovní položku a nesouvisejí s přechody stavu.

Mezi výchozí pravidla a chování, která řídí tato pole, patří:

  1. Uzavřený stav je vždy obsažen v kategorii Dokončeno.
  2. Kategorie Dokončený stav není konfigurovatelná a je přidružená k jednomu a pouze jednomu státu.
  3. Tento uzavřený stav je vždy uzavřen pro procesy Agilní a CMMI a vždy dokončen pro scrum a základní procesy.
  4. Automatické generování těchto pravidel je ovlivněno národním prostředím, protože podmínka pravidla obsahuje název státu, který je lokalizován. Systém generuje různá pravidla pro různá národní prostředí.
  5. Automaticky generovaná pravidla pro tato pole jsou určena pouze pro typy pracovních položek, které obsahují tato pole. Typ pracovní položky může obsahovat jedno nebo více těchto polí.
  6. Tato pravidla jsou potřeba, pokud má typ pracovní položky vlastní stavy nebo typ pracovní položky je vlastní typ pracovní položky.
  7. Tato pravidla se vztahují pouze na zděděné procesy; nikdy se negenerují pro hostované procesy XML nebo místní procesy XML.

Stavy pracovního postupu jsou přidružené k kategoriím stavů pro podporu pracovního postupu na panelech Kanbanu. Další informace najdete v tématu Jak se v backlogech a panelech používají stavy pracovních postupů a kategorie stavů.

Pravidla pole Datum změny stavu

Tato pravidla jsou technicky mnohem jednodušší než pravidla uzavřená podle/uzavření, protože nejsou závislá na žádném konkrétním stavu. U každého typu pracovní položky budou vždy fungovat stejná pravidla. Musí se automaticky generovat, protože některé typy pracovních položek OOB neobsahují pole Datum změny stavu, takže když uživatel toto pole přidá do vlastního typu pracovní položky, musí se tato pravidla automaticky vygenerovat i. Platí zde i stejné zásady pro pravidla uzavřeného a uzavřeného data.

Vlastní pravidla

Všechna vlastní pravidla jsou volitelná. Pro zděděný proces zadáte pravidlo, které se skládá z podmínky plus akce. Pro místní proces XML zadáte pravidla pro pole nebo v rámci pracovního postupu.

Mezi těmito dvěma procesy neexistuje mapování 1:1. V některých případech je pravidlo elementu XML definováno v dialogovém okně Upravit pole pro zděděný proces, nikoli jako pravidlo. Jiné elementy XML, například FROZEN, MATCHNOTSAMEASnejsou v zděděném procesu podporovány.

Je potřeba upozornit na následující:

  • Pravidla se vždy vynucují nejen v případě, že pracujete s formulářem, ale také při interakci s jinými nástroji. Nastavení pole jako jen pro čtení například platí nejen pro formulář pracovní položky, ale také prostřednictvím rozhraní API a doplňku Azure DevOps Server Pro Excel.
  • Zděděné položky procesu určují podmínky a akce pro provedení úplného pravidla. Prvky XML tyto rozdíly nerozlišují.
  • Pravidla polí nepodporují přiřazování hodnot, které jsou součtem dvou dalších polí nebo prováděním jiných matematických výpočtů. Můžete ale najít řešení, které vyhovuje vašim potřebám prostřednictvím rozšíření TFS Aggregator (Webová služba) Marketplace. Viz také souhrn práce a dalších polí.
  • Můžete najít další řešení pro použití vlastních pravidel u polí pomocí rozšíření Marketplace, jako je například rozšíření knihovny ovládacích prvků formuláře pracovní položky.

Složení pravidel

Pro zděděný proces se každé pravidlo skládá ze dvou částí: Podmínky a akce. Podmínky definují okolnosti, které musí být splněny, aby se pravidlo použilo. Akce definují operace, které se mají provést. U většiny pravidel můžete zadat maximálně dvě podmínky a 10 akcí na pravidlo. Všechna vlastní pravidla vyžadují splnění všech podmínek, aby bylo možné spustit.

Jako příklad můžete vytvořit pole povinné na základě hodnoty přiřazené státu a jiného pole. Příklad:

   (Condition) When a work item State isAktivní
   (Condition) And when the value ofValue Area = Business
   (Action) Then make requiredBody příběhu

Poznámka:

V současné době se pro pravidla přechodu stavu podporuje pouze jedna podmínka. Pokud používáte pravidla založená na stavu, přečtěte si téma Použití pravidel pro stavy pracovního postupu.

Následující tabulka shrnuje akce, které jsou k dispozici s vybranými podmínkami.

Condition (Podmínka)

Podporované akce

Nastavení hodnoty pole nebo povinného nebo jen pro čtení

Podmínky, vytvoří se pracovní položka.

Akce, vytvoří se pracovní položka.

Omezení přechodu na základě stavu

Podmínka, pracovní položka se přesune

Akce, omezit transakci na základě stavu.

Skrytí pole nebo nastavení pole jen pro čtení nebo povinné na základě členství ve státě a uživateli nebo skupině

Podmínka, členství ve skupině uživatelů

Akce, omezit transakci na základě stavu a členství.

Na základě členství uživatele nebo skupiny nastavte atribut pole nebo omezte přechod stavu.

Podmínka, členství ve skupině uživatelů

Akce, omezit transakci na základě stavu a členství.

Co se stane, když je definováno příliš mnoho pravidel

Pro každý projekt je definován jeden výraz SQL, který ověřuje pracovní položky při každém vytvoření nebo aktualizaci. Tento výraz roste s počtem pravidel zadaných pro všechny typy pracovních položek definovaných pro projekt. Každý kvalifikátor chování zadaný pro pole vede ke zvýšení počtu dílčích výrazů. Vnořená pravidla, která se vztahují pouze na přechod nebo podmínku na hodnotě některého jiného pole, způsobují přidání dalších podmínek do IF příkazu. Jakmile výraz dosáhne určité velikosti nebo složitosti, SQL ho už nemůže vyhodnotit a vygenerovat chybu. Odstranění některých pracovních položek nebo odstranění některých pravidel může chybu vyřešit.

Můžete zadat hodnoty pro výběrový seznam (rozevírací nabídka), nastavit výchozí hodnoty, vymazat položky nebo omezit změny. Pomocí podmíněných pravidel můžete pravidla pro pole použít na základě závislostí mezi hodnotami různých polí. Můžete také omezit, kdo může pole upravovat, nebo nastavit obor pravidla tak, aby se vztahoval pouze na skupinu.

Pravidla pracovních položek neexistují jako jedna kolekce. Pravidla se ve skutečnosti dynamicky generují a slučují z různých zdrojů dat. Logika sloučení je jednoduchá, konsolidovat stejná pravidla, ale neoříznout konfliktní pravidla.

Pravidla obejití

Obecně platí, že všechny pracovní položky jsou ověřeny modulem pravidel, když uživatelé upravují pracovní položku. Aby však uživatelé přiřadili pravidla obejití pracovních položek , můžou kvůli podpoře určitých scénářů ukládat pracovní položky bez vyhodnocení pravidel na úrovni projektu.

Pravidla je možné obejít jedním ze dvou způsobů. První je prostřednictvím pracovních položek – aktualizujte rozhraní REST API a nastavujte bypassRules parametr na true. Druhá je prostřednictvím klientského objektového modelu inicializací v režimu obejití (inicializace WorkItemStore pomocí WorkItemStoreFlags.BypassRules).

Systémová pole a vlastní pravidla

Systémová pole mají systém.Názvy odkazů na názvy, například System.Title a System.State.

Následující systémová pole musí mít hodnotu: ID oblasti, změněné datum, datum vytvoření, datum vytvoření, stav a důvod.

Modul pravidel omezuje nastavení podmínek nebo akcí na systémová pole s výjimkou následujících podmínek:

  • Pole Stav a Důvod můžete nastavit jen pro čtení.
  • Většinu pravidel můžete použít u polí Název, Přiřazeno, Popis a Změněno podle .

Pokud v rozevírací nabídce uživatelského rozhraní pravidla pro proces dědičnosti nevidíte pole, je to důvod. Pokud se například pokusíte nastavit cestu k oblasti (System.AreaPath) jen pro čtení na základě podmínky, pole Cesta oblasti není k dispozici pro výběr. I když můžete zadat systémové pole, modul pravidel vám může zakázat uložení pravidla.

Výchozí a kopírovat pravidla

Výchozí pravidla a pravidla kopírování upravují hodnoty polí pracovních položek. Definují chování za běhu a omezení, například zadání výchozích hodnot, vymazání polí, vyžadování definování polí a další.

Použití těchto pravidel můžete omezit na základě členství ve skupině aktuálního uživatele, jak je popsáno v omezeních pravidel členství uživatele nebo skupiny.

Většinu těchto akcí pravidel je možné použít s výběrem libovolné podmínky.

Akce zděděného procesu

Popis

Copy the value from...

Určuje jiné pole, které obsahuje hodnotu, která se má zkopírovat do aktuálního pole.

Clear the value of...

Vymaže pole libovolné hodnoty, kterou obsahuje.

Use the current time to set the value of ...

Nastaví čas pole na základě nastavení času aktuálního uživatele.

Pravidla omezení

Pravidla omezení omezují změnu hodnoty pole. Definují platné stavy pro pracovní položku. Každé omezení funguje na jednom poli. Omezení se vyhodnocují na serveru při ukládání pracovních položek a pokud dojde k porušení nějakého omezení operace uložení, operace uložení se odmítne.

Použití těchto pravidel můžete omezit na základě členství ve skupině aktuálního uživatele, jak je popsáno v omezeních pravidel členství uživatele nebo skupiny.

Většinu těchto akcí pravidel je možné použít s výběrem libovolné podmínky.

Akce zděděného procesu

Popis

Hide the field...
K dispozici pouze v případech, kdy je vybrána podmínka členství ve skupině.

Určuje, že se pole ve formuláři pracovní položky nezobrazí, v podstatě odebere možnost aktuálního uživatele změnit hodnotu pole.

Make read-only

Zabrání úpravě pole vůbec. Toto pravidlo můžete chtít použít za určitých podmínek. Například po zavření pracovní položky chcete vytvořit pole jen pro čtení, abyste zachovali data pro účely vytváření sestav.
Chcete-li zadat výchozí pole jen pro čtení, zadejte v dialogovém okně Upravit pole karta Možnosti .

Make required

Vyžaduje, aby uživatel zadal hodnotu pole. Uživatelé nemohou uložit pracovní položku, dokud nebudou přiřazeny hodnoty ke všem požadovaným polím.
Chcete-li zadat výchozí pole, zadejte v dialogovém okně Upravit pole karta Možnosti .

Výběr seznamů

Vyberte seznamy definují hodnoty, které uživatel může nebo nemůže zvolit pro pole String nebo Integer. Hodnoty definované v rozevíracím seznamu se zobrazí ve formuláři pracovní položky a v editoru dotazů.

Pro zděděný proces jsou seznamy výběru definovány prostřednictvím dialogového okna Upravit pole.

Dialogové okno Upravit pole

Popis

Karta Definice pro pole rozevíracího seznamu

Definuje seznam povolených hodnot pro pole. Povolené hodnoty jsou hodnoty, které jsou k dispozici pro výběr v seznamu polí ve formulářích pracovních položek a v tvůrci dotazů. Musíte vybrat jednu z těchto hodnot.

Zaškrtněte políčko Povolit uživatelům zadat vlastní hodnoty na kartě Možnosti, aby uživatelé mohli zadat vlastní položky.

Definuje seznamnavrhovaných Navrhované hodnoty jsou hodnoty, které jsou k dispozici pro výběr v seznamu polí ve formulářích pracovních položek a v tvůrci dotazů. Kromě hodnot v seznamu můžete zadat i další hodnoty.

Hodnoty nebo změny podmíněného pole

Podmíněná pravidla určují akci na základě hodnoty pole, které se rovná určité hodnotě nebo se nerovná určité hodnotě, nebo pokud došlo ke změně nebo nebyla provedena na hodnotu konkrétního pole. Obecně platí, že podmíněná pravidla se použijí jako první nad nepodmíněnými pravidly. Pokud se vyhodnotí více podmíněných pravidel jako true, pořadí provádění je: When, WhenNot, WhenChanged, WhenNotChanged, WhenNotChanged.

Pro každé pole můžete zadat více podmíněných pravidel. Pro každé podmíněné pravidlo však můžete zadat pouze jedno pole pro řízení.

Zděděná podmínka

Popis

The value of ... (equals) [Když]

Určuje jedno nebo více pravidel, která se mají použít pro aktuální pole, pokud má jiné pole určitou hodnotu.

A change was made to the value of ... [WhenChanged]

Použije jedno nebo více pravidel na aktuální pole při změně hodnoty konkrétního pole.

The value of ... (not equals) [WhenNot]

Použije jedno nebo více pravidel na aktuální pole, pokud jiné pole nemá určitou hodnotu.

No change was made to the value of ... [WhenNotChanged]

Použije jedno nebo více pravidel na aktuální pole, pokud se nezmění hodnota konkrétního pole.


Zděděná akce

Popis

Clear the value of ...
Copy the value from ...
Make read-only ...
Make required ...
Set the value of ...
Use the current time to set the value of ...
Use the current user to set the value of ...

Určuje akci, která se má provést u konkrétního pole.

Omezení pravidel členství uživatelů nebo skupin

Aplikaci pravidla můžete omezit na základě členství aktuálního uživatele. Doporučujeme nastavit obor pravidla na skupinu zabezpečení Azure DevOps, a ne na jednoho uživatele, i když můžete zadat toto pravidlo. Pokud chcete mít pravidlo omezené na více skupin, musíte vytvořit nadřazenou skupinu Azure DevOps, která obsahuje sadu skupin, které chcete použít.

Implementace procesu

Tip

Pokud se chcete vyhnout problémům s vyhodnocením pravidel, které mohou nastat, zadejte skupiny zabezpečení Azure DevOps, a ne skupiny zabezpečení Microsoft Entra NEBO Active Directory. Další informace najdete v tématu Výchozí pravidla a modul pravidel.

Jak je uvedeno v následující tabulce, pokud chcete omezit pravidlo na základě členství aktuálního uživatele, zadáte jednu ze dvou podmínek pro zděděný proces. Tato pravidla jsou aktivní pro Azure DevOps 2020 a novější verze.

Platí pro

Pravidlo

Podmínka

Current user is a member of group ...
Current user is not member of group ...

Akce

Hide the field ...
Make read-only ...
Make required ...
Restrict the transition to state ...

Použití tokenů k odkazování na uživatele nebo skupiny

Pole pro výběr identity nebo osob můžou přijímat hodnoty, které odkazují na uživatele i skupiny. Když omezíte pravidlo na skupinu, označíte doménu nebo obor skupiny. U některých hodnot můžete použít tokeny.

Mezi příklady tokenů patří:

  • [Název_projektu], například [Fabrikam], [FabrikamFiber], [MyProject]
  • [OrganizationName], například [fabrikam], [moje uspořádání]
  • [CollectionName], například [fabrikam], [moje uspořádání]

Pokud se chcete dozvědět o oborech dostupných pro váš projekt nebo organizaci, přejděte na stránku Skupiny projectu Nastavení> Permissions>nebo Skupiny organizace Nastavení> Permissions>, můžete seznam podle potřeby filtrovat. Následující obrázek například ukazuje první čtyři položky do filtrovaného seznamu založeného na Azure DevOps. Další informace najdete v tématu Změna oprávnění na úrovni projektu nebo Změna oprávnění na úrovni kolekce projektů.

Snímek obrazovky se seznamem filtrovaných skupin oprávnění

Další informace o výchozích skupinách zabezpečení najdete v tématu Oprávnění a skupiny.

Vyhodnocení pravidla

Pravidla, která určují podmínku na základě členství uživatele nebo skupiny uživatele, který upravuje pracovní položku, se vyhodnocují jedním ze dvou způsobů. Při vyhodnocování pravidla musí aplikace určit, jestli se pravidlo vztahuje na aktuálního uživatele, a to tak, že zkontroluje, jestli je daný uživatel nebo není členem zadané skupiny.

  • Při úpravě pracovní položky z webového portálu, rozhraní REST API nebo příkazu azure boards se vytvoří požadavek na ID Microsoft Entra nebo Active Directory. U této operace nedochází k žádným problémům.
  • Při úpravě pracovní položky ze sady Visual Studio, Excelu nebo jiného vlastního nástroje pomocí klientského objektového modelu WIT je požadavek na vyhodnocení členství založený na mezipaměti klienta. Mezipaměť klienta nezná skupiny služby Active Directory.

Poznámka:

Visual Studio 2019 Team Explorer for projects using GIT has been re-written to use REST APIs.

Pokud se chcete vyhnout problémům s aktualizacemi pracovních položek uživatelů z různých klientů, místo skupin zabezpečení Active Directory zadejte skupiny zabezpečení Azure DevOps. Skupinu zabezpečení Azure DevOps můžete snadno vytvořit tak, aby odpovídala skupině Active Directory. Informace o tom, jak, najdete v tématu Přidání nebo odebrání uživatelů nebo skupin, správa skupin zabezpečení.

Poznámka:

Virtuální počítač klienta WIT je zastaralý. Od 1. ledna 2020 už není podporována při práci s Azure DevOps Services a Azure DevOps Serverem 2020.

Pořadí, ve kterém se pravidla vyhodnocují

Pravidla se obvykle zpracovávají v posloupnosti, ve které jsou uvedeny. Úplná posloupnost vyhodnocení všech pravidel ale není plně deterministická.

Tato část popisuje očekávané chování a interakce při použití podmíněných, kopírování a výchozích pravidel.

Následující kroky ukazují ve správném pořadí interakce, které Azure DevOps provádí, a uživatelem formuláře pracovní položky. Uživatel provádí pouze kroky 1, 8 a 13.

  1. Z klienta Azure DevOps, jako je webový portál nebo Visual Studio Team Explorer, uživatel vytvoří novou pracovní položku nebo upraví existující pracovní položku.

  2. Vyplňte výchozí hodnoty polí. U všech polí použijte všechny výchozí hodnoty přiřazené k poli, které nejsou součástí podmíněné klauzule.

  3. Zkopírujte nebo nastavte hodnoty polí. U všech polí použijte všechna pravidla ke zkopírování hodnoty nebo nastavení hodnoty pole, které nejsou součástí podmíněné klauzule.

  4. Pro všechna pole s podmíněným pravidlem, které odpovídá, použijte pravidla pro nastavení nebo zkopírování hodnoty pole.

  5. Pro všechna pole s podmíněným pravidlem, které neodpovídá, použijte pravidla pro nastavení nebo zkopírování hodnoty pole.

    Systém vždy zpracovává pravidla před pravidly When Not.

  6. Pro všechna pole, u kterých došlo ke změně hodnot od kroku 1 a která obsahují pravidla Při změně , použijte pravidla pro nastavení nebo zkopírování hodnoty pole.

  7. Umožňuje uživateli začít s úpravami.

  8. Uživatel změní hodnotu pole a přesune fokus z pole.

  9. Zpracovat všechna pravidla pro toto pole, která odpovídají nové hodnotě.

  10. Zpracujte libovolná pravidla When Not pro toto pole, která odpovídají nové hodnotě.

  11. Zpracovat všechna pravidla při změně pro toto pole, která odpovídají nové hodnotě.

  12. Vrácení možnosti úprav uživateli

  13. Uživatel uloží změny do úložiště dat.

  14. U všech polí použijte všechny Use the current time to set the value of ... akce definované pro toto pole přímo nebo nepřímo v rámci podmíněného pravidla.