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_SCRIPT_ALIAS

Perl

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 usuarios con privilegios, p. ej. Administrador de seguridad
        #    comprobar si la sesión tiene el privilegio escogido
        # 3) muchas otras posibilidades
        #
        # if ( usuario-debe-poder-desbloquear-el-registro ) {
            # $do_unlock = 1;
        # }
    }
    if ($do_unlock) {
        $entity->UnlockRecord();
    }
    else {
        $result = "No tiene autorización para desbloquear este registro.";
    }
    }
    return $result;
}

VBScript

Function Defect_Unlock(param)
  ' param como Variant 
  ' el nombre de tipo de registro es Defect
    REM añada aquí su código de enganche
    Dim result
    Dim session
    Dim locked_by
    ' Obtenga la sesión
    set session = GetSession
    locked_by = GetLockOwner
    if (locked_by <> "") then
        Dim do_unlock
        do_unlock = session.IsUserSuperUser
        if (NOT do_unlock) then
            ' Si el usuario actual mantiene el bloqueo, que lo desbloquee.
            Dim username
            username = session.GetUserLoginName
            if (username = locked_by) then
                do_unlock = true
            end if        end if        if (NOT do_unlock) then
            ' 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
        end if        if (do_unlock) then
            UnlockRecord
        else
            result = "No tiene autorización para desbloquear este registro."
        end if    end ifEnd Function