23 Ideas para GeneXus Extensions (2 años después)

Hace cerca de 2 años, publique el post  23 Ideas para GeneXus Extensions. En ese  momento estabamos recien entendiendo las Extensiones, para GeneXus X.
Me puse a repasar la lista (Quedan en azul mis comentarios actuales)

1) Tools / Command Prompt (ésta la va a hacer Marcos Crispino)
(Ya la hizo y quedó buena)

2) Generar Triggers de Auditoria para las tablas elegidas (esta la deberían hacer Marcos, Alexander, Ruben y Sergio)
(No se hizo)

3) KBIndexWizard. Generar los índices que se necesitan para correr bien la aplicación (Revisar todas las especificaciones y ver que índices pueden necesitarse, se necesita tener cardinalidad de tablas y algunas cosas mas, es mas importante el where que el order, etc)
(No se hizo, pero las base de datos han empezado a brindar este tipo de herramientas, con sentencias y con la cardinalidad de las tablas, sugieren indices a crear)

4) IAR con estimacion de tiempos. Dada una reorg y una KB, generar los programas necesarios para poder evaluar en el servidor de produccion cuanto va a demorar esa reorg, considerar la cardinalidad de las tablas y la cantidad de thread que van a correr en paralelo.
(La reorg agregó una opcion que permite contar los registros "-recordcount" que tienen las tablas que se van a reorganizar, lo cual ayuda a estimar los tiempos. Ademas con las sentencias en un script, se puede saber mucho mas facilmente que es lo que la reorganizacion va a realizar y por podemos estimar por cuanto tiempo tendremos baja la base). 



5) KBSpellChecker. Corrector de faltas. Al salvar un objeto, verificar la ortografia de la documentación, el help, los tags de la pantalla, contra algun diccionario.
(No se hizo, si la hiciera, la juntaria con el punto 6)

6) Verificador de Nomenclatura. Cuando se salva un atributo, dominio, indice, objeto validar si cumple las reglas establecidos en el proyecto / KB.
(No se hizo)

7) KBdoctor. Valida errores comunes que se cometen en las KB. Migrar el kbdoctor actual.
(Lo implementamos y a mi me resultó util. Tendriamos que arreglarle algunas cosas, como que haga linksa automaticos a la lista de atributos, que no sugiera modificar subtipos, etc, pero esta bastante operativo). 

8) KBBeautify. Dado un objeto con fuente, que lo deje "lindo", o sea que deje el codigo indentado como se ha establecido y que ponga las palabras reservadas en minusculas, etc.
(Se le agrego a GeneXus la opcion de indentar y de dejar lindo el codigo, ya no es necesario)

9) Borrado de Objetos Inutiles. Recorrer todos los objetos y borrar los objetos no alcanzables, borrar las variables declaradas y no utilizadas, atributos que no estan en ninguna tabla.
(Lo hace el KBDoctor). 

10) KBFullCycle. Permite impactar/especificar/compilar/generar el help todos los objetos de la KB en un solo paso. Puede ya estar incluido en la rocha, hay que esperar un poco.
(Se implementa con "poco esfuerzo" con los MSBuild Task)

11) KBReplicator. Cada vez que un objeto es marcado con una propiedad especifica, se puede replicar a otra KB.
(No se hizo, espero que se incluya en alguna version proxima). 

12) KBRssEmitter. Cada vez que un objeto de la kb se modifica, emite rss, de forma de poder ser consumido por otras aplicaciones.(Este lo tengo operativo para la 9.0, pero no para la X.
(Esperaba que el Wiki interno brindara este servicio pero no lo encontré)

13) Comparador de navegaciones. Dada una version estable de mi aplicacion, compararla con la que estoy desarrollando para ver si hay diferencias en la navegacion en los objetos que no modifique.
(Hay una version del comparador de navegaciones, que toma en cuenta las navegaciones en formato de la X, pero no esta demasiado integrado. Seria bueno que se pudiesen salvar las navegaciones aprobadas en una versión congelada y despues poder comparar las navegaciones entre dos versiones. Seria bueno poder tener la historia de las navegaciones). 

14) KBTableXObjects. CrossReference entre tablas/operaciones y objetos. Saber que objetos hacen insert/delete/update en que tabla.
(esto ya está incorporado a GeneXus X, se pueden ver las relación entre tablas y objetos). 

15) KBAppGenerator. Dada una KB, con trns unicamente, generar una aplicacion completa con la misma, aplicando el Pattern WorkWith a todas las entidades (dimensiones), el Pattern SummBy a los eventos (fact tables).
(No se hizo. Creo que sigue siendo una idea que puede servir para algo, pero no es mucho mas que aplicar los patterns a las transacciones). 

16) Objeto CasoDePrueba. Objeto que al correr, prueba a otro objeto. (lo hara la gente de GXunit)
(Se avanzo con GXUnit, no se termino de implementar para probar todos los objetos. El testing es una de las areas en la que veo que estamos mas debiles en el area metodológica. Aparecieron empresas que estan interesadas en desarrollo de herramientas para testing (GXTest))

17) Objeto Requerimiento, que tenga documentacion y vida propia.

(Puede ser manejado por el Wiki interno de la KB, pero hay que asegurar la trazabilidad hasta los objetos). 

18) KBSQLqry. Poder ver el contenido de una tabla desde gx. Parado en la tabla, darle Open a la tabla y que muestre una pantalla sencilla con el contenido (100 registros) de la misma.
(Esta implementado con la Extension OpenTable de Glauber). 

19) Pattern SaveData y LoadData. Dado un conjunto de TRN, generar los programas necesarios para salvar los datos a xml y para volver a cargar dichos datos, usando BC/new y xml.
Serviria para facilitar las pruebas de proyectos en GXOpen, donde se podrian subir los proyectos con datos. Lo "divertido" es lograrlo con una base con integridad referencial declarada en la base.
(Son patterns no dificiles de implementar)

20) KBAssetManager. Una aplicacion que permita administrar cuales son las KB que tengo, tenga indicadores de dichas KB (#objetos, #objetos modificados, #objetos nuevos, #objetos por tipo)
(En el U2 de GeneXus X, se pueden ver algunos reportes de cantidad de objetos y algunas otras metricas de la KB). 

21) Diagramadores. Varios diagramas de tablas, con diagramas que se puedan leer y navegar. Diferentes formas de navegar por la KB en forma grafica.
(Se incorporaron varios diagramas a la version X. Son muy utiles. Habria que agregar varios mas, para poder entender mejor KB grandes). 

22) Complejidad de objetos. Poder calcular la "complejidad" de un objeto, con indicadores como sentencias SQL que utiliza, cuantos objetos lo llaman, a cuantos objeots llama, tamaño de su especificacion, etc. Es comun que un conjunto pequeño de objetos, dentro de una KB sean complejos y los demas sean sencillos, y deberia ser facil identificarlos.
(No conozco que se impelementara nada de esto y a mi me sigue gustando la idea, se lo podria agregar al KBdoctor)

23) Referencia cruzada entre sentencias SQL y Objetos. Cuando se producen lios en la base de datos (por ejemplo, deadlocks, sentencias ofensivas, bloqueos) lo que se tiene es la sentencia SQL que se ejecuta. La forma de saber que objeto hay que mirar, es buscando en los fuentes. Seria bueno poder identificar mas rapidamente los objetos que hay que revisar.

(No se implementó. De esta me acuerdo cada vez que hacemos un ciclo de optimización de performance de una aplicacion, se pierde mucho tiempo buscando sentencias dentro de los fuentes generados)

Esta la sugirió Marcos en los comentarios....
24) Tools / Open generated program . Si estoy parado en un objeto, abre el programa generado..

(La implementó Marcos  y se llama ViewRelatedFiles). 

En resumen hay 13 de los 24 que estan total o parcialmente implementados. Otros no se implementaron pero ya no tienen tanta importancia o cambie de parecer. 
Cada tanto es lindo ver que como se avanza en determinados temas.

Comentarios

  1. ideas y necesidades veo que no faltan.
    El tema es que las soluciones van apareciendo a medida que las necesidades son muy fuertes, y te chocás mucho contra los problemas. Nosotros es por esto que estamos desarrollando algo para mejorar el Testing, ya que nos enfrentamos mucho con ese problema y vemos necesario que se haga con una herramienta que se ajuste más a la forma de trabajo de Genexus...
    de a poco se irán cubriendo las distintas áreas...

    saludos!
    nos vemos en el evento!

    ResponderBorrar
  2. Muchas de estas extensions parecen estar muy buenas...
    Estaría bueno que cuando se piense en una nueva extension para la Rocha, también se piense una solucion similar para la Yi...
    Muchos seguimos en esa versión :)

    ResponderBorrar
  3. Es cierto esto que decís, hay mucha gente está trabajando con distintas versiones de GX.
    En nuestro caso estamos implementando la herramienta de testing tanto para Gx8, Gx9 y Gx10. Por ahora no es una extensión de la IDE de Genexus, sino que es una herramienta separada que usa la info de la KB, pensando en esto mismo que vos decís.

    ResponderBorrar
  4. Federico:
    Es MUCHO mas facil tirar la idea o encontrar una necesidad que implementar una herramienta para la misma.

    Por eso me gusta cada tanto revisar cuanto se ha avanzado y ver que evolucionamos.

    Roberto:
    Tenes razon en cuanto a que mucha gente todavia sigue (seguimos) con versiones mas viejas de las herramientas. El costo de desarrollar herramientas compatibles con versiones anteriores, a veces hace imposible su implementacion.
    Otras veces, la limitación viene por limitaciones tecnicas. Por ejemplo, era mucho mas engorroso y dificultoso la programacion con GXpublic (que usabamos para GeneXus 9.0 o anteriores) que la programacion de Extensiones con la X.

    Gracias por los comentarios.

    ResponderBorrar
  5. Federico: aclaro que mi comentario no hacía referencia sólo a lo que ustedes están desarrollando... Hablaba en general...

    Enrique: esta bien, es entendible..

    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.