Правила и их оценка
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Правила используются для настройки или ограничения присвоения значений полю рабочего элемента. Существует два основных типа правил: автоматически создаваемые правила и пользовательские правила, определенные для процесса или проекта. Автоматически созданные правила минимизируют необходимость добавления пользовательских правил для областей, которые должны работать обычным образом.
Вы определяете пользовательские правила для поддержки бизнес-вариантов использования. В зависимости от типа данных поля можно задать разные ограничения для вводимых в этом поле данных. Можно указать значения для списка выбора (раскрывающееся меню), задать значения по умолчанию, очистить записи или ограничить внесение изменений. Используя условные правила, можно применять правила к полю на основании зависимостей между значениями разных полей. Кроме того, можно ограничить набор пользователей, которым разрешено изменять поле, либо установить в качестве области действия правила некоторую группу.
Ознакомьтесь с этой статьей, чтобы понять следующее:
- Как система применяет автоматически созданные правила
- Ограничения, связанные с определением пользовательских правил в системных полях
- Различные типы настраиваемых правил, которые можно применить
- Как вычисляются правила
- Разница между правилами, определенными для процесса наследования, и локальным XML-процессом
- Почему необходимо свести к минимуму количество определяемых пользовательских правил.
Прежде чем определять пользовательские правила, ознакомьтесь со статьей "Настройка и настройка Azure Boards", чтобы получить общее представление о том, как настроить Azure Boards в соответствии с потребностями бизнеса.
Совет
Свести к минимуму количество правил, которые вы определяете для WIT. Хотя для типа рабочего элемента можно создать несколько правил, это может негативно повлиять на производительность при добавлении и изменении рабочих элементов пользователем. Когда пользователи сохраняют рабочие элементы, система проверяет все правила, связанные с полями для типа рабочего элемента. При определенных условиях выражение проверки правила будет слишком сложным для вычисления SQL.
Автоматически созданные правила
Автоматически созданные правила минимизируют необходимость добавления пользовательских правил для областей, которые должны работать обычным образом.
Правила перехода состояния
Унаследованные процессы создают весь набор правил перехода состояния "любой к любому" динамически для каждого типа пользовательского рабочего элемента и настраиваемого состояния, добавленного в рабочий процесс. Допустимый переход от любого состояния к любому состоянию.
Для локальных процессов XML необходимо указать допустимые переходы в WORKFLOW
разделе определения типа рабочего элемента.
Переходы состояния и правила полей "По дате"
Поля by/Date соответствуют полям", "Созданные по/дате", "Активированы по дате", "Разрешено по дате" и "Дата" и "Закрыта по дате".
Для наследуемых процессов эти поля автоматически задаются или очищаются при переходе рабочего элемента из одного состояния в другое. Поля "Изменено по дате" не включаются, так как они обновляются при сохранении каждого рабочего элемента и не связаны с переходами состояния.
К правилам и поведению по умолчанию, которые управляют этими полями, относятся:
- Состояние "Закрыто" всегда содержится в категории "Завершено".
- Категория завершенного состояния не настраивается и связана только с одним и только одним состоянием.
- Это закрытое состояние всегда закрыто для процессов Agile и CMMI, а также всегда готово для процессов Scrum и Basic.
- Автоматическое создание этих правил влияет на языковой стандарт, так как условие правила содержит имя состояния, локализованное. Система создает разные правила для разных языковых стандартов.
- Автоматически созданные правила для этих полей указываются только для типов рабочих элементов, которые включают эти поля. Тип рабочего элемента может не включать один или несколько этих полей.
- Эти правила необходимы, если тип рабочего элемента имеет пользовательские состояния, или тип рабочего элемента является пользовательским типом рабочего элемента.
- Эти правила применяются только к унаследованным процессам; Они никогда не создаются для размещенных XML-процессов или локальных XML-процессов.
Состояния рабочего процесса связаны с категориями состояний для поддержки рабочего процесса на досках. Дополнительные сведения см. в статье о том, как используются состояния рабочего процесса и категории состояний в невыполненных работах и досках.
Правила полей даты изменения состояния
Эти правила технически намного проще, чем правила закрытой даты/ закрытой даты, так как они не зависят от какого-либо конкретного состояния. Для любого типа рабочего элемента одинаковые правила всегда будут работать. Они должны быть автоматически созданы, так как некоторые типы рабочих элементов OOB не содержат поле даты изменения состояния, поэтому при добавлении этого поля в пользовательский тип рабочего элемента эти правила также необходимо создать автоматически. Здесь также применяются те же принципы для правил закрытой даты и закрытой даты.
Настраиваемые правила
Все пользовательские правила являются необязательными. Для наследуемого процесса указывается правило, состоящее из условия плюс действия. Для локального XML-процесса необходимо указать правила для поля или рабочего процесса.
Между двумя процессами не существует сопоставления "один к одному". В некоторых случаях правило XML-элемента определяется в диалоговом окне "Изменить" для унаследованного процесса, а не как правило. Другие XML-элементы, такие как FROZEN
, NOTSAMEAS
MATCH
не поддерживаются в наследуемом процессе.
Обратите внимание на следующее:
- Правила всегда применяются, не только при взаимодействии с формой, но и при взаимодействии с другими средствами. Например, задание поля только для чтения применяется не только к форме рабочего элемента, но и через API и надстройку Azure DevOps Server в Excel.
- Наследуемые записи процесса указывают условия и действия для выполнения полного правила. XML-элементы не делают эти различия.
- Правила полей не поддерживают назначение значений, которые являются суммой двух других полей или выполнением других математических вычислений. Однако вы можете найти решение, которое соответствует вашим потребностям через расширение Marketplace Aggregator (веб-служба ) TFS. См. также свертка работы и других полей.
- Вы можете найти дополнительные решения для применения настраиваемых правил к полям с помощью расширений Marketplace, таких как расширение библиотеки элементов управления формами рабочих элементов.
Композиция правил
Для наследуемого процесса каждое правило состоит из двух частей: условий и действий. Условия определяют обстоятельства, которые должны выполняться для применения правила. Действия определяют выполняемые операции. Для большинства правил можно указать не более двух условий и 10 действий для каждого правила. Все пользовательские правила требуют выполнения всех условий.
Например, можно сделать поле обязательным на основе значения, назначенного состоянию и другому полю. Например:
(Condition) When a work item State is
Активный
(Condition) And when the value of
Область значений = Дело
(Action) Then make required
Точки истории
Примечание.
В настоящее время для правил перехода состояния поддерживается только одно условие. Если вы применяете правила на основе состояния, см. раздел "Применение правил к состояниям рабочего процесса".
В следующей таблице перечислены действия, доступные с выбранными условиями.
Условие
Поддерживаемые действия
Установка значения поля или обязательное или доступное только для чтения
Ограничение перехода на основе состояния
Скрытие поля или создание поля только для чтения или обязательного на основе состояния и членства пользователей или групп
На основе членства пользователей или групп задайте атрибут поля или ограничьте переход состояния
Что происходит, если определены слишком много правил
Одно выражение SQL определяется для каждого проекта для проверки рабочих элементов всякий раз, когда они создаются или обновляются. Это выражение растет с числом правил, заданных для всех типов рабочих элементов, определенных для проекта. Каждый квалификатор поведения, указанный для поля, приводит к увеличению числа вложенных выражений. Вложенные правила, правила, которые применяются только к переходу или условию для значения другого поля, приводят к добавлению дополнительных условий в инструкцию IF
. Когда выражение достигает определенного размера или сложности, SQL больше не может оценить его и создает ошибку. Удаление некоторых WIT или устранение некоторых правил может устранить ошибку.
Можно указать значения для списка выбора (раскрывающееся меню), задать значения по умолчанию, очистить записи или ограничить внесение изменений. Используя условные правила, можно применять правила к полю на основании зависимостей между значениями разных полей. Кроме того, можно ограничить набор пользователей, которым разрешено изменять поле, либо установить в качестве области действия правила некоторую группу.
Правила рабочих элементов не существуют в виде одной коллекции. Правила фактически создаются динамически и объединяются из разных источников данных. Логика слияния — это простая, консолидация идентичных правил, но не обрезает конфликтующие правила.
Обход правил
Как правило, все рабочие элементы проверяются подсистемой правил при изменении рабочего элемента пользователями. Однако для поддержки определенных сценариев пользователи, которым назначены правила обхода для обновления разрешений на уровне проекта, могут сохранять рабочие элементы без оценки правил.
Правила можно обойти одним из двух способов. Первый — через рабочие элементы — обновите REST API и задайте bypassRules
для параметра значение true
. Второй — это клиентская объектная модель, инициализировав в режиме обхода (инициализация WorkItemStore
с WorkItemStoreFlags.BypassRules
).
Системные поля и настраиваемые правила
Системные поля имеют System.Имена ссылок на имя, например System.Title и System.State.
Следующие системные поля должны иметь значение: идентификатор области, измененная дата, дата создания, создание, состояние и причина.
Подсистема правил ограничивает условия установки или действия системными полями, за исключением следующих условий:
- Можно сделать поля "Состояние " и "Причина " только для чтения.
- Большинство правил можно применять к полям Title, Assigned To, Description и Changed By.
Если вы не видите поле, указанное в раскрывающемся меню пользовательского интерфейса правила для процесса наследования, вот почему. Например, если вы пытаетесь создать путь к области (System.AreaPath) только для чтения на основе условия, поле "Путь к области" недоступен для выбора. Даже если вы можете указать системное поле, подсистема правил может ограничить сохранение правила.
Правила по умолчанию и копированию
Правила по умолчанию и копирования изменяют значения полей рабочих элементов. Они определяют поведение и ограничения во время выполнения, такие как указание значений по умолчанию, очистка полей, требование определения полей и многое другое.
Вы можете ограничить применение этих правил на основе членства в группе текущего пользователя, как описано в ограничениях на членство пользователей или групп.
Большинство этих действий правила можно применить с выбором любого условия.
Наследуемое действие процесса
Description
Copy the value from...
Указывает другое поле, содержащее значение, скопированное в текущее поле.
Clear the value of...
Очищает поле любого значения, содержащегося в нем.
Use the current time to set the value of ...
Задает время для поля на основе параметра времени текущего пользователя.
Правила ограничения
Правила ограничения ограничивают изменение значения поля. Они определяют допустимые состояния для рабочего элемента. Каждое ограничение работает в одном поле. Ограничения оцениваются на сервере при сохранении рабочих элементов и если какое-либо ограничение нарушается, операция сохранения отклоняется.
Вы можете ограничить применение этих правил на основе членства в группе текущего пользователя, как описано в ограничениях на членство пользователей или групп.
Большинство этих действий правила можно применить с выбором любого условия.
Наследуемое действие процесса
Description
Hide the field...
Доступно только при выборе условия членства в группе.
Указывает, что поле не отображается в форме рабочего элемента, по сути удалив возможность текущего пользователя изменить значение поля.
Make read-only
Предотвращает изменение поля вообще. Это правило может потребоваться применить в определенных условиях. Например, после закрытия рабочего элемента необходимо сделать поле только для чтения, чтобы сохранить данные в целях создания отчетов.
Чтобы указать, что поле по умолчанию доступно только для чтения, укажите в диалоговом окне "Изменить поле" вкладку "Параметры ".
Make required
Требуется, чтобы пользователь указал значение для поля. Пользователи не могут сохранить рабочий элемент, пока они не назначали значения всем обязательным полям.
Чтобы указать поле по умолчанию, укажите в диалоговом окне "Изменить поле" вкладку "Параметры ".
Выбор списков
Списки выбора определяют значения, которые пользователь может или не может выбрать для поля String или Integer. Значения, определенные в списке выбора, отображаются в форме рабочего элемента и редакторе запросов.
Для наследуемого процесса списки выбора определяются в диалоговом окне "Изменение поля".
Диалоговое окно редактирования поля
Description
Вкладка "Определение " для поля списка выбора
Определяет список разрешенных значений для поля. Допустимые значения — это значения, доступные для выбора в списке полей в формах рабочих элементов и в построителе запросов. Необходимо выбрать одно из этих значений.
Установите флажок "Разрешить пользователям вводить собственные значения" на вкладке "Параметры", чтобы разрешить пользователям указывать собственные записи.
Определяет список предлагаемых значений для поля. Предлагаемые значения — это значения, доступные для выбора в списке полей в формах рабочих элементов и в построителе запросов. Другие значения можно ввести дополнительно к значениям в списке.
Значения или изменения условного поля
Условные правила указывают действие на основе значения поля, равного или не равного определенному значению, или если изменение было или не было сделано для значения определенного поля. Как правило, условные правила применяются сначала к безусловным правилам. Если для нескольких условных правил задано значение true, порядок выполнения : WhenNot, WhenChanged, WhenNotChanged.
Можно указать несколько условных правил для каждого поля. Однако можно указать только одно поле вождения для каждого условного правила.
Унаследованное условие
Description
The value of ... (equals)
[Когда]
Указывает одно или несколько правил, применяемых к текущему полю, если другое поле имеет определенное значение.
A change was made to the value of ...
[WhenChanged]
Применяет одно или несколько правил к текущему полю при изменении значения конкретного поля.
The value of ... (not equals)
[WhenNot]
Применяет одно или несколько правил к текущему полю, если другое поле не имеет определенного значения.
No change was made to the value of ...
[WhenNotChanged]
Применяет одно или несколько правил к текущему полю, если значение определенного поля не изменяется.
Унаследованное действие
Description
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 ...
Указывает действие для выполнения определенного поля.
Ограничения правил членства пользователей или групп
Можно ограничить применение правила на основе членства текущего пользователя. Мы рекомендуем ограничить правило группой безопасности Azure DevOps, а не одним пользователем, хотя можно указать его. Чтобы правило было ограничено несколькими группами, необходимо создать родительскую группу Azure DevOps, содержащую набор групп, которые требуется использовать.
Реализация процесса
Совет
Чтобы избежать проблем с оценкой правил, которые могут возникнуть, укажите группы безопасности Azure DevOps, а не группы безопасности Microsoft Entra ID или Active Directory. Дополнительные сведения см. в разделе "Правила по умолчанию" и обработчик правил.
Как указано в следующей таблице, чтобы ограничить правило на основе членства текущего пользователя, укажите одно из двух условий для унаследованного процесса. Эти правила активны для Azure DevOps 2020 и более поздних версий.
Относится к
Правило
Condition
Current user is a member of group ...
Current user is not member of group ...
Действие
Hide the field ...
Make read-only ...
Make required ...
Restrict the transition to state ...
Использование маркеров для ссылки на пользователей или группы
Поля выбора удостоверений или людей могут принимать значения, ссылающиеся как на пользователей, так и на группы. При ограничении правила на группу указывается домен или область группы. Для некоторых значений можно использовать маркеры.
Ниже приведены примеры маркеров.
- [Имя_проекта], например [Fabrikam], [FabrikamFiber], [MyProject]
- [OrganizationName], например [fabrikam], [myorganization]
- [CollectionName], например [fabrikam], [myorganization]
Чтобы узнать о областях, доступных для вашего проекта или организации, перейдите на страницу "Группы разрешений>>параметров проекта>" или "Группы параметров>организации", вы можете отфильтровать список по мере необходимости. Например, на следующем рисунке показаны первые четыре записи в отфильтрованный список на основе Azure DevOps. Дополнительные сведения см. в разделе "Изменение разрешений на уровне проекта" или "Изменение разрешений на уровне коллекции проектов".
Дополнительные сведения о группах безопасности по умолчанию см. в разделе "Разрешения и группы"
Оценка правила
Правила, определяющие условие на основе членства пользователя или группы пользователя, изменяющего рабочий элемент, оцениваются одним из двух способов. При оценке правила приложение должно определить, применяется ли правило к текущему пользователю, проверив, является ли этот пользователь членом указанной группы.
- При изменении рабочего элемента на веб-портале, REST API или команде azure boards выполняется запрос на идентификатор Microsoft Entra или Active Directory. Никаких проблем для этой операции не возникает.
- При изменении рабочего элемента из Visual Studio, Excel или другого пользовательского средства с помощью клиентской объектной модели WIT запрос на оценку членства основан на кэше клиента. Кэш клиента не знает о группах Active Directory.
Примечание.
Visual Studio 2019 Team Explorer для проектов с помощью GIT был перезаписан для использования REST API.
Чтобы избежать проблем с пользователями, обновляемыми рабочими элементами из различных клиентов, укажите группы безопасности Azure DevOps вместо групп Active Directory. Вы можете легко создать группу безопасности Azure DevOps, чтобы соответствовать группе Active Directory. Сведения о том, как добавить или удалить пользователей или групп, управляйте группами безопасности.
Примечание.
OM клиента WIT устарел. По состоянию на 1 января 2020 г. она больше не поддерживается при работе с Azure DevOps Services и Azure DevOps Server 2020.
Порядок оценки правил
Правила обычно обрабатываются в последовательности, в которой они перечислены. Однако полная последовательность для оценки всех правил не полностью детерминирована.
В этом разделе описывается ожидаемое поведение и взаимодействие при применении условных, копирования и правил по умолчанию.
На следующих шагах показано в правильной последовательности взаимодействия, выполняемые Azure DevOps и пользователем формы рабочего элемента. Пользователь выполняет только шаги 1, 8 и 13.
Из клиента Azure DevOps, например веб-портала или Visual Studio Team Explorer, пользователь создает новый рабочий элемент или изменяет существующий рабочий элемент.
Заполните поля по умолчанию. Для всех полей примените все значения по умолчанию, назначенные полю, которые не являются частью условного предложения.
Копирование или установка значений полей. Для всех полей примените все правила для копирования значения или задания значения поля, которое не является частью условного предложения.
Для всех полей с условным правилом, которое соответствует, примените правила для задания или копирования значения поля.
Для всех полей с соответствующим условным правилом ,примените правила для задания или копирования значения поля.
Система всегда обрабатывает правила, предшествующие не правилам.
Для всех полей, которые были изменены с шага 1, и которые содержат правила при изменении , примените правила для задания или копирования значения поля.
Разрешить пользователю начать редактирование.
Пользователь изменяет значение поля, а затем перемещает фокус из поля.
Обработка любых правил для этого поля, соответствующего новому значению.
Обработайте любое , если не правила для этого поля, соответствующего новому значению.
Обработайте любые правила при изменении для этого поля, соответствующего новому значению.
Возвращает возможность редактирования пользователю.
Пользователь сохраняет изменения в хранилище данных.
Для всех полей примените все
Use the current time to set the value of ...
действия, определенные для поля напрямую или косвенно в условном правиле.
Связанные статьи
- Примеры сценариев правил
- Индекс поля рабочего элемента
- Поля и атрибуты рабочих элементов
- Изменение разрешений на уровне проекта
- Изменение разрешений на уровне коллекции проектов
- Разрешения и группы
- Унаследованный процесс
- Локальный XML-процесс