Identificador de Regra

GER-000CONCX01

Módulo: GER - Gerais.

Finalidade: Implementado o identificador de regras GER - 000CONCX01 que será executado antes do consumo de uma conexão de usuário ao executar uma tela do sistema. Sua finalidade é disponibilizar um ponto de controle para permitir avaliar se deve ser feita a abertura ou não de uma determinada tela de um determinado processo, controlando assim o acesso a tais telas e o consumo de conexões por processos por determinado usuários. Tal controle não invalida ou substitui o controle do sistema, que continua operando após o retorno da regra, a não ser que esta diga que não deve ser aberta determinada tela e então não consumirá uma conexão. O limite de conexões, caso seja este o intuito da regra, é sempre o do sistema, ou a menor, este pondendo ser definido pela regra.

O identificador recebe uma variável com a sigla do processo que está sendo consumido no momento, ou seja, o processo relacionado à tela que está sendo aberta. Exemplo: FRCR, RVPE) e retorna uma variável indicando se é permitido ou não continuar com o processo (abrir ou não a tela), e opcionalmente retornar uma variável para retornar uma mensagem ao usuário indicando o motivo da não abertura da tela caso esteja sinalizado para não continuar o processo.

Características: Quando o usuário já estiver em uma conexão flutuante ou abrir a tela de um processo que este usuário já estiver consumindo uma conexão no mesmo executável, a regra não será disparada.
Algumas telas (como as de cadastros) não consomem conexões. Estas rotinas também não passam pelo identificador.

A regra possui um controle na execução da regra que visa a capturar qualquer forma de geração de erro (geralog, Mensagem(ERRO)). Caso alguma dessas formas de cancelamento de execução ou erro ocorrer na regra, o sistema irá capturar e exibir ao usuário, concatenar com uma mensagem específica do sistema, indicando o uso do identificador. A tela que seria aberta não será aberta também, não dando continuidade ao processo.

Também será inibida a execução da função de regra AbrirTelaSistema para que não seja aberta outra tela por dentro dessa regra, o que pode causar recursividade na chamada do identificador, já que vai chamar o mesmo para abrir outra tela. Outra situação com o uso dessa função é para inibir a abertura de uma tela diferente da que o usuário solicitou, o que pode gerar dúvidas ou confusão.

Tais medidas são necessárias para evitar confusão do uso do controle via regra contra o controle normal do sistema para o controle de processos, identificar de forma clara que a lógica do sistema está sendo em parte substituída por uma lógica personalizada por regra de usuário.

Transação: Não se aplica.

Regra:

Definir Alfa GerASigPro;
Definir Alfa GerAAbrTel;
Definir Alfa GerAMotCan;
Definir Alfa xSql;
Definir Alfa xStr;

GerAAbrTel = "S";
ConverteParaMaiusculo(GerASigPro);

Se ((CodUsu = 1015)
AbrirTelaSistema('F120GPD_RVPE', "1;1;1", xNum);

Se ((CodUsu = 1012) e (GerASigPro = "RVPE"))
inicio
xStr = "select count(*) as qtdcon from R911SEC, R911MOD where R911MOD.ModNam = :MODNAM and R911MOD.NumSec = R911MOD.NumSec and appusr = :APPUSR";
SQL_Criar(xSQL);
SQL_DefinirComando(xSQL, xStr);
SQL_DefinirAlfa(xSQL, "MODNAM", "RVPE");
SQL_DefinirAlfa(xSQL, "APPUSR", NomUsu);
SQL_AbrirCursor(xSQL);
SQL_RetornarInteiro(xSQL, "QtdCon", xQtdCon);
SQL_FecharCursor(xSQL);
SQL_Destruir(xSQL);

Se (xQtdCon = 2)
inicio
GerAAbrTel = "N";
Concatena("O usuário ", NomUsu, " atingiu o limite de conexões do processo RVPE", GerAMotCan);
fim;
fim;

Variáveis Disponibilizadas:

Nome Tipo Observações Retorna Valor
GerASigPro ALFA Sigla do processo da tela que está sendo aberta N
GerAAbrTel ALFA Indicativo se deve ou não abrir a ela (S - Sim, N - Não) S
GerAMotCan ALFA Texto opcional a ser exibido ao usuário caso não se deva abrir a tela S

Atenção

Caso o parâmetro global LisVarReg esteja habilitado, a variável ListaVariaveis estará disponível em todos os identificadores de regras do sistema. O conteúdo desta variável lista os campos disponibilizados no identificador de regras em questão.

Não é aconselhada a ativação desse parâmetro global para o uso cotidiano. Esse recurso de listagem dos campos de identificadores auxilia a construção de regras e o Suporte para, por exemplo, depuração ou quando não houver acesso à documentação dos identificadores de regras.

Este artigo ajudou você?