Etiqueta

21 octubre 2015

Uso del Servidor de Sincronización Omnis

El “Omnis Synchronization Server” hace posible que una base de datos SQLite localizada en un dispositivo remoto (mantenida mediante una solución jsClient) pueda ser sincronizada con cualquier base de datos compatible, situada en un servidor.

En éste artículo mostramos su funcionamiento, usando para ello la librería de demostración denominada “syncdemo” la cual podrá encontrar lista para su descarga en Aula Omnis. La librería ha sido optimizada para dispositivos móviles iOS, pero puede ser fácilmente adaptada para su uso en otras plataformas.

 

Requerimientos


Para realizar lo expuesto en éste artículo, necesitará disponer de Omnis Studio 6.1 o superior, con capacidad para activar la propiedad “$serverlessclient” de los “remote form”. Propiedad necesaria para poder construir aplicaciones móviles independientes.

 

Configuración del “Synchronization Server”


Para conectar el “Synchronization Server” a una base de datos, debemos en primer lugar, definir una sesión específica en el “SQL browser”. Nuestro ejemplo está preparado para su uso con una base de datos SQLite, a continuación mostramos como configurarla.

 

Configurando la sesión


Seleccione “SQL Browser” desde el “Studio Browser”, haga clic sobre el hipervínculo “Session Manager” y después sobre “New Session”. Construya  una nueva sesión con el nombre “SYNCDEMO” tal y como mostramos a continuación, para terminar pulse OK.

 

Configurando el “Synchronization Server”


Abra el “Synchronization Server” desde la opción de menú “Tools≥≥Add-Ons”. Desde la pestaña “CDB Config” seleccione la sesión construida anteriormente y denominada “SYNCDEMO”, a continuación pulse “Save Details”, seguido de “Connect”.



Desde la pestaña “Sync Groups” añada dos grupos con los nombres “group1” y “group2”. Ambos con la palabra “syncdemo” como contraseña (no incluya las comillas).



En la pestaña “CDB Tables” active “Sync” y “SSR” para la clave primaria “nat_ID” de la tabla “naturetable” y finalmente pulse “Save Changes”.



 

Probando la conexión


Si la conexión con SQLite ha tenido éxito, se habrá abierto la sesión “CDBSESS” sobre el “SQL Browser”, permitiendo el acceso a los datos de “syncdemo” y la posibilidad de probar el “remote form” “jsServer”, para ello, haga clic derecho sobre el “remote form” y seleccione la opción “Test Form”.




Tenga en cuenta, que para poder ver correctamente la información de la pestaña “Map View” deberá disponer de una “Google ApiKey” activa y fijada sobre la propiedad “$apikey” del control “map” situado en el “remote form” “jsServer”.

 

Configurando las conexiones desde los clientes


Para poder recibir conexiones desde los clientes, deberá previamente determinarse el puerto del servidor sobre el que Omnis estará a la escucha, para ello, haga clic sobre el hipervínculo “Prefs” y localice la preferencia “$serverport”.

Por último, será necesario crear la página HTML “jsClient.htm” que utilizará la aplicación cliente cuando esté en modo “on-line”. Para ello, haga clic sobre el “remote form” “jsClient” y seleccione “Test Form”, esto causará la creación automática del fichero “jsClient.htm” sobre la carpeta “html” (situada en el directorio raíz de instalación Omnis) además será abierta sobre el navegador web. Tenga en cuenta que éste “remote form” no es funcional en éste momento, puesto que no está siendo ejecutado sobre el dispositivo del cliente, sólo hacemos esto con la intención de que se generé la pagina “html” de forma automática, de modo que simplemente cierre el formulario.

 

Construcción de la aplicación cliente “JavaScript Wrapper App”


Para activar la capacidad de sincronización en un dispositivo móvil, deberemos configurar y compilar la aplicación utilizando el “wrapper” Omnis JavaScript, disponible desde la página web de TigerLogic.

Consulte la información sobre su configuración y uso, como aplicación independiente desde en ésta misma página web, su dirección es:  (http://www.tigerlogic.com/tigerlogic/omnis/documentation/wrappers.jsp):

Edite el “wrapper”, y modifique las entradas que mostramos a continuación del fichero de configuración “config.xml”, donde “99.99.99.99” es la dirección IP de su servidor de sincronización Omnis y “1234” el puerto especificado en ese mismo servidor (tal como se ha descrito anteriormente en éste mismo artículo), recuerde que deberá usarse el esquema del “wrapper” específico para SQLite, concretamente el denominado “OmnisJSWrapper_SQLite” .
≤SettingsOnlineMode≥0≤/SettingsOnlineMode≥
≤ServerOmnisWebUrl≥http://99.99.99.99:1234≤/ServerOmnisWebUrl≥
≤ServerOnlineFormName≥jschtml/jsClient.htm≤/ServerOnlineFormName≥
≤ServerOfflineFormName≥jsClient≤/ServerOfflineFormName≥
≤ServerOmnisServer≥≤/ServerOmnisServer≥
≤ServerOmnisPlugin≥≤/ServerOmnisPlugin≥
≤ServerAppScafName≥syncdemo≤ServerAppScafName≥

Conexión desde la “app” cliente, al servidor de sincronización


La primera vez que ejecutemos la aplicación o “wrapper”, nos aparecerá el mensaje “no such table: naturetable”. Lo cual significa, que la tabla aún no existe en el dispositivo cliente, ya que aún no se ha producido su sincronización con el servidor.

Use la pestaña “Settings” de la aplicación cliente, para indicar la dirección del servidor de sincronización, además del grupo y su contraseña para su identificación en el servidor de sincronización (tal como hemos visto anteriormente) y pulse “Save”.



Asegúrese de que la ventana “Synchronization Server” este abierta sobre el servidor para así poder observar las conexiones entrantes y a continuación, pulse el botón “Syncinit” del cliente, seguidamente observe las entradas que se producen en el registro de la sincronización del servidor.



Una vez finalizada la sincronización, sitúese en su dispositivo sobre la pestaña “Data” y pulse “refresh”, esto causará que los datos del dispositivo se sincronicen con los del servidor.


Ahora podremos agregar nuevos registros o editar los ya existentes en nuestra base de datos SQLite local, es decir la ubicada en el dispositivo y después sincronizarla con el servidor, para ello deberemos hacer clic sobre el botón “Sync”.


Si nos situamos sobre la pestaña “Cache” antes de pulsar el botón “sync” podremos ver las solicitudes pendientes de sincronizar, junto con la lista de tablas existentes en el dispositivo. La pulsación (en éste momento) del botón “Sync” actualizará la base de datos del servidor y borrará la memoria caché.



Si así lo desea esta pestaña, puede ser fácilmente ocultada editando el “remote form” denominado “jsClient”, para establecer el valor inicial de la variable “iShowCache” a kFalse.

No hay comentarios: