UnlockRecord

Description

Releases the lock on the record. Only the user that owns the lock, or a user with superuser privilege, or a user that a schema designer authorizes, can remove a lock. Throws an exception to indicate either the record is locked by another user, another session, or the record was updated.

Record locks are automatically released when the action is committed or reverted. You can use a RECORD_SCRIPT_ALIAS hook to manually remove a lock that has been abandoned.

To enable manual record unlocking, for each record type:
  • Create a new Record Script named Unlock.
  • Add a new action named Unlock of type RECORD_SCRIPT_ALIAS.
  • Set the action Record Script to the Unlock script.
Remarque : Cette méthode est disponible dans la version 7.1.

Syntaxe

VBScript

entity.UnlockRecord  

Perl

$entity->UnlockRecord(); 
Identificateur
Description
entity
Objet Entity représentant un enregistrement de données utilisateur. Si vous omettez cette partie de la syntaxe au sein d'un point d'ancrage, l'objet Entity correspondant à l'enregistrement de données en cours est faux (VBScript uniquement).
Valeur de retour
Aucune.

Exemples

VBScript

Function Defect_Unlock(param)
  ' param As Variant
  ' le nom tu type d'enregistrement est Defect
    REM add your hook code here
    Dim result
    Dim session
    Dim locked_by
    ' Récupérez la session
    set session = GetSession
    locked_by = GetLockOwner
    if (locked_by <> "") then
        Dim do_unlock
        do_unlock = session.IsUserSuperUser
        if (NOT do_unlock) then
            ' Si l'utilisateur actuel met en attente le verrouillage, demandez le déverrouillage.
            Dim username
            username = session.GetUserLoginName
            if (username = locked_by) then
                do_unlock = true
            end if
        end if
        if (NOT do_unlock) then
            ' Options supplémentaires visant à "autoriser" le déverrouillage :
            '
            ' 1) autorisez-le si l'utilisateur est un membre d'un groupe "unlock"
            '    récupérez les groupes de l'utilisateur, vérifiez s'il est membre
            '
            ' 2) autorisez certains utilisateurs privilégiés, par exemple l'administrateur de la sécurité
            '    contrôlez la session en matière de privilège sélectionné
            '
            ' 3) de nombreuses autres possibilités
        end if
        if (do_unlock) then
            UnlockRecord
        else
            result = "Vous n'êtes pas autorisé à déverrouiller cet enregistrement."
        end if
    end if
End Function

Perl

sub Defect_Unlock {
    my($result);
    my($param) = @_;
    # le nom du type d'enregistrement est Défaut
    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) {
            # Si l'utilisateur en cours détient le verrou, laissez-le retirer ce verrou.
            my $username = $session->GetUserLoginName();
            if ($username =~ /^$locked_by$/i) {
                $do_unlock = 1;
            }
        }
        if (! $do_unlock) {
            # Options complémentaires d'"autorisation" du déverrouillage :
            #
            # 1) donner l'autorisation à la condition que l'utilisateur soit membre d'un groupe "déverrouillage"
            #    obtenir les groupes de l'utilisateur et vérifier si ce sont des groupes "déverrouillage"
            #
            # 2) allow for some privileged users, e.g. Security Administrator
            #    vérifier dans la session le privilège choisi par l'utilisateur
            #
            # 3) bien d'autres possibilités
        }
        if ($do_unlock) {
            $entity->UnlockRecord();
        }
        else {
            $result = "Vous n'êtes pas autorisé à déverrouiller cet enregistrement.";
        }
    }
    return $result;
}

Commentaires