Beta 6: 04/07/2016

NOTA:

  • Advertencia: Esta nueva versión incorpora cambios importantes en muchos lugares por lo que es recomendable realizar un backup de la KB antes de comenzar a trabajar con esta nueva versión.

  • Al abrir los WebPanels generados con el nuevo generador Responsivo se genera una perdida de dinamismo del Abstract Form debido a que GeneXus realiza ajustes al Form y eso hace que se pierda dinamismo. En caso de tener que perder el dinamismo para realizar alguna prueba del objeto generado se podrá recuperar el dinamismo utilizando la extensión Apply Default Instances.

  • Esta versión requiere modificar el LoadPXToolsParameters porque a partir de esta versión hay parámetros configurables por plataforma.

  • El generador responsivo trabaja con nuevos templates con Layout Abstracto y nueva MasterPage por lo que hay que importarlos para que el generador funcione correctamente. Es recomendable importar en una nueva KB alguno de los Designs para poder tener una referencia de los objetos nuevos que se están utilizando.

  • También hay cambios a nivel de las preferencias del PXWorkWith necesitando configurar algunas valores nuevos en este patrón:

  • En nodo Plataform / WebDesktop se deberán actualizar los siguientes Sub-nodos:

    • Platforms: Por defecto se habilita la generación de la nueva plataforma WebResponsive. En caso de querer deshabilitar esta generación en el nodo WebResponsive se puede deshabilitar la generación con la propiedad "Generate Platform"

    • Masterpages: Hay que definir la masterpage para nuevo nodo "Web Panel". Por defecto tomará la HMPWkW03 pero si se definieron otras masterpages habrá que referenciarla para esta nueva propiedad.

    • Prefixs: Hay que definir el prefijo para nuevo nodo "Web Panel". Por defecto tomará el valor Wb<Object> pero si se definieron otros estándares de prefijos habrá que referenciarlo para esta nueva propiedad.

    • Templates: Hay que definir los templates para nuevos nodos ParameterRequestTemplate y ComposerTemplate. Por defecto se tomarán los que están generados por defecto en PXTools (PXToolsParameterRequestTemplate y PXToolsComposerTemplate) pero si se definieron otros templates para Parameter Request y Composer habrá que referenciarlos en estos nuevos nodos.

Nuevas Funcionalidades

  • Nuevo generador WebResponsive:

    • Este nuevo generador cumple con el objetivo de soportar un nuevo estilo de navegación de páginas orientado a soportar principalmente dispositivos móviles. Este nuevo generador requerirá nuevo licenciamiento y es posible habilitarlo desde los nodos Levels de todos los patrones que generan UI con la propiedad "Generate Web Responsive".

    • El nuevo estilo responsivo se enfoca en la representación de pantallas con posibilidad de tener mucha altura y ajustando los elementos que están representados en forma horizontal para prácticamente eliminar la existencia de un scroll horizontal. La forma de disminuir el espacio horizontal depende del sector:

      • Un sector tabular con rows o columnas terminará ajustando pasando los elementos horizontales para verticales.

      • Un sector de grilla como ser la del nodo Selection terminará ocultando las columnas de la grilla y los contenidos de cada columna puede generar más de una línea.

      • Un sector de grilla en transacciones no tiene más alternativa que mantener un scroll horizontal porque es necesario ingresar todos los valores declarados en el form.

    • A nuestro entender esta nueva plataforma responsiva puede habilitarse para Desktop pero recomendamos utilizar el generador HTML ya que mantiene otras reglas de comportamiento distintas:

      • Toda el área de navegación (Headers, Footer y menús) deben estar permanentemente disponibles para el usuario.

      • Es posible colapsar o flotar esas áreas para maximizar el área de datos.

      • La grilla recomendable es la de la GXUI porque soporta tanto scroll horizontal y vertical sin perder de vista los títulos de la misma. Adicionalmente tiene funcionalidades importantes como:

        • Orden por columnas.

        • Cambio de posición de columnas.

        • Títulos agrupadores.

    • Se podrán generar ambas plataformas (Web Desktop y Web Responsivo) a la misma vez, generando un juego de objetos GeneXus diferentes para cada plataforma. Esto es lo que llamamos desarrollo de aplicaciones Web optimizadas:

      • Soportando un ambiente responsivo para dispositivos móviles.

      • Soportando un ambiente de trabajo más natural para escritorios.

    • Para poder determinar si se dará soporte a aplicaciones optimizadas es que se habilitó una nueva propiedad "WebSupportPlatform" en el procedimiento LoadPXToolsParámeters pudiendo indicar tres valores posibles:

      • WebSupportPlatform.Responsive: Significa que la aplicación solo soportará la plataforma Responsiva.

      • WebSupportPlatform.Desktop: Significa que la aplicación solo soportará la plataforma Desktop.

      • WebSupportPlatform.Both: Significa que la aplicación soportará ambas plataformas

    • Para soportar la generación conjunta del generador Web Desktop y el generador Web Reposive será necesario que las referencias de invocación de las acciones a otras interfaces se hagan por la nueva metodología de "Link Type" con el valor "PXInstance" liberado en la Beta 3. Será PXTools que determinará a partir de ese momento el objeto que tiene que invocar para la plataforma que se esté generando.

    • Uno de los cambios importantes para el soporte de esta nueva plataforma fue un cambio en la estructura de las preferencias del patrón PXWorkWith:

      • Nuevo nodo Platform. En este nodo es posible configurar el valor por defecto de generación para la plataforma con la propiedad "Generate Platform".

      • Se movieron varios nodos de la raíz de las preferencias para quedar configurables por Plataforma. Los nodos que fueron movidos son: Prefix, Web Theme Classes, Grid, MasterPages, Context, Security, Form, Templates y StandardActions.

      • Estos nodos quedarán configurables para cada plataforma.

      • Se habilitó la plataforma "All Platforms" y especialmente el nodo "Prefixs" para definir los prefijos de aquellos objetos que no van a cambiar aunque estén siendo generadas todas las plataformas. Estos objetos son:

        • Los SDTs generados cuando hay acciones multi-row. En estos casos se va a usar el mismo SDT para todas las plataformas.

        • Los procedimientos de Export a Excel y Chart. También se utilizarán los mismos objetos.

        • Cualquier procedimiento en general no dependerá de la plataforma por lo que se generan bajo este nuevo nodo.

        • La generación del patrón PXFlowController cuando hay acciones multi-row con Link. El patrón PXFlowController también generará objetos diferenciales por plataforma pero la instancia a generar del PXFlowController en sí, no dependerá de la plataforma.

      • Nueva propiedad "Theme" en nodo "Web Theme Classes". Hasta el momento se aprovechaba la preferencia de la KB para definir el Theme por defecto, pero la llegada de una nueva plataforma determinó que para cada plataforma tenga que ser indicado el Theme que se utilizará.

    • Nueva propiedad "Visible Form Size" en variables o atributos de la grilla del nodos Selectio, Prompt y Section "Type: Grid". Esta nueva propiedad define el comportamiento de las columnas según los distintos valores de Bootstrap.

    • Nuevo Theme: "PXToolsResponsive" y renombre del Theme PXTools a "PXToolsDesktop" estos temas quedan vinculados a través de la nueva propiedad "Theme" ya mencionada.

    • Nuevos templates para el soporte de la nueva plataforma responsiva. A tales efectos los nuevos templates incorporados son:

      • PXToolsResponsiveSelectionTemplate

      • PXToolsResponsiveTransactionTemplate

      • PXToolsResponsiveViewTemplate

      • PXToolsResponsiveTabTabularTemplate

      • PXToolsResponsiveParameterRequestTemplate

      • PXToolsResposniveComposerTemplate

    • Nueva Masterpage HMPWkW09.

    • Uno de los problemas encontrados con la incorporación de este nuevo generador es la unicidad de plataforma en el Form de las transacciones asociadas al PXWorkWith. Un Objeto GeneXus solo soporta un tipo de Form: (o Web Desktop con un Layout HTML o Web Responsive con un Layout Abstracto)

    • Este problema no se presenta con el resto de los objetos debido a que estaremos generando un nuevo grupo de objetos para cada uno de los nodos correspondientes al patrón (Selection, Prompt, View, Sections para el PXWorkWith y Level del PXParameterRequest y PXComposer)

    • El problema con la Transacción es que hasta el momento el patrón utilizaba el objeto existente para adaptarle el Form, Reglas y Eventos y a partir de ahora será necesario generar la transacción para poder tener las dos plataformas generadas a la vez.

    • A tales efectos esta nueva versión de PXTools cambiará el enfoque para la generación de las transacciones:

      • Se agregó una nueva propiedad "Transactions Default Platform" en el nodo Defaults del PXWorkWith con el objetivo de indicar con qué generador se van a modificar las transacciones referenciadas en el patrón PXWorkWIth.

      • Por compatibilidad con versiones anteriores dicha propiedad quedará definida (en KBs que ya tenían en funcionamiento con PXTools) con el valor "Web Desktop". En nuevas KBs el valor por defecto será "None"

      • Al agregarse un nuevo generador, PXTools va a generar una nueva transacción copia de la Transacción referenciada con el objetivo de generar el Form correspondiente a la nueva plataforma.

      • Para nuevos desarrollos el objetivo es que la transacción principal del PXWorkWith ya no se toque más y se genere una Transacción hija por cada plataforma a soportar.

      • Esto requerirá una nueva propiedad a nivel del nodo Prefix para indicar el prefijo que se utilizará para las transacciones.

      • El problema se presentará al momento de definir una acción y querer referenciar a una transacción.

        • Hasta el momento la forma de referenciar a una Transacción es mediante la propiedad "Link Type" con el valor "GXObject" y la Propiedad "GXObject" con referencia a la transacción.

        • Para lograr que se puedan invocar a distintas transacciones es que se deberá invocar con la propiedad "Link Type" con el valor "PXInstance" y en la propiedad "Level" existirá el valor "Transaction". El pattern según como esté definida la propiedad "Transactions Default Platform" invocará a la transacción padre del PXWorkWith o a una transacción creada por el propio PXWorkWith para la plataforma correspondiente.

      • El objetivo es que la transacción principal se deje de usar para el soporte de una plataforma y se pase a usar como Business Component (BC) estándard para todas las plataformas. Es objetivo inclusive para nuevas versiones que dicha transacción principal tenga todos los niveles necesarios para el uso de dicho BC y que cuando el pattern genere el Form para cada plataforma se tome de la transacción principal los niveles necesarios para el form definido. Esto no es la funcionalidad que se soportará en esta versión pero es importante que se conozcan los objetivos finales para su uso.

    • Nuevo valor "<default>" en los valores de "Generate Web Desktop", "Generate Web Responsive" y "Generate SD". Este nuevo valor termina tomando el valor "Generate Platform" de las preferencias del PXWorkWith. De esta manera con un solo clic es posible habilitar la generación masiva de la nueva plataforma.

  • Unificación de preferencias de PXFlowController, PXParameterRequest, PXComposer para el PXWorkWith: La mayoría de las prefernecias estaban duplicadas y teníamos un tema complejo de resolver que era leer preferencias de un patrón desde las preferencias de otro patrón. El problema fue necesario implementarlo para el soporte del nuevo generador por lo que se decidió aprovechar este cambio importante del nuevo generador para pasar todas las preferencias al PXWorkWith.

  • Mejoras al módulo Menus de PXTools: Para el soporte de la nueva plataforma fue necesario realizar una reestructura del módulo Menus para dar cabida a la declaración de meús para múltiples plataformas. A tales efectos los cambios realizados en este módulo son:

    • Incorporación del nuevo control SmartMenu en módulo Menus de PXTools.

    • Nuevo subnivel a nivel de la transacción TMnuWeb para indicar los links por plataformas.

    • Nueva estructura del SDT "SDTMenus" apra soporte de nuevo subnivel por plataforma.

    • Modificación de los dataproviders de menús de los distintos módulos para soportar el nuevo subnivel por plataforma.

    • Mejoras en la declaración del LoadPXToolsParameters respecto a configuración de Menús.

  • Nuevo nodo Rules/Rule en Transacción: A los efectos de definir reglas específicas principalmente relacionadas con la gestión del Form es que se habilitó esta nueva propiedad. Las nuevas propiedades de este nodo son:

    • Value: La regla en sí.

    • Condition: Condición de la Rule. Si está vacío quiere decir que la rule no tiene condición.

    • Event: Evento de la Rule. <none> determina que la Regla no tenga evento.

  • Nuevas propiedades para visualizar Form, Reglas, Eventos de la Transacciones. En algunos casos la aplicación de pattern generaba errores en algunas partes de la transacción y no había forma de saber los nuevos valores que se están grabando para poder resolver el error presentado al aplicar el pattern.

  • Nuevo concepto de "Security Connector" dentro de las APIs de PXTools. Básicamente es una nueva carpeta denro del módulo APIs bajo la carpeta Personalized para customizar la intrgración con cualquier módulo de seguridad.

    • El módulo de Security de PXTools al importarlo movía dichas APIs al módulo de Security lo que generaba problemas de importación de otros módulos PXTools que referían a algunas de estas APIs. A partir de esta versión el xpz del módulo de Security incluye una customización de dichas APIs pero no las mueve de lugar.

  • Nueva propiedad "Visible Condition" en atributos de Transacciones. El objetivo es estandarizar la forma de ocultar los atributos dependiendo de cada Plataforma a generar:

    • Web Desktop: Termina generando dos reglas para ocultar el atributo y el label asociado.

    • Web Responsive: Termina generando una regla para ocultar la celda contenedora del atributo. Si se oculta el atributo GeneXus lo ocultará pero mantiene el espacio que el atributo ocupa. Para poder aprovechar ese espacio PXTools identifica a la celda contenedora con el nombre del atributo más el sufijo "Cell" y define la regla de ocultamiento para la celda contenedora y no para el atributo.

  • Cambios en el Login para soporte de bifurcación cuando se desarrollan aplicaciones optimizadas. PXTools incorpora un nuevo User Controls llamado "Platform detector" con el objetivo de detectar el dispositivo que está accediendo al sitio y poder brindar esa información para poder hacer las bifurcaciones para los ambientes correspondientes. El Login (que está generado a partir de un Parameter Request) está asociado a un nuevo template que incluye este nuevo User Control.

    • En función de la configuración de la propiedad "WebSupportPlatform" en el LoadPXToolsParameters y de la información de este nuevo control el Login determinará a qué ambiente invocar.

  • Se agregó el soporte de FixedDataSection en templates de View.

  • Mejoras a javascripts que mantienen la línea seleccionada de la grilla al retornar de otra interfaz para el ambiente responsivo.

  • Nuevo User Control responsivo PXTools Dynamic Tabs que será utilizado en los nodos View del WorkWith para el generador responsivo.

  • Eliminación del valor "Default" en la propiedad "Evaluate Condition" en nodo "Action". Se mantuvo compatibilidad de versiones anteriores para mantener el valor "Load" o "Event" dependiendo si tenía cargada la propiedad "Previus Code". La determinación del valor de esta propiedad debe ser explícitamente indicada por el programador.

Errores Corregidos

  • En transacciones con más de una grilla se generaba el siguiente error al aplicar el pattern: "GridTable" duplicate control name.

  • El error fue corregido. Para poder resolver este problema rápidamente antes de la liberación de esta nueva beta dejamos temporalmente disponible unas dll en el siguiente zip PXTools (for XEv 3) 2.0 Beta 5 F1.zip que deberán ubicarse en el directorio: <GeneXus>\\Packages\\Patterns\\PXWorkWith\\Templates.

  • La funcionalidad Multi-Confirm generaba en FireFox un comportamiento incorrecto donde aparece (por un período corto de tiempo) un diálogo con el mensaje "Session is expired". Se modificaron algunos scripts para quitar este mensaje.

  • Cuando está habilitado la propiedad "Two Pane Dialog" del PXWorkWith y se tiene Smooth no se refrescaba correctamente la grilla de los valores seleccionados.

  • Cuando se tiene la propiedad "After Trn" del nodo Transaction el valor "Return To Caller" no incluía el valor del nodo Code "After Trn".

  • Cuando se agregaban nodos "Rectangle" dentro de Filtros se permitía dentro de los mismos agregar nodos "Action" lo cual no está soportado a nivel del generador. El agregar nodos Action generaba errores en el generador. Se corrigió en la instancia para inhabilitar el ingreso de nodos Action debajo de nodos Rectangle de los filtros.

  • Se incorporó un error en la Beta 5 cuando se tiene desarrollado tabs en filtros: error: An error occurred while applying pattern instance 'PXWorkWithXXX': 'La etiqueta de apertura 'TABLE' en la línea 13 no coincide con la etiqueta de cierre de 'table'. Línea 198, posición 16.'. El problema quedó solucionado.

  • Se incorporó un error en la Beta 5 cuando se definen más de un Grid en un mismo contenedor en el form de la Transacción: error: 'GridTable' duplicate control name.. El problema quedó solucionado.

  • Cuando se definía un nodo Action de tipo Image daba error cuando se selecciona la combo de la propiedad "Defined Images".

  • Cuando se invoca a un Prompt desde una transacción accediendo en modo “PxInstance” generaba el siguiente error: error: An error occurred while applying pattern instance 'PXWorkWithXXX': 'Action XXX reference a non existant Kb Object. El problema fue corregido.

  • En algunas circunstancias cuando se generaban acciones multi-row habilitando la variable &Selected al desplegarla en la columna de la grilla no se asignaba clase y eso generaba que se viera en forma incorrecta la columna. Se le agregó una clase como al resto de las columnas.