Dominando los dominios


Hace unos dias me consultaron sobre algunas funcionalidades que se le pueden agregar a los dominios en GeneXus. Tiene mucho potencial, pues poder expresar que un atributo es del mismo tipo que otro, permite deducir muchas cosas sobre el.

Algunas de las mejoras sugeridas por mi:

1) Que creen en la base de datos. Es bueno tener dominios definidos en la base de datos, porque permite que los DBA y otros que usan la base de datos y no tienen Genexus puedan saber que un determinado atributo es de un tipo determinado. En nuestro caso, muchas veces los clientes utilizan herramientas de auditoria, generadores de reportes o herramientas de BI y Data Warehouse y tener los dominios ayudaria. 

2) Que tengamos una operacion de unificar 2 dominios. Si tengo Booleano y DM_booleano, que estan definidos en muchos atributos, no es facil unificarlos con las herramientas actuales. Es fundamental para cuando estamos juntando dos KB desarrolladas por empresas diferentes.

3) Agregar un control de tipos mas estricto. Me gustaría poder marcar un dominio como de control estricto y que a partir de ahi, ademas de controlar el tipo de datos, se controle que el las asignacion, comparacion y pasaje de parametros sea realizado por elementos del mismo tipo. 
Sería algo parecido a las validaciones que se hacen para los dominios enumerados, pero extendiendolas para cualquier otro dominio. 

Ej:
Trn1 con parm(&Mode,&Clave ) donde &clave es DM_Claves C(3)

Si lo llamo

Trn1.Call(&Modo, &clave) estaria ok
Trn1.Call(&clave, &Modo) daria error/warning, porque el dominio de &Clave <> &Modo, aunque ambas fueran C(3)

Un nivel mayor de control seria con las asignaciones

&Clave=&Prod

Estaria bien si &Prod es de dominio Dm_claves y mal si fuera de otro dominio.

El tercer nivel de control seria en las comparaciones, si pongo

for each
   where &Clave=&Prod
endfor

donde deberia darse un warning/error si dicha comparacion no es realizada por elementos del mismo dominio. 

Se les ocurre alguna mas?

UPDATE: Estaría bueno tener un REPOSITORIO DE DOMINIOS donde uno pueda bajarse y consolidar todos los dominios de un determinado tipo de aplicacion de forma de poder definir mis datos basados en dichos dominios.  Por ejemplo podrían haber dominios para un modulo de stock que tenga productos, depositos, movimientos, etc. Otro de tablas geograficos que tenga paises, departamentos, ciudades, continentes, etc. Personas, contactos, empresas..... 
Creo que puede ayudar mucho a acelerar el desarrollo de aplicaciones y tambien facilitar la integracion futura. 


Comentarios

  1. 4) Si tengo una variable basada en algún dominio enumerador (por ejemplo Boolean {true, false}), que se pueda poner
    &variable = true
    en vez de tener que escribir
    &variable = Boolean.true

    ResponderBorrar
  2. Enrique mira esto ,http://www.oreillymaker.com/link/22047/learning-genexus-x/

    Si tuvieramos un libro de Oreilly que ANIMAL seria el que mejor descrebiria a Genexus????

    ResponderBorrar
  3. Anonimo:
    A mi me gusta el de la rana.

    Es un vicho que me cae simpatico, no es el mas lindo, pero es agil y se adapta a muchas situaciones diferentes.

    ResponderBorrar
  4. 5) Poder definir cual es el valor Empty de un dominio. Por ejemplo el dominio Booleano, que puede valer 'S' o 'N', si hago &var.SetEmpty() le asigna el string vacío. Me gustaría que le asignara 'N'. Lo mismo si la variable no se inicializa, debería quedar con el Empty...

    ResponderBorrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.