Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
0125 k2 b_tools_el_futuro_más_cerca_de_vos
1. El futuro más cerca de vos Federico Dominioni fdominioni@k2business.com
2. Agenda Subiendo el nivel de abstracción… Entidades y Actividades Mejorando especificación de interfaz Nuevo web panel builder Mejorando la interfaz de usuario Rich Interfaces
Buenosdías, mi nombrees Federico Dominioni, soy encargado del equipo de desarrollo de K2BTools.Elevandoaúnmás el nivel de abstracción, mejorando la usabilidad y productividad de la especificación de objetos con interfaz, ¿cómoobtener interfaces mucho másricas?... Todoesodescúbralo en estacharla. Descubraquetendránlaspróximasversiones de las k2btools. Descubracuáles el futuro.
Cuando desarrollamos una aplicación lo que queremos es a partir de un conjunto de requerimientos llegar a obtener una aplicación en ejecución que los satisfaga. Muchas veces en esos requerimientos hacemos un relevamiento funcional y finalmente escogemos que funcionalidades implementar. A partir de eso, o de alguna otra especificación más formal, vamos a GeneXus y definimos los objetos que implementan esa solución. Definimos las transacciones, los objetos GeneXus necesarios. Aplicamos patterns sobre las transacciones que consideramos necesarias, aplicamos el web panel builder para los web panels que queremos generar y desarrollamos el resto de los objetos GeneXus manualmente.Este es el nivel de abstracción en el que trabajamos habitualmente con las k2btools.Nosotros queremos subir aún más ese nivel de abstracción. Queremos acercarnos más a los requerimientos.¿Qué ganamos subiendo el nivel de abstracción?... Ganamos la posibilidad de inferir mucho más programas. El poder especificar un modelo semántico basado de mayor abstracción dentro de GeneXus nos permitiría por ejemplo generar más cosas. Incluso podríamos a partir de esa especificación ya generar parte de las transacciones, web panels, instancia de patterns, objetos GeneXus, etc.Este modelo está basado en entidades y actividades.Qué es una entidad?Una entidad define un objeto de la realidad. Es el conjunto de transacciones necesarias para que el “objeto de la realidad” quede definido correctamente en el sistema. Una entidad además tiene un conjunto de operaciones que actúan sobre ella.
Veremos aquí cómo se define la entidad… para esto voy a crear una entidad nueva. La entidad es un objeto GeneXus nuevo definido por las k2btools.Para esto parado en GeneXus, voy a poner new entity . Voy a definir una entidad de nombre EntidadProducto. Lo primero que me aparece es una pantalla donde me permite ingresar qué tipo de entidad es. Ahí me aparece una tipo semántico de si es un Objeto, un Actor o un Evento. Un objeto es algo tangible de la realidad, en este caso el producto. De esta manera voy a definir mi entidad como si fuera un objeto. No reinventar la rueda: Muchas veces cuando desarrollamos un sistema, existen un conjunto de entidades que son siempre iguales. Estructuras geográficas, productos, etc. Esto permite tener ya modelos catalogados para que nosotros podamos elegir cual utilizar, según la complejidad de la aplicación. De esta forma puedo decir esta entidad es una estructura geográfica y las k2btools se encargan de consolidar los elementos necesarios. O sea puedo crear una aplicación diciendo esto es un producto, esto es un país. Incluso brindamos la posibilidad de que ustedes cataloguen su propio modelo.Defnir nueva entidad: De todas formas lo que vamos a hacer ahora es definir una entidad desde 0. Simplemente le voy a decir que es un objeto.Inmediatamente después paso a definir las transacciones que componen la entidad.DEFINIR TRANSACCIONESMOSTRAR DIAGRAMA.CONFIGURAR PROPIEDAD GENERATE ON SAVE.PARARME EN LA PARTE DE ACTIVIDADES Y PONER GENERAR.Actividades:Asociado a una entidad existen actividades que operan sobre ella. La forma en la entidad se comunica con el exterior es a traves de sus actividades. Algunas activiades tienen interfaz de usuario otras no. Cuando a la entidad se le setea la propiedad GenerateOnSave en true, se generan todas las actividades asociadas a esa actividad.Algunas actividades:Existen actividades que utilizan un SDT, que es un SDT con todos los componentes de la entidad (todas las transacciones que la componen). Esto se utiliza para comunicarse con módulos.Los métodos de New, Set y Delete, reciben como parámetro el SDT de la entidad y dan de alta, eliminan o actualizan la misma. El objetivo de estos métodos es que sean utilizado tanto:Dentro del sistema.Fuera del sistema (puede ser expuesto como web service)…. Permite integrarse con otro sistemaNosotros en k2b lo usamos para comunicación entre módulos.Algunos escenarios que se tienen en cuenta:Cuando uno va a dar de alta una entidad, existen un montón de claves foráneas. Ejemplo una factura, que referencia clientes y productos. Al ser invocado desde una aplicación externa, si el sistema maneja autonumbers para productos y clientes, seguramente las claves primarias no sean la misma… El new se encarga de resolver todo esto a través de la posibilidad de definir claves candidatas. Si existe en la KB un índice unique y en el sdt no se pasan las pks el sistema se encarga de cuando da de alta la factura agregar en la clave foránea la referencia al registro que tiene como CK la que se pasa como parámetro.Como ven la implementación de este método a mano no es nada trivial.Algunos otros métodos interesantes:Exportación/ImportaciónMuchas veces tenemos varias implantaciones o varios ambientes (prototipo/producción)A veces trabajamos en un ambiente, damos de alta los datos y luego lo queremos replicar en el resto de los ambientes. La forma actual de hacerlo es manual.K2BTools brinda la posibilidad de hacer un export de la entidad e importarla en otro ambiente. Se apoyda en los métodos de new, get y delete. El usuario selecciona las instancias de la entidad que quiere exportar y luego las importa.EntityManager:Este es el que ya conocemos. Es el pattern pero aplicado a la entidad.AllInPlace: Forma de dar de alta toda la entidad en una única pantalla. Vamos a ver esto.DAR DE ALTA ÚN PRODUCTOMostrar el workwith también. Ver las diferencias, cada uno de los componentes de la entidad se dan de alta por separado, todos los componentes de la entidad se dan en una misma pantalla.Mejoras: Si en el nexo son muchos elementos, tab para marcar los seleccionados, poder agregar atributos adicionales.Alta masiva,etc.
HACER UN NUEVO WEBPANEL.PONERLE DE NOMBRE SELECTPRODUCTSSALVARMOSTRAR COMO APARECE AL PRINCIPIO LA POSIBILIDAD DE ELEGIR ENTRE DOS TIPOS DE FORMULARIOS. ELEGIR WEBPANELBUILDER.MOSTRAR QUE ES UNA EXTENSIÓN. MOSTRAR QUE TIENE LA MISMA FUNCIONALIDAD QUE EL WEB PANEL BUILDER PERO CON DIFERENCIAS DE FUNCIONALIDAD.USABILIDAD Filtro, cambiar valor del filtro ver como se actualiza la condición. Cambiar atributo del filtro, ver como se actualiza la condición. Clase del tema del filtro, ver como aparece la posibilidad de seleccionar una clase del tema para los filtros.Lefttext ver como cuando se agrega el valor de lefttext se agrega texto a la izquierda automáticamente. Copiar filtro a la zona de atributos ver como se modifica su nombre, etc. Agregar un line separator Agregar un web component de nombre ProductoComponent. Agregar una acción mostrar que puede ser texto o imagen. Ver las propiedades que se habilitan o se deshabilitan según si es texto o imagen. Definir la imagen. Agregarle como nombre selectproduct. Programar el código asociado a la imagen. Mostrar que las variables ya no empiezan con E_, esto es otra mejora. Escribir en el evento. Cambiar nombre de la acción y de la variable y ver como se actualiza. Ver como en el código queda renombrado.Dar F5 y generar. Mientras tanto ver otras ventajas1 ) Exportación , exporta todo el objeto.2) Objetivo que esto lo podamos extender. Se puede especificar su propieda interfaz. Código abierto.3) Nuevos generadores y definidores de metadata… ver por ejemplo el abstractform. Toda la funcionalidad la da el framework, defina usted su propia interfaz.THE END…
Bajo la única definición yo podría escoger que representación quiero usar para cada componente, y acá hago una breve muestra de diferentes cosas que pdoríamos generar solo escogiendo una representación… no todos los datos queremos verlo como grilla.
En este caso veo otro ejemplo. Aquí me interesan ver imágenes, y el dato relevante es la imagen en sí. Para esto la mejor forma de ver esto es a través de un slide show. Además puedo seleccionar una imagen y ver información adicional de esta imagen.
En este caso estoy mostrando un listado de hoteles. En este caso me interesa ver el hotel, el nombre y la ubicación geográfica. Como entre los datos interesantes está la ubicación geográfica del hotel esto lo puedo ver también en forma de mapa, con la ubiccación del hote en este lugar.
En este caso dado que tenemos una relación de jerarquía entre los registros podemos mostrarlo de esta forma, a través de un árbol es la mejor forma de ver estos datos.
Ahora vamos a pasar a los filtros. Existen otras formas de filtrar aparte de la que vimos en el trabajar con. En esta imagen tenemos diferentes tipos de filtro, arriba vemos por ejemplo un filtro por fecha de lanzamiento. Otro por departamento, al estar los departamentos relacionados en una estructura jerárquica se pueden visualizar como árbol… este es otro ejemplo de varios filtros diferentes por atrbitutos. Dominios definidos y por cada item que se selecciona se infiere el centro de la página.
En este caso yo puedo filtrar por letra. Para hacer esto primero la cantidad de valores posibles del filtro tiene que ser acotada. Luego el usuario debe tener en mente porqué valores filtrar y por lo general estos filtros pueden complementarse con otros filtros existentes.