Una colaboración de un compañero y gran amigo - Carlos Toso desde Costa Rica. El es un Senior Sales Consultant especialista en los temas de SOA y BPM.
En los últimos meses ha estado trabajando con un producto nuevo de Oracle llamado Oracle BPM y en este artículo se explica cómo integrarlo con Oracle BPEL PM.
Objetivo
El propósito de este documento es mostrar la facilidad y flexibilidad de integrar las 2 herramientas de Oracle para el diseno de flujos humanos utilizando Oracle BPM Studio y Oracle BPEL para la integracion con aplicaciones o flujos estructurados, ambas herramientas forman parte de la nueva suite de Oracle denominada Oracle BPM Suite.
PreRequisitos:
- Oracle BPM Studio 10.1.3.4
Software Descargable
- Oracle Bea Products Download : http://www.oracle.com/technology/software/products/ias/bea_main.html?rssid=rss_otn_soft
- Oracle Products Download:
http://www.oracle.com/technology/software/index.html
Nota Importante:
Si se quiere replicar esta misma nota con versiones anteriores de JDeveloper 10.1.3.x, Oracle BPEL 10.1.3.x y Oracle Business Process Management Studio 6.0 MP4 se puede hacer sin mayor diferencia tan solo cambian algunas pantallas por la version de los productos
Paso 1
Crear un proyecto SOA Project
Y crear un ejemplo de un proceso muy sencillo utilizando Oracle BPEL, en este ejemplo utilice un Proceso Sincronico que invoca una consulta a la base de datos atraves de un parametro.

Paso 2
Una vez contruido el proceso en Oracle BPEL ejecutar el proyecto desde el archivo composite.xml

Paso 3
Ingresar a la consola de Enterprise Manager, por ejemplo: http://maquina:8988/SOAConsole, donde maquina es el nombre del server o de la maquina donde se instalo y se configuro SOA 11g en Jdeveloper.

Paso 4
Se debe de hacer una primera prueba o testing del proceso hecho en BPEL. Para hacerlo se selecciona el proceso y en el boton Actions seleccionar Test Service - Client

Paso 5
Cuando hacemos Testing sobre el proceso esto nos abre una pagina para definir los parametros de entrada al proceso y la definicion y ubicacion del Service Description

Paso 6
Hacemos un click sobre Service Description para poder capturar el WSDL del servicio del proceso BPEL
Ejemplo:
http://ctosovoy-cr:8988/soa-infra/services/default/BPMinvocaBPEL!1.0*2008-08-28_13-56-33_078/client?WSDL

Paso 7
Abrimos un proyecto o creamos un nuevo proyecto de Oracle BPM Studio y en el proceso con el Rol de Developer creamos a nivel del Project Navigator en Catalog creamos un nuevo module al cual denominaremos OracleBPEL

Paso 8
Ahora a nivel del module OracleBPEL hacemos boton derecho y en la lista de valores seleccionamos Catalogue Component / Web Service

Paso 9
Ahora en la pantalla Catalog Component Wizard copiamos en WSDL Address el EndPoint del proceso BPEL que obtuvimos en el Paso 6 y si dejamos el nombre del Module que te crea apartir del WSDL y hacer click en el boton Next

Paso 10
Deberia de aparecer una pantalla de Instropesting y haber completado el 100% de analisis del WSDL y de generarlo en tu BPM Studio.

Paso 11
Ahora verificamos en el Project Navigator bajo el Catalog / OracleBPEL / el cliente ClienteWSDL (el nombre del cliente puede variar dependiendo del nombre que se le dio en el paso 9) fue generado automaticamente

Paso 12
Ahora agregamos una actividad automatica en el flujo del proceso y la llamamos InvocacionBPEL y hacemos double click en esa actividad

Paso 13
Ahora debemos de arrastrar al editor de codigo lo siguiente: el Service, el Request y el Response, que en nuestro ejemplo serian
BPELProcess2Service, BpelProcess2ProcessRequest, BpelProcess2ProcessResponse y esto genera automaticamente el siguiente codigo
bpelProcess2Service = OracleBPEL.ClientWSDL.BPELProcess2Service()

Paso 14
El editor nos da un Warning donde nos solicita que las variables las debemos inicializar por tanto hacemos el siguiente cambio en el editor como a continuacion se describe
bpelProcess2Service as OracleBPEL.ClientWSDL.BPELProcess2Service = OracleBPEL.ClientWSDL.BPELProcess2Service()
bpelProcess2ProcessRequest as OracleBPEL.ClientWSDL.BpelProcess2ProcessRequest = OracleBPEL.ClientWSDL.BpelProcess2ProcessRequest()
bpelProcess2ProcessResponse as OracleBPEL.ClientWSDL.BpelProcess2ProcessResponse = OracleBPEL.ClientWSDL.BpelProcess2ProcessResponse()

Paso 15
Ahora escribimos a continuacion la variable que definimos bpelProcess2Service y le agregamos un punto al final para que nos muestre las opciones de los metodos y seleccionamos el que dice process y ENTER

Paso 16
Automaticamente nos crea un metodo para invocar al servicio de BPEL
process bpelProcess2Service
using payload = null
returning payloadOutput =
payloadOutput
Paso 17
Ahora le pasaremos un valor estatico al metodo que incorporamos en el paso anterios y para hacerlo escribimos la siguiente variable bpelProcess2ProcessRequest y le agregamos un punto al final para que nos muestre las opciones de los metodos y seleccionamos el que dice input y ENTER

Paso 18
A esta variable le asignamos un valor estatico por ejemplo :
bpelProcess2ProcessRequest.@input = "100"
Y reemplazamos el metodo que teniamos en el paso 16 de esta forma
process bpelProcess2Service
using payload = bpelProcess2ProcessRequest
returning bpelProcess2ProcessResponse =
payloadOutput
Paso 19
Dejando de esta manera el codigo en la actividad de invocacion de Oracle BPEL

Paso 20
Lo unico que nos hace falta para verificar el valor de respuesta del proceso de BPEL agregaremos al codigo la siguiente instruccion
Display bpelProcess2ProcessResponse.result

Con este ultimo paso el resultado del proceso de BPEL lo mostraremos en el LogViewer del Proceso BPM.

Listo!!! Ya tienen un ejemplo muy sencillo de como integrar tanto Oracle BPM Studio con Oracle BPEL.
Lo unico que hace falta es ejecutar el proceso de BPM Studio y tener el servicio de BPEL ejecutandose.
Conclusión:
A nivel de BPM (Business Process Management) que es una metodologia empresarial para la mejora de procesos hay muchos enfoques de abordar el modelaje de estos flujos por tanto se debe de contar diferentes alternativas de solucion y soporte a diferentes estandares que nos ayuden tanto en la flexibilidad como en la capacidad de integracion. Oracle BPM Suite incopora estandares tales como BPMN, XPDL, BPEL y el proposito final de esta nota tecnica es demostrar como en pocos pasos integramos ambas herramientas.
Links de interes:
http://www.oracle.com/technology/tech/soa/index.html (SOA)
http://www.oracle.com/technology/products/bpm/index.html (BPM)