Quando se trata de desenvolvimento de aplicações rápidas (RAD), a primeira coisa a se considerar é um ambiente que permita a construção dos mais variados tipos de software de forma visual e intuitiva. A plataforma CronApp permite, entre outras funcionalidades, a geração automatizada da camada de persistência de uma aplicação a partir do diagrama de dados, camada essa responsável por administrar o fluxo dos dados da aplicação até o banco de dados e vice-versa. Entretanto, podem haver situações onde o desenvolvedor necessite de mais flexibilidade para trabalhar com essa camada e seus métodos básicos de manipulação e é nesse ponto que vamos tocar com esse tutorial. Como criar métodos diferenciados para persistência da informação da aplicação utilizando o bloco de programação visual do CronApp.

Para saber mais sobre a geração automatizada da camada de persistência acesse: Diagrama

Pré-requisitos

Antes de começar a seguir os passos do tutorial é preciso ter certeza de que se tem um ambiente minimamente preparado para reproduzir o exemplo. Abaixo estão os requisitos principais.

Requisitos:

  1. Projeto do tipo web criado. Caso haja dúvidas de como criar esse tipo de projeto acesse o link (Criando Projeto Web).
  2. Uma entidade referente a classe "Cliente". Essa entidade será a base do exemplo a ser criado.
  3. Tela de persistência com as 4 operações básicas. Essa tela pode ser gerada de forma automatizada. 

Visão geral: exemplo

Nesse tutorial vamos substituir a fonte de dados padrão criada no momento da geração da tela de persistência Figura 1, com a intenção de atribuir aos métodos de inserção, obtenção, atualização e exclusão de dados um novo comportamento. Essa alteração será feita através de novas funções criadas no bloco de programação.

Figura 1 - Fonte de dados padrão criada a partir da entidade cliente 


Passos 

1-Criando uma nova fonte de dados

Para criar a nova fonte de dados que irá substituir a padrão vamos acessar o menu Ferramentas → Fonte de dados. Logo em seguida irá abrir uma tela que permite, além da seleção de uma fonte de dados existente, a criação de uma nova. Clique no botão Nova fonte de dados.


Figura 2 - Ferramentas → Fonte de dados. Clique no botão Nova fonte de dados


2-Definindo uma fonte de dados: Fonte de Dados- Nova consulta

Após selecionado o botão para criação de uma nova fonte de dados vamos definir na tela Fonte de Dados-Nova Consulta os seguintes itens:

  1. Nome da consulta
  2. O tipo a ser utilizado: Bloco de programação ou entidade(nesse caso bloco de programação)
  3. Permissões

 

Figura 3 - Propriedade a serem definidas na tela Fonte de Dados- Nova consulta. De cima para baixo:

 Nome da consulta, Tipo a ser utilizado e permissões


Nesse exemplo vamos utilizar o nome de consulta "MetodosPersCli" com o tipo "Bloco de Programação" e selecionar a aba "Permissões" para ter acesso aos métodos básicos de persistência da fonte de dados a terem seus comportamentos alterados.

3-Seleção ou criação do bloco de programação

Após a definição dos itens no tópico 2, temos a opção de escolher entre Selecionar bloco de programação existente ou Abrir ou Criar um novo bloco de programação. A primeira opção pode ser acessada a partir do botão de "reticências" da Figura 4

Figura 4 - Botões de acesso

   3.1-Selecionar bloco de programação existente

Caso o bloco de programação com as funções a serem atribuídas a fonte de dados já exista no projeto, é possível apenas selecioná-lo a partir do botão "reticências" apresentado na Figura 4.

 

Figura 5 - Seleção de um bloco de programação existente


Figura 6 - Selecionando o "BlocoFuncoesPersistencia"


Figura 7 - Salvando a definição do bloco "BlocoFuncoesPersistencia


Figura 8 - Bloco de programação e suas funções definidas na fonte de dados


A partir do momento que o bloco está definido na fonte de dados, podemos acessar suas funções e atribuí-las as permissões do verbo. Essas permissões são responsáveis por determinar o comportamento padrão das 4 funções básicas de persistência. Esse comportamento é alterado pelas funções do bloco de programação implementadas pelo desenvolvedor.

   3.2-Abrir ou Criar um novo bloco de programação

Para o caso de não existir no projeto um bloco de programação com as função a serem definidas para as permissões do verbo em uma fonte de dados, pode-se criá-lo. A criação é simplificada, já que o processo é inteiramente feito de forma visual. O botão para abertura da tela de criação de um novo bloco de programação pode ser visto mais a direita da Figura 4.


Figura 9 - Criação de um bloco de programação do tipo servidor


Figura 10 - Finalização do novo bloco de programação

(BlocoFuncoesPersistencia) e sua primeira função(Inserir)


Após a finalização do novo bloco de programação, o usuário é imediatamente redirecionado para a tela de programação do bloco com a função inicial definida e pronta pra ser implementada.

 

Figura 11 - Tela para implementação do bloco com a função "Inserir" 

Caso o desenvolvedor queira alterar o comportamento de mais de um método de persistência, por exemplo Inserir e Alterar, é necessário criar uma função de bloco para cada um dos métodos. Essas funções devem estar contidas em um único bloco de programação.

 

4-Implementando métodos de persistência a partir do bloco de programação

   4.1- Inserir

Nesse tutorial vamos implementar de forma básica os 4 métodos de persistência, todos eles referentes a entidade Cliente. O primeiro deles é o Inserir. Nesse primeiro exemplo vamos implementar uma função que receba como parâmetro um objeto do tipo Cliente. A principal função utilizada para a implementação foi a "Inserir Fonte de dados" contida na categoria Banco de Dados do bloco de programação Figura 12.


Figura 12 - Aplicação da função "Inserir" da categoria Banco de Dados


Figura 13 - Tela de configuração do bloco de programação exibida após clique no botão "engrenagem"


Figura 14 - Escolha de entidade Cliente


Figura 15 - Objeto do tipo Cliente definido como parâmetro de entrada para função Inserir


A partir desse momento a função Inserir criada no bloco é capaz de adicionar um registro completo no banco de dados toda vez que for chamada, recebendo um objeto do tipo Cliente como parâmetro.

   4.2- Obter

O segundo dos métodos básicos de persistência é o Obter. Nesse método nós vamos consultar o banco de dados para obter todos os registros armazenados referentes a Cliente, Figura 16 

 

Figura 16 - Obtendo todos os registros referente a Cliente


Abaixo os passos para implementar o método Obter a partir do bloco de programação utilizando a função "Abrir Consulta" da categoria Banco de Dados. Ao clicar no botão "engrenagem" da função "Abrir Consulta" o usuário será apresentado a tela do assistente de consultas visuais.

Para saber mais sobre como utilizar o assistente de consultas visuais acesse: Utilizando o assistente de consulta visual

 

Figura 17- Clique no botão "engrenagem"


Figura 18- Clique no botão "reticências" para definir a entidade


Figura 19- Escolha da entidade Cliente


 

Figura 20- Clique no botão "+Adicionar" para definir a Entidade na consulta


 

Figura 21- Adicionando os campos de retorno da consulta

Nesse caso, como vamos trazer todos os registros existentes em Cliente, o filtro é o próprio alias(apelido) da entidade, representado nesse exemplo pela letra "c". A finalização pode ser feita no botão "OK" da página.

Existe um limite em relação a quantidade de registros provenientes de uma consulta que podem ser exibidos numa tela. Por padrão o controle "Fonte de Dados" vem definido em sua propriedade "Linhas por Página" o valor 100, ou seja, pode exibir o máximo de 100 registros por vez. Caso o desenvolvedor decida por diminuir esse valor padrão e queira exibir, por exemplo, os mesmos 100 registros só que em páginas contendo 10 registros cada uma, ele pode marcar a opção "Paginador Automático" na tela do assistente de consulta visual Figura 21 e definir o valor 10 na propriedade "Linhas por Página" do controle "Fonte de Dados" Figura 22.

Figura 22- Atribuindo novo valor a propriedade Linhas por Página do controle Fonte de Dados

 

   4.3- Atualizar

O terceiro dos métodos básicos de persistência é o Atualizar. Como o próprio nome do método diz, vamos atualizar um registro de um cliente no banco de dados. 

Figura 23- Atualizando registro no banco de dados


A implementação da função atualizar utilizando o bloco de programação pode ser vista abaixo:

Figura 24- Clique no botão "engrenagem" da função


Figura 25- Clique no botão "reticências" para definir a entidade.

No nosso caso, vamos atualizar um objeto Cliente de forma completa


Figura 26- Escolha da entidade Cliente

 

Figura 27- Confirme a entidade e seu tipo no botão "Ok"

                                                                

A partir desse momento a função Atualizar criada no bloco é capaz de alterar o valor de qualquer atributo referente a entidade Cliente, como por exemplo, nome ou email.

   4.4- Deletar

A quarta função básica relacionada a persistência no banco de dados é a Deletar. Nesta função pode-se excluir um registro referente a uma entidade em uma base da dados utilizando o campo único do registro, frequentemente a chave primária. No nosso exemplo vamos excluir um registro referente a entidade Cliente. Detalhes de sua implementação pode ser visto abaixo.


 Figura 28- Função Deletar registro de Cliente 


      Figura 29-Tela de configuração do modo de exclusão acessada a partir do botão "engrenagem" da função "Remover"

Definição da entidade e do tipo objeto

 

 


                                                                          

O tipo de alteração de dados via função do bloco de programação demonstrado aqui, em qualquer que seja a tabela, só é possível graças a passagem e recebimento de valores. Observe que em todos os métodos de bloco criados nesse tutorial o parâmetro Dados<app.entity.Cliente> foi utilizado. Esse parâmetro da função, também tratado como variável pela plataforma CronApp, é o responsável por armazenar as informações oriundas da camada de interação, ou seja, da tela da aplicação. Para o exemplo apresentado abaixo na Figura 30, a variável criada foi Entidade<app.entity.User>. A estrutura de nomenclatura <namespace.entidade> permite que os atributos da classe/entidade possam ser listados no menu vertical das funções no bloco de programação. Ex.:

Figura 30 - Listagem de atributos no menu vertical da função (Define valor do)

 


Pode-se definir qualquer parâmetro/variável utilizando a estrutura  <namespace.entidade>. Observe que o nome da variável a ser criada deve ser composto pelo nome da classe no diagrama da dados(nome da entidade) e seu namespace completo. Ex.: Var<app.entity.ExemploEntidade>. O uso dos sinais de menor que(<) e maior que(>) é obrigatório.

Figura 31 - Representação do namespace da entidade e da classe no diagrama de dados que a representa