
O software invadiu o mundo e existem aplicativos digitais rodando em plataformas muito diversas. Por isso, é necessário que paremos por um momento e procuremos entender os tipos atuais de aplicativos e sua arquitetura. Neste vídeo, veremos como podemos classificá-los, entender como são construídos e como podem se comunicar entre si.
Breve descrição da ferramenta, seus objetivos e características.
Objetivos e agenda do curso. Papel do curso na capacitação em GeneXus e como continuá-la. Apresentação da aplicação que será desenvolvida ao longo do curso e sua arquitetura. Metodologia sugerida para fazer o curso.
Primiera execução de GeneXus: IDE, ambiente de desenvolvimento integrado. Como criar um novo projeto ou base de conhecimento (Knowledge Base), configurando a linguagem de programação em que se gerará a aplicação enquanto é testada, e seu idioma.
Descrição dos objetos da realidade através de objetos GeneXus do tipo Transação. Identificadores (chaves), tipos de dados, layout web.
Pedimos a GeneXus que crie automaticamente os programas, o banco de dados e abra o navegador web para que possamos executar e testar.
Pressionando F5, GeneXus exibe um relatório conhecido como Análise de Impacto, depois do qual o banco de dados será criado físicamente (suas tabelas e índices) e também os programas. A lista de seleção criada automaticamente por GeneXus é mostrada, possibilitando escolher um cliente na transação Customer.
Criamos a transação “Attraction” para registrar as atrações turísticas, definimos o atributo chave e vemos como editar as propriedades de um atributo, definir domínios para seus tipos de dados e autonumerar atributos numéricos.
Também apresentamos o caso de registrar o pais da atração turística.
Criamos as transações Country e Category e especificamos, na transação Attraction, que uma atração pertence a um pais e uma categoria. Vemos como GeneXus mantém a consistencia de toda a informação relacionada.
É mostrado, na prática, o conceito de integridade referencial, para manter a consistência dos dados. São apresentadas as chaves estrangeiras, relacionadas com as chaves primárias de outras fabelas e a importância, para que ocorra o relacionamento, de dar o mesmo nome para os atributos que correspondem ao mesmo conceito.É mostrada a diferença entre a estrutura da transação e a tabela física associada a ela (aqui aparece o conceito de “atributos inferidos”). É mostrada uma lista de seleção com os objetos criados automaticamente por GeneXus para facilitar o manuseio das informações relacionadas. É mostrado que uma chave estrangeira pode ficar sem valor, através de propriedade Nullable.
Como representamos que um pais contém um conjunto de cidades? Criando um segundo nível na estrutura da transação Country.
Vemos que GeneXus cria duas tabelas e estudamos detalhadamente a chave primária da tabela que corresponde ao segundo nível. Vemos também a grid que é adicionada ao Web Form para registrar as cidades. Adicionamos a cidade à transação Attraction e definimos que pode ficar vazia (nullable) durante a execução.
Quando vamos criar um atributo novo, podemos dar a ele o nome quisermos. Porém, qual é a forma sugerida?
Cada transação tem uma área onde é possível especificar regras que devem ser disparadas quando o usuário interage com a tela (para inserir, modificar ou excluir a informação).
Vemos como definr que, na transação Customer:
Não seja permitido um cliente ser gravado com nome e apelido vazios ou data de registro maior que o dia de hoje, no sistema (regra Error)
Seja mostrada uma mensagem de advertência quando o telefone fica vazio (regra Msg)
Seja associada a data do dia a um atributo Date automaticamente (regra Default)
Seja desabilitada a edição de um atributo (regra Noaccept) Ao mesmo tempo, vemos colocar uma condição ao disparo de uma regra, dependendo da operação que se está querendo realizar: Insert, Update o Delete.
Variáveis : O que são, para o que servem, como são definidas nos objetos, e sua diferença fundamental para os atributos.
Nos objetos GeneXus definidos na KB, como as transações, podemos aplicar alguns padrões que constroem outros objetos a partir deles, para acrescentar funcionalidades, como as fornecidas pelo pattern “Trabajar con” (Work with).
É aplicado o pattern Work With for Web nas transações Country e Attraction. São mostrados, em execução, os resultados dos objetos que o próprio pattern gera, com telas mais bonitas, que mostram as informações de paises e atrações em uma grid. É mostrado como personalizar os objetos gerados: apagar/adicionar atributos na grid, adicionar filtros e ordens, e habilitar ou desabilitar as ações “standard” sobre os dados (insert, update, delete). É estudado o dinamismo entre estrutura de transação, instância do padrão e objetos gerados. Por fim, como desaplicar um pattern.
O conceito de tabela base e seus relacionamentos, tabela estendida, é fundamental em GeneXus, pois permite reconhecer com que entidade estamos trabalhando em cada momento, pensando-a de um ponto de vista mais conceitual e menos atrelado ao modelo físico.
É mostrado o conceito de subtipo, que permite utilizar um atributo existente mas com um nome diferente, e um exemplo de uso onde, a partir de uma transação de voos é preciso registrar o aeroporto de partida e o aeroporto de chegada.
São tratados os conceitos de: grupo de subtipos, subtipo e seu supertipo, controles de consistência (integridade referencial) e listas de seleção, diagramas de tabelas, atributo descritor de uma transação e propriedade Contextual Title de um atributo. O caso de uso estudado é a múltipla referência de uma transação em outra. São citados outros casos de uso que não serão estudados.
GeneXus nos oferece as fórmulas para realizar cálculos que envolvem valores de determinados atributos, constantes e/ou funções. São estudadas as fórmulas globais e deixamos o estudo das locais mais para frente. Vemos as chamadas fórmulas horizontais e as de agregação.
A partir de um exemplo, onde é preciso retardar o disparo de uma regra error, permitindo que o usuário possa acresentar dados no cabeçalho e linhas, são estudados os eventos de disparo de regras em transações. É possível condicionar as regras para serem disparadas exatamente nestes eventos, nem antes, nem depois.
Estudamos o evento AfterLevel, assim como o AfterComplete (e a execução de um comando Commit), o BeforeInsert e o AfterInsert.
Este vídeo explica o conceito de "índice" de uma base de dados, e mostra os índices criados automaticamente por GeneXus a partir da transação Attraction (índice primário e índices estrangeiros). Também é definido um índice de usuário para controlar que não sejam inseridas duas atrações turísticas com o mesmo nome, e desta forma se integra o conceito de "chave candidata" (índice Unique).
Neste vídeo é analisada passo a passo a estrutura de tabelas normalizada que GeneXus cria a partir de um determinado desenho de Transações. O estudo de caso inclui um atributo calculado e um exemplo de chave estrangeira inferida.
São estudados os tipos de relacionamento que as entidades podem establecer entre elas: Um-para-muitos (forte e fraco), Muitos-para-muitos, suas características e formas de modelagem, sempre a partir da estrutura das transações. São mostrados dois casos de relações Um-para-um.
Havíamos mencionado as relações 1-1, resultado da especialização, através de subtipos. Aqui vemos o outro caso de relações 1-1, entre entidades diferentes.
Com frequência nos encontramos com a necessidade de exportar e importar objetos GeneXus, de e para nossa base de conhecimento. Os objetos exportados poderão ser compartilhados de forma muito fácil entre diferentes desenvolvedores, mesmo que estejam em computadores e projetos diferentes. Poderão ser exportados/importados todos os objetos (KB completa), ou selecionar aqueles que nos interessam.
É apresentado o objeto Procedure com um de seus múltiplos usos: implementar listas PDF exibidas no navegador. São estudados dois dos comandos fundamentais para isso: o print e o for each, que permite o acesso aos dados de uma entidade.
Como usar aninhado para cada um para imprimir informações relacionadas (categorias e atrações turísticas). Este caso é conhecido como junção
Muitas vezes, deseja-se listar para cada registro de uma tabela seus relacionados em outra, mas apenas para aqueles registros que tenham relacionados. Em resumo, se tratará de listar informações de uma tabela, agrupadas por determinado critério, que é conhecido como corte de controle. Por sua vez, através de um exemplo, é apresentado o conceito de cláusula Unique.
Fórmulas que declaramos localmente, como instrução pontual dentro de determinado código (Source de procedimento ou Data Provider, evento de Web panel, etc.). Comparação com as fórmulas globais (definidas no nível do atributo).
Quando um objeto chama outro objeto, como trocam informações? Por exemplo, um objeto que solicita ao usuário que informe um pais e depois chama um relatório de atrações desse pais.
Um Web Panel é utilizado para solicitar dados ao usuário. Nele, é utilizada uma variável como dynamic combo box, ou seja, uma variável que carrega todos os paises para que o usuário selecione um deles. É estudada a regra parm, para declarar os parâmetros que um objeto recebe. Utiliza-se “in” para dizer que um parâmetro é de entrada. É estudado somente o caso em que os parâmetros declarados na regra parm são variáveis.
O que acontece quando um objeto deve retornar um valor para seu chamador. Como se pode realizar a chamada e como devem ser declarados os parâmetros no objeto chamado. O que acontece quando um parámetro é um atributo em vez de uma variável.
Recomendamos antes, assistir o vídeo “Invocações entre objetos”
Neste vídeo se apresenta o conceito de Tipos de Dados Estruturados. Além dos tipos de dados simples, GeneXus oferece a possibilidade de definir tipos de dados estruturados ou compostos (SDT) para serem utilizados apenas como tipo de dados de variáveis (não de atributos). Também é introduzido conceito de coleção.
É apresentado o conceito de variável coleção. Quando é definida uma variável, independentemente de seu tipo de dado, é possível declará-la como coleção através de um "check box" presente na aba Variáveis. Ao marcar este check box estaremos indicando que a referida variável armazenará em memória uma coleção desse tipo de dado.
A partir de um exemplo, é apresentado o objeto Data Provider, cujo objetivo é carregar e devolver uma estrutura composta (tanto simples como coleção) para fazer algo com ela, como percorrê-la e imprimi-la. De acordo com a estrutura de um SDT, seja definida como simples ou como coleção, mostra-se como fazer para que um Data Provider devolva a coleção.
Coloca-se o foco no modo de atualização das transações, para apresentar a forma de utilizá-las sem sua tela, por código, apresentando os Business Components.
Este material permitirá abrir o caminho para abordar completamente o assunto, no próximo vídeo.
Se estuda a partir de exemplos como inserir, modificar e atualizar informações da base de dados por código, através de Business Component de um nível. São estudados seus escopos e é mostrado como lidar com as mensagens e erros.
No vídeo anterior foi apresentada a justificativa do tema. No vídeo a seguir é colocado em prática o que é visto a partir de um requisito da agência de viagens.
É implementado um requisito no qual deve ser inserido um novo registro em uma tabela e modificar os registros de outra, através de Business components. Também: como esvaziar as duas tabelas.
Ao final, é criado um Web panel que será retomado mais tarde, que esvazia as tabelas Category e Attraction.
Um Data Provider não serve somente para carregar e devolver uma estrutura composta com informações do banco de dados, mas também a partir de dados fixos. Por estrutura composta, entendemos tanto SDT como BC (business components), tanto simples como coleção.
Veremos como usar um Provedor de Dados para retornar uma coleção de componentes de negócios do tipo Categoria e então usar o método Insert de uma coleção de variáveis ??BCs, para inserir seus valores no banco de dados. O mesmo com a atração.
Nota: para atribuir uma imagem KB a um elemento, atributo ou variável, é usado seu método de link.
Para carregar uma tabela com dados, não faremos mais de forma manual como no vídeo anterior, mas utilizando a propriedade Data Provider da transação.
Ativamos a propriedade Data Provider das transações de Categoria e Atração junto com a propriedade “Used to” em “Preencher dados” para preencher suas tabelas com dados, através do Data Provider que é criado automaticamente para cada uma delas. É apresentado o uso da propriedade Atualizar Política e também o caso de transações dinâmicas.
Para fazer uma atualização do banco de dados via código, vimos uma solução usando Business Components. No entanto, en alguns casos, principalmente por motivos de performance, é necessário atualizar sem maiores controles. Para isso, são utilizados os comandos new, for each e Delete dentro do objeto procedimento. Aqui são mostrados.
GeneXus permite criar diferentes tipos de aplicações em diferentes plataformas. Veremos sua arquitetura e como ela se relaciona com a forma de desenvolvê-las.
É introduzido o que será visto ao longo deste módulo, que será basicamente o objeto Web Panel e o Design System. É explicado porque se caracteriza como focado em Back-office quando também são desenvolvidas aplicações Customer-facing.
Construimos uma tela similar aquela gerada com o pattern Work With de atrações: uma grid com atributos ordenados por determinados critérios, com filtros para os dados (informados pelo usuario), ações sobre os dados da grid, etc.
O que acontece quando uma ação em uma das linhas da grid modifica o valor de um elemento dessa linha. Conceitualizamos tudo o que foi visto a respeito de um web panel com uma grid com tabela base. Estudamos web panel com atributos sem usar uma grid e o caso de web panels sem tabela base. Vemos o desenho web responsivo. Vemos quando é necessário ocultar uma coluna da grid.
A partir de exemplos vamos conceitualizando tudo o que existe a respeito de web panels. São estudados as diferenças entre web panel com e sem tabela base a partir dos eventos Start, Refresh e Load. É mostrado um exemplo da diferença entre receber um parâmetro com variável ou com atributo.
É apresentado o esquema de execução de eventos para os web panels com e sem a tabela base vistos no vídeo anterior, a partir do ponto de vista do código que executa no front-end e aquele que executa no back-end. Com isto fica integrado todo o conhecimento visto sobre a lógica básica dos web panels.
Como carregar variáveis em grid do pattern Work With for Web, e como adicionar botão fora ou dentro do grid para executar alguma ação.
É mostrado um exemplo onde deve ser adicionado um grid a um web panel que tinha apenas um. O impacto é visto nos eventos do sistema (Start, Refresh, Load) e nos comandos Refresh e Load. É apresentado o caso de grids aninhados.
Para obter o KB deste vídeo, baixe este zip.
Até o momento só nos encarregamos de implementar comportamento, mas nada do aspecto visual e de navegação da aplicação. Aqui veremos uma introdução à imprescindível tarefa do desenho da UX e como ela é realizada no GeneXus, com o exemplo de Unanimo
Neste vídeo, são apresentados os conceitos gerais do trabalho com GeneXus Server, integrado ao desenvolvimento do curso como componente importante da metodologia de trabalho.
Aprenda os fundamentos de GeneXus.
GeneXus é o caminho mais rápido para entrar no mundo da tecnologia. Uma plataforma de desenvolvimento que é fácil de aprender, é rápida para criar aplicações de qualidade e é utilizada pelas empresas mais importantes, em negócios reais.
Objetivo do curso:
Através do desenvolvimento de uma aplicação, ensinaremos os fundamentos de GeneXus que lhe permitirão introduzir-se em sua lógica e construir rapidamente qualquer tipo de aplicação, presente ou futura.
Pré-requisitos:
Conhecimentos básicos de programação e base de dados.
Metodologia sugerida para o curso:
Intercale o teórico com o prático que tem para baixar na Seção 1 “Materiais do curso”.
Assista a cada vídeo e faça em paralelo os exercícios do Prático correspondentes a esses temas, até terminar com todos os vídeos do curso.
Duração aproximada:
São 8 horas de vídeo mais o tempo que você leva para desenvolver o aplicativo incluído nos exercícios práticos.
Duração máxima total de 45 horas.
Exame:
É um exame informático, com questões / exercícios de escolha múltipla e verdadeiro / falso.
Ao passar no exame, você obterá o Certificado Internacional de validade "Analista Júnior GeneXus" e seu nome aparecerá na lista de Técnicos Certificados GeneXus.
Nota: o curso nesta plataforma NÃO inclui um exame.
Material bônus
Para que possa fazer bem o curso, inclusive os exercícios do Prático, faça o download da versão Trial de GeneXus.