Ejemplos de código de enganche para bloqueo pesimista de registros

Puede utilizar estos ejemplos de script para habilitar y gestionar el bloqueo pesimista de registros.

Script de bloqueo de registros para la acción BASE y enganche Action_Initialization

sub Defect_Initialization {
    my($actionname, $actiontype) = @_;
    # $actionname as string scalar
    # $actiontype as long scalar
    # la acción es LockRecord
    # el nombre de tipo de registro es Defect
    # Ponga aquí cualquier preparación para la acción
	$entity->LockRecord(0);
}

Script de bloqueo de registros para la acción RECORD_SCRIPT_ALIAS

sub Defect_LockRecord {
    my($result);
    my($param) = @_;
    # el nombre de tipo de registro es Defect
		$entity->LockRecord(0);
    return $result;
}

Script de desbloqueo de registros para la acción RECORD_ALIAS

sub Defect_Unlock {
    my($result);
    my($param) = @_;
    # el nombre de tipo de registro es Defect

		$result = "";

     my $locked_by = $entity->GetLockOwner();

if ($locked_by ne "") {
    my $do_unlock = $session->IsUserSuperUser();

    if (! $do_unlock) {

        # Si el usuario actual mantiene el bloqueo, que lo desbloquee.

        my $username = $session->GetUserLoginName();

        if ($username =~ /^$locked_by$/i) {
           $do_unlock = 1;
        }

        if (! $do_unlock) {
           # Opciones adicionales para "autorizar" el desbloqueo:        
           # 1) permitirlo si el usuario es miembro de un grupo "desbloquear"
           #    obtener los grupos del usuario, comprobar si es miembro
           #
           # 2) permitirlo para algunos usuarios con privilegios, p. ej. Administrador de seguridad
           #    comprobar si la sesión tiene el privilegio escogido
           #
           # 3) muchas otras posibilidades
        
           $do_unlock = 1;
        }
    
        if ($do_unlock) {
           $entity->UnlockRecord();
        }

        else {
           $result = "No tiene autorización para desbloquear este registro.";
        }
   }
    return $result;
}

Comentarios