emovilia tu empresa en tiempo real  
 
 
empresa ver todos nuestros productos plataforma descargas de manuales de ayuda e información corporativa noticias acceso a la zona de clientes contacto
 
por qué  
características técnicas  
para desarrolladores  
casos de éxito  
 
características técnicas
 
 
conceptos para una arquitectura multicanal
 
 

Definición de una plataforma abierta, integradora, modular, evolutiva … enfocada hacia el concepto de canal de distribución independizando la tecnología del negocio y la presentación.

Plataforma multicanal:

  • La información llega a cualquier lugar: canales de distribución.
  • Información fiable: la misma para todos los canales.
  • Rapidez y eficiencia: tanto en el desarrollo como integración de nuevos canales.
  • Usability: sencillez en el uso para todos los usuarios.
  • Interés: información actualizada y útil el usuario debe sentirse identificado por la información mostrada (personalización).

Información dependiente del cliente no de la tecnología del canal, el canal es sólo un medio de difusión, no debe condicionar la información.

Rápida adaptación a la evolución tecnológica desenfrenada mediante una arquitectura abierta, escalable, modular y reutilizable al máximo.

Clientes:

  • Personalización interactiva de la información deseada
  • Fuente única de información de usos y hábitos del cliente
  • Análisis exhaustivos de los datos del cliente
  • Oferta personalizada
  • Actualización permanente de la información
 
filosofía Aplication Service Provider
 

PADKernel potencia la competitividad de los productos finales en una arquitectura Java multicapa, multiempresa, multientorno, multicanal, multidispositivo, multiusuario y multiidioma bajo un entorno J2EE 100%.

Se obtienen ventajas de centralización del conocimiento, mejora del desarrollo, escalabilidad, seguimiento de los proyectos y plataforma de lanzamiento de proyectos innovadores y competitivos. Además, sirve para utilizar y gestionar de forma transparente para los desarrolladores las infraestructuras de sistemas (web servers, aplications servers, sistemas de ficheros, bases de datos, etc.) que necesiten para los proyectos finales, optimizando si es posible, la velocidad de acceso final.

Se minimiza al máximo la instalación en los dispositivos client side. En el caso de los navegadores web, será seguramente nula, y en los dispositivos PDA y móviles requerirá una instalación mínima excepto terminales más avanzados como PocketPCs que dispongan de navegadores realmente funcionales. Dicha capa se crea siempre con un motor de presentación J2ME utilizando la definición client provisioning J2EE con un modulo para asegurar la entrega de las conexiones. En los dispositivos menos abiertos con .NET o C++, aunque esto último puede suponer un aumento de coste.

Se ofrecen productos definidos previamente por proyectos, la versatilidad de la arquitectura será uno objetivo claro y por este motivo debe estar orientada a componentes y conectores lo que simplifica su desarrollo en diferentes fases.

Para cada producto se pueden ofrecer al cliente múltiples servicios tanto a nivel de negocio como de sistema (estadísticas, guardias, etc.), pudiendo seleccionar cual de ellos interesan.

El objetivo final es la disponibilidad 7x24, 99,9999% 32 segundos de desconexión al año (sumando todas las paradas).

 
caracterísitcas generales de la arquitectura padkernel
 

Multicapa: Se implementa un patrón MVC (modelo, vista, controlador) basado en una definición server side X-Forms de la W3C. Este modelo separa perfectamente la implementación de negocio de la presentación y con controladores o filtros para los diferentes protocolos: HTTP/S en un principio y Web Services  en las sucesivas fases de desarrollo. El modelo X-Forms sirve para mantener transparente el acceso en dos sentidos: de los diferentes canales al negocio y del backend al negocio. La capa de presentación XSLT y/o JSP, pudiéndose añadir más tipos de presentación si son necesarios.

Multiempresa y multientorno: Existe un gestor de configuración que permite al framework realizar una coexistencia de diferentes empresas y entornos de dichas empresas, manteniendo una única implementación por servicio de negocio.

Multicanal y multidisposivo: El mismo gestor de configuración permite abrir dichas empresas y entornos a los diferentes canales y los dispositivos de dichos canales, manteniendo una única implementación por servicio de negocio y múltiples presentaciones las cuales gestiona un módulo de presentación independiente a través de la configuración.

Multiidioma: El gestor de presentación dispone de una colección de los posibles literales por idioma que soporte cada presentación por empresa, entorno, canal y dispositivo, gestionados a través de un gestor independiente que utiliza a su vez la información de la configuración.

Multiplataforma: La instalación de la plataforma puede hacerse tanto en entornos Windows como Linux/Unix, preferiblemente estos últimos y a poder ser en un entorno multiprocesador o emulando un multiprocesador con la tecnología HyperThreading de Intel. Sistemas en cluster y sistemas con balanceo de carga inteligente (SmartStubs, p.ej.) en una infraestructura romboidal de máquinas con un gestor que mantiene segura la información contenida en los contextos de usuarios (solución escalable vertical y horizontalmente).

Multiusuario: La concurrencia de múltiples usuarios es un aspecto crítico para la disponibilidad del sistema y aunque la plataforma Java y por extensión los servidores de aplicaciones proporcionan este aspecto de base, la arquitectura está encargada de velar por este aspecto basándose en una estrategia de optimización máxima de componentes.

 
componentes principales
 

Procesos de negocio: Coordinan el flujo de información del proceso que se ejecuta. Tras la ejecución se recogen los resultados y se dejan en un objeto para que sean recogidos por la presentación que se encarga de mostrarla. Los procesos de negocio se encargan de indicar cual es la presentación que funcionalmente resuelve la petición del usuario. A continuación el Gestor de la Presentación seleccionará la presentación correspondiente.

Gestor de Datos:  Formatea la información para ser procesada por los sistemas externos (HOST, bases de datos, BackEnd) que deberán tratarla. Devuelven la respuesta formateada a los Procesos de negocio. El gestor datos gestiona la relación con los conectores.

Conectores: Gestores de la comunicación con los sistemas externos (TCP-IP, SNA, etc.), conexión con servidores (HTTP/S, XML, etc.), Bases de datos (PostgreSQL, Oracle), etc.

Gestor de la Presentación: Determina exactamente cual es el elemento de presentación a utilizar.  Recibe como entrada la "presentación funcional" determinada por el Controller y evalúa los parámetros que pueden fijar una presentación u otra. Por ejemplo : Canal, empresa, idioma, dispositivo, etc.

 
padkernel FASE 1
 
  • Controlador del flujo de ejecución X-form de peticiones multicanal.
  • Gestor de contexto.
  • Gestor de configuración.
  • Los componentes de definición del que extiendan todos los componentes de negocio.
  • El gestor de presentación.
  • Utilidades básicas de caché y tratamiento XML Schema y XML.
  • Gestor de ficheros de log.
  • Pool de conexiones de Bases de Datos.
Todos estos componentes se montan en una única máquina con sistema operativo Linux y bajo un web container Tomcat, ambos de contrastado prestigio y fiabilidad. No se utilizará un application container porque se prescindirá el uso de EJB.
 
FASE 2 modelo server side X-Form completo y gestor de transacciones
 

Modelo de recolección de datos de entrada multicanal X-Form en los siguientes puntos:

  • Estructura de datos de petición de ida y vuelta.
  • Asociación (asignación) dato de entrada-dato de la estructura de entrada predefinida de la petición.
  • Validación de la estructura, prototipo de datos y reglas de negocio complejas bajo un modelo de autómata XML (esta última no incluida en la primera fase).

Se crea, reaprovechando los componentes el primer punto un gestor de transacciones Backend basado en un pseudo-modelo adaptado XMLForms con los siguientes componentes:

  • Estructura de transacciones de ida y vuelta.
  • Asociación datos de ida-dato resultado transacción.
  • Validación de la estructura, prototipo de datos y reglas de negocio complejas bajo un modelo de autómata XML.
Se realizan pruebas de estrés y las mejoras derivadas de los resultados de esas pruebas en todos los gestores, sobretodo en el caché y los logs.

Se mejora la configuración implementando sistema multiproperties basado en XML.
Se procede a la integración con OpenGIS para los proyectos de localización.
 
FASE 3 Client Provisioning
 

Para las aplicaciones que se visualicen a través de navegadores se potencian los componentes genéricos y reutilizables basados en JavaScript. Estos canales sólo requieren esfuerzos a nivel de presentación pero estos no se deben subestimar ya que bien diseñados y gestionados pueden colaborar en gran medida a potenciar la velocidad de acceso y la riqueza de las aplicaciones cliente.

Para las aplicaciones que se instalen en dispositivos cliente se crea un gestor de versiones y aprovisionamiento de aplicaciones cliente basándose en la especificación client provisioning J2EE (enterprise edition) y particularmente en las especificaciones definidas para J2ME (micro edition) tanto para perfiles CDC (client device connected) y CLDC (cliente limited device connected).

Las aplicaciones se basan en un motor de presentación ligero y un módulo que asegure la entrega de las peticiones de dichos aplicativos tanto bajo HTTP como en conexiones seguras HTTPS.

Se procede a la creación de un gestor de seguridad configurable que corte el paso para IP’s invalidas, gestión de certificados, etc.

 
FASE 4 balanceo de carga, repositorio de contextos y herramientas de gestión
 

Para poder escalar la arquitectura a nivel de sistemas se crea un repositorio de contextos de usuario que se encarga de asegurar que el balanceo de carga no repercuta en excesivo tráfico de información y tiempo de latencia en entornos cluster, por un lado y que sólo permite guardar información en estos contextos a aquellos datos que hayan sido autorizados por los perfiles más cualificados, para impedir que los desarrolladores no utilicen de forma ordenada este recurso.

Se crea un balanceador de carga inteligente.

Implementamos los siguientes componentes de gestión de la arquitectura:

  • Administración de configuración remota.
  • Gestor de estadísticas remota.
  • Módulo de monitorización.
Se procede a escalar vertical y horizontalmente las infraestructuras de sistemas.
 
FASE 5 Content Management System (CMS)
 

Para aumentar la velocidad de respuesta de los aplicativos finales y mejorar la velocidad de desarrollo de dichos proyectos se implementan los componentes necesarios para la creación de un CMS. Para ello será necesario crear un gestor de recursos de presentación y literales remoto.

El tener un CMS supone simplificar la arquitectura de sistemas ya que muchos recursos de sistema, como por ejemplo web servers tipo Apache, pueden dejar de tener utilidad.

 
implementación de XForms
 

X-Forms es una especificación del W3C como resultado de la redefinición de los formularios HTML. Si nos damos cuenta todos los aspectos de la programación web han evolucionado mucho excepto la definición de los formularios que no se ha movido ni un milímetro de la definición que se les dio inicialmente. La nueva especificación de formularios sirve para dar respuesta a varias necesidades:

  • Adaptarse a la redefinición XHTML 1.0.
  • Separar el tratamiento de formularios de la presentación.
  • Solucionar el problema de afrontar arquitecturas multicanal.

La nueva especificación define un XForm en tres partes:

  • Esqueleto XML de la petición: podemos lanzar una estructura de datos todo lo compleja que queramos mediante un esqueleto XML que definamos.
  • Asociación de campos de presentación de entrada (Inputs) con los nodos del esqueleto: XML Binding.
  • Validación de datos pre-envio: XML Validation.

La nueva especificación además define dos posibles implementaciones:

  • Client side: para aquellos navegadores que soporten dicha definición.
  • Server side: para poder migrar a este tipo de estructuras sin afectación para los canales que no soporten tecnologías tan potentes. Nosotros elegimos esta opción para nuestra arquitectura.
Para implementar los server side XForms utilizaremos las librerías JAX-P y JAX-B (Java Api for XML Processing and Binding). La primera define las interfaces necesarias para utilizar el estándar SAX para la lectura y tratamiento de XML y la segunda para tratamiento en memoria y transformación XML-Java y Java-XML. Esta última librería además de proporcionar interfaces tipo JavaBean de árboles de objetos que equivalen a la estructura de datos que define un XML, es capaz de aplicar validaciones complejas tanto a nivel de tipo de datos como validaciones más complejas definidas por un XSD (XML Schema). Las implementaciones utilizadas serán por un lado Xerces del proyecto apache para JAX-P y la implementación de referencia de Sun de JAX-B. Comentar que JAX-B es la apuesta de Sun para la creación de objetos complejos Java a partir de una definición XMLSchema estándar . Mediante estas dos tecnologías tenemos a nuestra disposición las herramientas necesarias para implementar una arquitectura basada en XForms solucionando la problemática del multicanal.
 
la influencia de STRUTS
 

STRUTS es uno de los proyectos Open Source de la organización Apache Jakarta de más influencia e impacto en la implementación de framework’s basados en el paradigma MVC. Sencillo, ligero, escalable y extensible separa perfectamente la capa de negocio de la presentación definiendo en los formularios presentados a cliente, y por configuración, multiples elementos de los siguentes tipos:

  • Action: Clase Java que resuelve el negocio.
  • View: Posible presentación resultado a la ejecución de un negocio. Pueden existir múltiples vistas para cada acción. Pueden ser plantillas XSL, JSP o Velocity, o podemos crearnos las nuestras.
  • Controller: tenemos a nuestra disposición diferentes clases de control de flujo que podemos extender según las necesidades de nuestro proyecto.
STRUTS a través de los archivos de configuración definidos por el usuario en tiempo de diseño resuelve el negocio y retorna la presentación adecuada a cada posible resultado.

Nuestra arquitectura seguirá una estructura similar pero propia adaptada a una definición de formularios XForm.

La ventaja de utilizar este modelo es que eliminamos la dependencia de control de flujo en la parte servidora que, aunque tiene constancia de que elementos de negocio y de que presentaciones tenemos disponibles deja libertad a los formularios cargados en client side para controlar el control de flujo, que unido a la definición XForm, de forma acumulativa en la parte servidora, soluciona la problemática multicanal.
 
JSP vs XSLT
 

Ambas tecnologías son perfectamente válidas para crear presentaciones ricas en contenido y funcionalidad. Para resolver JSP tenemos infraestructuras de base en Tomcat y para la resolución XSLT utilizaremos la implementación Apache Xalan de la parte JAX-P referente a XML StyleSheet Language for Transformation.

 
XML Schema
 

XML Schema es un estándar definido y mantenido por la W3C que surgió como una redefinición XML del estándar DTD (Document Type Definition), que servía para validar y definir la estructura y el típado de datos de una instancia o documento XML válido. Aparte de la complejidad de la lectura de los mismos, los DTD, al igual que su rápida aceptación por la comunidad tecnológica, mostraron, igual de rápidamente ciertas carencias en sus sintaxis,  escalabilidad y utilidad. El World Wide Web Consortium se puso a trabajar entonces, al igual que hizo con la redefinición XML del HTML (XHTML), en la nueva versión que esta llamada a sustituir paulatinamente a los DTD’s.

Así pues y con una sintaxis lenguaje definida totalmente por un XML y auto descriptiva, un DTD puede ser traducido a XML Schema, pero no a la inversa, ya que la potencia que posee XMLSchema, no la posee un DTD. Herramientas como XML Spy realizan este paso directo haciendo clic en una sola opción. A su vez, se puede extraer cual es el XMLSchema o el DTD correspondiente para un esqueleto que tengamos de muestra que nos halla facilitado nuestro hipotético cliente.

Nuestro XMLSchema es capaz de validar la correcta estructura de un XML cualquiera y también el correcto típado de los datos que viajan es esa estructura compleja, aplicándose restricciones de tipos básicos a esos ítems o restricciones más complejas como expresiones regulares, enumeraciones, validaciones contra otros elementos de la estructura o herencia si queremos llegar a sacarle autentico jugo su potencia.

 
  Aviso legal diseño y desarrollo swing