Exemplos de Código de Gancho de Bloqueio de Registro Pessimista

É possível utilizar 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;
}

Ação Desbloquear Script de Registro para RECORD_SCRIPT_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 privileged users, e.g. Security Administrator
        #    check session for the chosen privilege
        # 3) many other possibilities
        #
        # if ( user-should-be-allowed-to-unlock-the-record ) {
            # $do_unlock = 1;
        # }
    }
    if ($do_unlock) {
        $entity->UnlockRecord();
    }
    else {
        $result = "You are not allowed to unlock this record.";
    }
    }
    return $result;
}

Feedback