Revision de mi lista de Pedidos a GeneXus - Año 2002

 



Estamos mudando un servidor a la Nube y en el mismo había unos cuantos archivos.  Como en toda mudanza, conviene revisar un poco que es lo que hay y tirar lo que no usamos mas. 

Entre las cosas que aparecieron, esta un documento que redacte con pedidos para GeneXus, que tiene 20 años.  Tiene la lista de cosas que le pediamos a Artech (ahora GeneXus) que incorporara en la herramienta. Me gusta revisar estos documentos y ver que cosas se hicieron y cuales no. Tambien es bueno ver cosas que pedimos y que hoy ya no tienen sentido. 

Pongo en rojo los comentarios actuales y en negro lo original. 

Pedidos de Concepto a Artech (2002)

Premisas:

  •  Trabajamos con Bases de Datos Grandes
  •  Trabajamos con Base de Conocimientos Medianas y Grandes
  •  Se hace un proceso de Consolidación/Generación/Instalación con una frecuencia mensual o bimensual
  •  La misma aplicación se instala en diferentes servidores
  •  La misma aplicación se instala en un mismo servidor para que trabajen mas de una empresa. 
  •  Los servidores están geográficamente dispersos
  •  En algunos lados no administramos las bases de datos.
  •  En algunos clientes corremos reorganizaciones de otras empresas
  •   En algunos clientes otras empresas ejecutan nuestras reorganizaciones.
  •   Trabajamos fundamentalmente con VFP/CSQL secundariamente con VB, Java, C#, Cobol, RPG contra base de datos Oracle y SQLServer

Olimar (era el codigo de la version, creo que fue la 8.0)

Sencillas

    1) Abrir el directorio donde se generan los programas. Poder ver el fuente de los programas generados desde un objeto. (Esto se agregó) 

    2) Unificar Properties/Object Option, por ejemplo se marca un objeto como main y en otro lado hay que setear el call protocol. (Se juntaron las propiedades)

    3) Tab inferior de Variables. (Hay un tab con las variables, ahora esta arriba)

    4) En la ventana de Advanced/Subtype (esto está así desde tiempos inmemoriales) estaría bueno que cuando estás definiendo un subtipo o grupo de subtipos, ya pudieras ver si el grupo te está quedando bien definido. Me refiero a ver la letra "P" y la letra "I" para los inferidos. Actualmente tenés que definir todo el grupo, dar OK y luego volver a entrar para ver si te quedó ok (revisando que no te hayan quedado atributos con "S", por ejemplo). Si es complicado implementar esto para que automáticamente se refresque la pantalla, por lo menos se podría poner un botón de "Check" o algo así, que me verifique sin tener que salir y volver a entrar (Esto se corrigió) 

    5) List Domains/Formulas( Hoy los dominios quedan a lo ultimo, y hay que seleccionarlos) (Se implementó)

    6) Insert Subrutine (no se porque falta). Seria parecido al Insert Event. (Lo agregaron) 

    7) Valor Default de directorio no sea DATA00x, sino PROTOTYPE001, PRODUCTION005, etc. 
(No se hizo)

    8) Poner bajo un directorio gxtemp, todo aquello que puede ser borrable, sin afectar la información de una KB, como son las especificaciones, los directorios de usuarios, etc , para facilitar la copia, backup, etc de una KB. (No se hizo)

    9) Poder distribuir por fechas de modificación.(Ahora se puede hacer)


No tan Sencillas 

    1) Transformar la salida del F5 en una grilla, para saber cuales son los programas que compilaron y cuales no. En la misma se tendría un estado (OK, Con Warning, Con Errores) y dando un click se podira ver el resultado de esa compilación. (Ahora se puede hacer)

    2) Mejorar los filtros de Objetos, poder seleccionar los objetos main, por protocol, por Environment.
(Solo se puede filtrar por main, los otros filtros no se pueden lograr) 

    3) Poder seleccionar en reporte de consolidación, especificación, en el momento de verlos. Poder ver uno mas detallado y otro mas resumido.  O sea poder manejar más de un .xsl y que se seleccione en el momento de verlo. 

    4) Eliminación de objetos 

        a. cuando borras te de la opción de eliminar en diseño también (Esto se implementó)

        b. en vez de borrar, marques los objetos como borrado lógico, esto puede ser útil para también exportar esta marca o sea tener dos opciones una para borrar el objeto como ahora y otra para marcar el objeto como borrado lógico, luego cuando se exporta el objeto, en realidad se va solo la marca y esa marca de borrado lógico llaga al consolidado, luego en el consolidado se borran físicamente los objetos borrados lógicos recién importados (en el update model). (se implementó)

        c. Poder borrar objetos referenciados y que en el otro programa queden marcados como externos.
(no se implementó, pero creo que es bueno que no se haya implementado)

        d. Al borrar una TRN, preguntar si se quieren borrar los ATT que no se utilizan en otras TRN
(lo implemente yo en el KBDoctor)

    5) Location en objetos web, para que ponga los exes en diferentes directorios. Uno para SSL, otro para acceso publico, otro para webservices, otro para acceso restringido. (se hizo con las Deployment Units) 

    6) Hipervínculos (o mejor un menú contextual) en los call, para poder abrir ese objeto. (Se implementó)

    7) Paste de Parámetros al hacer un insert object. (no se implementó, sigue estando bueno)

    8) Poder cambiar varias propiedades simultáneamente en varios controles seleccionados. (Se implementó)

    9) Search/Replace en todo el objeto, Search/Replace en toda la KB. (no se implementó, sigue estando bueno el pedido)

    10) Documentación a nivel del Fólder/KB (Existe a nivel de modulo, pero no de folder, no es necesario)

    11) Syntax Coloring en Procedures (Se implementó)

    12) Asi como hacemos un ADD-called hacer un ADD-Referential Integrity pero no solo con TRN sino con todos los Objetos.  Seria agregar todas las TRN que utilizan atributos, que están siendo usados por los objetos que estoy distribuyendo. (Se implementó)

Rocha (era el codigo de la siguiente versión, creo fue la GeneXus X)

    1) Reorganizaciones (Se implementaron casi todas)

        a. Eventos en la reorg (pre-reorg/ post-reorg) 

        b. Poder manejar el código de la reorg de alguna forma. Hay cosas que no se quieren ejecutar, o se quieren ejecutar en paralelo. 

        c. Reorg ciegas sin interfase (poder generar un CD con las reorg y dárselo a un cliente para que las aplique)

        d. Guardarlas. Generar un Zip (o .cab o .msi) con todo lo necesario para ejecutar la reorg y que queden con un nombre del tipo GXaaaammddhhmmss.xxx o en un directorio

        e. Poder elegir con que servidor/base de datos voy a correr la reorg

        f. Poder ver el contenido (para estimar tiempos e impactos) de una reorg antes de ejecutarla.

        g. En el paso anterior recuperar el numero de registros de la BD y ayudar asi a estimar los tiempos.

        h. Que borren tablas (o que avise que hay que borrarla)

        i. Que reorganicen DataViews. (no)

    2) Depuración (debug) integrada (Tiene el debug mucho mejor que este pedido)

        a. Write de Control, Msgdebug(‘Voy aca”) que sea agregado a la información del trace.

        b. Este comando debe ser ignorado cuando se especifica en forma normal 

        c. Tener una opcion de specify con debug y que el objeto se especifique generando información de debug. El objeto debe quedar como no especificado. 

        d. Poder ver en runtime el orden de disparo de reglas.

    3) Front End grafico en la KB (Arboles de Call, Diagramas de tablas, UTL). Tipo FrontPage (no se implementó, sigue siendo una buena cosa a tener)

    4) Diagnostico de la KB (Reporte de Errores, Atributos sin tablas, Objetos no alcanzables, Objetos no llamados) (Lo hace el KBDoctor)

    5) Auto-extensible (todo esto se puede hacer con extensiones)

        a. Poder desarrollar nuevos objetos (tipos de datos) con GeneXus.

        b. Poder desarrollar nuevas funciones con GeneXus

        c. Poder desarrollar controles activeX con GeneXus

        d. Soporte de Add-in y que puedan ser desarrollados con GeneXus.

        e. Poder desarrollar Wizards para creación de objetos especificos.

    6) Evento Pre-Start  en transacciones.

    7) Generar Aplicaciones Distribuidas 

        a. Objetos externos (fuente externo, exe, dll, stored procedures, webservices Soap) con especificación de parámetros, tipo de protocolo, locations, etc.) (Se implementó( 

    8) Grupo de trabajo 

        a. Usuarios (integrado al SO o propios?) (lo tiene GXSerer)

        b. Seguridad  (No se implementó)

        c. Dueños (no existe, sigue siendo una buena idea para que un modulo tenga un owner)

        d. Locks  (Existen en GXServer)

        e. Log   (Accesible desde GxPublic) (la kb tiene historia)

        f. ToDo List (manejable con GXPublic) asociado a un objeto  (Aun no implementado)

    9) Desarrollo Distribuido a través de Internet

        a. Poder hacer consolidate/distribute de archivos con http/ftp (con usuario/contraseña) (No implementado, pero se puede enviar o bajar de GXServer)

        b. Poder abrir una KB que esté en un directorio virtual (webservices?). 

    10) Multi-Idioma

        a. Poder generar aplicaciones en más de un Idioma (resources???).  (implementado)

    11) Manejo de Versiones de objetos y builds.  (Implementado)

    12) Administración de la base de datos desde GX. (menos resistencias de DBA)

        a. Tablas temporales (## en SQLServer, y temp en Oracle) (no implementado, aunque hubo un protipo)

        b. Poder crear vistas y materializarlas (Se pueden hacer Dynamic Transactions, que generan vistas)

        c. Poder tener diferentes tipos de índices y verlos como objetos con sus propiedades. (se ven como objetos, pero son muy sencillos)

        d. Poder editar los stored procedures o al menos verlos. (puede ser un desarrollo de terceros) ( se pueden ver como objetos externos y no editarlos)

        e. Que los dominios de GeneXus sean dominios en la base (no se implementó, sigue siendo una buena idea)

        f. Tener un objeto atributo, aparte de los objetos (iconos) de WBP, PRC, TRN y demás, también tener un icono para los ATT, así los podes editar igual que otro objeto y lo mejor los podes poner el folders (por defecto estarán en el folder de la TRN que los define) y se exportan con el 'include folders'...  (se implementó)

    13) Poder mantener atributos o propiedades del usuario para los objetos (se pueden agregar propiedades con extensiones)

        a. Hacer que los filtros manejen esos atributos del usuario.

    14) Poner al objeto como no generable, sobre todo transacciones. (Se implementó)

    15) Estado de los objetos. Seria bueno poder saber en que estado esta el objeto y poder filtrar por el. Se me ocurren tres campos diferentes Errores, Warning, Estado (Sin Especificar, Especificado, Generado, No Generable, Borrado) (No se impelemnto, no es necesario)

    16) Cambiar el paradigma de ver una KB, en vez de cómo un árbol de folders, poderla ver como un Trabajar con Objetos, con filtros variados. (se implementó)

        a. Filtros por Main, Environment, Generador, tipo, Atributo de usuario, dueño, Estado, Tarea a realizar, etc.  (no se implementó)

        b. Disparar la compilación desde GeneXus mismo y no tener una pantalla de F5. (se implementó)

    17) Vistas diferentes de una KB. (no se implementó)

        a. Vistas para desarrollador: Como la de hoy

        b. DBA: poder ver Tablas, DataViews, Atributos, Indices todos como objetos y ver sus propiedades. En esta vista seria bueno poder ver que marque cuales son las tablas que cambian con una reorg.

        c. Consolidador: Objetos con Errores, Objetos Main, Objetos con Warnings. Vision mas de todo el conjunto. 

        d. Administrador: Objetos por Dueño, para saber si alguien tiene más objetos que otro, por generador, por tipo de objeto, etc. 

    18) Herramienta para poder ver una UTL en forma grafica, con que programas hacen commit on exit, tienen commit en el texto, etc., seria como una navegación, pero que agrupe todos los objetos de un main, o algo así. Marea mucho la diferencia de criterios entre generadores (VFP y C/SQL, por ejemplo)

(hicimos algo de esto en el KBDoctor)

    19) Separar la estructura de la transacción. No lo tengo muy elaborado aun, pero creo que podría ser bueno, separar la parte de estructura junto con algunas reglas, del form y los eventos de la trn. 

(se tiene el exportar la estructura de una trn, seria bueno seguir por ese camino, teniendo dos objetos separados) 

    20) Poder incluir cualquier objeto COM en un objeto GeneXus. (Ya no es necesario) 

    21) Firma Digital en XML, utilizando certificados X.509. (se implementó)

GxPublic (todo esto y mucho mas, se puede hacer con extensiones)

  1.    Poder consolidar/distribuir de versiones diferentes
  2.     Agregar atributos de usuarios a los objetos
  3.     Poder borrar Objetos.
  4.     Compile. 

 GxPlorer (no existe mas el producto)

  1.     Utilización de rangos para la definición de las consultas.
  2.     No funciona la selección de valores con filtros del tipo '%string
  3.     Suma de promedios o promedio de la suma
  4.     Los ranking no se despliegan en el orden indicado.
  5.     Que muestre la grafica como inicial, en vez de la tabla de datos. 

Report Viewer (todo esto se puede hacer) 

  1.    Pasar un reporte a Excel
  2.    Enviar un reporte por mail
  3.    Generar PDF

------
Como conclusion veo que muchas cosas se implementaron. Y tambien que son demasiado denso en los pedidos. 

Comentarios

  1. Hola Enrique,
    Gran aporte.

    Sugerencia Cambiar los colores segun si
    * NO se implemento ROJO
    * se implementó, VERDE
    * Sigue estando bueno el pedido AZUL

    Abrazo,
    gab

    Algo así... Todo rojo, no está bueno...

    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.