Oracle SOA Suite – Como crear un BPEL

Una vez mas les quiero compartir pequeño Post donde les enseñare a crear un BPEL muy siempre el cual lo único que hace es sumar dos numero y regresar el resultado, quizás no sea gran cosa pero si apenas estas aprendiendo este es un ejemplo bastante simple que te puede ayudar a comprender mejor la forma de desarrollar un BPEL con Oracle SOA Suite.

Paso 1: Crear una proyecto SOA.

Entraremos a JDeveloper y daremos click en File/New/SOA Project y nos saldrá la pantalla siguiente, Solo cambiamos el nombre del proyecto a “Calculadora” y damos Next en las dos pantallas.

CreateSOAProject CreateSOAProject2

En este punto ya habrás creado una SOA Project y te abrirá la pantalla del Composite, de no ser a podemos abrirlo desde el archivo composite.xml que se genera en la estructura del proyecto:

Paso 3: Crear los tipos de datos en un Schema

El siguiente paso es clave ya que es indispensable definir los tipos de datos que recibirá y responderá nuestro servicio para lo cual crearemos un Schema de la siguiente manera File/New/XML Schema asegurándonos que la pestaña All Technologies este seleccionada.

 NewSchema

 En la siguiente pantalla solo cambiamos el nombre del archivo a “Calculadora.xsd” y continuamos.

Continuaremos con crear los tipos de tal forma que nuestro Schema quede de la siguiente manera:

NOTA: En la siguiente entrada explico mas a detalle como crear un Schema

SchemaTypes

SchemaTypesSource

Paso 3: Crear un BPEL

 Con el Schema creado ya podemos crear un BPEL que reciba SumaRequestType y que tenga como resultado un SumaResponseType

Abriremos el archivo composite.xml que se crea con el proyecto en el cual daremos click derecho en la sección del medio “Components” y seleccionamos Insert/BPEL Process como se muestra en la siguiente figura.

CreateBPEL

 Nos deberá aparecer una pantalla como la siguiente y pondremos los datos como aparecen:

CreateBPELandWSDL

Seleccionamos la opción de BPEL 2.0, Cambiamos el nombre a CalculadoraProcess, En NameSpace podemos poner lo que mas nos agrade no es necesario dejarlo igual, En Temple seleccionamos Synchronous BPEL Process para que sea un servicio con entrada y respuesta y finalmente en Input y Output seleccionamos los tipos que definimos en el Schema del paso 2. Seleccionar los correctamente los Input y Output es un paso clave ya que definen los tipos que se utilizaran como parámetro de entrada y salida de nuestro servicio. Finalmente presionamos OK y tendremos creado en BPEL que se mirara a sí:

CreateBPELFinish

En el centro tenemos el BPEL(Azul) el cual lo creamos en el paso anterior, Del lado izquierdo tenemos expuesto un WebService que para los parámetros
al BPEL y de igual forma regresara al consumidor el resultado del BPEL, Entre medio de los dos tenemos una linea que indica que el WebService y el BPEL están conectados por lo que la información fluirá entre los dos.

Ya con el BPEL creaso solo faltara programar el BPEL para que realice el calculo de la suma para lo cual daremos doble click sobre el BPEL para abrir el editor y nos dirigirá a la siguiente pantalla:

NewBPEL

La imagen anterior nos muestra la forma mas simple del BPEL el cual solo tiene dos actividades receiveInput que solo recibe los parámetros de entrada en la variable llamada “InputVariable” y la actividad replyOutput las cual regresa el resultado del BPEL en la variable “OutputVariable”. Ambas variables son creadas de forma automática y corresponden con los tipos definidos en el Schema (SumaRequestType y SumaResponseType).

El siguiente paso consiste en sumar los dos valores y ponerlos en la variable OutputVariable para que BPEL regrese el resultado al terminar. Para esto tendremos que crear una actividad llamada Assign la cual se encuentra en la paleta de componentes del lado  Derecho:

BPELAssignResponse

Presionamos sobre “Assign” y sin soltar arrastramos hasta colocarlo en medio de las dos actividades existentes y le ponemos el nombre de SumaAssign quedando como se muestra en la figura anterior.

La actividad Assign sirve para asignar valores a cualquier variable que tengamos en el BPEL por lo cual daremos doble click sobre la actividad Assign:

BPELAssignResponse
Veremos la pantalla anterior la cual esta dividida en tres secciones:

  • Izquierda: De esta parte tomaremos los valores para hacer las asignaciones
  • Derecho: En esta sección ponemos los valores asignados mediante la sección de la izquierda.
  • Abajo: Aquí solo se en listan las asignaciones que vamos haciendo.

Para sumar los dos valores necesitaremos mas de un campo por lo que tendremos que hacer una formula arrastrando la calculadora hasta el nodo llamado result:

AssignResponseStep2En la pantalla siguiente solo seleccionamos el nodo num1 para que se coloque arriba agregamos el operador “+” y hacemos lo mismo para el num2, Con esto ya tenemos lista la formula y damos ok.AssignResponseStep3

Finalmente tendremos la asignación en la parte de abajo y presionamos OK para finalizar la asignación.

Guardamos los cambios del proyecto y nuestro BPEL esta listo para deployarse

Paso 4: Deploy

Para hacer el deploy tendremos que tener corriendo una instancia de WebLogic con la SOA Suite instalada y seguir los siguientes pasos.

Sobre el proyecto hacemos click derecho y precionamos /Deploy/Composite… y nos saldrá una pantalla nueva. Seleccionamos Deploy to Aplicaction server/Next en la pantalla siguiente Next sin hacer ningún cambio, en la siguiente pantalla seleccionamos el servidor al que queremos hacer deploy o damos de alta uno nuevo en caso de no tener ninguno registrado, En la siguiente pantalla solo seleccionamos next, y finish.

Con estos pasos tendremos la composicion SOA y el BPEL deployados y ya solo faltara hacer una prueba con algún cliente de WebServices como soapUI o la consola de Weblogic.

Paso 5: Prueba

Para obtener la URL del webservice nos vamos al portal EnterpriceManager el cual esta en la url

http://localhost:7001/em en caso de no estar instalado el weblogic en la misma maquina cambiar localhost por la IP.

Una vez autenticados del lado izquierdo entramos a la ruta /SOA/soa-infra/default/Calculadora

nos abrirá un dashboard solo de la composición y en ella veremos un icono con un mondo y una pieza de rompecabeza, damos click y aparecera una url que termina en ?wsdl esa la copiamos y la usamos en cualquier cliente para consumir webservices.

NOTA: Mas adelante publicare como instalar JDeveloper, WebLogic, SOA Suite y OSB.. 

13 thoughts to “Oracle SOA Suite – Como crear un BPEL”

  1. Estimado Oscar,
    Muchas gracias por el tutorial para todos los que deseamos aprender mas de esta herramienta
    Ahora te comento cual es mi problema:
    No hay caso de que pueda deployar un Bper (Deloy to Application Server), selecciono la conexión, realizo el test y no problema, pero al pasara a la siguiente etapa SOA Servers, no se despliega la opción para seleccionar el Target SOA Server y la correspondiente partición.
    Para realizar el despliegue tengo iniciado Weblogic.
    La conexión hecha en Jdeveloper funciona correctamente (Aplication Server), tiene el mismo nombre de dominio y su password de Weblogic, pero no logro que se despliegue Soa Servers, lo único que puedo hacer es
    Deploy to SAR, y crear el .jar, para luego publicarlo a través del Enterpise manager, pero una vez que lo quiero hacer funcionar me da un error de java.lang.NullPointerExeption

    Quedo atento a tus comentarios
    Julio Cesar

    1. Hola Julio.
      Entiendo que tienes instalado la SOA Suite en WebLogic verdad?
      Si es así, entonces podría decirte que el error sea del lado de WebLogc, como una mala instalación o algún otro error, sin embargo para ayudarte con mas detalle necesitaría ver el log que esta generando weblogic al momento que deployar desde el Enterprice Manager.

      Con respecto de que no te aparezcan las particiones en el JDeveloper también me parece que el problema es de weblogic, podría ser que no esta iniciando correctamente la SOA Suite. Muchas veces el weblogic cuando el SOA Suite tiene algún problema, el weblogic iniciar correctamente pero no arranca la SOA Suite.

      Dime si en el Enterprice Manager del lado derecho te aparece el Nodo de SOA.

      saludos.

      1. Hola Oscar
        Asi es tengo instalado SOA Suite, y estan corriendo sin problemas, Web Logic, OSB, y Enterprise Manager oracle 11g, lo curioso es que yo puedo probar los ejb hechos con Jdeveloper, exponerlos en web logic, y desplegarlos sin problemas, entregando sus request y response, pero lamentablemente con Bper no hay caso, me gustaria ahora explica como es que tengo las instalaciones, para poder aclarar mas dudas que te plantees:
        Jdeveloper
        Al ir al explorador servidor de aplicaciones al desplegar la conexionla con sus carpetas respectivas, la carpeta SOA, despliega lo siguiente “No message”, la conexion esta corriendo sin inconvenietes

        Oracle Enterprise Manager
        Despliega lo siguiente:
        Costado Izquierdo tengo:
        Farm_soa_domain, bajo este hay dos carpetas
        Despliegue de Aplicaciones
        Dominio de WebLogic
        En esta carpeta esta soa_domain, y bajo de ella esta AdminServer
        Espero que esta informacion te ubique con mas informacion sobre el problema en cuestion

        Saludos Cordiales
        Julio Cesar

  2. Buenas tardes Oscar, una consulta ¿ es posible construir un proceso Bpel haga un llamado a un paquete de base de datos ? como se haria esto? me asignaron a un equipo de proyecto y me han solicitado esta tarea, y la verdad es que no se por donde empezar. Agradeceria si pudieras orientarme

    1. Hola Naldy, eso es realmente fácil con Oracle SOA Suite, solo tienes que ir a composite.xml y del lado derecho darás click izquierdo, allí te saldrán los diferentes adaptadores que existen, seleccionarás el “DBAdapter”. Una vez seleccionado, te pedirá que llenes un Wizard, en pocas palabras que pedirá que indices el nombre del adaptador, los datos de conexión a la base de datos y seleccionarás que quieres consumir un Store procedure, el wizard te mostrará los paquetes existentes y solo tendrás que seleccionarlo, una vez seleccionado, finalizas el wizard.
      Esto te creará el adaptador y solo restará ejecutarlo desde un BPEL, para esto, crearás una actividad de “Service Invoke” y deberás crear las variables de entrada y salida, seguido, realizar el mapeo mediante una transformación para crear el Input.

  3. Muchas gracias, me sirvió de mucho este post. Eh estado trabajando con JDeveloper, pero no me acostumbro en realidad. navegando en internet descubri el BPel Desing para trabajar con eclipse. Lo instale y genere el BPel pero no lo puedo deployar de la misma manera que en JDveloper existe alguna forma para poder trabajar con Eclipse y General los BPel para Oracle. Gracias

    1. Hola Mauricio, Oracle es una empresa extremadamente privativa y cerrada, cualquier cosa que quieras hacer fuera de las herramientas que ellos proporcionan están fuera de garantía, no las certifica y seguramente tendrás muchisimos problemas, lo que yo te recomiendo es utilizar JDeveloper si o sí, se que no es el mejor IDE, pero al menos tendrás la certeza que las cosas funcionarán.
      saludos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *