viernes, 11 de noviembre de 2011

WebPanel Designer: Una manera innovadora de construir Web Panels


Frecuentemente los desarrolladores intentamos evitar la construcción de web panels por la pérdida de productividad que implica e intentamos  realizar  todas las pantallas con el patrón "trabajar con", lo cual muchas veces no nos da la mejor usabilidad.
Presentamos el nuevo producto K2B WebPanelDesigner que soluciona esta problemática, y no requiere tener otras herramientas de K2BTools para ser utilizado.



Introducción

La construcción de soluciones basadas en patrones es muy útil a la hora de desarrollar una aplicación de forma rápida, homogénea y con las mejores prácticas de desarrollo.

Con el objetivo de poder especificar todos los web panels, incluyendo aquellos que no cumplen con un patrón, se ha sobre utilizado la tecnología de patrones. Si bien esta solución es válida, porque se logra alcanzar mayor productividad, existen mejores soluciones  para resolver determinados escenarios.


Uso de Patrones

Uno de los escenarios por el que surgieron los patrones en GeneXus es para crear todos los componentes de mantenimiento de una entidad de manera automática. A partir de una transacción se genera una instancia por defecto y el usuario, con poca o ninguna modificación, logra generar los objetos que resuelven ese comportamiento.
En general, cuando la realidad a especificar sigue determinado patrón, esta se puede especificar a un alto nivel de abstracción, sin requerir posteriormente demasiada customización por parte del usuario. 



Fig1: Instancia por defecto a la izquierda, a la derecha objetos generados.

¿Qué pasa cuando queremos desarrollar un web panel que no sigue ningún patrón?

En un web panel pueden haber múltiples grillas, acciones, formularios, etc.  Si utilizamos
un patrón GeneXus para crear el web panel, una primer consecuencia que trae es que al crearlo, no se puede inferir su especificación por defecto, ya que no hay patrón a seguir. Por lo  tanto, el usuario deberá especificarlo de forma completa desde cero. Esta es una de las razones por las que se necesita  mayor poder de edición y  mayor libertad para customizar el comportamiento particular que va a tener ese web panel.



Figura 2 : Objeto que no cumple con un patrón específico: posee múltiples grillas, tabs, secciones ,etc.

Hasta ahora la solución que proponía K2BTools era el Pattern K2BWebPanelBuilder mejorando mucho la productividad si lo comparamos con hacer este mismo objeto manualmente.  Continuando con la búsqueda de la mejor solución, cambiamos el K2BWebPanelBuilder para  que la especificación en lugar de hacerse usando la herramienta patterns se pueda realizar dentro del mismo web panel  y en un nivel mayor de abstracción.
Este diseñador de web panels se llama K2BWebPanelDesigner (actualmente en proceso de beta) con el cual creemos es la forma de mejorar la construcción de web panels junto con GeneXus.

Esta forma de especificar Web Panels brinda al usuario una mejor usabilidad, más inteligencia y más potencia respecto al uso anterior del patrón.



Algunas de sus mejoras son las siguientes:

  • Es más fácil acceder a la especificación ya que la misma es parte del propio web panel.  

Figura 3 : K2BDesigner es una parte nueva del web panel.

  • La  especificación integrada como una parte dentro del mismo objeto,  mejora y facilita enormemente su uso, ya que permite:
    • Tener dentro del historial del objeto tanto la especificación  como las demás partes, quedando asi el registro de todos los cambios de forma integrada.
    • Al exportar los web panels no es necesario  exportar el objeto y la instancia (y acordarse); sino es suficiente solo con la exportación del objeto .
    • Facilita el trabajo de GXServer debido a que no es necesario preocuparse en subir la especificación por separado del objeto.
    • Al ser un diseñador que forma parte del objeto  nunca se ejecutarán procesos en background, aumentando la performance y la velocidad del trabajo en la KB.

  • La especificación se realiza mediante  nodos y  propiedades que son dinámicas,  permitendo por ejemplo:
    • Que  nodos y propiedades sean  visibles dependiendo del contexto y de las demás propiedades.
    • Que se eliminen propiedades que no aplican al contexto y dificultan la tarea del programador al especificar.
    Figura 4: Editor dinámico.  Cuando se modifica la propiedad Type de Button a Image aparecen nuevas propiedades. 

    • Se mejoran además  varios  aspectos del trabajo con nodos y propiedades, por ejemplo: 
      • Se mejora la inteligencia de los defaults de las propiedades. El valor por defecto puede ser inferido de varias propiedades, incluso de cualquier dato de la KB.
      • Cada nodo tiene su propio identificador y el diseñador se encarga de que los mismos no se repitan. Esto facilita el copy and paste o el cut and paste desde otra instancia, sin generar inconsistencias.
      • Desde un nodo se puede navegar a los eventos generados por él, agilizando así el acceso a la subrutina para customizarla.


    Figura 6 : Desde cualquier nodo que genere subrutinas (por ejemplo nodo action), se puede ir de forma rápida al evento que la implementa.
    • Se brinda más inteligencia en la generación y mantenimiento del objeto:  Se mantienen sincronizadas las distintas partes con el código agregado por el desarrolladorDe esta forma ante cualquier cambio (ya sea código generado o código agregado por el usuario) se mantiene válido el webpanel. 


    Otras de las ventajas es que  pensando hacia el futuro hemos desarrollado el K2BWebPanelDesigner sobre un framework llamado K2BObjectDesigner (extensión Genexus).  Esto nos brinda la posibilidad de desarrollar diseñadores de webpanels de la misma manera que la tecnología patterns nos permite desarrollar patrones.

    Actualmente el diseñador WebPanelDesigner es un add-on o plug-in de K2BObjectDesigner. Por ahora y durante el proceso de beta contaremos únicamente con WebPanelDesigner pero es factible que en un futuro tengamos otros.


    Pueden ustedes mismos descargar esta herramienta y probar los beneficios que da en la
    construcción de web panels.  Está disponible para la Evolution 1 y para la Evolution 2 cuando se libere una nueva beta de esta plataforma.


    Es importante resaltar que no es necesario tener instalada ninguna de las otras herramientas creadas por K2BTools para trabajar.



    K2BWebPanelDesigner está en proceso de Beta así que las licencias temporales se otorgarán a quienes la soliciten. Pueden descargar la versión para Ev1 o Ev2  desde aquí.
    La documentación la 
    pueden obtener desde http://www.k2btools.com/files/Documentacion-K2B-Web-Form-Designer?es

    Los siguientes videos muestran webpanels construidos con WebPanelDesigner y como se construyen:
    El soporte durante el proceso de beta será a través de nuestro foro: Foro K2BTools

    Martin Barreto @mtnBarreto
    K2BTools

    1 comentario:

    1. Hola, trabajando con GX Ev2 y K2bTools, me encuentro con que tengo un WP al cual le aplico el K2b WebPanelDesigner y creo una grilla, dentro de las opciones me aparece la opción "Defined by". En otro WebPanel hago lo mismo pero esta opción no me aparece...:p ¿Alguna idea que puede ser? Gracias.-

      ResponderEliminar