Exemples de code de point d'ancrage pour le verrouillage pessimiste

Vous pouvez utiliser ces exemples de scripts pour vous aider à activer et gérer le verrouillage pessimiste d'enregistrements.

Point d'ancrage Action_Initialization du script de verrouillage d'enregistrement pour l'action BASE

sub Defect_Initialization {
    my($actionname, $actiontype) = @_;
    # $actionname a la forme d'un scalaire chaîne
    # $actiontype a la forme d'un scalaire long
    # l'action est Verrouiller l'enregistrement
    # le nom du type d'enregistrement est Défaut
    # C'est ici que se configure l'action.
	  $entity->LockRecord(0);
}

Script de verrouillage d'enregistrement pour l'action RECORD_SCRIPT_ALIAS

sub Defect_LockRecord {
    my($result);
    my($param) = @_;
    # le nom du type d'enregistrement est Défaut
	  $entity->LockRecord(0);
    return $result;
}

Script de déverrouillage d'enregistrement pour l'action RECORD_SCRIPT_ALIAS

Perl

sub Defect_Unlock {
    my($result);
    my($param) = @_;
    # le nom du type d'enregistrement est Défaut

    $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) donner l'autorisation à des utilisateurs privilégiés, comme l'administrateur de sécurité
        #    vérifier dans la session le privilège choisi par l'utilisateur
        # 3) bien d'autres possibilités
        #
        # if ( user-should-be-allowed-to-unlock-the-record ) {
            # $do_unlock = 1;
        # }
    }
    if ($do_unlock) {
        $entity->UnlockRecord();
    }
    else {
        $result = "Vous n'êtes pas autorisé à déverrouiller cet enregistrement.";
    }
    }
    return $result;
}

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
    ' 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

Feedback