ESTUDIOS PROFESIONALES PARA EJECUTIVOS

Anuncio
ESTUDIOS PROFESIONALES PARA EJECUTIVOS
GUIA DE PROCESOS BPEL
SISTEMAS DISTRIBUIDOS (IS18)
1. Iniciar la base de datos en caso no se haya hecho previamente. Se debe seleccionar el
menú Iniciar Base de datos.
2. Asegurarse que la base de datos levanto correctamente. Se debe seleccionar Ir a la Página
Inicial de Base de datos.
3. Ingresar al directorio donde se encuentra instalado el Oracle MiddleWare y ejecutar el
comando para levantar los servidores. Verificar en el directorio g:\Oracle\Middleware
4. Al ejecutar el comando se abren dos ventanas. La primera levanta el servidor WebLogic y
la segunda levanta el servidor SOA. La primera ventana tarda aproximadamente 2 minutos
en terminar de ejecutarse, mientras que el servidor SOA tarda aproximadamente 9
minutos en levantarse completamente. Tener en consideración que de acuerdo al
comando enviado, tardará “n” segundos antes de iniciar el servidor SOA. Por ejemplo al
llamar al comando start_all 200, esto significa que luego de 200 segundos iniciará el
servidor SOA.
5. Para verificar que el WebLogic se inició completamente se debe verificar que aparezca una
ventana de comandos con un mensaje de RUNNING al final de la ventana.
6. Para verificar que el servidor SOA se inició correctamente se debe verificar que aparezca
una ventana de comandos con un mensaje de accepting requests al final de la ventana.
7. En este momento estamos listos para iniciar el JDeveloper que nos permitirá realizar el
proceso BPEL.
WEB SERVICE EN JAVA
1. El objetivo de esta sección es crear un WebService que simulará devolver el precio de un
producto. El Web service será realizado en Java a modo de ejemplo.
2. En JDeveloper cerrar todas las aplicaciones y proyectos existentes de tal manera que
iniciemos desde cero.
3. Al cerrar todos los proyectos y aplicaciones nos mostrará una ventana similar a la
siguiente:
4. Crear una nueva aplicación de tipo Generic Application con los siguientes parámetros
5. Presionar Next
6. Nombrar al proyecto PrjProveedor y presionar Finish.
7. En el proyecto PrjProveedor crear un Java Class
8. Nombrar al java Class de la siguiente manera:
9. Al presionar OK se crea una clase Proveedor que nos permitirá crear métodos que luego
serán las operaciones de un servicio.
10. La clase proveedor debe tener una operación obtenerPrecio que debe devolver un objeto
de tipo Cotización que tiene el código del producto, nombre del producto y precio del
producto. Para poder devolver esta información es necesario crear una nueva clase
llamada Cotización que tenga los atributos a devolver.
11. Al presionar OK Se crea la clase cotización.
12. Se deben agregar las propiedades de la clase Cotización y luego generar sus métodos
13. En este momento vamos a crear la operación en la clase Proveedor que devuelva la
información de una venta recibiendo como input el código.
14. Generar el proyecto para asegurarnos que no existan errores
15. Revisar la ventana de mensajes para verificar que no existan errores:
16. En este momento estamos listos para generar un Web Service sobre la clase Proveedor
17. Presionar Next
18. Asegurarse que el Nombre del Web Service se llame ProveedorService y presionar Next
19. En la pantalla de Message Format se debe seleccionar SOAP 1.2
20. Seleccionar el método a publicar en el servicio.
21. Presionar finish
22. El Web service se ha generado y ahora debemos probar
23. Seleccionamos el menú Test Web Service para probar el Web Service del proveedor
24. El procedimiento que realiza el menú Test Web Service es
a. Compila el Servicio
b. Inicia el Weblogic interno (WebLogic incorporado al Jdeveloper)
c. Despliega el servicio en el Weblogic interno
d. Muestra una pantalla para probar el Web Service
e. (WebLogic incorporado al Jdeveloper)
25. En este momento debemos hacer un alto para copiar la ruta del wsdl. Presionar el botón
Open WSDL…
26. Copiar el WSDL URL en un archivo notepad de tal manera que lo tengamos para luego
usarlo en el BPEL. Este punto es muy importante para la continuidad del proyecto.
27. Luego de haber copiado presionar OK y regresar a la ventana de testing para continuar con
la prueba.
28. Ingresar un código en el campo arg0. A modo de ejemplo ingresar el código 135723 y
presionar SendRequest
29. Como resultado nos muestra lo siguiente
30. En este momento ya tenemos el Web service proveedor que retorna los datos de un
producto.
31.
BPEL SINCRONO
1. El siguiente paso es crear un proyecto BPEL síncrono que consuma el Web Service del
proveedor.
2. Crear un proyecto de tipo SOA.
3. Presionar OK
4. Nombrar al proyecto de la siguiente manera:
5. Presionar Next y crear un Empty Composite
6. Presionar Finish
7. Se crea un composite application con tres swin lanes para agregar los componentes:
8. El primer paso que debemos realizar es agregar el servicio de proveedor que se ha creado.
Para realizar esto se debe agregar un componente WebService al swin lane derecho, sin
embargo debemos conocer la ruta del WSDL previamente (Esto se realizó en la sección
anterior).
9. Ingresar los siguientes datos
10. Al presionar OK se agrega un Web Service en el Swin lane derecho
11. El siguiente paso es crear un Componente BPEL. Sin embargo existen varias maneras de
crear un proceso BPEL que puede ser basado en un WSDL, XSD, etc. En este caso vamos a
usar un XSD que nos permita indicar cuáles son los INPUT y OUTPUT del proceso BPEL.
12. Abrir el notepad y crear un archivo XSD de nombre ProveedorSchema con las siguientes
características:
<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jaxws.dev.java.net. RI's version is Oracle JAX-WS 2.1.4. -->
<xs:schema xmlns:tns="http://prjschema/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0" targetNamespace="http://prjschema/">
<xs:element name="obtenerPrecio" type="tns:obtenerPrecio" />
<xs:element name="obtenerPrecioResponse" type="tns:obtenerPrecioResponse" />
<xs:complexType name="obtenerPrecio">
<xs:sequence>
<xs:element name="arg0" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="obtenerPrecioResponse">
<xs:sequence>
<xs:element name="return" type="tns:cotizacion" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="cotizacion">
<xs:sequence>
<xs:element name="codigo" type="xs:string" minOccurs="0" />
<xs:element name="nombre" type="xs:string" minOccurs="0" />
<xs:element name="precio" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>
13. El archivo se debe guardar en C:\sd\AppProveedor\PrjProveedorBPEL\xsd
14. Regresar al composite y en la sección componentes agregar un BPEL Process con las
siguientes características:
15. En input se debe buscar el archivo XSD que acabamos de crear y seleccionar la sección
obtenerPrecio y presionar OK
16. En Output se debe seleccionar obtenerPrecioResponse
17. Presionar OK
18. No olvidar que en la ventana de creación del proceso BPEL se debe seleccionar de tipo
síncrono y marcar el check de expose as a web service.
19. Presionamos OK
20. Se crea el Proceso BPEL y el servicio que se expone a los clientes
21. Procedemos a enlazar el BPEL con el ServicioProveedor
22. Hacemos doble click en el BPEL Process para poder definir las actividades a realizar
23. Nos muestra el editor del BPEL Process
24. Las actividades básicas que se muestran son receiveInput y replyOutput. Esto se crea por
defecto dado que es un proceso Síncrono.
25. Debemos ahora enviar los datos recibidos en el proceso BPEL al servicioProveedor. Para
realizar esto se debe crear una actividad de invoke la cual debe invocar al servicio
ServicioProveedor
26. Hacer doble click en la actividad invoke para asignarle un nombre. Le colocamos de
nombre invocaProveedor y presionamos OK.
27. Ahora se debe enlazar invocaProveedor con el servicio del proveedor.
28. Dado que esta actividad debe llamar a un servicio de manera síncrona. Esto significa que el
la actividad invocaProveedor tiene una variable de entrada y una variable de salida que
pasan por el mismo enlace.
29. Es por esta razón que se deben crear ambas variables en este momento.
30. Abrir la actividad InvocaProveedor y presionar el signo de sumar verde para crear las
variables de input y output. Dejar los valores por defecto.
31. Presionar OK
32. En este momento se tiene cuatro variables. La variable que entra al proceso INPUT, la
variable que sale del proceso OUTPUT y las variables de input y output creadas en el paso
30.
33. Necesitamos entonces hacer que los datos de la variable de Input sean pasados a la
variable de input del proveedor para poder invocar el servicio. Entonces se debe agregar
una actividad de asignación.
34. Abrir la actividad Assign para realizar el copiado de los valores de la variable de Input.
35. Presionar el símbolo de suma verde para poder agregar el proceso de copia.
36. En la pantalla de copiado se debe copiar el código entre ambas variables, dado que es el
código que ingresa a la operación que se requiere usar.
37. Note como se copia de InputVariable a InvocaProveedor_obtenerPrecio_InputVariable.
38. Presionar OK
39. Presionar nuevamente OK en la variable de Assign.
40. En este momento ya se logró copiar los valores y le llegarán al Web Service.
41. La respuesta del Web Service es la cotización y esos valores se encuentran en la variable
InvocaProveedor_obtenerPrecio_OutputVariable.
42. Entonces lo que tenemos que hacer ahora es el resultado de la llamada al servicio
debemos de copiarlo a la variable de output que es la salida del proceso BPEL. Para
realizar esto debemos crear otro Assign y luego copiar los valores como se hizo
previamente.
43. Crear un Assign entre InvocaProveedor y Reply
44. Hacer doble click en el nuevo Assign y presionar el signo de más verde para crear una
nueva copia de valores.
45. En este caso se debe copiar desde InvocaProveedor_obtenerPrecio_OutputVariable a la
variable Output
46. Hacer un copy por cada atributo. Debe quedar de la siguiente manera:
47. Presionar OK.
48. Presionar el check verde para validar el proceso.
49. Compilar el proceso.
50. Asegurarse que no se muestren errores
51. Desplegar el aplicativo
52. Revisar los valores y presionar OK
53. En caso solicite usuario y password ingresar weblogic, welcome1
54. Asegurarse que el proceso fue desplegado correctamente.
55. Ingresar al Enterprise Manager para probar el aplicativo.
56. http://localhost:7001/em
57. Ingresar el usuario y password y buscar la aplicación desplegada.
58. Presionar Probar
59. Ingresar el valor de 135723 y presionar el botón probar Servicio Web
CREAR UN PROCESO BPEL ASYNC
1. Crear un proyecto SOA
2. Nombrar el proyecto PrjProveedorBPELAsync
3. En El Swinlane de External References crear el Web Service ProveedorService
4. Crear un componente de acuerdo al schema ProveedorSchema de acuerdo a la siguiente
estructura
<?xml version='1.0' encoding='UTF-8'?><!-- Published by JAX-WS RI at http://jax-ws.dev.java.net.
RI's version is Oracle JAX-WS 2.1.4. -->
<xs:schema xmlns:tns="http://prjschema/" xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="1.0" targetNamespace="http://prjschema/">
<xs:element name="obtenerPrecio" type="tns:obtenerPrecioTotal" />
<xs:element name="obtenerPrecioResponse" type="tns:obtenerPrecioTotalResponse" />
<xs:complexType name="obtenerPrecioTotal">
<xs:sequence>
<xs:element name="codigo1" type="xs:string" minOccurs="0" />
<xs:element name="codigo2" type="xs:string" minOccurs="0" />
<xs:element name="codigo3" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="obtenerPrecioTotalResponse">
<xs:sequence>
<xs:element name="return" type="tns:cotizacion" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="cotizacion">
<xs:sequence>
<xs:element name="precioTotal" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:schema>
5. Grabar el archivo en el directorio xsd del proyecto.
6. Refrescar presionando el ícono que mantiene dos flechas juntas:
7. Crear el Proceso BPEL de tipo Asincrono y crear las variables de entrada y salida.
8. Se muestra una composición de servicios de la siguiente manera
9. Unir el proceso con el Web Service Externo.
10. Doble click en el BPEL
11. Se puede observar que el BPEL Creado automáticamente tiene un receive y un
callbackClient. La estructura de este BPEL nos está mostrando gráficamente que es un
proceso asíncrono.
12. Dado que recibimos tres códigos para hacer un cálculo total vamos a realizar 3 llamadas al
servicio ProveedorService y cada una con un código distinto. Entonces debemos tener 3
invoke que se llaman paralelamente.
13. Agregamos un flow que permite trabajar actividades paralelamente.
14. Por defecto aparecen 2 líneas, sin embargo debemos presionar la flecha azul que aparece
con un símbolo más para tener 3 líneas paralelas.
15. En cada una de las líneas debemos agregar un invoke
16. Unimos cada invoke con el proveedor Service de tal manera que colocamos los siguientes
valores para cada uno de ellos:
a. nombre Invoke1
b. presionar el más verde para crear la variable de input
c. presionar el más verde para crear la variable de output
17. Realizar el mismo procedimiento para el Invoke2 e Invoke3
18. El BPEL nos muestra las actividades de la siguiente manera:
19. Ahora es necesario decirle que se debe enviar al servicio. Por cada Invoke se debe crear
una actividad de tipo ASSIGN
20. Abrir el Assign1
21. Crear una operación de copia.
22. Crear una operación de copia para el código1 y la variable de Input del Invoke1.
23. Se debe realizar lo mismo con el Invoke2 e Invoke3
24. Invoke2
25. Invoke3
26. Como la llamada al servicio ProveedorService se realiza sincrónicamente, entonces las
variables se devuelven por el mismo canal.
27. Agregar un assign que evaluara los resultados de los precios de tal manera que sume los 3
valores y luego devuelve un valor final a la variable de salida del proceso.
28. Hacer doble click en Assign_4 para
29. Crear un copy operation
30. Cambiar en la lista variable por Expression
31. Presionar el ícono de la calculadora de tal manera que muestre la siguiente pantalla.
32. Sumar las 3 variables de precio de cada output
33. Presionar OK
34. Seleccionar en el lado derecho la variable precioTotal
35. Presionar OK para confirmar la asignación.
36. El BPEL Asincrono formado es el siguiente:
37. Compilar el proyecto.
38. Desplegar el proyecto
39. Probar el proyecto desde el Enterprise Manager.
Descargar