SlideShare una empresa de Scribd logo
1 de 35
#GX3198
Aplicaciones Offline para
Smart Devices
Leonardo Piñeyro
Production Team, GeneXus
Arquitectura y desarrollo con GeneXus
@leopiney
#GX23
¿Offline?
#GX23
Offline
¿Por qué?
#GX23
Offline: Escenarios
‣App de finanzas personales
‣Fuerza de ventas: Sales force
‣App de eventos
#GX23
Offline
Arquitectura
Offline: Arquitectura
Device
•UI: Layouts, UserControls
•Local Actions
KBKB
Build online HTTP - REST Services (json)
Web Server
•Procedures, Data Providers
•Business Components
•Oracle
•MSSQL
•MySQL
•Db2
•etc
Offline: Arquitectura
Device
•UI: Layouts, UserControls
•Local ActionsKBKB
Build offline
Web Server
•Procedures, Data Providers
•Business Components
SQLite
#GX23
Desarrollo de aplicaciones
offline con GeneXus
#GX23
Requerimientos
Desarrollo con GeneXus
#GX23
No funciona con KBN
Desarrollo con GeneXus
Requerimientos
Los mismos requerimientos que para generar
aplicaciones Online
#GX23
Desarrollo con GeneXus
Connectivity Support Property
#GX23
‣Online
‣Offline
‣Inherit
Desarrollo con GeneXus
Connectivity Support Property
Desarrollo con GeneXus
Connectivity Support Property
#GX23
Desarrollo con GeneXus
Offline Database Object
Desarrollo con GeneXus
Offline Database Object
Dashboard
WWSD
Sessions
WWSD
Speakers
WWSD Tweets
Session Speaker Tweet
ConnectivitySupport: Offline
Offline
Database
Desarrollo con GeneXus
Offline Database Object
Dashboard ConnectivitySupport: Offline
ConnectivitySupport: Online
WWSD
Sessions
WWSD
Speakers
WWSD Tweets
Session Speaker Tweet
Offline
Database
Desarrollo con GeneXus
Offline Database Object
#GX23
#GX23
Sincronización
#GX23
Sincronización
Network API
#GX23
Sincronización
Network API
NetworkAPIConnectionStatus
Domain
Name Description Value
None None 0
Wifi Wifi 1
WAN WAN 2
IsServerAvailable():boolean Method
Type():NetworkAPIConnectionStatus Method
#GX23
Sincronización
Sincronización Manual
Sincronización
Sincronización Manual
#GX23
Sincronización
Synchronization API
#GX23
Sincronización
Synchronization API
Receive(): Recibe un subconjunto de datos desde el servidor.
Send(): Envía los datos del dispositivo al server.
Sincronización
Synchronization API
#GX23
Sincronización
Sincronización Automática
#GX23
Sincronización
Sincronización Automática
Data Synchronization Criteria property
ManualAutomatic
Minimun Time Between
Synchronizations
Sincronización
Sincronización Automática
#GX23
Demo
Demo
Sincronización
#GX23
De Online a Offline
De Online a Offline
#GX23
GENEXUS
OPORTUNIDADES
APLICACIONES OFFLINE
PARA SD
IDEAS!
#GX23
¡GRACIAS!
lpineyro@genexus.comLeonardo Piñeyro
@leopiney#GX3198

Más contenido relacionado

Similar a 067 aplicaciones offline_sd_arquitectura_y_desarrollo_con_genexus

Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions SpanishCDS
 
Overview evolution 3 4x3 - v2 - sin s
Overview evolution 3   4x3 - v2 - sin sOverview evolution 3   4x3 - v2 - sin s
Overview evolution 3 4x3 - v2 - sin sGeneXus
 
Tendencias Mobile - Neftali Segovia
Tendencias Mobile - Neftali SegoviaTendencias Mobile - Neftali Segovia
Tendencias Mobile - Neftali Segoviafsolari
 
K2BWebPanelDesigner: La nueva solución para el desarrollo Web
K2BWebPanelDesigner: La nueva solución para el desarrollo WebK2BWebPanelDesigner: La nueva solución para el desarrollo Web
K2BWebPanelDesigner: La nueva solución para el desarrollo WebGeneXus
 
SD: arquitectura y plataformas.
SD: arquitectura y plataformas. SD: arquitectura y plataformas.
SD: arquitectura y plataformas. GeneXus
 
026 k2 b-tool_su_aliado_en_nuevos_proyectos_con_genexus
026 k2 b-tool_su_aliado_en_nuevos_proyectos_con_genexus026 k2 b-tool_su_aliado_en_nuevos_proyectos_con_genexus
026 k2 b-tool_su_aliado_en_nuevos_proyectos_con_genexusGeneXus
 
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBDTips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBDJuan Fabian
 
22-Oct-2019 Sevilla: Reunión D365UG & PowerPlatform
22-Oct-2019 Sevilla: Reunión D365UG & PowerPlatform22-Oct-2019 Sevilla: Reunión D365UG & PowerPlatform
22-Oct-2019 Sevilla: Reunión D365UG & PowerPlatformMiguel LLorca Gómez
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelImanol Iza Martin
 
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
 
Fuerza de ventas móvil utilizando tabletas Android e integrada con SAP
Fuerza de ventas móvil utilizando tabletas Android e integrada con SAPFuerza de ventas móvil utilizando tabletas Android e integrada con SAP
Fuerza de ventas móvil utilizando tabletas Android e integrada con SAPGeneXus
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsiveGeneXus
 
Planificando el Camino azure migracion
Planificando el Camino azure migracionPlanificando el Camino azure migracion
Planificando el Camino azure migracionIvan Martinez
 
Seminario Esri en Sevilla: Mapas Inteligentes con la Plataforma ArcGIS- 23 abril
Seminario Esri en Sevilla: Mapas Inteligentes con la Plataforma ArcGIS- 23 abrilSeminario Esri en Sevilla: Mapas Inteligentes con la Plataforma ArcGIS- 23 abril
Seminario Esri en Sevilla: Mapas Inteligentes con la Plataforma ArcGIS- 23 abrilEsri España
 

Similar a 067 aplicaciones offline_sd_arquitectura_y_desarrollo_con_genexus (20)

Azure Functions
Azure FunctionsAzure Functions
Azure Functions
 
Azure Functions Spanish
Azure Functions SpanishAzure Functions Spanish
Azure Functions Spanish
 
Introducción a Kendo UI
Introducción a Kendo UIIntroducción a Kendo UI
Introducción a Kendo UI
 
Overview evolution 3 4x3 - v2 - sin s
Overview evolution 3   4x3 - v2 - sin sOverview evolution 3   4x3 - v2 - sin s
Overview evolution 3 4x3 - v2 - sin s
 
Tendencias Mobile - Neftali Segovia
Tendencias Mobile - Neftali SegoviaTendencias Mobile - Neftali Segovia
Tendencias Mobile - Neftali Segovia
 
K2BWebPanelDesigner: La nueva solución para el desarrollo Web
K2BWebPanelDesigner: La nueva solución para el desarrollo WebK2BWebPanelDesigner: La nueva solución para el desarrollo Web
K2BWebPanelDesigner: La nueva solución para el desarrollo Web
 
SD: arquitectura y plataformas.
SD: arquitectura y plataformas. SD: arquitectura y plataformas.
SD: arquitectura y plataformas.
 
026 k2 b-tool_su_aliado_en_nuevos_proyectos_con_genexus
026 k2 b-tool_su_aliado_en_nuevos_proyectos_con_genexus026 k2 b-tool_su_aliado_en_nuevos_proyectos_con_genexus
026 k2 b-tool_su_aliado_en_nuevos_proyectos_con_genexus
 
Momo mobile webwidgets
Momo mobile webwidgetsMomo mobile webwidgets
Momo mobile webwidgets
 
Mobile Web & Widgets
Mobile Web & WidgetsMobile Web & Widgets
Mobile Web & Widgets
 
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBDTips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
Tips en la instalación de Dynamics 365 Finance and Operations On Premise - LBD
 
22-Oct-2019 Sevilla: Reunión D365UG & PowerPlatform
22-Oct-2019 Sevilla: Reunión D365UG & PowerPlatform22-Oct-2019 Sevilla: Reunión D365UG & PowerPlatform
22-Oct-2019 Sevilla: Reunión D365UG & PowerPlatform
 
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivelSPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
SPS Madrid 2019 - Eleva tu aplicaciones de PowerApps a otro nivel
 
Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!Construya las aplicaciones del futuro ¡hoy!
Construya las aplicaciones del futuro ¡hoy!
 
Fuerza de ventas móvil utilizando tabletas Android e integrada con SAP
Fuerza de ventas móvil utilizando tabletas Android e integrada con SAPFuerza de ventas móvil utilizando tabletas Android e integrada con SAP
Fuerza de ventas móvil utilizando tabletas Android e integrada con SAP
 
Aplicaciones Net
Aplicaciones NetAplicaciones Net
Aplicaciones Net
 
Aplicaciones Net
Aplicaciones NetAplicaciones Net
Aplicaciones Net
 
La importancia de ser responsive
La importancia de ser responsiveLa importancia de ser responsive
La importancia de ser responsive
 
Planificando el Camino azure migracion
Planificando el Camino azure migracionPlanificando el Camino azure migracion
Planificando el Camino azure migracion
 
Seminario Esri en Sevilla: Mapas Inteligentes con la Plataforma ArcGIS- 23 abril
Seminario Esri en Sevilla: Mapas Inteligentes con la Plataforma ArcGIS- 23 abrilSeminario Esri en Sevilla: Mapas Inteligentes con la Plataforma ArcGIS- 23 abril
Seminario Esri en Sevilla: Mapas Inteligentes con la Plataforma ArcGIS- 23 abril
 

Más 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
 
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
 
¿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
 
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
 

Más 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
 
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...
 
¿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
 
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
 

067 aplicaciones offline_sd_arquitectura_y_desarrollo_con_genexus

Notas del editor

  1. Quería contarles una anécdota de app de Finanzas que usaba para manejar Ingresos y Egresos de dinero de mis cuentas. Estaba muy completa, muy prolija, era la primer app de este tipo que usaba, pero hasta que, un día estaba en bus volviendo a casa y no funcionó, y era porque no tenía conexión en mi dispositivo, y ahí me dí cuenta que por lo menos a mí esta aplicación no ya me servía, porque no podía estar pendiente todo el tiempo de tener conexión para poder usar la aplicación, lo esperado era que pudiera ingresar registros en cualquier momento y de cualquier forma y luego, si tengo conexión, poder sincronizar con mi usuario en el servidor si fuese necesario. Quería comentarles esta historia porque creo que viene al tema de este tema que estamos llamando Aplicaciones offline
  2. Entonces ¿A qué nos estamos refiriendo cuando hablamos de offline? “ Offline” no significa “siempre se trabaja sin conexión” , sino que estamos más especificamente hablando de “Aplicaciones eventualmente conectadas”. Funcionan en cualquier momento, y cuando se vuelven a conectar puede cambiar el flujo o la disposición de otras funcionalidades de la aplicación. Pero nos viene la siguiente pregunta
  3. Por qué? Cómo surge esto? Para qué queremos aplicaciones que funionen en estos escenarios? Si bien las posibilidades de estar conectado a internet desde nuestros Smart Devices es más común día a día ya sea por la accesibilidad de contratar servicios 3G, o el aumento de lugares con wifi, existen escenarios donde la no-conectividad es una posibilidad y es bueno que adaptar nuestras aplicaciones para que puedan seguir funcionando de manera productiva: Que se puedan hacer Alta-Baja-Modificación sin depender de un servidor Web. Porque al usuario final le resulta mucho más cómodo, no tiene que estar pendiente de su conexión cuando usa una aplicación.
  4. Aquí les presento algunos escenarios básicos de estas aplicaciones. 2 - Destaco el escenario Point of sales, en el cual tenemos como ejemplo la aplicación de Conaprole. Aquí es una necesidad que funcione sin conexión pues si no puedo generar registros en algún momento es una ganancia que estoy perdiendo. 3 - Aplicación de eventos, como la que muchos de ustedes deben tener en sus dispositivos Android o iOS, no es necesario tener conexión para ver las charlas si ya tienen la aplicación sincronizada. Cuando se conecten de vuelta su aplicación se puede sincronizar por cambios hechos en el servidor en cualquier momento.
  5. Pasemos brevemente a ver cómo se modelan este tipo de aplicaciones
  6. Hasta ahora teníamos esta arquitectura para la creación de aplicaciones Online. Componentes ruby, C# o java para manejar el servidor web, hay componentes de bases de datos, redes, servicios, manejo de Json, y generación de código nativo para los dispositivos ya sean Android e iOS. Hay mucha técnología de fondo en todo este tema.
  7. Cuando queremos modelar aplicaciones Offline nos queda de esta forma. La aplicación tiene su propia base de datos Lo que quiero destacar de este modelo es que ahora nuestros generadores SD están creando toda la lógica que teníamos en nuestro servidor web también en el dispositivo usando código nativo.
  8. Con la estructura en mente de lo que queremos hacer pasamos a cómo enfrentarnos con este tipo de problemas utilizando GeneXus. Quiero que vean de verdad lo fácil que es esto.
  9. La generación de aplicaciones offline para SmartDevices está soportada a partir de la versión Tilo de GeneXus y está disponible para los generadores Android e iOS
  10. Es importante mencionarles que para generar aplicaciones Offline estamos generando más código nativo. Por lo que, a diferencia de cuando prototipabamos aplicaciones Online utilizando la aplicación Knowledge Base Navigator, ahora es necesario tener la aplicación instalada en un dispositivo para poder utilizarla. Por lo que no funciona una aplicación Offline con KBN
  11. Para soportar la generación de aplicaciones Offline con GeneXus , existe una nueva propiedad a nivel de objetos en GeneXus la cual se llama Connectivity Support Property: Esta propiedad aplicada le indica al Generador si el objeto a generar va a tener comportamiento Online o Offline básicamente. Para eso la propiedad tiene 3 posibles valores:
  12. Online : Como se viene usando desde el Upgrade 2 , la aplicación se comunica únicamente con el servidor utilizando servicios Rest o HTTP Offline : Le da la pauta al generador de que la aplicación va a poder funcionar en ambientes de conectividad limitada o nula. La aplicación siempre se va a conectar con la base de datos interna al dispositivo. Inherit : Hereda la propiedad del objeto main que empezó el árbol de llamadas hasta el objeto. Nos vamos a centrar ahora en la propiedad Offline obviamente.
  13. Así es como empezamos el camino para generar nuestra aplicación offline para SmartDevices, simplemente eligiendo la opción Offline sobre el objeto Main de nuestra aplicación. Qué debemos hacer luego? Debemos compilar el objeto main con Connectivity Support Offline, y GeneXus va a hacer un análisis de impacto de tablas y elige qué tablas que van a quedar en la Base de datos Interna del dispositivo.
  14. Entonces luego de compilar objeto main que tiene Connectivity Support en Offline, GeneXus genera un nuevo objeto OfflineDatabase asociado al objeto main.
  15. Aquí tenemos cómo se muestra el objeto en el IDE y el análisis de impacto luego de hacerle build al objeto main con Connectivity Support en Offline. En esta KB de ejemplo tenemos 4 tablas, y las tablas que se GeneXus eligió son todas porque el objeto Main tiene referencias a estas tablas.
  16. Cómo sabe que tablas elegir? Según las referencias mediante objetos offline a tablas que tiene el objeto main. Se crean todas las tablas referenciadas y sus tablas extendidas. Acrordarse de que los demás objetos tiene ConnectivitySupport en inherit por defecto Es posible tener desde nuestra aplicación acceso a todas las secciones indicando cuales de ellas se estarán disponibles offline y cuales no utilizando la propiedad Connectivity Support
  17. Es este ejemplo vamos a ver qué pasa cuando existen objetos con diferentes valores en la propiedad ConnectivitySupport. Esta opción de elegir que información va a estar o no disponible offline nos da la libertad de decidir qué partes de nuestra aplicación van a poder funcionar offline o no. También tiene la opción de agregarle condiciones, con esto podemos decidir qué registros queremos que se guarde en la base de datos offline y que registros no. Un ejemplo básico puede ser que guarde únicamente los registros recientes, de hace una semana por ejemplo. De esta forma contenemos en nuestro dispositivo solo un subconjunto de todo lo que podría ser el servidor, que en ocasiones puede ser muy grande.
  18. Bueno hasta aquí podríamos decir que ya tenemos la aplicación Offline lista para generar . Y a es ejecutable en sus dispositivos , se puede hacer Alta/Baja y Modificación de registros estando desconectado. Pero nos está faltando el último y quizas más importante elemento de las aplicaciones de este tipo que es la sincronización
  19. La sincronización es una funcionalidad fundamental en este tipo de aplicaciones . En este paso vamos a decidir qué pasa cuando modificamos o agregamos registros en nuestro device estando offline, y luego nos conectamos. Qué pasa con esos registros nuevos? Por el otro lado, mientras estaba offline, se pudieron agregar registros nuevos en el servidor, por lo que yo quisiera t ener actualizada mi base de datos al volverme a conectar .
  20. Para empezar con la sincronización , debemos primero saber en que estado de conectividad se encuentra el dispositivo. Para ello introducimos una nueva API, llamada NetworkAPI
  21. La NetworkAPI cuenta con un dominio nuevo llamado NetworkAPIConnectionStatus el cual cuenta con 3 valores 0,1 y 2 para indicar conectividad Nula, wifi o WAN respectivamente. A su vez tenemos la propiedad ApplicationServerURL que nos devuelve la propiedad ServiceURL que está a nivel de el Generador de Smart Devices. Y los métodos IsServerAvailable, que nos da verdadero si el ServiceURL está accesible Y el método Type que nos dice en qué estado de conexión se encuentra el ServiceURL
  22. Usando la Network API es posible ahora saber cuándo uno puede o no sincronizar con el servidor. Cómo logramos hacer la sincronización?
  23. Es posible el uso de Procedimientos y DataProviders expuestos como WebServices o servicios REST. Y programar manualmente toda la lógica de sincronización de las tablas del Device con las tablas del servidor. Para los que tengan su propio mecanismo de sincronización quiero que sepan que es posible, pero para aquellos que no quieran pasar trabajo, GeneXus tiene una nueva API llamada Synchronization
  24. Esta API nos va a ahorrar horas y horas de programación sobre el tema de sincronización.
  25. Synchronization API tiene dos métodos RECEIVE(): Los datos son definido por las conditions del objeto OfflineDatabase del main object. SEND(): Los datos que el dispositivo envia al server corresponden a todos los Business Components salvados desde el último envío. Las actualizaciones realizadas mediante procedimientos no son enviadas.
  26. Estos métodos hacen la sincronización hacia los dos lados automáticamente, de todas formas, lo seguimos llamando Sincronización Manual, por qué? Porque es el desarrollador que indica cuándo realizar la sincronización. Y capaz que ahora alguien se está preguntando, puede ser más fácil que escribir 7 líneas? tengo que escribir 7 lineas de código para hacer toda la sincronización entre cada una de las tablas de mi dispositivo y las del servidor, teniendo cuidado con las modificaciones que se hicieron, contemplando problemas de sincronización como el tema de los registros con atributos identificadores, entre una infinidad de cosas mas? Puede ser más fácil? Y la respuesta es sí.
  27. GeneXus, a partir de la versión Tilo Beta2 que será liberada a fines de Octubre, tiene incluido propiedades que hacen que ustedes no tenga que hacer nada para que su dispositivo se sincronice con el servidor.
  28. Tenemos esta propiedad, que está en las propiedades del objeto OfflineDatabase que nos va a ahorra más horas y horas de desarrollo. Data Synchronizaction Criteria Por defecto en Automatic, deja habilitada otra propiedad llamada Minimun time between Synchronizations con la cual especificamos cada cuántos segundos se va a sincronizar nuestro dispositivo con el servidor. En definitiva, se van a ejecutar los mismos métodos Receive() y Send(), de forma automática en un intervalo especificado por la propiedad Minimun time Between Syncronizations.
  29. Les quise presentar el tema de sincronización de esta manera, porque la verdad quiero que se lleven esto, quiero que vean lo fácil que es aplicar esta funcionalidad en nuestra aplicación, básicamente, una vez más con GeneXus estos problemas gigantes ser resuelven activando una propiedad sobre un objeto determinado. Es tan simple que hasta la propiedad por defecto es Automatic, o sea que únicamente cambiando la propiedad ConnectivitySupport del objeto main a Offline, ya queda su aplicación funcionando Offline, y con sincronización automática integrada, sincronizándose cada 600 segundos
  30. Ahora quería presentarles una demostración de cómo funciona la sincronización:
  31. Por último pasemos a ver cómo pasar una aplicación que ya tienen Online a Offline.
  32. Para empezar, lo primero que deberían hacer es cambiarle la propiedad ConnectivitySupport del main object de su aplicación a OFFLINE Y bueno ahí tienen ya su aplicación funcionando Offline. Qué quiero decirles con esto? La versión Tilo de GeneXus está todavía en fase beta, y con esto pueden sin ningún problema desarrollar sus aplicaciones usando GeneXus Evolution 2. Lo único que tienen que hacer es configurar las popiedades Connectivity Support de los objetos que concideren que se van a ejecutar Offline o Online. El resto lo hace GeneXus automáticamente.
  33. Quiero que de verdad se lleven esto en mente, que es con GeneXus esto es muy fácil, estamos hablando de solucionar problemas enormes cambiando el valor de una propiedad de un objeto. Hacer todo esto de otra forma llevaría mucho trabajo y tiempo. Por el otro lado si ya tienen sus aplicaciones funcionando Online pasarlo a Offline es igual de simple. Así que los invitamos a que le presten atención a este tema, puede ser un componente muy importante o esencial para sus aplicaciones. Quiero que se vayan sabiendo que esto les da nuevas oportunidades a ustedes porque habilita nuevos escenarios a cubrir. Quiero que tengan en mente que con Genexus se puede todo esto. Y quiero que sepan que con todo esto y sus ideas, con respecto a SmartDevices ahora tienen todo para hacer la diferencia. Muchas gracias y cualquier consulta espero que los pueda ayudar
  34. CallToAction(&Gracias)