23
307

14 patterns-curso gxxbr

Embed Size (px)

Citation preview

Page 1: 14 patterns-curso gxxbr

307

Page 2: 14 patterns-curso gxxbr

����� � ������� �� ����� � ������� � ������� ��������� �������� ������������ ��� ������ ���������������� ��� ��� � � ����� �� ���� ���������

����������������������� ������� �� ����� �������� � ��������� � � � � ������ ������ ��������� � ���!��� � ���� ����������������� � ����������� �� �������������� �� ����� �������� �������� �� ������� �������� � � ����� � �"���� ���� �� �������������������

Page 3: 14 patterns-curso gxxbr

������#����#�����#�������# �#����#���#$��������#�#�������#�� ����%�#� #���������# �#��#�������#��#�����#����#�����#��������&��#� #�������&�����

Page 4: 14 patterns-curso gxxbr

���� #���� �#���#�#���������#��������#���#����#���� ����#�#�������#����������

Page 5: 14 patterns-curso gxxbr

É 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 utilizarem filtros, opções de ordens da consulta, chamadas à transação correspondente para atualizar a base dedados, etc..

Surgem então os Patterns, oferecendo a possibilidade de aplicar um padrão (pattern) às instâncias desejadasde uma Base de Conhecimento, e gerar todos os objetos GeneXus necessários para implementar certafuncionalidade, considerando seus dados específicos.

Seguindo com o exemplo mencionado inicialmente, é possível aplicar o padrão “Work With” na Base deConhecimento, de tal forma que partindo das transações “Customer” e “Country” (e caso se deseja outras), seobtenha todo o desenvolvimento correspondente ao “Work With Customers” e “Work With Countries” paraambiente web (telas vistosas que implementam as consultas, com ordens, filtros, chamadas às transaçõescorrespondentes, e mais).

Page 6: 14 patterns-curso gxxbr

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.:

Page 7: 14 patterns-curso gxxbr

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.

Page 8: 14 patterns-curso gxxbr

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.

Page 9: 14 patterns-curso gxxbr

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á ainformação dos clientes pertencentes a dito país (porque existe uma relação 1-N entre as transações Country eCustomer).

Caso não se queira visualizar o atributo CountryId no grid da tela Work With, basta editar suas propriedades apartir do nó Attributes e colocar a propriedade Visible=False. Não pode ser eliminada porque é a chaveprimária da transação Country.

Page 10: 14 patterns-curso gxxbr

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: TrueUpdate: True

Delete: TrueDisplay: 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).

Page 11: 14 patterns-curso gxxbr

Attributes

Este nó permite definir quais atributos desejam mostrar no grid (e para cada atributo, várias propriedadespodem ser personalizadas).

Orders

É possível oferecer ao usuário final várias ordens possíveis para ver o resultado da consulta (isto é, as linhasmostrando os dados no grid). Utilizando o botão direito do mouse pode ser definida uma nova ordem (seunome e composição). Cada ordem pode estar composta por vários atributos (podendo indicar para cada umdeles se deseja ordem ascendente ou descendente). Um combobox será apresentado na tela WorkWithoferecendo todas as possíveis ordens a serem selecionadas, para que o usuário final escolha e os dadossejam apresentados no grid ordenados pelo mesmo.

Filter

Este nó permite definir condições de filtro, para que no grid sejam mostrados somente os registros quecumpram com as mesmas.

Actions

O nó Actions permite incorporar ações próprias na tela WorkWith. Isto é, permite agregar botões (dentro oufora do grid) que chamem aos objetos indicados, com seus parâmetros correspondentes. O nó Actions nãoestá visible por default, estando posicionado no nó Selection e pressionando o botão direito do mouse, aopção Add Actions é oferecida para ser agregada. Uma vez agregado este nó, estando posicionado sobre omesmo e pressionando o botão direito do mouse, se oferecerá a opção Add Action que permitirá agregar umaaçã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 todaa informação de um registro, que foi selecionado no grid do WorkWith (a informação do registro é mostrada emuma 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).

Page 12: 14 patterns-curso gxxbr

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.

Page 13: 14 patterns-curso gxxbr

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.

Page 14: 14 patterns-curso gxxbr
Page 15: 14 patterns-curso gxxbr

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.

Page 16: 14 patterns-curso gxxbr

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).

Page 17: 14 patterns-curso gxxbr

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.

Page 18: 14 patterns-curso gxxbr

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...

Page 19: 14 patterns-curso gxxbr

325

Page 20: 14 patterns-curso gxxbr

O padrão WorkWith além de gerar objetos novos, também modifica as transações, para que sejam chamadaspelos objetos gerados pelo pattern, agregando a regra parm, etc..

Relacionado a isto, cada instância contêm a propriedade UpdateTransaction, que oferece os seguintesvalores:

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 houvesseselecionado 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á ostyle á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. Noque 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 depoisque 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

Page 21: 14 patterns-curso gxxbr

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.

Page 22: 14 patterns-curso gxxbr

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 sidomodificada, 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 naTRN, não vai ser atualizado automaticamente o grid WW com esse atributo (ou seja, não será agregado ditoatributo).

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) ouApply Default (All parts), voltando o default de todas as partes que haviam sido modificadas.

Page 23: 14 patterns-curso gxxbr