KBModule 1.3 (beta) - Modularizando KB Grandes


Cuando una KB GeneXus crece, algunos problemas que son manejables cuando son chicas, se vuelven bien dificiles de manejar.

Es comun, que en las KB grandes se tenga cierta especializacion en el area en que desarrolla cada uno de los programadores que trabajan en la misma KB, dividiendo los objetos en modulos.

Una vez que uno adquiere cierta experiencia en dicho modulo, es bueno poder controlar como se comunica dicho modulo con el resto de los objetos de la KB.

Como “administrador del modulo”, me interesa asegurarme:

  • Que ningún objeto externo llame a algunos objetos internos de mi aplicacion. 
  • Que no actualicen o borren las tablas con for eachs o new, sino que lo hagan con objetos pre-establecidos (son las API de mi modulo). 
  • Si mi modulo necesita llamar a objetos externos (que no son de mi modulo), tener claro que dichos objetos no van a cambiar o que si cambian me van a avisar. 
  • Conocer que modulos utilizan mi modulo y que modulos estoy utilizando. 
Estos problemas son relativamente faciles de manejar en KB chicas, pero son muy dificiles de controlar, cuando las KB son grandes y el grupo de trabajo es numeroso.

Para poder hacer este chequeo en KB Grandes, estoy desarrollando una extensión que se llama KBModule. Aun no esta terminada, cuando lo este, voy a publicarla en el Marketplace y sera de codigo abierto para que los demas puedan adaptarla a su gusto.

* Artech, está trabajando en incorporar modulos a GeneXus, pero tiene un alcance bastante mayor que esto. Posiblemente todo esta extension se vea incorporada a GeneXus, por lo que posiblemente todo el trabajo realizado con esta herramienta tenga que ser desechado.

Cosas que faltan


Buena performance.
Mejores graficos.
Módulos como categorías
Inicializar en publico obj llamados por mas de un modulo.
Warnings al salvar si hay error.
Objeto Publico llamado solo desde mi modulo. (podria ser privado)
Mas reportes.
  • Tabla con trn en mas de un modulo.
  • Publico no llamado 
  • Obj de un modulo que solo es llamado del otro.
  • Privado llamado de otro modulo
Tablas
  • read, write, update, delete (controles independientes)
  • Controlar objetos que hacen read de una tabla de otro modulo y no se tiene Public en Read. Igual con Update, Insert, Delete. 
Si alguien tiene sugerencias para hacer, este es el momento. Pongan un comentario con como piensan que lo usarian y que es lo que quieren y vemos que es lo que se puede implementar. 

Un video donde se ve la funcionalidad basica.

<ACA IBA UN VIDEO, QUE USABA FLASH Y NO SE PUEDE VER MAS> 


Articulos de este blog que hablan de temas similares.

Comentarios

  1. Enrique muy bueno el tema, que herramienta usastes para el video :)

    ResponderBorrar
  2. Me gustaria leer algo al respecto de modularizar la KB. En mi caso tengo una KB con funcionalidades que deberian ser en desarrollo modulos diferentes. Ex: Un portal de deportes, donde cada deporte quisiera fuera un modulo y poder construir la aplicacion con el conjunto de deportes que desee. Pero me puede suceder que la transaccion Atleta la usan todos los modulos. Me gustaria poder exportar los modulos que deseo a una KB vacia para construir esta ultima completa de forma automatica. La exportacion no me sucede satisfactoriamente pues el modulo donde esta trn Atleta es referenciado por un deporte que no deseo. En fin, lo que realmente me gustaria es leer algo sobre ideas para modularizar.

    ResponderBorrar
  3. Michel, justamente ese es el problema que quiere resolver esta herramienta.
    Poder dividir la KB en modulos y poder manejarlos en forma independiente y comunicado por interfaces conocidas, es el objetivo basico de modularizar.
    Lamentablemente no es facil hacerlo con las herramientas actuales, por lo que decidi hacer una para ayudar en el tema.

    Aun le falta bastante para que la deje usable, pero cuando este pronta, la pongo para que la bajen del GeneXus Marketplace.

    En la comunidad Genexus no hay documentacion sobre modularizacion, que yo conozca.

    En futuras versiones de Genexus, los modulos van a ser objetos nativos del mismo, y se podra trabajar en forma mas facil con los mismos.

    ResponderBorrar

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.

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.