viernes, 17 de julio de 2009

Reorganizaciones en diferido

Hay escenarios que requieren que la creación o reorganización de la base de datos no sean ejecutadas en vivo y en directo. Es decir que en el momento que se generan los programas de reorganización y aplicación, no se desea ejecutar la reorganización (ni tampoco la aplicación).

Son varios los escenarios, pero en general se reducen a que no se cuenta en desarrollo con el DBMS (o versión del DBMS) de producción.

Estos escenarios se habilitan, o por lo menos se facilitan enormemente, en GeneXus X Evolution 1, desde hoy.
La funcionalidad que lo habilita es una opción '-donotexecute' a agregar en las opciones de creación / reorganización de un Environment.
Notar que esta implementación permite diferir la ejecución de la reorg tanto si la generación se hace desde el IDE como si se hace en forma batch utilizando tareas MSBuild.

No debe confundirse con la property "Reorganize Server Tables" con valores [Yes|No], pues ésta hace que los programas de reorganización ni siquiera se generen.

Ambas opciones (la propiedad 'Reorganize Server Tables' y la opción '-donotexecute') logran que se sincronicen modelos de diseño y de trabajo y se genere la aplicación también sin que la base de datos esté sincronizada con el modelo; en ambas no se verifica la correcta ejecución de la reorganización y por ende en todos estos casos se difiere, no solo la ejecución, sino también el Test.
Es por esto que estas opciones, muy útiles por cierto, podrían también llevar un cartel del estilo "Úsese con moderación".

jueves, 16 de julio de 2009

Más forms se mantendrán automáticamente

Si un form es default, los cambios que realizo, en la estructura de la transacción o en los controles asociados a los campos, se ven reflejados automáticamente en el form.
Visualmente se puede distinguir un form default de uno que no lo es con una marca verde o roja, como se ve en la siguiente imágen donde el Web Form no es default y el Win Form sí.


El concepto de Default Part (Part = Web Form, Win Form, Rules, Events, etc) se extiende a objetos generados por un pattern. Si una parte del objeto es default, la instancia del pattern asociada lo mantendrá automáticamente.

Poder mantener una parte "Default" implica bajar esfuerzos de desarrollo inicial, pero principalmente de mantenimiento. Agrego, quito, modifico atributos, y los forms van mostrando los campos que deben y de la forma correcta.

Los constructores de Patterns y también Artech mismo se esfuerzan en brindar la flexibilidad y potencia necesaria y suficiente a los mecanismos de generación para que lo generado pueda ser "Default" y el usuario no tenga que perder ese dinamismo.

En el build de GeneXus X Evolution 1 que está público ahora, al respecto se hicieron varias mejoras, con lo que es de esperar que a partir de ahora habrá más forms y partes Default que antes:

1) Se incluyó una propiedad a nivel de atributo en transacción llamada "Include in Default Form" [True|False].
Motivo: es usual tener campos para cálculos o de estado, internos, que el usuario final no precisa ni debe ver.

2) Los atributos que están referenciados por la propiedad "FileTypeAttribute" o "FileNameAttribute" de un atributo Blob ya no son mostrados en el form Default.
Motivo: esos campos suelen ser auxiliares también.

Tanto el mecanismo para generar el form de una transacción como el del pattern workwith toman en cuenta estos dos puntos nuevos.