quinta-feira, 1 de setembro de 2011

Dominios turbinados


Tem coisas que de tão boas e simples acabamos ignorando, essa, por exemplo, já tem certa idade e nem por isso deixa de ser útil, como o Fusca. Agora com ares de clássico, continua dando conta do recado.  Não se preocupe, não vou te oferecer nenhum!


Dominio é um recurso no Genexus de longa data, e aos poucos foi evoluindo, e hoje podemos dizer que se encontra turbinado.

Segue a seguir algumas coisas interessantes, que talvez, você esteja perdendo.

Listas Enumeradas

Dominio permite criar listas enumeradas, e por meio dessas eliminar constantes da programação.  Uma aplicação simples seria definir um dominio Sexo do tipo Char(1) e em seguida definir os dois tipos de sexos (não estamos falando aqui de preferência mas de natureza).
Esse mecanismo permite programar condições que envolvam o dominio, eliminando-se do código valores que não expressam corretamente a informação. Por exemplo:
if ClienteSexo = Sexo.Feminino
    &homem +=1
else
    &mulher+=1
endif
Validações
Essa vale à pena, pois não se trata apenas de uma organização da programação, mas a execução de uma expressão regular que avalia uma determinada informação do tipo do dominio, resultando em caso de falha em uma mensagem.  

Em outras palavras, Genexus executa a expressão automaticamente quando uma informação é digitada pelo usuário, e em caso de falha, apresenta uma mensagem de retorno.

Por exemplo, um dominio Email do tipo Caracter(60) por exemplo, poderia possuir uma validação com expressão regular que trataria de conferir a informação.

Essa expressão é famosa e tem por significado avaliar se um determinado email está no formato correto, ou seja, algumacoisa@servidor.com,...
\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

Pré-carga

Uma determinada variável de certo tipo dominio poderá ter um valor previamente carregado caso se programe um Initial Value.  Até ai tudo bem, mas veja que uma Procedure pode ser chamada para carregar esse valor.

Dessa forma ao se criar a variável, essa terá o valor previamente calculado pelo procedimento, simplificando o código gerado visto que não será necessário programar no Source ou Event a chamada.

Agora só nos resta passear de Fusca por ai, veja que esse ai acima é 'turbinado'.