KBDoctor: Novedades.

En los últimos días, he estado haciendo algunas opciones nuevas para el KBDoctor y algunos cambios a las existentes.

1) Objetos no alcanzables.
Para el calculo de los objetos alcanzables, empece a usar referencias mas estrictas (uso las  ReferenceType.Hard, en vez de tomarlas todas). Esto hacia que si una tabla era referenciada, todos los atributos de la misma quedaban como  alcanzables.

En la nueva versión, marca como no alcanzables algunos objetos mas que antes.

2) Transacciones Borrables. 
Hice un reporte que muestra las transacciones borrables y defino  transacciones borrables, como  aquellas que son no alcanzables y ademas todas las tablas que se generan a partir de ella, son no alcanzables.

Puedo eliminar todas las transacciones borrables, sin afectar mi sistema?
En realidad, no. Puede ser que tenga una transacción borrable, pero que al borrarla, se genere una reorganización, que altere la estructura de las tablas.

Pongamos el ejemplo de transacciones


Cabezal

CabezalId
CabezalFecha
(*RenglonId      //Tabla CabezalRenglones
   RenglonDsc
   RenglonCantidad
)


Renglones
*RenglonId
 RenglonDsc



La tabla de Renglones se dejo de usar en mi aplicación, perro no la de Cabezales

La transacciones de renglones es no alcanzables, y la tabla generada también es no alcanzable, pero al borrar la transacción, se va a generar una reorganización que agregue el campo RenglonDsc a la tabla
CabezalRenglones, que no es lo deseado.

Entonces, las que se pueden borrar sin afectar el resto del sistema, son aquellas transacciones que son no alcanzables, que generan tablas no alcanzables y cuyos atributos secundarios no están en ninguna transacción que no se borrable.

3) Renombrar atributos y tablas, a nombres cortos. 
En versiones anteriores de GeneXus, cuando generábamos para plataformas mas viejas (AS/400, VisualFox, etc.) era común tener las propiedades "Significant table name length" en 8 y "Significant attribute name legnth" en 10.

Esto nos posibilitaba manejar nombres largos en la KB, pero que internamente GeneXus manejara nombres mas largos y mas fáciles de entender.

Pasó el tiempo y hemos migrado estas KB por diversas tecnologías, y es bastante difícil cambiar dicho valores pues se generan reorganizaciones enormes.

Si la base de datos, es usada únicamente por la aplicación GeneXus, es trivial hacer el cambio de nombres, pues se le indica que use nombre largos, se hace un Rebuild All, y todos contentos.

Si la base de datos es compartida con otras herramientas (por ejemplo, hay stored procedures, herramientas para la realización de consultas, cargas de data warehouses, programación no GeneXus, etc) el cambio es bastante mas peligroso.
En algunas KB, hemos decido acortar los nombres de las tablas y de los atributos y poner las propiedades para que se usen nombres largos.  No se genera ninguna reorganización, todas las aplicaciones siguen funcionando correctamente y a partir de este momento, cuando se creen atributos con nombres largos, van a quedar tanto en la base como en la KB con los nuevos nombres largos y lo mismo con las tablas.

Los nombres cortos, quedan bastante mas feo en la KB, pero al menos posibilita usar los nombres largos para los nuevos atributos y tablas.

Hice un programita que renombra las tablas y atributos al largo de la propiedad.

Si alguien piensa que esto le puede servir para algo, me manda un mail a ealmeida@concepto.com.uy.
Por ahora no lo voy a subir al Marketplace, porque varios se han quejado que estando en la Evolution 2, les instala la dll de Evolution 1 y no les aparece.

PD: Por lo que me han comentado, en la Beta2 de la versión GeneXus Tilo, se cuenta en forma nativa con el Cross Reference entre clases del tema con los objetos. Esto dejaría obsoleto el reporte de clases no usadas de los temas. Me encanta cuando esto sucede, pues puedo eliminar parte del código del KBDoctor. Algún día tendría que estudiarme, porque me pone tan feliz borrar codigo no usado.




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.