{{indexmenu_n>1}} ====== XOneLive ====== Este Componente de la plataforma XOne, es el encargado de gestionar la transmisión y ejecución de las instalaciones y actualizaciones. Esta herramienta tiene una parte CLIENTE y una parte SERVIDOR. * En el cliente, puede estar embebido en el Framework, o puede ser un proceso independiente (Caso de Android y Windows Mobile). * En el Servidor, es un webservice.\\ \\ El xonelive está ligado a otros componentes de la plataforma a la hora de gestionar las actualizaciones (Provisioning para generar la Base de Datos y xonemanager para generar las actualizaciones), aunque puede funcionar individualmente.\\ \\ El xonelive del server, está esperando a la llamada que realice el xonelive del Cliente, enviando el PIN/IMEI/DEVICEID del dispositivo, el Web Service, revisa en la estructura de carpetas que hay en el server, para ver si dispone de actualizaciones pendientes para dicho dispositivo. \\ Si hubiera actualizaciones pendientes, empezaría a enviarlas hasta que todas hayan sido ejecutadas y confirmadas de forma correcta. ===== Esquema Visual ===== {{ :e.-gestor-dispositivos:e03.-xonelive:xonelive_esquema_servidor.png?nolink |}} {{ :e.-gestor-dispositivos:e03.-xonelive:xonelive_esquema_cliente.png?nolink |}} ===== Prioridad de Actualizaciones ===== El orden de descarga de las actualizaciones **NO ES POR FECHA DE CREACIÓN**, es el siguiente: - Actualizaciones Generales (Mayor prioridad). - Actualizaciones de su Plataforma (Android, Iphone, blackberry, Windows Mobile...). - Actualizaciones propias para ese dispositivo (Menor prioridad). **Para evitar errores**, las actualizaciones generales deberían borrarse cuando ya se las hayan descargado TODOS los dispositivos y hemos de tener en la carpeta de instalación la última versión actualizada de la aplicación. ===== Fichero de Configuración WEB.CONFIG ===== …………… ===== Fichero UPDATES.XML ===== Este fichero se incluye en cada actualización que se realiza, y contiene las instrucciones que deberá seguir el xonelive para procesar la actualización.\\ \\ A continuación se exponen las diferentes instrucciones que tenemos a nuestra disposición a la hora de hacer una actualización. INSERT INTO GEN_CLIENTES (NOMBRE) VALUES ('PRUEBA INSERCION 1'); INSERT INTO GEN_CLIENTES (NOMBRE) VALUES ('PRUEBA INSERCION 2'); ===== MACROS disponibles en UPDATES.XML ===== ^ Macro ^ Valor ^ | **{win}** | \Windows | | **{winsys}** | \Windows | | **{Windows}** | \Windows | | **{}** | Ruta de xonelive | | **{root}** | Raiz del dispositivo | | **{currentpath}** | Donde se descomprimen los ficheros | | **{apppath}** | Donde está el Framework, en WM clave del registro cgmobilepath, por defecto: "\Archivos de Programa\CGMobile" | | **{%CE1%}** | Carpeta de sistema \Archivos de Programa | | **{%%CE1%%}** | Carpeta de sistema \Archivos de Programa | | **{programfiles}** | Carpeta de sistema \Archivos de Programa | Con estas macros se puede 'jugar', por ejemplo: "{programfiles}\CGSoft\CGMobile".... ===== Base de Datos. LOG. ===== En Base de datos, tenemos 2 tablas, **tanto en la BD del proyecto en cuestión, como en la BD del xonemanager**:\\ ==== Adm_XOneLive_Logs ==== En la tabla ADM_XONELIVE_LOGS (de la BD del proyecto) se van logueando TODAS las operaciones que va realizando el dispositivo. \\ \\ Para que esta tabla se rellene, hay que activar el log de los dispositivos a los que queremos hacerle el seguimiento, esto se hace con los parámetros limitrowlog y Log que están en el fichero WEB.CONFIG del xonelive:\\ \\ \\ |**limitrowlog** | Máximo número de registros de log por cada MID, en la tabla ADM_XONELIVE_LOGS. 0=infinito| |**Log** | A que MID se le activa el log.| \\ \\ Ejemplo web.config para dejar log en adm_xonelive_logs: …………… …………… …………… …………… **Ejemplos de valores para la clave "Log" del fichero web.config de xonelive:** \\ * Log=“0-999” : Para los dispositivos del 0 al 999, ambos inclusive. * Log=“2,3,7” : Para los dispositivos 2, 3 y 7 solamente. * Log=“2-5,10” : Log para los dispositivos 2, 3, 4, 5 y 10.\\ \\ En la BD del xonemanager, esta tabla NO se utiliza actualmente. {{ :e.-gestor-dispositivos:e03.-xonelive:adm_xonelive_logs.png?nolink |}} ==== Adm_XOneLive_Errorlog ==== \\ En la tabla adm_xonelive_errorlog de la BD del proyecto que sea, se van logueando únicamente los errores que se vayan produciendo y en la BD del xonemanager, se van logueando aquellas operaciones que están provocando error y no se puede determinar a qué proyecto pertenece el dispositivo. \\ {{ :e.-gestor-dispositivos:e03.-xonelive:adm_xonelive_errorlog.png?nolink |}} ===== IMPORTANTE. Solución de Errores ===== ==== Puerto por defecto ==== \\ XOnelive por defecto utiliza el puerto 80, si se quiere utilizar otro, en IIS se configurará el puerto que se quiera y en XOne, hay que configurarlo en el fichero web.config del xonemanager. ==== LOG de operaciones ==== El **log** del [[wiki:3.-servidor:3.6.-xonelive:xonelive]] se activa en el fichero web.config del [[wiki:3.-servidor:3.6.-xonelive:xonelive]], en el nodo appSettings. \\ El log se deja en las tablas adm_xonelive_errorlog (sólo errores) y adm_xonelive_logs de la base de datos de la aplicación. [[#base_de_datos_log|Más info]]. ==== Frecuencia ==== \\ XOnelive chequea en busca de actualizaciones cada cierto tiempo, que puede ser configurable. \\ **1.-** En ANDROID, por defecto cada hora, la frecuencia vendrá dada por la configuración que tenga el xonelive.\\ **2.-** En Windows Mobile, por defecto es cada media hora, aunque puede cambiarse (en minutos) en la clave del registro:\\ \\ [HKEY_LOCAL_MACHINE\SOFTWARE\CGSoft\XoneLive] Interval="30" ==== MultipleCheckLic: END o NULL ==== \\ Al montar un XOnemanager se nos puede dar el caso de provisionar un dispositivo y al intentar descargar la aplicación no se traiga nada. \\ \\ **Lista de cosas a comprobar:**\\ \\ **1.-** Ir a [[HTTP://IPDELSERVIDOR/xonelive/xonelivews.asmx]]\\ **2.-** Función multiplechecklic: Ponemos el PIN\IMEI\DEVICEID (según sea BB\ANDROID\IPHONE) de nuestro dispositivo.\\ \\ ** Si devuelve END:** \\ **1.-** Comprobar que la función checklic nos devuelva nuestra licencia.\\ **2.-** Tabla adm_provisioning_task tiene un registro para ese MID con STATUS=1. Ponerlo a 0\\ **3.-** Lanzar la siguiente SQL sustituyendo **-DEVICE-** por nuestro PIN\IMEI\DEVICEID: \\ SELECT e.ID, d.PIN, k.NAME as COMPANYNAME, a.NAME as APPNAME, a.DBPREF, b.ICON, a.ENABLE, e.DEVICE_RINTERVAL, b.VERSION, e.DEVICE_VERSION, a.ENABLE AS DEVENABLE, e.DEVICE_USERID, e.DEVICE_LOGIN, e.DEVICE_PASSWORD, e.DEVICE_PWDEXPIRE, b.MAPPINGS_XML, b.APPWIZARD_XML, b.REPLICATOR_XML, e.LIC, a.CMD_URL, a.REPLICA_URL, b.INSTALL_SQL, a.SERVER_LIC, f.DEVICE_TYPE, g.MODEL FROM adm_application a, adm_application_repository b, adm_devices d, adm_devices_application e, adm_company k, adm_devices_plataform f, adm_devices_model g, master_replica_slave s WHERE a.ID = b.IDAPPLICATION AND e.IDREPOSITORY = b.ID AND e.IDDEVICE = d.ID AND d.IDCOMPANY = k.ID AND d.IDMODEL=g.ID AND g.IDPLATAFORM=f.ID AND e.LIC=s.SERIAL AND (a.ENABLE <> e.ENABLE OR e.DEVICE_VERSION <> b.VERSION) AND (s.PENDIENTE IS NULL OR s.PENDIENTE=0) AND d.PIN='-DEVICE-' Esta SQL tiene que devolver nuestro dispositivo, si **NO** lo hace, **alguna condición NO se está cumpliendo**, comprobarlas todas.\\ \\ ** Si devuelve NULL:** \\ **1.-** Comprobar que la función checklic nos devuelva nuestra licencia.\\ **2.-** Comprobar que la ruta de ficheros en el web.config de xonemanager, sea la correcta.\\ **3.-** Comprobar que la ruta de ficheros en la tabla adm_databases sea la correcta.\\ **4.-** Comprobar que existe el directorio de carpeta de esa ruta de ficheros.\\ **5.-** Comprobar permisos de esa ruta de ficheros (SERVICIO DE RED / NETWORK SERVICES control total).\\ **6.-** Comprobar el web.config del xonelive, clave key="xonemanagerurl" (Conexión con xonemanager). Mirar PUERTO del IIS.\\ ==== MultipleCheckLic funciona y CheckLic o CheckLic2 NO ==== \\ Revisar que el SQL SERVER o el DBMS de turno permita conexiones por IP, comprobar que las cadenas de conexión del xonemanager y el xonelive son iguales en los respectivos WEB.CONFIG. El providername es CASE SENSITIVE, p.ej:providerName="mysql.Data.mysqlclient" \\ **NOTA:** En los 4 últimos puede ponerse como parámetro la dirección a la que tiene que enviar, siempre que se tenga instalado en el servidor la web para recepcionar los datos. En el caso de que no se especifique ninguna dirección, será enviado a las oficinas centrales de XOne. Estos últimos métodos devuelven 0 si el envío fue OK y -1 si se produjo algún error, como que por ejemplo no haya conectividad. \\ ==== Lanzar XOneLive ==== \\ Para poder iniciar el XOneLive desde el framework: \\ function lanzarXOneLive() If appData.GlobalMacro("##DEVICE_OS##") = "android" Then Set intent = CreateObject("AndroidIntent") intent.SetClassName "com.xone.android.framework", "com.xone.live.services.CheckServiceStatus" intent.SetAction "android.content.Intent", "ACTION_VIEW" intent.StartActivity Set intent = nothing End If end function \\ Donde pone **SetClassName** hay que especificar el nombre de la aplicación.