Postulo que para integrar hoy,  el uso de los sistemas institucionales con  dispositivos móviles externos, se  requiere de un instrumento intermedio.integracion.gif (3521 bytes)

José Enrique González Cornejo


Borrador #8  DocIRS
Diseño Clase Sintetizador ~ Dispositivos Móviles
29 de febrero de 2006
José Enrique González Cornejo

Introducción

La solución propuesta en este documento para comunicar los dispositivos móviles con los servicios de una institución, se enmarca en la llamada Service Oriented Architecture (SOA), que representa la siguiente fase de la política de desarrollo estratégica corporativa de la institución.

SOA es un estilo de arquitectura cuyo objetivo es lograr vincular y hacer interactuar aplicaciones inconexas entre ellas. Es decir, la Arquitectura Orientada a Servicios (SOA) está comunmente reconocida como la forma más eficiente y económica para integrar información y tender un puente entre sistemas heterogéneos. (Ver SOA y Simple-DocIRS)

En resumen, la arquitectura de la solución "Sintetizador" expuesta a continuación,  propone un modelo eficiente en todos los aspectos, en el que el código de la función es independiente de la forma en que se resuelve la integración. Dado que la   función puede estar hecha en cualquier lenguaje de programación y residir en cualquier tipo de plataforma tecnológica conservándose de esta manera los activos actuales de la empresa en sus sistemas de información. Desde el punto de vista de las aplicaciones externas, la función es una caja negra que recibe unos parámetros de llamada o solicitud de información y responde de una manera que es reconocible según unos estándares. La integración se resuelve mediante una correcta y apropiada definición de los parámetros de llamada a la función y una buena definición de la naturaleza de la respuesta.


modelo_comunicacion


Definición

El Sintetizador es un equipo servidor que contiene una clase madre capaz de intermediar entre las Plataforma Tecnológica de una empresa (sistema propio) y los dispositivos móviles. Es decir, el Sintetizador será una maquina-usuario-(sistema propio) montada específicamente sobre los servicios de la Plataforma Tecnológica de la empresa, la cual contendrá aplicaciones capaces de ofrecer servicios de:

  • Comunicación
  • Clasificación
  • Validación
  • Ruteamiento
  • Complementación
  • Síntesis

Desde y hacia las aplicaciones localizadas en los dispositivos móviles como desde y hacia la Plataforma Tecnológica de la empresa.

La plataforma Tecnológica de la empresa está dotada de un conjunto de rutinas, componentes y servicios, con centenas de procedimientos almacenados que operan sobre la base de datos. Es decir, su arquitectura contiene código de presentación, código de procesamiento de datos y código de almacenamiento de datos, el cual podrá ser utilizado directamente por el Sintetizador.

Por tanto el Sintetizador es un recurso tecnológico de caracter no humano montado sobre Windows DNA, que utilizará la capacidad de la arquitectura en capas que tiene la de la empresa.

 

sustitucion_usuario
El diagrama ilustra que existe una equivalencia entre la unidad "Usuario de la empresa + Estación de Trabajo" y el   "Usuario de la empresa Remoto +  Sintetizador.
Es decir, ambos operan sobre la Plataforma Tecnológica de la empresa. El primero en forma más amplia en lo referente a transacción de datos que el segundo. La difrencia central es que el Sintetizador trabaja sin intervención humana, sólo le basta recibir un insumo remoto de datos, para que él lo interprete y ejecute el servicio.


Capa Transporte

La comunicación de los dispositivos móviles con la Plataforma Tecnológica de la empresa, requiere como punto central, operar  sobre una capa de transporte, robusta especialmente diseñada  entre los Dispositivos Móviles y la Plataforma. Este puente comunicacional lo hemos denominado Sintetizador, dada las características y servicios que entregará para este efecto.

grafo_dm

Arquitectura

Por tanto la arquitectura de las clases presentadas en este documento, promoverá la comunicación y extensibilidad con el Sintetizador, aplicando una componente (conformada por un conjunto de clases) sobre los sistemas de la empresa, que actualmente están en funcionamiento

La arquitectura referida identifica los componentes funcionales, define las relaciones entre esos componentes, establece los métodos y propiedades necesarios para lograr flexibilidad en el proceso de comunicación. En especial, al hacer uso del formato universal XML que permite representar cualquier dato transmitido en forma estructurada.

modelo1.jpg (52090 bytes)


Clases de Funciones

funciones

Sea XML1 el string enviado por el Dispositivo Móvil y sea
F1(XML1)=
XML2  el string requerido por la Plataforma Tecnológica de la empresa. Es decir, F1 es  la clase de funciones que transforma el XML de Entrada - enviado por el Dispositivo Móvil - , para adaptarlo a la Plataforma Tecnológica de la empresa.

Así mismo sea F2(XML2)=XML3 el string de respuesta de la Plataforma Tecnológica de la empresa, entonces F3(XML3)=XML4 es el string que  genera el Sintetizador  para responder al requerimiento del Dispositivo Móvil. Es decir F3  es la clase de  funciones que transforma el XML de Respuesta  para adaptarlo al Dispositivo Móvil.

Por tanto, F1,F3  Î Sintetizador y F2 Î de la empresa.

  • El Sintetizador escucha al emisor que es el Dispositivo Móvil.

  • El Sintetizador le da un significado al mensaje, de acuerdo  a un conjunto de tipologías (catálogo de servicios) previamente definidas que regularán su acción.

  • El Sintetizador ordena y le da una secuencia lógica a la respuesta: Devuelve pregunta hacia el Dispositivo Móvil para completar significado del mensaje   o continúa hacia la de la empresa.

  • El Sintetizador, mediante su método Procesar(),  por un lado recupera datos y por otro pasa datos utilizando la lógica de la de la empresa.

  • El Sintetizador completa o sintetiza respuesta y la envía al emisor.

  • El Sintetizador realiza Auditoría registrando información identificatoria de todas las transacciones realizadas.

  • Nótese que el XML1 enviado contiene un bloque completo de identificación del dispositivo móvil, el usuario, aplicación, formulario, etc. Es decir, toda la data identificatoria de la fuente de emisión.

  • El aprendizaje del Sintetizador se iniciará en forma declarativa e interpretativa. Es decir, la información que recibirá el sistema es codificada en la memoria declarativa dentro del Catalogo de Servicios. La segunda fase corresponderá a la automatización de las respuestas compuestas mediante la compilación o transformación del conocimiento declarativo en procedimientos.

  • En resumen, el Sintetizador estará dotado de un  protocolo especial de la empresa de comunicación, que opera bajo http mediante XML. Con este protocolo se podrá realizar sólo peticiones definidas en el Catálogo de Servicio de la empresa. Es decir, por un lado los mensajes tendrán un formato predeterminado empleando XML para encapsular los parámetros de la petición (Sintaxis) y por otro lado los mensajes tendrán un significado definidos también el la Clase Servicios de la empresa (Semántica).

  • Nótese que el el Sintetizador no contiene lógica de negocio.

  • El sintetizador contará con un envoltorio propio que es independiente: del lenguaje de programación, de todo protocolo de transporte, de toda infraestructura de objeto distribuido.


Envoltorio Sintetizador

paquete rotulado

Nótese que el paquete tanto de envío como el de respuesta, tiene siempre el mismo envoltorio o estructura. Su rotulo identificatorio contiene siempre las mismas llaves que definen en forma única la transacción. Sólo se diferencia la acción y la hora entre la consulta y la respuesta.

Estructura XML Envoltorio Sintetizador

<¿xml version="1.0"?>
<sintetizador: paquete>
<sintetizador: rotulo identificatorio>

<accion>RESPUESTA</accion>

<num_serie_dispositivo>3345-AB-2789</num_serie_dispositivo>

<folio_transaccion>003344/06</folio_transacción>

<usuario>AGOMEZ60</usuario>

<fecha>25/02/2006</fecha>

<hora>15:00:03 </hora>

<codigo_aplicacion>A30</codigo_aplicación>

<tipologia_consulta>44</tipología_consulta>

<rut_cliente>78.337.630-K</rut_cliente>

</sintetizador: rotulo identificatorio>

 

 
<sintetizador:datos>

....

 

< /sintetizador:datos>

</sintetizador: paquete>


Funcionalidades específicas

Entre las múltiples tareas, el Sintetizador se hará cargo de:

  • Distribuir la información entregada por el dispositivo para reducir la duplicación de digitación: Un mismo dato del formulario en le dispositivo va a varios formularios en la PTM.
  • Verificar que la información enviada cumpla los requerimientos de la PTM: Si el usuario ingresó información insuficiente para que la PTM pueda realizar la tarea, el Sintetizador debe responder al dispositivo con el listado de la información faltante. Luego, el dispositivo deberá abrir un formulario a medida, con los campos que falta ingresar. Así el ejecutivo finalizará la tarea rápidamente.
  • Depurar los datos entregados por la PTM al dispositivo para enviar al ejecutivo y/o asistente comercial, sálo los datos relevantes para:
    • Aumentar la velocidad de conexión
    • Simplificar el trabajo de los ejecutivo: Entre menos información irrelevante posean, más rápido llegarán a los datos importantes
    • Ahorrar costos de conexión, dado que trabajará con tipologías declaradas que permiten configurar paquetes completos de respuesta.

Evitar construir lógicas ya construidas: Los dispositivos ocuparán una serie de procesos que ya existen en la PTM. No es necesario reconstruirlos sino re-utilizarlos.


Algo acerca del Dispositivo Móvil que trabajará con el Sintetizador..

El problema que resolverá el proyecto Dispositivos Móviles, concierne directamente al corazón del negocio de la Banca de la empresa. En efecto, se trata de dotar a los ejecutivos (1) de una herramienta que soluciona problemas de movilidad y optimización de los tiempos y los costos de todos los protagonistas involucrados.

La larga experiencia de las Gerencias de muchas empresas, demuestra que el carácter de realizar una tarea en terreno no es la misma que en la sucursal, y que es precisamente en terreno donde no existen y se requieren herramientas más poderosas.

Los dispositivos apuntan hacia una solución en esa dirección. Sin embargo, los dispositivos móviles tienen limitaciones comparativas:

  • Capacidad de procesamiento
  • Capacidad de almacenamiento
  • Facilidad para realizar tareas por su dimensión (pantallas de menor tamaño y una forma de ingresar la información más engorrosas)

De ahí deriva la necesidad de mancomunar y sincronizar  la construcción de las aplicaciones que operarán sobre el dispositivo móvil con el diseño del Sintetizador. Así mismo, el requerimiento nos señala que el aparato no es lo más importante, sino que su sistema operativo y la unificación de las plataformas de software con que está dotado. El sistema operativo más recomendable es Microsoft Windows Mobile Platform.(2)


Diagrama de Clases Sintetizador (Corazón de la Clase)

clase_sintetizador

Bosquejo Inicial


Clases, XML y Casos de Uso

CLASE

Sintetizador

Descripción

Esta clase recibe una solicitud de servicio desde un dispositivo movil, verifica la disponibilidad del servicio y procesa el servicio

Propiedades

serror

Contiene el último error

Métodos privados

bool validarxml (string strxml)

Retorna verdadero si el xml es válido y falso si el xml no es correcto

El xml que recibe tiene el siguiente formato

<documento>

<servicio>nombre de servicio</servicio>

<parametros>

<fila>

<nombre>nombre_de parametro1</nombre>

<valor>valor_de parametro1</valor>

</fila>

<fila>

<nombre>nombre_de parametro2</nombre>

<valor>valor_de parametro2</valor>

</fila>

</parametros>

</documento>

Métodos Públicos

string procesar(string strxml)

Retorna un xml con el resultado del servicio

El xml que retorna tiene la siguiente estructura

<documento>

<servicio>nombre de servicio</servicio>

<resultado>OK</resultado>

<respuesta>

<valor>xml con el resultado del servicio ejecutado</valor>

</respuesta>

</documento>

El xml que recibe tien la siguiente estructura:

<documento>

<servicio>nombre de servicio</servicio>

<parametros>

<fila>

<nombre>nombre_de parametro1</nombre>

<valor>valor_de parametro1</valor>

</fila>

<fila>

<nombre>nombre_de parametro2</nombre>

<valor>valor_de parametro2</valor>

</fila>

</parametros>

</documento>












caso_general.jpg (27313 bytes)
Caso deUso : interacción externa

caso_general2.jpg (29115 bytes)
Caso deUso : interacción interna

Casos de uso

Curso Normal de Eventos cuando se ejecuta el método procesar()

1.- Invocar a funcion validarxml

2.- Si es válido el xml

2.1.- Crear un objeto Servicios

2.2.- Ejecutar el método buscar(Servicio) para verificar que el servicio este disponible

2.3.- Si el servicio esta disponible

2.3.1.- Ejecutar método Invocar(Servicio, xmlparametros)

2.3.2.- Almacenar en una variable el resultado del servicio

2.4.- No esta disponible

2.4.1.- Grabar el error usando la componente auditoria

2.5.- Destruir componente servicio

2.6.- Grabar el resultado de la operación con el metodo agregar de la componente auditoria

2.7.- Armar un xml con el resultado de la operación

3.- No es valido el xml

3.1.- Grabar el error usando la componente auditoria

3.2.- Grabar el resultado de la operación con el metodo agregar de la componente auditoria

3.3.- Armar un xml con el resultado de la operación

4.- Retornar un xml con el resultado de la operación

Si existe algun error en la operación se debe grabar el error usando la componente auditoria y se debe almacenar el error en la propiedad serror


Diagrama General de Flujo

diagrama_procesar
Diagrama 3: Flujo Sintetizador, nótese que ingresa XML1 y devuelve XML4


Modelo Lógico de Datos del Sintetizador (Aproximación #1)

modelo_logico_sintetizador1.jpg (57386 bytes)

Modelo Físico de Datos del Sintetizador (Aproximación #1)

modelo_fisico_sintetizador1.jpg (77047 bytes)

Dicionario de Tablas

Tabla

Definición

auditoria

Bitacora de auditoria

grupo_servicios

Grupo de servicios de la empresa disponibles

parametros

Parametros de los servicios de la empresa

servicios

Servicios de la empresa definidos por una componente y una operación

tipo_parametro

Tipo de datos de los parametros de la empresa (fecha, numero, texto)

xml_error

Xml recibido por el sintetizador que genero un error al invocar un servicio de la empresa

Diccionario de Datos

Columna

Tipo de dato

Tabla

Definición

auditoria_id

int

xml_error

Identificación de auditoria

     

auditoria

  

clase_componente

varchar(25)

servicios

nombre de clase o componente

descripcion

varchar(30)

  

Descripción del servicio

     

grupo_servicios

Descripción de los servicios

descripcion_error

varchar(250)

auditoria

  

dispositivo_movil

varchar(20)

     

fecha_hora

smalldatetime

     

grupo_servicios_id

smallint

grupo_servicios

Identificación de los grupos de servicios

     

servicios

Grupo de Servicio

nombre

varchar(15)

tipo_parametro

Nombre del tipo de parametros. Ejemplo (Fecha, numero, texto)

  

varchar(25)

parametros

nombre del parametros

operacion_metodo

varchar(25)

servicios

Nombre de método

orden

smallint

parametros

Orden en que son invocados los parametros

parametros_id

smallint

  

Correlativo de los parametros para un servicios

resultado

char(1)

auditoria

  

servicios_id

smallint

servicios

Codigo de Servicio

     

parametros

Identificación de los servicios

     

auditoria

  

tiempo

int

     

tipo_parametro_id

smallint

parametros

Identificación del Tipo de parametro

     

tipo_parametro

Identificación de los parametros

usuario

int

auditoria

  

vigente

char(1)

servicios

Indica si el servicio esta vigente con 0 o 1, permite eliminar logicamente un servicio

           

xml_recibido

text

xml_error

Xml recibido por el sintetizador que genero un error al invocar un servicios de la empresa

 
Notas:

- XML (Extensible Markup Language) formato universal que permite representar cualquier dato transmitido en forma estructurada. Independientemente de cómo se haga la solicitud, las respuestas siempre son en XML. Este formato describe perfectamente los datos en tiempo de ejecución y evita los problemas ocasionados por cambios inadvertidos en las funciones, ya que los objetos llamados tienen la posibilidad de validar siempre los argumentos de las funciones, haciendo que el protocolo sea muy sólido.

- Todo XML contendría un tag  completo de identificación que incluirá también el número de serie y tipo de dispositivo móvil que realiza la consulta.

- DocIRS como proveedor, ha orientado sus desarrollos de  software y servicios con un modelo On-Demand. Es decir, diseñado las  aplicaciones para que operen como servicios accesible a través de Internet, que a su vez este trabajo se pueda integrar con los sistemas propios del cliente o con otros servicios On-Demand mediante los estándares abiertos de los Web Services y la arquitectura de sistemas SOA.

(1) Ver documento de Levantamiento de Procesos ~ Proyecto Dispositivo Móvil ~ Enero 2006 DocIRS/ Bruno Maggio
  • Los ejecutivos deben re-digitar o reescribir la misma información en varios procesos (Captación, entrevista inicial, informe técnico, capacidad de pago, acta de comité de crédito, nomina, FOGAPE, solicitud de crédito, liquidación de otorgamiento y pagaré)

  • Los ejecutivos no pueden realizar una entrevista inicial a un potencial cliente fuera de la sucursal porque carecen de información del cliente para realizar esto
  • La información capturada en la entrevista inicial no se aprovecha para evitar la redigitación de los datos.
  • Los ejecutivos ocupan tiempo en viajes hacia y desde la evaluación en terreno, el cual no puede ser aprovechado por no contar con información de los sistemas de la empresa, como tampoco poseen acceso a los sistemas para poder ingresar la venta.

 

(2) El concepto de Dispositivos Móviles  que hemos usado de referencia mínima para esta investigación, son aquellos  aparatos móviles portables con sistema operativo Microsoft Windows Mobile, que reúnan las funciones de teléfono celular, capacidad computacional para desarrollo de aplicaciones WEB y que sirvan de  asistente personal digital PDA).  Entre sus características debe destacar un procesador Intel u otro similar con velocidad de procesador sobre los 300Mhz, con más de 128Mb de memoria RAM (mínimo 60Mb disponibles para el usuario) y Bluetooth 1.2, tecnología EV-DO (Evolution Data Optimized, internet de banda ancha para redes), que permite velocidades de transmisión de datos de hasta 2Mb teóricos y 400-700Kb reales.

dispositivo movil