Problemas comunes en modularización de KB GeneXus

Soy promotor de la modularización de KB Genexus, pues ayuda en muchos aspectos mejorar  la salud de la KB y de la aplicación.

Al tener la KB modularizada, se puede entender mas rapido, y por lo tanto, se pueden hacer cambios mas agiles y con menos riesgos.

Algunos de los patrones de problemas comunes que aparecen en KB que he estado modularizando son:


Tengo un objeto que recorre una tabla privada de otro modulo y ejecuta código utilizando objetos del modulo B, por ejemplo actualizando o haciendo inserts.

En este caso, conviene sacar la logia del Object1 y crear un nuevo objeto en el ModuleB

De esta forma el ModuloB pasa a tener un nuevo servicio que puede ser usado por otros modulos y la tabla queda como privada.

Caso 2: Se intenta recorrer una tabla privada de otro modulo, y luego se ejecuta logica propia del modulo en el que estoy. 

Una posible solución es hacer un Data Provider que devuelva los datos de la tabla privada y utilizar los elementos del SDT en ven de los atributos. 


 Estos son dos caso bien sencillos de algunos de los problemas que aparecen al modularizar una KB. 

Al terminar el trabajo de modularizacion, tenemos tablas privadas y tenemos la tranquilidad que nadie desde fuera de nuestro modulo podra modificarlas o recorrerlas. 

Para facilitar la tarea de modularización, agregue un opción a KBDoctor que permite seleccionar un Modulo y arma una lista con todos los objetos del modulo, mas todos los objetos que referencian a algun objeto del modulo mas todos los objetos que usan tablas del modulo. De esa forma, es mucho mas rapido el proceso de modularizacion, pues nos evitamos muchos Rebuild all que hoy son necesarios pues GeneXus no se da cuenta cuando una objeto cambia de modulo o pasa de publico a privado. Lo voy a liberar en los próximos días. 

Comentarios

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.