Está en la página 1de 7

Edición y personalización de la instancia del pattern Work With aplicado a una

transacción

Ya hemos trabajado previamente con el pattern Work With. Hemos visto cómo aplicarlo y
cuáles son las funcionalidades que implementa.

Vamos a ver ahora algunos ejemplos que nos van a permitir conocer aún más las posibilidades
que nos ofrece.

Repasemos algunas de las transacciones que tenemos en nuestra aplicación Travel Agency:

La transacción Country para registrar los países con sus respectivas ciudades, y la transacción
Attraction para registrar las atracciones turísticas.

Hemos aplicado el pattern Work With a la transacción Country y se desea que en la pantalla
principal se muestre también la cantidad de atracciones turísticas para cada país.

Como ya sabemos, si estamos navegando países, para cada país entonces es posible disparar
una fórmula Count que cuente la cantidad de atracciones turísticas que tiene.

La pregunta que nos hacemos es la siguiente: ¿Dónde debemos declarar la fórmula para
obtener el resultado que deseamos?

Debemos editar la instancia del pattern Work With aplicado a la transacción Country y bajo el
1

nodo Attributes, declarar la variable &Quantity;


Page

Video filmado con GeneXus X Evolution 2 – upgrade 2


En sus propiedades debemos indicar su descripción, y el dominio en el cual se basa su tipo de
datos.

Es importante destacar que no es posible asignarle directamente un tipo de datos, sino que es
necesario basar la definición de la variable en un dominio.

Definimos entonces un dominio también de nombre Quantity.

Finalmente en la propiedad Load Code, declaramos el código que le asignará valor a dicha
variable.

De esta forma, el pattern va a incluir en el evento Load del web panel WWCountry, la
asignación a la variable &Quantity de la fórmula Count que acabamos de definir aquí.

Presionemos F5..

Seleccionamos Work With Country, y vemos la nueva columna en el grid con la cantidad de
atracciones registradas para cada país.

Supongamos ahora que además de visualizar la cantidad de atracciones por país, queremos
también agregar una nueva columna que despliegue para cada país un texto u otro,
dependiendo de la cantidad de atracciones que tiene:

Dirá

• “Many attractions”, si la cantidad de atracciones es mayor que 3, o


• “Few attractions”, en cualquier otro caso.
2
Page

Video filmado con GeneXus X Evolution 2 – upgrade 2


Nuevamente desde la instancia del pattern, definimos ahora una nueva variable &Comment…

y declaramos aquí el código correspondiente:

Este código se agregará automáticamente en el evento Load del web panel WWCountry, por lo
que al presionar F5 se visualizará esta nueva columna con el texto correspondiente.

Presionemos entonces F5..

Seleccionamos Work With Country, y vemos para cada país el texto correspondiente.

Ahora queremos definir un botón en la pantalla WWCountry, que invoque a un listado pdf, o
sea a un objeto procedimiento previamente definido.

Es así que hemos diseñado el listado AttractionsPerCountry que nos va a permitir ver las
atracciones turísticas agrupadas por país.

Nuevamente volvemos a editar la instancia del pattern Work With aplicado a la transacción
Country, pero esta vez para definir una “acción” .

Posicionados en el nodo Selection, hacemos click con el botón derecho del mouse y
seleccionamos Add / Actions. De esta forma se crea el nodo Actions. Ahora nos posicionamos
sobre esta nuevo nodo, y otra vez hacemos click con el botón derecho del mouse y
seleccionamos Add / Action.

En las propiedades asociadas a la acción, declaramos el nombre, el caption y el objeto GeneXus


al cual invocar, que en nuestro caso corresponde al listado pdf de nombre
3
Page

AttractionsPerCountry.

Video filmado con GeneXus X Evolution 2 – upgrade 2


El pattern entonces se encargará de generar el evento asociado al botón invocando al objeto
declarado.

Solo nos resta presionar F5…

Seleccionamos Work With Country y vemos el botón generado…. Lo presionamos, y vemos el


listado.

Veamos ahora un concepto fundamental a la hora de trabajar con patterns.

Una vez aplicado el pattern Work With a una transacción, se establece un “dinamismo”, o sea
una sincronización, entre la estructura de la transacción, la instancia del pattern aplicado y los
objetos generados.

Estructura de Instancia del Objetós generadós


la transacción pattern pór el pattern
aplicadó
Esto significa que si agregamos un nuevo atributo en la estructura de la transacción,
automáticamente se verá en la instancia del pattern aplicado y automáticamente entonces se
agregará en los objetos generados. Por lo tanto, se verá al ejecutar la aplicación.

De igual forma, si se elimina un atributo de la estructura de la transacción, automáticamente


será eliminado de la instancia del pattern aplicado y se quitará entonces de los objetos
GeneXus generados.

Vovamos entonces a nuestra aplicación.

Hemos decidido agregar en la estructura de la transacción Country el atributo nuevo


CountryFlag de tipo Image para ver también la bandera de cada país.

Asi que declaramos este nuevo atributo.

Y grabamos los cambios.


4
Page

Video filmado con GeneXus X Evolution 2 – upgrade 2


Si editamos ahora la instancia del pattern work with aplicado, vemos que el nuevo atributo
aparece automáticamente.

Esto nos lleva a pensar entonces que automáticamente también se verá en ejecución.

Para verificarlo, presionemos F5…

Y seleccionamos Wotk With Country

Ahora bien.

¿Qué sucede si editamos manualmente los objetos generados por la aplicación del pattern?

O sea, qué sucede si por ejemplo abrimos el web panel WWCountry y editamos su form, le
agregamos algún control o modificamos algo?

El dinamismo entre la instancia y el objeto generado se pierde.

Esto significa que las definiciones que luego se puedan hacer en la instancia del pattern, ya no
se aplicarán en la pantalla WWCountry y h abrá que definirlas en forma manual.

¿Se puede recuperar el dinamismo perdido?

SI. Veamos un ejemplo…

Vamos a editar el web panel WWCountry. Desde la Toolbox, por ejemplo arrastramos un
botón. Sabemos entonces que hemos perdido el dinamismo entre la instancia del pattern y
este objeto generado.

Para recuperarlo, teniendo abierto este web panel WWCountry, vamos al menú Edit y
selccionamos Apply Default / all parts.

En este caso entonces estamos recuperando el dinamismo entre la instancia y el objeto


generado, para todas las partes.

Pero el dinamismo se pierde y se recupera por partes.

Si tal como acabamos de mencionar en nuestro ejemplo, se agrega un botón manualmente en


el form de WWCoutnry, pero no se editó nada en sus condiciones ni eventos, entonces el
dinamismo solamente se cortó en lo relacionado al form, pero se mantiene en las otras partes.

Al momento entonces de decidir recuperar el dinamismo, se puede elegir recuperarlo todo


(para esto elegimos la opción Apply Default /All parts), o solamente en lo relativo a la parte del
objeto que se tiene abierta, en este caso el web form
5
Page

Video filmado con GeneXus X Evolution 2 – upgrade 2


Es importante tener presente que cuando se decide recuperar el dinamismo, el objeto se
vuelve a generar a partir de la instancia y entonces se pierden todos los cambios que se
realizaron manualmente.

Bien. Veamos ahora dónde se encuentran las definiciones generales que se aplican
automáticamente para cada patrón. Es decir, todas las inicializaciones que se configuran por
defecto para los mismos.

Seleccionando la vista Preferences, bajo el nodo Patterns, se cuenta con configuraciones de


valores por defecto para las propiedades de cada patrón. Con estos valores por defecto se
inicializan las propiedades al momento de crear las instancias.

Es por esto que si volvemos a la instancia del pattern aplicado a la transacción Coauntry,
vemos que para algunas propiedades aparece el valor “Default”. Y esto significa que la
propiedad ha heredado el valor por defecto de la configuración general del patrón.

Concluimos entonces que es posible modificar localmente los valores de las propiedades para
una instancia en particular, o bien aquí a nivel general si deseamos modificar la inicialización
genérica.

Veamos un ejemplo…

Supongamos que queremos eliminar de la pantalla WWCountry la posibilidad de ingresar


nuevos países.
6
Page

Video filmado con GeneXus X Evolution 2 – upgrade 2


Debemos editar la instancia del pattern asociada a esta transacción Country.. y para el nodo
que ofrece los modos de ejecución de la transacción, en la propiedad correspondiente al modo
“insert”, seleccionamos el valor “False”.

Si en cambio quisiéramos configurar que para todos los Work With por defecto no se ofrezca la
posibilidad de realizar ingresos, la configuración debemos hacerla a nivel general desde aquí.

Y de esta forma todas las instancias ya se van a inicializar con la propiedad correspondiente al
modo Insert en el valor False.

Para finalizar, veremos cómo eliminar la aplicación del pattern Work With a una transacción.

Debemos borrar los objetos generados por el pattern.

Así que desde la ventana Folder View, y en este caso bajo la transacción, seleccionamos Work
With Country y presionamos Delete.

Esto provocará que automáticamente se eliminen todos los objetos generados por la
aplicación del pattern Work With, y además se desmarque la casiila “Apply this pattern on
Save”… la cual va a permitir que en el futuro se pueda volver a aplicar.
7
Page

Video filmado con GeneXus X Evolution 2 – upgrade 2

También podría gustarte