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

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;
}

Retour d'informations