Avaliação de regras e regras

Serviços de DevOps do Azure | Azure DevOps Server 2022 - Azure DevOps Server 2019

As regras são utilizadas para definir ou restringir atribuições de valores a um campo de item de trabalho. Existem dois tipos principais de regras: regras geradas automaticamente e regras personalizadas definidas para um processo ou projeto. As regras geradas automaticamente minimizam a necessidade de adicionar regras personalizadas para áreas que devem funcionar de forma padronizada.

Pode definir regras personalizadas para suportar os seus casos de utilização empresarial. Dependendo do tipo de dados de um campo, pode definir várias restrições sobre os dados que podem ser introduzidos nesse campo. Pode especificar valores para uma lista de opções (menu pendente), definir valores predefinidos, limpar entradas ou restringir alterações. Com as regras condicionais, pode aplicar regras a um campo com base em dependências entre os valores de campos diferentes. Também pode restringir quem pode modificar um campo ou definir o âmbito de uma regra para aplicar apenas a um grupo.

Leia este artigo para entender o seguinte:

  • Como o sistema aplica regras geradas automaticamente
  • Restrições impostas à definição de regras personalizadas nos campos do sistema
  • Os diferentes tipos de regras personalizadas que você pode aplicar
  • Como as regras são avaliadas
  • Diferença entre regras definidas para um processo de herança versus um processo XML local
  • Por que você deve minimizar o número de regras personalizadas definidas

Antes de definir regras personalizadas, leia Configurar e personalizar Painéis do Azure para obter uma compreensão ampla de como personalizar os Painéis do Azure para atender às suas necessidades de negócios.

Gorjeta

Minimize o número de regras definidas para um WIT. Embora possa criar várias regras para um WIT, as regras de adição podem afetar negativamente o desempenho quando um utilizador adiciona e modifica itens de trabalho. Quando os utilizadores guardam itens de trabalho, o sistema valida todas as regras associadas aos campos do respetivo tipo de item de trabalho. Em determinadas condições, a expressão de validação de regras é demasiado complexa para o SQL avaliar.

Regras geradas automaticamente

As regras geradas automaticamente minimizam a necessidade de adicionar regras personalizadas para áreas que devem funcionar de forma padronizada.

Regras de transição de Estado

Os processos herdados geram dinamicamente todo o conjunto de regras de transição de qualquer estado para qualquer tipo de item de trabalho personalizado e estado personalizado adicionado a um fluxo de trabalho. Uma transição de qualquer estado para qualquer estado é válida.

Para processos XML locais, você deve especificar as transições válidas na WORKFLOW seção da definição de tipo de item de trabalho.

Transições de estado e regras de campo Por/Data

Os campos Por/Data correspondem a Created By/Date, Activated By/Date, Resolved By/Date e Closed By/Date.

Para processos herdados, esses campos são automaticamente definidos ou limpos quando você faz a transição de um item de trabalho de um estado para outro. Os campos Por/Data alterada não são incluídos, pois são atualizados com cada item de trabalho salvo e não estão relacionados a transições de estado.

As regras e comportamentos padrão que regem esses campos incluem:

  1. O estado Fechado está sempre contido na categoria Estado Concluído .
  2. A categoria Estado concluído não é configurável e está associada a um único Estado.
  3. Este estado Fechado é sempre Fechado para processos Ágeis e CMMI, e sempre Feito para processos Scrum e Básicos.
  4. A geração automática dessas regras é afetada pela localidade, pois a condição da regra contém o nome do Estado, que está localizado. O sistema gera regras diferentes para diferentes localidades.
  5. As regras geradas automaticamente para esses campos são especificadas apenas para tipos de item de trabalho que incluem esses campos. É possível que um tipo de item de trabalho não inclua um ou mais desses campos.
  6. Essas regras são necessárias quando um tipo de item de trabalho tem estados personalizados ou o tipo de item de trabalho é um tipo de item de trabalho personalizado.
  7. Estas regras só se aplicam a processos herdados; eles nunca são gerados para os processos XML hospedado ou XML local.

Os estados do fluxo de trabalho são associados a categorias de estado para dar suporte ao fluxo de trabalho em quadros Kanban. Para saber mais, consulte Como os estados do fluxo de trabalho e as categorias de estado são usados em Listas de pendências e painéis.

Regras do campo Data de Alteração de Estado

Essas regras são tecnicamente muito mais simples do que as regras de Data Fechada Por/Data Fechada porque não dependem de nenhum estado em particular. Para qualquer tipo de item de trabalho, as mesmas regras sempre funcionarão. Eles precisam ser gerados automaticamente porque alguns tipos de item de trabalho OOB não contêm o campo Data de Alteração de Estado, portanto, quando o usuário adiciona esse campo a um tipo de item de trabalho personalizado, essas regras também precisam ser geradas automaticamente. Os mesmos princípios para as regras de Data de Encerramento/Data de Encerramento também se aplicam aqui.

Regras personalizadas

Todas as regras personalizadas são opcionais. Para um processo herdado, você especifica uma regra que consiste em uma condição mais ação. Para um processo XML local, especifique regras para um campo ou dentro do fluxo de trabalho.

Não há um mapeamento um-para-um entre os dois processos. Em alguns casos, a regra do elemento XML é definida na caixa de diálogo Editar campo para o processo herdado e não como regra. Outros elementos XML, como FROZEN, MATCH, NOTSAMEAS, não são suportados no processo herdado.

Tenha em atenção o seguinte:

  • As regras são sempre aplicadas, não apenas quando você está interagindo com o formulário, mas também quando faz interface por meio de outras ferramentas. Por exemplo, definir um campo como somente leitura não só aplica a regra no formulário de item de trabalho, mas também por meio da API e do Suplemento de Servidor de DevOps do Azure do Excel.
  • As entradas de processo herdadas especificam condições e ações para criar uma regra completa. Os elementos XML não fazem essas distinções.
  • As regras de campo não suportam a atribuição de valores que são a soma de dois outros campos ou a realização de outros cálculos matemáticos. No entanto, você pode encontrar uma solução que atenda às suas necessidades por meio da extensão TFS Aggregator (Web Service) Marketplace. Consulte também Rollup de trabalho e outros campos.
  • Você pode encontrar soluções adicionais para aplicar regras personalizadas a campos usando extensões do Marketplace, como a extensão de biblioteca de controle de formulário de item de trabalho.

Composição da regra

Para um processo herdado, cada regra consiste em duas partes: Condições e Ações. As condições definem as circunstâncias que devem ser preenchidas para que a regra seja aplicada. As ações definem as operações a serem executadas. Para a maioria das regras, você pode especificar um máximo de duas condições e 10 ações por regra. Todas as regras personalizadas exigem que todas as condições sejam atendidas para serem executadas.

Como exemplo, você pode tornar um campo obrigatório com base no valor atribuído ao estado e a outro campo. Por exemplo:

   (Condition) When a work item State isActivo
   (Condition) And when the value ofÁrea = de Valor de Negócio
   (Action) Then make requiredPontos da história

Nota

Atualmente, apenas uma condição é suportada para regras de transição de estado. Se estiver a aplicar regras com base no Estado, consulte Aplicar regras a estados de fluxo de trabalho.

A tabela a seguir resume as Ações disponíveis com as Condições selecionadas.

Condition

Ações apoiadas

Definir valor de campo ou tornar obrigatório ou somente leitura

Condições, o item de trabalho é criado

Ações, item de trabalho é criado

Restringir uma transição com base no Estado

Condição, o item de trabalho é movido

Ações, restringir uma transação com base no Estado.

Ocultar campo ou tornar o campo somente leitura ou obrigatório com base no estado e na associação de usuário ou grupo

Condição, associação ao grupo de usuários

Ações, restringir uma transação com base no Estado e associação.

Com base na associação de usuário ou grupo, defina o atributo de campo ou restrinja uma transição de Estado

Condição, associação ao grupo de usuários

Ações, restringir uma transação com base no Estado e associação.

O que acontece se forem definidas demasiadas regras

Uma única expressão SQL é definida por projeto para validar itens de trabalho sempre que eles são criados ou atualizados. Essa expressão cresce com o número de regras especificadas para todos os tipos de item de trabalho definidos para o projeto. Cada qualificador comportamental especificado para um campo resulta em um aumento no número de subexpressões. Regras aninhadas, regras que se aplicam apenas em uma transição ou condicionadas ao valor de algum outro campo, fazem com que mais condições sejam adicionadas a uma IF instrução. Quando a expressão atinge um determinado tamanho ou complexidade, o SQL não pode mais avaliá-la e gera um erro. Remover alguns WITs ou eliminar algumas regras, pode resolver o erro.

Pode especificar valores para uma lista de opções (menu pendente), definir valores predefinidos, limpar entradas ou restringir alterações. Com as regras condicionais, pode aplicar regras a um campo com base em dependências entre os valores de campos diferentes. Também pode restringir quem pode modificar um campo ou definir o âmbito de uma regra para aplicar apenas a um grupo.

As regras de item de trabalho não existem como uma única coleção. Na verdade, as regras são geradas dinamicamente e mescladas a partir de diferentes fontes de dados. A lógica de mesclagem é simples, consolida regras idênticas, mas não corta regras conflitantes.

Regras de desvio

Em geral, todos os itens de trabalho são validados pelo mecanismo de regras quando os usuários modificam o item de trabalho. No entanto, para dar suporte a determinados cenários, os usuários atribuídos à permissão Ignorar regras em atualizações de item de trabalho no nível do projeto podem salvar itens de trabalho sem que as regras sejam avaliadas.

As regras podem ser contornadas de duas formas. A primeira é através do Work Items - update REST API e definindo o bypassRules parâmetro como true. A segunda é através do modelo de objeto do cliente, inicializando no modo bypassrules (inicializar WorkItemStore com WorkItemStoreFlags.BypassRules).

Campos do sistema e regras personalizadas

Os campos Sistema têm Sistema.Nomes de referência de nome , por exemplo , System.Title e System.State.

Os seguintes campos do sistema são necessários para ter um valor: ID da área, Data alterada, Data de criação, Criado por, Estado e Motivo.

O mecanismo de regras restringe a definição de condições ou ações aos campos do sistema, exceto da seguinte forma:

  • Você pode tornar os campos Estado e Razão somente leitura.
  • Você pode aplicar a maioria das regras aos campos Título, Atribuído a, Descrição e Alterado por .

Se você não vir um campo listado no menu suspenso da interface do usuário da regra para o processo de herança, é por isso. Por exemplo, se você tentar tornar o Caminho da Área (System.AreaPath) somente leitura com base em uma condição, o campo Caminho da Área não estará disponível para seleção. Mesmo que você consiga especificar um campo do sistema, o mecanismo de regras pode impedir que você salve a regra.

Regras padrão e de cópia

As regras padrão e de cópia modificam os valores dos campos de item de trabalho. Eles definem o comportamento e as restrições em tempo de execução, como especificar valores padrão, limpar campos, exigir que os campos sejam definidos e muito mais.

Você pode restringir a aplicação dessas regras com base na associação de grupo do usuário atual, conforme descrito em Restrições de regra de associação de usuário ou grupo.

A maioria dessas ações de regra pode ser aplicada com a seleção de qualquer condição.

Ação do processo herdado

Descrição

Copy the value from...

Especifica outro campo que contém um valor a ser copiado para o campo atual.

Clear the value of...

Limpa o campo de qualquer valor que ele contenha.

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

Define a hora de um campo com base na configuração de hora do usuário atual.

Regras de restrição

As regras de restrição restringem a alteração do valor de um campo. Eles definem os estados válidos para um item de trabalho. Cada restrição opera em um único campo. As restrições são avaliadas no servidor ao salvar o item de trabalho e, se alguma restrição for violada, a operação de salvamento será rejeitada.

Você pode restringir a aplicação dessas regras com base na associação de grupo do usuário atual, conforme descrito em Restrições de regra de associação de usuário ou grupo.

A maioria dessas ações de regra pode ser aplicada com a seleção de qualquer condição.

Ação do processo herdado

Descrição

Hide the field...
Disponível apenas quando uma condição de associação ao grupo é selecionada.

Especifica para não mostrar o campo no formulário de item de trabalho, essencialmente removendo a capacidade do usuário atual de alterar o valor do campo.

Make read-only

Impede que um campo seja modificado. Poderá querer aplicar esta regra sob determinadas condições. Por exemplo, depois que um item de trabalho é fechado, você deseja tornar um campo somente leitura para preservar os dados para fins de relatório.
Para especificar que o campo padrão é somente leitura, especifique na caixa de diálogo Editar campo, guia Opções .

Make required

Requer que um usuário especifique um valor para o campo. Os usuários não podem salvar um item de trabalho até que tenham atribuído valores a todos os campos obrigatórios.
Para especificar o campo padrão é necessário, especifique na caixa de diálogo Editar campo, guia Opções .

Listas de seleção

As listas de opções definem os valores que um usuário pode ou não escolher para um campo String ou Integer. Os valores definidos em uma lista de opções aparecem em um formulário de item de trabalho e no editor de consultas.

Para um processo herdado, as listas de opções são definidas através da caixa de diálogo Editar campo.

Caixa de diálogo Editar campo

Descrição

Guia Definição para um campo de lista de opções

Define uma lista de valores permitidos para o campo. Os valores permitidos são valores que estão disponíveis para seleção em uma lista de campos em formulários de item de trabalho e no construtor de consultas. Você deve selecionar um desses valores.

Marque a caixa de seleção Permitir que os usuários insiram seus próprios valores na guia Opções para permitir que os usuários especifiquem suas próprias entradas

Define uma lista de valores sugeridos para o campo. Os valores sugeridos são valores que estão disponíveis para seleção em uma lista de campos em formulários de item de trabalho e no construtor de consultas. Você pode inserir outros valores adicionalmente aos da lista.

Valores ou alterações de campos condicionais

As regras condicionais especificam uma ação com base no valor de um campo igual ou não igual a um valor específico, ou se uma alteração foi ou não feita no valor de um campo específico. Em geral, as regras condicionais são aplicadas primeiro sobre as regras incondicionais. Quando várias regras condicionais são avaliadas como true, a ordem de execução é: When, WhenNot, WhenChanged, WhenNotChanged.

Você pode especificar várias regras condicionais por campo. No entanto, você só pode especificar um único campo de condução por regra condicional.

Condição hereditária

Descrição

The value of ... (equals) [Quando]

Especifica uma ou mais regras a serem aplicadas ao campo atual quando outro campo tiver um valor específico.

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

Aplica uma ou mais regras ao campo atual quando o valor de um campo específico é alterado.

The value of ... (not equals) [QuandoNão]

Aplica uma ou mais regras ao campo atual quando outro campo não tem um valor específico.

No change was made to the value of ... [QuandoNãoAlterado]

Aplica uma ou mais regras ao campo atual quando o valor de um campo específico não é alterado.


Ação hereditária

Descrição

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 a ação a ser executada em um campo específico.

Restrições de regras de associação de usuários ou grupos

Você pode restringir a aplicação de uma regra com base na associação do usuário atual. Recomendamos que você defina o escopo da regra para um grupo de segurança do Azure DevOps e não para um único usuário, embora possa especificar o último. Para ter a regra definida como escopo para vários grupos, você deve criar um grupo pai do Azure DevOps que inclua o conjunto de grupos que você deseja usar.

Implementação de processos

Gorjeta

Para evitar problemas de avaliação de regras que possam surgir, especifique os grupos de segurança do Azure DevOps e não os grupos de segurança do Microsoft Entra ID ou do Ative Directory. Para saber mais, consulte Regras padrão e o mecanismo de regras.

Conforme indicado na tabela a seguir, para restringir uma regra com base na associação do usuário atual, especifique uma das duas condições para um processo herdado. Essas regras estão ativas para o Azure DevOps 2020 e versões posteriores.

Aplica-se a

Regra

Condição

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

Ação

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

Usar tokens para fazer referência a usuários ou grupos

Os campos de identidade ou seletor de pessoas podem aceitar valores que fazem referência a usuários e grupos. Ao restringir uma regra a um grupo, você indica o domínio ou o escopo do grupo. Para alguns valores, você pode usar tokens.

Exemplos de tokens incluem o seguinte:

  • [ProjectName], como [Fabrikam], [FabrikamFiber], [MyProject]
  • [OrganizationName], como [fabrikam], [myorganization]
  • [CollectionName], como [fabrikam], [myorganization]

Para saber mais sobre os escopos disponíveis para seu projeto ou organização, vá para a página Grupos de Permissões>de Configurações>do Projeto ou Grupos de Permissões>de Configurações>da Organização, você pode filtrar a lista conforme necessário. Por exemplo, a imagem a seguir mostra as quatro primeiras entradas em uma lista filtrada com base no Azure DevOps. Para saber mais, consulte Alterar permissões no nível do projeto ou Alterar permissões no nível da coleção do projeto.

Captura de ecrã da lista de grupos de Permissões filtrada.

Para saber mais sobre grupos de segurança padrão, consulte Permissões e grupos

Avaliação de regras

As regras que especificam uma condição com base na associação de usuário ou grupo do usuário que modifica um item de trabalho são avaliadas de duas maneiras. Quando a regra é avaliada, o aplicativo precisa determinar se a regra se aplica ao usuário atual, verificando se esse usuário é ou não membro do grupo especificado.

  • Ao modificar o item de trabalho do portal da Web, API REST ou comando azure boards , uma solicitação para o ID do Microsoft Entra ou Ative Directory é feita. Não ocorrem problemas para esta operação.
  • Ao modificar o item de trabalho do Visual Studio, Excel ou outra ferramenta personalizada usando o Modelo de Objeto do Cliente WIT, a solicitação para avaliar a associação é baseada em um cache de cliente. O cache do cliente não está ciente dos grupos do Ative Directory.

Nota

O Visual Studio 2019 Team Explorer para projetos que usam GIT foi reescrito para usar APIs REST.

Para evitar problemas com usuários atualizando itens de trabalho de vários clientes, especifique grupos de segurança do Azure DevOps em vez de grupos do Ative Directory. Você pode criar facilmente um grupo de segurança do Azure DevOps para corresponder a um grupo do Ative Directory. Para saber como, consulte Adicionar ou remover usuários ou grupos, gerenciar grupos de segurança.

Nota

O OM do cliente WIT foi preterido. A partir de 1º de janeiro de 2020, ele não terá mais suporte ao trabalhar com os Serviços de DevOps do Azure e o Azure DevOps Server 2020.

Ordem de avaliação das regras

As regras são normalmente processadas na sequência em que são listadas. No entanto, a sequência completa para avaliação de todas as regras não é totalmente determinista.

Esta seção descreve o comportamento e as interações esperados quando você aplica regras condicionais, de cópia e padrão.

As etapas a seguir mostram, na sequência correta, as interações que o Azure DevOps executa e pelo usuário de um formulário de item de trabalho. Somente as etapas 1, 8 e 13 são executadas pelo usuário.

  1. A partir de um cliente de DevOps do Azure, como o portal da Web ou o Visual Studio Team Explorer, um usuário cria um novo item de trabalho ou edita um item de trabalho existente.

  2. Preencha os padrões de campo. Para todos os campos, aplique quaisquer padrões atribuídos ao campo que não façam parte de uma cláusula condicional.

  3. Copie ou defina valores de campo. Para todos os campos, aplique quaisquer regras para copiar um valor ou definir o valor de um campo que não faça parte de uma cláusula condicional.

  4. Para todos os campos com uma regra condicional When que corresponda, aplique regras para definir ou copiar um valor de campo.

  5. Para todos os campos com uma regra condicional Quando Não corresponder, aplique regras para definir ou copiar um valor de campo.

    O sistema sempre processa Quando regras antes de Quando não regras.

  6. Para todos os campos que tiveram seus valores alterados desde a etapa 1 e que contêm regras Quando Alterado , aplique regras para definir ou copiar um valor de campo.

  7. Permitir que o usuário comece a editar.

  8. O usuário altera um valor de campo e, em seguida, move o foco do campo.

  9. Processe quaisquer regras When para esse campo que correspondam ao novo valor.

  10. Processe qualquer regra Quando Não para esse campo que corresponda ao novo valor.

  11. Processe quaisquer regras Quando Alterado para esse campo que correspondam ao novo valor.

  12. Retornar a capacidade de edição para o usuário.

  13. O usuário salva as alterações no armazenamento de dados.

  14. Para todos os campos, aplique todas as Use the current time to set the value of ... ações definidas para o campo direta ou indiretamente sob uma regra condicional.