Aplicação de Otimizações

Objetivo

Permitir a verificação se o usuário pertence a algum perfil do programa para posterior aplicação da otimização efetuada.

Visão Geral

Ao utilizar um Usuário Administrador, é possível habilitar e desabilitar o otimizador de telas da sessão do usuário corrente, a partir disso são realizadas, também, várias verificações para que seja possível aplicar as otimizações geradas.

Descrição

Como desabilitar a sessão do Otimizador

Por intermédio da permissão do Usuário Administrador, é possível habilitar e desabilitar o otimizador de telas da sessão do usuário corrente, utilizando-se da tecla F12. Ao acionar F12, é solicitada a confirmação para habilitar/desabilitar a sessão. Após a confirmação, é solicitada a senha do usuário administrador. Com esse processo, não é efetuada nenhuma otimização para a sessão corrente, podendo ser reativada a qualquer momento.

Verificação da Sessão

Na aplicação de Otimizações, inicialmente é verificado se a sessão do usuário está habilitada. Em caso negativo, nenhuma aplicação de perfil é efetuada para a sessão corrente.

Verificação do produto habilitado

Quando o produto estiver desabilitado nos Parâmetros Gerais do Produto, nenhuma otimização é aplicada em todas as sessões do Datasul-EMS.

Verificação do Usuário Corrente

Quanto ao usuário, é verificado se o mesmo é o usuário administrador (por intermédio dos Parâmetros Gerais do Otimizador de Telas). Caso seja o usuário administrador do produto, são desconsiderados os perfis aplicados para grupos e é aplicado o perfil padrão do programa (definido por intermédio da Função Gerenciador de Perfis (SO0705). Quando um programa não possuir um perfil padrão, ele é executado em seu estado original.

Verificação do Perfil Utilizado

Quando o usuário corrente não for o usuário administrador do produto, é verificado a que grupos o usuário pertence. Para cada um dos grupos é verificado para o produto/programa o primeiro perfil (ordem alfabética) existente para o grupo, até encontrar um perfil válido para o grupo. Caso não seja encontrado, o programa é executado em seu estado original. Existem ainda alguns casos peculiares, que ficam sob a responsabilidade do Administrador do Produto:

Importante:

O Screen Optimizer possui regras internas para definição do perfil a ser utilizado, conforme descrito a seguir:

O Screen Optimizer faz uma busca por grupos em ordem alfabética e em seguida por perfis do Grupo também em ordem alfabética. O perfil padrão não influencia nesta escolha, pois só serve como referência para determinar qual perfil será utilizado quando o usuário administrador do SOP acessar o programa.

Exemplo:

Perfil A(PA) -> Grupos GA

Perfil B(PB) -> * (Todos os Grupos)

Perfil C(PC) -> Grupos GA e GB

O usuário A (UA) está no grupo GA e GB.

O usuário B (UB) está no grupo GB.

O usuário C (UC) está no grupo GC.

Nesse caso acima, teremos as seguintes aplicações:

Usuário A (UA) -> Perfil A (PA)

Usuário B (UB) -> Perfil C (PC)

Usuário C (UC) -> Perfil B (PB)

Para o usuário C (UC), como nenhum dos grupos ao qual pertence está relacionado com perfis, é adotado o perfil que tiver todos os grupos (*). Caso não haja nenhum perfil com todos os grupos marcados, então o usuário não estará fazendo uso de nenhum perfil.

Atualização do título da Tela

Para saber se um perfil foi aplicado em ambiente de aplicação, é possível verificar pelo título da tela. Quando um perfil é aplicado, o título é modificado da seguinte forma: SOP - <código do perfil> - <título original>.

Inicialização do Programa

Na inicialização do programa, depois de definido o perfil, são aplicadas as propriedades de tela (cores, posicionamento, redimensionamento), ocorre o acerto da tabulação dos objetos, o reposicionamento das colunas do browse e os atributos são escondidos, quando uma dessas ações for necessária.

Adição de Registro

Quando o programa otimizado permitir a adição de registros, na ocorrência desse evento as propriedades de inicialização de valores e de desabilitar objetos são aplicadas.

Sincronismo entre a tabela do cadastro e a tabela de extensão para os objetos dinâmicos relacionados aos atributos de extensão

A APPC fica responsável por fazer o sincronismo entre a tabela de extensão, do banco repositório ou de uma Ligação, com as tabelas do Datasul-EMS. O sincronismo corresponde à criação de registros (quando for criado um registro no Datasul-EMS, é criado um registro  na tabela de extensão do banco repositório ou especifico, permitindo a ligação entre as informações), modificação do registro (quando for modificado um registro e não houver um correspondente na tabela de extensão, o mesmo é criado automaticamente, quando necessário) e eliminação de registros.

Além disso, nos eventos de visualização, os atributos dinâmicos são atualizados para consulta conforme relacionamento da ligação ou do atributo SOR.

Verificação da lista de Valores possíveis de um objeto

A lista de valores possíveis de um objeto é executada nas seguintes condições:

  • Eventos de validação e antes da gravação: são os eventos disparados na confirmação de inclusão ou modificação de um registro. Nesse caso, a lista de valores é executada após a validação normal do programa.
  • Eventos de eliminação: são os eventos disparados na confirmação da eliminação de um registro. Nesse caso, a lista de valores é executada após a verificação normal do programa.

    Importante:

    Devido à estrutura interna, a lista de valores não é executada nos eventos de eliminação para EMS5.

  • Botão validador: quando um botão validador é disparado (ou clicado), é disparada a execução da lista de valores. Caso a validação ocorra com sucesso, o código padrão do botão é disparado após a validação. Caso contrário, a execução do código do botão é cancelada (para que o usuário informe os valores corretamente).

Tratamento da propriedade Condição para botões

A propriedade condição para um botão é executada quando a propriedade desabilitado ou escondido possui o valor condição. Dessa forma, em eventos pré-determinados, é efetuada a verificação conforme as regras informada pelo usuário se o botão deve ficar desabilitado/escondido. Essa verificação é efetuada nos seguintes eventos:

  • Inicialização do programa.
  • Visualização (ocorre na navegação de registros, após a execução do Vá Para, após executação do zoom).
  • Adição de registros.
  • Troca de páginas em cadastros complexos ou relatórios.
  • Habilitação/desabilitação dos campos da tela.
  • Confirmação de gravação e cancelamento de um registro.
  • Abertura de query de um browse.
  • Alteração de um valor de um browse.

Importante:

Algumas limitações no ambiente de aplicação:

Lógica de Negócio pode interferir no Ambiente de Aplicação

Em alguns casos, existem lógicas de negócio que podem interferir indiretamente na aplicação da otimização. Nesses casos, não é possível a utilização de todos os recursos do Screen Optimizer.

Propriedades “Horizontal” e “Botão Flat” não funcionam para o Datasul-EMS 5:

As propriedades citadas acima não funcionam para programas do Datasul-EMS 5. Ambos devem ser efetuados em um evento anterior à inicialização do programa e os programas do Datasul-EMS 5 não possuem tal evento.

Versão de Programas do Datasul-EMS:

Não existe nenhum controle da parte do Otimizador de Telas referente à atualização de pacotes de novas versões de programas que foram otimizados, necessitando verificar os perfis dos mesmos.

Help de campo do Datasul-EMS 5 fica desabilitado

Após a otimização de telas do Datasul-EMS 5, alguns objetos podem perder a referência ao help de campo, utilizado no Datasul-EMS 5.

Eliminação de registros na tabela de extensão

O sincronismo da eliminação de registros na tabela de extensão não é garantido totalmente pelo ambiente de aplicação. Existem vários fatores que podem não acarretar a eliminação do registro. Entre eles, por exemplo, o fato de um usuário utilizar um perfil com objetos dinâmicos relacionados a atributos de extensão e outro usuário utilizar o programa original. Quando o usuário elimina um registro utilizando o programa original (sem otimizações), o mesmo não executará a APPC para efetuar essa eliminação. Para isso, existe a possibilidade de eliminar essas inconsistências, por intermédio da Função Sincronizador do Banco Repositório (SO0707).

Testes de Otimização

É extremamente importante que o usuário administrador teste cada perfil novo criado ou alterado antes de liberá-lo para uso corporativo. Dessa forma, existe a garantia de que as funcionalidades implementadas no perfil estejam corretas conforme necessidade implementada do usuário administrador. Para testar um perfil corretamente em ambiente de otimização, é necessário executar o programa obrigatoriamente com um usuário diferente do Usuário Administrador e que possua acesso ao novo perfil criado.  Quando o usuário administrador executa os programas, não são aplicados os seguintes conjuntos de propriedades:

  • Invisível: todos os objetos da tela sempre aparecerão visíveis para edição no ambiente de desenvolvimento
  • Condição: não é aplicada condição para botões
  • Validação: não é aplicado o conceito de botão validador

Sincronia de objetos dinâmicos

Quando se cria um objeto dinâmico com atributo de extensão para caixas de seleção, rádios, e caixas de checagem, é importante que se observe, que, quando não houver um registro relacionado no banco repositório ou na ligação, o valor do objeto fica exatamente igual (os dados não são atualizados, e ficam iguais ao do último registro exibido). Isso acontece porque, diferente de campos e editores, estes campos não podem assumir o valor “?” (indefinido), portanto, eles acabam dessincronizados. Para evitar este tipo de problema, deve se utilizar sempre a propriedade valor inicial para estes objetos, e em todos os lugares que os mesmos são utilizados. Se não houver um registro relacionado, o valor inicial do objeto é assumido, evitando assim que o objeto fique com o mesmo valor do registro anterior.

Cuidados em relação à propriedade Ordem Tab

Quando for utilizada essa propriedade, deve-se levar em consideração os seguintes fatores para o melhor funcionamento da mesma:

  • Quando se quer reordenar um objeto da tela, é recomendável  numerar todos os objetos que estejam na mesma Frame (na mesma página, por exemplo), colocando a numeração seqüencial de todos os objetos para que o Otimizador de telas possa aplicar em toda a Frame corretamente a ordem de tabulação desejada.
  • Também é recomendável que sejam utilizados números maiores dos que os já existentes nos objetos quando for alterada a propriedade Ordem Tab. Por exemplo, o objeto “X” tem ordem tab 1, objeto “Y” tem ordem tab 2 e o objeto “Z” tem ordem tab 3. Para inverter a tabulação, seria necessário, utilizar valores maiores que os atuais em todos os objetos. Então o objeto “Z” ficaria com ordem tab “1001” o objeto “Y” com ordem tab “1002” e o objeto “X” com ordem tab 1003. Assim, na tabulação, o objeto “Z” seria o primeiro, “Y” o segundo e “X” o terceiro.
#trackbackRdf ($trackbackUtils.getContentIdentifier($page) $page.title $trackbackUtils.getPingUrl($page))