Descargar - K2BTools

Anuncio
Release Notes Versión 8.0
2
Índice
Índice ............................................................................................................................................................. 3
Novedades de la versión 8.0 ......................................................................................................................... 5
Mayor usabilidad en la aplicación generada ................................................................................................ 6
Búsqueda Universal .................................................................................................................................. 6
Mayor potencia en el WebPanelDesigner .................................................................................................. 14
Manejo de SDT en Web Panel Designer ................................................................................................. 14
Mejoras en la personalización de la interfaz de usuario ............................................................................ 19
Nuevas opciones de themes: .................................................................................................................. 19
Mejoras en configuración de Layouts ..................................................................................................... 20
Posibilidad de deshabilitar el seteo de Master Page en Web Panel Designer y Patterns ...................... 21
Mejoras de usabilidad en el desarrollo ....................................................................................................... 23
Comandos Enable / Disable K2BTools Dynamic Pattern Application ..................................................... 23
Comando “Force K2BTools Patterns Application” .................................................................................. 23
Mensajes de advertencia al detectar partes fuera del default ............................................................... 24
Mensajes de advertencia para ausencia de invocación a stack en Master Pages .................................. 24
Opción para mantener regla Parm de la transacción dentro de un slot fixed........................................ 25
Personalización de ubicación de parte Designer .................................................................................... 26
Otras mejoras.............................................................................................................................................. 27
Visualización de descripciones en reportes Excel y PDF ......................................................................... 27
Selección de columnas en runtime para Exports .................................................................................... 27
Deshabilitación global de Back to Work With ........................................................................................ 27
Posibilidad de agregar código en nodos Action ...................................................................................... 28
Propiedad para deshabilitar grids sortables ........................................................................................... 29
3
Propiedad “Enable datepicker” en patterns ........................................................................................... 29
Propiedades Height y Width en Embedded Pages ................................................................................. 30
Nuevas subrutinas de usuario para Add y Remove en Multiple Selections ........................................... 30
Errores corregidos ....................................................................................................................................... 32
Patterns ................................................................................................................................................... 32
Web Panel Designer ................................................................................................................................ 32
Instalación ................................................................................................................................................... 33
Instalación en GeneXus Server ............................................................................................................... 33
Anexo I – Actualización de reportes Excel. ................................................................................................. 34
Anexo II – Incorporación del buscador universal. ....................................................................................... 34
4
Novedades de la versión 8.0
Entre las nuevas funcionalidades incorporadas en K2BTools 8.0 se destaca el aprovechamiento
de la funcionalidad Full Text Search de GeneXus, mediante la posibilidad de incorporar de forma sencilla
un buscador universal en las aplicaciones generadas por K2BTools, agregando un nuevo punto de acceso
a la aplicación.
Dentro del WebPanelDesigner se sigue aumentando la flexibilidad, haciendo más sencilla la
integración con servicios, mediante la posibilidad de poder incorporar SDT´s directamente en pantalla.
Por otro lado seguimos apuntando a mejorar la usabilidad de la herramienta. Para esto hemos
implementado un acceso directo a la funcionalidad de GeneXus dynamic pattern update para poder
habilitar y deshabilitar de forma rápida la actualización automática de instancias de patterns. Además
ahora se emiten warnings cuando se detectan situaciones anormales en la KB y se brinda una acción que
aplica todas las instancias del patrón.
Seguimos trabajando en tener una mayor facilidad en la personalización de la interfaz de
usuario. En este caso basados en el tema K2BModern proveemos otros nuevos temas, además de
brindar mayor flexibilidad al desarrollador.
En estas release notes hemos dividido las funcionalidades nuevas en cinco categorías:





Mayor usabilidad en la aplicación generada: Aquí se muestra cómo hacer uso de la funcionalidad
de FullTextSearch para poder tener un buscador universal en la aplicación generada.
Mayor potencia en WebPanelDesigner: Aquí se presenta la posibilidad de agregar SDTs en
pantalla directamente desde el WebPanelDesigner, para hacer más sencillo interactuar con
servicios que devuelven o reciben datos en forma de un SDT.
Mejoras en la personalización de la interfaz de usuario: En esta sección se muestran las nuevas
opciones de interfaz que provee K2BTools.
Mejoras de usabilidad en el desarrollo: Aquí se listan las mejoras que se hicieron en esta versión
para hacerle más fácil al desarrollador usar K2BTools
Otras mejoras: En esta sección se muestran varias mejoras que se incluyen también en esta
versión.
Para el pasaje de versión de una KB con la 7.1 a la 8.0, se sugiere seguir el Anexo I.
5
Mayor usabilidad en la aplicación generada
Búsqueda Universal
En la versión 8.0 se K2BTools se agregó la posibilidad de incorporar fácilmente Full-Text Search
en los sistemas generados. Usando esta funcionalidad, se puede brindar al usuario una interfaz más
fluida y más agradable para hacer búsquedas.
Visión funcional
El resultado final de incorporar esta funcionalidad es la inclusión de la opción de búsqueda en la
aplicación generada, con el comportamiento que se describe a continuación
Consultas
En la Master Page de la aplicación, aparece un campo para ingresar el criterio de búsqueda.
Ilustración 1 - Campo de búsqueda en la Master Page
Luego de completar este campo, se redirige al usuario a una página con el resultado de su
búsqueda:
Ilustración 2 - Resultados de búsqueda
6
Pueden usarse las opciones en la parte superior para ver los resultados de un tipo particular: Los
clientes, las ciudades, etc.
Ilustración 3 - Vista de clientes de los resultados obtenidos
Este mecanismo de búsqueda acepta consultas complejas. Por ejemplo, es posible indicar
términos como “*@example.com”, que retornará (en este caso) todos los clientes con dirección de
email en el dominio “example.com”.
Ilustración 4 - Resultado de buscar "*@example.com"
El motor también acepta expresiones booleanas, como “NOT Perez AND Gerente”, que
retornará las entradas que tengan la palabra Gerente pero no la Palabra Perez, en este caso:
Ilustración 5 - Resultado de buscar "NOT Perez AND Gerente"
Las consultas aceptadas están documentadas en la página del wiki GeneXus sobre esta
funcionalidad.
Controles de seguridad
Las siguientes consideraciones son hechas al momento de ejecutar la búsqueda:
7
1. Para que el usuario pueda realizar búsquedas deberá tener permisos a realizar la actividad de
usuario: K2BToolsSearchResult. Si se usa la integración con el GAM el permiso será
K2BToolsSerachResult_Execute
2. Al momento de mostrar los tabs para filtrar los resultados de búsqueda, se toman en cuenta los
permisos del usuario conectado, usando la API de seguridad de K2BTools.
3. Cuando se realiza la búsqueda, se usa esta misma API para verificar que el usuario tenga acceso
a los objetos encontrados.
Formato del resultado
Cada uno de los resultados tiene los elementos definidos a continuación.
Ilustración 6 - Composición de resultado de búsqueda
Ingreso a resultados
Cuando se presiona en el título de un resultado, se dirige al usuario al Entity Manager
Correspondiente.
Ilustración 7 - Redirección a "Entity Manager"
Administración
Es posible administrar el motor de búsqueda en el panel K2BToolsIndexAdmin, donde se habilita la
opción de volver a regenerar los índices utilizando la operación reindex-all.
8
Para poder acceder a la administración, el usuario deberá tener permisos para realizar la actividad de
usuario K2BToolsIndexAdmin, o en caso de usar la integración con GAM tener el permiso habilitado de
K2BToolsIndexAdmin_Execute.
Cambios en patterns
Para implementar esta funcionalidad, fue necesario incorporar nuevas propiedades a la
instancia de patterns. Estas propiedades afectan únicamente la generación de los diálogos de búsqueda.
Los cambios están acotados al pattern K2BEntityServices.
Las propiedades agregadas fueron:
En el nodo raíz de la instancia
Ilustración 8 - Propiedad "Entity Image"
En este nodo se agregó la propiedad “Entity Image”. El contenido de esta imagen debería
representar de forma genérica a los elementos de la entidad correspondiente. Es usado en algunos
casos como icono para el resultado de la búsqueda si el registro a mostrar no tiene una imagen
asociada.
En el nodo Transaction
En este nodo se especifican las propiedades que definirán si la entidad puede ser buscada
mediante el buscador universal, y, en caso de poderse, cómo son mostrados los resultados.
Ilustración 9 - Nuevas propiedades en nodo Transaction
A continuación se describen estas propiedades y su uso.
Searchable
9
Esta propiedad determina si las instancias de esta transacción serán incluidas en el motor de
búsqueda o no. Su valor es copiado a la propiedad “Searchable” de la transacción GeneXus.
Como una transacción sólo puede ser incluida en el motor de búsqueda si es Business
Component, esta propiedad se muestra solo en este caso.
Si el valor de la propiedad es “False”, se deshabilita la generación de los diálogos de búsqueda
para la transacción. Por esta razón, se ocultan también todos los campos asociados a esta búsqueda.
Search Result Title
Esta propiedad indica cuál es el título que debe mostrarse en el resultado de búsqueda. El valor
default es el Description Attribute de la transacción en caso de existir.
Search Result Displayed Image
Esta propiedad determina si se usará un atributo imagen de la transacción (definido en la
siguiente propiedad) como imagen para los resultados de esta entidad, o se usará la imagen
correspondiente a la entidad (definida en el nodo raíz de la instancia).
Los valores posibles para esta propiedad son:



Object Only: Se usará siempre el atributo del objeto que se está visualizando.
Entity Only: Se usará siempre la imagen correspondiente a la instancia.
Prefer Object: Se usará el atributo del objeto siempre que contenga un valor válido, y la
imagen correspondiente a la entidad en cualquier otro caso.
Search Result Image Attribute
Esta propiedad determina cuál es el atributo que será mostrado como imagen del resultado de
búsqueda. El uso de esta propiedad está condicionado al valor de la propiedad “Search Result Displayed
Image”. El valor default es el Image Attribute de la transacción en caso de existir.
Show BC Preview as Result Description y Search Result Description
La propiedad “Show BC as Result Description” indica si debe usarse un preview del BC como
descripción del resultado o no. En caso de usarse, se aprovecha la funcionalidad de highlighting presente
en GeneXus.
Ilustración 10 - Highlighting en resultados
10
En caso de no usarse, la descripción se toma del atributo indicado en la propiedad “Search
Result Description”. Esta posibilidad permite definir descripciones basadas en el valor de un atributo de
la transacción. Puede usarse también para crear descripciones elaboradas usando atributos fórmula.
Ilustración 11 - Uso de "Search Result Description"
Objetos generados por K2BTools
Para cada instancia del patrón Entity Services que tiene la propiedad “Searchable” en “True”,
K2BTools genera los siguientes objetos:


GetSearchData<TrnName>: obtiene el contenido a mostrar para un resultado de búsqueda
determinado, asumiendo que el tipo del resultado se corresponde con la transacción a la que
pertenece la instancia del patrón.
SearchViewer<TrnName>: redirige al usuario al EntityManager correspondiente a la
transacción. Es asignado como “Search Viewer” de la transacción padre de la instancia. Su
generación es necesaria porque esta propiedad acepta objetos que tienen una regla Parm que
recibe sólo la PK de la transacción.
Objetos básicos
La implementación de la búsqueda puede ser modificada por el desarrollador GeneXus, tanto
para modificar la apariencia de las interfaces como para agregar controles u optimizaciones y
extensiones particulares al escenario que se esté resolviendo.
Ilustración 12 - Objetos básicos de search
Los objetos involucrados en esta solución cumplen con las siguientes funciones:
11
1. K2BGetSearchableEntities: Retorna la lista de entidades que están incluidas dentro del índice de
búsqueda.
2. K2BGetSearchableEntitiesCustomImplementation: Permite al desarrollador GeneXus extender
la lista de entidades incluidas dentro del índice de búsqueda.
3. K2BGetSearchDataCustomImplementation: Permite al desarrollador GeneXus extender la
extracción de datos desde un resultado de búsqueda para resultados que no se corresponden a
ninguna transacción generada con K2BTools. Este procedimiento es útil en caso de que el
desarrollador use el motor para indexar documentos fuera de las transacciones de la KB.
4. K2BGetSearchResultFromData: Este objeto no debería ser modificado por el desarrollador, ya
que es mantenido automáticamente por K2BTools. Este procedimiento se encarga de
determinar el contenido a ser mostrado de un resultado a partir de lo retornado por el motor.
5. K2BHeaderModernSearch: Es el header para el theme K2BModern que incluye el campo de
búsqueda. Puede ser alterado para adaptar el header al theme corporativo de la KB.
6. K2BToolsSearchResult: Es el SDT usado para mantener en memoria los resultados a mostrar.
7. K2BTabbedViewForLayoutModernSearch: Contiene la implementación necesaria para separar
en tabs por entidad los resultados de búsqueda.
8. K2BToolsGetSearchResults: Obtiene los resultados a mostrar en la interfaz de usuario. Puede
ser extendido para agregar controles de seguridad u otras funcionalidades.
9. K2BToolsIndexAdmin: Es un Web Panel de muestra que permite al administrador del sistema
forzar la regeneración del índice dentro del motor.
10. K2BToolsSearchResult: Es la interfaz principal para mostrar los resultados de búsqueda. Puede
ser modificada por el usuario para adaptar la interfaz o agregar más opciones.
11. K2BToolsSearchResultEntityWC: Es la interfaz que despliega los resultados para cada entidad.
Puede ser modificada por el usuario para adaptar la interfaz o agregar más opciones.
12. SearchableTransactions: Usado por el procedimiento “K2BGetSearchableEntities” para enviar la
lista de entidades auditables.
Impacto en configuración de Entity Services
Se agregaron nuevas propiedades al objeto de configuración del patrón K2BEntityServices. Estas
propiedades son las descriptas a continuación.
Ilustración 13 - Propiedad "Searchable" en configuración de Entity Services
En el nodo “Transaction”, se incluye la propiedad “Searchable”. El valor de esta propiedad es el
tomado como default por la propiedad de mismo nombre en la instancia del Patrón. Puede usarse esta
propiedad para habilitar o deshabilitar globalmente la inclusión de transacciones en el índice.
12
Ilustración 14 - Propiedades "Search Viewer" y "Search Get Data Procedure"
En el nodo “Objects” se incluyen dos nuevas propiedades: “Search Viewer” y “Search Get Data
Procedure”. Estas propiedades pueden usarse para cambiar el nombre de los objetos generados.
Extensibilidad
Es posible agregar resultados a esta interfaz de búsqueda que no estén dentro de transacciones
GeneXus. Para hacer esto, es necesario usar el mecanismo detallado en la documentación de GeneXus
correspondiente.
Además de realizar estos pasos, es necesario actualizar los procedimientos
“K2BGetSearchableEntitiesCustomImplementation” y “K2BGetSearchDataCustomImplementation”. En
estos procedimientos es necesario agregar la lógica para:


K2BGetSearchableEntitiesCustomImplementation: Incorporar la nueva entidad a la lista de
entidades habilitadas para el usuario. Esto la incorporará a la vista de resultados globales, y
agregará un nuevo tab para la entidad.
La incorporación o no debe considerar los permisos del usuario autenticado en el sistema.
K2BGetSearchDataCustomImplementation: Obtener la información a desplegar en pantalla
para un resultado particular. Concretamente, deben completarse los parámetros de salida para
indicar título, descripción, e imagen.
13
Mayor potencia en el WebPanelDesigner
Manejo de SDT en Web Panel Designer
En la versión 8.0 se incorporó en Web Panel Designer la posibilidad de mostrar variables
definidas a partir de SDT’s. Esto sirve tanto para crear secciones planas de atributos como para crear
grillas con el contenido de un subnivel colección del SDT.
Creación manual
Para este fin se creó un nuevo nodo, el nodo SDT Variable, que está disponible dentro de nodos
Attribute o dentro del contenido de grids normales o free style. Además, se agregaron propiedades a los
nodos Attributes, Grid, y Free Style Grid, para indicar el SDT que contienen.
Los nodos Attributes, Grid, y Free Style Grid tienen ahora dos nuevas propiedades: “Based On
SDT” y “Based On SDTLevel”. Estas propiedades permiten especificar el SDT que será usado dentro del
nodo, y el nivel del SDT al que se corresponde el nodo.
Ilustración 15 - Nuevas propiedades en nodos Attributes, Grid, y Free Style Grid
La definición de un SDT puede contener varios niveles. Por esta razón, es posible tener varios
nodos Attributes, Grid, o Free Style Grid asociados a un mismo SDT. Por ejemplo si consideramos el
siguiente SDT:
Ilustración 16 - SDT de ejemplo
La siguiente estructura de Web Panel Designer es válida:
14
Ilustración 17 - Estructura SDT en Web Panel Designer
La anidación puede continuar tantos niveles como sea necesario. No es obligatorio contemplar
todos los niveles del SDT en la definición del Web Panel (pueden ignorarse algunos de estos niveles,
siempre que no sean niveles intermedios del SDT).
La regla a seguir en estos casos es incluir siempre un nodo Grid o Free Style Grid para cada nivel
colección, y un nodo Attributes para cada nivel que no es colección. La elección entre usar un nodo Free
Style Grid o Grid es libre, con la limitación natural de que no es posible usar un Grid si se desea incluir
subniveles del nivel actual dentro del Web Panel.
En el nodo asociado a la variable del SDT, se deberá indicar en la propiedad Field el campo del
SDT que se estará visualizando.
Para el SDT del ejemplo, podemos ver correspondiente a las variables dentro del freestylegrid:
Ilustración 18 - Estructura de una variable basada en un SDT
El campo CityId referencia al campo CityId, dentro del SDT CountryCityCusomterSDT, nivel City.
Creación automática
Para facilitar la creación de estructuras basadas en SDT dentro de Web Panels creados con Web
Panel Designer, se agregó una nueva acción “Add SDT”.
15
Ilustración 19 - Acción Add SDT
Esta acción está disponible en los nodos: WebForm, Attributes, Free Style Section, Group, Line
Separator, Multiple Selection y Tab (los mismos nodos donde en versiones anteriores está disponible la
acción “Add Grid From Transaction”).
Cuando se ejecuta esta acción, se presenta al desarrollador un diálogo como el que se muestra a
continuación.
Ilustración 20 - Diálogo de selección de SDT
Luego de que el desarrollador selecciona el SDT que quiere agregar en pantalla, se agrega la
definición del SDT al nodo correspondiente siguiendo la siguiente heurística:




Por cada miembro del SDT, se agrega un nodo SDT Variable.
Por cada nivel no colección, se agrega un nodo Attributes con el contenido del nivel.
Por cada nivel colección que no contiene sub niveles, se agrega un nodo Grid.
Por cada nivel colección que contiene sub niveles, se agrega un nodo Free Style Grid.
La siguiente imagen muestra el resultado de ejecutar la acción a partir del SDT origen.
16
Ilustración 21 - Resultado de ejecutar "Add SDT"
De forma análoga a lo que sucede con las acciones “Add Grid From …”, el resultado de esta
acción es modificable por el desarrollador. El desarrollador puede, si quiere, eliminar atributos o
inclusive niveles completos.
Carga del SDT
Siempre que se agrega un SDT en pantalla, se genera una subrutina de usuario llamada
“U_LoadSDT”. Esta subrutina es la encargada de cargar los valores correspondientes del SDT, usando el
mecanismo que el desarrollador crea más conveniente.
El momento de ejecución de esta subrutina depende de la definición del nodo correspondiente
a la raíz del SDT en el Designer. Si este nodo es un nodo Attributes, la subrutina es invocada en el evento
Refresh. Si es un nodo Grid o Free Style Grid, esta subrutina puede ejecutarse en más momentos. Por
más información, ver la sección “Nuevas propiedades en grillas”.
Nuevas propiedades en grillas
Cuando se cargan grillas desde un SDT, existen dos opciones: Que el procedimiento de carga del
SDT maneje la paginación, o que el procedimiento retorne todos los valores, y sobre este conjunto el
Designer implemente su paginación.
La primera opción tiene como principal ventaja que puede evitar costos de carga del SDT, ya que
el desarrollador tiene la libertad necesaria para cargar en cada momento únicamente los ítems visibles
en la página actual. Para hacer esto, el desarrollador debe considerar la variable
“&CurrentPage_{GridName}” y el valor de la propiedad “Page” dentro del nodo.
17
La segunda opción tiene como principal ventaja el hecho de que la programación queda más
simple, ya que el desarrollador carga una única vez el SDT a mostrar, y Web Panel Designer generará
código para pasar entre las páginas correspondientes (en caso de existir).
Para poder seleccionar entre estas dos opciones, los nodos Grid y Free Style Grid incluyen la
propiedad “Get SDT On Grid Paging”.
Ilustración 22 - Propiedad “Get SDT On Grid Paging”
Cuando esta propiedad está con su valor en “True”, el SDT será recargado cada vez que el
usuario final cambie de página en la grilla. En este caso, la subrutina “U_LoadSDT” será invocada en cada
cambio de página. El desarrollador debe contemplar la posición del usuario en la grilla para hacer la
carga en la subrutina.
En el caso contrario, cuando el valor de la propiedad es “False”, la subrutina será invocada una
única vez en el evento Refresh, y no será invocada en ningún otro momento por el Designer. En este
caso, el desarrollador no debe contemplar la posición del usuario en la página al momento de cargar el
SDT.
Notas:



Esta propiedad es mostrada sólo en grillas que no se corresponden con subniveles de un SDT
mayor.
En grillas que se corresponden a sub niveles dentro de una estructura mayor, la paginación
puede hacerse solamente en la grilla correspondiente al primer nivel del SDT (si la raíz del SDT
no es una colección, no es posible realizar paginado en las grillas generadas).
En grillas que se corresponden a sub niveles la propiedad “Page” no es mostrada, y su valor se
asume igual a cero, es decir, se muestran todos los elementos del nivel.
18
Mejoras en la personalización de la interfaz de usuario
Nuevas opciones de themes:
En la versión 7.1 de K2BTools se introdujo el nuevo theme “K2BModern”. Continuando con la
evolución de K2BTools en este sentido, en K2BTools 8.0 se incluyen tres variantes de este theme, para
que el desarrollador pueda elegir la que más se acerca al resultado deseado.
Las opciones de theme incorporadas a la versión 8.0 son las siguientes.
K2BModernBlue
K2BModernBordeaux
K2BModernGrey
K2BModern
Ilustración 23 - Opciones de theme versión 8.0
Para cambiar el theme seleccionado, seguir estas instrucciones:
1. Cambiar el valor de la propiedad “Theme” de la versión de la KB.
2. Cambiar el valor de la propiedad “Theme” de (las) Master Page(s) de la aplicación.
3. Cambiar el valor de la propiedad “Theme” de las configuraciones de Web Panel Designer y
ejecutar la funcionalidad Update All WebPanels
4. Cambiar el valor de la propiedad “Web Theme” de las configuraciones generales de los patrones
K2BTools.
5. Ejecutar un “Rebuild All” en GeneXus.
19
Mejoras en configuración de Layouts
A partir de la versión 8.0 de K2BTools, se flexibilizó la elección de objetos de Layout en los
patrones Entity Services y Prompt, y también en el Web Panel Designer. Además, se mejoró la
integración con las Master Pages de la KB para simplificar el uso del patrón. Los cambios en esta área
apuntan a flexibilizar la generación de objetos.
Los cambios se detallan en las próximas secciones.
Elección de layouts a nivel de instancia en K2BEntity Services y K2BPrompt
Se agregó nuevas propiedades a las instancias de estos patrones, que permiten al desarrollador
seleccionar el Layout que se desea usar en esa instancia particular cuando se genera el objeto.
Ilustración 24 - Nuevas propiedades en patrones K2BEntityServices y K2BPrompt
Estas propiedades son útiles en escenarios donde existen varios puntos de acceso al sistema, y
se desea que un conjunto específico de web panels tenga una visualización diferente a la default del
sistema.
Ilustración 25 - Configuración de Layouts default para K2BEntityServices
Los valores default de estas propiedades se toman desde la configuración del patrón
correspondiente.
Para usar un nuevo Layout, es necesario agregar el nodo correspondiente bajo el nodo Layout dentro de
la configuración del patrón correspondiente. Se recomienda hacer esto copiando un nodo existente y
alterando las propiedades necesarias (generalmente, la propiedad “Layout Object”).
Elección de layout a nivel de Web Panel en Web Panel Designer
Ilustración 26 - Propiedad "Layout Object" en nodod Web Form
20
Se agregó una nueva propiedad en el nodo Web Form (raíz de la especificación de un Web Panel
creado con Web Panel Designer) llamada “Layout Object”.
Ilustración 27 - Propiedad "Layout Object" en configuración de Web Panel Designer
Esta propiedad especifica el objeto de layout que debe usarse en la generación del Web Panel.
El valor por defecto de esta propiedad se toma de la propiedad con el mismo nombre del objeto de
configuración de Web Panel Designer.
Posibilidad de deshabilitar el seteo de Master Page en Web Panel Designer y
Patterns
Existen escenarios en los cuales es deseable poder setear una master page diferente según el ambiente
para el cuál se está generando. Por esta razón, se agregó la posibilidad de que la master page pueda ser
tomada del environment. Para poder habilitar este comportamiento se agrega una propiedad para que
los patrones y el webpaneldesigner no seteen la master page sino que tomen la por defecto.
Las propiedades agregadas son:
Propiedad “Set MasterPage” en configuración de Web Panel Designer: Afecta la generación de
objetos creados usando Web Panel Designer.
Ilustración 28 - Propiedad "Set Object Theme" en configuración de Web Panel Designer
Propiedad “Set MasterPage” WorkWithRulesLayouts: Afecta la generación de objetos Work
With del patrón Entity Services.
Ilustración 29 - Propiedad "Set Object Theme" en WorkWithRulesLayouts
21
Propiedad “Set MasterPage” EntityManagerRulesLayouts: Afecta la generación de objetos
EntityManager del patrón Entity Services.
Ilustración 30 - Propiedad "Set Object Theme" en EntityManagerRulesLayouts
Propiedad “Set Object Theme” PromptLayout: Afecta la generación de objetos del patrón
Prompt.
Ilustración 31 - Propiedad "Set Object Theme" en PromptLayout
22
Mejoras de usabilidad en el desarrollo
En la versión 8.0 de K2BTools se mejoró la interacción del desarrollador con los patrones para
simplificar su uso y para hacer más sencillo el diagnóstico de errores comunes.
Comandos Enable / Disable K2BTools Dynamic Pattern Application
En KB’s grandes muchas veces es necesario desactivar la actualización dinámica de los patrones
(incluyendo los patrones de K2BTools) para disminuir los tiempos del proceso de build. Es posible lograr
esto usando las propiedades de la versión que se muestran a continuación:
Ilustración 32 - Desactivación de actualización automática de patrones
En la versión 8.0, decidimos incorporar funciones para simplificar el uso de estas propiedades.
Usando estas funciones es posible habilitar/deshabilitar la aplicación automática de los patrones en el
proceso de Build.
Ilustración 33 - Opciones Enable/Disable K2BTools
Usando esta funcionalidad el desarrollador GeneXus puede administrar la actualización
automática de una forma más simple y eficaz.
Comando “Force K2BTools Patterns Application”
En algunos casos es necesario que todas las instancias de patterns sean aplicadas en el próximo
build. Esto puede ocurrir, por ejemplo, cuando se modifica el objeto de settings de un Pattern, o algún
objeto de Layout.
Ilustración 34 - Comando "Force K2BTools Pattern Application"
Usando este comando, se indica al motor de Patterns que todas las instancias deben ser
aplicadas en el próximo build. De esta forma, cuando se ejecute el próximo build de la KB, todas las
23
modificaciones que se hayan hecho en las configuraciones de los patrones serán impactadas en los
objetos generados.
IMPORTANTE: Este comando es independiente a los mecanismos descriptos en la sección
anterior. Por lo tanto, la aplicación forzosa de los patrones ocurrirá incluso cuando la actualización
dinámica de los patrones esté desactivada.
Mensajes de advertencia al detectar partes fuera del default
Una de las fuentes de errores más comunes en el uso de Patterns es la desvinculación accidental
del default para algunas partes de los objetos generados por el patrón.
Cuando esto sucede, los cambios hechos en la instancia del patrón no se ven reflejados en los
objetos generados.
Para ayudar en el diagnóstico de esta situación, en la versión 8.0 se agregó la generación de
mensajes de advertencia durante el proceso de aplicación del pattern.
Ilustración 35 - Mensaje de advertencia para partes modificadas por el usuario
Para solucionar este problema, es necesario abrir el objeto involucrado y ejecutar la acción
“Apply Default (All Parts)” dentro del manú “Edit” de GeneXus.
Ilustración 36 - Acción Apply Default
Alternativamente, puede ingresarse a la parte que fue modificada y ejecutar la acción Apply
Default (<Nombre_Parte>). Usando estas acciones, se vinculará nuevamente la/las partes modificadas a
su default generado por el pattern.
Mensajes de advertencia para ausencia de invocación a stack en Master Pages
En el inicio de proyectos desarrollados con K2BTools al adaptar las interfaces generadas a lo
requerido por el cliente es frecuente que se creen nuevas Master Pages para los objetos de la KB. Esto
puede implicar un problema menor en casos donde la nueva Master Page no invoca directa o
indirectamente al procedimiento “K2BStackManagement”.
Este procedimiento es quien se encarga de mantener el stack de objetos llamados dentro de la
KB, y es usado desde varios lugares. En particular, este stack es usado para retornar al objeto llamador al
finalizar una acción dentro de una transacción.
24
Ilustración 37 - Warning ausencia de invocación a stack en Master Page
Este problema es una fuente común de errores. Por esta razón se agregó un mensaje de
advertencia cuando el pattern detecta que alguna de las Master Pages usadas en los objetos generados
por el pattern no contiene en su árbol de llamadas al objeto “K2BStackManagement”.
Opción para mantener regla Parm de la transacción dentro de un slot fixed
A partir de esta versión, se incorpora una propiedad en el nodo “Transaction” dentro de las
configuraciones del patrón K2BEntityServices, con nombre “Generate Fixed Slot For Parm”.
Ilustración 38 - Propiedad "Generate Fixed Slot For Parm"
Cuando el valor de esta propiedad es “True”, la regla Parm se generará dentro de un slot fixed
en la transacción. Esto implica que la regla será actualizada por el pattern siempre que sea necesario. En
particular, la Parm será modificada siempre que haya alguna modificación dentro de la PK de la
transacción a la que pertenece la instancia del pattern.
Ilustración 39 - Regla Parm en slot fixed
El valor “False” provee la opción de mantener compatibilidad hacia atrás: La regla se generará
en un slot no fixed, y por lo tanto podrá ser modificada por el usuario.
25
Ilustración 40 - Regla Parm en slot no fixed
En caso de Activar la generación en slots fixed, en la próxima aplicación del pattern las reglas
Parm serán colocadas dentro de un slot fixed y los cambios que se hubieran hecho dentro del Slot se
perderán.
En KB’s creadas con versiones anteriores de K2BTools, esta propiedad se mantendrá en “False”
para facilitar el proceso de conversión. En caso de no tener reglas parms modificadas, se recomienda
que el desarrollador cambie el valor de esta propiedad.
Personalización de ubicación de parte Designer
En esta versión se permite al desarrollador personalizar la posición donde se quiere mostrar la
parte del Designer al abrir un Web Panel existente o crear uno nuevo. Para hacer esto, se incluyó en la
configuración de Web Panel Designer una propiedad llamada “Form Designer Part Position”.
Ilustración 41 - Propiedad "Form Designer Part Position"
Los posibles valores para esta propiedad son:
1. First: Mantiene el comportamiento actual de Web Panel Desginer, la parte es la primera
mostrada en el Web Panel (a la izquierda del Web Panel).
2. Last: La parte es la última mostrada en el Web Panel (a la izquierda del Web Panel).
3. First If Active: La parte es la primera mostrada en al abrir web panels con Web Panel Designer
activado, y es la última mostrada en cualquier otro caso.
Esta propiedad puede ser útil en escenarios de migración, donde la mayoría de los Web Panels
todavía no usan la parte Designer. El cambio de esta propiedad no afecta los web panels que están
abiertos. Es necesario cerrarlos y volverlos a abrir.
26
Otras mejoras
Visualización de descripciones en reportes Excel y PDF
En la versión 8.0, cuando la propiedad “Show enumerated domain description” en el nodo
report está activada, se consideran (además de los casos contemplados en versiones anteriores), los
siguientes casos:
1. Columnas de reportes Excel que están basadas en dominios o en atributos basados en dominios.
2. Filtros en reportes Excel con Control Info Dynamic Combo o Dynamic List Box.
3. Filtros en reportes PDF con Control Info Dynamic Combo Box y Dynamic List Box o basados en
dominios enumerados.
Selección de columnas en runtime para Exports
En esta versión, se extiende la funcionalidad de selección de columnas en runtime. Ahora, las
columnas que fueron seleccionadas por el usuario para ser visualizadas en el Work With son también las
que se exportan en los reportes Excel.
Deshabilitación global de Back to Work With
En versiones anteriores de K2BTools, es posible deshabilitar la generación del enlace llamado
“Back To Work With” usando la propiedad “Back To Work With” del nodo “Entity Manager” de una
instancia del patrón Entity Services.
Ilustración 42 - Propiedad "Back To Work With" en nodos "Entity Manager"
Usando esta propiedad es posible deshabilitar la generación del enlace para esa instancia. En la
versión 8.0, el valor default de esta propiedad pasa a tomarse de la configuración del patrón
K2BEntityServices, en la propiedad “Enable Back To Work With Links” del nodo “Template”.
Ilustración 43 - Propiedad "Enable Back To Work With"
27
El valor default para esta propiedad es “True”, de forma de mantener la compatibilidad con
versiones anteriores.
Al modificarse esta propiedad, se actualiza el valor default de las propiedades “Back To Work
With” de los nodos “Entity Manager”. Esto implica que:
1. En instancias existentes, si la propiedad “Back To Work With” nunca fue modificada por el
desarrollador (su valor no aparece resaltado en negrita), la propiedad pasará a tener el mismo
valor que la propiedad “Enable Back To Work With Links”.
2. En instancias existentes, si la propiedad “Back To Work With” fue modificada intencionalmente
por el desarrollador (su valor aparece resaltado en negrita), el valor de la propiedad no será
modificado.
3. En nuevas instancias, se considerará siempre el valor seleccionado en la propiedad “Enable Back
To Work With Links” salvo que el desarrollador indique explícitamente lo contrario.
Posibilidad de agregar código en nodos Action
Para aumentar la usabilidad de las acciones dentro de los patrones, se agregó en estos nodos la
posibilidad de agregar código que será incorporado antes y después de la invocación al objeto
especificado en la acción.
El resultado de agregar una acción similar a la anterior es el siguiente:
Notas:
1. Esta opción está disponible sólo para acciones fuera de la grilla (cuya propiedad “Layout” tiene
valor diferente a “Ingrid”) y que tienen un gxobject asociado.
2. Este código será ejecutado siempre que se cumplan los chequeos de seguridad.
3. Esta funcionalidad convive con el mecanismo de adición de eventos ya existente en los patterns.
Usuarios de versiones anteriores pueden mantener su solución actual, y migrar progresivamente
según resulte conveniente. El orden con el que se genera el código para la acción es:
a. Código “Begin Code” de nodo Event asociado a la acción (si existe)
b. Código de inicio de seguridad.
c. Código “Begin Code” de nodo Action
28
d.
e.
f.
g.
Invocación a objeto GeneXus definido en nodo action.
Código “End Code” de nodo Action.
Código de fin de seguridad.(ENDIF)
Código “End Code” de nodo Event asociado a la acción (si existe)
Propiedad para deshabilitar grids sortables
Las grillas GeneXus tienen en su definición la propiedad “Sortable”. En versiones de K2BTools
anteriores a la versión 8.0, las grillas eran generadas con la propiedad “Sortable” activada.
Cuando una grilla tiene la propiedad “Sortable” activada, se permite al usuario ordenar los
valores presentes en la grilla cliqueando el título de la columna por la que se quiere ordenar. Sin
embargo, cuando se usa una grilla con paginado, es importante notar que el orden se realiza sobre los
ítems que están visibles en la página mostrada en la grilla, no se recarga el contenido desde la base de
datos.
En algunos casos esto no es deseable, ya que frecuentemente los usuarios usaban la
funcionalidad asumiendo que el orden se realizaba sobre todos los registros, con comportamientos
inesperados.
Ilustración 44 - Propiedad "Activate Sortable Property" en Web Panel Designer
Por esta razón, a partir de la versión 8.0 de K2BTools es posible decidir en la configuración de
Web Panel Designer y Patterns si las grillas deben ser creadas con la propiedad sortable o no. Estas
propiedades son la propiedad “Activate Sortable Property” en la configuración de Web Panel Designer, y
“Activate Sortable Grids” en la configuración general de los patrones K2BTools.
Ilustración 45 - Propiedad "Activate Sortable Grids"
Propiedad “Enable datepicker” en patterns
A partir de la versión 8.0, las variables en pantalla incluyen la propiedad “Date Picker”. Esta
propiedad está disponible sólo para variables de tipo Date o DateTime.
Esta propiedad está disponible en:
29
1. Variables en filtros de objetos Work With, Sub Work With y Prompt.
2. Variables en secciones de atributos planos en objetos generados por Entity Services o Prompt.
3. Atributos en instancias de TrnForm.
Ilustración 46 - Ejemplo de propiedad "Date Picker"
Se generará el Datepicker correspondiente a la variable sólo si el valor de la propiedad es
“True”.
El valor default para esta propiedad se determina de la siguiente forma:
1. Si la transacción asociada a la instancia del patrón tiene la propiedad “Enable Datepicker” en
“Yes” o “No”, entonces el valor default será “True” o “False” respectivamente.
2. En cualquier otro caso, el valor default será “True”.
Por este motivo, en escenarios de migración sólo es necesario revisar los casos de transacciones
donde la propiedad “Enable Datepicker” sea distinta a “Yes” o “No”.
Propiedades Height y Width en Embedded Pages
Ilustración 47 - Propiedades "Height" y "Width" en EmbeddedPages
A partir de la versión 8.0, los nodos “Embedded Page” en instancias de Web Panel Designer
incluyen las propiedades “Height” y “Width”. Usando estas propiedades es posible modificar las
propiedades con el mismo nombre en el Embedded Page generado.
Nuevas subrutinas de usuario para Add y Remove en Multiple Selections
En la generación de nodos Multiple Selection se agregaron dos nuevas subrutinas de usuario,
correspondientes a los eventos “Add” y “Remove” (cuando se agregan o se quitan elementos de la
colección de elementos seleccionados).
La invocación a estas nuevas subrutinas se hace como se muestra en la siguiente imagen (se
ilustra el caso para “Add”). Es importante notar que la invocación se realiza luego de agregar el/los ítems
a la colección de ítems seleccionados, por lo que es correcto asumir que la colección está actualizada al
momento de implementar la subrutina de usuario correspondiente.
30
Ilustración 48 - Invocación a subrutina "U_AddMultipleSelection"
Estas subrutinas pueden ser usadas en varios escenarios diferentes. Algunos posibles usos son:


Persistencia del conjunto seleccionado a medida que se realizan los cambios.
Actualización de una sección de resumen a medida que se ingresan los datos. Por ejemplo,
actualizar un mensaje indicando la cantidad de ítems seleccionados).
31
Errores corregidos
Patterns
Visibilidad del botón de search:
Se corrige problema que hacía que en determinados escenarios el botón de search no apareciera en
pantalla aun cuando el desarrollador había indicado que aparezca. Esto sucedía tanto en el patrón
K2BEntityServices como en el K2BPrompt.
Error en inclusión de acciones en K2BTrnForm:
No era posible agregar acciones como hijos del nodo FreeStyleGrid y TrnForm.
Error en generación de procedimientos K2BListPrograms y K2BActivityList
Muchas veces sucedía que estos procedimientos quedaban muy grandes y ocurría un error de
compilación en el código generado. Se hicieron cambios para evitar que esto suceda.
Uso de propiedad Required en TrnForm:
Se soluciona el problema de que se tenía required en true en el trnform y luego se pasaba a false, no se
borraba el slot required.
Error en Load Grid State en Pattern Prompt:
Si se tiene un prompt con algún filtro con savesate en false, el código generado por K2BTools era
incorrecto, haciendo que no se salvara el estado de los filtros.
Uso de mensajes correctos en filtros Combo Box
En controles Dynamic Combo Box dentro de secciones de filtros, si el valor empty es aceptado, se estaba
colocando el valor empty ítem text . En esta versión se pasa a colocar el GX_AllItems de GeneXus.
Errores en reportes Excel
En los reportes Excel para los atributos de tipo character se agrega trimend para evitar que se exporten
espacios en blanco que vienen desde la base de datos.
También se corrige la visualización correcta de los atributos time, donde cada vez que se mostraba uno
de estos campos aparecía un -1 en lugar del texto correspondiente a la hora.
Web Panel Designer
Errores en grillas con Data Provider
Se corrige el error que provocaba cuando se tiene una grilla con dataprovider y paginado, pero se coloca
0 al valor de la propiedad page el webpaneldesigner no definía la variable hasnextpage correspondiente
a la grilla.
Error en grillas con scroll
Cuando se tenía una grilla con scroll, el designer no seteaba de forma correcta el height y el width.
32
Instalación
Importante:
Para hacer uso de esta versión deberá actualizar las licencias de K2BTools a la versión 8.0.
Para versiones anteriores de K2BTools es posible utilizar la licencia de la versión 8.0.
Pasos previos:
1. Si ya tenía la versión anterior de K2BTools recomendamos siempre respaldar las KBs utilizadas
antes de pasar de versión (crear un XPZ o congelar la versión de la KB)
Instalación:
1. Ejecutar el instalador de K2BTools 8.0
2. Seleccionar como ruta el directorio de instalación de GeneXus.
3. Actualizar licencias de K2BTools según lo indicado en el siguiente
documento(http://www.k2btools.com/files/como-actualizar-las-licencias?es)
4. Abrir GeneXus.
5. Si crea una KB desde cero, ya está listo para usar la versión.
6. En caso de estar usando una versión anterior
a. Si está en una versión anterior a la 7.1, adicionar a estos pasos los de la release notes
7.0.
b. Seguir los pasos del Anexo I – Actualización de reportes Excel
c. En caso de querer incorporar la funcionalidad de Universal Search seguir el Anexo II.
Instalación en GeneXus Server
Para instalar K2BTools en GeneXus Server ejecutar el instalador y seleccionar como ruta
“<GeneXusServer>\VDir\BinGenexus”, donde <GeneXusServer> es la ruta donde fue instalado GeneXus
Server.
33
Anexo I – Actualización de reportes Excel.
Se realizaron modificaciones en la manera en que se utilizan los reportes Excel. Para esto se pasa a
tomar en cuenta el valor de la propiedad Temp Media Directory para almacenar temporalmente estos
archivos. Para que los reportes Excel se puedan visualizar el directorio deberá existir. Se recomienda
por razones de seguridad setear un directorio que no esté dentro del servidor de aplicaciones.
Anexo II – Incorporación del buscador universal.
Si se está haciendo uso de la master page K2BWWMasterPageModern, ya se incorporará
automáticamente la posibilidad de usar este buscador siempre y cuando se tenga dentro del patrón
K2BEntityServices alguna transacción con la propiedad Searchable en true.
En caso de no hacer uso de esta master page, se puede editar la master page utilizada y usar como
header el K2BHeaderModernSearch.
En caso de querer usar su propio header haga los siguientes cambios:



Defina dos variables SearchCriteria y SearchCriteriaSession basados en el tipo de datos
K2BSearchCriteria.
Copie en el webform desde el HeaderK2BModernSearch la sección de control name
SearchContainer.
Incorpore en su webpanel en los eventos el código de K2BModernSearch que se encuentra en:
o Evento Refresh
o Evento &SearchCriteria.IsValid
o Event ‘DoSearch’
34
Descargar