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

Puede utilizar estos ejemplos 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