Vous êtes sur la page 1sur 27

Prtica do padro WorkWithPlus

Pgina |2

Introduo
O padro WorkWithPlus um padro desenvolvido por DVelop Software Solutions com o objetivo de
acompanhar a alterao tecnolgica da nova verso de GeneXus. Foi desenvolvido a partir do WorkWith Pattern convencional, desenvolvido pela Artech, com o objetivo de aumentar sensivelmente a flexibilidade oferecida ao usurio, tanto para modificar a forma em que se geram os objetos, bem como para modificar os objetos gerados sem perder a sua relao com o padro.

Exerccio
1. Comeamos por criar uma nova KB.

Pgina |3

2. Em Prototyping Environment selecionamos a opo C# e em Target a opo Web.

3. Em seguida criamos uma nova transao (TRN) com nome Pais, com os seguintes atributos (PaisId definir como AutoNumber = true).

Pgina |4

4. Logo salvamos a TRN e vamos a opo correspondente a Patterns. Aqui vamos encontrar a opo para aplicar o padro WorkWithPlus.

5. Selecionamos o Tab correspondente a WorkWithPlus e pressionamos o check box onde diz Apply this pattern on save. Depois disso salvamos as alteraes e vemos em Output o resultado da gerao do padro. Por ser a primeira vez que aplicamos o pattern, WorkWithPlus importar arquivos de configurao e em seguida aplicar o padro TRN selecionada. Por sua vez, aplicar TRN o Tema WorkWithPlus que depois se poder editar.

Pgina |5

6. Verificamos se so gerados objetos distintos para cada TRN, tais como o objeto WWPais, para trabalhar com todos os pases, o objeto ViewPais, para ver um pas em particular, a tela correspondente TRN Pas, etc. 7. Aps isso, executamos a KB pela primeira vez (F5), onde sero pedido os dados para criao da base de dados do aplicativo, fornea essas informaes e prossiga.

8. A anlise de impacto da KB confirma que temos uma nova TRN e devemos impactar as alteraes na base de dados. Como a base de dados ainda no existe, ela ser criada automaticamente. E em seguida a aplicao gerada e executada.

Pgina |6

10. Entramos na opo Work With Pais, e pressionamos o boto de (+) para ingressar pases.

11. Ingressamos 4 pases e regressamos KB, ao n do pattern WorkWithPlus.

Pgina |7

12. Desde a instncia de cada TRN podemos fazer um "Preview" de como se vai gerar a tela, sem ter que especificar, compilar e executar. Para fazer isso pressionamos o boto direito sobre o n principal da TRN e selecionamos a opo Preview como se mostra na imagem superior. A partir desta ao se mostrar uma tela com uma representao grfica de como esta ser gerada.

13. O WorkWithPlus nos permite modificar propriedades de cada elemento dessa tela e ver as alteraes refletidas em "Preview". Nesse caso selecionamos o atributo PaisNombre e vamos a propriedades.

14. Marcamos a opo Is required como True, para que o padro WorkWithPlus estabelea este atributo como requerido.

Pgina |8

15. Este passo agregar as regras correspondentes ao nvel de Rules como se v na imagem superior. Depois disso podemos pressionar novamente F5 e testar a funcionalidade agregando algum pas adicional. 16. Depois voltamos KB e criamos a transao Persona, como se mostra em seguida, (PersonaId tem AutoNumber = true).

17. O atributo PersonaSexo se define com base em um Domnio Sexo que tem a seguinte estrutura:

Pgina |9

18. De seguida aplicamos o padro WorkWithPlus a esta TRN, e se move a tabela TableActions para cima de TableContent.

P g i n a | 10

19. Selecionamos a opo "Preview" da transao para ver como se vai gerar a tela (observar que as aes aparecem por cima dos dados uma vez que se moveu a tabela de lugar).

P g i n a | 11

20. Depois selecionamos para que o atributo PersonaId no seja visvel na transao, e retornamos a tabela que contm as aes para debaixo da tabela que contm os atributos. Em seguida queremos ter a possibilidade de selecionar em tempo de execuo as colunas que desejamos ver no grid correspondente ao n selecionado, ou seja Trabalhar com Personas. Para isso selecionamos o n Grid dentro do ramo Selection (Work With Personas).

21. Marcamos como True a opo Columns selector. Retornamos TRN Personas no modo "structure" e selecionamos o atributo PaisId. Para esse atributo selecionamos a opo InputType = Descriptions. Em ItemDescriptions = PaisNombre, e em Suggest = OnRequest (esta opo nos permitir ingressar um pas escrevendo o nome e no o id do mesmo).

P g i n a | 12

22. Depois de alterar esta configurao pressionamos F5 novamente, reorganizamos as alteraes correspondentes e vamos para a tela de ingressar pessoas.

P g i n a | 13

23. Depois de ingressar uma pessoa voltamos ao grid correspondente a Trabalhar com Personas. Se desejamos agora alterar as colunas, tanto a sua ordem como selecionar quais so ou no visveis, podemos faz-lo com Columns Selector.

24. Ao pressionar o boto de Edit Columns se abre um popup onde podemos selecionar que colunas queremos ver e em que ordem. Depois de realizar as modificaes pressionamos o boto de Update columns e vemos refletidas as alteraes no grid.

P g i n a | 14

25. Em seguida queremos agregar uma coluna nova no grid, para isso retornamos ao n Selection, e no n da grid selecionamos Add e depois GridVariable para inserir uma varivel nova como coluna.

Assim que selecionamos que queremos agregar esta varivel, aparece uma janela onde se deve escolher sobre que atributo ou domnio estar baseada essa varivel. Elegemos o atributo PersonaNombre e aceitamos. Se agregar no grid o seguinte n:

26. Na nova varivel modificamos o nome para Nombre Completo. Depois em LoadCode iniciamos a varivel. Este cdigo se vai inserir diretamente no evento Load do objeto WWPersonas. Lhe atribumos:
&NombreCompleto = PersonaNombre + ' ' + PersonaApellido + ' (' + PersonaEdad.ToString() + ')'

P g i n a | 15

Depois disso abrimos o objeto WWPersonas e podemos verificar que no evento Load se inseriu o cdigo que agregamos na propriedade anterior. Uma das vantagens de WorkWithPlus a flexibilidade para poder editar os objetos gerados. O que quer dizer que podemos editar os objetos por fora do cdigo gerado pelo padro. Ao fazer essas alteraes particulares sobre o objeto este ficaria normalmente deslinkado do padro, e ao aplicar o padro novamente se perderia as alteraes particulares. Com WorkWithPlus isso no ocorre, as alteraes particulares so guardados e o objeto se mantm linkado com a instncia do padro. Se pode notar que o cdigo gerado pelo padro est delimitado por comentrios (Start e End). O usurio pode agregar cdigo tanto por cima como por baixo do cdigo gerado automaticamente, e o mesmo no ser sobrescrito no momento de reaplicar o padro. Tambm se podem definir novos eventos ou subs (isso se exemplificar mais frente na parte prtica). 28. Depois de executar (F5) vemos o resultado no grid.

29. De seguida vemos como se pode modificar a tabela que contm os botes de Inserir e Exportar de forma a alinhar os mesmos para a esquerda.

P g i n a | 16

30. Tambm podemos alterar as colunas de lugar, como por exemplo mover a coluna Apellido para cima, isto , para antes da coluna Nombre. Todas estas alteraes na instncia se podem salvar e aplicar novamente. Internamente o WorkWithPlus vai deixar o nosso cdigo de usurio igual sem alteraes, e de acordo com isso vai realizar as suas alteraes.

31. Depois de aplicar estas alteraes pressionamos F5 e vemos as alteraes em execuo.

32. Da mesma forma que se pode ingressar cdigo de usurio, o usurio do padro WorkWithPlus pode inserir zonas de usurio. Estas so blocos ou zonas dentro das telas dos web panels gerados pelo padro, nos quais o programador tem total controle. Ou seja, dentro destas zonas de usurio podemos inserir qualquer controle (textblock, variable, User Control, etc) e ao re-aplicar o padro estes se preservam da mesma forma em que os inserimos. Por sua vez, podemos usar cdigo de usurio para modificar propriedades nos controles ou lhes atribuir comportamentos.

P g i n a | 17

De seguida vamos inserir uma Zona de Usurio ou UserTable no n Selection dentro da tabela TableGridHeader.

33. Atribumos um nome tabela que vai definir uma zona de usurio: myUserTable e salvamos a transao.

P g i n a | 18

34. Depois de salvar a transao, abrimos o objeto WWPersona para ver debaixo da grelha a nossa User Table.

35. Dentro desta tabela inserimos um TextBlock de nome PagesTextBlock.

36. A partir do cdigo vamos usar este TextBlock para mostrar a pgina actual na qual nos encontramos no grid. Para isso ingressamos o seguinte cdigo no evento Grid.Load do objeto WWPersona:

37. De seguida pressionamos F5 e vemos as alteraes em execuo.

P g i n a | 19

Com este exemplo podemos ver o potencial desta funcionalidade, que permite ao usurio inserir qualquer tipo de controle que interaja com os demais controles na tela (e desta forma agregar valor aos objetos gerados por WorkWithPlus). 38. Em seguida vamos gerar um Web Panel de associao. Para isso criamos 2 TRN, Empresa e Moeda. Depois criamos uma terceira TRN EmpresaMoneda (que ser o que vai gerar a tabela de relao) como se mostra nas imagens (a TRN EmpresaMoneda deve estar configurada como Business Component).

O Web Panel de associao permitir ao usurio selecionar para determinada empresa, quais as moedas que a mesma vai operar (as moedas relacionadas com cada empresa). 39. Aplique o padro WorkWithPlus na transao de Empresa, e dentro do n Level selecionamos a opo Add -> Association, e selecionamos a TRN EmpresaMoneda.

P g i n a | 20

De seguida salvamos a instncia e assim se aplicar o pattern e se ir criar o novo Web Panel. Depois disso modificamos os TextBlocks: Not associated Empresa Moneda e Associated Empresa Moneda por Monedas no asociadas e Monedas asociadas. 41. Agregamos uma UserAction ao nvel do grid do n Selection e selecionamos em GXObject o objeto criado como associao. Selecionamos o tipo Imagem para o controle e especificamos uma imagem.

P g i n a | 21

42. Agregamos um parmetro a UserAction que seja EmpresaId.

43. Depois salvamos o padro novamente e executamos. Ingressamos uma empresa e 3 moedas e em seguida executamos Work With Empresas e pressionamos o boto de Moneda Asociadas para modificar esta relao de N a N (desta forma poderemos entrar no novo Web Panel de associao que nos permitir selecionar as moedas relacionadas com cada empresa).

P g i n a | 22

44. Em Seguida, queremos que todos os objetos WW tenham a ao para exportar em pdf o grid com os valores que esto sendo filtrados. Ento vamos em Preferences da "KB Navigator / Patterns / Work With Plus, e criamos uma StandardAction na qual selecionamos o nome ExportReport. Agregamos a mesma na tabela Table Actions.

P g i n a | 23

Devemos configurar a propiedade Include Action desta ao, para a ao esteja includa no objeto em <default>,:

Depois configuramos a propriedade Preview de WorkWithPlus Configuration de forma a ver como ficaro os objetos gerados a partir deste Template, podemos associar qualquer transao da aplicao. Aqui selecionamos Persona:

P g i n a | 24

Salvamos a configurao e executamos Preview do objeto Selection, e vemos o resultado:

Para que esta alterao impacte todas as instncias (em particular os objetos Selection) de toda a aplicao, executamos a ao Update Instances, sobre o n Instance Generation Template. Logo se pode visualizar o log que mostra quais Instncias foram impactadas corretamente e que as propriedades no se impactaram, pois haviam sido modificadas nessa instncia em particular, entre outros. Em seguida, abrimos Transao de Pas e confirmamos que se inseriu a nova ao.

P g i n a | 25

P g i n a | 26

Por ltimo, executamos a aplicao e testamos o "export report". 45. Agora vamos criar um web panel a partir do web panel template denominado: WorkWithWithoutBaseTable. Para isso criamos um web panel que se denomine WebPanelEjemplo e abrimos a instncia do Pattern, clicamos na opo "Apply this pattern on save" e salvamos o objeto, em seguida selecionamos o template no qual vamos basear este WebPanel da seguinte forma:

Agora selecionamos o template WorkWithWitohutBaseTable e observamos que se ingressaram todos os ns que foram definidos no template:

P g i n a | 27

Em seguida agregamos variveis no grid, baseadas em PersonaNombre, PersonaApellido e PersonaEdad, teremos uma tela similar a de baixo:

Depois de salvar a WebPanel, se abre Eventos e se realiza o "for each" correspondente para que percorra a tabela de Persona e lhe sejam atribudas as variveis. Por ltimo se executa a aplicao e se vm os resultados em execuo.

Vous aimerez peut-être aussi