Colonial Battlestar Combat
Proyecto
Simulator
Pablo García Sánchez
[email protected]
Departamento de Arquitectura y Tecnologia de Computadores Cylon
Curso Web 2.0 Arquitectura Orientada a Servicios en Java
Escuela de Posgrado
Febrero/Marzo de 2010
La idea
El Doctor Gaius Baltar nos ha pedido que
orquestemos algunos servicios web existentes
para hacer simulaciones de las estrellas de
combate.
¿Cómo desarrollarlo?
Primera parte: BPELpreparar
Paso 1: Hacer un BPEL que obtenga el número de
vipers de una estrella (llamando a getVipers(id))
Paso 2: Obtener el número de pilotos
(getPilotos(id)) y compararlo con el número de
vipers obtenido y calcular el menor (N)
Paso 3: Iterar por los N primeros vipers para
prepararlos (prepararViper(idViper))
Web 2-0: Arquitectura Orientada a Servicios en Java
3
Pasos a seguir (y 2)
Segunda parte: BPELenfrentar
Paso 1: Llamar al primer BPEL dos veces (uno por
cada estrella a enfrentar) que prepara los Vipers
Paso 2: Llamar a
getVipersPreparados(idEstrella) de las
dos estrellas a enfrentar
Paso 3: Con esas dos listas llamamos a
combate(lista1,lista2) y devolvemos el
String del resultado.
Web 2-0: Arquitectura Orientada a Servicios en Java
4
Primera Parte
Creamos BPEL Module
Añadimos WSDL local: wsdlEscuadron
Operación xsd:long =
prepararEscuadron(xsd:long)
Añadimos WSDL externo:
http://evorq.ugr.es:8080/ComputadoraDeBatall
aWeb/EstrellaDeCombateServiceService?wsdl
Creamos Composite application
Web 2-0: Arquitectura Orientada a Servicios en Java
5
Primera Parte
Web 2-0: Arquitectura Orientada a Servicios en Java
6
Tras el paso 1 y el paso 2...
Web 2-0: Arquitectura Orientada a Servicios en Java
7
Paso 3: Iterar (iniciar el contador
del For Each)
Web 2-0: Arquitectura Orientada a Servicios en Java
8
Paso 3: Iterar (seleccionar el
nodo con el contador)
Web 2-0: Arquitectura Orientada a Servicios en Java
9
Paso 3: Iterar (el assign del
cuerpo del For Each queda así)
Web 2-0: Arquitectura Orientada a Servicios en Java
10
”Preparar” listo
Asignar los iDs
de las estrellas
Obtener número de
pilotos y de vipers
Coger el menor
Iterar por los vipers para
asignarles pilotos
(automáticamente)
Web 2-0: Arquitectura Orientada a Servicios en Java
11
Segunda Parte
Creamos un nuevo proyecto BPEL Module y
Composite Application y añadimos:
El WSDL a ComputadoraDeBatallaWeb
El WSDL del anterior proyecto
El WSDL local
Con la operación
xsd:string = enfrentar(xsd:long id1, xsd:long id2)
Web 2-0: Arquitectura Orientada a Servicios en Java
12
Segunda Parte
Web 2-0: Arquitectura Orientada a Servicios en Java
13
Segunda parte: Paso 1
Asignar iDs
Devolver String para ver si
funciona:
”numVipers1/numVipers2”
(ver transparencia
siguiente)
Web 2-0: Arquitectura Orientada a Servicios en Java
14
Devolver String
Web 2-0: Arquitectura Orientada a Servicios en Java
15
Paso 2 y 3
Llamamos a ”getVipersPreparadas” y luego con
estas vipers llamamos a ”combate”:
Web 2-0: Arquitectura Orientada a Servicios en Java
16
Paso 2 y 3: Convertir informe a
String
Web 2-0: Arquitectura Orientada a Servicios en Java
17
Segunda parte: final
Paso 1
Paso 2
Paso 3: Preparar
variables de entrada
de combate
(transparencia
anterior)
Web 2-0: Arquitectura Orientada a Servicios en Java
18
Y debería funcionar...
<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-
ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://schemas.xmlsoap.org/soap/envelope/
http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body><m:wsdlEnfrentamientoOperationResponse
xmlns:m="http://j2ee.netbeans.org/wsdl/wsdlEnfrentamiento">
<informe xmlns:msgns="http://j2ee.netbeans.org/wsdl/wsdlEnfrentamiento"
xmlns="">true1987Vipper id(19)pilotada por Gaius Baltar dispara a Vipper
id(87)pilotada por Comandante Adama destruyendolofalse1988Vipper id(19)pilotada
por Gaius Baltar dispara a Vipper id(88)pilotada por Laura Roslin pero falla!
true8819Vipper id(88)pilotada por Laura Roslin dispara a Vipper id(19)pilotada por
Gaius Baltar destruyendolo BLA...BLA... EL bando azul (segundo) gana el
comabte.</informe>
</m:wsdlEnfrentamientoOperationResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Web 2-0: Arquitectura Orientada a Servicios en Java
19
Errores a tener en cuenta
Si hay acceso denegado al hacer Clean and Build ir a
la gestión de Composite Applications (página 12 del
tutorial) y darle a undeploy de la aplicación que se
queja. Si se sigue quejando cerrar el servidor.
Si al testear el segundo BPEL en el SOAP sale algo
como <detail xmlns=""><detailText>BPCOR-6135:A
fault was not handled in the process scope;...
hay que volver a desplegar el primer BPEL (testearlo
antes para comprobar que funciona)
Web 2-0: Arquitectura Orientada a Servicios en Java
20
Mejoras (si hay tiempo)
Añadir Fault Handlers
Modificarlo para que en vez de devolver un
xsd:string devuelva directamente un
InformeDeCombate
Web 2-0: Arquitectura Orientada a Servicios en Java
21
Listo!
Ahora Cáprica 6 (la de la izquierda) puede
inyectar el virus al sistema informático de Baltar
para contagiar toda la Flota Colonial.
Web 2-0: Arquitectura Orientada a Servicios en Java
22
Comentarios de: Proyecto Colonial Battlestar Combat Simulator (0)
No hay comentarios