Varrendo para Localizar Registros Bloqueados
É recomendável varrer o banco de dados quanto aos registros bloqueados regularmente. Para
localizar registros bloqueados, crie e execute uma consulta que identifique os registros
e os usuários que mantêm cada bloqueio. Quando localizar os registros bloqueados, execute a ação apropriada para remover os bloqueios.
Desbloqueando Registros com um Recurso de Tempo Limite
Você
pode criar um script que permita identificar registros bloqueados e desbloqueá-los
automaticamente. Um script de tempo limite deve desempenhar estas tarefas:
- Colete o conjunto de tipos de registros definidos pelo esquema.
- Crie uma estrutura de dados que identifique todos os registros bloqueados para
cada tipo de registro. A estrutura deve incluir informações como o usuário que
mantém o bloqueio, a versão que está bloqueada e o momento no qual o bloqueio foi
observado. Essa
estrutura inicialmente permanece vazia.
- Crie uma consulta para localizar registros bloqueados no momento, selecionando
as colunas ID do registro, locked_by e lock_version.
- Compare o conjunto atual de registros bloqueados com aqueles já conhecidos e
registrados na estrutura de dados. Essa verificação deve incluir uma correspondência
quanto ao usuário do bloqueio e à versão do registro que foi bloqueado, a fim de
distinguir bloqueios pelo menos usuário, mas em uma nova versão do registro, ou por um
usuário diferente.
- Remova os bloqueios que foram mantidos durante mais de um intervalo escolhido,
carregando a entidade e chamando o método Desbloquear API.
- Atualize a estrutura de dados para incluir referências nos registros que são
constatados como recém-bloqueados e remova as referências aos registros que não estão mais
bloqueados.
O script deverá também registrar sua atividade ou notificar
os usuários ao remover um bloqueio que eles estão mantendo.
O script deverá
ser configurado para ser executado a intervalos regulares. O intervalo de tempo limite
escolhido e a freqüência com que o script executa uma varredura determinará o tempo
mínimo e máximo esperado para um bloqueio atingir o tempo limite. Os usuários deverão
conhecer esses valores, já que eles afetam:
- por quanto tempo um usuário pode trabalhar na edição de um registro antes de perder seu bloqueio.
- quanto tempo um usuário deve aguardar a liberação automática de um bloqueio abandonado.