Árvore de páginas

Dicas de Validação em Objetos

Visão Geral

A seguir são apresentados alguns exemplos de qual tipo de validação utilizar para determinado programa.

Deve-se verificar que existem várias possibilidades de validar campos com o Otimizador de Telas:

  • Utilizar uma lista de valores para um objeto em tela. Lembrando que a lista de valores é validada nas seguintes condições:
    • Botão Validador
    • Botões que disparam eventos de validação de EPC’s (Eventos de Validação, Gravação e/ou Eliminação)
  • Utilizar o valor condição para as propriedades escondido e desabilitado em botões. 
    Recomenda-se utilizar as seguintes combinações conforme tipo de tecnologia:
    • DDKGUI (Smarts): utilizar botões escondidos por condição
    • DDKGUI2000 (Thin): podem ser utilizados botões desabilitados por condição
    • EMS5 (DWB): podem ser utilizados botões desabilitadores por condição
  • Utilização de botões validadores, que devem ser utilizados em conjunto com listas de valores nos campos a serem validados (o botão validador gera um evento para que as listas de valores dos objetos sejam verificadas, definindo assim se a funcionalidade daquele botão deve, ou não, ser executada).

Regra de Negócio

O primeiro passo é definir qual a regra de negócio a ser aplicada. Para exemplificar, é tomada a seguinte regra:

  • Programa CD0114: Só é permitido incluir, modificar e excluir registros (Operação Padrão ou Ferramentas), se a descrição ao lado do campo “Operação Padrão” for igual a “teste”. Os botões “Narrativa” e “Exportação” também devem ter suas funcionalidades desabilitadas caso a descrição não seja igual a “teste”.
  • Programa CD0105: só é permitido incluir, modificar e excluir registros com os títulos de Natureza Devedora.
  • Programa CD0999: só é permitido gerar o relatório para o estabelecimento “1”.

Cadastro Pai x Filho (Tecnologia DDK GUI)

Em programas desse tipo, geralmente deve ser utilizada a seguinte aplicação:

  • Inclusão / Cópia (Registro Pai): nesse tipo de cadastro, a inclusão não pode ser tratada nessa tela, pois o valor informado pelo usuário ocorre apenas em outro programa (no programa de inclusão).
  • Modificação (Registro Pai): é possível tratar a validação de duas formas.
    • Validar no programa de modificação (nesse caso, seria validado apenas o valor após alteração efetuada pelo usuário, e não o valor que vai ser alterado).
    • Desabilitar/esconder botão “modifica” com condição (nesse caso, o usuário só iria acessar o programa de modificação conforme o resultado da condição).

      Importante:

      No primeiro caso, supondo que a descrição é igual a “222”, o usuário poderia executar o programa modificar e alterar para “teste”, pois a regra de negócio permite utilizar apenas “Teste”. No segundo caso, se a regra de negócio fosse aplicada no botão, o usuário não conseguiria alterar o registro “222”, mesmo que fosse para alterar para “teste”.

  • Eliminação (Registro Pai): é possível tratar a validação de duas formas:
    • Desabilitar/esconder botão “elimina” com condição (nesse caso, o usuário só iria eliminar o registro conforme o resultado da condição).
    • Utilizar Lista de Valores para o campo a ser validado - “Descrição (como o botão de eliminação dispara um evento de eliminação, a lista de valores será validada no momento da eliminação).
  • Botões Adicionais: caso o usuário queira restringir o acesso a uma funcionalidade disparada por botões adicionais (no exemplo abaixo, “Narrativa” e “Exportação”) conforme valores do registro de tela, o programa pode ser tratado de duas formas:
    • Desabilitar/esconder botão com condição (nesse caso, o usuário só iria acessar a funcionalidade disparada pelo botão conforme o resultado da condição).
    • Utilizar Lista de Valores para o campo a ser validado – “Descrição” - e utilizar a opção de botão Validador para os botões – Narrativa e Exportação.
  • Inclui / Modifica / Elimina (Filho) – Se as validações forem com base no registro Pai (Exemplo: não pode incluir / modificar / eliminar se a descrição for diferente de “teste”), pode ser utilizada a condição para os botões ficarem desabilitados/escondidos. Se as validações forem com base no registro Filho (validar contra um valor de uma coluna do browse, podem ser utilizadas as mesmas regras utilizadas para Registro Pai).

Nota:

Quando a condição tornar os botões invisíveis, obviamente estes não serão apresentados em tela.

Cadastro Pai x Filho – Inclui / Modifica Pai (Tecnologia DDK GUI)

Em programas desse tipo, geralmente deve ser utilizada apenas lista de valores. Ao utilizar lista de valores, o programa automaticamente dispara pelos botões OK e Salvar, eventos de Gravação e Validação. Não é necessário utilizar botões validadores e não devem ser utilizadas condições para desabilitar/esconder os botões de OK e Salvar.

Ao utilizar a lista de valores, ocorrem as seguintes validações:

  • Inclusão / Cópia: Ao incluir o registro (botões OK ou Salvar) será validado se a descrição possui o valor conforme regra de negócio definida.
  • Modificação: A operação de modificação do registro será validada, não permitindo que a descrição seja mudada para um valor diferente de “teste”.

Cadastro Simples – (Tecnologia DDK GUI)

Em programas desse tipo, geralmente deve ser utilizada a seguinte aplicação:

  • Inclusão / Cópia: Para esses casos é possível tratar apenas utilizando Lista de Valores para o campo a ser validado (como o botão de confirma dispara eventos de validação e gravação, a lista de valores será validada no momento da gravação do registro).
  • Modificação/Eliminaçãoé possível tratar a validação de duas formas.
    • Utilizar o mesmo mecanismo usado na inclusão/cópia.
    • Desabilitar/esconder os botões com condição (nesse caso, o usuário só iria acessar a função de modificação/eliminação conforme o resultado da condição).

      Importante:

      Para a modificação, é necessário determinar se a validação a ser feita deve ser depois ou antes da modificação. Conforme o caso, utilizar o primeiro mecanismo ou o segundo, respectivamente. 

  • Botões Adicionais: caso o usuário queira restringir o acesso a uma funcionalidade disparada por botões adicionais conforme valores do registro de tela, pode ser tratado de duas formas:
    • Desabilitar/esconder botão com condição (nesse caso, o usuário só iria acessar a funcionalidade disparada pelo botão conforme o resultado da condição).
    • Utilizar Lista de Valores para o campo a ser validado e utilizar a opção de botão Validador para os botões.

Como exemplo, em um programa que serão criadas validações que permitirão operações apenas com uma certa característica (Ex: RadioButton - objeto onde deve ser inserida a lista de valores).

Os processos de inclusão, cópia e exclusão podem ser validados com uma lista de valores, pois a confirmação de registro passa pelos eventos de validação e gravação.

Também é necessário utilizar a propriedade “invisível” com o valor “condição” no botão de modificação, pois, apesar de a validação ser feita na hora de confirmar a alteração, pode acontecer o caso de o usuário alterar a opção de 'RadioButton', trocando seu tipo para outra opção de 'RadioButton' existente e assim, passando na validação. No caso do Botão de modificação, a validação tem que ocorrer antes do momento onde os campos são habilitados para o usuário modificar as informações do registro, pois isso garantirá a integridade da regra.

No botão, deve ser especificada a condição que diz que ele será escondido se o valor do objeto ('RadioButton' selecionado) for diferente do número 1, por exemplo (o número 1 é o valor correspondente à uma das opções de RadioButton, esses valores podem ser consultados no zoom da propriedade “Lista Itens”).

Já na lista de valores do objeto, deve informar que o registro pode ser incluído, copiado, modificado e excluído se o valor dele for igual ao número 1.

Com a lista de valores e a condição no botão de modificação, o comportamento do programa é alterado de forma que, para o grupo de usuários do perfil criado, só seja permitido incluir,copiar, alterar e excluir contas conforme a escolhas realizada em uma das opções de RadioButton.

 Relatórios – (Tecnologia DDK GUI)

Em programas desse tipo, geralmente deve ser utilizada a seguinte aplicação:

  • Para os objetos que necessitam de validação, deve ser utilizado lista de valores.
  • Para o botão “Executar”, deve ser utilizado a opção de botão validador

Importante:

Para validar um programa de relatório, deve se levar em consideração que o mesmo não tem nenhum evento de gravação de registros (lista de valores), e nem de navegação de registros (condição).

Abaixo será exemplificado como validar um campo em um programa de relatório. O programa utilizado será o “cd0999 – Geração de Calendário Comercial” e a regra definida será que o usuário só poderá gerar o relatório com o estabelecimento “1”.

Para implementar a regra definida é necessário criar uma lista de valores para a faixa de relatório, ou seja, criando uma lista para o estabelecimento inicial, e outra para o estabelecimento final. Como não exista nenhum evento que execute uma lista de valores, e necessário um botão validador, que neste caso, será o botão executar.

A lista de valores dos campos da faixa de estabelecimento (final e inicial) deverá estabelecer que o valor dos campos deve ser igual a “1”. O botão “Executar” deverá ter a propriedade “Validação” com o valor “Sim”.

Assim, quando for acionado o botão Executar, ele verificará a lista de valores dos objetos na tela, fazendo assim, com que os estabelecimentos inicial e final sejam validados.

Existem muitas possibilidades de realizar validações em tela com o Otimizador de Telas, as validações podem se tornar ainda mais complexas e customizadas se forem utilizados programas de retorno externo nas validações. Deve-se verificar qual possibilidade de validação se adapta melhor a cada programa a ser otimizado.

Importante:

É recomendável que quando for necessária a utilização da propriedade “Desabilitado” ou “Invisível” com valor “Condição” para algum botão, utilize-se a propriedade “Invisível” quando o programa utilizar a tecnologia “DDK GUI”. Isto pode evitar alguns problemas de sincronização causados pela estrutura de alguns programas.