07 procedures-curso gxxbr

  • View
    1.460

  • Download
    3

Embed Size (px)

DESCRIPTION

Genexus Course

Text of 07 procedures-curso gxxbr

  • Procedimentos:Definem processos no interativos de consulta e atualizao da base de dados. Os procedimentospodem gerar um arquivo formato PDF, mediante o qual possvel listar informao na tela ouimpressora. Alm disso, os procedimentos podem atualizar a base de datos1.

    _____________________________________________________________________________

    1 Como veremos mais adiante, existe um tipo de dados especial, que no estritamente um tipo dedados, mas algo um pouco mais complexo, o business component, por meio do qual sero realizadosatualizaes a base de dados em qualquer objeto GeneXus. Portanto, utilizando variveis de tipo dedados business component, podero ser realizadas atualizaes incluso nos objetos que pornatureza no oferecem esta possibilidade, como as web panels.

  • Definio proceduralA diferena das regras das transaes onde as especificaes se realizam de forma declarativa eGeneXus determina no momento de gerar o programa a seqncia de execuo, nos procedimentosas especificaes se realizam de forma procedural. Desta forma, a seqncia de execuo determinada pelo analista, utilizando para isso uma linguagem simples que contem comandos decontrole, de impresso, de acesso a base de dados, etc.

    Definio sobre a base de conhecimentoA grande potencia da linguagem dos procedimentos est que as definies so realizadas sobre abase de conhecimento e no diretamente sobre o modelo fsico (tabelas, ndices, etc.). Isto nos permiteutilizar automticamente todo o conhecimento j incorporado ou gerado por GeneXus a partir dasespecificaes realizadas.

    Por exemplo, se desejamos mostrar o resultado de uma frmula suficiente nomear o atributo frmulano lugar adequado e GeneXus dispara o clculo mostrando o resultado, sem necessidade do analistaoferecer nenhuma outra informao. A informao de como se calcula um atributo frmula est contidana base de conhecimento.

    Tambm podemos utilizar o conceito de tabela estendida, j que GeneXus conhece as relaes entreas tabelas da base de dados, o analista no precisa explicitar estas relaes na hora de recuperardados.

    Independncia da base de dados: definio a nvel de atributosA definio dos procedimentos se faz a nvel de atributos: no necessrio indicar explcitamentequais tabelas ser

    ndices. Somente mencionando os atributos quedeseja acessar suficiente para que o GeneXus determine esta informao. Isto possvel porqueGeneXus possui um completo conhecimento da estrutura da base de dados.

    Desta maneira obtemos uma real independncia da base de dados, j que qualquer alterao nastabelas ser gerenciado automaticamente pelo GeneXus e desta forma, para atualizar os programasalcana em grande parte das vezes, como regerar os objetos sem ter que modificar nada doprogramado neles.

  • Para cada procedimento se pode definir:

    Source: Aqu o cdigo correspondente a lgica do procedimento. Tambm podem definir-se ao finaldo cdigo subrotinas1 que podem ser chamadas a partir do prprio cdigo mediante o comando adequado.

    Layout: As como as transaes possuem uma tela (form), os procedimentos possuem um layout de sada.Nesta seo se define apresentao do procedimento: os dados que se quer listar e o formato da sada.

    Regras-Propriedades: Definem aspectos gerais do procedimento, como seu nome, descrio, tipo de sada(impressora, arquivo, tela), parmetros que recebe o objeto, etc. Condies: Condies que devem cumprir os dados para ser recuperados (filtros). Variveis: Variveis locais ao objeto. Ajuda: Permite a incluso de texto de ajuda, para ser consultado pelos usurios em tempo de execuo, para ouso do procedimento. Pode ter uma ajuda para cada linguagem.

    Documentao: Permite a incluso de texto tcnico, para ser utilizado como documentao do sistema.

    _____________________________________________________________________________________

    1 No sero vistas no presente curso. Ver no Curso No Presencial de GeneXus.

  • Por exemplo, vamos supor que queremos implementar um procedimento para imprimir o identificador,nome e pas de todos nossos clientes e queremos que a listagem saia como mostrada na figura.

    Para isso, devemos identificar na sada da listagem das distintas reas que o compem. A cada umadelas a representaremos com um Printblock.

    Os primeiros dois Printblocks ilustram no GeneXus tal qual as primeiras duas reas pois contemunicamente textos, linhas, retngulos. Tambm poderamos ter colocado estas duas reasconvertendo-as em uma e utilizando portanto um nico Printblock.

    O terceiro Printblock ser o correspondente da rea de dados variveis da figura anterior, querepresenta informao que deve ser extrada da base de dados.O que queremos mostrar neste caso o identificador e nome de cada cliente, junto com o nome dopas ao que pertence. Esta informao a representada pelos atributos CustomerId, CustomerNamee CountryName da base de conhecimento da aplicao, o terceiro Printblock conter os trs controlesatributo CustomerId, CustomerName e CountryName.

    Transformando as reas em Printblocks, o Layout do procedimento ficar como o da figura na pginaseguinte.

  • O Layout de um procedimento ser uma sucesso de Printblocks que no tem por que seguir aordem em que deseja que apaream na sada.

    No exemplo anterior, o mesmo procedimento teria sido impresso se houvesse especificado osPrintblocks na ordem inversa (ou em qualquer ordem).

    Aqui simplesmente so declarados. A ordem que so executados fica determinado na seo Sourceque a que contem a lgica do procedimento. A partir dali sero chamados mediante um comandoespecfico para tal finalidade (o comando print).

    Por esta razo, cada Printblock deve ter um nome nico para poder ser referenciado depois a partir doSource.

    No exemplo, para listar todos os clientes, o Printblock de nome customer deve ser chamado dentrode uma estrutura repetitiva no Source. Esta estrutura repetitiva o comando For each queestudaremos depois.

  • O Printblock um tipo de controle vlido somente nos procedimentos, que inserido e eliminado doLayout pelo analista, e que contem outros controles -atributos, textos, retngulos, linhas, etc.-, sendoestes ltimos os que efetivamente especificam qu o que se quer mostrar na sada.

    Para inserir os controles no Form de uma transao contamos com uma toolbox. A mesma toolbox seutiliza para inserir os controles no Layout. De fato esta toolbox est disponvel para todos os objetosGeneXus criados, e em cada caso ter os controles disponveis segundo o tipo de objeto.

    Para inserir um Printblock - boto direito em qualquer lugar do layout e selecionamos InsertPrintblock.

    Como todo controle, o Printblock possui propriedades que podem ser configuradas pelo usurio. Emparticular, tem a propriedade Name, muito importante visto que o identificador do Printblock. Comeste identificador que o Printblock pode ser chamado a partir do Source para ser impresso.

    Para acessar as propriedades de um Printblock, o selecionamos e pressionamos F4 ouView/Properties.

  • Nesta seo se define a lgica do procedimento .

    A linguagem utilizada para programar o cdigo fonte dos procedimentos muito simples, e consta dealguns comandos que veremos.

    O estilo de programao procedural imperativo o Source ser uma sucesso de comandosonde a ordem fundamental: a ordem em que estejam especificados corresponder, excetoexcees, a ordem em que sero executados.

    Existem, como em toda linguagem imperativa, comandos de controle para a execuo condicional (if,do case), o repetitivo (do while, for), para chamar a outro objeto (call), para cortar as iteraes dentrode um loop (exit) ou abandonar o programa (return), assim como tambm comandos especficosdesta linguagem: para imprimir um Printblock do Layout (print), para acessar a base de dados (Foreach), para inserir novos registros em uma tabela (new), para chamar a uma subrotina (do), etc.

    No final da sucesso de comandos que constitui o cdigo geral ou principal do procedimento, podemdefinir-se subrotinas que podem ser chamadas (mediante o comando do) a partir do cdigo geral.No podem ser chamadas a partir de outro objeto (so locais).

    Por sua importncia, comeamos estudando detalhadamente o comando de acesso a base de dados,fundamental na hora de recuperar a informao armazenada. Depois sero tratados brevemente oscomandos de controle, que so comuns a todos as linguagens de programao imperativa, oscomandos de atribuio e os de impresso.

  • A definio do acesso a base de dados para recuperar a informao se realiza com um nicocomando: o comando For each1.

    Usando o For each se define a informao que vai acessar. A forma de o fazer baseada em nomearos atributos a utilizar.

    Assim, com este comando se definem quais atributos so necessrios em qual ordem vai serrecuperada, e GeneXus se encarrega de encontrar como fazer. No se especifica de quais tabelas sedevem obter, nem quais ndices se devem utilizar para acessar a essas tabelas: isso GeneXus infere.Evidentemente isto nem sempre possvel, e em tais casos GeneXus d uma srie de mensagens deerro indicando por que no se podem relacionar os atributos envolvidos.

    A razo pela qual no se faz referencia ao modelo fsico de dados porque desta maneira aespecificao do procedimento de mais alto nvel possvel, de tal forma que ante mudanas naestrutura da base de dados a especificao do mesmo se mantenha vlida a maior parte das vezes.

    Quando aparece um For each se est indicando que se quer recuperar informao da base de dados.Concretamente GeneXus sabe que com um For each se quer percorrer (ou navegar) uma tabela.Para cada registro dessa tabela, se quer fazer algo com a informao associada (ex: imprimir).

    Portanto, todo comando For each possui uma tabela fsica associada: a tabela que ser percorrida ounavegada. A esta tabela vamos chamar tabela base do For each.

    ___________________________________________________