Bloquear atividade fluxo de trabalho
A atividade de bloqueio impede que outras instâncias deste fluxo de trabalho continuem após esta atividade até que o bloqueio seja liberado.
Várias instâncias do mesmo fluxo de trabalho podem ser executadas simultaneamente. Por exemplo, se um fluxo de trabalho for acionado quando um registro for adicionado a uma tabela específica. Esse fluxo de trabalho será acionado várias vezes se vários registros forem adicionados um após o outro, uma vez para cada inserção de registro. Você pode usar a atividade de bloqueio para garantir que esta instância do fluxo de trabalho tenha concluído uma ou mais atividades antes que qualquer outra instância do fluxo de trabalho possa prosseguir.
Um fluxo de trabalho pode liberar explicitamente um bloqueio com a atividade de desbloqueio. O bloqueio também pode ser liberado quando a duração máxima é atingida.
Quando uma instância do fluxo de trabalho atinge a atividade de bloqueio, ela tenta obter um bloqueio usando a chave especificada na atividade de bloqueio. Se outra instância já obteve o bloqueio e ainda não o liberou, essa tentativa de bloqueio falhará. A instância continua tentando obter o bloqueio até que o máximo de tentativas seja atingido.
Recomendamos colocar uma atividade de temporizador de um segundo antes da atividade de bloqueio. Isso ajuda a evitar uma condição rara em que a atividade de bloqueio pode não ser capaz de distinguir uma instância de fluxo de trabalho de outra. Esta condição pode ocorrer porque a entidade que possui o bloqueio não é a instância de fluxo de trabalho específica, mas sim o thread de execução de código no qual essa instância está sendo executada. Na maioria dos casos, cada instância de fluxo de trabalho é executada em um thread diferente. Adicionar uma atividade de temporizador garante que este seja o caso.
- Atividades de aprovação
- Atividades da tarefa
- Atividades do temporizador
- Atividade condicional Aguardar
- Atividade Aguardar Evento de WF
- Atividades do MID Server, como um script do PowerShell
Resultados
| Resultado | Descrição |
|---|---|
| Êxito | A atividade obteve um bloqueio com sucesso. Esta instância do fluxo de trabalho pode prosseguir além deste ponto, mas outras instâncias não podem prosseguir até que o bloqueio seja liberado. |
| Falha | Depois de tentar obter os tempos máximos de tentativas de bloqueio, a atividade não pôde obter o bloqueio. |
Variáveis de entrada
As variáveis de entrada determinam o comportamento inicial da atividade.
| Campo | Descrição |
|---|---|
| Chave | Uma chave mutex exclusiva A atividade de desbloqueio usa esta chave para liberar o bloqueio. |
| Duração | |
| Duração máxima | O tempo máximo em que o bloqueio persiste. O bloqueio é liberado após atingir essa duração. Liberar um bloqueio desta forma é equivalente a executar a atividade de desbloqueio. |
| Tentativas de bloqueio Especifique como a atividade se comportará se a tentativa de bloqueio for negada. Se a tentativa de bloqueio final falhar, o estado da atividade será definido como 'tempo limite' e o resultado da atividade será definido como 'falha'. |
|
| Máximo de tentativas | Especifique o número máximo de vezes que a atividade pode tentar obter o bloqueio. |
| Atraso entre tentativas | A quantidade de tempo necessária após uma tentativa de bloqueio com falha antes que outra tentativa de bloqueio seja permitida. |
Estados
O estado da atividade informa ao mecanismo de fluxo de trabalho o que fazer com a atividade.
| Estado | Descrição |
|---|---|
| Aguardando | O mecanismo de fluxo de trabalho está aguardando para obter um bloqueio. |
| Terminado | A atividade obteve o bloqueio com sucesso. |
| Tempo limite | A atividade não pôde obter um bloqueio dentro do número de tentativas especificado pela variável de entrada Máximo de tentativas. |