When the solution matters*

| Clientes | Historias de éxito | Buscador de soluciones | Perfiles |

Pocket Aurin

Cómo llevar sus datos 4D en el bolsillo
Por Vicente Gras - Digital Somnis S.L.

 

Vicente Gras comercializa una solución completa de Joyería hecha en 4D mediante su empresa Digital Somnis ubicada en la provincia de Valencia. Su solución propone un modulo de sincronización con Pocket PC que permite a sus clientes utilizar su PDA como si fuese una máquina cliente con 4D Client. Nos pareció sumamente interesante pedirle contar su experiencia acerca de este tema relacionado con preguntas que frecuentemente nos hacen los desarrolladores.

 

Vicente Gras "La comunicación entre una aplicación 4D y una aplicación PocketPC, en principio, no es algo trivial. Después de Googlear un poco podemos encontrar algún plugin que nos permita acceder a las bases de datos de Contactos, Tareas, etc de Pocket Outlook. De hecho, no resulta difícil encontrar incluso algo de código C fácilmente plugineable para realizar estas tareas.

Parece que La Red se empeña en que los programadores de 4D lo único que podemos hacer con un PDA es usarlo de agenda y poco más. No obstante, lo que realmente necesitamos los programadores 4D es una herramienta que nos permita, de manera sencilla (o incluso no tanto) enviar y recibir datos de nuestra aplicación 4D a una aplicación PocketPC.

La solución ideal sería una versión de 4D sobre PDA (¿Qué tal suena ésto, señores de 4D?). Mientras esperamos esta solución tenemos algunas opciones más o menos interesantes.

Pocket Aurin

Cuando empecé a plantear el desarrollo de Pocket Aurin me di cuenta de que la sincronización con 4D iba a resultar un problema serio. Pocket Aurin es una versión PocketPC de Digital Aurin, una aplicación desarrollada sobre 4D orientada al Sector Joyero.

Pocket Aurin debía permitir a los Representantes realizar toda la gestión de Ventas Externas en casa del Cliente y posteriormente volcar los datos (Albaranes, Cobros realizados, Género en Condicional, Clientes nuevos, etc) sobre Digital Aurin. A su vez, Digital Aurin debía proporcionar a Pocket Aurin toda la información sobre los Artículos distribuidos por el Representante, precios, descripciones, Tarifas, pesos, mermas, etc, así como los datos de los Clientes, sus saldos pendientes, etc. Incluso, ¿por qué no? podríamos incluir las imágenes de los Artículos proporcionando un Catálogo Digital.

Como plataforma de desarrollo PocketPC utilicé Microsoft.Net Compact Framework. La elección de esta plataforma es una cuestión de gusto personal. Podría usarse cualquier otra como eMbedded Visual C++ o Basic, o incluso cualquier plataforma Java.

El motor de Base de Datos “nativo” del Compact Framework es SQL Server CE, así que no tuve que pensar mucho para elegir el soporte de datos.

XML

La pieza clave en la comunicación Digital Aurin - Pocket Aurin tenía que ser, evidentemente, XML. XML es una de esas pequeñas joyas informáticas que siempre han estado ahí, disfrazadas o enmascaradas de alguna manera, y que en un momento determinado alguien las hace resurgir con fuerza. Lo cierto es que cualquier plataforma de desarrollo moderna tiene soporte para XML. Esto permite que dos plataformas tan distintas como 4D y Compact Framework se entiendan a la perfección.

Transporte

Perfecto, los datos iban a circular en formato XML, sin embargo, todavía tenía que decidir el mecanismo de transporte. Cada una de las aplicaciones debía ser capaz de generar y parsear datos XML, pero también tenía que ser capaz de recibir y enviar estos datos.

Respecto a esto hice algunas pruebas que podría resumir en lo siguiente:

  1. Generar archivos XML, “copiarlos” de una máquina a otra y parsearlos en la aplicación receptora.
  2. Usar Web Services como intermediario entre una y otra aplicación.
  3. Recurso intermedio al que puedan acceder ambas aplicaciones.

El caso 1 supone que la aplicación origen empaqueta los datos en un archivo XML que se hará llegar de alguna manera a la aplicación destino. Esto es simple, ya que podemos configurar ActiveSync para que sincronice automáticamente el contenido de cualquier carpeta. Por tanto, sólo tenemos que guardar los archivos XML en esta carpeta y automáticamente tendremos una copia en la máquina destino. Lo único que queda es que la aplicación destino parsee el archivo XML.

Las pruebas que hice con este planteamiento funcionaron bien, de hecho las primeras versiones de Pocket Aurin usaban este mecanismo de sincronización.

Sin embargo, la sincronización basada en ActiveSync resultó problemática en conexiones remotas (GPRS). También hay que tener en cuenta que no puede haber múltiples conexiones ActiveSync simultáneas.

El caso 2 es un excelente ejemplo de la utilidad que pueden proporcionar los Web Services en aplicaciones colaborativas multiplataforma. Cuando planteé la Sincronización de Pocket Aurin era necesaria una licencia de Servidor Web para poder servir Web Services con 4D por esto desestimé esta solución.

La versión 2004 de 4D ofrece licencias distintas para Web Server y Web Services. Quizá sea el momento de replantear el problema.

La tercera opción es la que usa Pocket Aurin en estos momentos. La idea es simple y está basada en el paradigma Email Server. En el esquema adjunto podemos ver la arquitectura empleada en el Transporte de la sincronización de Pocket Aurin.

En el centro del esquema tenemos MSDE. Microsoft Desktop Engine es la versión gratuita de SQL Server, el servidor de Bases de Datos de Microsoft. Puede instalarse en cualquier Windows posterior al 98, incluso en la misma máquina que tiene la base de datos 4D. Elegí MSDE como recurso intermedio por que es fácilmente accesible tanto desde 4D como desde Compact Framework.

MSDE aloja una base de datos con una única tabla. Cada registro de esta tabla contiene una Unidad de Información pendiente de sincronizar, además contiene información sobre la máquina que ha generado el registro, a qué máquinas va dirigido, con qué versión del programa se ha generado, y algún parámetro de control adicional.

Las Unidades de Información mencionadas son, simplemente, código XML guardado en un campo de tipo Texto. Se pueden definir distintos tipos de Unidades de Información, por ejemplo, un Pedido sería representado por el código XML “completo” que define el Pedido, es decir, el registro del Pedido, las líneas de detalle, forma de pago prevista, etc. Cada Unidad de Información incluye todos los registros relacionados con una misma entidad.

Los Campos más relevantes de esta tabla son los siguientes:

Tabla de Sincronización

Campo Tipo Descripción

Id

int

Identificador del registro.

From

nvarchar35

Estación que emite la Unidad de Información.

To

nvarchar35

Estaciones a las que va dirigida.

Data

ntext

Información: <?xml version="1.0" encoding…

DataType

nvarchar35

Tipo de Unidad de Información.

Version

nvarchar15

Versión del programa que ha generado el registro.

Attach

bin

Posibles datos binarios. Imágenes, etc.

 

Sincronización

Bajo este esquema la Sincronización se plantea de forma similar al funcionamiento de un Servidor de Correo. Cada estación (4D o PocketPC), cuando se conecta con el Servidor de Sincronización (MSDE) recoge las Unidades de Información que a ella van dirigidas y deja las Unidades de Información que necesita enviar a otras estaciones.

En la sincronización Digital Aurin – Pocket Aurin, la aplicación 4D (Digital Aurin) actúa como Estación Base. Cada estación PocketPC tiene asociado un Representante, de ésta manera, la Estación Base sabe a qué máquina o máquinas debe enviar cada Unidad de Información. Así pues, el PDA del Representante X recibe la información de los Clientes (datos generales, cartera, etc) asociados al Representante X, y no otros. Igualmente, sólo recibe las Existencias de su Muestrario (y otros almacenes opcionalmente), algunos PDA recibirán información de costes y otros no, etc.

Aquí podemos ver ejemplos de registros de información sincronizada en Digital Aurin y en Pocket Aurin:

Artículo creado en 4D y pasado a PDA

Albarán creado en PDA y pasado a 4D

Conexión 4D – MSDE – PocketPC

Como he comentado MSDE es la versión de libre distribución de SQL Server. La conexión de 4D con MSDE debe establecerse de la misma manera que se haría con SQL Server. Podemos usar ODBC, OleDB, ADO, RDO o cualquier tecnología de acceso a datos compatible con SQL Server.

Para versiones de 4D anteriores a la 2004 podemos usar el plugin de ODBC para 4D. La versión 2004 incluye soporte nativo para ODBC que funciona perfectamente con MSDE.

Digital Aurin accede a MSDE a través de un plugin que desarrollé específicamente para ello basado en OleDB.

El acceso a MSDE desde Compact Framework no supone ninguna dificultad ya que viene incluido un Data Provider específico.

Las conexiones pueden ser locales o remotas sin que haya ninguna diferencia en el soporte de unas y otras ya que están basadas en TCP/IP. Sólo debemos tener la precaución de abrir el puerto TCP que usa MSDE para establecer las conexiones. Cualquier PDA con PocketPC que tenga conexión a Internet (del tipo que sea) puede acceder al Servidor de Sincronización basado en MSDE.

La próxima versión de SQL Server CE, esperada para 2005, incluirá APIS que permitirán acceder directamente a sus tablas desde una aplicación de escritorio. Esto es una  excelente noticia ya que podremos desarrollar fácilmente un plugin que permita a 4D acceder directamente a SQL Server CE eliminando así la necesidad de instalar MSDE.

En cualquier caso, el planteamiento basado en Web Services ofrecería una solución tan compacta como  ésta sin la necesidad de desarrollar ningún plugin. Además, las nuevas licencias de 4D para la publicación de Web Services son ahora, quizá, más adecuadas que nunca.

Conclusión

A pesar de que la Sincronización 4D – PocketPC es, actualmente, un problema complejo, ofrece una funcionalidad tremendamente atractiva para ciertos clientes. Un PDA y sus periféricos (impresoras, lectores de códigos de barras, etc) son dispositivos realmente pequeños y ligeros. Afortunadamente, ahora estamos en condiciones de ofrecer a los Vendedores Externos el equipo que han estado demandando durante años. Por fin pueden llevar nuestra gestión 4D en sus bolsillos".

 

Vicente Gras - Digital Somnis S.L. - Diciembre 2004

 

Descargar la versión PDF de esta historia

Digital Somnis, S.L. Logo


Internacional | Empresa | Contactar 4D | Mapa del Sitio | © 4D, S.A. 2003 | Tamaño de fuente: [A] [A] [A] *Cuando la solución es lo que importa