Inicio > SOA / BPM / WebCenter > Consumir o exponer servicios REST con Oracle Service Bus 11g

Consumir o exponer servicios REST con Oracle Service Bus 11g

Con Oracle Service Bus 11g es posible consumir servicios REST con el fin de integrarlos en la lógica de un proceso de negocio interno o de exponerlos mediante una interfaz SOAP. Cualquiera que sea la intención, el proceso resulta sencillo mediante los pasos expuestos en esta entrada.

En el ejemplo, el servicio REST recibe los parámetros por cadena de consulta (Query string) y devuelve un XML con el resultado de la ejecución.

Primero se ha de crear un  servicio de negocio (business service):

  1. El tipo del servicio ha de ser Servicio de Mensajes (Messaging Service):

    Tipología del servicio de negocio

    Tipología del servicio de negocio

  2. Para los mensajes, tanto de petición como respuesta, seleccionar XML:

    Tipología de los mensajes de petición y respuesta

    Tipología de los mensajes de petición y respuesta

  3. Agregar la URI del servidor en el cual se encuentra el servicio a consumir.
  4. Si se desea o es necesario, modificar el resto de parámetros. En este caso se dejan por defecto.

Ahora ya se puede consumir el servicio REST. El siguiente paso es integrarlo en un servicio de proxy (proxy service) para poder consumirlo mediante SOAP:

Configuración del servicio proxy

Configuración del servicio proxy

Editando el flujo de ejecución del servicio creado, la idea es montar una variable con la cadena de consulta correspondiente, para el ejemplo: $queryString, concatenando en ella los parámetros necesarios. Se pueden agregar actividades previas como la validación de los parámetros para asegurar el correcto funcionamiento de la ejecución, etc. Una vez en la actividad de direccionamiento (Routing) al servicio de negocio creado, se han de añadir los siguientes pasos a la petición:

  1. Definición de las correspondientes cabeceras de transporte
  2. Inserción del método GET en la petición:
    fn-bea:inlinedXML(concat('<http:httpmethod xmlns:http="http://www.bea.com/wli/sb/transports/http">GET</http:httpmethod>'))
  3. Inserción de la cadena de consulta en la petición:
    fn-bea:inlinedXML(concat('<http:query-string xmlns:http="http://www.bea.com/wli/sb/transports/http">',$queryString,'</http:query-string>'))
Acciones del direccionamiento

Acciones del direccionamiento

Según el tipo de respuesta, que en este caso es XML, se puede crear una transformada de tipo XQuery que permita interpretar el resultado de la ejecución y devolverlo al consumidor del servicio proxy. A falta de un esquema concreto sobre la respuesta, esta transformada recibe un elemento de tipo AnyType y genera una respuesta según las posibles respuestas conocidas.

Interpretación del resultado REST

Interpretación del resultado REST

En base a este ejemplo sencillo, se pueden crear integraciones de servicios REST con distintos niveles de complejidad, teniendo cada caso particular sus peculiaridades y retos a superar. A ver con qué nos encontramos!

  1. Aún no hay comentarios.
  1. octubre 1, 2013 en 09:42

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: