KBDoctor - Comparador de Navegaciones.

Desde hace tiempo, existe una herramienta para Comparar Navegaciones en KB GeneXus. La misma esta pensada para ser usada comparando navegaciones de objetos en diferentes versiones de GeneXus. Es de mucha utilidad, cuando se realizan cambios de versiones, pero no me resultaba practico para el uso diario con GeneXus X.

Decidí usabilizar un poco la herramienta y agregarle al KBDoctor (versión 10.8 o superior), las opciones de generar una foto de las navegaciones es un momento dado y luego utilizar alguna herramienta de comparación de archivos de texto para realizar la comparación (es la misma metodología que se usaba con la herramienta anterior).

Que ventaja tiene este enfoque?
El resultado es exactamente el mismo que antes, pero resulta un poco menos engorroso el procesamiento de los archivos de navegación.

Ademas para KB con varios generadores, con la herramienta anterior se tenian que realizar tantas comparaciones como generadores, pero ahora unifico todo en una misma carpeta.

Como funciona?
Con una KB abierta, se selecciona Tools/KBdoctor/Navigation Comparer/Generate snapshot of navigations


Esto va a generar un folder nuevo, con la fecha y hora actual, donde se van a almacenar todos los archivos de navegaciones procesados.


Dentro de este directorio, hay archivos de texto, con extensión .nvg. Los mismos son generados a partir de los archivos HTML que muestra GeneXus en pantalla, procesados con XSLT para dejarle la información mas pertinente.
El XSLT es casi el mismo que se usaba en el Comparador de navegaciones original, pero le tuve que hacer varios cambios, para poder distribuirlo dentro de la DLL del KBDoctor y no tener que estar copiando archivos extras.


El nombre de los archivos, empieza con el Generador y luego el nombre del objeto.
El contenido de los archivos es del tipo:


En una KB grande con dos generadores y mas de 8.000 navegaciones, demora unos 5 minutos en procesar todos los archivos (en un PC que estaba haciendo un build all).  Estos tiempos se pueden mejorar mucho si se establece desde que fecha/hora quiero realizar la comparación, pues solo tendría que procesar aquellos archivos con fecha posterior a la deseada, pues los demás, no cambiaron.
Igual, con 5 minutos es bastante usable.

Cuando quiero comparar, puedo usar la opcion Tools/KBdoctor/Navigation Comparer/Show snapshot folder


En mi caso, estoy usando Beyond Compare, para ver las diferencias, entre las navegaciones que tenia el 10/12/2013 a las 18:21, con las del 11/12/2013 a las 15:11.

Con esta herramienta, se pueden configurar que solo muestre aquellas diferencias consideradas importantes, facilitando mucho el análisis de dichas diferencias. Por ejemplo, no se tienen en cuenta el timestamp de los archivos, y tampoco el numero de build del generador, etc, etc.
Se puede configurar que es lo que se quiere mostrar o evitar.
La corrida, demora algunos minutos y el resultado es:


Al darle click a uno de ellos, muestra las diferencias:


Con Ctrl-M se pude pasar al siguiente archivo con diferencias.

La tarea de comparar mas de 8.000 navegaciones, queda bastante mas sencilla. Hay que recordar generar una foto de las navegaciones previo a arreglos importantes, de forma de tener controlado lo que se instala.

Si salvo las navegaciones siempre que instalo algo en un cliente, es facil realizar la comparación para medir el impacto de dicha instalación y también poder manejar el riesgo de la misma.

Mejoras para el futuro

  • Poder comparar la navegación de un objeto con una revisión anterior del mismo, sin tener que procesar todos los archivos como ahora. 
  • Automatizar la comparación, o facilitar la invoación al comparador usando Beyond Compare
  • Poder seleccionar un snapshot anterior y hacer la comparación solo de las navegaciones que cambiaron. 
  • Hacer una version batch como MSBuild task, para poder meterlo en el build automatizado. 
  • Mejorar la performance 

Próximamente, publico en el Marketplace.

Mientras tanto, si alguien lo quiere, me lo pide y le mando la dll (sin demasiado testeo).

Para los que quieran colaborar o compilarse ellos mismos la dll, los fuentes están en Assembla (junto con otras extensiones).




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.