jueves, 29 de diciembre de 2016

Oracle Sales Cloud Adapter en BPEL - SOA 12c


En este articulo se abordará el uso del Adaptador para Oracle Sales Cloud en una aplicación SOA 12c con BPEL.

Lea este documento para conocer acerca de como crear un Adaptador que se comunique con los servicios que expone Oracle Sales Cloud desde un proceso BPEL que sea ejecutado desde un SOAP Service.



Creando la PoC (Proof of Concept)

1_ Abra JDeveloper y cree una aplicación SOA desde el apartado SOA Tier

2_ Asignele un nombre a la aplicacion, por ejemplo: SalesCloud_IntegrationApp



3_ Coloque un nombre para el Proyecto, por ejemplo: SalesCloud_PoC


4_ Arranque desde cero con un "Empty composite" y haga clic en Finish.

5_ Arrastre y suelte un BPEL Process en el carril de Components:



6_ Llame al BPEL: ProcessAccount - al Servicio SOAP: getAccountOwner_WS y utilice el template Asynchronous BPEL Process:



7_ Abra el Esquema XML ProcessAccount.xsd y edite desde el Source los elementos de entrada (input - punto 3) y salida (result - punto 4), para ello cambie sus nombres y tipos de datos como se muestra en la siguiente figura:


Estos cambios se realizan para que el ejemplo sea mas acorde con la muestra sobre el uso del Adaptador Oracle Sales Cloud. Mas adelante, entedenderá el porque de estos cambios.


8_ Arrastre y suelte un Adaptador del tipo Oracle Sales Cloud al carril External References:



9_ Darle un nombre al Adaptador, por ejemplo: OSC_getAccount


What does this endpoint do? --> Opcionalmente puede asignarle una descripción al Adaptador.



Apartado:
Entendiendo Oracle Sales Cloud (OSC)
Para entender como funciona Oracle Sales Cloud a nivel de integraciones, hay que tener en cuenta varios puntos.

Lo primero, es saber que existe un único modo de entrar a Oracle Sales Cloud, y es a travéz del catálogo de servicios (OSC Services Catalog), el mismo ofrece un contrato (WSDL) que al ser invocado devuelve una lista de Servicios con operaciones que pueden ejecutarse:


Dicho catálogo, necesita de credenciales de acceso (Credential Store Framework, CSF) que deben ser provistas por el Admin de Oracle Sales Cloud:


Como se ve en la imagen, el Adaptador de Oracle Sales Cloud usará las URL hacia los WSDL que devuelva el Catálogo de Servicios (también con sus respectivas credenciales de autorización).

Fin del Apartado



10_ Ingresar la URL del Servicio de Catálogos y sus credenciales de acceso. Para ello, cree una CSF haciendo click en el botón con simbolo + y llenando los campos con los datos correspondientes:



11_ Una vez, creada la CSF Key, hacer clic en el texto Test para asegurarse de que la coneción es exitosa y luego haga clic en Next > para proseguir:


Atención: mayormente, el acceso al catálogo de servicio de Oracle Sales Cloud necesita una configuracion proxy con servidor y puerto. Configurar esto antes de seguir adelante.


12_ Seleccione un Objeto de Negocio (Business Objects) o Servicio y luego la operación que desee invocar:



13_ Para finalizar con la creación del Adaptador, haga clic en el botón Finish.

14_ Conecte el BPEL Process ProcessAccount con el Adaptador creado OSC_getAccount usando las flechas de conector de ambos componentes:



15_ Abra el BPEL ProcessAccount, arrastre y suelte entre el componente receiveInput y callbackClient una suceción de componentes de la forma: Assign - Invoke - Assign:



16_ Conecte los componentes Invoke1 y OSC_getAccount uniéndolos con las flechas conectoras de ambos componentes, como se muerta en la siguiente figura:



17_ Configure el componente Invoke1 editando las variables de Entrada (Input Variable) y de Salida (Output Variable) para el Adaptador anteriormente creado. Para ello, haga clic en el botón con simbolo + de cada Variable (Pestañas Input & Output), como se muestra en la siguiente figura:


En cada variable (Input y Ouput) establezca un nombre significativo y haga clic en el botón OK:




18_ haga doble clic en Assign1 y realice los mapeos necesarios tal como mapear $inputVariable/payload/cuentaNro a $OSC_getAccount_InputVariable/parameters/getAccount/PartyID como muestra la siguiente figura:



19_ Haga lo mismo para Assign2 y mapee el $OSC_getAccount_OutputVariable/parameters/getAccountResponse/OwnerName a $outputVariable/payload/processResponse/propietarioDeCuenta como muestra la siguiente figura:


Ya estaría lista la aplicación para deployarla en un ambiente local de desarrollo, pero como la plataforma Oracle Sales Cloud tiene seguridad SSL y acceso a travez de un proxy server, se debe configurar el dominio con los certificados SSL y la configuración proxy para acceder al Contrato WSDL del catálogo de Servicios de Oracle Sales Cloud.



Configurando Dominio

Configurar Proxy Server

Para configurar un proxy en nuestro dominio y que WebLogic lo use para la integración con Oracle Sales Cloud, se debe editar el archivo %MW_HOME%\user_projects\domains\dominio\bin\setDomainEnv.cmd y agregar en la linea (en mi caso 283) donde pone set EXTRA_JAVA_PROPERTIES=%EXTRA_JAVA_PROPERTIES% -Dsoa.archives... mas adelante despues de -Dweblogic.transaction.blocking.rollback=true agregar estas propiedades:

-Dhttps.proxyHost=www-servidor.proxy.com -Dhttps.proxyPort=80 -Dhttp.proxyHost=www-servidor.proxy.com -Dhttp.proxyPort=80 -Dhttp.nonProxyHosts=127.0.0.1





Realizando Pruebas Unitarias

Luego de importar los certificados SSL y configurar el servidor Proxy, se debe deployar el proyecto SalesCloud_PoC desde JDeveloper al ambiente local.

Una vez deployado el proyecto, acceder a la consola del Enterprise Manager (EM): http://localhost:7001/em y probar el servicio SOAP getAccountOwner_WS con un número de cuenta válido.

Como se logra ver en la siguiente figura, la integración ha sido totalmente un éxito! :D


6 comentarios:

  1. HOLA UNA PREGUNTA QUE VERSIÓN DE JDEVELOPER ES ?

    ResponderEliminar
    Respuestas
    1. Hola Jose, la version de JDeveloper que se uso fue la 12.2.1.2.0. Saludos!

      Eliminar
    2. Hola Juan es que a mi no me aparecen las nubes para lo de cloud.

      Eliminar
    3. Puede estar pasando alguna de estas cosas:
      1- Tu JDeveloper no tiene todos los plugins de SOA.
      2- Tu JDeveloper es estandar sin las extensiones de SOA.
      3- Tienes la version antigua de JDeveloper.

      Aunque no tengas el Adaptador de Sales Cloud, puede usar un Adaptador SOAP y ayudarte de las credenciales CSF-Key y Certificados SSL para realizar la comunicación.

      Por favor, podrias comentarme que versión de JDeveloper tienes? asegurate de tener los siguientes plugins y extensiones instaladas:
      Middleware Products Plugins

      Eliminar
    4. mi versión de jDeveloper es Studio Edition Version 12.2.1.0.0

      Eliminar
    5. oye una pregunta ya configure mi certificado y las credenciales en ORACLE ENTERPRISE MANAGER y de ahí en adf cuando copilo el código me sale este error de políticas de seguridad INFORMACTION:POLICY SUBJECT IS NOT REGISTERED
      INFORMACTION:EffectivePolicySetFeacture not on the binding will look up policy set for ResourcePattern ese mi error.

      Eliminar