Alterar o fluxo de trabalho para um tipo de item de trabalho
Azure DevOps Server 2022 - Azure DevOps Server 2019
Você pode alterar o fluxo de trabalho para um tipo de item de trabalho (WIT) para dar suporte aos processos de negócios e de equipe. Os WITs suportam o 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, consulte Sobre processos e modelos de processo.
Workflow para Product Backlog Item (modelo de processo Scrum)
Nota
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 compilação, consulte Introdução ao CI/CD.
Atualizar a definição XML para um tipo de item de trabalho
Se você é novo na personalização WIT, observe o seguinte:
- Para personalizar qualquer aspeto de um tipo de item de trabalho, você deve atualizar sua definição XML. A definição XML é descrita em Todos os elementos XML WITD referência
- 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 à referência do elemento Layout XML
- Siga a sequência de etapas descrita em Personalizar o formulário da 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 do fluxo de trabalho para metaestados.
Esta segunda etapa é necessária quando você altera o fluxo de trabalho para um WIT que aparece em uma página de ferramenta 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 WIT especifica os estados válidos, transições, motivos para as transições e 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 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 Razão 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 para o campo Estado .Se você adicionar um estado a um tipo de item de trabalho que aparece nas páginas da lista de pendências ou do quadro no portal da Web, também deverá mapear o estado para uma categoria de estado. Para obter mais informações, consulte Estados e categorias de estado do fluxo de trabalho.
Use o
TRANSITION
elemento para definir uma transição para cada progressão válida e regressão 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 é atribuído automaticamente ao estado inicial.
Quando um membro da equipe altera o estado de um item de trabalho, essa alteração dispara 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 quiser 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 atribuídos a estados e motivos não diferenciam maiúsculas de minúsculas.
Os menus suspensos para os campos Estado e Razão no formulário de item de trabalho ou no editor de consultas exibem os
WORKFLOW
valores atribuídos na 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 do 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>
Determinar 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 que são definidos para acompanhar o progresso de um recurso e os usuários válidos que devem executar as ações indicadas:
Estado | Utilizador válido | Action to perform |
---|---|---|
Proposto | Gestor de projeto | Qualquer pessoa pode criar um item de trabalho de recurso. No entanto, apenas 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. |
Ativos | Líder de desenvolvimento | O líder de desenvolvimento supervisiona o desenvolvimento do recurso. Quando o recurso é concluído, o lead de desenvolvimento altera o status do item de trabalho do recurso para Revisão. |
Rever | Gestor de projeto | O gerente de projeto analisa o recurso que a equipe implementou e altera o status do item de trabalho para Fechado se a implementação for satisfatória. |
Fechadas | Gestor de projeto | Nenhuma ação adicional deve ocorrer em itens de trabalho que estão fechados. Esses itens permanecem no banco de dados para fins de arquivamento e relatórios. |
Nota
Todos os estados aparecem em ordem alfabética na lista no formulário para um item de trabalho de um tipo específico, independentemente da sequência em que você os especificar.
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 determinado tipo de um determinado estado 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 | |
Ativos | Revisão (progressão) | Critérios de aceitação cumpridos |
Rever | Fechado (progressão) | Funcionalidade completa |
Ativo (regressão) | Não cumpre os requisitos | |
Fechadas | Proposta (regressão) | Reconsiderar 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>
Especificar 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: Corrigido (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.
Nota
Todos os motivos aparecem em ordem alfabética na lista no 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 dos itens de trabalho de um tipo específico quando os eventos ocorrem em outro lugar no Microsoft Visual Studio Application Lifecycle Management ou fora do Visual Studio Application Lifecycle Management (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 campos sempre que ocorrerem os seguintes eventos:
Atribua uma regra de campo em
STATE
quando você deseja que a regra se aplique a todas as transições e motivos para entrar nesse estado.Atribua uma regra de campo em
TRANSITION
quando você deseja que a regra se aplique a essa transição e todos os motivos para fazer essa transição.Atribua uma regra de campo sob
DEFAULTREASON
ouREASON
quando quiser que as regras se apliquem apenas por esse motivo específico.Se um campo deve conter sempre o mesmo valor, você define a regra sob o
FIELD
elemento que define esse campo. Para obter mais informações sobre o uso de regras, consulte Avaliação de regras e 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 para o MSF Agile Software Development.
Alterar o valor de um campo quando o estado é 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 um 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 Fechada e Fechado Por são automaticamente definidos como nulos e tornados 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 muda 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 e categorias de estado do fluxo de trabalho
- Personalize a sua 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 oferecer suporte aos usuários para visualizar o fluxo de trabalho instalando a extensão State Model Visualization do Visual Studio Marketplace.