Eventos en webpanels y transacciones GeneXus.

 


Este post es parte de una serie de artículos sobre como hacer KB mas mantenibles y actualizables a nuevas versiones de GeneXus.

Los objetos que tiene interfaz de usuario, soportan eventos en su programación. Dichos eventos son necesarios para permitir al usuario hacer acciones sobre los datos. Los eventos pueden dispararse por diferentes motivos como ser apretar un botón, cambiar algún valor, salir de un control, paginar, cargar una grilla, etc. 

Una practica que recomiendo fuertemente para hacer la KB mas fácil de mantener y sobre todo mas migrable a nuevas versiones, es la de solo incluir en el código de los eventos, aquellas cosas que interactúan con los elementos de las pantalla, y todo lo demás, resolverlo con otros objetos (procedures, data providers, etc). 

Cosas que SI deben hacer los eventos:

  • Mostrar mensajes al usuario
  • Ocultar/Mostrar controles (botones, grillas, tablas)
  • Actualizar datos en pantalla, dependiendo de lo ingresado por el usuario
  • Cambiar texto de controles (captions) 
  • Mover controles
  • Cambiar colores
  • Agrandar/achicar textos
  • Interactuar con User Controls
  • Call a procedures / Usar Data Providers
Cosas que NO deben hacer los eventos (**)
  • for each sobre tablas (aunque sea para cargar controles, tipo dynamic combobox)
  • Lógica de negocio
  • Usar SDT que no sean mostrados en pantalla 
  • Usar código nativo (CSharp, Java) 
  • Usar External Objects
  • Commits/Rollback
Usando estas reglas, se obtiene codigo que es mas fácil de mantener y tambien de modularizar. 
Cuando llega el momento de migrar a versiones mas nuevas, tambien es mucho mas fácil realizar el cambio de webpanel a panels o usarlos para Smart Devices o lo que se venga en el futuro. 

Alguien puede decir, que programando de esta forma, se van a tener mas objetos en la KB y es totalmente cierto. Se tienen mas objeto, mucho mas chicos y mas focalizados en una tarea especifica, lo cual hace mas facil luego su mantenimiento 

Haciéndolo corta:
En los eventos de WBP o TRN, solo interactuar con la UI y todo lo demas, resolverlo en procedures y data providers. 

No es difícil hacer una herramienta que haga estos chequeos, para facilitarle la vida a los desarrolladores futuros. 

(**) Los resultados pueden variar. Results may vary. 
Puede haber casos en que es indispensable usarlos, use con moderación. 

Comentarios

Entradas más populares de este blog

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

Aplicación monolítica o distribuida?

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