tutorial de bpel con openesb
TRANSCRIPT
-
8/17/2019 Tutorial de BPEL Con OpenESB
1/21
Tutorial de BPEL con OpenESB (I)
Indice
Introducción
En este tutorial vamos a aprender a crear procesos BPEL practicando con un
ejemplo: un proceso de negocio de venta online de libros. La
empresaTuLibroOnline decidi adoptar SO! para sus in"raestructuras IT #
acualmente se encuentra en la "ase de composicin de servicios. !s$ pues% le
llega el turno al proceso de venta de libros # se decide implementarlo con un
proceso BPEL or&uestando servicios 'eb de las reas implicadas en el negocio.
Para desarrollar el ejemplo es necesario tener instalado OpenESB .* tal como
se muestra en el tutorial OpenESB .*. Instalacin e introduccin al entorno% #
tener unos conocimientos bsicos de +etBeans # ,lass-is. El cdigo "uente
puede descargarse a&u$: BPEL/openESB0adictosaltrabajo.1ip # el pro#ecto de
pruebas de soap2I a&u$: BPEL/openESB0adictosaltrabajo.1ip.
3emos dividido el tutorial en dos partes debido a su envergadura. La segunda
parte del tutorial se encuentra en Tutorial de BPEL con OpenESB (II).
El proceso de negocio
!ntes de programar nada% tenemos &ue comprender mu# bien el proceso de
negocio &ue pretendemos implementar con alguna tecnolog$a. Para ello nos
reunimos nuevamente con un responsable de negocio del rea de ventas # tras
comentarle los avances de la implantacin tecnolgica # lo &ue le permite #a
acer a la empresa% le pedimos valide el proceso de venta de libros. -inalmente
se alcan1a la propuesta:
http://es.wikipedia.org/wiki/WS-BPELhttps://open-esb.dev.java.net/http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=openESB-instalar-introduccionhttp://www.adictosaltrabajo.com/tutoriales/introduccion-BPEL-openesb/BPEL-openESB_adictosaltrabajo.ziphttp://www.adictosaltrabajo.com/tutoriales/introduccion-BPEL-openesb/Prueba%20AplicacionTuLibroOnline.ziphttp://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=introduccion-BPEL-openesb2https://open-esb.dev.java.net/http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=openESB-instalar-introduccionhttp://www.adictosaltrabajo.com/tutoriales/introduccion-BPEL-openesb/BPEL-openESB_adictosaltrabajo.ziphttp://www.adictosaltrabajo.com/tutoriales/introduccion-BPEL-openesb/Prueba%20AplicacionTuLibroOnline.ziphttp://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=introduccion-BPEL-openesb2http://es.wikipedia.org/wiki/WS-BPEL
-
8/17/2019 Tutorial de BPEL Con OpenESB
2/21
Proceso de negocio de venta de libros
Los detalles del proceso son los siguientes:
• La orden de venta de inicia aportando el I4 de cliente registrado &ue
reali1a la compra% el ISB+ del libro &ue ad&uiere% el n5mero de unidades # el
precio por unidad.
• Se comprueba en almac6n &ue a#a stoc7 su8ciente para el pedido. En
su de"ecto el proceso 8nali1a # lo noti8ca% para as$ o"recer alternativas al
cliente # no perder la oportunidad de venta.
• Si a# unidades su8cientes% emos de invocar al sistema de pago online
&ue tenemos contratado con nuestra enidad 8nanciera. La entidad #a
dispone de los datos de los clientes registrados% por lo &ue se encarga de
acer las tramitaciones necesarias # asegurar el pago.
• -inalmente emitimos la orden de env$o a una empresa de mensajer$a.
-acilitaremos un identi8cador de pedido para &ue lo recoja en almac6n # lo
reparta.
• El resultado del proceso ser una con8rmacin de la venta reali1ada.
Identifcar los servicios web requeridos
-
8/17/2019 Tutorial de BPEL Con OpenESB
3/21
9omo siguiente paso tenemos &ue identi8car los servicios 'eb &ue reali1an las
"uncionalidades concretas de cada paso del proceso. En nuestro caso son:
• Servicio 'eb del almac6n:
o comprobarStoc7% &ue espera el ISB+ del libro # las unidades de
compra% # responde si eiste o no stoc7 su8ciente
• Servicio 'eb del sistema de pago online:
o "acturar% con un id9liente # una cuant$a. 4evuelve un cdigo de
"actura
• Servicio 'eb de la empresa de mensajer$a:
o enviarProducto% con nuestro identi8cador de la empresa # el
pedido a servir. +os responde con el tiempo en d$as estimado de reparto.
Estos servicios estn implementados en los pro#ectos ;ensajeriaEpress%
PagoOnline # TiendaElectronica del cdigo "uente del tutorial. 4eben ser
abiertos como pro#ectos de +etBeans (men5 -ile < Open Project):
Servicios =eb del proceso de negocio en +etBeans
Modelar el proceso de negocio con BPEL
9reamos un nuevo pro#ecto BPEL en +etBeans: -ile < +e' Project < SO! < BPEL
;odule:
-
8/17/2019 Tutorial de BPEL Con OpenESB
4/21
9rear un ;dulo BPEL en OpenESB
Le asignamos el nombre Servicios>enta. Sobre la estructura inicial del pro#ecto
creamos las carpetas: 4escriptorBPEL% Servicio!lmacen% ServicioPago%
Servicio;ensajeria (botn dereco sobre Process -iles < +e' < Oter < Oter <
-older e introducimos el nombre en el campo -older +ame):
Estructura inicial del mdulo BPEL
,enerar el descriptor del proceso BPEL
2n proceso BPEL se epone al resto como si de un servicio 'eb se tratara. Por
ello debe tener su propio descriptor =S4L. Lo creamos (botn dereco sobre
-
8/17/2019 Tutorial de BPEL Con OpenESB
5/21
4escriptorBPEL < +e' < =S4L 4ocument) e introducimos los valores de la
imagen:
9rear descriptor =S4L del proceso BPEL
En el siguiente paso del asistente introducimos los siguientes valores:
-
8/17/2019 Tutorial de BPEL Con OpenESB
6/21
4e8nicin de la operacin del servicio # sus argumentos
En el 5ltimo paso aceptamos los valores propuestos:
-
8/17/2019 Tutorial de BPEL Con OpenESB
7/21
9on8guracin concreta del descriptor
-inali1amos el asistente # #a tenemos de8nida la inter"a1 del proceso BPEL.
Importar descriptores =S4L de los servicios involucrados
Las aplicaciones 'eb &ue emos importado en +etBeans debern estar
desplegadas sobre el servidor ,lass-is previamente arrancado. !s$% podemos
acceder a los contratos de los 'eb services en las 2?L:
• ttp:@@localost:AA@;ensajeriaEpress@EnvioPa&uetesServiceC=S4L
•
ttp:@@localost:AA@PagoOnline@PasarelaPagoServiceC=S4L• ttp:@@localost:AA@TiendaElectronica@!lmacenServiceC=S4L
Todo proceso BPEL necesitar los contratos =S4L de los servicios &ue utilice%
para poder invocarlos. Para importar los =S4L% acemos botn dereco sobre
la carpeta Servicio!lmacen < +e' < Oter < D;L < Eternal =S4L 4ocument(s) e
introducimos la 2?L del descriptor del servicio de almacen:
-
8/17/2019 Tutorial de BPEL Con OpenESB
8/21
Importamos los =S4L de los servicios utili1ados
?epetimos la operacin con las carpetas ServicioPago% Servicio;ensajeria # sus
correspondientes descriptores. El pro#ecto &uedar por tanto:
-
8/17/2019 Tutorial de BPEL Con OpenESB
9/21
Importamos los descriptores de los 'ebservices utili1ados
9abe decir &ue si disponemos los =4SL en disco en ve1 de resolverlos de la
'eb% tambi6n pueden ser importados de manera similar. Incluso tendr$amos
una estructura de carpetas ms limpia &ue la generada por +etBeans.
4isear el proceso BPEL gr8camente
!ora viene lo ms divertido F/). 3acemos doble clic7 sobre servicios>enta.bpel
# accedemos al editor visual. Es intuitivo # se basa en arrastrar # soltar
elementos en las 1onas permitidas. En primer lugar insertamos el descriptor
del proceso BPEL a la i1&uierda del diagrama:
Insertar la inter"a1 =S4L del proceso BPEL
Pulsando sobre la representacin del =S4L reci6n introducido # en su
icono % accedemos a las popiedades. 9ambiamos el nombre por de"ecto
PartnerLin7* por >entaLibros # aceptamos. 4e igual manera introducimos los
descriptores de los 'ebservices utili1ados% pero esta ve1 a la dereca del
diagrama% como proveedores de servicios. !l arrastrar # soltar% aparecer el
dilogo de creacin de un nuevo enlace a un proveedor de servicio (en el cual
-
8/17/2019 Tutorial de BPEL Con OpenESB
10/21
aprovecaremos para cambiar el nombre PartnerLin7* por el del servicio &ue
corresponda% e.g. Servicio!lmacen):
9rear enlace a servicio proveedor
El proceso &uedar de la "orma:
-
8/17/2019 Tutorial de BPEL Con OpenESB
11/21
BPEL con los servicios proveedores (PartnerLinks)
! continuacin utili1amos la paleta de actividades del editor BPEL de +etBeans:
Paleta de actividades del editor de BPEL
-
8/17/2019 Tutorial de BPEL Con OpenESB
12/21
# componemos en unos minutos un proceso como el de la imagen siguiente
(para cambiar los nombres de las actividades utili1amos su icono de
edicin ):
-
8/17/2019 Tutorial de BPEL Con OpenESB
13/21
BPEL inicial con sus actividades
9omen1amos asociando las actividades de recepcin% invocacin # respuesta a
los servicios. 3acemos doble clic7 sobre la actividad de recepcin e
introducimos los valores &ue muestra la siguiente imagen. Para obtener la
propiedad Input >ariable% pulsamos sobre el botn 9reate... # aceptamos losvalores por de"ecto% pues son signi8cativos:
Editando la actividad de recepcin
Tras aceptar% vemos en el BPEL &ue a aparecido una Geca &ue une
>entaLibros con la actividad de recepcin. 4e igual manera acemos con las
actividades de respuesta. Editamos la 5ltima respuesta del proceso%
?espuestaO7:
-
8/17/2019 Tutorial de BPEL Con OpenESB
14/21
Editando la actividad de respuesta
3acemos lo mismo con la actividad de respuesta contenida dentro de la
estructura de decisin (?espuesta+oO7):
Editando la respuesta de "alta de Stoc7
-
8/17/2019 Tutorial de BPEL Con OpenESB
15/21
! continuacin acemos lo mismo para cada actividad de invocacin.
9omen1ando por 9omprobarStoc7:
Invocacin del servicio de stoc7
?epetimos la operacin para el resto de invocaciones% # el proceso BPEL abr
tomado una "orma ms reconocible::
-
8/17/2019 Tutorial de BPEL Con OpenESB
16/21
BPEL con las invocaciones a los servicios
! continuacin editamos las variables de asignacin. 9omo su nombre indica%
cada una asigna variables a la actividad &ue le sigue. Por ejemplo% a la
actividad de invocacin !signarStoc7 espera unos valores de entrada (los del
'eb service al &ue invoca). Estos valores los tenemos &ue asignar de la
actividad &ue los tenga% en este caso la de recepcin. Para ello pulsamos doble
clic7 sobre la actividad !sigStoc7 # se abre el siguiente mapeador de valores% al
&ue emos asociado relaciones entre partes de mensajes% pulsando en el
nombre de variable origen # arrastrando la "eca asta el destino:
-
8/17/2019 Tutorial de BPEL Con OpenESB
17/21
!signacin de valores entre partes de mensajes
! la i1&uierda emos 8ltrado por valores de salida (Output) # a la dereca por
variables receptoras (Input). En este caso estamos asignando los valores de la
actividad de recepcin (cu#o nombre de variable H>entaLibros=S4LOperationInH
"ue de8nido en un paso anterior)% a la variable de entrada de la invocacin al
'eb service de comprobacion de Stoc7 (9omprobarStoc7In).
Para salir del mapeador # regresar el diagrama BPEL% a# &ue pulsar sobre la
palabra 4esign en la parte superior del mapeador.
Editamos !sig-actura. En este caso El 'eb service de "acturar va a necesitar
una variable cuant$a% &ue es el resultado de multiplicar las unidades
encargadas por el precio unitario. Para acer esta trans"ormacin%
seleccionamos en la parte dereca la variable cuant$a. 9uando se ilumine la
"ranja ori1ontal% desplegamos el men5 Operator # seleccionamos
;ultiplication. La salida de la multiplicacin la asignamos a cuantia% # losoperadores de entrada son unidades # precio2nidad. !rrastramos sus nombres
acia el operador% # &uedar como en la siguiente imagen:
-
8/17/2019 Tutorial de BPEL Con OpenESB
18/21
!signar valores a la invocacin del servicio de "acturacin
Editamos aora !sig+oStoc7. Estamos en el camino del 'else'% # tenemos &ue
asignar a la variable de la actividad de respuesta un valor &ue eprese &ue no
se a podido completar el proceso debido a la "alta de stoc7 de producto. 4ica
variable es >entaLibros=S4LOperationOut* # su mensaje es resultado.
Seleccionamos esta variable% accedemos al men5 String% seleccionamos String
Literal% introducimos la cadena Stoc7 en almacen insu8ciente # lo asignamos a
resultado:
?espuesta indicando la "alta de stoc7 del producto
-
8/17/2019 Tutorial de BPEL Con OpenESB
19/21
Tras la sentencia de seleccin nos encontramos con la actividad de asignacin
!sigOrden% &ue establecer los valores de las variable EnviarProductoIn para la
invocacin al servicio de mensajer$a para &ue venga al almac6n a recoger #
repartir el pedido. EnviarProductoIn tiene dos parmetros en el mensaje:
empresa% &ue ser un literal% e idPedido% &ue ser el resultado de la invocacin
al servicio de -acturacin. Por tanto la asociacin &uedar de la "orma:
>alores para invocar al servicio de mensajer$a
-inalmente editamos !sigO7% &ue asignar a la actividad de respuesta 8nal un
mensaje de con8rmacin de venta indicando el id de albarn dado por el
servicio de "acturacin # los dias &ue tardar en entregarse% indicado en la
respuesta del servicio de mensajer$a. 9oncatenaremos en este caso varios
literales con la respuestas de los servicios:
-
8/17/2019 Tutorial de BPEL Con OpenESB
20/21
!signacion de resultado a la actividad de respuesta
Por 5ltimo tenemos &ue establecer la condicin de la estructura de bi"urcacin.
Pulsamos dos veces sobre la estructura del I"% # utili1ando el men5 Boolean #
los elementos Logical !nd # Logical True componemos la condicin booleana en
base a la respuesta del servicio de comprobacin de stoc7:
9ondicin del proceso sobre la eistencia de stoc7
En este punto el proceso BPEL estar 8nali1ado% sin mensajes de error ni
advertencias% listo para ser probado:
-
8/17/2019 Tutorial de BPEL Con OpenESB
21/21
!specto 8nal del proceso de negocio con BPEL