Practico SmartDevices-GAM Ev3
Practico SmartDevices-GAM Ev3
Practico SmartDevices-GAM Ev3
Prctico
Marcas Registradas
Artech y GeneXus son marcas registradas de Artech Consultores S.R.L. Todas las dems marcas
mencionadas en este documento son propiedad de sus respectivos dueos.
1. Primeros Pasos
A lo largo de este prctico se desarrollar una aplicacin para un Evento (en ingls: EventDay).
Se prototipar en Android, dado que se cuenta con un emulador. Si se tiene algn dispositivo
(Android, BlackBerry, iOS, Windows 8) podr probar la aplicacin en l.
Crear una nueva Knowledge Base (si usa la versin Trial se crear con Environment
.NET con generador Default C# Web)
Observar las propiedades del generador Default (C# Web usando la versin Trial
encontrar el nodo Generators en el propio Folder View), en particular las del grupo
Execution
Utilizar la opcin Deploy to Cloud (propiedad del Generador propiedad Deploy to
Cloud = Yes) usando la Trial es la opcin default y la nica posible.
Observar las propiedades del Data Store Default que indica dnde se va a crear la
aplicacin en la versin Trial esta informacin no est visible.
Id - Numeric(8.0)
Name - Varchar(20)
Agregar reglas:
Error( 'The Speaker Name must not be empty')
if SpeakerName.IsEmpty();
Error( 'The Speaker Surname must not be empty' )
if SpeakerSurname.IsEmpty();
Msg( 'Curriculum Vitae should not be empty')
if SpeakerCVMini.IsEmpty();
Para ello: Seccin Patterns de la transaccin. Elegir el patrn apropiado y Apply this pattern
on save.
Asociar una imagen a cada opcin (puede utilizar las del folder Android Icons que los
instructores le proveern):
Notas:
Dado que no se ha especificado ningn Startup Object, GeneXus abrir tanto el Developer Menu
web en el navegador predeterminado, como el emulador Android (o ejecutar la aplicacin en el
emulador que tenga abierto, por ejemplo, el virtual device de genymotion) para probar tanto la
aplicacin Web (.NET), como la de Smart Devices (Android), respectivamente.
En el Developer Menu, adems de los links para ejecutar los objetos de la aplicacin Web,
aparecern QR codes: uno que encapsula la URL para poder ejecutar desde el KBN en el dispositivo
que corresponda (a la derecha aparece el link para descargar el KBN para iOS, dado que cada vez
ms se aconseja probar la aplicacin compilada, ya que en el KBN las funcionalidades estn
reducidas; el de iOS se sigue disponibilizando puesto que se necesita una Mac para compilar, lo
que restringe las posibilidades de test); los otros contendrn la aplicacin para Smart Devices
compilada, tanto para Android como para Blackberry. Para Windows 8 o Phone, el compilado no
puede descargarse directamente en un dispositivo, y tampoco se tiene KBN puesto que no crea
metadata para la UI. La forma de prototipar all es a travs del emulador especfico o enchufando
el dispositivo a la computadora.
No siempre se crear el archivo compilado. Depender de si se tiene Startup object configurado
y de la modalidad de ejecucin que se emple (si F5, Run o Run with this only sobre un objeto
main, etc.) En nuestro caso an no tenemos el archivo compilado, por lo que aparecen
deshabilitados.
En este caso el emulador est abriendo el KBN (Knowledge Base Navigator) que muestra
la URL para ejecutar el dashboard de la aplicacin (nico objeto main que se tiene
hasta el momento). Si no abri el emulador genymotion antes, GeneXus abrir el del SDK
de Android:
Si abri antes del F5 el emulador genymotion, ver una pantalla como la que sigue:
Nota: si tiene un dispositivo iOS, y quiere probar all, instlese el KBN (obtngalo en forma
gratuita del market place), ejectelo, y mediante el men, elija la opcin Add Knowledge
Base y luego +. Escanee el QR code que aparece en el Developer Menu para el KBN (el
nico que aparece habilitado). Grabe y pruebe.
En el emulador Android:
Hacer tap sobre un orador cualquiera, y vea cmo aparece el detalle del mismo
(este es el Layout correspondiente al modo View o al Edit?):
Editar el Orador que est visualizando (para ello observe el cono que aparece arriba a
la derecha)
Al hacerlo qu Layout se est desplegando para esta Seccin General del detalle? El
del modo View o Edit?
10
11
Hacer botn derecho sobre la pestaa del Dashboard y elegir la opcin Run With this
Only o Run. (Elegir una de estas opciones, as el F5 sigue generando la aplicacin
Web y la de Smart Devices interpretada).
Si NO est usando la Trial: Especificar el Dashboard como Startup Object. (botn
derecho sobre la pestaa del mismo / Set As Startup Object o Preferences/.Net
Environment, propiedad Startup Object). En el prximo F5 se compilar slo la aplicacin
que depende de este objeto, es decir, en este caso, slo la aplicacin para Smart Devices
cuyo punto de entrada es el Dashboard. No abrir el Developer Menu Web, sino slo el
Emulador con el Dashboard compilado ejecutndose.
Existen ms alternativas. Sugerimos buscarlas en el wiki: wiki.genexus.com
4. Desarrollando la Aplicacin
Diseo - Themes e Imgenes
Observe los themes que tiene en su KB, y qu theme se utiliza para cada plataforma
(para ello, acceda al folder Customization, nodo Themes y SD Platforms Any Android,
Any iOS, Blackberry Phone, Any iOS7, Any Windows 8, Windows Phone). Abra, por
ejemplo, el theme SimpleAndroid. Observe las clases bajo la de nombre Table. Existe
una de nombre TableColored?
Importar 2-ThemesImagesDomains.xpz
Este xpz contiene las imgenes de launch y de los conos (para Android e iOS), tambin
las imgenes tab_*. Adems incluye algunos otros Themes y el dominio Colors.
12
Suponga que usted querr desarrollar su aplicacin para Android, iOS e iOS7, por lo que
el diseador grfico le enva estos themes. Nos vamos a concentrar en Android. Abra el
theme EventGXAndroid, y observe la clase TableColored, que se utilizar ms adelante.
Observe cmo se agreg automticamente a los themes preexistentes, como el
SimpleAndroid.
Hacer lo mismo para Any iOS (especificndole el theme EventGXiOS) y para Any iOS7
(especificndole el theme EventGXiOS7).
13
Agregar al Grid que muestra la lista de Speakers, el pas del orador (sin etiqueta) y
cambiar el Name por el FullName.
Agregar una columna entre medio, de 10 dips, para dar espacio entre los contenidos de
la primera columna y la segunda. A la primera asignarle el 30% del ancho restante,
y a la ltima el 70%. Adems, hacer que la imagen ocupe dos filas, y no una
(propiedad Row span).
Cambiar el color de fondo a las filas para que cuando no estn seleccionadas se vean
grises y cuando se seleccionan, azules, como se muestra en la siguiente imagen (para
poder ver el azul de fondo al seleccionar, demore el tap djelo presionado un rato antes
de soltar:
14
Observe que la imagen no est ocupando todo el espacio destinado a la primera columna.
Por qu? Y si se quiere que lo haga? (Fill Keeping Aspect Ratio, observe las clases que
se agregaron en los themes importados, bajo la class Image).
Observe que en el List aparece el caption Work With Speaker arriba. Cmbielo por
Speakers:
Ahora se quiere que cuando el usuario hace tap sobre un Speaker en el List, en lugar de
ir directamente a mostrar la informacin detallada del Speaker, se ample la propia lnea,
mostrando all el Curriculum Vitae.
Para ir al detalle, el usuario deber hacer tap sobre una imagen de flecha (imagen
arrow_blue_right.png que se encuentra en folder Icons)
15
Habr que crear otro tem layout para ese grid y especificar cul debe mostrarse
cuando la lnea/tem est seleccionada. Pista: posicinese sobre el grid, en su extremo
superior derecho y haga clic.
Preste atencin en las propiedades Default Action y Default Selected Item Layout del
grid. Deber deshabilitar la invocacin al Detail cuando se hace tap sobre la lnea, para
que en esta accin se cargue el nuevo layout.
Al agregar la imagen con la flecha, en una cuarta columna, deber redefinir los tamaos
de las columnas: 30%;10dip;55%;15%.
Para el CV, le recomendamos que se expanda a las 4 columnas y que pueda crecer (Auto
Grow en true ocupando el tamao que necesite)
Recuerde que a los controles en el form se les pueden asociar eventos relativos a las
acciones que el usuario puede realizar con el dedo sobre ellos (haga botn derecho sobre
el control imagen, Go to Event y vea qu sucede). Recuerde cul era la sintaxis de las
invocaciones al Detail:
(solucin: WorkWithDevicesSpeaker.Speaker.Detail(SpeakerId))
Importar 3-MoreTransactions.xpz.
Este xpz contiene, entre otras cosas:
16
o DPRestaurant
o DPTrack
o DPRoom
o DPsession
Dominios: Description, Discount, Floor
Folder: EventProcsDP con los procedimientos
o Procedure: GetSessionSpeakers
o Procedure: GetSessionTracks
o Procedure: GetEventDates (para obtener fecha inicial y fecha final del
evento)
o Procedure: IsFavoriteSession
o Procedure: SetFavoriteSession
Web panel Home
Imgenes:
o Sample_restaurant*
o Sample_room*
o Clock*
o no_favorites
o favorite*
o set_favorite*
Theme: EventGXAndroid y EventGXiOS7 (si haba modificado alguna propiedad de
las clases de estos themes, tenga cuidado, pues sern sobreescritos. Grbelos con
otro nombre)
Dashboard: EventDay
Hacer un Rebuild all, reorganizando. Ejecutar. Ir al Web Panel Home para inicializar
con datos las nuevas entidades.
17
Observar
que
cada
Session
se
carga
con
un
color
determinado.
Observar qu sucede con el color mientras hace tap sobre una lnea. Cmo se program
ese comportamiento?
18
Recuerde la propiedad ItemLayout dinmica, del grid. Y la Auto Grow, esttica, para
SessionDescription.
Observar cmo el detalle de una Session solamente puede ser visualizado (no tiene
posibilidad de CRUD). Cmo se logr?
Recuerde que al eliminar el control <All Sections Content> del Detail, en la Toolbox
reaparecer, junto con uno por cada <Section> individual. Si coloca las dos sections
individuales, recuerde observar la propiedad Rows Styles, y asegrese de colocar el valor
pd (Platform Default) para la segunda
Transaccin Restaurant
19
Pista: refiere a la manera de mostrar la informacin del grid: al tipo de control que es.
Debe tener instalado en el emulador o en el dispositivo la aplicacin de mapas.
Personalizar las pantallas de View y de Edit del Detail del Speaker para que luzcan en
ejecucin de manera diferente, por ejemplo, como se muestran en las siguientes figuras:
20
21
Modifique el orden de las opciones del dashboard, para que la primera sea Sessions
Modificar el estilo Navegacin de la aplicacin para que al ejecutarse en telfonos
Android sea Slide
Ejecutar y probar los cambios realizados
Observar que se puede acceder al Dashboard desplazando con el dedo el borde izquierdo
de la pantalla hacia la derecha, o con el smbolo
Bar, a la izquierda:
22
Transitions
Hacer que el List de Sessions se abra desde abajo (Push up) cuando se lo invoca desde el
dashboard y slo en ese caso.
rdenes y filtros
Abra el List de Speakers y observe el orden por el que se est mostrando la informacin. Vaya a
GeneXus y modifquelo por SpeakerFullName. Prubelo en ejecucin.
Y si ahora quiere adems dar la posibilidad al usuario de ordenar por pas? Implemntelo.
23
Y si quiere que de elegir esta segunda opcin, la informacin se muestre agrupada por pas y
ordenada dentro de cada pas por SpeakerFullName?
Observar los atributos por los que se puede hacer Search. Quitar algunos (por ejemplo el CVMini)
y probar.
Comportamiento
Querremos mostrar slo los primeros 145 caracteres del CV de un Speaker en el List y no todo
su contenido:
24
Pista: recuerde la funcin substr. Tambin le puede ser til el mtodo Length.
Y si desea cambiar el color de fondo de la tabla, en forma dinmica, y el color del Speaker Full
Name?:
25
Si ahora desea que cuando se inserta un nuevo Speaker en el sistema (a travs del List),
inmediatamente se ofrezca insertarlo en la libreta de direcciones del dispositivo, cmo lo
implementa?
26
Transaccin EventSetting
Si no import el xpz para implementar la integracin con Twitter, cree la siguiente transaccin.
En caso contrario, ignore lo que sigue pues ya viene implementado en el xpz.
27
Antes de continuar, congele la versin actual de desarrollo, para tener un respaldo del
estado actual de la KB.
Nota importante: asegrese, cuando finalice la importacin de todos los objetos del
GAM, que la propiedad Enable Integrated Security haya quedado efectivamente en
True. Si no es as, pngala nuevamente en True y presione Install nuevamente.
28
Observar:
Hacer Rebuild All (tomar su tiempo) y luego F5. Confirme que desea crear la base de
datos del GAM:
Nota: Se requiere el driver MySQL para .NET (libmySQL.dll ) para poder crear la base de datos del
GAM contra MySql. Si no est prototipando con .NET (en ese caso ya la tiene), asegrese de
instalarla en C:\Windows\SysWOW64 si su CPU es de 64 bits y en C:\Windows\System si es de 32
bits, desde el siguiente link: http://sourceforge.net/projects/mysqldrivercs. Ver ms informacin en
el wiki: http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?2041
Ejecutar la aplicacin en el Smart Device o emulador. Ver que como pantalla inicial,
ahora aparece la de login. Ingresar con los siguientes datos de login:
User: admin
Password: admin123
29
Ejecutar el Developer Menu, e intentar acceder a una Transaccin. No podr, sin pasar
antes por el Login. Prubelo.
Desde el Developer Menu ejecutar el Web panel GAM Home y observar el Backend
para administrar la Seguridad
30
31
Nota: Al ingresar al Dashboard, primero seleccionar Menu/Logout para desloguear el usuario que se
haba usado anteriormente. Si tiene el estilo de navegacin Slide, cmbielo al Default, y pruebe.
Queremos que toda la aplicacin, a excepcin de la parte que requiere autenticacin (en
nuestro caso, los settings del evento) pueda ejecutarse offline. Implemntelo.
Para ello:
Configurar en el Dashboard la propiedad Connectivitiy Support = Offline
Configurar en la Transaccin EventSetting la Connectivitiy Support = Online
Y tambin el panel EventTweets.
Recordar que el login del GAM solo se puede realizar desde un objeto Online.
Hacer un Rebuild All y verificar que se crea el objeto Offline Database indicando
cules sern las tablas que se crearn en el dispositivo.
Configurar el mecanismo de Sincronizacin de datos (Propiedades para el Send y
Receive) que desee. Es decir, cundo desea enviar los datos (en nuestro caso, los que
se puedan haber ingresado/actualizado/eliminado en el dispositivo a travs de los Work
With que s tienen los modos de Edit disponibles vimos que Session no lo tiene) y
cundo y cmo recibir datos del servidor cuando se est conectado.
Ejecutar la aplicacin (recuerde que deber necesariamente ejecutarla compilada. No
podr utilizar el KBN) y observar que se realiza la carga de datos en la base de datos
local del dispositivo.
32
33