tutorial de bpel con openesb

Upload: javier-corales-sepulveda

Post on 06-Jul-2018

251 views

Category:

Documents


2 download

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