Entradas

Mostrando las entradas de octubre, 2012

Output inteligente (o con alguna viveza)

Imagen
En GeneXus X o superiores, la forma de identificar si tengo algún error o me falta compilar algo, es hacer un BUILD ALL. Con esto se especifica/genera/compila todo aquello que esta pendiente o fue cambiado y la salida se puede ver en la ventana OUTPUT.

Cuando trabajamos con KB grandes, analizar la salida en el output es una tarea tremendamente engorrosa, porque no tenemos  se brindan buenas herramientas para su manejo.

Por ejemplo, ahora estoy trabajando en una KB que tiene muchos reportes PDF, web services, exports a planillas y procesos batch, con lo que tenemos 1162 objetos main, cuya compilación sale en el output.. El output que se genera cuando no existen errores de especificación y compilación  es de mas de 500 kb, y analizar un archivo de texto de ese tamaño siempre resulta muy incomodo. Cuando hay objetos a especificar o errores, el archivo es mucho mayor, por lo que el problema es peor.

Se me ocurren algunas funcionalidades que se le pueden agregar de forma de simplificar o …

Condiciones que no se resuelven en el servidor

Imagen
Cuando se programa en GeneXus, en algunas oportunidades pasa que escribimos condiciones que no son evaluadas en el servidor de base de datos, sino que evalúan en el cliente.

Esto que significa?

Pongamos un ejemplo. Si tengo:

for each     where FechaHora > servernow()          Msg(FechaHora.ToString()) endfor
y la base de datos es Oracle, esto va a seleccionar todos los datos de la tabla, y en el cliente (o en el servidor web) va a agregar un IF que seleccione aquellos que tienen FechaHora mayor que la fecha del servidor. Dependiendo de la cantidad de registros que se tenga, eso puede ser muy poco performante.

Como muestra GeneXus este posible problema?
Al costado de la condición  muestra un pequeño icono y en el tooltip dice que puede haber problemas de performance.

Esto es suficiente para cuando estoy programando un objeto, pero no lo es cuando estoy realizando migraciones. Con los cambios de versiones, algunas navegaciones cambian y me puede interesar saber cuales son todos los …

El mal olor de las transacciones.

Imagen
En mi post GeneXus TILO: Que características me gustaría que tuviera, sugería que los objetos Transacción deberían dividirse en varios objetos.

Hay varios motivos para sugerir esta división, pero el principal es que el código que hay que escribir o especificar en las transacciones empieza a tener "mal olor".

Pongo algunos ejemplos para que quede mas claro:

WIN y WEB
Cuando se tienen generador WEB y WIN en la misma KB, si una transacción es compartida en los dos generadores, es muy probable que se termine con código en los eventos y reglas de la forma:

[WEB]{ //Codigo para WEB } [WIN] { //Codigo para WIN }
Esto dificulta la  comprensión de lo que hace cada objeto y ensucia mucho el árbol de llamadas entre objetos, pues es difícil saber que objeto llama a otro en cada ambiente.

Transacciones con BLOB.
Otro ejemplo, si la transacción que es usada en WIN y WEB, tiene un campo BLOB, en WEB se genera automáticamente la selección de archivo y el subido a la base de datos y la asignac…

GeneXus Freeze Version 2.0

Imagen
Una muy buena característica de GeneXus es la que permite congelar versiones para tener una foto de como estaba la KB en un momento dado, que sirve por ejemplo para guardar la versión liberada a los clientes.

El problema que tienen las versiones congeladas, es que cuando uno quiere utilizarlas, el proceso de reconstruir el ambiente demora muchísimo, sobre todo en KB grandes.

Lo que me gustaría  seria poder guardar ademas de los objetos read-only, una copia de los archivos de espcificación, los fuentes generados y una forma fácil de cargar los datos que tiene mi aplicación.

Para lograr esto, seria bueno que el dialogo de Freeze  hiciera algunas preguntas

* salvar programas y información de especificación?
Salvaría el Target Path y el directorio GXSPC00xx, al nuevo directorio de la version congelada.

* save data ?
Esta opción, generaria una copia de los datos de la base de datos.
Mi idea seria generar un archivo XML por cada tabla de la base de datos, que tenga

<Tabla>    <Tabl…

GeneXus TILO: Características que me gustaría que tuviera

Imagen
Estas son algunas de las características que me gustarían para la próxima versión de GeneXus (TILO).
Las tiro sin la carga de las versiones anteriores y sin tener que preocuparme del programa de migración de una versión a otra.

Esto va a ser solo una lista, pero mas adelante (si tengo ganas podría ampliarla o detallar mas alguna de ellas).
Las transacciones pasan a ser 3 objetos diferentes. (Estructura + Reglas, DataEntryPanel, DataEntryBatch)Output de especificacion/compilacion mas inteligente (search, poder recompilar lo que fallo, marcar los errores, abrir objetos con problemas, etc)GeneXus Freeze Version 2.0SDT collection se tratan como tablas con for eachSe soporta el ciclo de vida de la aplicación (Requerimientos, Desarrollo, Documentación  Prueba, Instalación  Optimizacion, Desintalacion, etc)Editor de Vistas dentro de GeneXus (DBA, Requerimientos, Documentador, Diseñador grafico, Gerente, Instalador, Seguridad, Auditor, Programador WEB, Dispositivos Móviles, etc). Permite selec…

View Last Navigation.

Imagen
Alejandro Rivoir de Concepto programó la extensión para GeneXus X Ev1, que se llama View Last Navigation, la misma permite ver la navegación de un objeto, sin tener que especificarlo, y como un TAB del mismo objeto.
Es sumamente práctica, ahorra tiempo y sobre todo facilita la tarea.

Por ejemplo, hicimos el cambio en un dominio o atributo bastante usado. Queremos ver la navegación de un objeto y para verlo, nos comemos validación de subtipos y especificación de varios objetos, cuando solo queríamos ver uno. Hay formas de evitarlo, pero son medio engorrosas. Esta extensión soluciona el problema.


Si hay mas de un generador, muestra solo la primera de las navegaciones.
Se muestra siempre la navegación de la ultima especificación  Si el objeto cambio, hay que respecificarlo con un F5, para poder ver la ultima.


 La recomiendo, pues esta buena. Pronto sale la versión para Ev2.

EDIT: Ya salio la version para la Ev2.
http://marketplace.genexus.com/viewproductversion.aspx?345,1,0,0,





Sobre Migrabilidad de KB

Imagen
Después de mi charla en el Evento Genexus sobre Migración de KB grandes, algunas personas se me acercaron para consultar y comentar sobre procesos de conversión de Kbs.

Un par de conocidos, me comentaron que la charlas los había decidido a migrar (*)  y uno me dijo que iba a tener que ajustar un presupuesto que estaba haciendo para una migración  pues veía que le iba a llevar mas horas de las que pensaba dedicarle.  Esos comentarios me dejaron contento y si  pudo ayudar a un par de personas, la charla valió la pena.

También converse con otras personas, que comentaban algunas dificultades en la migración de sus KB, porque tenían particularidades que hacían que no funcionaran en la nuevas versiones de GeneXus.

Algunas que me comentaron

Modificación de la GXClasses, para adaptarla a mi problemáticaInclusión de javascript en el HTML para mejorar la usabilidad (simular el IsValid).Sistema de menúes propios, no GenexusModificación de objetos generados por PatternsModificación del fuente gen…

Migrando grandes KB

Imagen
Llegó el XXII Encuentro Internacional GeneXus. A pedido de GusCarr, me tocó dar la charla sobre metodologías de migracion en KB grandes. Puede no parecer un tema muy atractivo, pero creo que puede ser útil para varios que tengan que enfrentarse al problema de instalar una nueva versión de GeneXus. El contenido de la presentación de la charla se puede ver (y bajar):

Edit: Se puede ver el Video y la presentacion en el link
http://www.genexus.com/encuentro2012/xxii-encuentro-genexus--materiales?es,0,,3006


Migrando grandes KB from Enrique Almeida