Sei sulla pagina 1di 23

Patterns

307

Patterns: Escenario

Filtro sobre los datos

Paginacin

Teniendo la transaccin Country y la transaccin Customer, queremos lograr hacer la aplicacin ms vistosa, con consultas con vistas ms completas y con algn aumento de funcionalidad. Por ejemplo, trabajar con los pases de una forma ms vistosa y amigable que la que brinda la sola transaccin. Visualizar en un grid los pases existentes, con la posibilidad de filtrar por nombre de pas, y fijando paginado al grid, de forma tal que muestre un nmero fijo de registros por pgina...

308

Patterns: Escenario
T r a n s a c t i o n

New Country

Update Country

Delete Country

...as como poder ingresar un nuevo pas (mediante la transaccin Country), o seleccionar uno de los mostrados en el grid, para poder modificarlo o eliminarlo...

309

Patterns: Escenario

...o incluso ver la informacin completa de ese pas, incluyendo los clientes asociados...

310

Patterns
Generalidades Definicin Patrones que se pueden aplicar a una KB para implementar automticamente cierta funcionalidad. Patrones disponibles: Work With Category
Selectores dentro de las Transacciones

Una vez aplicado el patrn, todos los objetos generados quedan como parte de la Base de Conocimiento.

Es natural al desarrollar aplicaciones, tener que resolver partes muy similares pero no exactamente iguales. Por ejemplo, si en una Base de Conocimiento se tienen modelados los objetos de la realidad Customers y Countries, a pesar de ser dichos objetos bien diferentes, los Work With Customers y Work With Countries respectivamente, tienen muchas cosas en comn: un grid en el form, un conjunto de variables para utilizar en filtros, opciones de ordenamiento de la consulta, invocaciones a la transaccin correspondiente para actualizar la base de datos, etc.. Surgen entonces los Patterns, que ofrecen la posibilidad de aplicar un patrn (pattern) a las instancias que se deseen de una Base de Conocimiento, y generar todos los objetos GeneXus necesarios para implementar cierta funcionalidad, teniendo en cuenta sus datos especficos. Siguiendo con el ejemplo mencionado inicialmente, es posible aplicar el patrn Work With a la Base de Conocimiento, de forma tal que partiendo de las transacciones Customer y Country, se obtenga todo el desarrollo correspondiente al Work With Customers y Work With Countries para ambiente web (pantallas vistosas que implementan las consultas, con ordenamientos, filtros, invocaciones a las transacciones correspondientes, y ms).

311

Patterns
Work With
Genera a partir de una Transaccin: Pantalla Work With: consulta interactiva, mltiples ordenamientos, filtros, invocacin a la transaccin, etc. Pantalla View: Registro seleccionado, con la informacin asociada.

WorkWith

Transaccin
View

La pantalla Work With ofrece: Consulta interactiva Mltiples ordenamientos Filtros Invocacin a la Transaccin en los diferentes modos (insert, update, delete, display) Posibilidad de incluir invocadores propios a objetos Link en cada lnea de la grilla a la pantalla View La pantalla View muestra: La informacin del registro seleccionado en la grilla Work With Un tab control con: Un tab con la informacin del registro Un tab por cada tabla subordinada a la tabla base del registro en la grilla Work With.:

312

Patterns
Aplicacin

Abrir la Transaccin. Seleccionar el patrn a aplicar (aparecer la instancia por defecto). Marcar la opcin Apply this pattern on save. Grabar la Transaccin.

Para aplicar el pattern sin demoras, alcanzar con editar la instancia (selector Work With de la transaccin), marcar el check box y grabar. Listo! Con eso se crearn automticamente los objetos GeneXus que implementan el pattern (en particular la pantalla de seleccin y filtro y la pantalla de View que mostramos antes). Asimismo se modificar la transaccin para que ahora reciba por parmetro el modo (Insert, Update, Delete, Display) y el pas.

313

Patterns
Work With: objetos generados
Consecuencia: Se generan en la KB los objetos que ya vimos en ejecucin. Dnde? En el Folder View, bajo la propia transaccin:

Una vez grabada la instancia, en el folder view, bajo el nombre de la transaccin, aparecer el nombre del pattern aplicado a la misma (en nuestro ejemplo WorkWithCountry) y todos los objetos que GeneXus debe crear para implementarlo. En nuestro caso se crearn 2 objetos de tipo Web Component, y 2 objetos de tipo Web Panel. Son muy similiares. La diferencia es que un Web Component puede incluirse dentro de otro objeto. No entraremos en detalles en este momento.

314

Patterns
Ejemplo
Aplicacin del pattern Work With a la transaccin Country.

Al aplicar el pattern Work With a la transaccin Country, se crear: Pantalla Work With: Tendr una grilla con los atributos de la transaccin: CountryId y CountryName. Se podr ordenar y filtrar por CountryName, por ser CountryName el atributo descriptor. Se podr invocar a la transaccin en los diferentes modos (Insert, Update, Delete). Pantalla View: Mostrar dos tabs. El primer tab tendr la informacin del pas seleccionado, y el segundo tendr la informacin de los clientes pertenecientes a dicho pas (puesto que existe una relacin 1-N entre las tablas Country y Customer asociadas a las transacciones de igual nombre).

315

Patterns
Comenzando a asociar... pantalla Work With

Se sita en el pas indicado, o muestra todos los pases.

Son muchas las propiedades que se ofrecen en las instancias correspondientes al patrn Work With, para personalizar el comportamiento de los objetos que se generarn. A continuacin describimos algunas de ellas. El nodo Selection ofrece las propiedades relacionadas a la pantalla Work With que se generar para la instancia. Sus sub-nodos son: Modes (Ins, Upd, Del, Dis) Este nodo permite definir en cules modos se ofrecer invocar a la transaccin. Las posibilidades y sus valores por defecto son: Insert: True Update: True Delete: True Display: False En la instancia aparece <default> al lado de cada una de las propiedades anteriores. Dnde se configura este valor por defecto? Lo veremos unas pginas ms adelante. Para cada modo podr especificarse una condicin. Se proveen las siguientes propiedades para ese propsito: Insert Condition, Update Condition, Delete Condition, Display Condition. Si se define una condicin asociada a un modo, la invocacin para ese modo solo se habilitar si la evaluacin de la condicin es verdadera (Ejemplo: CountryId=10).

316

Patterns
Personalizacin... pantalla Work With

Agregar,eliminar,ocultar atributos ovariables delgrid. Especificar losmodos deinvocacin alatransaccin. Definir rdenes yfiltros. Agregar,eliminar,modificar Acciones.

Posicionarse en el nodo correspondiente y presionar el botn derecho del mouse.

Attributes Este nodo permite definir cules atributos se desean mostrar en el grid (y para cada atributo, se pueden personalizar sus propiedades). Por defecto muestra todos los atributos de la estructura de la transaccin. Orders Es posible ofrecer al usuario final varios rdenes posibles para ver el resultado de la consulta (es decir, las lneas mostrando los datos en el grid). Utilizando el botn derecho del mouse se puede definir un nuevo orden (su nombre y composicin). Cada orden puede estar compuesto por varios atributos (pudiendo indicar para cada uno de ellos si se desea orden ascendente o descendente). Se presentar un combobox en la pantalla Work With ofreciendo todos los rdenes posibles de seleccionar, para que el usuario final elija uno y los datos se presenten en el grid ordenados por el mismo. Sin embargo, el control grid ya presenta la posibilidad de ordenar en ejecucin, simplemente cliqueando sobre la columna por la que se desean tener ordenados los datos. Pero hay que tener en cuenta que esa funcionalidad solo permite ordenar en ejecucin los datos de la pgina del grid que se est mostrando. Filter Este nodo permite definir condiciones de filtro, para que en el grid se muestren solo los registros que cumplan con las mismas. Actions El nodo Actions permite incorporar acciones propias a la pantalla Work With. Es decir, permite agregar botones (dentro o fuera del grid) que invoquen a los objetos que se indiquen, con sus correspondientes parmetros. Si bien el nodo Actions no est visible por defecto, estando posicionado en el nodo Selection y presionando el botn derecho del mouse, se ofrecer la opcin Add Actions que lo agregar. Una vez agregado este nodo, estando posicionado sobre el mismo y presionando el botn derecho del mouse, se ofrecer la opcin Add Action que permitir agregar una accin con su nombre de accin, caption, objeto invocado, etc.

317

Patterns
Personalizacin - Ejemplos
1) Ocultar atributo CountryId del grid.

F4

Por qu ocultarlo en lugar de eliminarlo?

El atributo CountryId, a diferencia del CountryName, no puede ser eliminado del grid, debido a que es el atributo que se enva a la transaccin Country cuando el usuario desea modificar o eliminar el pas mostrado en una lnea del grid del Work With.

318

Patterns
Personalizacin - Ejemplos
2) Eliminar modo Delete desde el grid.

F4

Al editar las propiedades estando posicionados en el nodo de la instancia que se muestra, podemos observar que cada uno de los modos en que se puede invocar una transaccin (para insertar, modificar, eliminar o incluso deplegar) estn listados como propiedades. Podemos ver tambin que aparece una propiedad Export que permite exportar los datos a una planilla excel. Otra vez aqu podemos apreciar que cada una de las propiedades tiene el valor <default> que an no sabemos de dnde es tomado. Pero si queremos fijar un valor independiente de cul sea el default, podemos editar el combo box que presentar tres valores: <default>, true, o false. Hemos fijado el valor de la propiedad Delete en false. Podemos ver en ejecucin la repercusin. Ya no aparece en el grid la primera columna que contena la imagen que permita eliminar el pas. Ahora no se podr desde esta pantalla eliminar pases. Obsrvese tambin cmo ha desaparecido del grid el atributo CountryId. Lo habamos ocultado en la pgina anterior.

319

Patterns
Personalizacin - Ejemplos
3) Agregar una Accin a la pantalla Work With Countries que invoque al proceso de facturacin: BillingProcess.
a) Clic con el botn derecho sobre el nodo Selection

b) Clic con botn derecho sobre el nodo Actions que apareci al final.

320

Patterns
Personalizacin - Ejemplos
c) Definir la Accin editando sus propiedades (F4).
Nombre de la accin y objeto que se invoca.

Botn fuera del grid.

d) Finalmente en ejecucin, se observa el botn fuera del grid.

Ya habamos definido el objeto BillingProcess para realizar la facturacin del mes a todos los clientes. Aqu estamos agregando un botn fuera del grid, que al presionarlo llama a este otro objeto GeneXus que habamos creado antes.

321

Patterns
Asociando... pantalla View

El nodo View por su parte, ofrece las propiedades relacionadas a la pantalla View que se generar para la instancia. Muestra toda la informacin de un registro, que fue seleccionado en el grid del Work With (la informacin del registro es mostrada en una solapa de un tab control, y adems hay una solapa con un grid por cada tabla directamente subordinada, para mostrar la informacin relacionada).

322

Patterns
Personalizacin - Ejemplos
1) Quitar atributos CustomerGender y CustomerStatus del tab Customer de la pantalla View Country.

a) Posicionarse sobre el atributo y borrarlo con la tecla de eliminacin del teclado o botn derecho/Delete.

En este caso si no queremos que los atributos CustomerGender y CustomerStatus se vean en el grid en ejecucin, no necesitamos ocultarlos. Podemos directamente eliminarlos.

323

Patterns
Personalizacin - Ejemplos
2) Agregar un filtro por CustomerName en el tab Customer.

a) Click con el botn derecho sobre el tab Customer

b) Indicar el atributo sobre el cual filtrar, editando las propiedades (F4).

Una vez que ejecuta el paso a) y elige Filter aparecer un nuevo nodo Filter inmediatamente despus del nodo Attributes, con 2 subnodos: Attributes y Conditions. Luego, en el paso b), deber posicionarse en el subnodo Attributes y hacer botn derecho, donde se le ofrecer la posibilidad de agregar un atributo de filtro. Al editar las propiedades, usted deber presionar el combo box que le desplegar una ventana donde ingresar el atributo (en nuestro caso, CustomerName). Con esto se crear automticamente una variable de igual nombre que el atributo &CustomerName, que ser el control que aparecer en ejecucin para que el usuario digite all el filtro. Veamos el paso siguiente...

324

Patterns
Personalizacin - Ejemplos
(Continuacin) c) Definir la condicin correspondiente.

325

Patterns
Valores por defecto para las propiedades
Propiedades (F4)

El patrn Work With adems de generar objetos nuevos, tambin modifica las transacciones, para que sean invocadas por los objetos generados por el pattern, agregndoles regla parm, etc. Relacionado a esto, cada instancia contiene la propiedad UpdateTransaction, que ofrece los siguientes valores: Do not update: La transaccin no ser modificada (web form, reglas y eventos sern mantenidos). Only rules and events: Solo las reglas y eventos se modificarn, no se modifica el web form. Apply WW Style: La primera vez que se aplique el patrn, el comportamiento ser el mismo que si se hubiese seleccionado el valor Create Default. A partir de la segunda vez que se aplique el patrn, no se modificar la data area del form de la transaccin (por si se personaliz y se desea mantener), y s se modificar el style area, as como los eventos y reglas. Create default: Reglas, eventos y form de la transaccin (tanto data area como style area) sern modificados. En lo que respecta al form, ser como seleccionar la opcin Apply default (Web Form). El valor por defecto para esta propiedad es Only rules and events. En cuanto a las propiedades AfterInsert, AfterUpdate y AfterDelete, permiten definir el comportamiento luego de que se inserta, modifica o elimina un registro. Los valores posibles para cada una de ellas son: <default> Return to caller Go to View Go to Selection Otra vez el valor <default>. Lleg el momento de ver dnde se configuran todos estos valores por defecto que hemos ido encontrando en la instancia...

326

Patterns
Pattern Settings
Configuracin de propiedades generales (para todas las instancias).

En este lugar estn centralizados los <default> para toda instancia. Podemos ver que en el nodo Template se ofrecen algunas de las propiedades que mencionamos en la pgina anterior. El tamao de pgina de los grids del work with, que en las imgenes anteriores era de 3 (se mostraban 3 lneas por pgina del grid) se configura en el nodo Grid. El valor por defecto de esta propiedad es Page.Rows. Es decir, el valor del dominio enumerado Pages creado por GeneXus automticamente al aplicar el pattern por primera vez. El valor que tiene Page es 10. Nosotros lo habamos cambiado a 3 para que nos entraran las imgenes completas en estas slides.

327

Patterns
Dinamismo entre la Transaccin y Patterns TodoslosobjetosgeneradosporPatterns estnbasadosenelesquemade Defaults deGeneXus.CadapartedeunobjetoesgeneradacomoDefault..

LaimplementacinbasadaenDefaults permitetenerdinamismoentrela Transaccinyelpatrn.


No es necesario reaplicar el patrn, los cambios se ven al abrir nuevamente el objeto

Eldinamismosemantieneparatodaslaspartesdefault delobjeto
OpcinEdit /Apply Default delMen paravolveraldefault deunaparteode todaslaspartes(All parts) Ejemplo:siagregamosatributoCountryFlag alaestructuradeCountry,qu pasar conelgrid delWork With Countries?SisteconservaelDefaul,ser agregadaautomticamentecolumnaCountryFlag algrid.

El dinamismo mencionado se mantiene para todas las partes default de los objetos. Todos los objetos generados por Patterns estn basados en el esquema de Defaults de GeneXus. Cada parte (Form, Reglas, Eventos) de cada objeto es generado como Default. Si se modifica alguna parte del objeto, sta deja de ser Default. Por ejemplo, si se modifica el web form de un WW (no queda como default), y se agrega un nuevo atributo a la transaccin, no se va a actualizar automticamente el grid del WW con ese atributo (o sea, no se agregar dicho atributo). La implementacin basada en Defaults permite tener dinamismo entre la Transaccin y el patrn Cambiar propiedades en la definicin del patrn (Pattern setting) Cambios en la instancia (agregar un nuevo filtro) Cambios en la Transaccin (agregar un nuevo atributo) Si se quiere volver al dinamismo, se deber tener nuevamente las partes como default. Para esto, se debe seleccionar desde el Men Edit / Apply Default (la parte donde se tiene abierto el objeto) o Apply Default (All parts), lo cual vuelve a default todas las partes que se haban modificado.

328

Patterns
Cmo borrar los objetos generados por Patterns
Seleccionar la instancia en el Folder View, presionar botn derecho / opcin Delete o presionar la tecla DEL. Aparecer el mensaje:

Al confirmar el mensaje:

Se borrarn todos los objetos generados por Patterns asociados a la Transaccin. Se borrarn todos las reglas y eventos agregados por Patterns en la Transaccin. Se desmarcar la opcin Apply this pattern on save de la Transaccin.

329

Potrebbero piacerti anche