SlideShare a Scribd company logo
1 of 19
Download to read offline
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

More Related Content

What's hot

Visual fox pro manual del programador
Visual fox pro manual del programadorVisual fox pro manual del programador
Visual fox pro manual del programador
agricolamontalvo
 
Sap account determination
Sap account determinationSap account determination
Sap account determination
raovb
 
Overview Of New Gl Migration Cockpit(2)
Overview Of New Gl Migration Cockpit(2)Overview Of New Gl Migration Cockpit(2)
Overview Of New Gl Migration Cockpit(2)
Delland
 

What's hot (20)

Oracle Assets Period Closing
Oracle Assets Period ClosingOracle Assets Period Closing
Oracle Assets Period Closing
 
Visual fox pro manual del programador
Visual fox pro manual del programadorVisual fox pro manual del programador
Visual fox pro manual del programador
 
Ejercicios Excel 2010
Ejercicios Excel 2010Ejercicios Excel 2010
Ejercicios Excel 2010
 
LSMW Tutorial (Spanish Espanol)
LSMW Tutorial (Spanish Espanol)LSMW Tutorial (Spanish Espanol)
LSMW Tutorial (Spanish Espanol)
 
Oracle Fusion Cloud Absence Management
Oracle Fusion Cloud Absence ManagementOracle Fusion Cloud Absence Management
Oracle Fusion Cloud Absence Management
 
Formatos de páginas en word
Formatos de páginas en wordFormatos de páginas en word
Formatos de páginas en word
 
Tạo khung in đẹp trong Ms project
Tạo khung in đẹp trong Ms projectTạo khung in đẹp trong Ms project
Tạo khung in đẹp trong Ms project
 
E-Business Tax Purchasing Whitepaper
E-Business Tax Purchasing WhitepaperE-Business Tax Purchasing Whitepaper
E-Business Tax Purchasing Whitepaper
 
Classifications in IBM Maximo Asset Management
Classifications in IBM Maximo Asset ManagementClassifications in IBM Maximo Asset Management
Classifications in IBM Maximo Asset Management
 
Step by step lsmw tutorial
Step by step lsmw tutorialStep by step lsmw tutorial
Step by step lsmw tutorial
 
Sap account determination
Sap account determinationSap account determination
Sap account determination
 
Run report from menu Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
Run report from menu  Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...Run report from menu  Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
Run report from menu Personalization كيفية تشغيل تقرير أو ما شابة من خلال شا...
 
Overview Of New Gl Migration Cockpit(2)
Overview Of New Gl Migration Cockpit(2)Overview Of New Gl Migration Cockpit(2)
Overview Of New Gl Migration Cockpit(2)
 
#17 Hướng dẫn Quản lý kho - Phần mềm CRM
#17 Hướng dẫn Quản lý kho - Phần mềm CRM#17 Hướng dẫn Quản lý kho - Phần mềm CRM
#17 Hướng dẫn Quản lý kho - Phần mềm CRM
 
Manual de configuracion sap ps
Manual de configuracion sap   psManual de configuracion sap   ps
Manual de configuracion sap ps
 
Oracle Retro pay by element
Oracle Retro pay by elementOracle Retro pay by element
Oracle Retro pay by element
 
Sap plant-maintenance-pm-business-blueprint-bbp2
Sap plant-maintenance-pm-business-blueprint-bbp2Sap plant-maintenance-pm-business-blueprint-bbp2
Sap plant-maintenance-pm-business-blueprint-bbp2
 
Transaccion f110
Transaccion f110Transaccion f110
Transaccion f110
 
Mm compras - foro sap
Mm   compras - foro sapMm   compras - foro sap
Mm compras - foro sap
 
Training Guide Oracle EBS R12 Performance Management
Training Guide Oracle EBS R12 Performance ManagementTraining Guide Oracle EBS R12 Performance Management
Training Guide Oracle EBS R12 Performance Management
 

Viewers also liked

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
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
GeneXus
 
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
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
 

Viewers also liked (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
 

Similar to Laboratorio desarrollo de aplicaciones WEB con GeneXus Tilo

Tutorial aspx
Tutorial aspxTutorial aspx
Tutorial aspx
jlmanmons
 
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
Steven Gomez
 
Mootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JSMootools Y Otros Frameworks JS
Mootools Y Otros Frameworks JS
Ian Monge Pérez
 
Taller de gxtest
Taller de gxtestTaller de gxtest
Taller de gxtest
GeneXus
 

Similar to 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
 
Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipse
 
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)
 

More from GeneXus

More from 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