wso2 bps: desarrollando un proceso de negocio con bpel

23
1 Elaborado por: Jorge Infante Osorio. En este documento queremos mostrarles cómo implementar un servicio de proceso con la suite de WSO2 usando BPEL como lenguaje, el WSO2 Developer Studio como IDE y el WSO2 BPS como herramienta para el despliegue del proceso. Usaremos un proceso que por su sencillez lo encontramos ideal para mostrar lo básico de la implementación que realizaremos. El diseño del proceso se puede apreciar en la siguiente imagen: Este proceso representa la ejecución de la siguiente ecuación matemática: f(x) = [(a * b) - (a + b) ]^2 Y lo hemos tomado de esta entrada y su segunda parte: http://thiliniishaka.blogspot.com/2012/10/develop-ws-bpel-process-using-wso2.html

Upload: isildurmac

Post on 19-Jul-2015

259 views

Category:

Software


1 download

TRANSCRIPT

1

Elaborado por: Jorge Infante Osorio.

En este documento queremos mostrarles cómo implementar un servicio de proceso con la

suite de WSO2 usando BPEL como lenguaje, el WSO2 Developer Studio como IDE y el WSO2

BPS como herramienta para el despliegue del proceso.

Usaremos un proceso que por su sencillez lo encontramos ideal para mostrar lo básico de la

implementación que realizaremos. El diseño del proceso se puede apreciar en la siguiente

imagen:

Este proceso representa la ejecución de la siguiente ecuación matemática:

f(x) = [(a * b) - (a + b) ]^2

Y lo hemos tomado de esta entrada y su segunda parte:

http://thiliniishaka.blogspot.com/2012/10/develop-ws-bpel-process-using-wso2.html

2

Elaborado por: Jorge Infante Osorio.

La acción 1 es implementar los servicios que serán consumidos desde el proceso.

Tendremos los siguientes:

1. AdderService: se encarga de recibir 2 números y devolver el resultado de su suma.

2. MultiplyService: se encarga de recibir 2 números y devolver el resultado de su

multiplicación.

3. SubtractService: se encarga de recibir 2 números y devolver el resultado de su resta.

4. SquareService: se encarga de recibir 1 número y devolver su cuadrado.

Estos servicios se implementan en axis2 y para ello abrimos el WSO2 Developer Studio y

creamos un proyecto “Axis2 Service Project” seleccionando la opción desde el Dashboard.

Luego seleccionamos la primera opción:

Damos siguiente y procedemos a llenar la información que nos piden.

3

Elaborado por: Jorge Infante Osorio.

Al dar Finish se nos creará un proyecto axis2 y una clase con el nombre que le especificamos.

En el caso de nuestros servicios quedan como sigue:

Servicio Subtract:

Servicio Adder:

4

Elaborado por: Jorge Infante Osorio.

Servicio Multiply:

Servicio Square:

Luego de tenerlos implementamos solo nos queda dar clic encima de cada proyecto,

seleccionar la opción “Export Project as Deployable Archive”

5

Elaborado por: Jorge Infante Osorio.

Ahí seleccionamos la opción de que se guarden en

[AS_HOME]\repository\deployment\server\axis2services\ y levantamos el AS para desplegar

los servicios axis2 recién implementados.

Ahora solo queda probarlo y eso lo pueden hacer con el SOAPUI para garantizar que funcionan

correctamente. Un ejemplo lo mostramos a continuación con el servicio de Square:

La acción 2 es crear un proyecto BPEL en el mismo WSO2 Developer Studio.

Seleccionamos en el Dashboard la opción de “BPEL Workflow”

6

Elaborado por: Jorge Infante Osorio.

Marcamos la primera opción y damos siguiente:

En la siguiente ventana introducimos los datos solicitados, en nuestro caso son los siguientes:

7

Elaborado por: Jorge Infante Osorio.

Damos Finish y seleccionamos “Yes” cuando se nos pide cambiar de perspectiva. El proceso

creado, su esqueleto, será el siguiente:

Ahora debemos comenzar a definir el WSDL del servicio BPEL que será lo que estará expuesto

para que sea consumido. En este caso el servicio recibirá 2 números y devolverá un resultado.

Automáticamente cuando se crea un proceso BPEL se crea su WSDL y como seleccionamos un

proceso síncrono la operación es del tipo In/Out, como se puede ver en esta imagen.

Para modificar sus esquemas basta con dar clic en las flechas que aparecen al lado de los

elementos Request y Response.

El esquema de entrada queda como sigue luego de modificado:

8

Elaborado por: Jorge Infante Osorio.

El esquema de salida queda como sigue luego de modificado:

En la vista “Source” este cambio se puede ver como sigue:

Si vamos a la definición del proceso BPEL dando doble clic sobre el fichero que termina en

.bpel y pasando a la vista de “Source” veremos cómo se importa el WSDL del cliente para este

servicio:

9

Elaborado por: Jorge Infante Osorio.

Luego de terminada esta acción debemos definir la estructura del proceso. Los pasos son los

siguientes:

Paso 1: removemos el componente empty “FIX_ME-Add_Business_Logic_Here”.

Paso 2: agregamos un elemento de tipo Actions “Assign” seleccionándolo desde la paleta y

arrastrándolo hasta el lugar en que queremos que quede y poniéndole un nombre.

Paso 3: como hay 2 actividades que se pueden realizar en paralelo agregamos un elemento de

tipo Control2 “Flow”. De esta manera indicamos que se pueden ejecutar en paralelo y no

secuencialmente, pues no depende una actividad de la otra.

10

Elaborado por: Jorge Infante Osorio.

Paso 4: agregamos dentro del elemento flow 2 elementos de tipo Actions “Invoke”. Este

elemento es usado para invocar un servicio web.

11

Elaborado por: Jorge Infante Osorio.

Aquí nos detenemos porque eliminaremos los errores que van apareciendo debido a que no

estamos llenando la información que se requiere.

Comenzaremos por los Invoke, para ello damos clic encima del Invoke con nombre

“Invoke_AdderService”, vamos a sus propiedades y buscamos la opción que se muestra en la

siguiente imagen para crear un partner link, dando doble clic sobre la misma.

Un Partner Link será el mecanismo que nos permitirá consumir un servicio web, en este caso el

de AdderService.

Al dar doble clic nos pide un nombre para el PL:

12

Elaborado por: Jorge Infante Osorio.

Ahora debemos especificar el WSDL del servicio a consumir.

Aquí debemos dar clic en el botón “Add WSDL” ya que no hemos creado los Partner Link aun.

13

Elaborado por: Jorge Infante Osorio.

Seleccionamos el WSDL importado anteriormente que queremos usar y damos clic en OK.

Luego nos muestra ya el WSDL incluido.

NOTA: en la implementación inicial de este ejemplo se usó la URL del wsdl del servicio para no tener que

importarlo, esto implicó algunos errores que conllevaron a la decisión de primero importar los WSDL de

los servicios a consumir y ponerlos al mismo nivel que el WSDL del proceso BPEL.

14

Elaborado por: Jorge Infante Osorio.

Y damos OK.

Nos pide definir un Type para este Partner Link.

15

Elaborado por: Jorge Infante Osorio.

Y un rol también.

Al dar Finish volvemos a ver las propiedades de la actividad “Invoke” lo que ya con el partner

link definido.

Para definir la operación debemos dar doble clic en la sección de “Quick Pick” encima de “add”

para que nos liste la operación y además nos visualice los elementos de entrada y salida.

16

Elaborado por: Jorge Infante Osorio.

Ahora lo mismo que hicimos para el invoke del servicio AdderService, lo debemos repetir para

el servicio de MultiplyService.

Una vez que ambos PL han sido creados, vamos a la actividad superior, la de asignar los valores

de entrada y vamos a sus propiedades.

Ahí debemos dar clic en New y seleccionamos los elementos como se muestra a continuación.

Una vez hecho esto damos “CTRL + S” para guardar y se nos preguntará si generamos un

inicializador para la variable a lo que respondemos “YES”.

Esto que se acaba de hacer es una asignación del valor numA al valor a. así que debemos

volver a dar clic en New para realizar la asignación del valor numB a b.

17

Elaborado por: Jorge Infante Osorio.

Luego hacemos lo mismo pero para el servicio de Multiply quedando como sigue:

Llegados a este punto ya el proceso no nos marca errores:

18

Elaborado por: Jorge Infante Osorio.

Ahora debemos ir al paso 5 y agregar un elemento Assign para asignar los resultados de las 2

invocaciones anteriores como entradas al servicio de SubtractService.

El proceso es el mismo, agregamos el assign, luego agregamos el invoke al servicio. Creamos

un PL para ese servicio y procedemos a realizar las asignaciones. Esto no lo documento pues ya

se hizo para los 2 servicios anteriores.

Quedaría inicialmente así:

La asignación queda como sigue:

Como ven se mapea el resultado de la operación de adición con el parámetro a del servicio de

substracción. Lo mismo se hace con la operación de multiplicación.

19

Elaborado por: Jorge Infante Osorio.

En el paso 6 debemos agregar un elemento assign y un invoke para consumir el servicio de

SquareService pasándole como entrada la salida del servicio SubstractService.

20

Elaborado por: Jorge Infante Osorio.

La asignación queda como sigue:

Paso 7: solo queda asignar el resultado de la invocación al servicio SquareService al output del

servicio BPEL.

21

Elaborado por: Jorge Infante Osorio.

El proceso finalmente queda como sigue:

La acción 3 es realizar el despliegue.

Primero vamos al fichero deploy.xml dentro del proyecto, le damos doble clic y garantizamos

que quede así:

22

Elaborado por: Jorge Infante Osorio.

Luego podemos dar clic derecho en el proyecto, seleccionar la opción de “Export Project as a

Deployable Archive” y podemos guardarlo en:

[BPS_HOME]\repository\deployment\server\bpel\

Una vez iniciado el WSO2 BPS, nos autenticamos y vamos a la sección “Home >

Manage>Processes> List”

Pinchamos en el nombre del paquete y luego en el nombre del proceso hasta llegar a esta

vista.

Aquí pueden seleccionar la opción “Try it” y probar.

23

Elaborado por: Jorge Infante Osorio.

Y eso es todo.

Como ven el WSO2 BPS nos sirve para el desarrollo de orquestaciones de servicios y en

próximos documentos estaremos explorando más funcionalidades relacionadas con esta

herramienta.

Esperamos les resulte de utilidad.