14 patterns-curso gxxbr

493 visualizações

Publicada em

0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
493
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
12
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

14 patterns-curso gxxbr

  1. 1. 307
  2. 2. ! "
  3. 3. # # # # # # #$ ## # %# # # # # # # # # # & # # &
  4. 4. # # ## # # # # # # #
  5. 5. É natural ao desenvolver, ter que resolver partes muito similares mas não exatamente iguais. Por exemplo, se em uma Base de Conhecimento tem modelados os objetos da realidade Customer e Country, apesar de ditos objetos serem bem diferentes, os “Work With Customers” e “Work With Countries” respectivamente, possuem muitas coisas em comum: um grid no form, um conjunto de variáveis para utilizar em filtros, opções de ordens da consulta, chamadas à transação correspondente para atualizar a base de dados, etc.. Surgem então os Patterns, oferecendo a possibilidade de aplicar um padrão (pattern) às instâncias desejadas de uma Base de Conhecimento, e gerar todos os objetos GeneXus necessários para implementar certa funcionalidade, considerando seus dados específicos. Seguindo com o exemplo mencionado inicialmente, é possível aplicar o padrão “Work With” na Base de Conhecimento, de tal forma que partindo das transações “Customer” e “Country” (e caso se deseja outras), se obtenha todo o desenvolvimento correspondente ao “Work With Customers” e “Work With Countries” para ambiente web (telas vistosas que implementam as consultas, com ordens, filtros, chamadas às transações correspondentes, e mais).
  6. 6. A tela Work With oferece: • Consulta interativa • Múltiplas ordens • Filtros • Chamada à Transação nos diferentes modos (insert, update, delete, display) • Possibilidade de incluir chamadas próprias a objetos • Link em cada linha do grid a tela ‘View’ A tela View mostra: • A informação do registro selecionado no grid Work With • Um tab control com: • Um tab com a informação do registro • Um tab para cada tabela subordinada a tabela base do registro no grid Work With.:
  7. 7. Para aplicar o pattern sem demoras, basta editar a instância (selector “Work With” da transação), marcar o check box e gravar. Pronto! Com isso são criados automaticamente os objetos GeneXus que implementam o pattern (em particular a tela de seleção e filtro e a tela de View que mostramos antes). Assim mesmo se modificará a transação para que agora receba por parâmetro o modo (Insert, Update, Delete, Display) e o país.
  8. 8. 314 Uma vez gravada a instância, no folder view, abaixo o nome da transação, aparece o nome do pattern aplicado a mesma (em nosso exemplo WorkWithCountry) e todos os objetos que GeneXus deve criar para implementar. Em nosso caso serão criados 2 objetos de tipo Web Component, e 2 objetos de tipo Web Panel. São muitos similares. A diferença é que um Web Component pode ser incluído dentro de outro objeto. No entraremos em detalhes neste momento.
  9. 9. Ao aplicar o pattern Work With na Transação Country, será criado: • Tela Work With: • Terá um grid com os atributos CountryId e CountryName • Poderá ordenar e filtrar por CountryName, por ser CountryName o atributo descriptor. • Poderá chamar a transação nos diferentes modos • Tela View: Mostrará dois tabs. O primeiro tab terá a informação do país selecionado, e o segundo terá a informação dos clientes pertencentes a dito país (porque existe uma relação 1-N entre as transações Country e Customer). Caso não se queira visualizar o atributo CountryId no grid da tela Work With, basta editar suas propriedades a partir do nó Attributes e colocar a propriedade Visible=False. Não pode ser eliminada porque é a chave primária da transação Country.
  10. 10. São muitas as propriedades oferecidas nas instancias correspondentes ao padrão Work With, para personalizar o comportamento dos objetos que serão gerados. Na continuação descrevemos algumas delas. O nó Selection oferece as propriedades relacionadas a tela Work With que se gera para a instância. Seus sub- nós são: Modes (Ins, Upd, Del, Dis) Este nó permite definir em quais modos se pode chamar a transação. As possibilidades e seus valores por default são: Insert: True Update: True Delete: True Display: False Na instância aparece <default> ao lado de cada uma das propriedades anteriores. Onde se configura este valor por default? Veremos numas páginas mais adiante. Para cada modo poderá especificar-se uma condição. São fornecidas as seguintes propriedades para esse propósito: Insert Condition, Update Condition, Delete Condition, Display Condition. Se define uma condição associada a um modo, a chamada para esse modo somente será habilitada a avaliação da condição é verdadeira (Exemplo: CountryId=10).
  11. 11. Attributes Este nó permite definir quais atributos desejam mostrar no grid (e para cada atributo, várias propriedades podem ser personalizadas). Orders É possível oferecer ao usuário final várias ordens possíveis para ver o resultado da consulta (isto é, as linhas mostrando os dados no grid). Utilizando o botão direito do mouse pode ser definida uma nova ordem (seu nome e composição). Cada ordem pode estar composta por vários atributos (podendo indicar para cada um deles se deseja ordem ascendente ou descendente). Um combobox será apresentado na tela WorkWith oferecendo todas as possíveis ordens a serem selecionadas, para que o usuário final escolha e os dados sejam apresentados no grid ordenados pelo mesmo. Filter Este nó permite definir condições de filtro, para que no grid sejam mostrados somente os registros que cumpram com as mesmas. Actions O nó Actions permite incorporar ações próprias na tela WorkWith. Isto é, permite agregar botões (dentro ou fora do grid) que chamem aos objetos indicados, com seus parâmetros correspondentes. O nó Actions não está visible por default, estando posicionado no nó Selection e pressionando o botão direito do mouse, a opção Add Actions é oferecida para ser agregada. Uma vez agregado este nó, estando posicionado sobre o mesmo e pressionando o botão direito do mouse, se oferecerá a opção Add Action que permitirá agregar uma ação com seu nome de ação, caption, objeto chamado, etc. O nó View por sua vez, oferece as propriedades relacionadas a tela View gerada para a instância. Mostra toda a informação de um registro, que foi selecionado no grid do WorkWith (a informação do registro é mostrada em uma aba de um tab control, e além disso tem uma aba com um grid para cada tabela diretamente subordinada, para mostrar a informação relacionada).
  12. 12. 318 O atributo CountryId, diferente do CountryName, não pode ser eliminado do grid, isso porque é um atributo que se envia a transação ‘Country’ quando o usuário deseja modificar ou eliminar o país mostrado numa linha do grid do Work With.
  13. 13. 319 Ao editar as propriedades estando posicionados no nó da instância que se mostra, podemos observar que cada um dos modos que se pode chamar uma transação (para inserir, modificar, eliminar ou incluso mostrar) estão listados como propriedades. Podemos ver também que aparece uma propriedade Export que permite exportar os dados a uma planilha excel. Outra vez aqui podemos apreciar que cada uma das propriedades possui o valor <default> que ainda não sabemos de onde é pego. Mas se queremos fixar um valor independente de qual seja o default, podemos editar o combo box que apresentará três valores: <default>, ‘true’, ou ‘false’. Fixamos o valor da propriedade Delete em ‘false’. Podemos ver em execução a repercussão. Não aprece no grid a primeira coluna que contêm a imagem que permitia eliminar o país. Agora não se pode eliminar países a partir dessa tela. Observe também como desapareceu do grid o atributo CountryId. Ocultamos ele na página anterior.
  14. 14. 321 Já havíamos definido o objeto BillingProcess para realizar o faturamento do mês de todos os clientes. Aqui estamos agregando um botão fora do grid, que ao pressioná-lo chama outro objeto GeneXus que havíamos criado anteriormente.
  15. 15. 322 O nó View por sua parte, oferece as propriedades relacionadas a tela view que se gera para a instância. Mostra toda a informação de um registro, que foi selecionado no grid do Work With (a informação do registro é mostrada em uma aba de um tab control, e além disso tem uma aba com um grid para cada tabela diretamente subordinada, para mostrar a informação relacionada).
  16. 16. 323 Neste caso se não queremos que os atributos CustomerGender e CustomerStatus sejam vistas no grid em execução, não necessitamos ocultá-los. Podemos diretamente eliminá-los.
  17. 17. 324 Uma vez executado o passo a) e escolher ‘Filter’ aparecerá um novo nó Filter imediatamente depois do nó Attributes, com 2 subnós: Attributes e Conditions. Depois, no passo b), deverá posicionar-se no subnó Attributes e fazer botão direito, onde se oferece a possibilidade de agregar um atributo de filtro. Ao editar as propriedades, você deverá pressionar o combro box vai mostrar uma janela onde se ingressa o atributo (em nosso caso, CustomerName). Com isto se cria automaticamente uma variável com o mesmo nome que o atributo &CustomerName, que será o control que aparecerá em execução para que o usuário digite ali o filtro. Vejamos o passo seguinte...
  18. 18. 325
  19. 19. O padrão WorkWith além de gerar objetos novos, também modifica as transações, para que sejam chamadas pelos objetos gerados pelo pattern, agregando a regra parm, etc.. Relacionado a isto, cada instância contêm a propriedade UpdateTransaction, que oferece os seguintes valores: Do not update: A transação não será modificada (web form, regras e eventos serão mantidos). Only rules and events: Somente as regras e eventos serão modificados, o web form não é modificado. Apply WW Style: A primeira vez que o padrão é aplicado, o comportamento será o mesmo que se houvesse selecionado o valor Create Default. A partir da segunda vez que o padrão é aplicado, não se modificará a data área do form da transação (caso tenha sido personalizada com GeneXus e deseja manter), e se modificará o style área, assim como os eventos e regras. Create default: Regras, eventos e form da transação (tanto data área como style área) serão modificados. No que diz respeito ao form, será como selecionar a opção Create default a partir do GeneXus. O valor por default para esta propriedade é Apply WW Style. Enquanto as propriedades AfterInsert, AfterUpdate e AfterDelete, permitem definir o comportamento depois que se insere, modifica ou elimina um registro. Os valores possíveis para cada uma delas são: • Default • Return to caller • Go to View • Go to Selection
  20. 20. Aqui estão centralizados os <default> para toda instancia. Podemos ver que o nó Template oferece algumas propriedades que mencionamos na página anterior. O tamanho da página dos grids do work with, que nas imagens anterior era de 3 (se mostravam em 3 linhas por página do grid) se configura no nó Grid. O valor por default desta propriedade é Page.Rows. Isto é, o valor do domínio enumerado Pages criado por GeneXus automaticamente ao aplicar o pattern na primeira vez. O valor que tem Page é 10. Nós tínhamos alterado para 3 para que não fosse mostrado as imagens complestas.
  21. 21. O dinamismo mencionado se mantêm para todas as partes default dos objetos. Todos os objetos gerados por Patterns estão baseados no esquema de Defaults de GeneXus. Cada parte (Form, Regras, Eventos) de cada objeto é gerado como Default. Caso alguma parte do objeto tenha sido modificada, esta deixa de ser Default. Por exemplo, se modificar o web form de um WW (não fica como default), e se agrega um novo atributo na TRN, não vai ser atualizado automaticamente o grid WW com esse atributo (ou seja, não será agregado dito atributo). A implementação baseada em Defaults permite ter dinamismo entre a Transação e o padrão • Alterar propriedades na definição do padrão (Pattern setting) • Alterações na instância (agregar um novo filtro) • Alterações na Transação (agregar um novo atributo) Se quiser voltar o dinamismo, deverá ter novamente as partes como default. Para isto, se deve selecionar a partir do Menu Edit / Apply Default (a parte onde se tem aberto o objeto) ou Apply Default (All parts), voltando o default de todas as partes que haviam sido modificadas.

×