Mostrando entradas con la etiqueta ESB. Mostrar todas las entradas
Mostrando entradas con la etiqueta ESB. Mostrar todas las entradas

jueves, 22 de julio de 2010

Tutorial de OpenESB

En estos días, cumpliendo mi amenaza final de este post, he publicado en DebugModeOn una serie de artículos que conforman un tutorial de introducción a OpenESB. En él se muestra paso a paso cómo desarrollar un ejemplo simple en el que se genera un proceso que realiza invocaciones a distintas tecnologías como Bases de Datos Oracle, Servicios Web, el sistema de ficheros, etc.

Para mayor comodidad publico aquí también la versión completa en un único documento.


Por cierto, en la barra lateral del blog podéis encontrar un enlace a mi perfil de DebugModeOn.

viernes, 25 de junio de 2010

Recorriendo una secuencia de entrada con OpenESB

Como continuación al artículo en que comenzaba a hablar de los ESBs, y puente hacia un futuro tutorial más elaborado, explico hoy un caso que me ha resultado particularmente difícil de resolver, dado que no he encontrado muchos ejemplos.

Este mismo ejemplo lo he publicado en la Web DebugModeOn.

Poniéndonos en situación, tenemos un fichero xml que será la entrada a nuestro proceso Bpel, que contiene un elemento complejo, compuesto por una secuencia de elementos simples. Sirva como ejemplo el siguiente xsd.




        
            
                
                    
                        
                        
                  

Generamos un Bpel que lee esta información, y lo que queremos es que realice el mismo procesamiento para cada una de las temperaturas que se encuentre en la entrada. ¿Cómo lo hacemos? Tendremos que usar la actividad estructurada forEach, y configurarla como se muestra en la imagen.


Como comienzo para el contador utilizamos el valor 1, y como final la expresión count($PollIn.part1/ns0:Temperatura), donde PollIn es la variable de entrada al Bpel, leída del fichero xml, y que se evaluará como el número de temperaturas obtenidas.

A continuación tenemos que añadir al bloque forEach una actividad Assign, en la que cogeremos cada una de las temperaturas y haremos con ellas lo que corresponda. Si accedemos a la vista de mapeo de la asignación, veremos que dentro del mensaje PollIn, desplegando el árbol, hay un único elemento Temperatura, con sus atributos por debajo. Pues bien, si clicamos con el botón derecho sobre Temperatura, y seleccionamos la opción addPredicate() se abrirá otra ventana muy similar al propio mapeador. En ella asignaremos el contador del bloque forEach (que en nuestro caso se llama forEach1, ya que no lo hemos renombrado), al predicate que se muestra en el lado derecho.


Una vez hecho esto, en la vista de mapeo veremos que se ha creado un nuevo nodo por debajo de PollIn, con nombre Temperatura[$forEach1Counter]. Este elemento será el que contenga en cada iteración del forEach el valor actual, por lo que de él ya podemos obtener la información que nos interesa para continuar con el procesamiento.

Próximamente, un tutorial con un ejemplo de OpenESB que incluirá esta solución en un contexto más amplio.

jueves, 10 de junio de 2010

Enterprise Service Bus

A raíz de un trabajo del Máster que estoy realizando surge el artículo de hoy, que sirve como introducción a otro término que se ha abierto hueco en el vocabulario informático. Lo que ocurre con este y muchos otros términos (como framework, componente, etc.), es que se ponen de moda y empiezan a usarse para prácticamente todo, y a colarse en todas las presentaciones de marketing, sin que quede claro cuál es su significado real.

Comenzando por lo más básico: ESB = Enterprise Service Bus = Bus de Servicio Empresarial.

....

Efectivamente, el nombre no es que diga mucho, pero el concepto hace referencia a un paso más en las tecnologías de integración de aplicaciones. En este ámbito se partió del punto a punto, en el que era necesario que las aplicaciones a conectar utilizasen la misma tecnología y que su ubicación fuese conocida. De ahí se evolucionó hacia los middlewares, que ofrecían un registro centralizado, pero mantenían una alta dependencia tecnológica. Un paso más se dio con los Hubs de Integración, que sí ofrecían esta independencia, y la posibilidad de definir procesos de integración, pero que no dejaban de ser un middleware mejorado...

Y ahí aparecen los maravillosos ESBs. Se establecen estándares W3C, se proveen conversores de protocolos, lenguajes de orquestación, abstracción de la tecnología... Y un montón más de ideas súper interesantes.

Pero... ¿qué significa todo esto? Pues resumiendo, que un ESB es una herramienta que nos ofrece la posibilidad de comunicar elementos de software de distintas tecnologías (conocidos como assets, o activos). Dentro de una compañía es normal tener bases de datos, un servidor de correo, servicios Web, ficheros xml, y un sinfín de unidades cuya interacción es deseable.

El ESB pretende evitarnos el trabajo de tener que realizar los desarrollos para esta integración, aportando básicamente tres elementos.
  • Bindings Componentes - que nos abstraen de las diferentes tecnologías (bases de datos, ficheros, servicios Web...), permitiéndonos acceder a ellas.
  • Orquestador de servicios - que nos permite definir la forma en que se llevará a cabo la interacción entre nuestros assets.
  • Service Engines - que nos abstraen del servidor de aplicaciones en el que están desplegados los distintos elementos.
Todo esto ha sido recogido en una especificación de la JCP, bajo el nombre de JBI (Java Business Integration). Actualmente existen dos versiones, en las JSR 208 y 312, respectivamente.

Como conclusión habría que decir que la idea detrás de los ESB es realmente interesante, pero que en realidad hay demasiada palabrería alrededor de ella, y que queda mucho por hacer para llevarla a cabo.

En cualquier caso, para ver la idea, en los próximos días intentaré publicar un pequeño tutorial para realizar un proceso de integración. Esa es la mejor forma de comprender qué son y para qué sirven los ESBs.