aplicaciones offline sd conceptos avanzados
TRANSCRIPT
#GX3199
Aplicaciones Offline para Smart Devices: Conceptos avanzados
Marcos Crispino
@mcrispino
#GX3199
#GX3199
Offline
#GX3199
TEMASObjeto Offline Database
Generaciónde código
Escenarios avanzados
Sincronización
Objeto Offline Database
#GX3199
Condiciones y eventos
• Conditions
• Event Start
• Navegación
#GX3199
Creación de la base de datos
• Generación de los programas
• Ejecución en el dispositivo
• Solo creación
• Opción de precarga de datos
#GX3199
Base de datos local
• SQLite
• Integridad transaccional
• Transacciones son bloqueantes
#GX23
TEMASObjeto Offline Database
Generación de código
#GX3199
Online vs. Offline
• Eventos Start, Refresh y Load
• Eventos de usuario
• Procedures y Data Providers
• Business Components
#GX3199
Ejecución en dispositivos
• Acceso a datos (for each, new)
• Estructuras de control (if, while, etc.)
• Operaciones
• Funciones del lenguaje
#GX3199
Seguridad con GAM
• Credenciales en el servidor
• Opción de Login solo Online
• Usuario autenticado Offline
• Consulta de datos del usuario Offline
• Solo autenticación
#GX3199
TEMASObjeto Offline Database
Generaciónde código
Escenarios avanzados
#GX3199
Aplicación full offline
• Nunca se conecta al servidor
• Datos precargados o generados por el usuario
• Ejemplo: aplicación de finanzas personales
#GX3199
Aplicación basada en servicios
• No necesita “backend”
• Requiere de servicios externos
• Puede o no tener datos locales
• Ejemplo: Find My Plane
#GX3199
TEMASObjeto Offline Database
Generaciónde código
Escenarios avanzados
Sincronización
#GX3199
Sincronización
Receive
Send
#GX3199
Propiedades
#GX3199
Receive
• Automática o Manual
• Data Synchronization Criteria
• Minimum Time Between Synchronizations
• Synchronization.Receive()
• Por tabla o por registro
• Data Synchronization Granularity
#GX3199
Receive: by row
• Tablas auxiliares en el servidor
• Versión de los datos en el cliente (hash)
• Juego de datos por hash en el servidor
#GX3199
Receive: by row
Dispositivo ServidorClientes[ {id=1, nombre=A}, {id=2, nombre=B} ]
Hash
3458145ae23490fb142
Clientes[]
Clientes, 3458145ae23490fb142[ {id=1, nombre=A}, {id=2, nombre=B} ]
Clientes[ {id=1, nombre=D}, {id=2, nombre=B},{id=3, nombre=C} ]
Hash
e59274ac5d5923b6efa8
INS: {id=3, nombre=C}UPD: {id=1, nombre=D}DLT: {id=2}
Clientes, e59274ac5d5923b6efa8[ {id=1, nombre=D}, {id=3, nombre=C} ]
3458145ae23490fb142
#GX3199
Receive: filtrado de datos
• Conditions en el objeto Offline Database
• Se aplican antes de calcular el hash de la
tabla
• Parámetros:
• Información del dispositivo
• Usuario de GAM
#GX3199
Send
• Solo Business Components
• Tabla auxiliar en SQLite
#GX3199
Send: cuándo
• Propiedad Local Changes Processing
• When Connected
• User Defined: Synchronization.Send()
#GX3199
Send: mapeo de claves
• Claves autogeneradas
• Usadas como Foreign Key en otras tablas
• Cambian de valor en el servidor
• Actualización en la respuesta
#GX3199
Send: mapeo de claves
Cliente: {CliId=1,...}Factura: {..., CliId=1, ...}
Dispositivo Servidor
Cliente: {CliId=1,...}Factura: {..., CliId=1, ...}
Cliente: {CliId=24,...}
Factura: {..., CliId=24, ...}
INS
INS
Factura: {..., CliId=24, ...}Cliente: {CliId=1 => 24}Factura: {CliId=1 => 24}
#GX3199
Send: manejo de errores
• Respuesta de error
• SynchronizationEventsAPI
#GX23
TEMASObjeto Offline Database
Generaciónde código
Escenarios avanzados
Sincronización