SlideShare una empresa de Scribd logo
Web 2.0: Arquitectura Orientada a Servicios en Java
Tutorial
de BPEL
Pablo García Sánchez
pgarcia@atc.ugr.es
Curso: Web 2.0. Arquitectura Orientada a Servicios en Java
Escuela de Posgrado
Febrero/Marzo de 2010
Pablo García Sánchez – Febrero/Marzo de 2010 1
Web 2.0: Arquitectura Orientada a Servicios en Java
Introducción:
En este documento vamos a explicar pasito a pasito cómo crear un proceso BPEL simplón.
El resumen de los pasos sería:
1) Crear proceso BPEL
2) Crear Composite Application y meterle dentro el proceso
3) Desplegar y Testear
URLs de servicios a atacar:
http://evorq.ugr.es:8080/evorqServices/ejemploServiceService?wsdl
http://evorq.ugr.es:8080/evorqLogin/loginServiceService?wsdl
Ejemplos a realizar:
1) SynchronousSample
2) Ejemplo del tutorial (el que dice “Hola”)
3) Ejemplo avanzado del tutorial (llama a los WS de la primera URL)
4) Ejercicio: cambiar el if por un flow y arreglar lo que pasa
5) Ejercicio: llamar a la operación getTicket de la segunda URL con datos correctos o
incorrectos. Añadir manejador de faltas.
6) Llamar a la operación diHora con el ticket obtenido.
1. Crear Proceso BPEL
1) Crear Nuevo Proyecto:
Simplemente vamos a New Project, elegimos SOA y luego BPEL Module.
Pablo García Sánchez – Febrero/Marzo de 2010 2
Web 2.0: Arquitectura Orientada a Servicios en Java
2) Crear WSDL
En el proyecto recién creado pulsamos en el menú contextual New->WSDL Document,
apareciendo el siguiente asistente:
Elegimos un nombre para el WSDL y el target namespace (el que sale automático está bien, lo
importante es que no se repita en otros proyectos para que no se líe la cosa).
Creamos una operación de nombre “hablarme” con un string y booleano de parámetros de entrada y
un string de salida, como vemos en la siguiente imagen:
Pablo García Sánchez – Febrero/Marzo de 2010 3
Web 2.0: Arquitectura Orientada a Servicios en Java
En la siguiente ventana dejamos todo como está (ya depende el tema del proyecto en el que estemos
trabajando!).
Podemos ver el resultado de nuestro WSDL recién generado, que tendrá esta pinta más o menos:
2) Crear proceso BPEL
Al igual que al crear el WSDL anterior seleccionamos en este caso New-> BPEL Process como
se ve en la siguiente imagen:
Pablo García Sánchez – Febrero/Marzo de 2010 4
Web 2.0: Arquitectura Orientada a Servicios en Java
Ahora:
1) Arrastramos el WSDL anterior a la izquierda del proceso BPEL, será el WSDL que
describe al proceso.
2) Arrastramos las actividades Receive y Reply al proceso. Serán la entrada y salida del
mismo.
Unimos las actividades Assign y Reply a la operación WSDL que habíamos creado antes arrastrando
los sobrecillos:
Pablo García Sánchez – Febrero/Marzo de 2010 5
Web 2.0: Arquitectura Orientada a Servicios en Java
Como podemos ver, sigue dando errores (los receives y replies necesitan variables que recibir o
enviar, claro). Hacemos doble clic en cada uno de ellos y le damos a “Create”:
Como puede verse la nomenclatura por defecto es OperacionIn u OperacionOut. Es recomendable
seguirla. Hay que hacer lo mismo en el reply, ojo!
Ahora tenemos que hacer algo con las variables que hemos creado, que si no menuda gracia tendría
BPEL. Por ejemplo vamos a probar la actividad Assign, arrastrándola al proceso.
Pablo García Sánchez – Febrero/Marzo de 2010 6
Web 2.0: Arquitectura Orientada a Servicios en Java
En este instante uno empieza a darse cuenta de que las aspas rojas son errores, por lo que tenemos
que deshacernos de ellas. Así hacemos doble clic en la actividad “Assign” para hacer la asignación,
apareciendo la siguiente ventana: El mapeador (mapper).
Vamos a añadir un “Hola” a la variable que recibamos de entrada y devolver la cadena resultante.
Para ello seguimos los siguientes pasos:
1) Crear una operación Concat del menú String (como muestra la imagen siguiente).
2) De ese menú creamos un String Literal con la palabra “Hola”.
3) Arrastrar la flecha del “Hola” al primer hueco del Concat y la parte “quien” de la variable
HablarmeIn a la segunda parte del Concat (el resto de huecos se pueden rellenar con más
strings si quisieramos).
4) Arrastramos la salida a la parte “respuesta” de la variable “HablarmeOut”
Pablo García Sánchez – Febrero/Marzo de 2010 7
Web 2.0: Arquitectura Orientada a Servicios en Java
OJO! Antes de nada tenemos que fijarnos que la variable que queremos asignar tiene que estar
seleccionada (en este caso es “respuesta”).
Y listo, tenemos un proceso BPEL que implementa una operación de un WSDL recibe un String y
un Booleano y devuelve “Hola”+String. No es muy impresionante pero por algo se empieza.
2) Crear Composite Application
Como hemos visto anteriormente en el curso JBI se basa en las Composite Applications para
desplegar componentes en Glassfish, así que tenemos que crear una para poder desplegarla en
nuestro servidor.
Vamos a New->Project->SOA->Composite Application y la llamamos en un alarde de
originalidad PruebaBPELcomposite.
Después añadimos el proceso BPEL con “Add JBI Module”:
Y seleccionamos nuestro proceso:
A continuación hacemos “Clean and Build” en el menú contextual del proyecto y la aplicación se
Pablo García Sánchez – Febrero/Marzo de 2010 8
Web 2.0: Arquitectura Orientada a Servicios en Java
refrescará:
3) Desplegar y testear la aplicación
Dentro de la carpeta “Test” añadimos un nuevo Test Case.
Seleccionamos el WSDL (el único que hay, claro):
Y seleccionamos la operación (la única que hay, claro):
Pablo García Sánchez – Febrero/Marzo de 2010 9
Web 2.0: Arquitectura Orientada a Servicios en Java
Se nos ha creado el test con un Input.xml y un Output.xml. El primero es la llamada SOAP al
WSDL y el segundo está vacío. Un test se considera correcto si la salida del test coincide con el
fichero Output.xml. Como está vacío, aunque la cosa funcione no van a ser iguales, por lo que el
test fallará a propósito.
Tras rellenar las partes del Input.xml que queremos enviar ejecutamos el test con el comando Run:
Si no se ha hecho antes la aplicación se desplegará en Glassfish y tras un rato hará la llamada SOAP
al servicio del WSDL del BPEL.
Como hemos dicho la primera vez que hagamos tests NetBeans nos indicará que se está
comparando con un Output.xml vacío, así que nos propone que el que acabamos de recibir sea el
Pablo García Sánchez – Febrero/Marzo de 2010 10
Web 2.0: Arquitectura Orientada a Servicios en Java
bueno. Le decimos que sí, que vale.
Para ver el resultado de los tests hacemos doble clic en el sobre que los representa. Vemos que la
cosa ha ido bien (obviando que no he puesto un espacio al lado del “Hola” de la asignación anterior,
y que por eso no queda tan elegante la respuesta).
Gestión de la Composite Application
Hemos dicho que se ha desplegado la aplicación en Glassfish y que hemos llamado a un WS a una
dirección que no sabemos aún. ¿Cómo podemos quitar la aplicación de Glassfish y saber más cosas
sobre ella?
Simplemente nos vamos a la pestaña Services (al lado de la de Projects). Vemos que el servidor
GlassFish está arrancado (tiene un play al lado del pescao). Si desplegamos el nodo JBI podemos
ver los Services Engines que tenemos instalados (en este caso el de BPEL y el de JavaEE, pero
podemos añadir muchos más) y que tenemos desplegada una Composite Application llamada
PruebaBPELcomposite. ¡La nuestra!
Pablo García Sánchez – Febrero/Marzo de 2010 11
Web 2.0: Arquitectura Orientada a Servicios en Java
Vemos que tenemos un Binding Component para comunicarse por HTTP (podríamos instalar otro
para SMTP, JMS o incluso Bluetooth si quisieramos desarrollarlo!), pero vamos a ver su
información para ver cómo podemos llamar a los servicios web JBI de Glassfish.
Vemos que el puerto SOAP que usa es el 9148, así que ya sabemos donde mirar. Comprobamos la
url del servicio en el propio archivo WSDL del proyecto:
Pablo García Sánchez – Febrero/Marzo de 2010 12
Web 2.0: Arquitectura Orientada a Servicios en Java
<service name="EjemploBPELService">
<port name="EjemploBPELPort" binding="tns:EjemploBPELBinding">
<soap:address location="http://localhost:$
{HttpDefaultPort}/EjemploBPELService/EjemploBPELPort"/>
</port>
</service>
Y sustituimos el puerto por el que hemos visto en la imagen anterior, el 9148.
Pablo García Sánchez – Febrero/Marzo de 2010 13
Web 2.0: Arquitectura Orientada a Servicios en Java
Fíjate como actualiza automáticamente la location del servicio con mi IP (150.214.221.124:9148)
Pablo García Sánchez – Febrero/Marzo de 2010 14
Web 2.0: Arquitectura Orientada a Servicios en Java
Podemos testearlo con SoapUI utilizando este WSDL:
También funciona!
SEGUNDA PARTE: Orquestando Servicios
Bueno, pero la gracia de BPEL es orquestar servicios, ¿no? Vamos a añadirle por tanto alguna
funcionalidad interesante a nuestra aplicación.
Añadimos un WSDL externo con los servicios que vamos a utilizar, desde New File->External
WSDL Document:
Ahora arrastramos el WSDL desde el proyecto a la parte derecha del proceso. Ya podemos ver las
operaciones a las que el BPEL puede llamar.
Vamos a probar también a llamar a una de las dos operaciones dependiendo del booleano de la
entrada, así que añadimos un if arrastrándolo:
Pablo García Sánchez – Febrero/Marzo de 2010 15
Web 2.0: Arquitectura Orientada a Servicios en Java
Y asignamos la variable de entrada del if a la condición en el mapper que se muestra al hacer doble
clic en él:
Después añadimos los invokes:
Pablo García Sánchez – Febrero/Marzo de 2010 16
Arrastrar el
WSDL
recién
creado
Arrastrar el
IF
Web 2.0: Arquitectura Orientada a Servicios en Java
Y los unimos con las operaciones con los sobrecillos, creando las variables:
Pablo García Sánchez – Febrero/Marzo de 2010 17
Web 2.0: Arquitectura Orientada a Servicios en Java
Añadimos assigns antes y después de los invokes
Y en cada uno de ellos metemos el nombre del HablarmeIn en la parte que corresponda:
Para decir Hola:
Pablo García Sánchez – Febrero/Marzo de 2010 18
Web 2.0: Arquitectura Orientada a Servicios en Java
Para decir adios.
Y luego en los otros assigns la salida:
Pablo García Sánchez – Febrero/Marzo de 2010 19
Web 2.0: Arquitectura Orientada a Servicios en Java
Hacemos lo mismo con la operación diAdios:
Y listo, podemos volver a ejecutar tests pasándole un booleano para que nos diga “Hola” o “Adios”.
No es muy impresionante pero para empezar no está mal.
Nota: ¿Os dice siempre “Hola”? Eso es que el flujo tiene algo mal que no habéis quitado... mirad el
recorrido que hace el proceso BPEL, a ver si hay algo que sobra...
Ah! Los ejemplos resueltos están en http://evorq.ugr.es/cursows/bpel/
Pablo García Sánchez – Febrero/Marzo de 2010 20
Web 2.0: Arquitectura Orientada a Servicios en Java
Ejercicio: Servicio Web de Ticket
En este ejercicio vamos utilizar gestión de tickets. El uso de tickets sirve para centralizar el acceso a
servicios web que requieran autentificación: en vez de usar usuario y contraseña en cada operación
segura utilizamos un ticket autogenerado por el sistema.
Vamos a crear un nuevo proyecto. El WSDL de entrada del proceso BPEL tendrá una operación con
dos strings de entrada (ususario/contraseña) y uno de salida que devuelve la hora.
El WSDL a llamar está en http://evorq.ugr.es:8080/evorqLogin/loginServiceService?wsdl
Hay que llamar primero a la operación “getTicket” que devuelve un ticket que será utilizado en la
operación “diHora”.
El proceso tiene que quedar así:
Comprobar que funciona con el usuario batman y la contraseña joker. Comprobad qué pasa si
metemos algún parámetro mal. Utilizar el manejador de faltas para corregir el error: añadir un
scope, pulsar en él, añadir el fault handler, añadir un catch all, y asignar un error al reply.
Pablo García Sánchez – Febrero/Marzo de 2010 21
Web 2.0: Arquitectura Orientada a Servicios en Java
Pablo García Sánchez – Febrero/Marzo de 2010 22

Más contenido relacionado

Similar a cursoTutorialBPEL.pdf

Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
Salvador Fernández Fernández
 
Manual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQLManual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQL
pablo
 
S7 1200 lab view
S7 1200  lab viewS7 1200  lab view
S7 1200 lab view
Edisson Pugo
 
Conexión de Base de Datos
Conexión de Base de DatosConexión de Base de Datos
Conexión de Base de Datos
Priscila Edith Gómez Rascón
 
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para DesarrolladoresConfigurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
Ivan Luis Jimenez
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
Pablo Aguilera
 
Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7
tantascosasquenose
 
Manual de creación y uso de Web Service SOAP
Manual de creación y uso de Web Service SOAPManual de creación y uso de Web Service SOAP
Manual de creación y uso de Web Service SOAP
Héctor Garduño Real
 
Geogebra interacción con javascript
Geogebra   interacción con javascriptGeogebra   interacción con javascript
Geogebra interacción con javascript
lucimen
 
Linq to sql 3
Linq to sql 3Linq to sql 3
Linq to sql 3
jcfarit
 
Base de datos
Base de datosBase de datos
Base de datos
luis alvarez
 
Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monetti
angelinamonetti1
 
20001231 Ericsson Gateway
20001231   Ericsson Gateway20001231   Ericsson Gateway
20001231 Ericsson Gateway
Santiago Márquez Solís
 
Servicios web
Servicios webServicios web
Servicios web
itoomac02
 
Servicios web
Servicios webServicios web
Servicios web
itoomac02
 
Ruby on Rails Workshop
Ruby on Rails WorkshopRuby on Rails Workshop
Ruby on Rails Workshop
Gustavo Andres Brey
 
12integracion de tomcat con apache
12integracion de tomcat con apache12integracion de tomcat con apache
12integracion de tomcat con apache
Miguel Angel Lopez Torralba
 
Mvc
MvcMvc
20001215 Programación de Servlets y WML
20001215   Programación de Servlets y WML20001215   Programación de Servlets y WML
20001215 Programación de Servlets y WML
Santiago Márquez Solís
 
Programacion2
Programacion2Programacion2
Programacion2
eduardoramos360
 

Similar a cursoTutorialBPEL.pdf (20)

Servicio web soap en java con net beans
Servicio web soap en java con net beansServicio web soap en java con net beans
Servicio web soap en java con net beans
 
Manual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQLManual Swing-Java-PostgreSQL
Manual Swing-Java-PostgreSQL
 
S7 1200 lab view
S7 1200  lab viewS7 1200  lab view
S7 1200 lab view
 
Conexión de Base de Datos
Conexión de Base de DatosConexión de Base de Datos
Conexión de Base de Datos
 
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para DesarrolladoresConfigurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
Configurando Ambiente de Desarrollo WEB en Eclipse Neón para Desarrolladores
 
Primeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier AznarPrimeros pasos con Backbone js, por Xavier Aznar
Primeros pasos con Backbone js, por Xavier Aznar
 
Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7Curso basicoseguridadweb slideshare7
Curso basicoseguridadweb slideshare7
 
Manual de creación y uso de Web Service SOAP
Manual de creación y uso de Web Service SOAPManual de creación y uso de Web Service SOAP
Manual de creación y uso de Web Service SOAP
 
Geogebra interacción con javascript
Geogebra   interacción con javascriptGeogebra   interacción con javascript
Geogebra interacción con javascript
 
Linq to sql 3
Linq to sql 3Linq to sql 3
Linq to sql 3
 
Base de datos
Base de datosBase de datos
Base de datos
 
Bases de datos_angelina_monetti
Bases de datos_angelina_monettiBases de datos_angelina_monetti
Bases de datos_angelina_monetti
 
20001231 Ericsson Gateway
20001231   Ericsson Gateway20001231   Ericsson Gateway
20001231 Ericsson Gateway
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Ruby on Rails Workshop
Ruby on Rails WorkshopRuby on Rails Workshop
Ruby on Rails Workshop
 
12integracion de tomcat con apache
12integracion de tomcat con apache12integracion de tomcat con apache
12integracion de tomcat con apache
 
Mvc
MvcMvc
Mvc
 
20001215 Programación de Servlets y WML
20001215   Programación de Servlets y WML20001215   Programación de Servlets y WML
20001215 Programación de Servlets y WML
 
Programacion2
Programacion2Programacion2
Programacion2
 

Más de charles requena

Origenes.pdf
Origenes.pdfOrigenes.pdf
Origenes.pdf
charles requena
 
Python_para_todos.pdf
Python_para_todos.pdfPython_para_todos.pdf
Python_para_todos.pdf
charles requena
 
Lista de precios VERANO 1 2020 CCTV ORO Y MSRP.pdf
Lista de precios VERANO 1 2020 CCTV ORO Y MSRP.pdfLista de precios VERANO 1 2020 CCTV ORO Y MSRP.pdf
Lista de precios VERANO 1 2020 CCTV ORO Y MSRP.pdf
charles requena
 
Cotizacion de camaras de seguridad 1080p.pdf
Cotizacion de camaras de seguridad 1080p.pdfCotizacion de camaras de seguridad 1080p.pdf
Cotizacion de camaras de seguridad 1080p.pdf
charles requena
 
carta-apertura-cuenta-detraccion.pdf
carta-apertura-cuenta-detraccion.pdfcarta-apertura-cuenta-detraccion.pdf
carta-apertura-cuenta-detraccion.pdf
charles requena
 
PROMO VISTE TU TIENDA.PDF
PROMO VISTE TU TIENDA.PDFPROMO VISTE TU TIENDA.PDF
PROMO VISTE TU TIENDA.PDF
charles requena
 
Comunicado de examenes
Comunicado de examenesComunicado de examenes
Comunicado de examenes
charles requena
 
Dios no está muerto
Dios no está muertoDios no está muerto
Dios no está muerto
charles requena
 
Tarea etica 1 miguel requena palomino
Tarea etica 1 miguel requena palominoTarea etica 1 miguel requena palomino
Tarea etica 1 miguel requena palomino
charles requena
 
dechos humanos
dechos humanosdechos humanos
dechos humanos
charles requena
 
Procesador De Textos E N P D F
Procesador De Textos  E N  P D FProcesador De Textos  E N  P D F
Procesador De Textos E N P D F
charles requena
 
derechos humanos
derechos humanosderechos humanos
derechos humanos
charles requena
 
Ecuacion De 1er Grado
Ecuacion De 1er GradoEcuacion De 1er Grado
Ecuacion De 1er Grado
charles requena
 

Más de charles requena (13)

Origenes.pdf
Origenes.pdfOrigenes.pdf
Origenes.pdf
 
Python_para_todos.pdf
Python_para_todos.pdfPython_para_todos.pdf
Python_para_todos.pdf
 
Lista de precios VERANO 1 2020 CCTV ORO Y MSRP.pdf
Lista de precios VERANO 1 2020 CCTV ORO Y MSRP.pdfLista de precios VERANO 1 2020 CCTV ORO Y MSRP.pdf
Lista de precios VERANO 1 2020 CCTV ORO Y MSRP.pdf
 
Cotizacion de camaras de seguridad 1080p.pdf
Cotizacion de camaras de seguridad 1080p.pdfCotizacion de camaras de seguridad 1080p.pdf
Cotizacion de camaras de seguridad 1080p.pdf
 
carta-apertura-cuenta-detraccion.pdf
carta-apertura-cuenta-detraccion.pdfcarta-apertura-cuenta-detraccion.pdf
carta-apertura-cuenta-detraccion.pdf
 
PROMO VISTE TU TIENDA.PDF
PROMO VISTE TU TIENDA.PDFPROMO VISTE TU TIENDA.PDF
PROMO VISTE TU TIENDA.PDF
 
Comunicado de examenes
Comunicado de examenesComunicado de examenes
Comunicado de examenes
 
Dios no está muerto
Dios no está muertoDios no está muerto
Dios no está muerto
 
Tarea etica 1 miguel requena palomino
Tarea etica 1 miguel requena palominoTarea etica 1 miguel requena palomino
Tarea etica 1 miguel requena palomino
 
dechos humanos
dechos humanosdechos humanos
dechos humanos
 
Procesador De Textos E N P D F
Procesador De Textos  E N  P D FProcesador De Textos  E N  P D F
Procesador De Textos E N P D F
 
derechos humanos
derechos humanosderechos humanos
derechos humanos
 
Ecuacion De 1er Grado
Ecuacion De 1er GradoEcuacion De 1er Grado
Ecuacion De 1er Grado
 

Último

Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
ViriEsteva
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
LudmilaOrtega3
 
Business Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business TechBusiness Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business Tech
johnyamg20
 
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptxSEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
Osiris Urbano
 
Vida, obra y pensamiento de Kant I24.ppt
Vida, obra y pensamiento de Kant I24.pptVida, obra y pensamiento de Kant I24.ppt
Vida, obra y pensamiento de Kant I24.ppt
LinoLatella
 
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdfCarnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
EleNoguera
 
Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
eleandroth
 
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJAPANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
estroba5
 
tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)
saradocente
 
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptxNuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
lautyzaracho4
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
RicardoValdiviaVega
 
Compartir p4s.co Pitch Hackathon Template Plantilla final.pptx-2.pdf
Compartir p4s.co Pitch Hackathon Template Plantilla final.pptx-2.pdfCompartir p4s.co Pitch Hackathon Template Plantilla final.pptx-2.pdf
Compartir p4s.co Pitch Hackathon Template Plantilla final.pptx-2.pdf
JimmyDeveloperWebAnd
 
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsadUrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
JorgeVillota6
 
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdfCUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
Inslvarez5
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
LuanaJaime1
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Juan Martín Martín
 
Liturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptxLiturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptx
YeniferGarcia36
 
Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)
https://gramadal.wordpress.com/
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
Jose Luis Jimenez Rodriguez
 
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
JAVIER SOLIS NOYOLA
 

Último (20)

Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
 
Prueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infanciaPrueba/test conoce tus heridas de la infancia
Prueba/test conoce tus heridas de la infancia
 
Business Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business TechBusiness Plan -rAIces - Agro Business Tech
Business Plan -rAIces - Agro Business Tech
 
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptxSEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
 
Vida, obra y pensamiento de Kant I24.ppt
Vida, obra y pensamiento de Kant I24.pptVida, obra y pensamiento de Kant I24.ppt
Vida, obra y pensamiento de Kant I24.ppt
 
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdfCarnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
Carnavision: anticipa y aprovecha - hackathon Pasto2024 .pdf
 
Presentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdfPresentación simple corporativa degradado en violeta blanco.pdf
Presentación simple corporativa degradado en violeta blanco.pdf
 
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJAPANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
PANDERETAS DECORADAS CON MOTIVOS DE LA RIOJA
 
tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)tema 7. Los siglos XVI y XVII ( resumen)
tema 7. Los siglos XVI y XVII ( resumen)
 
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptxNuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
 
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdfCronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
Cronica-de-una-Muerte-Anunciada - Gabriel Garcia Marquez.pdf
 
Compartir p4s.co Pitch Hackathon Template Plantilla final.pptx-2.pdf
Compartir p4s.co Pitch Hackathon Template Plantilla final.pptx-2.pdfCompartir p4s.co Pitch Hackathon Template Plantilla final.pptx-2.pdf
Compartir p4s.co Pitch Hackathon Template Plantilla final.pptx-2.pdf
 
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsadUrkuninaLab.pdfsadsadasddassadsadsadasdsad
UrkuninaLab.pdfsadsadasddassadsadsadasdsad
 
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdfCUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
CUENTOS EN MAYÚSCULAS PARA APRENDER A LEER.pdf
 
Presentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdfPresentación de proyecto en acuarela moderna verde.pdf
Presentación de proyecto en acuarela moderna verde.pdf
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
 
Liturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptxLiturgia día del Padre del siguiente domingo.pptx
Liturgia día del Padre del siguiente domingo.pptx
 
Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)Power Point: El conflicto inminente (Bosquejo)
Power Point: El conflicto inminente (Bosquejo)
 
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdfFEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
FEEDBACK DE LA ESTRUCTURA CURRICULAR- 2024.pdf
 
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
ACERTIJO DESCIFRANDO CÓDIGO DEL CANDADO DE LA TORRE EIFFEL EN PARÍS. Por JAVI...
 

cursoTutorialBPEL.pdf

  • 1. Web 2.0: Arquitectura Orientada a Servicios en Java Tutorial de BPEL Pablo García Sánchez pgarcia@atc.ugr.es Curso: Web 2.0. Arquitectura Orientada a Servicios en Java Escuela de Posgrado Febrero/Marzo de 2010 Pablo García Sánchez – Febrero/Marzo de 2010 1
  • 2. Web 2.0: Arquitectura Orientada a Servicios en Java Introducción: En este documento vamos a explicar pasito a pasito cómo crear un proceso BPEL simplón. El resumen de los pasos sería: 1) Crear proceso BPEL 2) Crear Composite Application y meterle dentro el proceso 3) Desplegar y Testear URLs de servicios a atacar: http://evorq.ugr.es:8080/evorqServices/ejemploServiceService?wsdl http://evorq.ugr.es:8080/evorqLogin/loginServiceService?wsdl Ejemplos a realizar: 1) SynchronousSample 2) Ejemplo del tutorial (el que dice “Hola”) 3) Ejemplo avanzado del tutorial (llama a los WS de la primera URL) 4) Ejercicio: cambiar el if por un flow y arreglar lo que pasa 5) Ejercicio: llamar a la operación getTicket de la segunda URL con datos correctos o incorrectos. Añadir manejador de faltas. 6) Llamar a la operación diHora con el ticket obtenido. 1. Crear Proceso BPEL 1) Crear Nuevo Proyecto: Simplemente vamos a New Project, elegimos SOA y luego BPEL Module. Pablo García Sánchez – Febrero/Marzo de 2010 2
  • 3. Web 2.0: Arquitectura Orientada a Servicios en Java 2) Crear WSDL En el proyecto recién creado pulsamos en el menú contextual New->WSDL Document, apareciendo el siguiente asistente: Elegimos un nombre para el WSDL y el target namespace (el que sale automático está bien, lo importante es que no se repita en otros proyectos para que no se líe la cosa). Creamos una operación de nombre “hablarme” con un string y booleano de parámetros de entrada y un string de salida, como vemos en la siguiente imagen: Pablo García Sánchez – Febrero/Marzo de 2010 3
  • 4. Web 2.0: Arquitectura Orientada a Servicios en Java En la siguiente ventana dejamos todo como está (ya depende el tema del proyecto en el que estemos trabajando!). Podemos ver el resultado de nuestro WSDL recién generado, que tendrá esta pinta más o menos: 2) Crear proceso BPEL Al igual que al crear el WSDL anterior seleccionamos en este caso New-> BPEL Process como se ve en la siguiente imagen: Pablo García Sánchez – Febrero/Marzo de 2010 4
  • 5. Web 2.0: Arquitectura Orientada a Servicios en Java Ahora: 1) Arrastramos el WSDL anterior a la izquierda del proceso BPEL, será el WSDL que describe al proceso. 2) Arrastramos las actividades Receive y Reply al proceso. Serán la entrada y salida del mismo. Unimos las actividades Assign y Reply a la operación WSDL que habíamos creado antes arrastrando los sobrecillos: Pablo García Sánchez – Febrero/Marzo de 2010 5
  • 6. Web 2.0: Arquitectura Orientada a Servicios en Java Como podemos ver, sigue dando errores (los receives y replies necesitan variables que recibir o enviar, claro). Hacemos doble clic en cada uno de ellos y le damos a “Create”: Como puede verse la nomenclatura por defecto es OperacionIn u OperacionOut. Es recomendable seguirla. Hay que hacer lo mismo en el reply, ojo! Ahora tenemos que hacer algo con las variables que hemos creado, que si no menuda gracia tendría BPEL. Por ejemplo vamos a probar la actividad Assign, arrastrándola al proceso. Pablo García Sánchez – Febrero/Marzo de 2010 6
  • 7. Web 2.0: Arquitectura Orientada a Servicios en Java En este instante uno empieza a darse cuenta de que las aspas rojas son errores, por lo que tenemos que deshacernos de ellas. Así hacemos doble clic en la actividad “Assign” para hacer la asignación, apareciendo la siguiente ventana: El mapeador (mapper). Vamos a añadir un “Hola” a la variable que recibamos de entrada y devolver la cadena resultante. Para ello seguimos los siguientes pasos: 1) Crear una operación Concat del menú String (como muestra la imagen siguiente). 2) De ese menú creamos un String Literal con la palabra “Hola”. 3) Arrastrar la flecha del “Hola” al primer hueco del Concat y la parte “quien” de la variable HablarmeIn a la segunda parte del Concat (el resto de huecos se pueden rellenar con más strings si quisieramos). 4) Arrastramos la salida a la parte “respuesta” de la variable “HablarmeOut” Pablo García Sánchez – Febrero/Marzo de 2010 7
  • 8. Web 2.0: Arquitectura Orientada a Servicios en Java OJO! Antes de nada tenemos que fijarnos que la variable que queremos asignar tiene que estar seleccionada (en este caso es “respuesta”). Y listo, tenemos un proceso BPEL que implementa una operación de un WSDL recibe un String y un Booleano y devuelve “Hola”+String. No es muy impresionante pero por algo se empieza. 2) Crear Composite Application Como hemos visto anteriormente en el curso JBI se basa en las Composite Applications para desplegar componentes en Glassfish, así que tenemos que crear una para poder desplegarla en nuestro servidor. Vamos a New->Project->SOA->Composite Application y la llamamos en un alarde de originalidad PruebaBPELcomposite. Después añadimos el proceso BPEL con “Add JBI Module”: Y seleccionamos nuestro proceso: A continuación hacemos “Clean and Build” en el menú contextual del proyecto y la aplicación se Pablo García Sánchez – Febrero/Marzo de 2010 8
  • 9. Web 2.0: Arquitectura Orientada a Servicios en Java refrescará: 3) Desplegar y testear la aplicación Dentro de la carpeta “Test” añadimos un nuevo Test Case. Seleccionamos el WSDL (el único que hay, claro): Y seleccionamos la operación (la única que hay, claro): Pablo García Sánchez – Febrero/Marzo de 2010 9
  • 10. Web 2.0: Arquitectura Orientada a Servicios en Java Se nos ha creado el test con un Input.xml y un Output.xml. El primero es la llamada SOAP al WSDL y el segundo está vacío. Un test se considera correcto si la salida del test coincide con el fichero Output.xml. Como está vacío, aunque la cosa funcione no van a ser iguales, por lo que el test fallará a propósito. Tras rellenar las partes del Input.xml que queremos enviar ejecutamos el test con el comando Run: Si no se ha hecho antes la aplicación se desplegará en Glassfish y tras un rato hará la llamada SOAP al servicio del WSDL del BPEL. Como hemos dicho la primera vez que hagamos tests NetBeans nos indicará que se está comparando con un Output.xml vacío, así que nos propone que el que acabamos de recibir sea el Pablo García Sánchez – Febrero/Marzo de 2010 10
  • 11. Web 2.0: Arquitectura Orientada a Servicios en Java bueno. Le decimos que sí, que vale. Para ver el resultado de los tests hacemos doble clic en el sobre que los representa. Vemos que la cosa ha ido bien (obviando que no he puesto un espacio al lado del “Hola” de la asignación anterior, y que por eso no queda tan elegante la respuesta). Gestión de la Composite Application Hemos dicho que se ha desplegado la aplicación en Glassfish y que hemos llamado a un WS a una dirección que no sabemos aún. ¿Cómo podemos quitar la aplicación de Glassfish y saber más cosas sobre ella? Simplemente nos vamos a la pestaña Services (al lado de la de Projects). Vemos que el servidor GlassFish está arrancado (tiene un play al lado del pescao). Si desplegamos el nodo JBI podemos ver los Services Engines que tenemos instalados (en este caso el de BPEL y el de JavaEE, pero podemos añadir muchos más) y que tenemos desplegada una Composite Application llamada PruebaBPELcomposite. ¡La nuestra! Pablo García Sánchez – Febrero/Marzo de 2010 11
  • 12. Web 2.0: Arquitectura Orientada a Servicios en Java Vemos que tenemos un Binding Component para comunicarse por HTTP (podríamos instalar otro para SMTP, JMS o incluso Bluetooth si quisieramos desarrollarlo!), pero vamos a ver su información para ver cómo podemos llamar a los servicios web JBI de Glassfish. Vemos que el puerto SOAP que usa es el 9148, así que ya sabemos donde mirar. Comprobamos la url del servicio en el propio archivo WSDL del proyecto: Pablo García Sánchez – Febrero/Marzo de 2010 12
  • 13. Web 2.0: Arquitectura Orientada a Servicios en Java <service name="EjemploBPELService"> <port name="EjemploBPELPort" binding="tns:EjemploBPELBinding"> <soap:address location="http://localhost:$ {HttpDefaultPort}/EjemploBPELService/EjemploBPELPort"/> </port> </service> Y sustituimos el puerto por el que hemos visto en la imagen anterior, el 9148. Pablo García Sánchez – Febrero/Marzo de 2010 13
  • 14. Web 2.0: Arquitectura Orientada a Servicios en Java Fíjate como actualiza automáticamente la location del servicio con mi IP (150.214.221.124:9148) Pablo García Sánchez – Febrero/Marzo de 2010 14
  • 15. Web 2.0: Arquitectura Orientada a Servicios en Java Podemos testearlo con SoapUI utilizando este WSDL: También funciona! SEGUNDA PARTE: Orquestando Servicios Bueno, pero la gracia de BPEL es orquestar servicios, ¿no? Vamos a añadirle por tanto alguna funcionalidad interesante a nuestra aplicación. Añadimos un WSDL externo con los servicios que vamos a utilizar, desde New File->External WSDL Document: Ahora arrastramos el WSDL desde el proyecto a la parte derecha del proceso. Ya podemos ver las operaciones a las que el BPEL puede llamar. Vamos a probar también a llamar a una de las dos operaciones dependiendo del booleano de la entrada, así que añadimos un if arrastrándolo: Pablo García Sánchez – Febrero/Marzo de 2010 15
  • 16. Web 2.0: Arquitectura Orientada a Servicios en Java Y asignamos la variable de entrada del if a la condición en el mapper que se muestra al hacer doble clic en él: Después añadimos los invokes: Pablo García Sánchez – Febrero/Marzo de 2010 16 Arrastrar el WSDL recién creado Arrastrar el IF
  • 17. Web 2.0: Arquitectura Orientada a Servicios en Java Y los unimos con las operaciones con los sobrecillos, creando las variables: Pablo García Sánchez – Febrero/Marzo de 2010 17
  • 18. Web 2.0: Arquitectura Orientada a Servicios en Java Añadimos assigns antes y después de los invokes Y en cada uno de ellos metemos el nombre del HablarmeIn en la parte que corresponda: Para decir Hola: Pablo García Sánchez – Febrero/Marzo de 2010 18
  • 19. Web 2.0: Arquitectura Orientada a Servicios en Java Para decir adios. Y luego en los otros assigns la salida: Pablo García Sánchez – Febrero/Marzo de 2010 19
  • 20. Web 2.0: Arquitectura Orientada a Servicios en Java Hacemos lo mismo con la operación diAdios: Y listo, podemos volver a ejecutar tests pasándole un booleano para que nos diga “Hola” o “Adios”. No es muy impresionante pero para empezar no está mal. Nota: ¿Os dice siempre “Hola”? Eso es que el flujo tiene algo mal que no habéis quitado... mirad el recorrido que hace el proceso BPEL, a ver si hay algo que sobra... Ah! Los ejemplos resueltos están en http://evorq.ugr.es/cursows/bpel/ Pablo García Sánchez – Febrero/Marzo de 2010 20
  • 21. Web 2.0: Arquitectura Orientada a Servicios en Java Ejercicio: Servicio Web de Ticket En este ejercicio vamos utilizar gestión de tickets. El uso de tickets sirve para centralizar el acceso a servicios web que requieran autentificación: en vez de usar usuario y contraseña en cada operación segura utilizamos un ticket autogenerado por el sistema. Vamos a crear un nuevo proyecto. El WSDL de entrada del proceso BPEL tendrá una operación con dos strings de entrada (ususario/contraseña) y uno de salida que devuelve la hora. El WSDL a llamar está en http://evorq.ugr.es:8080/evorqLogin/loginServiceService?wsdl Hay que llamar primero a la operación “getTicket” que devuelve un ticket que será utilizado en la operación “diHora”. El proceso tiene que quedar así: Comprobar que funciona con el usuario batman y la contraseña joker. Comprobad qué pasa si metemos algún parámetro mal. Utilizar el manejador de faltas para corregir el error: añadir un scope, pulsar en él, añadir el fault handler, añadir un catch all, y asignar un error al reply. Pablo García Sánchez – Febrero/Marzo de 2010 21
  • 22. Web 2.0: Arquitectura Orientada a Servicios en Java Pablo García Sánchez – Febrero/Marzo de 2010 22