SlideShare une entreprise Scribd logo
1  sur  19
Télécharger pour lire hors ligne
Laboratorio GeneXus Tilo
“Aplicaciones Web”
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 2
Copyright 1988 - 2013| Artech Consultores S. R. L.
Todos los derechos reservados. Este documento no puede ser reproducido en cualquier medio sin el consentimiento
explícito de Artech Consultores S.R.L. La información contenida en este documento es para uso personal únicamente.
Marcas Registradas
Artech y GeneXus son marcas registradas de Artech Consultores S.R.L. Todas las demás marcas mencionadas en
este documento son propiedad de sus respectivos dueños.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 3
Contenido
Contenido..........................................................................................................................3
Objetivo ............................................................................................................................4
Preparación .......................................................................................................................4
Parte 1 ..............................................................................................................................5
CSS3, HTML 5, Dominios semánticos y Client Side Validation ..............................................5
Parte 2 ..............................................................................................................................9
Nuevo orden de disparo de eventos en la versión Tilo y mejoras en la experiencia de usuario
en la navegación de páginas (Single Page Applications)......................................................9
Parte 3 ............................................................................................................................ 14
Mejora de la experiencia de usuario mediante la notificación de mensajes del server al
cliente: Web Notifications .............................................................................................. 14
Cómo recepciono la notificación y hago una carga liviana de la pantalla ante la llegada de
esta notificación?....................................................................................................... 16
Parte 4 ............................................................................................................................ 17
¡Gracias por participar! ..................................................................................................... 18
Glosario........................................................................................................................... 19
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 4
Objetivo
Ver las nuevas funcionalidades de GeneXus Web para la versión X Evolution 2 y Tilo.
Se trata de una aplicación de una agencia de viajes, compuesta por un backend para ingreso de
datos, y un frontend, destinado al usuario final (que selecciona y compra paquetes turísticos).
Preparación
Para este laboratorio utilizaremos la versión GeneXus Tilo y el browser Chrome.
El icono asociado se encuentra en el escritorio, ejecútelo.
Abrir la Base de Conocimiento que se encuentra en C:LabWeblabweb
En este laboratorio ejecutaremos nuestra aplicación localmente y posteriormente se generará
un ambiente en la nube. Sobre el environment “Java Environment” (local) asegurarse de tener
la siguiente configuración
 DBMS: SQL Server
 Database Name: labweb
 Server Name: localhost
 User id: labweb
 User password: labweb!13
Luego de verificar la configuración inicial, ejecutar un Rebuild All; se espera un diálogo
solicitando la creación de la base de datos del GAM además de la base de datos de la
aplicación.
Abrir el procedimiento ProcLoaddata y asegurarse que el valor de la variable &Path sea:
&Path = "C:LabWebmaterialDataData"
Ejecutar el procedimiento ProcLoaddata (opción Run with this only) para inicializar la base de
datos.
Si desea puede hacer un Freeze del estado actual de la base de conocimiento en caso que
quiera volver al inicio del práctico nuevamente. Para ello seleccionar la opción View ->
Versions; posteriormente seleccionar el menú contextual Freeze y seleccionar un nombre por
ejemplo “Inicial”.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 5
Utilizar la opción Run para ejecutar la aplicación, se abre el DeveloperMenu.xml en el browser
predeterminado, que contiene la lista de Objetos Web de nuestra KB.
Parte 1
Ejecutaremos el Backend de nuestra aplicación de ejemplo.
CSS3, HTML 5, Dominios semánticos y Client Side Validation
Aplicaremos el Pattern Work With para Web a las Transacciones Flight, Airport (Folder
ModuleFlights) y Hotel (Folder ModuleAttractions) como se indica a continuación: botón
derecho sobre la solapa -> Apply Pattern -> Work With for Web. Ver figura.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 6
Como resultado, se van a crear nuevos objetos que implementan el Patrón Work With de
estas Transacciones.
Tip: Cómo ubicar los objetos generados con el Pattern Work With? Sobre la
solapa del objeto, botón derecho -> Locate in Folder View. A la izquierda (en
el Folder View) tendremos el objeto seleccionado y la lista de objetos generados
por el pattern.
Hacer F5 (Run) para ver en ejecución estos objetos.
Terminado el Build, observar que en el browser se ejecuta el DeveloperMenu.xml, que contiene
la lista de Objetos Web de nuestra KB.
Hacer click en el Objeto Home.
1. Ejecutar el link Work With Airport. Acceder a los diferentes aeropuertos existentes usando
la Transacción Airport.
Observar! El objeto Theme (Cascading Style Sheet) usado es el
GeneXusXev2. Se realizaron cambios para usar algunas propiedades CSS3;
verificar el grupo “Text Shadow” (subgrupo Text) de la clase TextBlockHeader.
Los valores predeterminados son:
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 7
Modificar los valores de las siguientes propiedades de la clase TextBlockHeader (Theme
GeneXusXev2):
 Horizontal Shadow = 10px
 Vertical Shadow = 10px
 Blur = 10px
Ejecutar F5 y verificar el cambio visual en la Master Page. Asegúrese de ejecutar Ctrl+F5 en
el browser para recargar la nueva definición del objeto theme; se espera el siguiente resultado:
2. Ejecutar el link Work With Flights. Ingresar a la Transacción Flight para ingresar un
vuelo (opción ). Ingresar valores en los campos Arrival Airport, Departure Airport,
Flight Price, que provoquen error según las rules de la Transacción.
Tip: Las reglas de negocio de la Transacción se ven y se pueden editar
usando el tab rules de la misma.
Observar! El comportamiento del despliegue de los mensajes de error en
el disparo de las rules. (disponible desde la versión Xev2)
3. En GeneXus, a nivel de la versión cambiar las siguientes propiedades:
 Stop on error = Yes
 Validation Message Position = Top
 Validation Message Overlap Adyacent Controls = No
 Validation Message Display = One at a time
Tip: Las propiedades se encuentran a nivel de la versión, en la sección User
Interface -> Web Interface -> Client Side Validation Behaviour. Para buscar
una propiedad, puede usar el filtro que se encuentra en la parte superior del
diálogo de propiedades.
Hacer Build With This Only de la Transacción Flight y observar el nuevo comportamiento.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 8
Tip: Cómo hacer Build With This Only de un objeto? Seleccionando el objeto
con botón derecho se habilita el Build With This Only del mismo.
4. Ejecutar el link Work With Hotel.
Observar! El campo Email Contact Hotel es un dominio semántico.
(disponible desde la versión Xev2)
5. Ejecutar la Transacción Hotel para ingresar un nuevo hotel.
Observar! La validación automática sobre el campo Email Contact si el
valor ingresado no cumple con el patrón válido para un email: “Field Hotel
contact email does not match the specified pattern” (utilizando la propiedad
Regular Expression).
Observar! El campo image en modo editable abre un diálogo de upload que
permite subir una imagen local o ingresar una URL.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 9
Parte 2
Ejecutaremos el frontend de nuestra aplicación de ejemplo; los objetos del frontend utilizan la
Master Page AppMasterpageFront.
Nuevo orden de disparo de eventos en la versión Tilo y mejoras en
la experiencia de usuario en la navegación de páginas (Single
Page Applications).
1. En GeneXus, abrir el Web Panel AttractionsList. Este Web Panel contiene un grid freestyle
que carga las atracciones turísticas filtrando por el parámetro CategoryId (categoría de
atracción turística).
El panel está contenido en la Master Page AppMasterpageFront (ver la propiedad Master
Page del Web Panel).
Marcar AttractionsList como Startup Object de la aplicación.
Tip: Cómo marcar un objeto como Startup Object? Seleccionar el objeto con
botón derecho -> Set as Startup Object.
Abrir el objeto Master Page AppMasterpageFront. Ver que contiene un menú llamado
SmoothNavMenu (un User Control). A través de los User Controls se puede enriquecer la
interfaz de usuario y dar mayor flexibilidad al desarrollo.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 10
En la solapa de eventos, verificar que se encuentre descomentado el siguiente código para que
se pueble el menú con la salida del Data Provider GetCategories.
Sub 'SmoothNavMenu'
&SmoothNavMenuData = GetCategories()
EndSub
El Data Provider GetCategories barre la tabla de categorías turísticas y carga una colección
de datos estructurados que devuelve al llamador.
Para terminar con la construcción del menú en la Master Page, descomentar el siguiente
código:
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 11
Event SmoothNavMenu1.OnClick
call(&SmoothNavMenuSelectedItem.Link)
EndEvent
Ejecutar F5 (Run).
Observar! En ejecución cuando se selecciona una opción del menú se muestra
la lista de atracciones turísticas con un efecto de transición. Este efecto
se configura a través del objeto Theme de GeneXus; las propiedades Enter
Effect y Close Effect de la clase Form; notar que el frontend utiliza la clase
Form2.
Observar! Si se selecciona una opción turística de la lista se carga el detalle
de la misma (Web Panel AttractionForm) y permanece fijo en pantalla el
contenido de la Master Page que contiene a ambas páginas (salvo los
RecentLinks). Esto es Single Page Applications (SPA). Usando Ajax y SPA se
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 12
evita el parpadeo de la pantalla en la navegación de una página a otra.
2. Abrir el Web Panel AttractionForm porque estaremos trabajando sobre él en breve.
Recibe como parámetro AttractionId y despliega información del paquete turístico en
promoción.
Este Web Panel contiene un botón Book que permite realizar la reserva del paquete. Como
es de esperar al momento de hacer la reserva se solicita al usuario que se autentique. Para la
autenticación usaremos el GAM (un módulo de seguridad que se incorpora de manera
automática a la base de conocimientos).
El botón Book usa el tipo de datos Window para que se abra una ventana embebida en la
página con un nuevo form (objeto TripReservationForm).
Event 'Book'
&window.Object = TripReservationForm.Create(PackTourId)
&window.Open()
EndEvent
El objeto TripReservationForm tiene la propiedad Integrated Security Level =
Authentication, por lo cual al momento de ejecutar se verifica automáticamente si el usuario
está logueado, y de no estarlo se invoca al objeto configurado en la propiedad Login Object
for Web (que se encuentra a nivel de la versión de la KB).
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 13
En ejecución del Web Panel AttractionForm presionar el botón Book. Se abre el objeto
GAMLogin, en donde debe ingresar con el usuario: john / john.
Confirmar la reserva.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 14
Observar! El Web Panel de login aparece de manera automática porque el
Web Panel a ejecutar (TripReservationForm) tiene la propiedad Integrated
security level = Authentication.
Parte 3
Seguimos trabajando sobre el frontend de la aplicación.
Mejora de la experiencia de usuario mediante la notificación de
mensajes del server al cliente: Web Notifications
Seguiremos trabajando sobre el Web Panel AttractionForm. Este Web Panel permite al
usuario ingresar comentarios acerca de la atracción turística que muestra. Contiene un link
para que el usuario pueda ver los comentarios e ingresar uno nuevo (link Show Comments).
El link Show Comments crea un Web Component llamado CommentsWP que lista los
comentarios de esa atracción.
Queremos resolver lo siguiente…
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 15
 Cuando john ingresa un nuevo comentario, un usuario distinto (puede ser anónimo)
debe recibir el comentario de john sin necesidad de refrescar la pantalla.
 Ante la notificación de un nuevo comentario no se debe refrescar todo el grid de
comentarios, solo se debe agregar una línea con el nuevo comentario.
La solución consiste en resolver las siguientes preguntas
Cómo envío una notificación a todos?
En el evento AddPost del Web Component CommentsWP (que se usa para agregar un
comentario) se invoca un procedimiento que permite ingresar el comentario en la base de datos
y luego se llama se invoca a un Procedure (NewPostNotification), que envía una
notificación a todos con el comentario nuevo.
Ver el código del Procedure NewPostNotification.
Observar! En el Procedure NewPostNotification, llamado por el
Procedure AddPost, se usa el tipo de datos WebNotification para hacer un
broadcast a todos los usuarios cuando se ingresa el nuevo comentario. La
variable &NotificationInfo es de un tipo de datos predefinido –
NotificationInfo – y permite persistir los datos a notificar.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 16
Cómo recepciono la notificación y hago una carga liviana de la pantalla
ante la llegada de esta notificación?
Abrir el Web Panel CommentsWP. Este es el Web Panel que lista los comentarios.
Descomentar y analizar el evento OnMessage.
Event OnMessage(&NotificationInfo)
if (&NotificationInfo.Object="Post")
&postid = &NotificationInfo.Id.Trim().ToNumeric()
&postid.Visible=false
&commentNotificationInfo.FromJson(&NotificationInfo.Message)
&PostTitle = &commentNotificationInfo.PostTitle
&PostCustomerName = &commentNotificationInfo.PostCustomerName
&PostCustomerPhoto.FromURL(&commentNotificationInfo.PostCustomerPhoto)
if &PostCustomerPhoto.IsEmpty()
&PostCustomerPhoto.FromImage("anyone")
endif
grid1.Load()
endif
Endevent
Este evento procesa la notificación recibida y agrega una línea al grid con dicha información.
Observar! Dentro del Evento OnMessage se obtiene la notificación y se carga
en el grid. El comando grid.load dentro de este evento hace que solo se cargue
una línea del grid con el contenido deseado, no se refresca el grid por
entero.
Para validar dicho mecanismo puede ejecutar 2 instancias del browser y agregar diferentes
comentarios a la misma atracción, notar que al confirmar un comentario en una de las páginas,
se refresca en ambas instancias.
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 17
Parte 4
Realizar un deploy de la aplicación en el cloud.
Crear un nuevo environment de nombre “Java Cloud” con la siguiente configuración:
 Language: Java
 Data Source: mySQL
 Target Path: JavaCloud
Utilizar la opción Set as Target Environment en la sección de Preferences (en el
Knowledge Base Navigator) sobre el nuevo environment.
En las propiedades del generador especificamos Deploy to cloud = yes y también el Deploy
Virtual Directory, al cual le asignaremos labweb concatenado con su usuario GXtechnical.
Luego, en la propiedad Deploy Server URL, escribimos: http://apps4.genexus.com
El resultado esperado es similar al siguiente:
Modificar las propiedades del datastore default de la misma forma; para las propiedades
Database name, User id y User password utilizar labweb concatenado con el usuario de
GXtechnical. Además, la propiedad Server Name es: apps4.genexus.com
Se espera una configuración similar a:
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 18
Ejecutar un Rebuild All; para configurar el ambiente en la nube; se espera la autenticación
con GXtechnical, creación de la base de datos del GAM y aplicación además de la generación y
compilación de fuentes.
Ejecutar nuevamente el procedimiento ProcLoaddata utilizando la opción Run with this only.
Utilizar la opción Run para ejecutar la aplicación, se espera que ejecute el objeto AttractionsList
en el ambiente generado en la nube.
Si lo desea puede revisar las diferentes partes del práctico en este caso ejecutando en un
ambiente paralelo en la nube.
¡Gracias por participar!
Laboratorio GeneXus Tilo. “Aplicaciones Web” | 19
Glosario
 Dominios semánticos
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?17227
 Client Side Validation
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?16964
 Single Page Applications
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?22455
 Web Notifications
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?22442
 Web Fonts
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?22701
 Mejoras en theme editor: import css
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?20075
 Cloud Prototyping
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?15046
 Multimedia Fields
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?20117

Contenu connexe

Tendances

Action Jackson! Effective JSON processing in Spring Boot Applications
Action Jackson! Effective JSON processing in Spring Boot ApplicationsAction Jackson! Effective JSON processing in Spring Boot Applications
Action Jackson! Effective JSON processing in Spring Boot ApplicationsJoris Kuipers
 
On the Road to DSpace 7: Angular UI + REST
On the Road to DSpace 7: Angular UI + RESTOn the Road to DSpace 7: Angular UI + REST
On the Road to DSpace 7: Angular UI + RESTTim Donohue
 
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly WebinarAmazon Web Services Korea
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaEdureka!
 
chaos-engineering-Knolx
chaos-engineering-Knolxchaos-engineering-Knolx
chaos-engineering-KnolxKnoldus Inc.
 
AEM 6.1 User Interface Customization
AEM 6.1 User Interface CustomizationAEM 6.1 User Interface Customization
AEM 6.1 User Interface CustomizationChristian Meyer
 
React workshop presentation
React workshop presentationReact workshop presentation
React workshop presentationBojan Golubović
 
Robots and Automations: Experiences of use with Zabbix
Robots and Automations: Experiences of use with ZabbixRobots and Automations: Experiences of use with Zabbix
Robots and Automations: Experiences of use with ZabbixGuido Mascelani Silverio
 
An Introduction to Chaos Engineering
An Introduction to Chaos EngineeringAn Introduction to Chaos Engineering
An Introduction to Chaos EngineeringGremlin
 
Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture stylesAraf Karsh Hamid
 
AngularJS – What, Why, Advantages and Disadvantages
AngularJS – What, Why, Advantages and DisadvantagesAngularJS – What, Why, Advantages and Disadvantages
AngularJS – What, Why, Advantages and DisadvantagesWeblineIndia
 
Hands-On With Reactive Web Design
Hands-On With Reactive Web DesignHands-On With Reactive Web Design
Hands-On With Reactive Web DesignOutSystems
 

Tendances (20)

Action Jackson! Effective JSON processing in Spring Boot Applications
Action Jackson! Effective JSON processing in Spring Boot ApplicationsAction Jackson! Effective JSON processing in Spring Boot Applications
Action Jackson! Effective JSON processing in Spring Boot Applications
 
On the Road to DSpace 7: Angular UI + REST
On the Road to DSpace 7: Angular UI + RESTOn the Road to DSpace 7: Angular UI + REST
On the Road to DSpace 7: Angular UI + REST
 
Work shop eventstorming
Work shop  eventstormingWork shop  eventstorming
Work shop eventstorming
 
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
빠른 모바일 인증 구현을 위한 Amazon Cognito 서비스 소개 :: 윤석찬 - AWS Monthly Webinar
 
Microservices Design Patterns | Edureka
Microservices Design Patterns | EdurekaMicroservices Design Patterns | Edureka
Microservices Design Patterns | Edureka
 
chaos-engineering-Knolx
chaos-engineering-Knolxchaos-engineering-Knolx
chaos-engineering-Knolx
 
angular fundamentals.pdf
angular fundamentals.pdfangular fundamentals.pdf
angular fundamentals.pdf
 
Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipse
 
AEM 6.1 User Interface Customization
AEM 6.1 User Interface CustomizationAEM 6.1 User Interface Customization
AEM 6.1 User Interface Customization
 
Composite pattern
Composite patternComposite pattern
Composite pattern
 
MVC - Introduction
MVC - IntroductionMVC - Introduction
MVC - Introduction
 
React workshop presentation
React workshop presentationReact workshop presentation
React workshop presentation
 
React workshop
React workshopReact workshop
React workshop
 
Android concurrency
Android concurrencyAndroid concurrency
Android concurrency
 
Robots and Automations: Experiences of use with Zabbix
Robots and Automations: Experiences of use with ZabbixRobots and Automations: Experiences of use with Zabbix
Robots and Automations: Experiences of use with Zabbix
 
An Introduction to Chaos Engineering
An Introduction to Chaos EngineeringAn Introduction to Chaos Engineering
An Introduction to Chaos Engineering
 
Enterprise Software Architecture styles
Enterprise Software Architecture stylesEnterprise Software Architecture styles
Enterprise Software Architecture styles
 
AngularJS – What, Why, Advantages and Disadvantages
AngularJS – What, Why, Advantages and DisadvantagesAngularJS – What, Why, Advantages and Disadvantages
AngularJS – What, Why, Advantages and Disadvantages
 
Hands-On With Reactive Web Design
Hands-On With Reactive Web DesignHands-On With Reactive Web Design
Hands-On With Reactive Web Design
 
Introduction to microservices
Introduction to microservicesIntroduction to microservices
Introduction to microservices
 

En vedette

Web: HTML5 es el ganador, y ahora que?
Web: HTML5 es el ganador, y ahora que?Web: HTML5 es el ganador, y ahora que?
Web: HTML5 es el ganador, y ahora que?GeneXus
 
Integrando k2 b tools en proyectos genexus
Integrando k2 b tools en proyectos genexusIntegrando k2 b tools en proyectos genexus
Integrando k2 b tools en proyectos genexusGeneXus
 
El condimento para potenciar la productividad de GeneXus
El condimento para potenciar la productividad de GeneXusEl condimento para potenciar la productividad de GeneXus
El condimento para potenciar la productividad de GeneXusGeneXus
 
5 ideas para desarrollar en smart device
5 ideas para desarrollar en smart device5 ideas para desarrollar en smart device
5 ideas para desarrollar en smart deviceGeneXus
 
Generadores web Genexus nuevas caracteristicas para nuevas aplicaciones
Generadores web Genexus nuevas caracteristicas para nuevas aplicacionesGeneradores web Genexus nuevas caracteristicas para nuevas aplicaciones
Generadores web Genexus nuevas caracteristicas para nuevas aplicacionesGeneXus
 
Is your Business Process accessible from Mobile Devices? - Gonzalo Fernández
Is your Business Process accessible from Mobile Devices? - Gonzalo FernándezIs your Business Process accessible from Mobile Devices? - Gonzalo Fernández
Is your Business Process accessible from Mobile Devices? - Gonzalo FernándezGeneXus
 
0150 como desarrollar_aplicaciones_seguras_con_gene_xus
0150 como desarrollar_aplicaciones_seguras_con_gene_xus0150 como desarrollar_aplicaciones_seguras_con_gene_xus
0150 como desarrollar_aplicaciones_seguras_con_gene_xusGeneXus
 
Responsive Web Design: Sin fronteras para una excelente experiencia de usuari...
Responsive Web Design: Sin fronteras para una excelente experiencia de usuari...Responsive Web Design: Sin fronteras para una excelente experiencia de usuari...
Responsive Web Design: Sin fronteras para una excelente experiencia de usuari...GeneXus
 
GeneXus X Evolution 3, Part II, with Veronica Buitron, CTO, GeneXus USA, GX S...
GeneXus X Evolution 3, Part II, with Veronica Buitron, CTO, GeneXus USA, GX S...GeneXus X Evolution 3, Part II, with Veronica Buitron, CTO, GeneXus USA, GX S...
GeneXus X Evolution 3, Part II, with Veronica Buitron, CTO, GeneXus USA, GX S...GeneXusUSA
 
GAM GeneXus Access Manager
GAM GeneXus Access ManagerGAM GeneXus Access Manager
GAM GeneXus Access ManagerGeneXus
 
52 UTE - Una aplicación Smart Device completamente Off-line con GeneXus X Evo...
52 UTE - Una aplicación Smart Device completamente Off-line con GeneXus X Evo...52 UTE - Una aplicación Smart Device completamente Off-line con GeneXus X Evo...
52 UTE - Una aplicación Smart Device completamente Off-line con GeneXus X Evo...GeneXus
 
¿Qué es y cómo utilizar el módulo de seguridad integrada (gam)
¿Qué es y cómo utilizar el módulo de seguridad integrada (gam)¿Qué es y cómo utilizar el módulo de seguridad integrada (gam)
¿Qué es y cómo utilizar el módulo de seguridad integrada (gam)GeneXus
 
Laboratorio WEB GXEv3
Laboratorio WEB GXEv3Laboratorio WEB GXEv3
Laboratorio WEB GXEv3GeneXus
 
Repositorio Datos Ambientales Guayana2008
Repositorio Datos Ambientales Guayana2008Repositorio Datos Ambientales Guayana2008
Repositorio Datos Ambientales Guayana2008Rodrigo Torrens
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...GeneXus
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!GeneXus
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoLaboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoGeneXus
 
Overview GeneXus Evolution 3 - III Evento GeneXus Italia e Svizzera
Overview GeneXus Evolution 3 - III Evento GeneXus Italia e SvizzeraOverview GeneXus Evolution 3 - III Evento GeneXus Italia e Svizzera
Overview GeneXus Evolution 3 - III Evento GeneXus Italia e SvizzeraRad Solutions
 

En vedette (20)

Web: HTML5 es el ganador, y ahora que?
Web: HTML5 es el ganador, y ahora que?Web: HTML5 es el ganador, y ahora que?
Web: HTML5 es el ganador, y ahora que?
 
Integrando k2 b tools en proyectos genexus
Integrando k2 b tools en proyectos genexusIntegrando k2 b tools en proyectos genexus
Integrando k2 b tools en proyectos genexus
 
El condimento para potenciar la productividad de GeneXus
El condimento para potenciar la productividad de GeneXusEl condimento para potenciar la productividad de GeneXus
El condimento para potenciar la productividad de GeneXus
 
5 ideas para desarrollar en smart device
5 ideas para desarrollar en smart device5 ideas para desarrollar en smart device
5 ideas para desarrollar en smart device
 
Generadores web Genexus nuevas caracteristicas para nuevas aplicaciones
Generadores web Genexus nuevas caracteristicas para nuevas aplicacionesGeneradores web Genexus nuevas caracteristicas para nuevas aplicaciones
Generadores web Genexus nuevas caracteristicas para nuevas aplicaciones
 
Is your Business Process accessible from Mobile Devices? - Gonzalo Fernández
Is your Business Process accessible from Mobile Devices? - Gonzalo FernándezIs your Business Process accessible from Mobile Devices? - Gonzalo Fernández
Is your Business Process accessible from Mobile Devices? - Gonzalo Fernández
 
0150 como desarrollar_aplicaciones_seguras_con_gene_xus
0150 como desarrollar_aplicaciones_seguras_con_gene_xus0150 como desarrollar_aplicaciones_seguras_con_gene_xus
0150 como desarrollar_aplicaciones_seguras_con_gene_xus
 
3.GeneXus creación_de_la_aplicación
3.GeneXus creación_de_la_aplicación3.GeneXus creación_de_la_aplicación
3.GeneXus creación_de_la_aplicación
 
Responsive Web Design: Sin fronteras para una excelente experiencia de usuari...
Responsive Web Design: Sin fronteras para una excelente experiencia de usuari...Responsive Web Design: Sin fronteras para una excelente experiencia de usuari...
Responsive Web Design: Sin fronteras para una excelente experiencia de usuari...
 
GeneXus X Evolution 3, Part II, with Veronica Buitron, CTO, GeneXus USA, GX S...
GeneXus X Evolution 3, Part II, with Veronica Buitron, CTO, GeneXus USA, GX S...GeneXus X Evolution 3, Part II, with Veronica Buitron, CTO, GeneXus USA, GX S...
GeneXus X Evolution 3, Part II, with Veronica Buitron, CTO, GeneXus USA, GX S...
 
GAM GeneXus Access Manager
GAM GeneXus Access ManagerGAM GeneXus Access Manager
GAM GeneXus Access Manager
 
52 UTE - Una aplicación Smart Device completamente Off-line con GeneXus X Evo...
52 UTE - Una aplicación Smart Device completamente Off-line con GeneXus X Evo...52 UTE - Una aplicación Smart Device completamente Off-line con GeneXus X Evo...
52 UTE - Una aplicación Smart Device completamente Off-line con GeneXus X Evo...
 
¿Qué es y cómo utilizar el módulo de seguridad integrada (gam)
¿Qué es y cómo utilizar el módulo de seguridad integrada (gam)¿Qué es y cómo utilizar el módulo de seguridad integrada (gam)
¿Qué es y cómo utilizar el módulo de seguridad integrada (gam)
 
Laboratorio WEB GXEv3
Laboratorio WEB GXEv3Laboratorio WEB GXEv3
Laboratorio WEB GXEv3
 
Repositorio Datos Ambientales Guayana2008
Repositorio Datos Ambientales Guayana2008Repositorio Datos Ambientales Guayana2008
Repositorio Datos Ambientales Guayana2008
 
Normalización
NormalizaciónNormalización
Normalización
 
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
Experiencias en el desarrollo de aplicaciones móviles en el sector salud de M...
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!
 
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y SaltoLaboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
Laboratorio: Desarrollo de aplicaciones Web con GeneXus Evolution 3 y Salto
 
Overview GeneXus Evolution 3 - III Evento GeneXus Italia e Svizzera
Overview GeneXus Evolution 3 - III Evento GeneXus Italia e SvizzeraOverview GeneXus Evolution 3 - III Evento GeneXus Italia e Svizzera
Overview GeneXus Evolution 3 - III Evento GeneXus Italia e Svizzera
 

Similaire à Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo

Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SDGeneXus
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SDGeneXus
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SDGeneXus
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SDGeneXus
 
Laboratorio desarrollo para Smart Devices
Laboratorio desarrollo para Smart DevicesLaboratorio desarrollo para Smart Devices
Laboratorio desarrollo para Smart DevicesGeneXus
 
Tutorial aspx
Tutorial aspxTutorial aspx
Tutorial aspxjlmanmons
 
Tutorial aspx, pequeño tutorial para crear un sitio y poder generar transacci...
Tutorial aspx, pequeño tutorial para crear un sitio y poder generar transacci...Tutorial aspx, pequeño tutorial para crear un sitio y poder generar transacci...
Tutorial aspx, pequeño tutorial para crear un sitio y poder generar transacci...jlmanmons
 
Base de datos desde vb 6.0
Base de datos desde vb 6.0Base de datos desde vb 6.0
Base de datos desde vb 6.0WendyMendez30
 
bases de datos desde visual basic
bases de datos desde visual basicbases de datos desde visual basic
bases de datos desde visual basicsantiagomario8
 
tutorial de eclipse
tutorial de eclipsetutorial de eclipse
tutorial de eclipseTania Tellez
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2Steven Gomez
 
Conectar con bases de datos
Conectar con bases de datosConectar con bases de datos
Conectar con bases de datosRafael Quintero
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSIan Monge Pérez
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Gabriela Bosetti
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en accessssuser3a82fb
 
Taller de gxtest
Taller de gxtestTaller de gxtest
Taller de gxtestGeneXus
 
Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)javier_ot99
 

Similaire à Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo (20)

Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SD
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SD
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SD
 
Laboratorio SD
Laboratorio SDLaboratorio SD
Laboratorio SD
 
Laboratorio desarrollo para Smart Devices
Laboratorio desarrollo para Smart DevicesLaboratorio desarrollo para Smart Devices
Laboratorio desarrollo para Smart Devices
 
Tutorial aspx
Tutorial aspxTutorial aspx
Tutorial aspx
 
Tutorial aspx, pequeño tutorial para crear un sitio y poder generar transacci...
Tutorial aspx, pequeño tutorial para crear un sitio y poder generar transacci...Tutorial aspx, pequeño tutorial para crear un sitio y poder generar transacci...
Tutorial aspx, pequeño tutorial para crear un sitio y poder generar transacci...
 
Base de datos desde vb 6.0
Base de datos desde vb 6.0Base de datos desde vb 6.0
Base de datos desde vb 6.0
 
bases de datos desde visual basic
bases de datos desde visual basicbases de datos desde visual basic
bases de datos desde visual basic
 
Visual studio 2010
Visual studio 2010Visual studio 2010
Visual studio 2010
 
tutorial de eclipse
tutorial de eclipsetutorial de eclipse
tutorial de eclipse
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
Conectar con bases de datos
Conectar con bases de datosConectar con bases de datos
Conectar con bases de datos
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JS
 
Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6Introducción al desarrollo Web: Frontend con Angular 6
Introducción al desarrollo Web: Frontend con Angular 6
 
Seguridad en access
Seguridad en accessSeguridad en access
Seguridad en access
 
Taller de gxtest
Taller de gxtestTaller de gxtest
Taller de gxtest
 
Video
VideoVideo
Video
 
Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)Manual de netbeans_7(2)(2)(2)
Manual de netbeans_7(2)(2)(2)
 
Tutorial java fx_8_espanol
Tutorial java fx_8_espanolTutorial java fx_8_espanol
Tutorial java fx_8_espanol
 

Plus de GeneXus

After Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsAfter Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsGeneXus
 
Live Editing in Action
Live Editing in ActionLive Editing in Action
Live Editing in ActionGeneXus
 
¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?GeneXus
 
K2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroK2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroGeneXus
 
Sd y Plataformas
Sd y PlataformasSd y Plataformas
Sd y PlataformasGeneXus
 
PXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosPXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosGeneXus
 
APPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaAPPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaGeneXus
 
GeneXus 4 Students
GeneXus 4 StudentsGeneXus 4 Students
GeneXus 4 StudentsGeneXus
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsiveGeneXus
 
K2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusK2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusGeneXus
 
GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus
 
GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus
 
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosLigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosGeneXus
 
Innovando con GeneXus y SAP
Innovando con GeneXus y SAPInnovando con GeneXus y SAP
Innovando con GeneXus y SAPGeneXus
 
Going mobile
Going mobileGoing mobile
Going mobileGeneXus
 
Audit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusAudit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusGeneXus
 
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusWW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusGeneXus
 
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...GeneXus
 
Laboratorio GXserver (cont)
Laboratorio GXserver (cont)Laboratorio GXserver (cont)
Laboratorio GXserver (cont)GeneXus
 
Laboratorio GXserver
Laboratorio GXserverLaboratorio GXserver
Laboratorio GXserverGeneXus
 

Plus de GeneXus (20)

After Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) BotsAfter Chatbots Yo (Ro) Bots
After Chatbots Yo (Ro) Bots
 
Live Editing in Action
Live Editing in ActionLive Editing in Action
Live Editing in Action
 
¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?¿Pensando en implementar un sistema de gestión integral en su organización?
¿Pensando en implementar un sistema de gestión integral en su organización?
 
K2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuroK2B Tools el compañero de viaje ideal hacia el futuro
K2B Tools el compañero de viaje ideal hacia el futuro
 
Sd y Plataformas
Sd y PlataformasSd y Plataformas
Sd y Plataformas
 
PXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivosPXTools: Nuevo generador y nuevos controles responsivos
PXTools: Nuevo generador y nuevos controles responsivos
 
APPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industriaAPPlícate: Aplicaciones móviles para el desarrollo de la industria
APPlícate: Aplicaciones móviles para el desarrollo de la industria
 
GeneXus 4 Students
GeneXus 4 StudentsGeneXus 4 Students
GeneXus 4 Students
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsive
 
K2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXusK2B: El ERP nativo para el mundo GeneXus
K2B: El ERP nativo para el mundo GeneXus
 
GeneXus 15 (Salto)
GeneXus 15 (Salto)GeneXus 15 (Salto)
GeneXus 15 (Salto)
 
GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.GeneXus Cloud Deployment Services. El camino a la nube.
GeneXus Cloud Deployment Services. El camino a la nube.
 
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuariosLigaMX con GeneXus: De 0 a 1.700.000 de usuarios
LigaMX con GeneXus: De 0 a 1.700.000 de usuarios
 
Innovando con GeneXus y SAP
Innovando con GeneXus y SAPInnovando con GeneXus y SAP
Innovando con GeneXus y SAP
 
Going mobile
Going mobileGoing mobile
Going mobile
 
Audit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXusAudit+: La mejor forma de auditar KB’s GeneXus
Audit+: La mejor forma de auditar KB’s GeneXus
 
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite PlusWW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
WW+, SD+ y Audit+: Potencie GeneXus la Suite Plus
 
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
Aproveche las ventajas de la colaboración entre GeneXus y Cloud Shared Office...
 
Laboratorio GXserver (cont)
Laboratorio GXserver (cont)Laboratorio GXserver (cont)
Laboratorio GXserver (cont)
 
Laboratorio GXserver
Laboratorio GXserverLaboratorio GXserver
Laboratorio GXserver
 

Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo

  • 2. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 2 Copyright 1988 - 2013| Artech Consultores S. R. L. Todos los derechos reservados. Este documento no puede ser reproducido en cualquier medio sin el consentimiento explícito de Artech Consultores S.R.L. La información contenida en este documento es para uso personal únicamente. Marcas Registradas Artech y GeneXus son marcas registradas de Artech Consultores S.R.L. Todas las demás marcas mencionadas en este documento son propiedad de sus respectivos dueños.
  • 3. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 3 Contenido Contenido..........................................................................................................................3 Objetivo ............................................................................................................................4 Preparación .......................................................................................................................4 Parte 1 ..............................................................................................................................5 CSS3, HTML 5, Dominios semánticos y Client Side Validation ..............................................5 Parte 2 ..............................................................................................................................9 Nuevo orden de disparo de eventos en la versión Tilo y mejoras en la experiencia de usuario en la navegación de páginas (Single Page Applications)......................................................9 Parte 3 ............................................................................................................................ 14 Mejora de la experiencia de usuario mediante la notificación de mensajes del server al cliente: Web Notifications .............................................................................................. 14 Cómo recepciono la notificación y hago una carga liviana de la pantalla ante la llegada de esta notificación?....................................................................................................... 16 Parte 4 ............................................................................................................................ 17 ¡Gracias por participar! ..................................................................................................... 18 Glosario........................................................................................................................... 19
  • 4. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 4 Objetivo Ver las nuevas funcionalidades de GeneXus Web para la versión X Evolution 2 y Tilo. Se trata de una aplicación de una agencia de viajes, compuesta por un backend para ingreso de datos, y un frontend, destinado al usuario final (que selecciona y compra paquetes turísticos). Preparación Para este laboratorio utilizaremos la versión GeneXus Tilo y el browser Chrome. El icono asociado se encuentra en el escritorio, ejecútelo. Abrir la Base de Conocimiento que se encuentra en C:LabWeblabweb En este laboratorio ejecutaremos nuestra aplicación localmente y posteriormente se generará un ambiente en la nube. Sobre el environment “Java Environment” (local) asegurarse de tener la siguiente configuración  DBMS: SQL Server  Database Name: labweb  Server Name: localhost  User id: labweb  User password: labweb!13 Luego de verificar la configuración inicial, ejecutar un Rebuild All; se espera un diálogo solicitando la creación de la base de datos del GAM además de la base de datos de la aplicación. Abrir el procedimiento ProcLoaddata y asegurarse que el valor de la variable &Path sea: &Path = "C:LabWebmaterialDataData" Ejecutar el procedimiento ProcLoaddata (opción Run with this only) para inicializar la base de datos. Si desea puede hacer un Freeze del estado actual de la base de conocimiento en caso que quiera volver al inicio del práctico nuevamente. Para ello seleccionar la opción View -> Versions; posteriormente seleccionar el menú contextual Freeze y seleccionar un nombre por ejemplo “Inicial”.
  • 5. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 5 Utilizar la opción Run para ejecutar la aplicación, se abre el DeveloperMenu.xml en el browser predeterminado, que contiene la lista de Objetos Web de nuestra KB. Parte 1 Ejecutaremos el Backend de nuestra aplicación de ejemplo. CSS3, HTML 5, Dominios semánticos y Client Side Validation Aplicaremos el Pattern Work With para Web a las Transacciones Flight, Airport (Folder ModuleFlights) y Hotel (Folder ModuleAttractions) como se indica a continuación: botón derecho sobre la solapa -> Apply Pattern -> Work With for Web. Ver figura.
  • 6. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 6 Como resultado, se van a crear nuevos objetos que implementan el Patrón Work With de estas Transacciones. Tip: Cómo ubicar los objetos generados con el Pattern Work With? Sobre la solapa del objeto, botón derecho -> Locate in Folder View. A la izquierda (en el Folder View) tendremos el objeto seleccionado y la lista de objetos generados por el pattern. Hacer F5 (Run) para ver en ejecución estos objetos. Terminado el Build, observar que en el browser se ejecuta el DeveloperMenu.xml, que contiene la lista de Objetos Web de nuestra KB. Hacer click en el Objeto Home. 1. Ejecutar el link Work With Airport. Acceder a los diferentes aeropuertos existentes usando la Transacción Airport. Observar! El objeto Theme (Cascading Style Sheet) usado es el GeneXusXev2. Se realizaron cambios para usar algunas propiedades CSS3; verificar el grupo “Text Shadow” (subgrupo Text) de la clase TextBlockHeader. Los valores predeterminados son:
  • 7. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 7 Modificar los valores de las siguientes propiedades de la clase TextBlockHeader (Theme GeneXusXev2):  Horizontal Shadow = 10px  Vertical Shadow = 10px  Blur = 10px Ejecutar F5 y verificar el cambio visual en la Master Page. Asegúrese de ejecutar Ctrl+F5 en el browser para recargar la nueva definición del objeto theme; se espera el siguiente resultado: 2. Ejecutar el link Work With Flights. Ingresar a la Transacción Flight para ingresar un vuelo (opción ). Ingresar valores en los campos Arrival Airport, Departure Airport, Flight Price, que provoquen error según las rules de la Transacción. Tip: Las reglas de negocio de la Transacción se ven y se pueden editar usando el tab rules de la misma. Observar! El comportamiento del despliegue de los mensajes de error en el disparo de las rules. (disponible desde la versión Xev2) 3. En GeneXus, a nivel de la versión cambiar las siguientes propiedades:  Stop on error = Yes  Validation Message Position = Top  Validation Message Overlap Adyacent Controls = No  Validation Message Display = One at a time Tip: Las propiedades se encuentran a nivel de la versión, en la sección User Interface -> Web Interface -> Client Side Validation Behaviour. Para buscar una propiedad, puede usar el filtro que se encuentra en la parte superior del diálogo de propiedades. Hacer Build With This Only de la Transacción Flight y observar el nuevo comportamiento.
  • 8. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 8 Tip: Cómo hacer Build With This Only de un objeto? Seleccionando el objeto con botón derecho se habilita el Build With This Only del mismo. 4. Ejecutar el link Work With Hotel. Observar! El campo Email Contact Hotel es un dominio semántico. (disponible desde la versión Xev2) 5. Ejecutar la Transacción Hotel para ingresar un nuevo hotel. Observar! La validación automática sobre el campo Email Contact si el valor ingresado no cumple con el patrón válido para un email: “Field Hotel contact email does not match the specified pattern” (utilizando la propiedad Regular Expression). Observar! El campo image en modo editable abre un diálogo de upload que permite subir una imagen local o ingresar una URL.
  • 9. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 9 Parte 2 Ejecutaremos el frontend de nuestra aplicación de ejemplo; los objetos del frontend utilizan la Master Page AppMasterpageFront. Nuevo orden de disparo de eventos en la versión Tilo y mejoras en la experiencia de usuario en la navegación de páginas (Single Page Applications). 1. En GeneXus, abrir el Web Panel AttractionsList. Este Web Panel contiene un grid freestyle que carga las atracciones turísticas filtrando por el parámetro CategoryId (categoría de atracción turística). El panel está contenido en la Master Page AppMasterpageFront (ver la propiedad Master Page del Web Panel). Marcar AttractionsList como Startup Object de la aplicación. Tip: Cómo marcar un objeto como Startup Object? Seleccionar el objeto con botón derecho -> Set as Startup Object. Abrir el objeto Master Page AppMasterpageFront. Ver que contiene un menú llamado SmoothNavMenu (un User Control). A través de los User Controls se puede enriquecer la interfaz de usuario y dar mayor flexibilidad al desarrollo.
  • 10. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 10 En la solapa de eventos, verificar que se encuentre descomentado el siguiente código para que se pueble el menú con la salida del Data Provider GetCategories. Sub 'SmoothNavMenu' &SmoothNavMenuData = GetCategories() EndSub El Data Provider GetCategories barre la tabla de categorías turísticas y carga una colección de datos estructurados que devuelve al llamador. Para terminar con la construcción del menú en la Master Page, descomentar el siguiente código:
  • 11. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 11 Event SmoothNavMenu1.OnClick call(&SmoothNavMenuSelectedItem.Link) EndEvent Ejecutar F5 (Run). Observar! En ejecución cuando se selecciona una opción del menú se muestra la lista de atracciones turísticas con un efecto de transición. Este efecto se configura a través del objeto Theme de GeneXus; las propiedades Enter Effect y Close Effect de la clase Form; notar que el frontend utiliza la clase Form2. Observar! Si se selecciona una opción turística de la lista se carga el detalle de la misma (Web Panel AttractionForm) y permanece fijo en pantalla el contenido de la Master Page que contiene a ambas páginas (salvo los RecentLinks). Esto es Single Page Applications (SPA). Usando Ajax y SPA se
  • 12. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 12 evita el parpadeo de la pantalla en la navegación de una página a otra. 2. Abrir el Web Panel AttractionForm porque estaremos trabajando sobre él en breve. Recibe como parámetro AttractionId y despliega información del paquete turístico en promoción. Este Web Panel contiene un botón Book que permite realizar la reserva del paquete. Como es de esperar al momento de hacer la reserva se solicita al usuario que se autentique. Para la autenticación usaremos el GAM (un módulo de seguridad que se incorpora de manera automática a la base de conocimientos). El botón Book usa el tipo de datos Window para que se abra una ventana embebida en la página con un nuevo form (objeto TripReservationForm). Event 'Book' &window.Object = TripReservationForm.Create(PackTourId) &window.Open() EndEvent El objeto TripReservationForm tiene la propiedad Integrated Security Level = Authentication, por lo cual al momento de ejecutar se verifica automáticamente si el usuario está logueado, y de no estarlo se invoca al objeto configurado en la propiedad Login Object for Web (que se encuentra a nivel de la versión de la KB).
  • 13. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 13 En ejecución del Web Panel AttractionForm presionar el botón Book. Se abre el objeto GAMLogin, en donde debe ingresar con el usuario: john / john. Confirmar la reserva.
  • 14. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 14 Observar! El Web Panel de login aparece de manera automática porque el Web Panel a ejecutar (TripReservationForm) tiene la propiedad Integrated security level = Authentication. Parte 3 Seguimos trabajando sobre el frontend de la aplicación. Mejora de la experiencia de usuario mediante la notificación de mensajes del server al cliente: Web Notifications Seguiremos trabajando sobre el Web Panel AttractionForm. Este Web Panel permite al usuario ingresar comentarios acerca de la atracción turística que muestra. Contiene un link para que el usuario pueda ver los comentarios e ingresar uno nuevo (link Show Comments). El link Show Comments crea un Web Component llamado CommentsWP que lista los comentarios de esa atracción. Queremos resolver lo siguiente…
  • 15. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 15  Cuando john ingresa un nuevo comentario, un usuario distinto (puede ser anónimo) debe recibir el comentario de john sin necesidad de refrescar la pantalla.  Ante la notificación de un nuevo comentario no se debe refrescar todo el grid de comentarios, solo se debe agregar una línea con el nuevo comentario. La solución consiste en resolver las siguientes preguntas Cómo envío una notificación a todos? En el evento AddPost del Web Component CommentsWP (que se usa para agregar un comentario) se invoca un procedimiento que permite ingresar el comentario en la base de datos y luego se llama se invoca a un Procedure (NewPostNotification), que envía una notificación a todos con el comentario nuevo. Ver el código del Procedure NewPostNotification. Observar! En el Procedure NewPostNotification, llamado por el Procedure AddPost, se usa el tipo de datos WebNotification para hacer un broadcast a todos los usuarios cuando se ingresa el nuevo comentario. La variable &NotificationInfo es de un tipo de datos predefinido – NotificationInfo – y permite persistir los datos a notificar.
  • 16. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 16 Cómo recepciono la notificación y hago una carga liviana de la pantalla ante la llegada de esta notificación? Abrir el Web Panel CommentsWP. Este es el Web Panel que lista los comentarios. Descomentar y analizar el evento OnMessage. Event OnMessage(&NotificationInfo) if (&NotificationInfo.Object="Post") &postid = &NotificationInfo.Id.Trim().ToNumeric() &postid.Visible=false &commentNotificationInfo.FromJson(&NotificationInfo.Message) &PostTitle = &commentNotificationInfo.PostTitle &PostCustomerName = &commentNotificationInfo.PostCustomerName &PostCustomerPhoto.FromURL(&commentNotificationInfo.PostCustomerPhoto) if &PostCustomerPhoto.IsEmpty() &PostCustomerPhoto.FromImage("anyone") endif grid1.Load() endif Endevent Este evento procesa la notificación recibida y agrega una línea al grid con dicha información. Observar! Dentro del Evento OnMessage se obtiene la notificación y se carga en el grid. El comando grid.load dentro de este evento hace que solo se cargue una línea del grid con el contenido deseado, no se refresca el grid por entero. Para validar dicho mecanismo puede ejecutar 2 instancias del browser y agregar diferentes comentarios a la misma atracción, notar que al confirmar un comentario en una de las páginas, se refresca en ambas instancias.
  • 17. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 17 Parte 4 Realizar un deploy de la aplicación en el cloud. Crear un nuevo environment de nombre “Java Cloud” con la siguiente configuración:  Language: Java  Data Source: mySQL  Target Path: JavaCloud Utilizar la opción Set as Target Environment en la sección de Preferences (en el Knowledge Base Navigator) sobre el nuevo environment. En las propiedades del generador especificamos Deploy to cloud = yes y también el Deploy Virtual Directory, al cual le asignaremos labweb concatenado con su usuario GXtechnical. Luego, en la propiedad Deploy Server URL, escribimos: http://apps4.genexus.com El resultado esperado es similar al siguiente: Modificar las propiedades del datastore default de la misma forma; para las propiedades Database name, User id y User password utilizar labweb concatenado con el usuario de GXtechnical. Además, la propiedad Server Name es: apps4.genexus.com Se espera una configuración similar a:
  • 18. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 18 Ejecutar un Rebuild All; para configurar el ambiente en la nube; se espera la autenticación con GXtechnical, creación de la base de datos del GAM y aplicación además de la generación y compilación de fuentes. Ejecutar nuevamente el procedimiento ProcLoaddata utilizando la opción Run with this only. Utilizar la opción Run para ejecutar la aplicación, se espera que ejecute el objeto AttractionsList en el ambiente generado en la nube. Si lo desea puede revisar las diferentes partes del práctico en este caso ejecutando en un ambiente paralelo en la nube. ¡Gracias por participar!
  • 19. Laboratorio GeneXus Tilo. “Aplicaciones Web” | 19 Glosario  Dominios semánticos http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?17227  Client Side Validation http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?16964  Single Page Applications http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?22455  Web Notifications http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?22442  Web Fonts http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?22701  Mejoras en theme editor: import css http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?20075  Cloud Prototyping http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?15046  Multimedia Fields http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?20117