Uso de Attachments en Oracle Service Bus

A menudo nos encontramos con la necesidad de recibir un documento en nuestro proceso OSB. Para ello podemos diseñar servicios que reciban este adjunto de diferentes modos:

  • Adjunto online: este caso se da cuando el adjunto forma parte del mensaje de entrada (está incluido en el XML del body). Este mensaje suele ir codificado antes de incrustarse en el cuerpo del mensaje.
  • Adjunto MIME: en este caso, el adjunto viajará en el header del mensaje. Estará también codificado, siendo base64 la codificación más común para ello.

Vamos a ver un ejemplo de tratamiento de archivos adjuntos en el Bus de Servicios de Oracle.

Comenzaremos la práctica con una estructura de proyecto vacía.

 

 

Crearemos un wsdl llamado Attachment.wsdl con una operación que tenga como parámetro de entrada una estructura multipart con un campo de tipo base64.

 

 

Podéis descargar el wsdl de ejemplo aquí.

 

Acto seguido generaremos un Proxy Service y su correspondiente Pipeline.

 

 

Utilizamos el wsdl generado anteriormente (Attachment.wsdl) para la configuración de estos elementos.

 

 

Por último, indicamos la URL relativa sobre la que expondremos el servicio:

 

 

En el composite de nuestro proyecto, podremos ver estos elementos generados:

 

 

Generar adaptador fichero para almacenarlo en disco

 

El siguiente paso que realizaremos en nuestro ejemplo es configurar un adaptador de fichero para almacenar el archivo recibido como Attachment en nuestro servicio expuesto.

Para ello Insertamos como servicio externo un adaptador de tipo File:

 

 

Comenzamos la configuración del adaptador indicando el nombre del mismo:

 

 

Al no basarnos en ningún tipo de WSDL para la definición de la interfaz del adaptador de ficheros, clickamos en Next.

 

 

Indicamos un nombre de JNDI para este adaptador.

 

 

Seleccionamos operación “Write File”, ya que deseamos usarlo para la escritura en disco de un fichero, y damos un nombre a esta operación (esto se reflejará en el WSDL generado y asociado a este adaptador).

 

 

Indicamos la ruta donde desamos que escriba los ficheros y la convención de nombres. Esta convención de nombres nos permitirá que se vayan escribiendo versiones de ficheros con distintos nombres.

 

 

Por último indicamos que no es necesario el tratamiento de la información del fichero.

 

 

Una vez finalizada la configuración del adaptador de fichero, podremos ver que se ha generado en el composite del proyecto:

 

 

Quedando el mismo con el siguiente aspecto:

 

 

El último paso en la culminación de este ejemplo será la inclusión del tratamiento de la información en el Pipeline. Para ello, abriremos nuestro pipeline (Attachment_pipeline) e insertaremos un Pipeline Pair en el flujo.

 

 

Como acción en el Stage1 del Request Pipeline insertaremos un elemento Publish para ejecutar el adaptador de fichero.

 

 

Seleccionamos el Bussines Service de nuestro adaptador de fichero (AdaptadorFicheroBS).

 

 

Incluimos una acción Replace dentro del elemento Publish.

 

 

Y asociamos al body el contenido de la variable attachment.

 

 

Probar el servicio

 

Por último, nos queda probar el servicio y comprobar que el desarrollo es el correcto. Para ello utilizaremos SoapUI (obviamente, antes, debemos haber desplegado el ejemplo que hemos desarrollado).

 

Creamos un nuevo proyecto, indicando la ruta del wsdl asociado al servicio expuesto por nuestro ejemplo:

 

 

Indicamos unos datos de prueba en la petición y vamos a la sección Attachment.

 

 

Seleccionamos una imagen de prueba y la anexamos a la petición.

 

 

Lo que nos mostrará esta configuración.

 

 

Por último, nos queda comprobar que se ha escrito la imagen en la ruta configurada.

 

 

Twitter
LinkedIn
Evolución, innovación y transformación
42 especializaciones avaladas por Oracle
Nuestra propuesta de valor
Posts 100% Oracle
Sigue nuestro día a día