Cómo encontrar objetos en una KB GeneXus que utilizan dos tablas


GeneXus es una herramienta poderosa que facilita la creación y mantenimiento de aplicaciones. Sin embargo, en ocasiones podemos encontrar la necesidad de identificar qué objetos hacen referencia a dos tablas específicas en nuestra Knowledge Base (KB). 

Vamos a hacerlo paso a paso.

Paso 1: Listar objetos que usan la TABLA1

1. En tu KB GeneXus, localiza la TABLA1.

2. Una vez que estés en la tabla, ve a las referencias de los objetos que la utilizan.

3. Selecciona todos los objetos que hacen referencia a esta tabla.

4. Accede al menú LSIExtensions (*) y selecciona Edit.

5. Luego, elige Copy Info Objects as Table.

6. Abre tu editor de texto preferido y pega el contenido del portapapeles. Yo uso Notepad++

Paso 2: Ordenar y guardar el archivo

1. Ordena el contenido alfabéticamente. Lo ordeno en el Notepad++ con Edit / Line Operation / Sort Lines

2. Guarda el archivo con el nombre TABLA1.txt.

Paso 3: Listar objetos que usan la TABLA2

1. Vuelve a tu KB GeneXus y repite el proceso del Paso 1 pero ahora con TABLA2.

2. Ordena alfabéticamente el contenido (como en el Paso 2).

3. Guarda el archivo como TABLA2.txt.

Paso 4: Comparar ambos archivos

1. Utiliza un comparador de texto (herramientas como WinMerge, Diffchecker, Beyond Compare o Notepad++ o cualquier otro software de tu preferencia).

Yo uso el Notepad++ con el Plugin Comparer

2. Abre TABLA1.txt y TABLA2.txt en el comparador.

3. Comienza la comparación y presta atención a las líneas que son iguales en ambos archivos, ya que esto indica que el objeto hace referencia a ambas tablas.

4. Toma nota de estas líneas o, si prefieres, crea un nuevo archivo con esos objetos específicos.

Con esto, hago una lista de los nombres de los objetos separados por ; editando un archivo que tenga los objetos que usan ambas tablas. 

5. La salida es por ejemplo   objeto1;objeto2;objeto3    (es importante no poner el ; al final).   Esa lista de objetos se puede poner el el selector de objetos del Work With Objects (Ctrl-J) o Open Object (Ctrl-o) 

Con estos pasos, habrás identificado todos los objetos en tu KB GeneXus que hacen referencia tanto a TABLA1 como a TABLA2. Esta técnica puede ser especialmente útil cuando estás trabajando en refactorizaciones, modularizaciones o intentando comprender mejor las interdependencias en tu KB. 

Puede ser usado para tablas o para otro tipo de objetos.  En mi caso, tenia que ubicar objetos que hacían join entre dos tablas, que son muy usadas en una KB de mas de 10.000 objetos y no era una tarea fácil. 
Posiblemente existan otras formas de hacerlo mas eficientes. Seria bueno que GeneXus brindara una forma nativa de hacer este tipo de operaciones. 

(*) Tuve que compilar LSIExtensiones para GeneXus 18, porque es encuentran los fuentes, pero no los binarios. Como el  GeneXus Platform SDK tuvo varios cambios en sus dll, hay que hacer varios cambios para lograr que compile. 

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.