Reglas y evaluación de reglas
Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 - TFS 2013
Las reglas se usan para establecer o restringir las asignaciones de valores a un campo de elemento de trabajo. Hay dos tipos principales de reglas, reglas generadas automáticamente y reglas personalizadas definidas para un proceso o proyecto. Las reglas generadas automáticamente minimizan la necesidad de agregar reglas personalizadas para las áreas que deben funcionar de forma estándar.
Las reglas personalizadas se definen para admitir los casos de uso empresariales. Dependiendo del tipo de datos de un campo, puede establecer varias restricciones en los datos que se pueden especificar en ese campo. Puede establecer los valores de una lista de selección (menú desplegable), establecer los valores predeterminados, borrar entradas o restringir los cambios. Con las reglas condicionales, puede aplicar reglas a un campo en función de las dependencias entre los valores de los distintos campos. También puede restringir quién puede modificar un campo o definir una regla para que solo se aplique a un grupo.
Lea este artículo para comprender lo siguiente:
- Aplicación de reglas generadas automáticamente por el sistema
- Restricciones realizadas en la definición de reglas personalizadas en campos del sistema
- Los distintos tipos de reglas personalizadas que puede aplicar
- Cómo se evalúan las reglas
- Diferencia entre las reglas definidas para un proceso de herencia frente a un proceso XML local
- Por qué debe minimizar el número de reglas personalizadas que defina.
Antes de definir reglas personalizadas, lea Configuración y personalización de Azure Boards obtener una amplia comprensión de cómo personalizar Azure Boards para satisfacer sus necesidades empresariales.
Sugerencia
Minimice el número de reglas que defina para un WIT. Aunque puede crear varias reglas para un WIT, las reglas de suma pueden afectar negativamente al rendimiento cuando un usuario agrega y modifica elementos de trabajo. Cuando los usuarios guarden elementos de trabajo, el sistema valida todas las reglas asociadas a los campos para su tipo de elemento de trabajo. En determinadas condiciones, la expresión de validación de reglas es demasiado compleja para SQL evaluar.
Reglas generadas automáticamente
Las reglas generadas automáticamente minimizan la necesidad de agregar reglas personalizadas para las áreas que deben funcionar de forma estándar.
Reglas de transición de estado
Los procesos heredados generan dinámicamente todo el conjunto de reglas de transición de estado cualquiera a cualquier para cada tipo de elemento de trabajo personalizado y el estado personalizado agregado a un flujo de trabajo. Una transición de cualquier estado a cualquier estado es válida.
Para los procesos XML locales, debe especificar las transiciones válidas dentro de la WORKFLOW sección de la definición del tipo de elemento de trabajo.
Transiciones de estado y reglas de campo By/Date
Los campos By/Date corresponden a Created By/Date, Activated By/Date, Resolved By/Datey Closed By/Date.
En el caso de los procesos heredados, estos campos se establecen o borran automáticamente al realizar la transición de un elemento de trabajo de un estado a otro. Los campos Modificados por/Fecha no se incluyen porque se actualizan con cada elemento de trabajo guardado y no están relacionados con las transiciones de estado.
Entre las reglas y comportamientos predeterminados que rigen estos campos se incluyen:
- El estado Cerrado siempre está incluido en la categoría Estado completado.
- La categoría Estado completado no es configurable y está asociada a un solo estado.
- Este estado Cerrado siempre se cierra para los procesos Agile y CMMI, y siempre se realiza para los procesos Scrum y Basic.
- La generación automática de estas reglas se ve afectada por la configuración regional, ya que la condición de regla contiene el nombre de estado, que está localizado. El sistema genera reglas diferentes para distintas configuraciones regionales.
- Las reglas generadas automáticamente para estos campos solo se especifican para los tipos de elemento de trabajo que incluyen estos campos. Es posible que un tipo de elemento de trabajo no incluya uno o varios de estos campos.
- Estas reglas son necesarias cuando un tipo de elemento de trabajo tiene estados personalizados o el tipo de elemento de trabajo es un tipo de elemento de trabajo personalizado.
- Estas reglas solo se aplican a los procesos heredados; nunca se generan para los procesos XML hospedado o XML local.
Los estados de flujo de trabajo están asociados a categorías de estado para admitir el flujo de trabajo en paneles Kanban. Para obtener más información, consulte Cómo se usan los estados de flujo de trabajo y las categorías de estado en los backlogs y Boards.
Reglas de campo de fecha de cambio de estado
Técnicamente, estas reglas son mucho más sencillas que las reglas de fecha de cierre o cierre porque no dependen de ningún estado determinado. Para cualquier tipo de elemento de trabajo, siempre funcionarán las mismas reglas. Deben generarse automáticamente porque algunos tipos de elementos de trabajo de OOB no contienen el campo State Change Date ( Fecha de cambio de estado), por lo que cuando el usuario agrega este campo a un tipo de elemento de trabajo personalizado, estas reglas también deben generarse automáticamente. Aquí también se aplican los mismos principios para las reglas de fecha de cierre o cierre.
Reglas personalizadas
Todas las reglas personalizadas son opcionales. Para un proceso heredado, especifique una regla que consta de una condición más una acción. Para un proceso XML local, especifique reglas para un campo o dentro del flujo de trabajo.
No hay una asignación uno a uno entre los dos procesos. En algunos casos, la regla de elemento XML se define en el cuadro de diálogo Editar campo para el proceso heredado y no como una regla. No se admiten otros elementos FROZEN XML, como MATCH , , en el proceso NOTSAMEAS heredado.
Tenga en cuenta lo siguiente:
- Las reglas siempre se aplican, no solo cuando se interactúa con el formulario, sino también al interactuar a través de otras herramientas. Por ejemplo, establecer un campo como de solo lectura no solo aplica la regla en el formulario de elemento de trabajo, sino también a través de la API y Excel Azure DevOps Server complemento.
- Las entradas de proceso heredadas especifican condiciones y acciones para crear una regla completa. Los elementos XML no hacen esas distinciones.
- Las reglas de campo no admiten la asignación de valores que sean la suma de otros dos campos ni realizar otros cálculos matemáticos. Sin embargo, puede encontrar una solución que se adapte a sus necesidades a través de la extensión marketplace del agregador de TFS (servicio web). Consulte también Acumulación de trabajo y otros campos.
- Puede encontrar soluciones adicionales para aplicar reglas personalizadas a campos mediante extensiones de Marketplace, como la extensión de biblioteca de control de formularios de elementos de trabajo.
Composición de reglas
Para un proceso heredado, cada regla consta de dos partes: Condiciones y Acciones. Las condiciones definen las circunstancias que se deben cumplir para que se aplique la regla. Las acciones definen las operaciones que se deben realizar. Para la mayoría de las reglas, puede especificar un máximo de dos condiciones y 10 acciones por regla. Todas las reglas personalizadas requieren que se cumplen todas las condiciones para poder ejecutarse.
Por ejemplo, puede hacer que un campo sea obligatorio en función del valor asignado al estado y a otro campo. Por ejemplo:
(Condition) When a work item State is(Condition) When a work item State is
(Condition) And when the value of(Condition) And when the value of = =
(Action) Then make required(Action) Then make required
Nota
Actualmente, solo se admite una condición para las reglas de transición de estado. Si va a aplicar reglas basadas en el estado, vea Aplicar reglas a estados de flujo de trabajo.
En la tabla siguiente se resumen las acciones que están disponibles con las condiciones seleccionadas.
Condition
Acciones admitidas
Establecer el valor del campo o hacer obligatorio o de solo lectura


Restringir una transición en función del estado


Ocultar un campo o hacer que el campo sea de solo lectura o sea necesario en función del estado y la pertenencia a grupos o usuarios


En función de la pertenencia a grupos o usuarios, establezca el atributo de campo o restrinja una transición de estado.


¿Qué ocurre si se definen demasiadas reglas?
Se define una SQL por proyecto para validar los elementos de trabajo cada vez que se crean o actualizan. Esta expresión aumenta con el número de reglas que se especifican para todos los tipos de elementos de trabajo definidos para el proyecto. Cada calificador de comportamiento especificado para un campo produce un aumento en el número de sub-expresiones. Las reglas anidadas, las reglas que solo se aplican en una transición o que están condicionadas por el valor de algún otro campo, hacen que se apliquen más condiciones a una IF instrucción. Una vez que la expresión alcanza un tamaño o complejidad determinados, SQL no puede evaluarla más y genera un error. La eliminación de algunos WIT o la eliminación de algunas reglas puede resolver el error.
Puede establecer los valores de una lista de selección (menú desplegable), establecer los valores predeterminados, borrar entradas o restringir los cambios. Con las reglas condicionales, puede aplicar reglas a un campo en función de las dependencias entre los valores de los distintos campos. También puede restringir quién puede modificar un campo o definir una regla para que solo se aplique a un grupo.
Las reglas de elementos de trabajo no existen como una sola colección. Las reglas se generan dinámicamente y se combinan desde distintos orígenes de datos. La lógica de combinación es sencilla, consolida reglas idénticas, pero no recorta las reglas en conflicto.
Omitir reglas
En general, el motor de reglas valida todos los elementos de trabajo cuando los usuarios modifican el elemento de trabajo. Sin embargo, para admitir determinados escenarios, los usuarios a los que se les asignó el permiso de nivel de proyecto Omitir reglas en actualizaciones de elementos de trabajo pueden guardar elementos de trabajo sin que se evalúen las reglas.
Las reglas se pueden omitir de una de estas dos maneras. La primera es a través de Elementos de trabajo: actualización de la API REST y establecimiento del parámetro en true . El segundo es a través del modelo de objetos de cliente, inicializando en modo bypassrules WorkItemStore (inicializar con WorkItemStoreFlags.BypassRules ).
Campos del sistema y reglas personalizadas
Los campos del sistema tienen System. Nombres de referencia, por ejemplo System.Title y System.State.
Los siguientes campos del sistema deben tener un valor:Id. de área,Fecha de cambio, Fechade creación, Creadopor , Estadoy Motivo.
El motor de reglas restringe la configuración de condiciones o acciones a los campos del sistema, excepto de la siguiente manera:
- Puede hacer que los campos Estado y Motivo sea de solo lectura.
- Puede aplicar la mayoría de las reglas a los campos Title, Asignado a, Descriptiony Changed By.
Si no ve un campo en el menú desplegable de la interfaz de usuario de la regla para el proceso de herencia, este es el motivo. Por ejemplo, si intenta hacer que Ruta de acceso de área (System.AreaPath) sea de solo lectura en función de una condición, el campo Ruta de acceso de área no está disponible para la selección. Incluso si puede especificar un campo del sistema, el motor de reglas puede impedir que guarde la regla.
Reglas predeterminadas y de copia
Las reglas predeterminadas y de copia modifican los valores de los campos de elemento de trabajo. Definen el comportamiento y las restricciones en tiempo de ejecución, como especificar valores predeterminados, borrar campos, exigir la definición de campos y mucho más.
Puede restringir la aplicación de estas reglas en función de la pertenencia a grupos del usuario actual, como se describe en Restricciones de reglas de pertenencia a grupos o usuarios.
La mayoría de estas acciones de regla se pueden aplicar con la selección de cualquier condición.
Acción de proceso heredado
Descripción
Copy the value from...
Especifica otro campo que contiene un valor que se va a copiar en el campo actual.
Clear the value of...
Borra el campo de cualquier valor que contenga.
Use the current time to set the value of ...
Establece la hora de un campo en función de la configuración de hora del usuario actual.
Reglas de restricción
Las reglas de restricción restringen el cambio del valor de un campo. Definen los estados válidos para un elemento de trabajo. Cada restricción funciona en un solo campo. Las restricciones se evalúan en el servidor al guardar el elemento de trabajo y, si se infringe alguna restricción, se rechaza la operación de guardado.
Puede restringir la aplicación de estas reglas en función de la pertenencia a grupos del usuario actual, como se describe en Restricciones de reglas de pertenencia a grupos o usuarios.
La mayoría de estas acciones de regla se pueden aplicar con la selección de cualquier condición.
Acción de proceso heredado
Descripción
Hide the field...
Solo está disponible cuando se selecciona una condición de pertenencia a grupos.
Especifica que no se muestre el campo en el formulario de elemento de trabajo, lo que básicamente elimina la capacidad del usuario actual para cambiar el valor del campo.
Make read-only
Evita que un campo se modifique en modo alguno. Tal vez desee aplicar esta regla en determinadas condiciones. Por ejemplo, después de cerrar un elemento de trabajo, desea hacer que un campo sea de solo lectura para conservar los datos con la finalidad de generar informes.
Para especificar que el valor predeterminado del campo es de solo lectura, especifique en el cuadro de diálogo Editar campo, pestaña Opciones.
Make required
Requiere que un usuario especifique un valor para el campo. Los usuarios no pueden guardar un elemento de trabajo hasta que tengan valores asignados en todos los campos requeridos.
Para especificar el valor predeterminado del campo, especifique en el cuadro de diálogo Editar campo, pestaña Opciones.
Seleccionar listas
Las listas de selección definen los valores que un usuario puede o no puede elegir para un campo Cadena o Entero. Los valores definidos en una lista de selección aparecen en un formulario de elemento de trabajo y en el editor de consultas.
Para un proceso heredado, las listas de selección se definen mediante el cuadro de diálogo Editar campo.
Cuadro de diálogo Editar campo
Descripción
Pestaña Definición de un campo de lista desplegable
Define una lista de valores permitidos para el campo. Los valores permitidos son valores disponibles para seleccionarlos en una lista de campos en los formularios de elementos de trabajo y en el generador de consultas. Debe seleccionar uno de estos valores.
Active la casilla Permitir que los usuarios escriban sus propios valores en la pestaña Opciones para permitir que los usuarios especifiquen sus propias entradas.
Define una lista de valores sugeridos para el campo. Los valores sugeridos son los valores que están disponibles para seleccionarlos en una lista de campos en los formularios de elementos de trabajo y en el generador de consultas. Además de los valores que figuran en la lista, puede agregar otros.
Cambios o valores de campo condicionales
Las reglas condicionales especifican una acción basada en el valor de un campo que es igual o no es igual a un valor específico, o si se ha realizado o no un cambio en el valor de un campo específico. En general, las reglas condicionales se aplican primero sobre las reglas incondicionales. Cuando varias reglas condicionales se evalúan como true, el orden de ejecución es: When, WhenNot, WhenChanged, WhenNotChanged.
Puede especificar varias reglas condicionales por campo. Sin embargo, solo puede especificar un único campo esencial por regla condicional.
Condición heredada
Descripción
The value of ... (equals) [Cuándo]
Especifica una o más reglas que se aplicarán al campo actual cuando otro campo tenga un valor concreto.
A change was made to the value of ... [WhenChanged]
Aplica una o más reglas al campo actual cuando se cambia el valor de un campo concreto.
The value of ... (not equals) [WhenNot]
Aplica una o más reglas al campo actual cuando otro campo no tiene un valor concreto.
No change was made to the value of ... [WhenNotChanged]
Aplica una o más reglas al campo actual cuando no se cambia el valor de un campo concreto.
Acción heredada
Descripción
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 ...
Especifica la acción que se debe realizar en un campo específico.
Restricciones de reglas de pertenencia a grupos o usuarios
Puede restringir la aplicación de una regla en función de la pertenencia del usuario actual. Se recomienda establecer el ámbito de la regla en Azure DevOps grupo de seguridad y no en un solo usuario, aunque puede especificar el último. Para que la regla tenga como ámbito varios grupos, debe crear un grupo de Azure DevOps primario que incluya el conjunto de grupos que desea usar.
Implementación de procesos
Sugerencia
Para evitar problemas de evaluación de reglas que puedan surgir, especifique Azure DevOps de seguridad y no Azure Active Directory o Active Directory de seguridad. Para más información, consulte Reglas predeterminadas y el motor de reglas.
Como se indica en la tabla siguiente, para restringir una regla en función de la pertenencia del usuario actual, especifique una de las dos condiciones para un proceso heredado. Estas reglas están activas para Azure DevOps 2020 y versiones posteriores.
Se aplica a
Regla
Condición
Current user is a member of group ...
Current user is not member of group ...
Acción
Hide the field ...
Make read-only ...
Make required ...
Restrict the transition to state ...
Uso de tokens para hacer referencia a usuarios o grupos
Los campos de identidad o selector de personas pueden aceptar valores que hacen referencia a usuarios y grupos. Cuando se restringe una regla a un grupo, se indica el dominio o ámbito del grupo. Para algunos valores, puede utilizar tokens.
Entre los ejemplos de tokens se incluyen los siguientes:
- [ProjectName], como [Fabrikam], [FabrikamFiber], [MyProject]
- [OrganizationName], como [fabrikam], [myorganization]
- [CollectionName], como [fabrikam], [myorganization]
Para obtener información sobre los ámbitos disponibles para su proyecto u organización, vaya a la página grupos de permisos de Project Configuración o grupos de permisos Configuración de la organización, puede filtrar la lista según sea necesario. >> Por ejemplo, en la imagen siguiente se muestran las cuatro primeras entradas de una lista filtrada basada en Azure DevOps. Para más información, consulte Establecer permisos en el nivel de proyecto o colección.
Para más información sobre los grupos de seguridad predeterminados, consulte Permisos y grupos.
Evaluación de la regla de acceso
Las reglas que especifican una condición en función de la pertenencia del usuario o grupo del usuario que modifica un elemento de trabajo se evalúan de una de estas dos maneras. Cuando se evalúa la regla, la aplicación debe determinar si la regla se aplica al usuario actual comprobando si ese usuario es o no miembro del grupo especificado.
- Al modificar el elemento de trabajo desde el portal web, la API REST o el comando azure boards, se realiza una solicitud al Azure Active Directory o Active Directory de trabajo. No se produce ningún problema para esta operación.
- Al modificar el elemento de trabajo de Visual Studio, Team Explorer Everywhere, Excel u otra herramienta personalizada mediante el modelo de objetos de cliente wit, la solicitud para evaluar la pertenencia se basa en una caché de cliente. La memoria caché del cliente no es consciente de Active Directory grupos.
Nota
Visual Studio 2019 Team Explorer para proyectos que usan GIT se ha rees escrito para usar las API REST.
Para evitar problemas con los usuarios que actualizan elementos de trabajo de varios clientes, especifique Azure DevOps de seguridad en lugar de Active Directory de trabajo. Puede crear fácilmente un grupo de Azure DevOps de seguridad para que se corresponda con un Active Directory grupo. Para obtener información sobre cómo hacerlo, consulte Adición de un usuario o grupo a un grupo de seguridad.
Nota
La OM del cliente DE WIT está en desuso. A partir del 1 de enero de 2020, ya no se admite cuando se trabaja con Azure DevOps Services y Azure DevOps Server 2020.
Orden en el que se evalúan las reglas
Las reglas normalmente se procesan en la secuencia en la que están presentes. Sin embargo, la secuencia completa para la evaluación de todas las reglas no es totalmente determinista.
En esta sección se describe el comportamiento esperado y las interacciones al aplicar reglas condicionales, de copia y predeterminadas.
Los pasos siguientes muestran, en la secuencia correcta, las interacciones que Azure DevOps realiza y por el usuario de un formulario de elemento de trabajo. El usuario solo realiza los pasos 1, 8 y 13.
Desde un cliente Azure DevOps , como el portal web, Visual Studio/Team Explorer o Team Explorer Everywhere, un usuario crea un nuevo elemento de trabajo o edita un elemento de trabajo existente.
Rellene los campos predeterminados. Para todos los campos, aplique los valores predeterminados asignados al campo que no forman parte de una cláusula condicional.
Copie o establezca valores de campo. Para todos los campos, aplique las reglas para copiar un valor o establezca el valor de un campo que no forme parte de una cláusula condicional.
Para todos los campos con una regla condicional When que coincida, aplique reglas para establecer o copiar un valor de campo.
Para todos los campos con una regla condicional Cuando no coincide, aplique reglas para establecer o copiar un valor de campo.
El sistema siempre procesa las reglas When antes de las reglas When Not.
Para todos los campos que han cambiado sus valores desde el paso 1 y que contienen reglas cuando se han cambiado, aplique reglas para establecer o copiar un valor de campo.
Permita que el usuario empiece a editar.
El usuario modifica un valor de campo y después quita el foco del campo.
Procese las reglas When para ese campo que coincidan con el nuevo valor.
Procese las reglas when not para ese campo que coincidan con el nuevo valor.
Procese las reglas cuando se cambien para ese campo que coincidan con el nuevo valor.
Permita que el usuario vuelva a editar.
El usuario guarda los cambios en el almacén de datos.
Para todos los campos, aplique las acciones definidas para el campo directa
Use the current time to set the value of ...o indirectamente en una regla condicional.
