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

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 un LockRecord
    # le nom du type d'enregistrement est Defect
    # 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 Defect
		$entity->LockRecord(0);
    return $result;
}

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

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

		$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 à certains utilisateurs dotés de privilèges, comme l'administrateur de sécurité
           #    vérifier dans la session le privilège choisi par l'utilisateur
           #
           # 3) bien d'autres possibilités
        
           $do_unlock = 1;
        }
    
        if ($do_unlock) {
           $entity->UnlockRecord();
        }

        else {
           $result = "Vous n'êtes pas autorisé à déverrouiller cet enregistrement.";
        }
   }
    return $result;
}

Retour d'informations