UnlockRecord

Descrizione

Rilascia il blocco sul record. Solo l'utente che possiede il blocco o un utente con privilegi di super utente o un utente autorizzato dal designer di schemi, può rimuovere il blocco. Viene restituita un'eccezione per indicare se il record è bloccato da un altro utente, un'altra sessione o se il record è stato aggiornato.

I blocchi record sono rilasciati automaticamente quando viene eseguito il commit dell'azione o viene ripristinata. È possibile utilizzare un hook RECORD_SCRIPT_ALIAS per rimuovere manualmente un blocco che è stato tralasciato.

Per abilitare lo sblocco record manuale, per ogni tipo di record:
  • Creare un nuovo script di record denominato Unlock.
  • Aggiungere una nuova azione denominata Unlock di tipo RECORD_SCRIPT_ALIAS.
  • Impostare lo script di record di azione sullo script Unlock.
Nota: questo metodo è stato reso disponibile nella versione 7.1.

Sintassi

VBScript

entity.UnlockRecord  

Perl

$entity->UnlockRecord(); 
Identificativo
Descrizione
entity
Un oggetto Entity che rappresenta un record di dati dell'utente. All'interno di un hook, se si omette questa parte della sintassi, viene utilizzato l'oggetto Entity corrispondente al record di dati corrente (solo VBScript).
Valore di ritorno
Nessuno.

Esempi

VBScript

Function Defect_Unlock(param)
  ' param As Variant
  ' record type name is Defect
    REM add your hook code here
    Dim result
    Dim session
    Dim locked_by
    ' Get the session
    set session = GetSession
    locked_by = GetLockOwner
    if (locked_by <> "") then
        Dim do_unlock
        do_unlock = session.IsUserSuperUser
        if (NOT do_unlock) then
            ' If the current user holds the lock, let them unlock it.
            Dim username
            username = session.GetUserLoginName
            if (username = locked_by) then
                do_unlock = true
            end if
        end if
        if (NOT do_unlock) then
            ' Additional options to "authorize" unlocking:
            '
            ' 1) allow if user is a member of an "unlock" group
            '    get user's groups, check if member
            '
            ' 2) allow for some privileged users, e.g. Security Administrator
            '    check session for the chosen privilege
            '
            ' 3) many other possibilities
        end if
        if (do_unlock) then
            UnlockRecord
        else
            result = "You are not allowed to unlock this record."
        end if
    end if
End Function

Perl

sub Defect_Unlock {
    my($result);
    my($param) = @_;
    # record type name is Defect
    if (ref ($param) eq "CQEventObject") {
        # add your CQEventObject parameter handling code here
    } elsif (ref (\$param) eq "SCALAR") {
        # add your scalar parameter handling code here
        # The Web clients support scalar parameter type only,
        # so the hook code added in the above section, needs to be duplicated here
    } else {
        # add your handling code for other type parameters here, for example:
        # die("Unknown parameter type");
    }
    $result = "";
    my $locked_by = $entity->GetLockOwner();
    if ($locked_by ne "") {
        my $do_unlock = $session->IsUserSuperUser();
        if (! $do_unlock) {
            # If the current user holds the lock, let them unlock it.
            my $username = $session->GetUserLoginName();
            if ($username =~ /^$locked_by$/i) {
                $do_unlock = 1;
            }
        }
        if (! $do_unlock) {
            # Additional options to "authorize" unlocking:
            #
            # 1) allow if user is a member of an "unlock" group
            #    get user's groups, check if member
            #
            # 2) allow for some privileged users, e.g. Security Administrator
            #    check session for the chosen privilege
            #
            # 3) many other possibilities
        }
        if ($do_unlock) {
            $entity->UnlockRecord();
        }
        else {
            $result = "You are not allowed to unlock this record.";
        }
    }
    return $result;
}

Feedback