aplicaciones offline sd conceptos avanzados

Post on 19-Jun-2015

1.090 Views

Category:

Documents

7 Downloads

Preview:

Click to see full reader

TRANSCRIPT

#GX3199

Aplicaciones Offline para Smart Devices: Conceptos avanzados

Marcos Crispino

@mcrispino

mcrispino@genexus.com

#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

#GX23

www.genexus.com/encuentro

@mcrispino#GX3199

top related