Modularizar una KB grande.
Problema:
Tengo una KB con mas de 10.000 objetos y se debe organizar en módulos mas pequeños.
Se necesita:
Metodología que permita realizar dicha modularización, de forma de mantener el funcionamiento del sistema generado a partir de la KB.
Metodología propuesta.
Bajar una KB desde GXServer.
Hacer un build all exitoso (es importante pues se agregan referencias a tablas)
Mientras queden objetos de la aplicación sin módulo hacer:
Tengo una KB con mas de 10.000 objetos y se debe organizar en módulos mas pequeños.
Se necesita:
Metodología que permita realizar dicha modularización, de forma de mantener el funcionamiento del sistema generado a partir de la KB.
Metodología propuesta.
Bajar una KB desde GXServer.
Hacer un build all exitoso (es importante pues se agregan referencias a tablas)
Mientras queden objetos de la aplicación sin módulo hacer:
- Elección que modulo se va a crear y cuales seran sus tablas.
- Sacar una lista de URL de todos los objetos de la KB
- Crear Modulo y poner Visibility como Private.
- Mover los Folders correspondientes al Modulo.
- Identificar todas las transacciones que generan las tablas del modulo y moverlas al modulo.
- Sacar del modulo los objetos que no correspondan
- Marcar como públicos los objetos interfaz del modulo. (Todos los dames se mantendrán privados por default)
- Revisar los objetos externos al modulo que usan tablas privadas del modulo y corregirlos.
- Corregir todos los programas que hagan UPDATE sobre tablas publicas del modulo. Todas las modificaciones deberan ser hechas a traves de objetos publicos del Modulo.
- Hacer un rebuild all exitoso
- Comparar los WSDL del sistema y ver que no cambie nada. Si algun WS cambia de nombre, crear objeto con el nombre viejo y dejarlo en root.
- Sacar una lista de las URL de todos los objetos de la KB y comparar con la anterior. Con las diferencias
- Arreglar Deploy de DLL / Class que cambian de nombre
- Arreglar Casos de pruebas por dll/class que cambian de nombre
- Arreglar referencias externas (scheduler, script, command line, menu, documentacion) a dll/class que cambian de nombre
- Ajustar el indicador de (#Objetos en Modulos) /(#TotalObjetos)
- Subir cambios a GXServer
- Asegurarse que Build/Deploy/Pruebas Automáticas/Pruebas Manuales terminen bien.
- Documentar y avisar a los usuarios sobre url/webservices/archivos de comando
- Instalar en producción
- Volver al primer paso
Es un trabajo bastante engorroso, y que lleva bastante tiempo, pero las ventajas son enormes, pues queda todo mucho mas ordenado y mas fácil de entender. Ademas "obliga" a que los nuevos desarrollos se hagan con la modularización en mente, pues fuerza a que se usen solo los objetos públicos de cada modulo.
Luego de modularizar, es trivial sacar un modulo y llevarlo a otra KB, pues se tiene bien definido cuales son las interfaces del mismo y cuales son las dependencias de dicho modulo.
La modularización de KB debería ser una tarea a tener en cuenta por los desarrolladores GeneXus.
Comentarios
Publicar un comentario
1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.