Oracle MCS: Consumir un connector sin usar el traductor XML/JSON

Actualmente nos encontramos inmersos en un proyecto de Mobile Cloud Service (MCS) para el que estamos creando conectores SOAP con el fin de integrarlos con Siebel. Como ventajas a destacar de MCS, subrayaría que nos permite consumir servicios SOAP, payload en XML y los traduce automáticamente a JSON. Puedes revisar más información en Documentación de MCS.

Cuando hayamos creado el conector SOAP y pulsemos en ‘Test’ para probarlo, observaremos que en el body de la llamada nos solicitan enviar un JSON.

Existen algunos casos en los que el traductor no funciona por defecto. Hemos encontrado problemas con algunos servicios, en los que la estructura XML es como ésta:

Parece que el traductor no añade los namespaces en el header con lo que Siebel no puede parsear el request.

La solución sería enviar un XML en lugar del JSON, sin utilizar el traductor.

Podemos probarlo en el tester del conector SOAP, para el que necesitaremos un XML obtenido de cualquier cliente de servicios web como por ejemplo SoapUI.

También tendremos que añadir “Content-Type: application/xml;charset:UTF-8” y “Accept: application/xml” como parámetros del header:

Si probamos el conector podemos ver que la llamada al servicio web esta funcionando correctamente:

¿Cómo implementamos nuestra API para que envíe un payload XML al conector?

Tendríamos que añadir el XML que deseamos enviar al body del request y setear los parámetros en el header como hemos hecho con el conector.

¿Sería la forma recomendada de ejecución? Sí, pero en lugar de enviar un String con el mensaje SOAP, sería más seguro enviarlo como un objeto JavaScript.

Para implementarlas tendríamos que seguir los siguientes pasos:

1- Descargar e instalar Node.js. link

2- Instalar el módulo xml2js.

En este ejemplo ‘test_rrs’ el directorio se encontraría donde tenemos el fichero:


3- Añadir xml2js como dependencia en el fichero package.json:

4- En el fichero JavaScript, como ya comenté anteriormente, la idea principal es la de construir un mensaje SOAP como un string. A continuación, muestro la primera imagen de la implementación base sobre la cual realizaremos cambios:

Primero añadiremos  var xml2js = require(‘xml2js’); al principio de la implementación.

En este momento, nos encontraríamos en la punto más complejo, ya que tedremos que crear un JSON como éste:
‘ $ ‘ se utiliza para añadir atributos al XML element.
‘ _ ‘ se utiliza para añadir el valor al elemento.
El último paso que tendremos que ejecutar será crear un objeto xml2js.Builder y ejecutar el método buildObject utilizando el JSON que acabamos de crear. El resultado de este método es el body que procederemos a enviar.
Una vez hayamos finalizado la implementación, tendremos que empaquetarlo entero dentro del zip que nos hemos descargado y lo subiremos a MCS.
Si queréis saber más acerca de xml2js podéis hacerlo aquí.
Twitter
LinkedIn
Evolución, innovación y transformación
37 Service Expertise avalados por Oracle 
Our value proposition
100% Oracle posts
Follow our day-to-day activities