Alterar o fluxo de trabalho de um tipo de item de trabalho
Azure DevOps Server 2022 – Azure DevOps Server 2019
Você pode alterar o fluxo de trabalho de um WIT (tipo de item de trabalho) para dar suporte aos seus processos de negócios e equipe. Os WITs oferecem suporte ao rastreamento de todos os tipos de trabalho (requisitos, tarefas, defeitos de código) para dar suporte ao desenvolvimento de software.
O fluxo de trabalho determina a progressão lógica e a regressão do trabalho que os membros da equipe executarão. Ele também especifica os valores que aparecem nos menus suspensos para os campos Estado e Motivo. Para obter mais informações, confira Sobre processos e modelos de processo.
Fluxo de trabalho para o item de lista de pendências do produto (modelo de processo Scrum)
Observação
Este artigo descreve como personalizar um estado de fluxo de trabalho. Se, em vez disso, você quiser alterar o Estado atribuído a um item de trabalho específico, consulte um dos seguintes artigos: Quadro, Acompanhar trabalho em andamento ou Quadro de tarefas, Atualizar status da tarefa. Você também pode executar uma atualização em massa do Estado para muitos itens de trabalho.
Para obter informações sobre fluxos de trabalho de pipeline de build, consulte Introdução à CI/CD.
Atualizar a definição XML para um tipo de item de trabalho
Se você não estiver familiarizado com a personalização do WIT, observe o seguinte:
- Para personalizar qualquer aspecto de um tipo de item de trabalho, você deve atualizar sua definição XML. A definição XML é descrita na referência de todos os elementos XML WITD
- Se você estiver personalizando o formulário da Web que usa a nova experiência de item de trabalho, convém fazer referência aos elementos WebLayout e Control
- Se você estiver personalizando um formulário de cliente para uso com o Visual Studio, convém fazer referência ao elemento XML de layout
- Siga a sequência de etapas descritas em Personalizar o formulário Web de acompanhamento de item de trabalho.
Para personalizar o fluxo de trabalho, siga estas duas etapas:
Modifique a
WORKFLOW
seção da definição de WIT conforme descrito neste tópico.Modifique a configuração do processo para mapear novos estados de fluxo de trabalho para metaestados.
Essa segunda etapa é necessária quando você altera o fluxo de trabalho de um WIT que aparece em uma página de ferramentas Agile. Esses WITs pertencem às categorias Requisito ou Tarefa. Para obter mais informações sobre categorias de estado, consulte Estados de fluxo de trabalho e categorias de estado.
Diretrizes de design de fluxo de trabalho
Você define o fluxo de trabalho identificando primeiro os estados e as transições válidas entre eles. A WORKFLOW
seção da definição de WIT especifica os estados válidos, as transições, os motivos para as transições e as ações opcionais que serão executadas quando um membro da equipe alterar o estado de um item de trabalho.
Em geral, você associa cada estado a uma função de membro da equipe e a uma tarefa que uma pessoa nessa função deve executar para processar o item de trabalho antes de alterar seu estado. As transições definem as progressões e regressões válidas entre os estados. Os motivos identificam por que um membro da equipe altera um item de trabalho de um estado para outro e as ações dão suporte à automação da transição de um item de trabalho em um ponto do fluxo de trabalho.
Por exemplo, o Estado é definido como Novo quando um testador abre um novo bug baseado no processo Agile padrão. O desenvolvedor altera o Estado para Ativo ao corrigir o bug e, uma vez corrigido, o desenvolvedor altera seu estado para Resolvido e define o valor do campo Motivo como Corrigido. Depois de verificar a correção, o testador altera o estado do bug para Fechado e o campo Motivo muda para Verificado. Se o testador determinasse que o desenvolvedor não havia corrigido o bug, o testador alteraria o estado do bug para Ativo e especificaria o Motivo como Não Corrigido ou Falha no Teste.
Ao projetar ou modificar um fluxo de trabalho, considere as seguintes diretrizes:
Use o elemento para definir um estado exclusivo para cada função de membro da
STATE
equipe que executará uma ação específica em um item de trabalho. Quanto mais estados você definir, mais transições você deve definir. Independentemente da sequência em que você define os estados, eles são listados em ordem alfanumérica no menu suspenso do campo Estado .Se você adicionar um estado a um tipo de item de trabalho que aparece nas páginas de lista de pendências ou de quadro no portal da Web, também deverá mapear o estado para uma categoria de estado. Para obter mais informações, examine Estados de fluxo de trabalho e categorias de estado.
Use o
TRANSITION
elemento para definir uma transição para cada progressão e regressão válidas de um estado para outro.No mínimo, você deve definir uma transição para cada estado e a transição do estado nulo para o estado inicial.
Você pode definir apenas uma transição de não atribuído (nulo) para o estado inicial. Quando você salva um novo item de trabalho, ele é automaticamente atribuído ao estado inicial.
Quando um membro da equipe altera o estado de um item de trabalho, essa alteração aciona a transição e as ações que você define para serem executadas para o estado selecionado e a transição. Os usuários podem especificar apenas os estados que são válidos com base nas transições que você define para o estado atual. Além disso, um
ACTION
elemento, que é um elemento filho deTRANSITION
, pode alterar o estado de um item de trabalho.Para cada transição, você define um motivo padrão usando o
DEFAULTREASON
elemento. Você pode definir quantos motivos opcionais desejar usando oREASON
elemento. Esses valores aparecem no menu suspenso do campo Motivo .Você pode especificar regras que serão aplicadas quando o item de trabalho mudar de estado, quando ele fizer a transição ou quando um usuário selecionar um motivo específico. Muitas dessas regras complementam as regras condicionais que você pode aplicar ao definir os campos na
FIELDS
seção sob aWORKITEMTYPE
definição. Para obter mais informações, consulte Atualizar campos durante uma alteração de fluxo de trabalho mais adiante neste tópico.Os nomes que você atribui a estados e motivos não diferenciam maiúsculas de minúsculas.
Os menus suspensos para os campos Estado e Motivo no formulário de item de trabalho ou no editor de consultas exibem os valores atribuídos na
WORKFLOW
seção do tipo de item de trabalho.
Diagrama de fluxo de trabalho e exemplo de código
O exemplo de código a seguir mostra a WORKFLOW
definição de WIT de bug para o modelo de processo Agile. Este exemplo define três estados e cinco transições. Os STATE
elementos especificam os estados Ativo, Resolvido e Fechado. Todas as combinações possíveis para transições de progressão e regressão são definidas para os três estados, exceto um. A transição de Fechado para Resolvido não está definida. Portanto, os membros da equipe não podem resolver um item de trabalho desse tipo se o item de trabalho estiver fechado.
Este exemplo não lista todos os elementos para DEFAULTREASON
, REASON
, ACTION
, e FIELD
.
Exemplo de diagrama de estado de fluxo de trabalho — Agile Bug WIT
<WORKFLOW>
<STATES>
<STATE value="Active">
<FIELDS> . . . </FIELDS>
</STATE>
<STATE value="Resolved">
<FIELDS> . . . </FIELDS>
</STATE>
<STATE value="Closed">
<FIELDS> . . . </FIELDS>
</STATE>
</STATES>
<TRANSITIONS>
<TRANSITION from="" to="Active">
<REASONS>
<REASON value="Build Failure" />
<DEFAULTREASON value="New" />
</REASONS>
<FIELDS> . . . </FIELDS>
</TRANSITION>
<TRANSITION from="Active" to="Resolved">
<ACTIONS> . . . </ACTIONS>
<REASONS> . . . </REASONS>
</TRANSITION>
<TRANSITION from="Resolved" to="Active">
<REASONS> . . . </REASONS>
</TRANSITION>
<TRANSITION from="Resolved" to="Closed">
<REASONS>
<DEFAULTREASON value="Verified" />
</REASONS>
<FIELDS> . . . </FIELDS>
</TRANSITION>
<TRANSITION from="Closed" to="Active">
<REASONS>
<REASON value="Reactivated" />
<DEFAULTREASON value="Regression" />
</REASONS>
<FIELDS> . . . </FIELDS>
</TRANSITION>
</TRANSITIONS>
</WORKFLOW>
Determine o número e os tipos de estados
Você determina o número e os tipos de estados válidos com base no número de estados lógicos distintos nos quais deseja que os itens de trabalho desse tipo existam. Além disso, se diferentes membros da equipe executarem ações diferentes, você poderá considerar a definição de um estado com base em uma função de membro. Cada estado corresponde a uma ação que um membro da equipe deve executar no item de trabalho para movê-lo para o próximo estado. Para cada estado, você deve definir as ações específicas e os membros da equipe que têm permissão para executar essas ações.
A tabela a seguir fornece um exemplo de quatro estados definidos para acompanhar o progresso de um recurso e os usuários válidos que devem executar as ações indicadas:
Estado | Usuário válido | Ação a ser executada |
---|---|---|
Proposto | Gerente de projeto | Qualquer pessoa pode criar um item de trabalho de recurso. No entanto, somente os gerentes de projeto podem aprovar ou reprovar o item de trabalho. Se um gerente de projeto aprovar um recurso, o gerente de projeto alterará o status do item de trabalho para Ativo; caso contrário, um membro da equipe o fecha. |
Ativa | Líder de desenvolvimento | O líder de desenvolvimento supervisiona o desenvolvimento do recurso. Quando o recurso é concluído, o líder de desenvolvimento altera o status do item de trabalho do recurso para Revisão. |
Revisão | Gerente de projeto | O gerente de projeto revisa o recurso que a equipe implementou e altera o status do item de trabalho para Fechado se a implementação for satisfatória. |
Fechado | Gerente de projeto | Nenhuma ação adicional deve ocorrer em itens de trabalho fechados. Esses itens permanecem no banco de dados para fins de arquivamento e relatório. |
Observação
Todos os estados aparecem em ordem alfabética na lista do formulário para um item de trabalho de um tipo específico, independentemente da sequência em que você os especifica.
Definir transições
Você controla os estados de e para os quais os membros da equipe podem alterar um item de trabalho se definir as progressões e regressões de estado válidas. Se você não definir uma transição de um estado para outro, os membros da equipe não poderão alterar um item de trabalho de um tipo específico de um estado específico para outro estado específico.
A tabela a seguir define as transições válidas para cada um dos quatro estados descritos anteriormente neste tópico, juntamente com o motivo padrão para cada um.
Estado | Transição para o estado | Motivo padrão |
---|---|---|
Proposto | Ativo (progressão) | Aprovado para desenvolvimento |
Fechado (progressão) | Não aprovado | |
Ativa | Revisão (progressão) | Critérios de aceitação atendidos |
Revisão | Fechado (progressão) | Recurso concluído |
Ativo (regressão) | Não atende aos requisitos | |
Fechado | Proposto (regressão) | Reconsidere para aprovação |
Ativo (regressão) | Fechado por engano |
Você pode restringir quem tem permissão para fazer uma transição de um estado para outro usando os atributos for e not do TRANSITION
elemento. Como mostra o exemplo a seguir, os testadores podem reabrir um bug, mas os desenvolvedores não.
<TRANSITION from="Closed" to="Active"
for="[Project]\Testers"
not="[Project]\Developers">
. . .
</TRANSITION>
Especifique os motivos
Quando um membro da equipe altera o campo Estado, esse usuário pode manter o motivo padrão para essa transição ou especificar um motivo diferente se você definir opções adicionais. Você deve usar o DEFAULTREASON
elemento para especificar um e apenas um motivo padrão. Você deve especificar motivos adicionais somente se eles ajudarem a equipe a rastrear ou relatar dados.
Por exemplo, um desenvolvedor pode especificar um dos seguintes motivos ao resolver um bug: Fixo (padrão), Adiado, Duplicado, Conforme projetado, Não é possível reproduzir ou Obsoleto. Cada motivo especifica uma ação específica para o testador executar em relação ao bug.
Observação
Todos os motivos aparecem em ordem alfabética na lista do formulário de trabalho para itens de trabalho de um tipo específico, independentemente da sequência na qual você especifica os REASON
elementos.
O exemplo a seguir mostra os elementos que definem os motivos pelos quais um membro da equipe pode resolver um bug:
<TRANSITION from="Active" to="Resolved">
. . .
<REASONS>
<DEFAULTREASON value="Fixed"/>
<REASON value="Deferred"/>
<REASON value="Duplicate"/>
<REASON value="As Designed"/>
<REASON value="Unable to Reproduce"/>
<REASON value="Obsolete"/>
</REASONS>
. . .
</TRANSITION>
Especificar ações
Em geral, os membros da equipe alteram o estado de um item de trabalho especificando um valor diferente para o campo Estado e, em seguida, salvando o item de trabalho. No entanto, você também pode definir um ACTION
elemento que altera automaticamente o estado de um item de trabalho quando essa transição ocorre. Como mostra o exemplo a seguir, você pode especificar que os itens de trabalho de bug devem ser resolvidos automaticamente se estiverem associados a arquivos que um desenvolvedor verifica no controle de versão:
<TRANSITION from="Active" to="Resolved">
<ACTIONS>
<ACTION value="Microsoft.VSTS.Actions.Checkin"/>
</ACTIONS>
. . .
</TRANSITION>
Você pode usar o ACTION
elemento para alterar automaticamente o estado de itens de trabalho de um tipo específico quando eventos ocorrem em outro lugar no Gerenciamento do Ciclo de Vida do Aplicativo do Microsoft Visual Studio ou fora do Gerenciamento do Ciclo de Vida do Aplicativo do Visual Studio (por exemplo, de uma ferramenta que rastreia chamadas). Para obter mais informações, consulte AÇÃO.
Atualizar um campo durante uma alteração de fluxo de trabalho
Você pode definir regras que atualizam os campos sempre que ocorrerem os seguintes eventos:
Atribua uma regra de campo em
STATE
quando você deseja que a regra seja aplicada a todas as transições e motivos para entrar nesse estado.Atribua uma regra de campo em
TRANSITION
quando você deseja que a regra seja aplicada a essa transição e todos os motivos para fazer essa transição.Atribua uma regra de campo em
DEFAULTREASON
ouREASON
quando quiser que as regras sejam aplicadas somente por esse motivo específico.Se um campo sempre deve conter o mesmo valor, você define a
FIELD
regra no elemento que define esse campo. Para obter mais informações sobre o uso de regras, consulte Regras e avaliação de regras.Você deve tentar minimizar o número de condições definidas para qualquer tipo de item de trabalho. Com cada regra condicional adicionada, você aumenta a complexidade do processo de validação que ocorre sempre que um membro da equipe salva um item de trabalho. Conjuntos de regras complexos podem aumentar o tempo necessário para salvar o item de trabalho.
Os exemplos a seguir mostram algumas das regras aplicadas aos campos do sistema no modelo de processo do MSF Agile Software Development.
Alterar o valor de um campo quando o estado for alterado
Quando o valor do campo Estado de um item de trabalho é definido como Ativo e o item de trabalho é salvo, os valores dos campos Ativado por e Atribuído a são automaticamente definidos como o nome do usuário atual. Esse usuário deve ser membro do grupo Usuários Válidos do Team Foundation Server. O valor do campo Data de ativação também é definido automaticamente. O exemplo a seguir mostra os elementos que impõem essa regra:
<STATE value="Active">
<FIELDS>
<FIELD refname="Microsoft.VSTS.Common.ActivatedBy">
<COPY from="currentuser"/>
<VALIDUSER/>
<REQUIRED/>
</FIELD>
<FIELD refname="Microsoft.VSTS.Common.ActivatedDate">
<SERVERDEFAULT from="clock"/></FIELD>
<FIELD refname="System.AssignedTo">
<DEFAULT from="currentuser"/>
</FIELD>
. . .
</FIELDS>
</STATE>
Limpar o valor de um campo quando o valor de outro campo for alterado
Quando o valor do campo Estado de um item de trabalho é definido como Ativo e o item de trabalho é salvo, os campos Data de Fechamento e Fechado por são automaticamente definidos como nulos e tornam-se somente leitura se você usar o elemento, como mostra o EMPTY
exemplo a seguir.
<STATE value="Active">
<FIELDS>
. . .
<FIELD refname="Microsoft.VSTS.Common.ClosedDate"><EMPTY/></FIELD>
<FIELD refname="Microsoft.VSTS.Common.ClosedBy"><EMPTY/></FIELD>
</FIELDS>
</STATE>
Definir um campo com base no conteúdo de outro campo
Quando o valor do campo Estado de um item de trabalho é alterado para Resolvido e o item de trabalho é salvo, o valor do campo Motivo Resolvido é definido como o valor especificado pelo usuário no campo Motivo. O exemplo a seguir mostra os elementos que impõem essa regra:
<STATE value="Resolved">
<FIELDS>
. . .
<FIELD refname="Microsoft.VSTS.Common.ResolvedReason">
<COPY from="field" field="System.Reason"/>
</FIELD>
</FIELDS>
</STATE>
Artigos relacionados
- Estados do fluxo de trabalho e categorias de estado
- Personalizar a experiência de acompanhamento de trabalho
- Consulta por atribuição, fluxo de trabalho ou alterações no quadro
- Criar o formulário de item de trabalho
- Importar, exportar e gerenciar tipos de item de trabalho
Suporte de ferramentas
Você pode dar suporte aos usuários para visualizar o fluxo de trabalho instalando a extensão de Visualização do Modelo de Estado do Visual Studio Marketplace.