
Breve revisão do que foi estudado no curso CORE e customização do comportamento das regras.
Revisaremos as principais regras e conceitos já estudados e veremos como é possível personalizar o comportamento das regras, utilizando as propriedades que se encontram no grupo 'Client Side Validation Behaviour'.
Análise de regras Add e Subtract por meio de casos de estudo e introdução a outras regras de interesse.
Analisaremos o comportamento das regras Add e Subtract dependendo do modo no qual é acessada uma transação que as usa, e introduziremos regras de interesse geral, como Update, RefMsg, Prompt e Color.
São apresentados exemplos dos eventos de disparo BeforeInsert e AfterInsert no nível do cabeçalho e linhas, AfterLevel e AfterComplete.
É estudada a lógica que emprega GeneXus para determinar quais regras e fórmulas devem ser novamente disparadas perante mudanças de valores de atributos na tela.
Entenderemos por meio de exemplos a lógica utilizada por GeneXus para construir a "árvore de dependências" ou "árvore de avaliação", que é a encarregada de determinar quais regras e fórmulas devem ser novamente disparadas perante mudanças de atributos na tela.
Introdução dos eventos de disparo relacionados com a validação dos dados: on BeforeValidate e on AfterValidate.
Completaremos a análise referente à ordem de execução de regras em transações, estudando os eventos de disparo on BeforeValidate e on AfterValidate.
O que acontece quando se permite assumir valor nulo a uma parte de uma chave estrangeira composta
Anteriormente vimos que uma chave estrangeira pode aceitar valores nulos. Isto significa que GeneXus não disparará os correspondentes controles de integridade referencial quando o referido valor fica sem atribuir. Abordamos agora o mesmo conceito, mas quando o valor nulo se aplica a uma parte de uma chave estrangeira composta.
São apresentados, um caso de referência múltipla indireta e um caso de especialização.
É apresentado um caso de referência múltipla indireta que ocorre quando, a partir da transação Attraction, se deseja referenciar o país de cada atração e ao mesmo tempo o do guia turístico, o qual também pertence a um país, e um caso de especialização, trabalhando com clientes, passageiros e funcionários, que são especializações da transação Person.
Conduzimos uma análise abrangente de um caso de referência múltipla indireta e apresentamos um caso de uso de subtipo recursivo.
Aqui, oferecemos um xpz para que você possa experimentar facilmente. Analisaremos um caso de referência múltipla indireta que ocorre quando o conceito de CityTour é apresentado à realidade, uma vez que o passeio acontece em um determinado país e cidade e possui atrações, que também se encontram em um país e uma cidade.
Também apresentaremos o conceito de subtipos recursivos com um caso de exemplo em que cada funcionário da agência pode ser o chefe de outros funcionários.
Revisamos e aprofundamos conceitos sobre fórmulas, vendo a diferença entre definir um atributo por meio de um cálculo em uma fórmula ou em uma regra de atribuição.
Em particular, são analisadas as vantagens e desvantagens entre atualizar um atributo usando uma regra Adicionar e defini-lo como uma fórmula redundante.
São revisados conceitos de fórmulas horizontais, aprofundando sua sintaxe, características e formas de uso.
Os conceitos são revisados e as fórmulas agregadas são analisadas em maior profundidade
O conceito de fórmulas compostas é introduzido, sua sintaxe e alguns exemplos de uso são analisados.
Como configurar as propriedades do grupo Data de um objeto transação para que seu Data Provider associado possa obter informações de outras fontes de dados.
Anteriormente, vimos como associar um Data Provider a uma transação para preenchê-la com dados. Vemos agora que o Data Provider pode ser utilizado para recuperar as informações da transação de outras fontes de dados. Isto terá como consequência que a transação não tenha tabelas associadas e que se comporte como uma "visão" da base de dados.
Este vídeo apresenta o conceito geral de "evento" e mostra os eventos disponíveis nos objetos do tipo Transação. Em particular, paramos para observar o evento After Trn em uma transação à qual foi aplicado o pattern Work With for Web.
Através do estudo de uma realidade limitada, são analisadas diferentes opções para resolver o desenho de transações, utilizando um conjunto de recursos essenciais e dando solução a uma série de requisitos reais.
Se aprofunda no comando For each simples: transação base, índices e sua relação com as consultas à base de dados (otimização).
É estudado como condicionar as ordens e os filtros, e como programar ações quando o For each não recupera registros. Para isso, são introduzidas as cláusulas When e When none. Para finalizar, é analisado um caso de estudo para entender como é aplicado um filtro por um atributo recebido por parâmetro.
Analisamos as navegações de For eachs aninhados quando implementam um Join, um Produto Cartesiano, ou um Corte de Controle.
Estudaremos as listas de navegação que são geradas em cada caso.
Como escrever apenas uma vez um bloco de código e conseguir, em seguida, fazer com se execute a partir de vários lugares do mesmo objeto.
Objetivo das sub-rotinas: modularizar, facilitar a leitura e manutenção. E cortar as inferências automáticas de GeneXus.
É revisado o conceito de cláusula Unique que permite declarar os valores que não devem ser repetidos na saída de uma consulta. São mostrados exemplos de uso em comandos For each, com fórmula inline, em Data Providers e no grid de um Web Panel.
Como evitar reescrever várias vezes as mesmas ordens e condições de filtro para diversas consultas de dados.
É conceituado e mostrado através de casos o poder dos Data Providers.
É recomendável antes de visualizar este vídeo, revisar o tema Data Provider do curso Core.
Se atende ao modo de operação com o qual ficam as variáveis BC após cada Insert, Update ou Delete, e deixa o caminho preparado para passar a estudar como se atualiza a base de dados através de um BC de dois níveis.
É estudado como inserir, eliminar e atualizar linhas de uma transação através do Business Component (manipulando a coleção de linhas da variável).
Anexamos este xpz com os objetos utilizados na demo do vídeo e um pouco mais (pois também foi adicionado um DP para adicionar as atrações nos city tours carregando através desse DP).
São integrados ambos os casos, para poder visualizar suas semelhanças e diferenças. Além disso, é mencionada a diferença entre utilizar o método Insert ou Update e o Save.
Se trabalha sobre os exemplos vistos nos vídeos "Business Components de um nível. Revisão" e "Business Components de dois níveis".
Recomenda-se ver depois o vídeo "Business Components: diferenças entre métodos".
São apresentadas e discutidas as diferenças entre os métodos para trabalhar com a base de dados (Load, Insert, Update, Save, atribuição direta de chave primária, InsertOrUpdate) e é apresentado um exemplo de uso de Data Provider para carregar dados.
Recomenda-se ter visto o vídeo " Business Component de um e dois níveis: Comparação"
É estudado como inserir um registro em uma tabela através do comando New de procedimentos
É estudado como atualizar registros através do comando For each em procedimentos
É estudado como eliminar registros através do comando Delete em procedimentos
São estudados prós e contras de ambas as maneiras de atualizar a base de dados por código (business component versus comandos em procedimentos).
Ao final, é apresentado o caso em que deve ser explicitado Commit em procedimento.
É estudada a diferença entre valor empty e null no nível da base de dados e são vistas suas repercussões ao tentar atualizar uma chave estrangeira vazia tanto através de Business Component quanto através de procedimento com comandos diretos. É estudado por que a transação não lança uma exceção de banco de dados.
As bases de dados permitem definir Unidades de Trabalho Lógicas (UTL): o conjunto de operações que devem ser realizadas todas ou nenhuma. O comando Commit e o Rollback tornam-se fundamentais.
Determinação de tabelas base e navegações em Web Panels. Introdução
É estudado a partir de um exemplo como se determina a tabela base de um web panel que não tem nenhum grid e a navegação resultante.
Aqui você tem um xpz para obter a KB com estes web panels implementados. Recomendamos ter visto o vídeo do curso GeneXus Core "Objeto web panel. Carga de dados e eventos", min 8:50, que é onde se apresenta o caso que se analisará aqui.
Usando um exemplo, estudamos como determinar a tabela base de um painel Web que possui uma única grade e a navegação resultante.
Aqui você tem um xpz para obter a KB com estes web panels implementados. Recomendamos ter visto/revisado os vídeos do curso GeneXus Core "Objeto web panel. Carga de dados e eventos" e "Objeto web panel. Esquema de execução de eventos".
É estudado a partir de um exemplo como se determina a tabela base de cada grid em um Web panel com grids paralelos e em outro com grids aninhados, e é analisada a navegação resultante.
É estudado a partir de um exemplo como se determina a tabela base de cada grid em um Web panel com grids paralelos e em outro com grids aninhados, e é analisada a navegação resultante.
É estudado como implementar um corte de controle entre dois grids aninhados. Tanto quando ambos têm tabela base quanto quando nenhum deles tem.
Recomendamos ter visto o vídeo "Tabelas base e navegações em Web panels com vários Grids". Aqui você tem um xpz para obter a KB com estes web panels implementados.
Veremos diferentes exemplos de carga de dados em grids sem tabela base, e algumas considerações ao carregar linhas neste tipo de grids.
Aqui você tem um xpz para obter a KB com estes web panels implementados.
Como selecionar muitas linhas de um grid e fazer algo com elas.
Em várias ocasiões, precisamos selecionar várias linhas de um grid para realizar alguma ação sobre todas elas. Veremos como implementá-lo tanto para aplicações Web como para dispositivos móveis. Aqui você tem um xpz para obter a KB com todos os objetos implementados.
Além das telas utilizadas como Web Pages comuns, vemos que temos Web Panels do tipo Master Page (ou Mester Panel) e outras do tipo Componentes, com utilizações específicas.
É estudado com um exemplo web, como obter a interação entre componentes que não estão relacionados a não ser por pertencerem direta ou indiretamente a uma mesma tela.
Aqui você tem um xpz com o estado final da KB neste vídeo.
A arquitetura das aplicações determina, entre outras coisas, a forma como são programadas. Neste módulo, vamos nos concentrar nos aplicativos da web que serão executados em um cliente inteligente, ou seja, aplicativos voltados para o cliente que nos permitem fornecer a melhor experiência de usuário possível.
Neste vídeo, veremos como desenhar e implementar as telas web e para dispositivos móveis, que utilizarão os clientes da agência para consultar informações, o que constitui a parte customer-facing da aplicação. Será utilizado o objeto Panel, com um modelo de programação diferente, gerando a aplicação web em Angular e móvel em Android.
No decorrer do vídeo, é desenvolvido um objeto panel chamado Attractions_CFPanel, que permite visualizar as atrações da agência, filtradas por país e um intervalo de nomes de atrações. Ao chegar ao minuto 18, para atender aos requisitos da Agência de Viagens, de ver para cada atração suas informações de detalhe, é mostrado o objeto AttractionDetail_CFPanel que, como mencionado no vídeo, não é construído passo a passo, para economizar tempo.
Pode importar o xpz que se encontra aqui, com o qual obterá o objeto já pronto e também os atributos que são adicionados a um segundo nível da transação de atração que contêm as informações do detalhe da atração.
No data provider que carrega dados de Attractions, inicializa-se este segundo nível com dados do museu do Louvre, como suas exposições e um mapa com a localização do museu.
Para ser possível gerar os exemplos em Angular, deve antes seguir os passos indicados no seguinte link: https://wiki.genexus.com/commwiki/servlet/wiki?42541
E para executar a aplicação móvel em Android, deve instalar o software indicado neste link: https://wiki.genexus.com/commwiki/servlet/wiki?14449
Neste vídeo começaremos a ver os eventos que podemos definir nas telas com foco em aplicações Customer-facing, em particular nas telas web, e também nos concentraremos em algumas características próprias do objeto de panel.
Muitas vezes é necessário acessar dados que não estão armazenados na base de dados de nossa aplicação. Aqui é apresentada uma introdução aos possíveis métodos que serão desenvolvidos nos vídeos seguintes.
Apresenta-se o conceito de web services SOAP, REST e OData e é mostrado como pode ser consumido um web service desenvolvido por terceiros a partir de uma aplicação GeneXus, e também como se desenvolve um web service com GeneXus através de um exemplo implementando um serviço REST.
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
São realizadas algumas personalizações de exemplo sobre a UI para entender a lógica de trabalho através das classes e tokens do DSO e sua relação com os controles dos layouts.
Entre outras coisas, mostra como variar características dos controles -inclusive como fazê-los exibir-se ou não- com base no tamanho de tela (responsividade), como personalizar a estética de um controle atributo/variável tanto quando é readonly como quando não é, e seu rótulo, etc.
Principais conceitos gerais sobre segurança informática e descrição dos mecanismos do GeneXus para mitigar e controlar possíveis falhas de segurança.
É mostrado o conceito do módulo de segurança GAM (GeneXus Access Manager), como é importado para a KB, sua configuração e execução. Também é mostrado como acessar a aplicação do backoffice do GAM que permite registrar usuários, definir roles, etc.
Objetivo:
Expandir e aprofundar na lógica de GeneXus para conseguir um domínio e uso otimizado da plataforma para a construção de aplicações digitais de qualquer complexidade, com o menor esforço.
Fornecer conhecimentos de como evoluir uma aplicação de protótipo para produção, melhorando sua interface de usuário, adicionando segurança, criando casos de teste que permitam verificar se seus processos continuam funcionando corretamente depois de fazer alterações, utilizar diferentes ambientes e plataformas para protótipo ou produção e aprender a migrar seu protótipo da nuvem de desenvolvimento de GeneXus ou de sua máquina local para um servidor de produção.
Pré-requisitos
Contar com os conhecimentos proporcionados nos vídeos do Curso "Fundamentos de GeneXus 18 - Aprenda GeneXus do zero"
Sobre o conteúdo do curso
O teórico é composto por vídeos elaborados especialmente para este curso, os quais estão pensados para serem vistos não apenas dentro do tópico do curso, mas também de forma independente e, portanto, não necessariamente partem da KB do vídeo anterior.
O prático (que você encontrará na seção “Materiais”) trabalha sobre uma mesma realidade e KB.
Duração:
Teórico/Prático: 30 horas aprox.
Metodologia sugerida:
Com cada vídeo, sugerimos que:
Observe e tente fazer o mesmo em sua versão Trial de GeneXus.
Para tornar isso mais fácil para você, alguns vídeos incluem um xpz.Olhe de novo quantas vezes você precisar, até sentir que incorporou os conceitos importantes. Pode ser útil listar no final do vídeo quais são esses conceitos.
Identifique os exercícios ou questões correspondentes ao vídeo na carta da prática e tente resolvê-los.
Importante: se você não tem tempo para fazer as duas práticas (replicar o que viu no vídeo + os exercícios correspondentes incluídos na prática), dê prioridade à segunda, a prática do curso. É necessário que você faça todos os exercícios.
Exame e Certificação
O exame é composto por questões/exercícios do tipo múltipla escolha ou verdadeiro/falso referentes aos temas vistos no curso.
Se passar no exame e possuir a certificação de “Analista Júnior GeneXus” (ambas as coisas), automaticamente obterá a certificação “Analista GeneXus”.
Nota: O curso nesta plataforma NÃO inclui exame.