Un modelo de bloqueo explícito (pesimista) previene la pérdida inesperada de actualizaciones de datos y controla el flujo de trabajo cuando se producen actualizaciones simultáneas por parte de más de un usuario.
El modelo de bloqueo optimista permite a varios usuarios ver e intentar modificar un registro al mismo tiempo, pero no permite que ningún usuario excepto el primero confirme los cambios. No se informa a los usuarios de que otros están intentando también actualizar el registro.
Los cambios del registro se validan cuando se confirma el registro. Si un usuario ha actualizado satisfactoriamente el registro, se informa a las otras actualizaciones simultáneas de que se producirá un conflicto cuando los otros usuarios intenten someter las actualizaciones simultáneas.
De forma predeterminada, los registros no se bloquean cuando se muestran en una aplicación cliente de ClearQuest. Como consecuencia, cualquier diseño de esquema que utilice un solo sitio o un entorno duplicado debería tener esto en cuenta.
La integridad de datos se asegurar al comprobar, cuando un usuario pulsa el botón Aplicar, si otro usuario ha actualizado el registro y confirmado sus cambios mientras continúa el proceso de realizar los cambios. En tal caso, no pueden confirmarse las actualizaciones del usuario en la base de datos, ya que esto podría causar la pérdida de algunos de los cambios del otro usuario. El usuario que intenta confirmar sus cambios después de que otro usuario haya actualizado el registro recibe un mensaje de error indicando que sus cambios no se han confirmado en la base de datos.
En los escenarios complicados que implican actualizaciones coordinadas en varios registros relacionados, es preciso tener cuidado para asegurar que este comportamiento no cause problemas. Ya que el bloqueo optimista está vigente en cada uno de los registros por separado, la aplicación debe asegurar que los registros se actualicen en el orden correcto y manejen las anomalías al actualizar un registro subordinado si otro usuario lo ha actualizado entre el principio de la acción y la confirmación de los cambios. El diseño de esquema puede volver a intentar la operación, o reconocer la anomalía y revertir la actualización del registro padre, o confirmar la actualización del registro padre aunque haya fallado la actualización del registro subordinado.
El bloqueo pesimista proporciona un mecanismo para impedir situaciones en las que varios usuarios editen simultáneamente un registro. El modelo de bloqueo pesimista obliga a la modificación secuencial de los registros e impide las actualizaciones simultáneas de los registros. Cuando un usuario empieza a actualizar un registro, este modelo coloca un bloqueo en el registro. A los demás usuarios que intenten empezar a actualizar este registro se les informa de que está bloqueado porque otro usuario tiene una actualización en proceso y no pueden modificarlo. Los usuarios que deseen actualizar simultáneamente el registro deben esperar hasta que el primer usuario haya terminado de confirmar el registro, tras lo cual se otorga el bloqueo al otro usuario y puede realizar cambios después de los cambios del usuario anterior. Al prevenirlos, este modelo evita que se tengan que resolver conflictos. Las actualizaciones están serializadas y cada una de las actualizaciones siguiente empieza con el registro ya actualizado con los cambios del usuario anterior.
Para utilizar el bloqueo pesimista de registros, debe añadirse un código de enganche a los tipos de registro que deseen utilizarlo. El código de enganche debe añadirse como una nueva acción de tipo BASE para cada tipo de registro. Puede eliminar manualmente los bloqueos con el código de enganche que se implementa como un alias de script de registro. Utilice una consulta de ClearQuest para buscar los registros bloqueados; para ello, busque aquellos registros que tengan el campo locked_by igual a valores no nulos. La columna de base de datos de usuario locked_by es una columna de entero que registra el ID de inicio de sesión del usuario cuando se bloquea un registro.
El bloqueo pesimista es un modelo útil cuando no se necesitan actualizaciones simultáneas verdaderas y las siguientes actualizaciones pueden esperar hasta que se haya completado una actualización anterior. Esto suele implicar que las actualizaciones se produzcan en un intervalo de tiempo muy breve. Las actualizaciones que mantienen el bloqueo largos periodos de tiempo impiden actualizar el registro a los otros usuarios.