martes, 20 de mayo de 2014

Be Smooth with K2BTools






En este artículo  analizaremos el Smooth User Experience, una nueva forma de desarrollar y mejorar la usabilidad de nuestras aplicaciones,  y como todo esto puede ser aprovechado usando K2BTools. Smooth UX es un conjunto de tecnologías que permiten desarrollar  con GeneXus aplicaciones con interfaces altamente dinámicas, viendo datos en tiempo real, con componentes que se refrescan  en forma independiente, con interfaces  más fluidas. Esto permite que las aplicaciones que desarrollemos tengan similares características a las aplicaciones que ya estamos acostumbrados a usar como por ejemplo Facebook, Twitter, Gmail o Google+. Esto es posible gracias a que GeneXus en su versión Evolution 3 ha incorporado un nuevo modelo de eventos y otras características, que mejoran enormemente la experiencia de usuario final y además le hacen más fácil la vida al desarrollador GeneXus.


Nuevo modelo de eventos

Usando Smooth UX, el modelo de eventos es mucho más sencillo. Antes, cada vez que se ejecutaba un evento de usuario, se ejecutaba: el start, lectura de variables en pantalla, luego el evento de usuario, refresh y load. Ahora se ejecuta únicamente la lectura de variables y el evento de usuario, minimizando el procesamiento necesario.




Esto simplifica la forma en la que se desarrolla en GeneXus.
Si ese evento de usuario, requiere que se recargue una grilla, hay que colocarlo explícitamente  utilizando el comando Grid.Refresh(), haciendo que las grillas solo se refresquen si es necesario y además dejando mucho más claro en el código que sucede cuando se ejecuta una acción de usuario.

Esto trae una consecuencia muy buena en el tráfico de datos. En cada evento de usuario, viaja mucha menos información que en el modelo anterior. Por ejemplo, en el caso de un evento de usuario, el tráfico de subida con el modelo anterior era:


mientras que el tráfico con smooth es:


Con este nuevo modelo de eventos en GeneXus vamos a tener menos tráfico (según ARTech hasta un 90% menos), menos procesamiento en el servidor y menos procesamiento en el cliente. Gracias a esto podemos tener aplicaciones más veloces.
Sumado a esto,  si de una página se navega a otra con la misma master page, no se refresca la master page sino que se mantiene y solo se refresca la parte que cambia. 

¿Cómo adoptar Smooth?

A nivel de modelo se cuenta con una propiedad de nombre WebUserExperience



Sus valores pueden ser Smooth o Previous version compatible. Con Previous version compatible, el modelo de eventos sigue siendo el mismo que en versiones anteriores de GeneXus.
Cuando se convierte una base de conocimiento de una versión anterior a la nueva, GeneXus toma el Previous version compatible como valor por defecto, mientras que para nuevas bases de conocimiento es Smooth Esta propiedad se encuentra también a nivel de objeto (webPanels y transacciones) , por lo tanto se pueden tener objetos con Smooth (los nuevos objetos que desarrollemos) y objetos con Previous versions compatible.

¿Cómo usar Smooth UX con K2BTools?

En la última versión de K2BTools para GeneXus Evolution 3, se soporta Smooth UX, tanto en los patrones como en el WebPanelDesigner.
En los patrones la generación con Smooth UX se activa en el nodo K2BTools->General usando la propiedad WebUserExperience. Por defecto esta propiedad toma el valor de la propiedad WebUserExperience del modelo GeneXus.


En el WebPanelDesigner, se lee la propiedad del WebPanel. Si el WebPanel tiene smooth UX activado, se genera todo usando esa funcionalidad y sino se sigue generando el código de versiones anteriores.

¿Cómo migrar a Smooth UX con K2BTools?

Al estar parado en un mayor nivel de abstracción con K2BTools, en el código estándar generado por los patrones la migración es automática. El único caso que el usuario deberá analizar son las acciones de usuario. En este caso en el nodo action de la instancia del pattern aparecerá una nueva propiedad de nombre RefreshGrid, que indica si luego de ejecutar la acción se refresca la grilla o no. Por defecto, para que todo siga igual, su valor es true  pero si ya se sabe que la acción no requiere que la grilla se refresque, se puede modificar para evitar refrescar en forma redundante.

Sobre el WebPanelDesigner, lo único que se debe tener en cuenta son las subrutinas de usuario asociadas a una acción. En tal caso se deberá analizar si se necesita ejecutar un Grid.Refresh() para refrescar la grilla, o no lo requiere.

De esta forma de una manera muy fácil y sencilla uno tiene su aplicación migrada al nuevo modelo Smooth, logrando que su aplicación sea más ágil, visualmente atractiva, y que el desarrollador entienda con mayor claridad cómo funciona el modelo de eventos.

Actualmente agregamos en el marketplace K2BTools for  GeneXus Evolution 3 como producto independiente para que puedan probar el funcionamiento de K2BTools con Smooth y para continuar liberando versiones de K2BTools que aprovechan  todas las ventajas que da la Evolution 3 de GeneXus. Una vez culminado el proceso de prueba, lo agregaremos como setup dentro del producto K2BTools.

La versión de K2BTools For Evolution 3 la puden descargar desde aquí
Cualquier sugerencia puede contactarse con el equipo de soporte de K2BTools (support@k2btools.com) o escribirnos a través del foro http://www.k2btools.com/comunidad/foro?es


Federico Dominioni.

2 comentarios: