Mostrando entradas con la etiqueta GeneXus X Evolution 1. Mostrar todas las entradas
Mostrando entradas con la etiqueta GeneXus X Evolution 1. Mostrar todas las entradas

martes, 27 de abril de 2010

Cómo no refrescar instancias y salvar rápido

Al salvar un objeto (en el Save, Import, Build, Update,etc.) GeneXus y los Patterns, by default, calculan y salvan las instancias de patterns y objetos asociados que podrían verse afectados.

Esto es buenísimo en la mayoría de los casos: En vez de yo tener que pensar y hacer cambios manualmente en unos 2,20,200 o más objetos, GeneXus + Patterns lo hace automáticamente.

Pero el arma tiene dos filos. No siempre se desea que las instancias u objetos "emparentados" se cambien. A veces definitivamente no se desea y a veces temporalmente; por ejemplo cuando preciso hacer un cambio puntual en un objeto para enviar ese objeto a producción y quiero posponer los posibles cambios a los demás objetos.

En particular, dependiendo también de la implementación del pattern y de la complejidad y tamaño de la KB, los cálculos y operaciones para actualizar automáticamente instancias y objetos pueden ser muy costosas. Estamos hablando de varios segundos o minutos de overhead al salvar un objeto en algunos casos.

Es para esto que existe la propiedad Dynamic Pattern Update con valores YES|NO a nivel de KB Version.

En forma predeterminada está en YES; si la configura en NO, agilizará el desarrollo en determinadas situaciones.




Esta funcionalidad existe desde GeneXus X Evolution 1, la menciono ahora porque me he chocado en estos últimos días con varios reportes del estilo "demora mucho el salvado de una trn en la xev1" y averiguando detalles siempre surgió que la demora no era en el salvado de esa trn sino en los subsecuentes cálculos.

Más sobre esta funcionalidad y relacionadas:

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.


lunes, 29 de junio de 2009

Nuevo look de GeneXus X Evolution 1

Luego de liberada la RC, se proseguirá en unos días con nightbuilds para así liberar pronto esta versión.
Como se ve en la página de los nightbuilds, el próximo viene con varias mejoras.
Unas mejoras fáciles de explicar con una imágen y no tanto con palabras son las que se ven a continuación: (click para agrandar y ver detalles)



Este post se podría haber llamado también "Encuentre las 4 diferencias básicas con la RC."
(Los que pidieron las featues, seguro que las verán.)

jueves, 18 de junio de 2009

Ejemplo para acceder a API de GXflow

Que la aplicación desarrollada siga un workflow, en GeneXus X es fácil: Drag & drop de los objetos a un diagrama de procesos, que en Evolution 1 cumple con el estándar BPMN (Business Process Management Notation), salvar y dar F5 o RUN. Pronto. Aparece una pantalla, el Workflow prototyper con un menu con tareas administrativas y un inbox en donde ya tengo asignada una tarea para probar el flujo diseñado. Plug & Play.

Ahora, ese motor que se usa también tiene una API, y es tan completa que todo lo que hace ese prototyper se puede hacer usando la API; y más.

Hay un ejemplo en el GXserver público http://public.genexusserver.com/gxserver/home.aspx?GXflowCustomClient
Pueden via browser visualizar los objetos desarrollados y cómo acceden a la API (sus eventos, reglas, web forms, source, estructura, etc.). Los objetos que usan la API y los External Objects que conforman la API están bajo el folder 'Workflow'.

También se pueden bajar la KB a su instalación local y probarlo. Hay una guia para eso en el Main Document de la KB. Se comienza haciendo File -> New -> Create KB from Server en su instalación local de GeneXus X Evolution 1.

El XPZ a partir del cual está hecho parte de la KB viene con la instalación de GeneXus, está debajo de \Packages\GXPM\Extra ... pero pienso que es mucho mejor que "ensuciar" su KB con ese ejemplo, el verlo online en un browser, verdad que sí?
Además, por qué no seguir ampliando entre todos ese ejemplo?

miércoles, 10 de junio de 2009

Data Providers y Business Components para inicializar datos

El ejemplo de Easy Invoicing mencionado en http://samples.genexus.com ahora usa Data Providers, Business Components y la nueva funcionalidad de Initial Value para cargar los datos.

Antes usaba news. Por qué? porque uno por inercia no cambia. Uno se acostumbró a hacer las cosas de determinada forma. Es relativamente rápido, funciona y listo, ya está, por qué cambiar?

Si se conoce la potencia de los Data Providers, el por qué queda claro.
Vean la imágen que pone en evidencia las ventajas.

En la imágen se ve que
- queda mucho más legible la solución nueva porque queda claro cuál registro del segundo nivel corresponde a cuál del primero
- no preciso usar variables auxiliares para obtener el resultado de autonumber
- no preciso serializar yo ni autonumerar
- preciso hacer menos asignaciones porque las cosas se resuelven en el Business Component. Un ejemplo es InvoiceDate: A nivel de atributo especifiqué la propiedad InitialValue en Today(). Otro ejemplo es el "último del serial" también.
- no vuelvo a programar reglas de negocios en el procedimiento evitando errores de programación o inconsistencias y bajando costos de mantenimiento.

Más Notas: La propiedad Initialvalue, a especificar en un Dominio o Atributo,en GeneXus X Evolution 1 es como un default de defaults.
En el ejemplo, &Invoice es de tipo Invoice siendo Invoice la transacción del mismo nombre.
&InvoiceCollection es una Collection de Invoices. Las variables no las precisé ni definir ... GeneXus lo hace solo porque usé la nomenclatura adecuada.


La aplicación está para probar online en ejecución en http://samples.genexus.com/easy .
La Knowledge base está online en el GeneXus Server público y gratuito disponible para toda la comunidad GX http://gxserver.genexusx.com/ (lo cual permite visualizarla via browser o bajarla y y probarla con su GeneXus X Evolution 1 en forma local).
Recomendación de la casa: bajarse el último nightbuild de evolution 1.

Esto es para generar inercia de cambio, para que por inercia ... cambiemos y no nos quedemos.

jueves, 12 de marzo de 2009

Aplicaciones y KBs online para sentir la evolución

www.gxopen.com, www.gxwiki.com, forumsr.gxopen.com estan todos ya generados y en producción con  Evolution 1, y no son solo ejemplos! 

En http://samples.genexus.com estan los links a las KBs correspondientes para que las puedan bajar y además más ejemplos que sirven para ver la potencia de GeneXus X Evolution 1 Beta 2.
Ejemplos para ver cómo los usuarios de estas aplicaciones pivotean online, cómo visualizar la información en forma dinámica con la nueva Visualization Library y demás.

Solo agrego 2 imágenes tomadas de estos ejemplos:
Avance de Ingresos por ventas asociadas a perros y gatos al 26/6/96 y su evolución en el tiempo:





Resultados de exámenes hechos a diversos alumnos por carrera, instructor, curso, colegio, etc.:






La buena noticia además es que no solo estan online sino que todas son open source y ya la mayoría estan públicas en este GXserver que se pone a disposición free para toda la comunidad http://gxserver.genexusx.com/genexusserver/

Download GeneXus Server

Junto con la Evolution, se está desarrollando un nuevo producto, GeneXus Server. 
Estado actual: Beta 2
Si no es beta tester, siga estos pasos.
Vea esta noticia para obtener un resumen. Vea más aquí
Vea este documento para saber cómo integrar su equipo de trabajo con GeneXus Server. Gustavo subió unos videos que lo hacen más claro todavía


GeneXus Server (GXserver) se construye para facilitar el trabajo en equipo. El conocimiento del negocio quedará centralizado y el equipo de trabajo estará continuamente integrado, al usar GXserver, a pesar de estar potencialmente distribuido geográficamente. 

Con GXserver todo el trabajo se hace más fácil y los avances se monitorean más fácilmente también.

Download GeneXus X Evolution 1 Beta 2

Si no es beta tester, siga estos pasos
Más información: www.genexus.com/evolution

Recomiendo leer la noticia a la que hice referencia porque creo que realmente es un buen resumen de a qué apunta la versión.

GeneXus X Evolution 1 incluye Windows y Texto además de Web, facilita el trabajo en equipo, lleva la experiencia del desarrollador a un nivel superior y lo hace orgulloso de las aplicaciones de misión crítica que construye. La Beta 2 es un paso importante en muchos aspectos.

www.genexus.com/evolution 


PD: Uy, que vieja esta noticia :-). En realidad se liberó hace 3 días!!