Sunteți pe pagina 1din 21

Examenes SOS

6 de junio de 2012
Cuestiones breves
Ejercicio 1
a) Se quiere mantener la misma sesin de cliente entre distintos servicios web implementados
con Axis2. Indique los cambios a aadir en el cdigo de los clientes y del servidor, as como la
configuracin de despliegue necesaria.
b) Indique si es posible tener un servicio desplegado en un contenedor de tal forma que pueda
ser llamado desde un cliente que use SOAP 1.2 y otro cliente que use SOAP 1.1. En caso
afirmativo explicar cmo se hara, en caso contrario explicar por qu no se puede.
Solucin
a) Deben cumplirse dos requisitos:
1) Los servicios deben de estar agrupados en el mismo 'Group Service'. Para ello debe
meterse los servicios dentro de la misma etiqueta <GroupService> en el fichero
services.xml .
2) La sesin debe de mantenerse a nivel de sesin, no de transporte. Para ello se debe
fijar el scope de cada servicio como "soapsession" dentro de la etiqueta <Service> que
define ese servicio en el services.xml . Adems, los clientes deben activar la sesin y
activar el mdulo de direccionamiento.
b) S se puede. Basta, a la hora de definir el servicio, con hacer dos bindings distintos de la
misma interfaz (etiqueta <binding>), uno para SOAP 1.1 y otroa para SOAP 1.2 en el fichero
.WSDL, que a su vez se mostrarn como dos servicios distintos (dos etiquetas <service>
distintas cada una asociada a uno de los <binding>). Despus, el comando wsdl2java.sh
generar dos skeleton distintos, uno para cada <service> del .WSDL . Lo nico que hay que
hacer es, en vez de implementar el servicio dos veces una por skeleton, hacer que los dos
skeleton llamen a la misma implementacin nica.
Ejercicio 2
a) Explique por qu al ejecutar la implementacin de MapReduce de Hadoop sobre HDFS
podemos esperar un rendimiento mejor que sobre otros sistemas de ficheros (sobre todo con
cantidades grandes de datos).
b) Indique si en un trabajo MapReduce las tareas Reduce pueden ejecutarse a la vez que las
Map (al menos a la vez que algunas de ellas). Razone la respuesta.
Solucin
a) La implementacin de Hadoop de MapReduce sabe preguntar a HDFS dnde estn los datos
que forman la entrada, para luego ejecutar las tareas Map y Reduce en los mismos nodos que
contienen los datos. Al mover el cdigo hacia los datos en vez de los datos hacia el cdigo se
obtiene una eficiencia mayor. Esto no es posible en otros sistemas de ficheros ya que Hadoop
no tiene forma de saber dnde estn situados los datos, con lo que tiene que mover los datos
donde est el cdigo.
b) No, es necesario ejecutar todas las tareas Map antes de poder empezar a ejecutar las tareas
Reduce. Esto se debe a que cualquiera de los items de salida de la tarea Map (hasta el ltimo)
puede formar parte del input de cualquiera de las tareas Reduce a ejecutar. Es decir, hasta que
no se acaba de ejecutar todas las tareas Map no puede saberse si ya se tienen todos los datos
necesarios para cualquiera de las tareas Reduce.
Ejercicio 3
Comente el siguiente extracto obtenido de la documentacin de la API del servicio de favoritos
(bookmarking) social del.icio.us ofrecido por Yahoo!. Se utiliza correctamente la semntica de
los verbos http?Se utiliza correctamente http en la respuesta? puede hablarse de un servicio
RESTful? Razone su respuesta
Posts:

Solucin
La operacin de eliminacin de un post (favorito) se realiza mediante un POST http, cuando
debera hacerse mediante un DELETE http para respetar la semntica de los verbos que
representan la interfaz uniforme http. Debera haberse utilizado un DELETE http sobre el URI
del recurso que representa ese post de del.icio.us. Se devuelve adems un error codificado en
el cuerpo de la respuesta, en lugar de utilizar para ello los cdigos de error http.
En particular 200 OK en este caso.

Ejercicios largos
Ejercicio 1
1. Un proveedor de componentes informticos lleva a cabo el siguiente proceso de negocio:
Cuando el proveedor recibe un mensaje de peticin de envo de stock, a la vez que se
empaqueta el material solicitado, se debe decidir si utilizar para el envo el correo postal
tradicional, o si por el contrario conviene utilizar los servicios de un transportista. En el caso del
correo tradicional, se debe comprobar si es necesario asegurar o no el paquete, adems de
etiquetarlo correctamente y ponerle los sellos necesarios. Si se decide utilizar un transportista,
se deben solicitar antes varios presupuestos, elegir uno de ellos, y asignar el paquete a dicho
transportista. Una vez est todo listo, el paquete se pone en el rea de salida del proveedor a la
espera de la llegada del transportista o de llevarlo a correos.
Por su parte, la empresa de transportes tiene el siguiente proceso de negocio establecido:
Cuando llega una solicitud de presupuesto, se calcula el mismo y se enva a quien lo haya
solicitado, pasando a continuacin a un estado de espera para ver si se acepta o no dicho
presupuesto. En caso afirmativo, se toma nota del nuevo envo, se pasa a recoger el paquete y
a llevarlo a su destino. En caso negativo, o bien pasadas 72 horas, se finaliza el proceso.
Disee y modele ambos procesos de negocio utilizando BPMN 2.0, as como la
coreografa implcita existente entre ambos, teniendo en cuenta que en el proveedor
existen al menos dos roles, el recepcionista y el trabajador del almacn, y en el transportista
otros dos: el recepcionista y el chico de la moto.
Solucin

Ejercicio 2
Se desea ofrecer acceso a travs de una API REST a un servicio de reputacin que ofrece, entre
otra, la siguiente funcionalidad:
a) Permite contabilizar el nmero de clientes que consideran spammer a otro usuario
determinado. Para ello se ofrece un recurso con URI:
http://confia.com/usuarios/[id_usuario]/is-spammer
Al ser invocado, incrementa en 1 el valor almacenado, reflejando con ello que el usuario
id_usuario es considerado como spammer por un cliente ms (disminuye su reputacin). Si
id_usuario no existe, devuelve el correspondiente error http.
b) Permite introducir un comentario acerca de un usuario. Para ello se ofrece un recurso:
http://confia.com/usuarios/[id_usuario]/comentario?id-cliente=[id_cliente]
Al ser invocado, incluye un comentario sobre el usuario id_usuario, asocindolo al id_cliente
que lo realiza. Si ya existe un comentario de id_cliente, se sobreescribe.
c) Antes de poder participar y opinar sobre la reputacin de otros usuarios, un cliente debe
haberse dado de alta en el servicio. Por ello, el servicio permite crear un nuevo usuario, sobre
el que adems se podr posteriormente ofrecer informacin de reputacin. Para ello se ofrece
un recurso que el cliente puede utilizar para crear un usuario con identificador id_usuario, y
asociarle una descripcin. El identificador de usuario lo decide el cliente. Si ya existe otro
usuario con ese mismo identificador, devuelve el correspondiente error http.
Determine qu verbo http (GET, PUT, POST, DELETE) es ms apropiado para ofrecer cada
funcin. En los casos en que no se especifique el URI o patrn de URI utilizado, deber ofrecer
uno adecuado, a modo de ejemplo. Razone su respuesta.
Solucin
a) Se prefiere el uso de POST ya que el incremento de un contador supone una accin no
idempotente sobre el recurso
http://confia.com/usuarios/[id_usuario]/is-spammer
b) Se prefiere el uso de PUT ya que se trata de una operacin de modificacin total y/o
sobreescritura del recurso. Es por tanto una accin idempotente.
c) Se prefiere el uso de PUT ya que el identificador de usuario, y por tanto el URI del nuevo
recurso que se quiere crear lo decide el cliente.
http://confia.com/usuarios/[id_usuario]

6 de julio de 2012
Cuestiones breves
Ejercicio 1
a) Enumere cules son las partes principales de un documento WSDL (v 2.0), e indique
brevemente para qu se usa cada una de ellas. En un documento WSDL cmo se puede hacer
que una interfaz definida por WSDL est disponible mediante varios protocolos de mensajera
(e.g. SOAP y HTTP) distintos, en distintos puertos?
b) Defina los pasos bsicos para crear y desplegar con Axis2 en Tomcat un servicio a partir de
su definicin en WSDL (suponga que en Tomcat ya se ha instalado Axis2).
Solucin
a) Son cuatro partes:
<types> Define los tipos a usar en los parmetros y resultados de los mtodos que
formarn las interfaces.
<interface> Agrupan operaciones, definiendo para cada mtodo los tipos de
entrada, salida y error.
<binding> Asocia una <interface> con un protocolo de mensajera determinado.
<service> Especifica el endpoint (IP y puerto) en el que se debe escuchar para los
mensajes de un <binding> determinado. Basta con definir varios <binding> para la
misma interfaz, y despus asociar cada uno de esos <binding> con <service> distintos
cada uno con su endpoint (IP y puerto) propio.
b)
Primer paso: generar skeleton(s) del servicio a partir del WSDL con wsdl2java.sh
Segundo paso: implementar el servicio 'rellenando' los skeleton(s) generados
Tercer paso: configurar services.xml (por ejemplo para definir el tipo de sesin) y
generar el .aar correspondiente mediante la herramienta ant.
Cuarto paso: copiar el fichero .aar en el directorio correspondiente a axis2 dentro de
Tomcat.
Ejercicio 2
a) Explique por qu son necesarios los protocolos WS de mensajera fiable incluso si los
mensajes se envan sobre protocolo de red TCP. Qu garantas se pueden proporcionar en una
conversacin WSRM?
b) Enumere y defina brevemente los distintos tipos de informacin que podemos encontrar en
un directorio UDDI.
Solucin
a) TCP no asegura que el mensaje llegue a la aplicacin destino con xito (slo llega hasta el
middleware de WS) y por lo tanto no se puede saber si ha sido procesado. Asimismo, si se
rompe y rehace la conexin durante el envo de mensajes, es posible que se reenven mensajes
que ya han llegado al destino y que por lo tanto sern procesados dos veces.
Las garantas que pueden pedirse respecto al envo/recepcin de mensajes con WSRM son:
atMostOnce Cada mensaje llegar como mucho una vez al destino.
atLeastOnce Cada mensaje llegar al menos una vez al destino.
exactlyOnce Cada mensaje llegar una y solo una vez al destino.
ordered Los mensajes se entregarn en el mismo orden de envo en destino.
b)
Business entity Informacin sobre el proveedor de un servicio.
Business service Informacin sobre el servicio publicado.
Binding template Informacin sobre la interfaz del servicio y cmo acceder al
mismo.
tModel Informacin tcnica, puede referirse a un WSDL, a una taxonoma, etc.
Ejercicio 3
Se muestra a continuacin un extracto de la documentacin de un recurso ofrecido por la API
de Twitter. Comente las repercusiones que tiene el uso de la extensin .json en el URI
utilizado para identificar el recurso, considerando los principios del diseo REST y de la propia
Arquitectura de la WWW.

Solucin
Uno de los principios del diseo REST, consecuencia lgica de los principios de la propia
Arquitectura de la WWW, es que el URI de un recurso no debe decir nada (i.e. ha de ser
agnstico) acerca de su formato de representacin, ya que un mismo recurso puede tener
mltiples representaciones (xml, json, html, etc.). Es el tipo MIME y la negociacin de
contenido Content Negotiation la que que debe determinar el formato de representacin
que, por ejemplo, se solicita con un GET, sin que el URI lo identifique (en este caso se
requeriran dos o ms recursos simplemente por una cuestin de formato de representacin).
El uso de la terminacin .json va por tanto contra estos principios al hacer explcito el
formato de representacin de un recurso.
La negociacin de contenido, a pesar de las ventajas que conlleva y que el propio estilo
arquitectnico REST pretende explotar, se utiliza por menos del 1% de la web.

Ejercicios largos
Ejercicio 1
Muestre un ejemplo de patrn de intercambio de mensajes complejo (MEP), indicando los
patrones bsicos que lo conforman
Solucin

Dibuje, utilizando BPMN 2.0, una colaboracin entre una secretaria de la Facultad y un
alumno, donde exista el siguiente flujo de mensajes entre ellos:
Alumno: Quiero matricularme de la asignatura de Sistemas Orientados a Servicios
Secretaria: Est usted seguro?
Alumno: S
Secretaria: Rellene este formulario
Alumno: Aqu est el formulario
Solucin

En BPMN, cuntos tipos de gateways conoce? Represente al menos 3 de ellos.
Solucin

Represente, utilizando BPMN, la siguiente situacin:
Se le ha enviado un correo electrnico a su cuenta de correo. Si transcurridas 24 horas
no ha pulsado en el enlace de confirmacin, se le dar de baja de la lista de correo. En
caso contrario, se renovar su cuenta.

Ejercicio 2
A continuacin se ofrece un conjunto de casos de ejemplo de recursos extrados de la
documentacin de la API de Twitter. Razone para cada caso qu verbo http (GET, PUT, POST,
DELETE) es ms apropiado para ofrecer cada funcin desde una perspectiva formal de Servicios
REST. En caso de que ese verbo sea diferente del propuesto por Twitter, especifique el URI o
patrn de URI que se requerira y razone los motivos por los que considera que Twitter no ha
utilizado ese verbo (en algunos casos, de hecho, Twitter ha cambiado el recurso original
precisamente por esas razones).

Solucin
En este caso sera ms apropiado el uso del verbo DELETE ya que se trata de la eliminacin
de un recurso status. El uso de POST es incorrecto pues su semntica nunca es la de
eliminacin de un recurso.
Como URI podra utilizarse http://api.twitter.com/1/statuses/18976237157
Twitter prefiere el uso de GET y POST frente a DELETE y PUT para evitar problemas en clientes
que no soportan estos dos ltimos verbos, pero con ello deja de respetar la semntica de los
verbos asignada por la Arquitectura de la WWW y por el propio estilo arquitectnico REST.

Solucin
En este caso sera ms apropiado el uso del verbo GET ya que se trata de una solicitud de
informacin (una representacin) del recurso identificado (lista de estados).
Twitter tambin soporta el uso de GET para esta misma accin, pero incluye soporte para POST
con el fin de permitir el uso de una gran cantidad de predicados de filtro que, en el caso de
GET, podran superar el tamao mximo admitido. En POST no existe tal lmite. Sin embargo,
con ello deja de respetar la semntica de los verbos asignada por la Arquitectura de la WWW y
por el propio estilo arquitectnico REST.

Solucin
En este caso sera ms apropiado el uso del verbo PUT ya que se trata de una operacin
idempotente sobre el recurso status. El resultado es el mismo tanto si la operacin se
ejecuta una vez como si se ejecuta mltiples veces (en todos los casos, el status para a ser
etiquetado como Favorite.
De nuevo, la explicacin puede ser que Twitter prefiere el uso de GET y POST frente a DELETE y
PUT para evitar problemas en clientes que no soportan estos dos ltimos verbos, pero con ello
deja de respetar la semntica de los verbos asignada por la Arquitectura de la WWW y por el
propio estilo arquitectnico REST.

Solucin
En este caso Twitter propone el uso del verbo http ms apropiado para la accin. No se trata
de una eliminacin, ya que no se destruye el recurso usuario, sino que se elimina su
referencia de una lista de usuarios suscritos. Por otra parte, se prefiere para esta accin el uso
de POST frente al de PUT ya que no es una accin idempotente: la primera vez que se
ejecutase, devolvera un cdigo 200 Ok, mientras que el resto de veces devolvera otro tipo de
resultado al no existir ya el usuario en la lista (o 200 Ok si la primera invocacin no se
hubiese realizado correctamente o simplemente no hubiese llegado).

12 de junio 2013
Ejercicio 1
Responda razonadamente a las siguientes preguntas en relacin con el atributo scope:
1. Para qu sirve el atributo scope de un servicio web implementado en Java y Axis?
2. Qu valores puede tomar dicho atributo? D una breve explicacin del efecto que
tiene cada uno de estos valores en el servicio web para el que se ha definido el atributo
scope.
3. Dnde se define el atributo scope?
Solucin
1. El atributo scope indica el nmero de instancias (objetos) de la clase skeleton de un servicio
web que se crearn.
2. Request: Una instancia por llamada al servicio.
Application: Una nica instancia atiende las peticiones.
Transportsession: Una instancia atiende los mensajes que pertenecen a la misma
sesin segn el transporte (i.e. cookies en HTTP)
soapsession: Una instancia atiende los mensajes de la misma sesin SOAP.
3. En el fichero services.xml
Ejercicio 2
Explique razonadamente cmo resolvera en un servicio RESTful el siguiente escenario: Un
recurso recibe una peticin que tarda cierto tiempo en ser atendida por el servidor ya que
requiere modificar un gran volumen de datos en el back-end en un proceso que no puede
considerarse idempotente.
Por ello, debe permitir que el cliente pueda continuar su ejecucin sin bloquearse a la espera de
que sta finalice y, posteriormente, consultar, si as lo requiere, el estado de terminacin de su
peticin y cualquier posible informacin devuelta.
Centre su respuesta en:
1. El tipo de cdigo http de estado que utilizara (no es necesario que recuerde el cdigo
numrico, pero s que identifique ese cdigo y/o lo diferencie de otros que no utilizara) tanto
en la primera peticin como en la segunda de callback.
2. Cmo comunicara al cliente cul es el recurso encargado de atender la llamada de callback.
3. Qu mtodos o verbos http utilizara para hacer ambas peticiones (la primera peticin y la de
callback.
Solucin
Puesto que el servicio no habr terminado de procesar la peticin cuando devuelva
control al cliente y por tanto no podr asociar ningn resultado a su respuesta, se
deber utilizar el cdigo http 202 (Accepted). Este cdigo denota que la peticin se
consider vlida y se ha aceptado, pero an no se ha procesado. La respuesta
deber incluir un URI que identifique el recurso al que se puede consultar
posteriormente por actualizaciones en el estado de la peticin, de manera
asncrona. Por supuesto, si la peticin no se puede procesar, se devolver uno de
los cdigos 4xx o 5xx segn corresponda. La segunda peticin para consultar el
estado de terminacin de la peticin retornar un cdigo 200 (OK) junto con una
representacin del resultado en caso de que se haya terminado de procesar
satisfactoriamente, o bien 204 (No Content) en caso de que se haya terminado de
procesar satisfactoriamente pero el servidor no tenga ninguna respuesta. Si la
peticin contina procesndose, retornar 202 Accepted y ese mismo URI como
valor de la cabecera Location. Por supuesto, si la peticin no ha podido procesarse
correctamente, se devolver uno de los cdigos 5xx segn corresponda (los
cdigos 4xx se habran retornado en la peticin original). La peticin original se
realizar mediante POST ya que su semntica es no idempotente como se seala en
el enunciado. La segunda peticin para consultar el estado de terminacin de la
peticin y su resultado ser realizar mediante GET.

Ejercicio 3
Una agencia de viajes que realiza ventas por Internet desea dar un servicio de venta de vuelos.
Para ello, necesita realizar un buscador que encuentre automticamente vuelos con una
conexin. Se considerarn aquellas conexiones en las que la llegada de un vuelo se produzca
entre 1 y 4 horas antes de la salida de otro vuelo en el mismo aeropuerto. Por ejemplo, para un
vuelo Madrid-Pars que sale de Madrid un da a las 10:00 y llega a las 12:00 a Pars, y otro
vuelo Pars-Roma que sale ese mismo da de Pars a las 15:00 y llega a las 17:00 a Roma, como
cumple la regla de conexin (entre una y cuatro horas) se debe producir el vuelo de 1 conexin,
Madrid- Roma, con salida a las 10:00 y llegada a las 17:00 y precio la suma de los dos vuelos.
Para resolver este ejercicio se quiere emplear una solucin map-reduce que genere la lista de
vuelos con 1 conexin de acuerdo a las restricciones anteriores. La entrada consiste en los
vuelos disponibles, sus horarios y precios. La salida que se debe producir consiste en todos los
vuelos con 1 conexin.
Formato Fichero de Entrada:
Aeropuerto salida.
Aeropuerto llegada.
Fecha, hora salida vuelo (AAAAMMDDHHMMSS, donde A es un dgito del ao, M es un
dgito del mes, D da, H hora, M minuto, S segundo).
Fecha, hora llegada vuelo (AAAAMMDDHHMMSS, donde A es un dgito del ao, M es
un dgito del mes, D da, H hora, M minuto, S segundo).
Precio vuelo
Formato Fichero de Salida:
Aeropuerto salida (del primer vuelo).
Aeropuerto llegada (del segundo vuelo).
Fecha, hora salida del primer vuelo (AAAAMMDDHHMMSS, donde A es un dgito del
ao, M es un dgito del mes, D da, H hora, M minuto, S segundo).
Fecha, hora llegada del segundo vuelo (AAAAMMDDHHMMSS, donde A es un dgito del
ao, M es un dgito del mes, D da, H hora, M minuto, S segundo).
Precio vuelo combinado
Dada la siguiente entrada, se pide el resultado producido por la fase map y el resultado
producido por la fase reduce de acuerdo a una solucin map-reduce que se haya diseado. No
se debe entregar el cdigo ni el diseo de la solucin.
Entrada:
napol es, madr i d, 20130301131545, 20130301162046, 120
madr i d, l ondr es, 20130301183233, 20130301213012, 132
madr i d, par i s, 20130301231213, 20130302021012, 140
muni ch, napol es, 20130301131545, 20130301152046, 90
gi nebr a, napol es, 20130301131545, 20130301102046, 200
l ondr es, bar cel ona, 20130316111607, 20130316133023, 89
bar cel ona, l i sboa, 20130316123523, 20130316133023, 45
bar cel ona, osl o, 20130316171523, 20130316211523, 400
Solucin
a) Resultado fase map
La fase map debe generar dos pares clave-valor, con claves origen y destino del vuelo, y con
valor todos los datos del vuelo y la direccin del vuelo. La fase map puede adems filtrar
vuelos errneos, por ejemplo, con hora-fecha de llegada anterior a la de salida.
C = Cl ave; V = Val or
0 = l a cl ave es el dest i no; 1 = l a cl ave es el or i gen
C: bar cel ona V: [ l ondr es, 20130316111607, 20130316133023, 0, 89]
C: l ondr es V: [ bar cel ona, 20130316111607, 20130316133023, 1, 89]
C: l i sboa V: [ bar cel ona, 20130316123523, 20130316133023, 0, 45]
C: bar cel ona V: [ l i sboa, 20130316123523, 20130316133023, 1, 45]
C: osl o V: [ bar cel ona, 20130316171523, 20130316211523, 0, 400]
C: bar cel ona V: [ osl o, 20130316171523, 20130316211523, 1, 400]
C: madr i d V: [ napol es, 20130301131545, 20130301162046, 0, 120]
C: napol es V: [ madr i d, 20130301131545, 20130301162046, 1, 120]
C: l ondr es V: [ madr i d, 20130301183233, 20130301213012, 0, 132]
C: madr i d V: [ l ondr es, 20130301183233, 20130301213012, 1, 132]
C: par i s V: [ madr i d, 20130301231213, 20130302021012, 0, 140]
C: madr i d V: [ par i s, 20130301231213, 20130302021012, 1, 140]
C: napol es V: [ muni ch, 20130301131545, 20130301152046, 0, 90]
C: muni ch V: [ napol es, 20130301131545, 20130301152046, 1, 90]
C: napol es V: [ gi nebr a, 20130301131545, 20130301102046, 0, 200]
C: gi nebr a V: [ napol es, 20130301131545, 20130301102046, 1, 200]
b) Resultado fase reduce
C: napol es V: [ l ondr es, 20130301131545, 20130301213012, 252]
C: gi nebr a V: [ madr i d, 20130301131545, 20130301162046, 320]
C: l ondr es V: [ osl o, 20130316111607, 20130316211523, 489

Ejercicio 4
Una conocida empresa de mquinas de caf ha decidido plasmar en un proceso de negocio
cmo gestionan el stock de cafeteras de sus tiendas.
Cuando la tienda tiene menos de 15 cafeteras, un empleado rellena un formulario de solicitud
de nuevo stock por un total de 100 cafeteras, el cual se enva telemticamente a la central,
quedndose a la espera de recibir el pedido. En ese momento finaliza el proceso siempre que se
hayan recibido todas las cafeteras correctamente. Si pasada una semana no se han recibido las
cafeteras, o si alguna(s) de ellas hubiese(n) llegado en mal estado, se reclamar a la central por
ella(s), quedndose de nuevo a la espera de su correcta recepcin.
La central, por su parte, al recibir la solicitud comprueba si tiene stock suficiente, y en caso
afirmativo, se las enva directamente a la tienda. Si no, enva las que tenga y realiza un pedido
a fbrica por las restantes. Obviamente, la central debe poder recibir reclamaciones de las
tiendas, atendiendo a sus solicitudes.
Por ltimo, la fbrica comienza todos los das a las 9:00 un proceso de fabricacin de 1000
cafeteras, las cuales va almacenando perfectamente embaladas en un almacn, quedando
listas para ser servidas. Por otro lado, cuando se recibe una solicitud, se reserva la cantidad
indicada, se solicita el servicio del transportista, y se envan a la tienda.
Disear y modelar un proceso de negocio, utilizando BPMN 2.0, que represente
la coreografa implcita existente.
Responda adems a las siguientes preguntas:
Cmo se podra controlar el nmero de cafeteras existentes en el almacn?
Qu tareas/procesos/personas pueden tener acceso a dicha informacin?
Solucin
Para controlar el nmero de cafeteras existentes en el almacn (sin importar si dicho almacn
est en la central, en la fbrica o en los dos sitios) se podra hacer fcilmente con un data
artifact que nos permita representar informacin de contexto. Si lo hicisemos con la
aplicacin Bonita vista en clase, se correspondera con una variable, en principio global, para
que as puedan tener acceso a la misma todas las tareas del proceso (pool) correspondiente.
En base a lo anterior, si se utiliza informacin de contexto (a travs de una variable global),
todas aquellas tareas y personas que pertenece al proceso donde est dicha variable tendrn
acceso a la misma.
Una posible representacin del proceso de negocio pedido sera la mostrada en la pgina
siguiente:


9 de enero de 2014
Ejercicio 1
Responda de manera razonada a las siguientes cuestiones breves:
1. En el diseo de los recursos de un servicio Restful, para qu se utilizan los recursos de tipo
collection? para qu se utilizan los composite?en qu se diferencian ambos tipos de
recursos (puede valerse de un ejemplo)?
2. En qu consiste la negociacin de contenido (content negotiation) http y cul es su principal
utilidad en los servicios RESTful? Qu cabeceras http estn implicadas en el proceso? con qu
principios/recomendaciones de diseo RESTful est directamente relacionado su uso?
3. Explique cules son las principales diferencias e implicaciones existentes en el uso de POST y
PUT para la creacin de nuevos recursos: cundo es apropiado el uso de cada verbo? qu
recurso se utiliza en cada caso en la invocacin?cmo se notifica al cliente el URI del nuevo
recurso en cada caso?
Solucin
1.- Las colecciones agrupan recursos similares en base a cualquier criterio especfico de la
aplicacin (recursos que comparten el mismo schema, un mismo conjunto de atributos o
propiedades, etc.), por ejemplo, recurso coleccin de libros en un servicio de reserva en
bibliotecas. Una coleccin no implica necesariamente una organizacin jerrquica: un recurso
puede ser parte de ms de una coleccin. Permiten referirse a grupos de recursos como un
recurso para realizar consultas sobre la coleccin o para realizar una misma operacin sobre
varios recursos al mismo tiempo. Permiten utilizar la coleccin como una fbrica para crear
nuevos recursos. Deber disearse una representacin por cada coleccin con informacin
acerca de todos o de parte de sus miembros Los composites permiten combinar/agregar
mltiples recursos dispares en un nico recurso cuyo estado se compone de los estados de dos
o ms recursos, por ejemplo, un recurso que represente todas las cuentas corrientes, fondos
de inversin y productos financieros contratados de un cliente de banca. Reducen la visibilidad
intrnseca al http (producen solape de datos entre recursos) que afectarn al uso de proxies
cach.
2. Toda representacin deber ser tipada. Los protocolos web debern transmitir
representaciones como flujos de octetos tipados mediante tipos media de Internet (MIME). Un
recurso puede tener mltiples representaciones, gracias especialmente a la capacidad de
negociacin de contenido y a los tipos MIME. La negociacin de contenido permite a un
cliente indicar a un recurso qu formato de representacin espera recibir del servicio cuando
invoca una peticin GET en un recurso, evitando tener que identificar en la URI del recurso el
formato de representacin esperado (lo cual origina dos URIs de recurso). El cliente solicita el
formato requerido mediante la cabecera http accept, el servicio responde indicando el
formato utilizado en la respuesta mediante la cabecera http content---type.
3. El mtodo ms apropiado en general para la creacin de recursos es el POST ya que evita
que se construya la URI del nuevo recurso en el cliente. Los clientes no tienen por qu conocer
cmo fabricar URIs, tan slo deben entender el significado de los valores de atributos como
rel o de campos de la cabecera http como Location. Un PUT destinado a la creacin de un
recurso ha de invocarse en el URI del recurso a crear, mientras que el POST se invoca sobre un
recurso coleccin denominado fbrica, sin necesidad de determiner el URI del nuevo
recurso. El URI asignado por el servicio al Nuevo recurso se conoce a travs del contenido de la
cabecera Location en la respuesta.
Ejercicio 2
1.- Indique y describa las partes de las que consta un documento WSDL. Para cada una de ellas
haga constar el nmero mximo y mnimo de elementos que pueden aparecer.
2.- Indique cuntas formas hay para manejar el estado de un servicio web con Axis y
descrbalas brevemente.
Solucin
1) Hay un elemento de definiciones (description) como raz. Define el nombre del servicio,
declara espacios de nombres y contiene el resto de los elementos.
Los servicios se definen empleando cuatro elementos:
Tipos: proporcionan definiciones de tipos de datos para describir los mensajes
intercambiados entre el cliente y el servicio.
Interfaces: definicin de las operaciones de un servicio.
Binding: Describe cmo se implementa el servicio. Especifica un protocolo concreto y
especificaciones de formato de datos y mensajes para un tipo de puerto concreto.
Servicio: Define la direccin donde se invoca el servicio.
Las cardinalidades mximas y mnimas aparecen en la siguiente figura.

2) Hay cuatro formas de manejar el estado con Axis, que corresponden a los valores del
atributo scope del fichero services.xml:
Aplicacin: Una nica instancia atiende las peticiones
Peticin: Se crea un objeto servidor por cada peticin recibida.
Sesin Transporte: Una instancia atiende los mensajes que pertenecen a la misma sesin
segn el transporte.
Sesin SOAP: Una instancia atiende los mensajes de la misma sesin SOAP.

Ejercicio 3
Una empresa de venta online por Internet quiere obtener la lista de los productos ms
populares del mes (se considera un producto popular si ha tenido ms de 10.000 euros en
ventas en un mes). La empresa mantiene en ficheros las ventas realizadas con informacin
sobre el nombre del producto, unidades compradas y precio unitario. A continuacin se resume
el formato de los ficheros:
Formato Fichero de Entrada:
Nombre producto.
N unidades adquiridas.
Precio unitario.
Formato Fichero de Salida:
Nombre producto popular.
Total ventas mes en euros.
Para resolver este problema se quiere emplear una solucin map-reduce que genere la lista de
productos ms populares del mes en la que aparezca nombre del producto y total de euros
vendidos por mes. A continuacin se muestra un ejemplo.
Entrada:
i pon, 7, 1000
gal ax, 4, 800
i l i b, 6, 400
gal ax, 10, 800
i pon, 10, 1000
noki , 1, 600

Salida:
gal ax, 11200
i pon, 14000
Dada la entrada, se pide disear una solucin map-reduce para este problema y proporcionar
el resultado producido por la fase map (dando la lista de pares clave-valor indicando cul es la
clave y cul es el valor) de la solucin map-reduce que se haya diseado. No se debe entregar el
cdigo ni el diseo de la solucin.
Solucin
i pon, 7000
gal ax, 3200
i l i b, 2400
gal ax, 8000
i pon, 10000
noki , 600

Ejercicio 4
La empresa SOS-Viajes ha puesto en marcha un proyecto de desarrollo Web con el objetivo de
ofrecer a sus clientes una aplicacin de agencia de viajes online. Dicha aplicacin seguir
un modelo cliente-servidor, teniendo en cuenta los siguientes requisitos:
Cliente
La parte cliente de la aplicacin estar formada por diferentes formularios Web donde se
solicitarn o se mostrarn datos al cliente, realizndose las peticiones necesarias al servidor y
recibiendo siempre las respuestas solicitadas. En concreto, habr al menos los siguientes tres
formularios Web:
Uno donde indicar los datos tpicos del viaje, como los datos personales del cliente, el destino,
las fechas de ida y de vuelta, los medios de transporte a utilizar (pudiendo seleccionar tren,
avin o ambos).
Otro donde visualizar el paquete de viaje devuelto por el servidor y confirmarlo para realizar las
reservas pertinentes. La confirmacin implica el pago, por lo que se debe indicar el nmero de
una tarjeta de crdito.
Otro donde se mostrarn los billetes y los voucher de hotel necesarios.
Servidor
La empresa dispone de acceso a servicios web de terceros con los que puede realizar bsquedas
de hoteles, trenes y aviones, realizar reservas mediante el pago con tarjeta de crdito, y
obtener los billetes y vouchers correspondientes a reservas confirmadas en PDF.
En concreto, se desea que la instancia del proceso servidor se inicie al recibir una peticin de
viaje desde el cliente. A continuacin se realizarn bsquedas en base a los datos recibidos,
utilizando los servicios correspondientes, para obtener un hotel, y opcionalmente un avin y/o
un tren. Con los datos devueltos por los servicios se generar un paquete de viaje que le ser
enviado al cliente para que lo confirme. Esta confirmacin se realizar en base a la recepcin
del nmero de una tarjeta de crdito. Una vez se reciba dicho nmero, se confirmar la reserva,
se pagar, y se obtendr del servicio correspondiente los PDF de los billetes y del voucher del
hotel, los cuales sern enviados al cliente antes de finalizar el proceso.
Se debe tener en cuenta, adems, que si transcurridos 10 minutos desde que se enviaron los
datos del paquete de viaje al cliente ste no lo ha confirmado, finalizar la ejecucin de proceso
servidor sin realizar reserva alguna.
Se pide disear y modelar el proceso de negocio existente detrs del escenario anterior,
utilizando BPMN 2.0, representando la coreografa implcita existente entre el
cliente y el servidor (la empresa).






Solucin

S-ar putea să vă placă și