Invocar Servicios REST, tipo POST, con JSON en BPEL 12c

El adaptador REST es una importante característica en la versión 12c de Oracle Middleware. Nos permite la exposición e invocación de servicios REST de una forma sencilla, disponiendo también de integración con objetos JSON. En este post vamos a ver cómo podemos consumir un servicio REST de tipo POST que requiera de un objeto JSON como entrada al mismo, y cómo trabajar con dicho objeto desde un proceso BPEL. Empezaremos generando un nuevo proceso BPEL, sobre nuestro proyecto SOA (ya generado). En nuestro caso va a ser un proyecto síncrono.

rest

Una vez lo tengamos generado, en el composite del proyecto, crearemos un adaptador REST (arrastramos el elemento sobre la sección External References).

Procedemos a configurar nuestro adaptador. Para ello, indicamos un nombre, seleccionamos que sea de tipo Referencia (por defecto estará seleccionado) e indicamos la URL del servicio.

Ahora procederemos a indicar las operaciones del servicio REST. Hay dos formas de hacer esto, mediante un wadl (que definirá todas las operaciones y parámetros esperados para las mismas) o indicando manualmente estas operaciones y los datos requeridos para las mismas. Como no siempre disponemos un wadl vamos a ver el ejemplo de cómo configurar manualmente estas operaciones. Pulsamos en el símbolo más, para añadir una nueva operación, y seleccionamos Add operation binding.

Esto nos abrirá una nueva ventana donde indicaremos el nombre de la operación, el verbo y que requiere un objeto JSON como petición. Acto seguido, pulsaremos en la ruleta para configurar el tipo de objeto requerido por este servicio.

Esto nos abrirá un wizard para ir configurando esta petición JSON y traducirla a un objeto XML. Pulsamos en siguiente, e indicamos el nombre y ubicación del xsd que defina el esquema del objeto a usar.

Elegimos JSON como tipo de objeto.

E indicamos el namespace del mismo, así como el nombre del objeto raíz y un ejemplo del mismo. Si disponemos de un archivo que contenga un ejemplo del mismo, podemos importarlo mediante la opción Browse.

Por último, el formulario nos mostrará el xsd resultante de la conversión de formatos.

Veremos en la definición de nuestra operación REST que está configurado este xsd como esquema de la operación, junto con el elemento raíz que hemos indicado anteriormente.

Pasaremos a terminar de definir la operación REST, indicando para nuestro caso que no habrá una respuesta por parte del servicio.

Aceptamos, y veremos reflejada la operación en el servicio REST. Podremos, si lo deseamos, definir más operaciones para este servicio, pero en nuestro caso nos servirá con esta operación para el ejemplo.

Asignamos el servicio REST a nuestro proceso BPEL, con lo que tendremos este aspecto de composite.

Acto seguido, procederemos a integrar el servicio REST en nuestro proceso. Para hacerlo abrimos nuestro proceso BPEL y utilizamos el componente Invoke.

Una vez introducido en el flujo, lo abrimos e indicamos el partnerLink del servicio REST.

A continuación generamos un nuevo objeto de entrada para esta invocación pulsando en el “+”.

Indicamos el nombre y aceptamos.

Y hacemos lo mismo para el objeto que contendrá la respuesta al servicio (aunque no tengamos un payload para el mismo, debemos hacerlo igualmente).

Por último, utilizamos un Assign para la asignación de datos hacia el servicio REST.

Abrimos el assing y asignamos los valores a enviar al servicio REST.

Como hemos visto, el objeto de la petición tiene el formato de un xml porque internamente, con la configuración que hemos indicado al generar el adaptador REST, el propio servidor se encargará de traducir este xml a un objeto JSON en la invocación al servicio REST, con lo que nosotros no debemos preocuparnos de nada más.
En cuanto al proceso BPEL, tendrá este aspecto:

Puedes descargarte el código de este ejemplo aquí.

Evolución, innovación y transformación
37 especializaciones avaladas por Oracle
Oportunidades ilimitadas
Posts 100% Oracle
Sigue nuestro día a día