arquitectura orientada a servicios (soa) · elementos que la componen.....4 4 características de...

33
Arquitectura orientada a servicios (SOA) Índice 1 Razones para introducir SOA....................................................................................... 2 2 El concepto de servicio................................................................................................. 3 3 Definición de SOA. Elementos que la componen........................................................ 4 4 Características de los servicios de una SOA.............................................................. 11 5 Capas en aplicaciones orientadas a servicios............................................................. 13 6 El gobierno SOA (SOA governance)......................................................................... 15 6.1 La importancia de las IT y el gobierno SOA......................................................... 16 6.2 Responsabilidades de gobierno.............................................................................. 16 6.3 Implementación del gobierno................................................................................ 18 7 SOA y JBI.................................................................................................................. 19 8 SOA y Servicios Web................................................................................................. 22 9 SOA y BPM................................................................................................................ 24 10 Ejemplo práctico....................................................................................................... 26 10.1 Creación del proyecto BPEL................................................................................ 26 10.2 Creación del esquema XML................................................................................. 26 10.3 Creación del documento WSDL.......................................................................... 27 10.4 Abrir y desplegar el servicio Web partner........................................................... 28 10.5 Creación el proceso BPEL................................................................................... 28 10.6 Creación del proyecto Composite Application.................................................... 30 10.7 Desplegar y probar la Composite Application..................................................... 31 10.8 Resumen del ejemplo práctico............................................................................. 31 Copyright © 2008-2009 Depto. CCIA All rights reserved.

Upload: others

Post on 01-Oct-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Arquitectura orientada a servicios(SOA)

Índice

1 Razones para introducir SOA.......................................................................................2

2 El concepto de servicio.................................................................................................3

3 Definición de SOA. Elementos que la componen........................................................4

4 Características de los servicios de una SOA.............................................................. 11

5 Capas en aplicaciones orientadas a servicios............................................................. 13

6 El gobierno SOA (SOA governance)......................................................................... 15

6.1 La importancia de las IT y el gobierno SOA......................................................... 16

6.2 Responsabilidades de gobierno..............................................................................16

6.3 Implementación del gobierno................................................................................ 18

7 SOA y JBI.................................................................................................................. 19

8 SOA y Servicios Web.................................................................................................22

9 SOA y BPM................................................................................................................24

10 Ejemplo práctico.......................................................................................................26

10.1 Creación del proyecto BPEL................................................................................26

10.2 Creación del esquema XML.................................................................................26

10.3 Creación del documento WSDL.......................................................................... 27

10.4 Abrir y desplegar el servicio Web partner........................................................... 28

10.5 Creación el proceso BPEL................................................................................... 28

10.6 Creación del proyecto Composite Application.................................................... 30

10.7 Desplegar y probar la Composite Application..................................................... 31

10.8 Resumen del ejemplo práctico............................................................................. 31

Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 2: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Muchas empresas han dedicado grandes inversiones en los recursos de sus sistemassoftware a lo largo de los años. Dichas empresas tienen una enorme cantidad de datosalmacenados en sistemas de información (EIS) legacy, de forma que no resulta prácticodescartar dichos sistemas existentes. Es mucho más efectivo evolucionar y mejorar losEIS. ¿Pero cómo hacer ésto? La arquitectura orientada a servicios (Service OrientedArchitecture) proporciona una solución con unos costes aceptables. Si bien la arquitecturaa servicios no es nueva, se está convirtiendo en el principal framework para la integraciónde entornos heterogéneos y complejos. En esta charla, explicaremos con detalle qué es laarquitectura orientada a servicios.

1. Razones para introducir SOA

El software de empresa está estrechamente relacionado con su organización interna, conlos procesos que la forman, y con el modelo de negocio de dicha empresa. El software deempresa está condicionado tanto por las dependencias entre sus departamentos, como porlas relaciones con negocios externos. Consecuentemente, una arquitectura para softwarede empresas debe contemplar un gran número de requerimientos diferentes. Muchos deestos requerimientos entran en conflicto, mientras que otros no están claros. En casi todoslos casos, los requerimientos cambian constantemente debido al cambio permanente delos mercados, cambios en la organización de la empresa, así como en sus objetivos denegocio. Esta implicación en todos los aspectos de la empresa y del negocio es lo quehace que el software de empresa sea altamente complejo. Como dice Dirk Krafzig: "Elsoftware de empresa es un animal diferente". El software de empresa es único en muchosaspectos, y por lo tanto, requiere medidas únicas para asegurar la eficiencia de sudesarrollo y mantenimiento.

En el software de empresa, el arquitecto adquiere el rol de un influenciador y controladorexterno. Tiene la responsabilidad de dirigir proyectos software individuales tanto desde elpunto de vista estratégico de la organización en su totalidad, como desde el punto de vistatáctico (punto de vista de la meta a alcanzar con el proyecto individual). Tiene queequilibrar diferentes requerimientos a la vez que intentar crear un orden perdurable dentrodel ámbito del software de empresa. La arquitectura del software de empresa es una de lasherramientas más importantes con las que cuenta el arquitecto. Éste tiene que enfrentarseconstantemente con cambios y adiciones de funcionalidades que incrementan lacomplejidad del sistema y reducen su eficiencia. Mediante la refactorización de lassoluciones actuales, los arquitectos luchan para intentar reducir la complejidad eincrementar la agilidad del sistema.

Para mejorar la eficiencia y agilidad del sistema, una arquitectura de software de empresadebe proporcionar las siguientes características:

• Simplicidad: A pesar de la cantidad de gente implicada, todos deben ser capaces decomprender y gestionar la arquitectura en sus niveles respectivos (por ejemplo,especificar nuevas funcionalidades a nivel de negocio, implementarlas y mantenerlas).

Arquitectura orientada a servicios (SOA)

2Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 3: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

• Flexibilidad y mantenibilidad: La arquitectura debe definir diferentes componentesque puedan reordenarse y reconfigurarse de una forma flexible. No se debe permitirque cambios locales tengan un efecto sobre el sistema global.

• Reusabilidad: Uno de los aspectos más importantes de la reusabilidad es el decompartir datos en tiempo real, así como el compartir funcionalidades comunes.

• Desacoplamiento entre funcionalidad y tecnología: La arquitectura debe hacer quela organización de la empresa sea independiente de la tecnología. En particular, laarquitectura debería evitar dependencias de productos y vendedores específicos.

Una arquitectura orientada a servicios posee las características que acabamos decomentar.

La meta última de la reusabilidad y flexibilidad proporcionada por una arquitecturaorientada a servicios es el de conseguir una empresa ágil, en la que todos los procesos yservicios son completamente flexibles y pueden crearse, configurarse y reordenarserápidamente cuando así sea requerido por los expertos en el negocio, sin la necesidad depersonal técnico. Entre otras cosas, se facilita el dedicar más tiempo al mercado paraconseguir nuevas iniciativas de negocio. Esta visión de una empresa ágil reconcilia lademanda cada vez más creciente de entornos de negocio rápidamente cambiantes, con laslimitaciones de las teconologías e infraestructuras organizacionales actuales. Otrasventajas que se derivan de la agilidad de la empresa son el ahorro de costes,independencia de la tecnología, un proceso de desarrollo más eficiente, y mitigación deriesgos.

2. El concepto de servicio

El término "servicio" se ha venido utilizando desde hace bastante tiempo y de muchasformas diferentes. Hoy, por ejemplo, encontramos grandes compañías, como por ejemploIBM, que promocionan el concepto de "servicios bajo demanda". Con la llegada del siglo21, el término "servicios Web" se ha convertido extremadamente popular, si bien ha sidoutilizado a menudo para hacer referencia a diferentes conceptos de computación. Porejemplo, algunos lo utilizan para refererirse a servicios de aplicaciones que se ofrecen alos usuarios a través de la Web, como la aplicación salesforce.com. Otros utilizan eltérmino "servicios Web" como módulos de aplicaciones que son accesibles para otrasaplicaciones a través de Internet, mediante protocolos basados en XML. Hay que decirque servicios Web y SOA NO son equivalentes, sin embargo, como veremos másadelante, se pueden utilizar servicios Web para implementar una arquitectura SOA.

Para nosotros, el término servicio hará referencia a alguna actividad significativa que unprograma de ordenador realiza o solicita a otro programa de ordenador. O, en términosmás técnicos, un servicio es un módulo de aplicación autocontenido que esremotamente accesible. Los frontends de las aplicaciones proporcionan accesibilidad alos servicios. A veces, los términos "cliente" y "servidor" se utilizan como sinónimos de"consumidor de un servicio" y "proveedor de un servicio", respectivamente.

Arquitectura orientada a servicios (SOA)

3Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 4: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Ademas, los servicios proporcionan un nivel de abstracción que oculta muchos detallestécnicos, incluyendo la localización y búsqueda del servicio. Típicamente, los serviciosproporcionan funcionalidad de negocio, en lugar de funcionalidades técnicas. Otracaracterística de los servicios es que no se diseñan para un cliente específico, en su lugarconstituyen una facilidad que contribuye a satisfacer alguna demanda pública. Es decir,proporcionan una funcionalidad que puede reutilizarse en diferentes aplicaciones. La"rentabilidad" del servicio dependerá del número de clientes diferentes que utilicen elservicio, o lo que es lo mismo, del nivel de reutilización conseguido.

Una implementación concreta de una arquitectura de servicios proporciona un accesouniforme para todos los servicios disponibles. Así, si hacemos una analogía con latelefonía, después de que un consumidor de un servicio es "dirigido" hasta una instanciade una arquitectura de servcios, y, después de que "suene el tono de llamada", el uso delos servicios es transparente para los usuarios. Sin embargo, y como luego veremos, unaarquitectura de servicios es una arquitectura en sí misma, y por lo tanto, únicamentedescribe la estructura y no las tecnologías concretas. Consecuentemente, las instancias deSOA podrían utilizar diferentes tecnologías en diferentes empresas.

Destacar también que los principios en los que se basa SOA son significativamentediferentes de los principios y paradigmas orientados a objetos. La diferencia clave está enque las interacciones entre los servicios se definen utilizando interfaces que están másorientadas hacia los datos que al comportamiento. Un servicio aislado puede serimplementado utilizando principios y técnicas orientadas a objetos, sin embargo, lasinteracciones entre estas interfaces se orientan más hacia intercambios basados endocumentos. Mientras que la orientación a objetos mantiene el comportamiento "cerca"de los datos (un objeto encapsula datos y comportamiento), la orientación a serviciosdesacopla los datos del comportamiento. Pongamos un ejemplo sencillo: imaginemos unCD que queremos escuchar. Para poder oirlo necesitamos introducir el CD en unreproductor de CD y dicho reproductor realiza la tarea de reproducción. El reproductor deCD ofrece un servicio de reproducción de CDs. Ésto resulta muy útil ya que podemosreemplazar un reproductor de CD por otro: podemos ejecutar el mismo CD sobre unreproductor portátil o sobre un sofisticado equipo estéreo. Ambos aparatos ofrecen elmismo servicio, pero la calidad del mismo es diferente. Ahora consideremos el mismoejemplo según la perspectiva orientada a objetos: en un estilo de programación orientadoa objetos, cada CD debería contener su propio reproductor de forma no separada. Estosuena raro, pero esta es la forma en la que están construidos muchos sistemas softwareactuales.

El resultado de un servicio lleva consigo normalmente un cambio de estado para elproveedor, o para el cliente, o para ambos. Siguiendo con el ejemplo anterior, después deescuchar el CD en el reproductor, nuestro humor habrá cambiado, por ejemplo, de "triste"a "animado".

3. Definición de SOA. Elementos que la componen.

Arquitectura orientada a servicios (SOA)

4Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 5: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Una arquitectura orientada a servicios es una arquitectura que permite la construcciónde aplicaciones de negocio como un conjunto de componentes de caja negra (black-box)débilmente acoplados, que son orquestados para entregar un nivel de servicio biendefinido enlazando conjuntamente diversos procesos de negocio.

De la definición anterior, se desprende que SOA es una aproximación extensible,reutilizable y sostenible para los negocios y la tecnología, que proporciona una granventaja competitiva a las organizaciones que la adoptan. Resaltamos las siguientesobservaciones:

• SOA está dirigida a aplicaciones de negocio. Existen muchas aproximacioneslegítimas para las arquitecturas software, y SOA no está pensada para cualquier tipode software. SOA está pensada para aplicaciones de negocio.

• SOA es una arquitectura de componentes black-box. Siempre que sea posible,SOA oculta de forma deliberada la complejidad subyacente, y la idea de caja negra esinherente a SOA. El concepto de caja negra permite la reutilización de aplicaciones denegocio añadiendo simplemente un adaptador, sin importar cómo se hayan construidodichas aplicaciones. Los adaptadores son los que proporcionan las interfaces y hacenque SOA sea posible. Sin adaptadores no hay SOA. SOA está pensada, sobre todo,para reutilizar las aplicaciones de negocio existentes. Para hacer esto, necesitamosañadir interfaces a estas aplicaciones que nos permitan invocar directamente a lasfunciones que dichas aplicaciones contienen. Los adaptadores SOA proporcionandichos interfaces.

• Los componente SOA son débilmente acoplados. El término "débilmente acoplado"hace referencia a la forma en la que interactúan los componentes en SOA. Uncomponente pasa datos a otro componente y realiza una petición. El segundocomponente envía una respuesta y, si es necesario, envía datos de vuelta alcomponente que solicitó la petición. Se hace énfasis en la simplicidad y la autonomía.Cada componente ofrece un pequeño conjunto de servicios simples a otroscomponentes. Un conjunto de componentes débilmente acoplados hacen el mismotrabajo que si fuesen usados en aplicaciones con mucho acoplamiento, pero loscomponentes pueden combinarse y recombinarse de mútiples formas. Esto hace que latotalidad de la estructura sea mucho más flexible. También resulta mucho mássencillo crear lo que denominamos "aplicaciones compuestas" (compositeapplications), que son nuevas aplicaciones creadas a partir de las funciones denegocio de las aplicaciones existentes, y añadiendo, quizá, algún componente nuevo.

• Los componentes software son orquestados de forma que enlazan varios procesosde negocio para entregar un nivel de servicio bien definido. SOA crea una alineaciónsimple de componentes que pueden, de forma colectiva, entregar un servicio denegocio muy complejo. Además, la arquitectura incluye componentes que aseguranun nivel de servicio confiable. Ejemplos de niveles de servicio pueden ser: laaplicación debe estar disponible el 99,99% del tiempo cada fin de semana desde las 6a.m hasta las 10 p.m; en caso de un error, la aplicación debe recuperarse en 20minutos; el tiempo de respuesta para consultas, modificaciones y creación de nuevos

Arquitectura orientada a servicios (SOA)

5Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 6: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

pedidos será de 1 segundo, y nunca peor que dos segundos, etc.

Una arquitectura orientada a servicios está basada en cuatro elementos clave: frontend dela aplicación, servicio, repositorio y bus de servicios (ver Figura 1).

Figura 1. Elementos que componen SOA.

Si bien el frontend de la aplicación es el propietario del proceso del negocio, los serviciosproporcionan la funcionalidad del negocio que los frontends de las aplicaciones y otrosservicios pueden utilizar.

Un servicio consiste en: (a) una implementación que proporciona lógica del negocio ydatos, (b) un contrato del servicio que especifica la funcionalidad, uso, y restriccionespara el cliente (que puede ser un frontend de una aplicación u otro servicio), y (c) unainterfaz del servicio que físicamente expone la funcionalidad.

El repositorio de servicios almacena los contratos del servicio de los serviciosindividuales de una SOA, y el bus de servicios interconecta los frontends de lasaplicaciones y los servicios.

Elementos claves de una SOAUna arquitectura orientada a servicios (SOA) es una arquitectura software basada en losconceptos clave de frontend de aplicaciones, servicio, repositorio de servicios, y bus de servicios.Un servicio está formado por un contrato, una o más interfaces y una implementación. Losbloques de construcción de SOA son los servicios, los cuales están débilmente acoplados parafavorecer su reutilización y son altamente interoperables a través de sus contratos. Los serviciosen sí mismos son "ajenos" a las interacciones requeridas a nivel de transporte para hacer posiblela comunicación entre el suministrador del servicio y el consumidor del servicio.

El concepto de una SOA se centra en la definición de una infraestructura de negocio.Cuando utilizamos el término "servicio" tenemos en mente un servicio de negocio talcomo realizar una reserva de un vuelo, o acceder a una base de datos de clientes de unacompañía. Estos servicios proporcionan operaciones de negocio tales como hacer unareserva, cancelar un billete, u obtener el perfil de un usuario. A diferencia de losservicios de negocio, los servicios de infraestructura técnica, tales como un servicio depersistencia o de transacciones, proporcionan operaciones tales como inicio detransacción, actualización de datos, o abrir cursor. Si bien este tipo de funcionalidad

Arquitectura orientada a servicios (SOA)

6Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 7: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

técnica es bastante útil cuando vamos a implementar una operación de negocio, tiene pocarelevancia estratégica desde el punto de vista de SOA. De forma más general, latecnología no debe tener ningún impacto sobre la estructura de alto nivel de la aplicación,ni debe provocar dependencias entre componentes. Realmente, la arquitectura orientada aservicios debe desacoplar las aplicaciones de negocio de los servicios técnicos y hacerque la empresa sea independiente de la implementación o infraestructura técnicaespecífica.

Vamos a comentar con más detalle los elementos que componen la arquitectura SOA.

FRONTENDS de las aplicaciones

Los frontends de las aplicaciones son los elementos activos de la arquitectura SOA. Éstosinician y controlan todas las actividades de los sistemas corporativos. Hay diferentes tiposde frontends. Un frontend de una aplicación puede presentar una interfaz gráfica deusuario, como por ejemplo una aplicación Web o un cliente rico que interactúadirectamente con los usuarios finales. Los frontends no tienen que interactuarnecesariamente de forma directa con los usuarios finales. Los programas por lotes o losprocesos de larga duración que invocan a las funcionalidades de forma periódica o comoresultado de eventos específicos son también ejemplos válidos de frontends.

En última instancia, siempre es un frontend de una aplicación quién inicia un proceso denegocio y recibe los resultados. Los frontends de aplicaciones son similares a las capas denivel más alto en las arquitecturas multi-capa tradicionales.

SERVICIOS

Un servicio es un componente software con un significado funcional que lo distingue deotros, y que típicamente encapsula un concepto de negocio de alto nivel. La Figura 2muestra los elementos que forman parte de un servicio.

Figura 2. Elementos que componen un servicio SOA.

El contrato del servicio proporciona una especificación informal sobre el propósito,funcionalidad, restricciones, y uso del servicio. La forma de dicha especificación puede

Arquitectura orientada a servicios (SOA)

7Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 8: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

variar dependiendo del tipo de servicio. La definición formal de la interfaz basada enlenguajes tales como IDL y WSDL no es obligatoria. Si bien añade un beneficiosignificativo: proporciona una abstracción e independencia de la tecnología, incluyendo ellenguaje de programación, protocolo de red y entorno de ejecución. Es importantecomprender que un contrato de un servicio proporciona más información que unaespecificación formal. El contrato puede imponer una determinada semántica sobre lafuncionalidad o el uso de parámetros que no están sujetos a especificaciones IDL oWSDL. En realidad, muchos proyectos deben tratar con servicios que no puedenproporcionar una descripción formal de las interfaces de dichos servicios. No debemosolvidar que la tarea clave en un proyecto que pretende introducir SOA a nivel de empresaes, a menudo, no implementar nuevas funcionalidades, sino identificar módulos existentesde aplicaciones y componentes y "envolverlos" con interfaces con el nivel adecuado defuncionalidad y granularidad, haciendo que éstos estén disponibles en forma de serviciosfácilmente utilizables y mejor documentados. En los casos en los que no se disponga deuna descripción formal de los servicios en forma de interfaces, el servicio puedeproporcionar acceso a librerías, o bien una descripción técnica detallada a nivel deprotocolo de red.

La interfaz expone la funcionalidad del servicio a los clientes que están conectados adicho servicio a través de la red. Si bien la descripción de la interfaz forma parte delcontrato del servicio, la implementación física de la misma consiste en unos stubs deservicio, que se incorporan en los clientes de un servicio.

La implementación del servicio proporciona la lógica del proceso así como los datosrequeridos. Es la realización técnica que satisface el contrato del servicio. Laimplementación del servicio consiste en uno o más artefactos tales como programas,datos de configuración y bases de datos.

REPOSITORIO de servicios

El repositorio de servicios proporciona facilidades para encontrar servicios y adquirir todala información para utilizar los servicios, particularmente si estos servicios tienen quebuscarse fuera del ámbito funcional y temporal del proyecto que los creó. Si bien muchade la información requerida forma parte del contrato del servicio, el repositorio deservicio puede proporcionar información adicional, tal como la localización física,información sobre el proveedor, personas de contacto, tasas de uso, restricciones técnicas,cuestiones sobre seguridad, y niveles de servicio disponibles.

Vamos a considerar repositorios de servicios utilizados principalmente dentro de loslímites de una única empresa. Los repositorios que se utilizan para integración deservicios entre empresas típicamente tienen diferentes requerimientos. En particular,aquellos repositorios públicos a través de Internet pueden requerir cuestiones legales(términos y condiciones de uso), estilo de presentación, niveles de seguridad, registro deusuarios, suscripción a servicios, tarifas de uso, y versión utilizada).

Obviamente, un repositorio de servicios es un elemento muy útil de una SOA. Si bien no

Arquitectura orientada a servicios (SOA)

8Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 9: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

es indispensable disponer de un repositorio de servicios, éste resultará indispensable alargo plazo. Una arquitectura puede evitar el uso de un repositorio si el ámbito de unservicio es justamente un proyecto, si tiene muy pocos servicios, o si todos los proyectosson llevados a cabo por el mismo equipo de personas. En un escenario real, la mayoría delas veces habrá múltiples proyectos concurrentes, grupos de trabajo cambiantes, y unagran variedad de servicios.

Un repositorio de servicios puede ser arbitrariamente simple: en un extremo, podríamosno requerir usar ninguna tecnología. Un lote de contratos de servicio impresos localizadosen una oficina y accesible por todos los proyectos es un repositorio de servicios válido.Sin embargo, hay mejores formas de proporcionar esta información, manteniendo lasimplicidad del repositorio, como por ejemplo utilizar alguna base de datos propietariaque contenga datos administrativos y contratos de servicios más o menos formales paracada versión de un servicio.

En algunos casos, algunas compañías han desarrollado sus propias herramientas queautomáticamente generan la descripción del servicio a partir de las definiciones formalesde los servicios (por ejemplo un generador de HTML que toma un WSDL como entrada,similar al generador JavaDoc). Esto resulta particularmente útil si la definición formal delservicio se anota con información adicional sobre el servicio.

Es importante distinguir entre enlazado de servicios (binding of services) en tiempo dedesarrollo y en tiempo de ejecución. El binding (utilizaremos los términos binding oenlazado indistintamente) hace referencia a la forma en la que las definiciones de losservicios y las instancias de los servicios son encontradas, incorporadas en la aplicacióndel cliente, y finalmente enlazadas a nivel de red.

Vamos a explicar un poco más el concepto de enlazado. Una forma sencilla de entenderloes pensar en él en términos humanos. Cuando necesitamos hacer una llamada de teléfonoa alguien, descolgamos el teléfono, marcamos el número, y esperamos mientras elteléfono suena. La persona a la que estamos llamando puede no descolgarinmediatamente, pero suponiendo que lo haga, comenzaremos formulando algún saludo,indicaremos quienes somos y por qué estamos llamando, y después de todo esto,pasaremos al asunto central de nuestra llamada.

Bien, cuando un adaptador de un componente software (recordemos que un adaptadorproporciona la interfaz del componente) quiere establecer una conversación con otro,ocurren el mismo tipo de cosas que con las llamadas de teléfono. A este proceso se ledenomina binding o enlazado, y quien establece la conexión es el broker del servicio (ointermediario del servicio).

Volviendo con el binding de servicios, si los servicios son encontrados y enlazados entiempo de desarrollo, las signaturas de las operaciones del servicio son conocidas conantelación, así como el protocolo de servicio y su localización física (o al menos elnombre exacto del servicio en un servicio de directorios). La Figura 3 describe un procesoen el que los servicios se encuentran en tiempo de desarrollo. En este caso, el

Arquitectura orientada a servicios (SOA)

9Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 10: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

desarrollador es responsable de localizar toda la información requerida en el repositoriode servicios para crear un cliente que interactúe correctamente con la instancia delservicio.

Figura 3. Descubrimiento de servicios en tiempo de desarrollo.

Si bien el enlazado en tiempo de desarrollo es un modelo bastante simple, es suficiente lamayoría de las veces. Permite a los proyectos identificar la funcionalidad que ha sidocreada por proyectos anteriores y reutilizar sus servicios.

El enlazado en tiempo de ejecución es mucho más complejo. Podemos diferenciar entrevarios niveles de enlazado:

• Búsqueda del servicio por nombre. Este es el caso más sencillo, y el usado máscomúnmente. La definición del servicio se conoce en tiempo de desarrollo, y la lógicadel cliente se desarrolla en consecuencia. El cliente puede enlazar de forma dinámicacon diferentes instancias de un servicio buscandolas con nombres específicos dentrode un directorio. Por ejemplo, una aplicación cliente busca servicios de impresión condiferentes nombres, dependiendo del nombre de impresora seleccionado por elusuario.

• Búsqueda del servicio por propiedades. Es similar al anterior, excepto que losservicios se encuentran por propiedades. Por ejemplo, un servicio de impresión puedebuscar en el repositorio impresoras a través de propiedades como la planta en la quese encuentran (p.ej. "planta ==2") y el tipo de documentos que es capaz de imprimir(p.ej. "doctype==PostScript").

• Búsqueda del servicio basada en reflection. En este caso, la especificación real delservicio no se conoce en tiempo de desarrollo. Supongamos que un cliente encuentraun servicio con las propiedades del ejemplo anterior, pero con una interfaz delservicio desconocida. En este caso, en el cliente se debe implementar algúnmecanismo de reflection, que permita al cliente descubrir de forma dinámica lasemántica del servicio y el formato de peticiones válidas. Este tipo de enlazado esbastante poco usual y limitado a algunos pocos dominios de aplicaciones. Un ejemplode un dominio que realmente requiere un enlazado de servicios altamente dinámico esuna aplicación Bluetooth: los clientes Bluetooth descubren los servicios de forma

Arquitectura orientada a servicios (SOA)

10Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 11: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

dinámica basándose en la localización y otras propiedades. Pero de nuevo, incluso eneste escenario, los clientes Bluetooth soportan un conjunto limitado de serviciospredefinidos.

En general, es recomendable tener un enlazado de servicios lo más simple posible debidoa que el nivel de complejidad y riesgo crece exponencialmente con el nivel de dinamismoresultante. La búsqueda de servicios por nombre con interfaces de servicio predefinidassuele ser la opción que mejor equilibra las necesidades de flexibilidad y complejidad deimplementación en la mayor parte de los casos.

BUS de servicios (ESB)

Un bus de servicios (ESB: Enterprise Service Bus) conecta a todos los participantes deuna SOA (tanto servicios como frontends). El bus de servicios es similar al concepto debus software definido en el contexto de CORBA. Aunque existen diferenciassignificativas, entre ellas la más importante es que el bus de servicios no necesariamentedebe estar formado por una única tecnología, sino que puede comprender variosproductos y conceptos.

El bus de servicios es el nervio central de las comunicaciones entre los servicios de unaSOA. Los ESBs se diseñan para ser versátiles. Los ESBs pueden conectar con varios tiposde middleware, repositorios de definiciones de metadatos (como por ejemplo cómopodemos definir un número de cliente), registros (para indicar cómo localizar lainformación), e interfaces de cualquier cosa. Un ESB tiene no solamente tien el rol detransportador de mensajes. Las principales características de un bus de servicios son:

• Conectividad: el objetivo principal de un bus de servicios es del de interconectar alos participantes de una SOA. Por lo tanto debe proporcionar facilidades para permitira los participantes de una SOA invocar las funcionalidades de los servicios.

• Heterogeneidad de tecnología: puesto que la realidad de las empresas se caracterizapor tecnologías heterogéneas, el bus de servicios debe ser capaz de conectarparticipantes basados en diferentes lenguajes de programación, sistemas operativos osoporte de ejecución. Además, normalmente encontraremos muchos productosmiddleware y protocolos de comunicación en la empresa, todos las cuales deben sersoportados por el bus de servicios.

• Heterogeneidad de conceptos de comunicación: es similiar a lo expuestoanteriormente pero aplicado a las comunicaciones. Obviamente, el bus de serviciosdebe permitir comunicaciones síncronas y asíncronas.

• Servicios técnicos: si bien el propósito del bus de servicios es fundamentalmente lacomunicación, también debe proporcionar servicios técnicos tales como logging,auditorías, seguridad, transformación de mensajes o transacciones.

Podemos construir una SOA sin un ESB, pero a medida que el sistema crece y se vuelvemás complejo, necesitaremos un ESB

4. Características de los servicios de una SOA

Arquitectura orientada a servicios (SOA)

11Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 12: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Los servicios son el corazón de una arquitectura SOA y deben ser: débilmente acoplados,de grano grueso (coarse-grained: implementan funcionalidades de alto nivel), centradosen el negocio y reutilizables.

Un servicio "bien escrito" es de grano grueso, lo que significa que hace referencia a quetiene un alto nivel de abstracción, y por lo tanto, su ámbito es lo suficientemente ampliocomo para que la gente implicada en el negocio pueda comprender el propósito delservicio incluso si tienen pocos conocimientos sobre software. Según la cantidad decolecciones de procedimientos de negocio que maneje una compañía, en la mismaproporción los analistas del negocio y los profesionales del software de dicha compañiapodrán compartir el conocimiento de la información de forma provechosa para ambos.Además, pueden incluir al cliente en sus las deliberaciones tempranas sobre el alcance decada servicio, así como pueden comprender todas las implicaciones de la realización decambios sobre un procedimiento de negocio. La facilidad de comunicaciones entre laspersonas es un beneficio importante de SOA y sugiere que la arquitectura se conviertiráen el principio de organización primaria para los procesos de negocio.

Por otro lado, los servicios bien diseñados son reutilizables. Las organizaciones sebenefician de la reusabilidad de dos formas al menos: primero, evitando el gasto asociadoal desarrollo de un nuevo software, y segundo, incrementando la fiabilidad del softwareexistente a lo largo del tiempo. Las compañías pueden realizar unas pruebas menosextensivas si utiliza un servicio existente en una nueva aplicación, en comparación con laspruebas necesarias requeridas para desplegar software que ha sido escrito desde cero.

A continuación discutiremos con más detalle la característica de bajo acoplamiento. Eltérmino acoplamiento hace referencia al grado en el que los componentes softwaredependen unos de otros. El acoplamiento puede tener lugar a diferentes niveles. Losprocesos de negocio requieren un alto nivel de flexibilidad, y por lo tanto una arquitecturacon un bajo acoplamiento para así poder reducir la complejidad total y las dependencias,y en consecuencia facilitar cambios más rápidos y con menores riesgos. En la siguientetabla mostramos las diferencias fundamentales entre acoplamiento débil (loose coupling)y fuerte (tight coupling), considerando diferentes niveles.

Nivel Tight coupling Loose coupling

Acoplamiento físico Requiere conexión físicadirecta

Utiliza un intermediario físico

Estilo de comunicación Síncrono Asíncrono

Sistema de tipos Interfaz explícita con nombresde operaciones y argumentosfuertemente tipados

Formato de mensajes flexible

Patrón de interacción Navegación a través decomplejos árboles de objetos

Centrado en los datos,mensajes autocontenidos

Control de la lógica del proceso Centralizado Componentes distribuidos

Arquitectura orientada a servicios (SOA)

12Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 13: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

lógicamente

Descubrimento y enlazado deservicios

Estático Dinámico

Dependencia de la plataforma Dependencia fuerte del sistemaoperativo y lenguaje deprogramación

Independencia del sistemaoperativo y lenguaje deprogramación

Como ya hemos comentado, una composite application es una aplicación compuesta apartir de servicios autónomos. Incluso si cada uno de dichos servicios ha sido construidoy usado en aplicaciones anteriores que no tienen nada que ver unas con otras, éstospueden combinarse si hay alguna razón para ello. Si estos servicios componentes puedenutilizarse fácilmente tanto conjuntamente como separados, entonces se dice que estándébilmente acoplados.

Un aspecto importante sobre el acoplamiento débil es que los servicios componentes y lasinstrucciones básicas utilizadas para indicar cómo las "piezas" interactúan entre ellas, sonseparados de forma deliberada para que el servicio no contenga código relacionado con elmanejo del entorno de computación. Debido a esta separación, los componentes puedenenlazarse dinámicamente en tiempo real y se comportarán como si formaran parte de unaúnica aplicación fuertemente acoplada.

El bajo acoplamiento es posible conseguirlo debido al soporte que proporcionan varioscomponentes SOA, como por ejemplo el bus de servicios, el repositorio SOA, el registroSOA, y las interfaces tales como XML, SOAP, y WSDL.

Un bajo acoplamiento nos permitirá ganar en rapidez y eficiencia en varios aspectos. Acontinuación nombramos algunos beneficios significativos derivados de un bajoacoplamiento:

• Crear nuevas aplicaciones rápidamente utilizando servicios existentes.• Reemplazar un servicio por otro sin tener que reescribir toda la aplicación.• Crear aplicaciones de negocios seguras rápidamente.• Aislar fácilmente los problemas• Convertir los servicios software en un beneficio económico, al ofrecer su uso, previo

pago, a otras organizaciones.

5. Capas en aplicaciones orientadas a servicios

Al igual que en cualquier aplicación distribuida, las aplicaciones orientadas a serviciosson aplicaciones multicapa y tienen capas de presentación, lógica de negocio ypersistencia. La Figura 4 muestra una arquitectura típica de una aplicación orientada aservicios.

Arquitectura orientada a servicios (SOA)

13Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 14: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Figura 4. Capas en aplicaciones orientadas a servicios.

Las dos capas clave en una aplicación orientada a servicios son la de servicios y la de lalógica de negocio.

Capa de servicios

Como ya hemos dicho, los servicios son los bloques de construcción de las aplicacionesorientadas a servicios. Los servicios son auto-contenidos, mantienen su propio estado, yproporcionan una interfaz con bajo acoplamiento.

El mayor reto cuando construimos una aplicación orientada a servicios es crear unainterfaz con el nivel adecuado de abstracción. Cuando analizamos los requerimientos delnegocio, tenemos que considerar cuidadosamente qué componentes software queremosconstruir como servicios. Generalmente, los servicios deberían proporcionar unafuncionalidad con un alto nivel de abstracción (coarse-grained). Por ejemplo, uncomponente software que procesa una orden de compra es un buen candidato para serpublicado como un servicio, en contraposición con un componente que solamenteactualiza un atributo de una orden de compra.

Tenemos dos posibilidades a la hora de construir un servicio: la aproximación top-down obottom-up. La aproximación top-down requiere que identifiquemos y describamos losmensajes y las operaciones que proporciona nuestro servicio y a continuaciónimplementemos dicho servicio. Esta aproximación es recomendable cuando estamosconstruyendo un servicio completamente nuevo, puesto que somos totalmente libres deelegir la tecnología de implementación que prefiramos. Esta aproximación tambiénpromueve servicios más interoperables, ya que podemos evitar artefactos deimplementación que imposibiliten la interoperabilidad (por ejemplo, tipos de datos quepueden tener una representación interoperable).

La aproximación bottom-up es bastante popular debido a que nos permite reutilizar lainversión realizada en los componentes de negocio. Por ejemplo, los vendedoresproporcionan las herramientas que nos permiten exponer como un servicio

Arquitectura orientada a servicios (SOA)

14Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 15: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

procedimientos almacenados PL/SQL que comprueban si a un cliente se le puede aplicarun descuento.

El aspecto más importante de un servicio es su descripción. Cuando utilizamos serviciosWeb como tecnología de implementación para una SOA, el Web Service DescriptionLanguage (WSDL) describe los mensajes, tipos y operaciones del servicio Web, queconstituyen el contrato de dichos servicios.

Capa de lógica de negocio

Otra "promesa" de SOA es que podemos construir nuevas aplicaciones a partir deservicios existentes. El principal beneficio que proporciona SOA es la estandarización delmodelado de procesos de negocio, a menudo referido como orquestación de servicios.Podemos construir una capa de abstracción basada en servicios Web sobre sistemaslegacy y posteriormente beneficiarnos de este hecho para ensamblar procesos de negocio.Adicionalmente, los vendedores de plataformas SOA proporcionan herramientas yservidores para diseñar y ejecutar estos procesos de negocio. Este esfuerzo se hamaterializado en un estándar de OASIS denominado Business Process ExecutionLanguage (BPEL); la mayoría de vendedores de plataformas se están adhiriendo a esteestándar. BPEL es esencialmente un lenguaje de programación pero su representación esXML.

Si bien la sintaxis BPEL es bastante sencilla, es preferible una representación gráfica deun proceso de negocio, de esta forma nos beneficiaremos de una herramienta de diseñoGUI para ensamblar nuevos procesos de negocio a partir de servicios existentes.

6. El gobierno SOA (SOA governance)

La definición de la palabra "gobierno" (governance) implica la acción o forma degobernar. El gobierno comprende las reglas y principios de organización que determinancómo debería comportarse una organización. Dentro del contexto de las IT (InformationTechnology), además, representa un marco de toma de decisiones y responsabilidades quefomenta un comportamiento deseable en las IT. Los participantes en el gobierno decidenpolíticas sobre diferentes categorías de decisiones que deben realizarse. Dichosparticipantes también llevan a cabo la identificación de roles entre la gente que conformala empresa. Los miembros del grupo de gobierno también identifican a los expertos endiferentes materias de quienes se espera que proporcionen las "entradas" para acordardecisiones, así como identifican al grupo de gente que debe tener que ejercer susresponsabilidades (basadas en sus roles). Un equipo de gobierno de IT debe tratar trescuestiones:

• ¿Qué decisiones debemos tomar para asegurar una gestión y uso efectivos de la IT?• ¿Quién debe tomar dichas decisiones?• ¿Cómo se van a tomar dichas decisiones y cómo pueden monitorizarse?

Arquitectura orientada a servicios (SOA)

15Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 16: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

6.1. La importancia de las IT y el gobierno SOA

Actualmente, las IT son el elemento más omnipresente dentro de una empresa. Unaorganización que posee algo tan importante para el crecimiento y éxito del negocio debeconsiderarlo como uno de los elementos clave de la empresa. Un bien tan valioso debe serentendido completamente, no sólo para maximizar los beneficios que pueden derivarse deél, sino para poderlo gestionar de forma adecuada y, consecuentemente, mitigar losriesgos asociados con él. Todo ello plantea la necesidad de establecer una forma degobierno para formular, controlar y vigilar el mantenimiento y crecimiento adecuados dedicha posesión valiosa para la empresa, es decir es necesario establecer un gobierno paralas IT.

SOA es como un vino viejo en una botella nueva. Los conceptos de SOA ya existen desdehace bastante tiempo en la industria de las IT. Pero es sólo recientemente que ha captadola atención como forma de alinear la estrategia del negocio y los imperativos de unaempresa con sus iniciativas de IT. Lo que hace que una empresa que utilice de SOAnecesite tomarse en serio el gobierno es la naturaleza distribuida de los servicios entrevarias LOBs ( Lines of Business). La proliferación de más partes "movibles" (es decir, losbloques de construcción en forma de servicios) que necesitan ser mantenidos por lasdiferentes organizaciones hace que la actividad que hemos denominado como gobierno seplantee como un reto. La naturaleza inter-organizacional de los servicios de negocio y lapotencial composición de servicios a través de las "fronteras" de las organizaciones puedefuncionar correctamente si y sólo si los servicios son gobernados eficientemente para queasí estén conforme a los requerimientos dictados por un determinado nivel de satisfacciónrequerido de características tales como la seguridad, fiabilidad, rendimiento, etc. Elproceso de identificar, especificar, crear, y finalmente desplegar los servicios de laempresa, por lo tanto, requiere de un gobierno SOA a través de un grupo "fuerte" yeficiente que vigile el ciclo de vida en su totalidad de una cartera de servicios de unaempresa.

6.2. Responsabilidades de gobierno

El rol de las IT en la empresa deber ser comprendido en su totalidad y monitorizadocuidadosamente. Para ello los stakeholders de la compañia necesitan asegurar que lasinversiones en IT de sus organizaciones soportan la estrategia del negocio en su totalidad,así como mitigar sus riesgos potenciales. Las responsabilidades más importantes de uncuerpo de gobierno se muestran en la Figura 5.

Arquitectura orientada a servicios (SOA)

16Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 17: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Figura 5. Responsabilidades de gobierno.

Las principales áreas de gobierno incluyen las siguientes:

• El alineamiento estratégico se centra en la necesidad de alinear la visión del negocio,los objetivos y las necesidades con los esfuerzos en IT.

• El valor de la entrega hace referencia a cómo el valor de una IT puede medirse através de los resultados como por ejemplo el aprovechamiento, la reducción de gastos,la reducción de errores, la mejora de imagen de la compañia, etc.

• La gestión de riesgos se centra en la continuidad del negocio y las medidas a tomarpara proteger los bienes referentes a las IT.

• La gestión de recursos se centra en optimizar los servicios de infraestructura quesoportan los servicios de las aplicaciones.

• La gestión del rendimiento se centra principalmente en monitorizar los servicios quese ejecutan en el entorno de infraestructura de la empresa u otros entornos deinfraestructura.

Un metamodelo de gobierno que ilustra la interrelación entre las cinco decisiones másimportantes a las que hacen referencia las áreas que acabamos de mencionar, se muestraen la Figura 6.

Figura 6. Metamodelo de gobierno.

La Figura 5 muestra los principales elementos de gobierno y sus relaciones entre ellos.Los principios de IT y SOA guían la arquitectura de las IT y el modelo de servicios, loscuales, a su vez, determinan cómo deben definirse los servicios de infraestructura de las

Arquitectura orientada a servicios (SOA)

17Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 18: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

IT de la empresa. Las necesidades de las aplicaciones de negocio requeridas puedenevaluarse basándonos en la capacidad del marco de infraestructuras de las IT. La madurezde la arquitectura de las IT y el modelo de servicios, así como los servicios deinfraestructura de las IT condicionan la decisión de qué partes de de las aplicaciones denegocio requeridas pueden priorizarse para realizar inversiones de IT sobre ellas.

6.3. Implementación del gobierno

Cualquier implementación del gobierno debería centrarse en los cuatro pilares de unaarquitectura de empresa: la gente, los procesos, la tecnología, y los servicios. Unaimplementación de gobierno SOA necesita ser soportada por una organización jerárquica,como por ejemplo la mostrada en la Figura 7.

Figura 7. Ejemplo de estructura de organización de gobierno.

El nivel de dirección (steering committee). Está formado por miembros del comité dedirección. El comité de dirección articula la estrategia de negocio y los objetivos de laempresa. Los participantes en este nivel deciden cómo se deben realizar las inversiones enIT y cómo deben canalizarse a áreas específicas del negocio que necesitan mejoras, o biennecesitan implementar nuevas aplicaciones que puedan marcar la diferencia en elmercado y hacer que la empresa sea más competitiva.

El nivel de liderazgo. Está formado por los líderes del gobierno y de cada uno de losdominios del negocio. Este grupo crea la arquitectura IT de la empresa y los principiosSOA que deben seguirse.

El nivel de gestión de oportunidades. En este nivel se forman grupos separados. Cadauno de ellos se centra en una o más necesidades del negocio y son responsables deproporcionar definiciones claras de las aplicaciones del negocio que cubren algunas de lasnecesidades de la empresa.

El nivel de gestión de proyectos. Los grupos en este nivel (initiative teams) gestionan elciclo de vida en su totalidad de una aplicación (diseño, desarrollo, construcción, pruebas y

Arquitectura orientada a servicios (SOA)

18Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 19: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

despliegue).

7. SOA y JBI

JBI (Java Business Integration) es un estándar basado en Java que aborda las cuestionesprincipales sobre EAI y B2B, y que está basado en los paradigmas y principios quedefiende SOA. La versión actual (1.0) lleva el nombre de JSR (Java SpecificationRequest) 208. Tanto los vendedores comerciales como los open source han comenzado yaa utilizar JBI como un estándar de integración en sus productos ESB (Enterprise ServiceBus).

JBI define una arquitectura basada en plug-ins en la que los servicios pueden ser pluggeden el entorno de ejecución de JBI. JBI proporciona interfaces bien definidas para losservicios que interactúan con el entorno de ejecución JBI. Los servicios necesitan exponersus interfaces al entorno JBI para que éste pueda enrutar los mensajes hacia los servicios.El entorno de ejecución JBI actúa como un mediador entre los servicios que estándesplegados en dicho entorno (ver Figura 8)

Figura 8. Entorno de ejecución JBI.

El núcleo (core) del entorno de ejecución JBI está formado por los siguientescomponentes dentro de la misma máquina virtual Java (JVM):

• Framework de componentes: permite el despliegue de diferentes tipos decomponentes en el entorno de ejecución JBI.

• Router de mensajes normalizado: permite un mecanismo estándar de intercambio demensajes entre los servicios.

• Framework de gestión: está basado en JMX y permite el despliegue, gestión ymonitorización de componentes en el entorno JBI

JBI adopta SOA para maximizar el desacoplamiento entre componentes, y crear unasemántica de interoperación bien definida basada en mensajería estándar. JSR 208describe las interfaces proveedoras de servicios (SPI: Service Provider Interfaces), quelas máquinas de servicios (no definidas por JSR 208) y los bindings incorporan, así comoel servicio de mensajes normalizado que utilizan para comunicarse entre ellos. JSR 208tiene las siguientes ventajas de negocio:

• Es en sí misma una arquitectura orientada a servicios, y por lo tanto altamenteflexible, extensible y escalable

• Las máquinas de servicios podrían implementarse en cualquier lenguaje siempre ycuando soporten la definición SPI implementada por los sistemas que cumplen JSR208.

Arquitectura orientada a servicios (SOA)

19Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 20: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

• Pueden añadirse nuevas máquinas en el contenedor definiendo los mensajes queutilizarán para interactuar con el resto del sistema.

• Las interfaces abiertas permiten una competencia gratuita y abierta alrededor de laimplementación de estas máquinas. Esto significa que los clientes son libres de elegirla mejor solución disponible, y su código de integración puede migrarse entre lasdiferentes implementaciones.

En la Figura 9 se muestra un ejemplo de arquitectura JSR 208:

Figura 9. Ejemplo de arquitectura basada en JSR.

Como se puede observar, JBI proporciona un entorno en el que residen los componentesplug-in. La interacción entre los componentes plug-in se lleva a cabo mediante lainvocación de servicios basada en mensajes. Los servicios producidos y consumidos porlos componentes plug-in se modelan utilizando WSDL 2.0. Un mensaje normalizado estáformado por dos partes: el mensaje abstracto XML, y los metadatos del mensaje (o datosdel contexto del mensaje), lo cual permite la asociación de información extra con unmensaje particular ya que éste es procesado por los componentes del sistema y loscomponentes plug-in.

Los elementos clave de un entorno JBI (mostrados en la Figura 10) son:

• Máquinas de servicios (SE: Service Engines), son componentes JBI que permiten unalógica de negocio pluggable.

• Componentes de enlazado (BC: Binding Components), son componentes JBI quepermiten una conectividad externa pluggable.

• El enrutador normalizado de mensajes (NMR: Normalized Message Router),direcciona los mensajes normalizados desde los componentes de origen hasta susdestinatarios de acuerdo a políticas especificadas.

• El entorno de ejecución JBI (JBI Runtime Environment), contiene a los componentesJBI y al NMR. Debido a sus características como contenedor, a menudo se le conocecon el nombre de meta-contenedor JBI.

Arquitectura orientada a servicios (SOA)

20Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 21: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Figura 10. El entorno JBI.

Modelo de componentes JBI

JBI define dos tipos de componentes:

• Componentes de la máquina de servicios (SE: Service Engine): se trata decomponentes responsables de la implementación de la lógica del negocio y otrosservicios. Los componentes SE pueden ser implementados internamente utilizandovarias tecnologías y principios de diseño. Los componentes SE pueden ser tan simplescomo un componente que proporciona servicios de bajo nivel tales comotransformación y traslación de datos o algo más complejos como una instanciaWS-BPEL que modela un intrincado proceso de negocio.

• Componentes de enlazado (BC: Binding components): se utilizan principalmentepara proporcionar enlaces a nivel de transporte para los servicios desplegados. LosBC pueden ser de varios tipos, incluyendo: (a) los que permiten la comunicaciónremota con sistemas externos utilizando protocolos de transporte estándar; (b) los quepermiten una invocación dentro de la máquina virtual entre dos servicios desplegadosen la misma JVM; y (c) los que permiten la comunicación entre servicios utilizandoficheros de configuración WS-I (Web Services Interoperability).

El aspecto clave de JBI es el desacoplamiento de la máquina de servicios y loscomponentes de enlazado para que la lógica de negocio no se "infeste" con los detalles deinfraestructura requeridos para invocar y consumir servicios. Esto promueve unaarquitectura flexible y extensible. Tanto los componentes BC como los SE pueden actuarcomo proveedores y/o consumidores de servicios, así como aceptar/enviar mensajesdesde/hasta el entorno de ejecución JBI.

Modelo de mensajes JBI

JBI utiliza un modelo de mensajes que desacopla los consumidores de servicios de losproveedores de servicios. El modelo de mensajes se define utilizando WSDL. WSDL seutiliza para describir las operaciones expuestas por los componentes SE y BC. WSDLtambién se utiliza para definir los enlaces a nivel de transporte para las operacionesabstractas de los servicios.

Arquitectura orientada a servicios (SOA)

21Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 22: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

NMR (Normalized Message Router) es otro de los componente fundamentales utilizadoen la arquitectura de JBI. NMR proporciona la espina dorsal construida alrededor deWSDL, quien proporciona el intercambio de mensajes débilmente acoplados entre loscomponentes SE y BC desplegados dentro de JBI. Se requiere que los servicios tenganinterfaces, formados por un conjunto de operaciones. Cada operación está formada poruno o más mensajes. Un interfaz puede tener uno o más bindings a nivel de transporte.

8. SOA y Servicios Web

Muchos desarrolladores piensan a menudo que los servicios Web y SOA son sinónimos.Muchos también piensan que no es posible construir aplicaciones orientadas a serviciossin utilizar servicios Web. Para clarificar las diferencias diremos que SOA es un principiode diseño, mientras que los servicios Web son una tecnología de implementación. Por lotanto, podemos construir una SOA utilizando otras tecnologías tradicionales, como porejemplo RMI.

Tenemos que destacar que el precursor de SOA es Jini: un entorno de computacióndistribuida basado en Java y desarrollado por Sun a finales de los 90, en la que losdispositivos (como por ejemplo impresoras, portátiles y PDAs) pueden ser plugged enuna red y automáticamente ofrecer sus servicios y hacer uso de otros servicios en dichared. Posteriormente los servicios Web utilizan estándares independientes de la plataformatales como HTTP, XML, SOAP, y UDDI, permitiendo la interoperabilidad entretecnologías heterogéneas tales como J2EE y .NET.

En 2003, SOA entra al fin por completo en el mundo de las tecnologías de la informaciónempresariales, a través de los servicios Web, y gracias a:

• Al contrario que CORBA y DCE, los estándares de servicios web no tienendetractores entre los fabricantes.

• Los servicios Web tienen flexibilidad para soportar aplicaciones multicanal.• La capacidad de SOAP de atravesar los firewalls, aprovechando la ubicuidad del

HTTP.• El soporte de servicios Web en servidores de aplicaciones que albergan lógica

empresarial.• Los ESBs, que combinan servicios Web con middleware orientado a mensajes

(MOM), más algunas capacidades de transformación y enrutado.

SOA está emergiendo como el principal marco de integración en entornos decomputación complejos y heterogéneos. Los intentos anteriores no permiten solucionesinteroperables abiertas, ya que recaen sobre APIs propietarios y requieren un alto nivel decoordinación entre grupos de trabajo. SOA puede ayudar a las organizaciones amodernizar sus procesos para que sus negocios sean más eficientes, así como adaptarlos alas necesidades de cambio y ser más competitivos, gracias al concepto de servicio. eBay,por ejemplo, ha "abierto" los APIs de sus servicios Web de sus subastas online. Elobjetivo es permitir a los desarrolladores ganar dinero a través de la plataforma eBay.

Arquitectura orientada a servicios (SOA)

22Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 23: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Utilizando los nuevos APIs, los desarrolladores pueden construir aplicaciones cliente queenlacen con el sitio online y permitir que las aplicaciones acepten ítems que se pondrán ala venta. Tales aplicaciones suelen interesar a vendedores, ya que los compradorestodavía utilizan ebay.com para pujar sobre los items. Este tipo de estrategia, por lo tanto,incrementará la base de clientes de eBay.

Aunque una SOA se podría implementar sin servicios Web, siendo realistas, cualquierproyecto SOA realizado en los últimos años está plagado de ellos. Es más, la mayoría delos clientes empiezan a practicar con SOA creando un servicio Web, muchas veces sobrelógica de negocio ya existente.

Una de las principales ventajas de implementar una SOA con servicios Web es que losservicios Web están muy extendidos y constituyen una plataforma sencilla y sobre todoneutral.

La arquitectura básica de los servicios Web (mostrada en la Figura 11), consiste enespecificaciones (SOAP, WSDL, y UDDI) que soportan la interacción de un servicioWeb que realiza una solicitud (servicio Web cliente) con un servicio Web que suministrael servicio requerido y con un registro de servicios (directorio de servicios Web). Elsuministrador publica una descripción WSDL de su servicio Web, y el solicitante accedea dicha descripción utilizando UDDI u otro tipo de registro, y solicia la ejecución delservicio del suministrador enviandole un mensaje SOAP.

Figura 11. Arquitectura básica de servicios Web.

La combinación de servicios Web y SOA proporciona una integración rápida.Consideremos un ejemplo con tres aplicaciones de bases de datos de la industria de lasfinanzas que soportan préstamos bancarios, operaciones comerciales y operaciones deinversiones bancarias. Supongamos que dichas aplicaciones se han desarrolladoutilizando una arquitectura clásica de tres capas, separando la lógica de la presentación, lalógica del negocio, y la lógica de la base de datos.

Tal y como se muestra en la Figura 12, es posible reutilizar una aplicación tradicional detres capas como una aplicación orientada a servicios creando servicios a nivel de la capade lógica de negocio e integrando dicha aplicación con otras aplicaciones utilizando elbus de servicios. Otro beneficio de la orientación a servicios es que es más fácil separar lalógica de presentación de la lógica del negocio cuando la capa de lógica de negocio estápreparada para soportar servicios. También es más fácil conectar varios tipos de GUIs y

Arquitectura orientada a servicios (SOA)

23Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 24: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

dispositivos móviles con la aplicación cuando la capa de lógica de negocio soportaservicios. En lugar de ejecutar la lógica de la capa presentación como una interfazaltamente acoplada sobre el mismo servidor, la lógica de presentación puede situarsesobre un dispositivo separado, y la comunicación con la aplicación puede realizarse através del bus de servicios.

Figura 12. Diseño que facilita una integración orientada a servicios.

Otro aspecto importante es que las aplicaciones pueden intercambiar datos másfácilmente utilizando un servicio Web definido en la capa de lógica de negocio queutilizando otra tecnología de integración diferente debido a que los servicios Webrepresentan un estándar común entre todos los tipos de software. XML puede utilizarseindependientemente de la definción de los tipos de datos y estructuras. Finalmente, eldesarrollo de puntos de entrada orientados a servicios en la capa de lógica de negociopermiten a una máquina de gestión de procesos de negocio llevar a cabo un flujoautomático de ejecución a través de los múltiples servicios.

9. SOA y BPM

Un proceso de negocio es una actividad del mundo real consistente en un conjunto detareas lógicamente relacionadas que, cuando se ejecutan en la secuencia adecuada, y deacuerdo con unas correctas reglas de negocio, produce una salida para el negocio. Losprocesos de negocio pueden durar minutos u horas, o incluso semanas, meses o años.

La gestión de procesos de negocio (BPM: Business Process Management) aborda elproblema de cómo las organizaciones pueden identificar, modelar, desarrollar, desplegary gestionar sus procesos de negocio, incluyendo a los procesos que implican a lossistemas de IT e interacciones humanas. BMP es un concepto que se utiliza desde hacemucho tiempo, que comenzó inicialmente con sistemas workflow y que ha derivado deforma progresiva en los modernos sistemas de orquestación y coreografía de serviciosWeb.

Los principales objetivos y beneficios de un BPM incluyen:

Arquitectura orientada a servicios (SOA)

24Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 25: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

• Reducen las diferencias entre los requerimientos del negocio y los requerimientos delos sistemas IT permitiendo que los usuarios del negocio modelen los procesos denegocio, y dejando que el departamento de IT proporcione la infraestructura paraejecutar y controlar estos procesos de negocio.

• Incrementan la productividad de los empleados y reducen los costes operacionalesautomatizando y modernizando los procesos de negocio.

• Incrementan la agilidad y flexibilidad de la empresa separando explícitamente lalógica del proceso de otras reglas de negocio y representan los procesos de negocio deforma que es fácil cambiarlos a medida que los requerimientos del negocio cambian.Esto permite que las organizaciones sean más ágiles, ya que permiten responderrápidamente a los cambios del mercado y conseguir rápidamente un mayor podercompetitivo.

• Reduce los costes de desarrollo y el esfuerzo usando un lenguaje de programacióngráfico, de alto nivel, que permite a los analistas del negocio y a los desarrolladoresconstruir de forma rápida y actualizar los sistemas IT dentro de un dominio particulardel problema.

Obviamente, todos los sistemas IT soportan e implementan procesos de negocio de unaforma u otra. Sin embargo, lo que hace único a la gestión de los procesos de negocio esque explícitamente separa la lógica de dichos procesos de negocio de otras reglas denegocio. De esta forma, la lógica del proceso se mantiene separada de las aplicacionessubyacentes y no está incluida en dichas aplicaciones, por lo tanto, resulta sencillo yrápido modificar los procesos de negocio a medida que los requermientos y lasnecesidades del negocio cambien.

Los primeros sistemas BPM definieron formatos propietarios para representar losprocesos de negocio. Actualmente WS-BPEL proporciona una forma estándar para lacomposición de servicios, así como para la orquestación y coreografía de servicios. Unproceso de negocio puede estar formado por una composición de servicios, y lacomposición de servicios es una tarea importante en SOA para proporcionarfuncionalidades de negocio de grano grueso (coarse-grained).

La Figura 13 muestra la relación entre BMP y SOA:

Figura 13. Relación entre BMP y SOA.

Arquitectura orientada a servicios (SOA)

25Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 26: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

10. Ejemplo práctico

Vamos a ilustrar la implementación de una aplicación SOA creando un proceso BPELque orqueste los servicios Web que habéis desarrollado en la sesión de integración deServicios Web. Concretamente utilizaremos el servicio Web LibroWS para implementarun servicio de búsqueda de un libro a partir de la información de su isbn. El nuevoservicio intentará encontrar el libro solicitado en nuestra biblioteca, y mostraráinformación adicional sobre el libro. Si el libro solicitado no se encontrase en nuestrabiblioteca, el servicio realiza una búsqueda en Amazon y si encuentra el libro mostrará lainformación al usuario. Si el libro finalmente no se localiza en Amazon, devolverá unmensaje indicando que no se ha podido encontrar el libro. El proceso BPEL tambiéncontemplará la posibilidad de que la base de datos local esté deshabilitada por algunarazón o que se genere una excepción por algún otro motivo, manejando la excepcióngenerada e informando al usuario de un error en el procesamiento de la petición. Elesquema del proceso a implementar se ilustra el la Figura 14 y se correspondería con el deun proceso BPEL síncrono.

Figura 14. Esquema del proceso BPEL a implementar

NotaPara realizar el trabajo de esta sesión partiremos del resultado de la sesión 13 (Servicios Web).

10.1. Creación del proyecto BPEL

Lo primero que haremos será crear un proyecto BPEL. Para ello tendremos que utilizarlas órdenes New Project->SOA->BPEL Module pinchando con el botón derecho en lavista Package Explorer. El nombre del proyecto será: proy-int-bp-gf.

10.2. Creación del esquema XML

Arquitectura orientada a servicios (SOA)

26Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 27: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

A continuación definiremos el esquema XML asociado al proceso BPEL. El esquema denombres creado contendrá los componentes que utilizará la especificación WSDL delproceso. Crearemos el esquema mediante New->XML Schema, con el nombreBuscaLibroBS (el sufijo BS lo utilizaremos para denotar que se trata de un servicio BPEL:Bpel Service).

Nos vamos a la vista de Diseño, y arrastraremos desde la paleta de componentes lossiguientes componentes Complex Type, a los que llamaremos como:

• buscaLibroException: al que añadiremos el elemento local message que será unainstancia del tipo string y que tendrá un número de ocurrencias mínimo de 0 ymáximo de 1. Para ello nos situaremos sobre el elemento message y pincharemos conel botón derecho sobre Properties, y modificaremos los campos Min Occurs, yDefinition. Seleccionaremos el tipo string desplegando los Built-in Types disponibles.

• buscaLibroRespTipo: al que añadiremos los elementos locales isbn, autor,numPaginas, titulo, y detallesURL. Los elementos locales serán instancias del tipostring, excepto el elemento numPaginas, que será de tipo int. Además, para loselementos isbn y detallesURL cambiaremos en su definición la propiedad Nillable atrue.

• buscaLibroTipo: al que añadiremos el elemento local isbn, de tipo string.

A continuación añadiremos los siguientes tres componentes globales Element en nuestroesquema (el componente buscaLibroRespElement será Nillable):

• buscaLibroFaultElement: de tipo buscaLibroException• buscaLibroRespElement: de tipo buscaLibroRespTipo• buscaLibroElement: de tipo buscaLibroTipo

Con esto tendremos definidos los tipos que utilizaremos en el fichero WSDL del procesoBPEL.

10.3. Creación del documento WSDL

Recordemos que un proceso BPEL es un servicio Web y, por lo tanto, tiene un ficheroWSDL asociado. Crearemos un nuevo documento WSDL (con New->WSDL Document),y lo llamaremos BuscaLibroBS.

En la ventana Name and Location nos aseguraremos de importar el esquema XML queacabamos de crear en el paso anterior. Buscaremos el esquema expandiendo el nodo ByFile, hasta llegar al fichero BuscaLibroBS.xsd.

En la ventana Abstract configuration especificaremos los siguientes mensajes:

• Mensaje Input: Nombre: requestMessage. Tipo buscaLibroElement, (loencontraremos expandiendo el nodo Elements del fichero BuscaLibroBS.xsd)

• Mensaje Output: Nombre: responseMessage. Tipo buscaLibroRespElement• Mensaje Fault: Nombre: faultMessage. Tipo buscaLibroFaultElement

Arquitectura orientada a servicios (SOA)

27Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 28: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Finalmente, en la ventana Concrete configuration elegiremos el BindingType SOAP, y elBinding Subtype Document Literal

Con esto, hemos definido el port type de nuestro servicio Web, con los mensajesanteriores.

Si pasamos al la vista de código, o a la vista WSDL, podemos ver que automáticamentese ha añadido la definición de un partnerLinkType, con un único rol. De esta forma,permitimos que cualquier cliente o partner pueda interaccionar con el proceso BPEL sinningún requerimiento adicional.

10.4. Abrir y desplegar el servicio Web partner

Antes de continuar con la creación del proceso BPEL, vamos a desplegar el proyecto deintegración proy-int-ear-gf, que contiene al servicio Web LibroWS, en el servidor deaplicaciones. De esta forma podremos, más adelante, desplegar y probar nuestro procesoBPEL.

10.5. Creación el proceso BPEL

Una vez que hemos creado los fichero BuscaLibroBS.xsd y BuscaLibroBS.wsdl, yapodemos crear el proceso BPEL. Lo haremos desde el nodo Process Files, conNew->BPEL Process. El nombre de nuestro proceso BPEL será una vez másBuscaLibroBS.

Nos situaremos en la vista de diseño, y seguiremos los siguientes pasos:

1. Añadimos el Partner Link que representa al cliente de nuestro proceso BPEL. Paraello arrastramos a la vista de diseño el fichero BuscaLibroBS.wsdl. El nombre delpartner será Cliente y lo situaremos a la izquierda del proceso BPEL.

2. Añadimos el Partner Link correspondiente al servicio Web LibroWS. Para elloarrastramos su fichero WSDL a la vista de diseño, a la derecha del proceso BPEL (elfichero se encuentra en proy-int-ws-gf->Web Services->LibroWS. El nombre delpartner será LibroWS). Nos aseguraremos de que el campo WSDL tenga el valor/partners/LibroWS/LibroWS.wsdl. Elegimos la opción Use a newly created partnerLink Type, con los campos:• Create in File: /Partners/LibroWS/LibroWSWrapper• Partner Link Type Name: LibroWSLinkType• Partner Service will implement (Partner Role): Role name: LibroWSRole, y Port

Type: LibroWS

3. Añadimos la actividad Receive, con los campos:• Name: FromCliente• PartnerLink: Cliente• Create InputVariable; Name: BuscaLibroBSOperationIn

Arquitectura orientada a servicios (SOA)

28Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 29: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

4. Añadimos la actividad Invoque (Fíjate que en este caso el PartnerLink será el servicioWeb) con los siguientes campos:• Name: InvoqueLibroWS• PartnerLink: LibroWS• Operation: recuperaLibro• Create InputVariable; Name: RecuperaLibroIn• Create OutputVariable; Name: RecuperaLibroOut

5. Añadimos el resto de la lógica del proceso. Si el libro no se encuentra en la base dedatos de la biblioteca, entonces recuperaLibro devuelve un resultado vacío (puedescomprobar qué devuelve exactamente ejecutando una prueba sobre el servicio Web,por ejemplo, desde proy-int-sw-gf\WebServices\LibroWS ejecutamos Test WebService en el menú emergente). Para hacer la comprobación en la actividad ifcorrespondiente, tenemos que utilizar la función Count en el menú Nodes de laventana BPEL Mapper. La función Count devuelve el número de argumentos delelemento que se le pasa como parámetro. En la Figura 15 se muestra el detalle parauna de las condiciones. El segundo elemento de la función Greater than es unNumber Literal (en el menú Number).

Figura 15. Detalle de una condición en BPEL Mapper

6. Si recuperaLibro no encuentra el libro, tenemos que buscarlo en Amazon. Puesto queel port type recuperaLibroAmazon del servicio Web LibroWS realiza una llamada aAmazón, vamos a utilizarlo (en lugar de llamar directamente al servicio Web deAmazon). Por lo tanto en la actividad invoque correspondiente tendremos que hacerreferencia al PartnerLink LibroWS, y el campo Operation tendrá el valorRecuperaLibroAmazon.

7. El proceso devuelve dos tipos de mensajes de respuesta: la respuesta "normal"(normal response, basada en el mensaje buscaLibroRespElement), que utilizaremoscuando se encuentra el libro, y la respuesta de "fallo" (fault response, basada en elmensaje buscaLibroFaultElement), que utilizaremos cuando el libro no es encontrado.En este último caso, el mensaje será: "xxxxx no encontrado", siendo xxxxx el isbn dellibro a buscar.

8. En en caso de que la base de datos no esté "en marcha", el servicio RecuperaLibrodevuelve una excepción. Por lo tanto, vamos a tener que incluir un manejador deexcepciones en nuestro proceso BPEL si queremos capturar y procesar lasexcepciones. Para ello, teniendo seleccionado el proceso BPEL, elegiremosAdd->Fault Handlers. O, alternativamente, pincharemos sobre el cuarto botón que

Arquitectura orientada a servicios (SOA)

29Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 30: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

aparece en la parte superior de nuestro proceso BPEL. Por simplicidad, vamos acapturar, no una excepción concreta, sino cualquier tipo de excepción. En elcontenedor Fault Handler ejecutar Add->catch all (o bien elegimos el segundo botónen la parte superior del contenedor Fault Handler). Dentro de catch-all añadiremoslas actividades Assign y Reply, necesarias para devolver el mensaje: "xxxxx noencontrado. ERROR".

El resultado de la implementación de nuestro proceso BPEL será el que se muestra en laFigura 16.

Figura 16. Detalle de una condición en BPEL Mapper

Finalmente compilaremos nuestro proyecto seleccionando Clean and Build en el menúemergente del proyecto bpel.

10.6. Creación del proyecto Composite Application

A continuación crearemos la Composite Application (NewProject->SOA->CompositeApplication). Le daremos el nombreproy-int-bp-CompositeApp-gf

Una vez creada, tenemos que añadirle el proyecto BPEL anterior. Para ello ejecutaremosAdd JBI Module en el menú emergente de la Composite Application. Seguidamenteseleccionamos nuestro proyecto BPEL (proy-int-bp-gf), y pinchamos sobre Add Project

Arquitectura orientada a servicios (SOA)

30Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 31: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Jar Files.

10.7. Desplegar y probar la Composite Application

Ya sólo nos queda desplegar proy-int-bpelApplication en el servidor de aplicaciones yrealizar alguna prueba.

Vamos a crear 4 casos de prueba en la CompositeApplication, con los nombres que acontinuación indicamos:

• LibroFound. Probaremos la búsqueda de un libro que SÍ está en la base de datos denuestra biblioteca. Por ejemplo: 0321180860. Como resultado nos tiene que devolverla información de isbn, título, número de páginas y autor.

• LibroAmazon. Probaremos la búsqueda de un libro que NO está en la base de datosde nuestra biblioteca, pero sí en Amazon. Por ejemplo: 1904811817. Como resultadonos tiene que devolver la información de isbn, título, número de páginas, autor ydirección URL del libro.

• LibroNotFound. Probaremos la búsqueda de un libro que NO está en la base de datosde nuestra biblioteca, ni en Amazon. Por ejemplo: 99999. Como resultado nos tieneque devolver: "99999 no encontrado".

• LibroException. Forzaremos la generación de una excepción. Para ello "paramos" labase de datos. A continuación re-arrancamos el servidor. Y ejecutamos la prueba conel valor de isbn: 0321180860 (que se encuentra en nuestra biblioteca). Comoresultado nos tiene que devolver: "0321180860 no encontrado. ERROR".

10.8. Resumen del ejemplo práctico

Arquitectura orientada a servicios (SOA)

31Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 32: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Estructura de Proyecto

Se deberá crear un nuevo proyectoproy-int-bpel, según los siguientes pasos:

1. Creamos el fichero de esquemas para el procesoBPEL: BuscaLibroBS.xsd

2. Creamos el fichero WSDL para el procesoBPEL: BuscaLibroBS.wsdl

3. Creamos el proceso BPEL:BuscaLibroBS.bpel• Creamos los partner links• Añadimos las actividades que implementan

la lógica del proceso• Añadimos un manejador de excepciones

4. Compilamos el proyecto BPEL

Se deberá crear un nuevo proyectoproy-int-bpCompositeApp-gf, al que le queañadiremos nuestro proceso BPEL como uncomponente JBI. A continuación desplegaremos laComposite Application en el servidor de aplicaciones

Finalmente crearemos los siguientes casos de pruebapara comprobar el correcto funcionamiento denuestro proceso BPEL:

• LibroFound• LibroAmazon• LibroNotFound• LibroException

Recuerda que para poder probar nuestro procesoBPEL tendremos que haber desplegado previamentelos servicios Web creados en la sesión de integraciónde servicios Web (o al menos el servicio LibroWS,que es el que va a utilizar nuestro proceso BPEL).

Arquitectura orientada a servicios (SOA)

32Copyright © 2008-2009 Depto. CCIA All rights reserved.

Page 33: Arquitectura orientada a servicios (SOA) · Elementos que la componen.....4 4 Características de los servicios de una SOA ... del ámbito del software de empresa. La arquitectura

Arquitectura orientada a servicios (SOA)

33Copyright © 2008-2009 Depto. CCIA All rights reserved.