Exemplos de Código de Interceptação de Consulta de Registro Pessimista

Você pode usar esses scripts de amostra para ajudá-lo a ativar e gerenciar o bloqueio de registro pessimista.

Script de Bloqueio de Registro para Interceptação da Ação BASE Action_Initialization

sub Defect_Initialization {
    my($actionname, $actiontype) = @_;
    # $actionname as string scalar
    # $actiontype as long scalar
    # action is LockRecord
    # record type name is Defect
    # Do any setup for the action here.
	$entity->LockRecord(0);
}

Script de Bloqueio de Registro para a Ação RECORD_SCRIPT_ALIAS

sub Defect_LockRecord {
    my($result);
    my($param) = @_;
    # record type name is Defect
		$entity->LockRecord(0);
    return $result;
}

Script de Desbloqueio de Registro para a Ação RECORD_ALIAS

sub Defect_Unlock {
    my($result);
    my($param) = @_;
    # record type name is Defect

		$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
        
           $do_unlock = 1;
        }
    
        if ($do_unlock) {
           $entity->UnlockRecord();
        }

        else {
           $result = "You are not allowed to unlock this record.";
        }
   }
    return $result;
}

Feedback