Projet Services Web 2014

Déroulement

Le projet est à réaliser en groupe correspondant aux groupes TI5 pour les étudiants du parcours TI. Deux groupes sont à constituer pour les étudiants TIWe (groupes R1 et R2). S'il n'apparait pas, vous devez saisir votre groupe dans la case tomuss correspondante (groupe_projet).

Au 15/12/2014, les étudiants n'ayant pas de groupe doivent envoyer un mail à emmanuel.coquery@univ-lyon1.fr

La date de rendu du projet est fixée au 23/01/2015. On mettra en place un projet forge (différent des projets des précédents TPs). On mettra dans ce projet, en plus des sources hébergés dans le dépôt, un rapport au format pdf de 10 pages maximum. Ce rapport contiendra en particulier la liste des étudiants composant le groupe et une explication des décisions de conception.

On incluera au dépôt Mercurial un script bash lancement.sh qui démarrera les différents serveurs (sauf servicemix et apache ODE) via maven. Le script effectuera également les déploiement servicemix et apache-ode par copie de fichier dans des répertoires indiqués par les variables d'environnement $SMIX_DEPLOY et $ODE_DEPLOY.

Contexte

On souhaite développer une application (simplifiée) de vidéo à la demande (VOD).

L'application se présente sous la forme d'un site web, affichant un catalogue de films. On peut voir quelques informations sur chaque film. Comme l'éditeur du site est paresseux, la plupart des informations sur un film sont en fait prise sur DBPedia, via une requête SPARQL. Les films sont classés en 3 catégories: récents (moins de 3 ans), promotion et ordinaire.

Visionner un film

Chaque client dispose d'un compte de tickets. Les films récents comptent pour 3 tickets, les ordinaires pour 2 tickets et les films en promotion pour 1 ticket. Une fois un film choisi, un client peut cliquer sur un lien pour visionner le film. S'il dispose de suffisement de ticket, il est dirigé vers une URL qui lui est propre à laquelle il peut visionner le film1). Sinon un message s'affiche avec un lien vers la page de rechargement du compte.

Dans tout les cas, l'utilisateur reçoit un mail avec une facture pour le visionnage du film.

Recharger son compte

Si son compte VOD n'est pas suffisamment approvisionné, un client peut le recharger via une page prévue à cet effet. Une fois un nombre de ticket choisi, il est redirigé vers le site d'une banque (rapidbank.com) sur lequel il saisi son numéro de carte et son cryptogramme visuel. Après vérification, son compte, qui est hébergé dans un autre établissement (mabanque.com), est débité. Le site de VOD est alors prévenu et l'ajout de ticket au compte de l'utilisateur est validé. Si l'utilisateur avait des films en attente de visionnage, il reçoit un e-mail avec le lien pour visionner le film.

Gestion des films

Le gestionnaire du site de VOD souhaite pouvoir lister les films actuellement proposés, en ajouter, ainsi que changer leur catégorie.

Passage du temps

On considère qu'une URL pour le visionnage d'un film n'est valable que pendant 48h. Pour simuler le passage du temps un service tick permet de faire “avancer” virtuellement le temps d'une journée. Cet avancement pourra ainsi rendre invalide certaines URL de visionnage.

Utilitaires

Serveur de mail

GreenMail peut-être utilisé pour simuler un serveur de mail en local si vous ne voulez pas utiliser votre propre compte mail. Il dispose de facilités pour tester les envois/réceptions de mail.

Services fournis

Les services et interfaces web de rapidbank.com et mabanque.com sont fournis dans tiw5-2013-fourni.zip

Cette archive contient des projets maven et peuvent être construits via mvn install à la racine de l'archive.

MaBanque.com

Le site de mabanque.com est simulé par un serveur qui démarre sur localhost:8082. Il peut être démarré via java -jar mabanque.com/target/mabanque.com-2012.0-jar-with-dependencies.jar2).

  • Il fourni une interface web http://localhost:8082/admin qui permet de gérer les comptes hébergés
  • Il fourni un service web destiné à être utilisé par rapidbank.com et permettant de débiter le compte d'un client
  • Il conserve ses données en mémoire. Ces données peuvent être sauvée dans un fichier mabanque.xml et être ainsi rechargées au prochain démarrage.

RapidBank.com

Le site rapidbank.com est simulé par un serveur qui démarre sur localhost:8083. Il peut être démarré via java -jar rapidbank.com/target/rapidbank.com-2013.0-jar-with-dependencies.jar3).

  • Il fourni une interface de saisie d'un numéro de carte et d'un cryptogramme http://localhost:8083/?cmdid=cmd-32&valeur=3.5
    • cmdid est le numéro d'une commande
    • valeur est le montant de la transaction
  • En cas de réussite de la transaction, le service Paiement est invoqué (par défaut à l'emplacement http://localhost:8081/services/paiement).
    • Le WSDL de ce service est disponible dans le zip fourni: rapidbank.com/src/main/resources/Paiement.wsdl

PaiementMockup

L'application PaiementMockup permet de mettre en place un faux service Paiement qui affiche simplment une ligne de log lors de la réception d'un paiement. Elle peut être démarrée via java -jar paiement-mockup/target/paiement-mockup-2013.0-jar-with-dependencies.jar

Il est possible de tester ces 3 services en les lançant tous, puis en se connectant sur les deux interfaces utilisateur http://localhost:8082/admin et http://localhost:8083/?cmdid=cmd-32&valeur=3.5

Travail demandé

Interfaces (sites) Web

Il est demandé de respecter les principes de l'architecture REST4) pour l'implémentation des sites Web. Le choix des technologies pour la gestion côté client est laissé libre (de la page HTML générée côté serveur (attention à bien gérer la négociation de contenu en REST) à l'utilisation d'un framework MVC en JS).

Site de VOD

Implémenter une interface Web pour le site de VOD côté utilisateur (client). Chaque client dispose d'un login et d'un mot de passe. Le site dispose des pages suivantes:

  • Création de compte client.
  • Connexion/déconnexion; ne doit doit pas avoir d'impact direct côté serveur (pas de session), mais l'identité du client doit être vérifiée pour chaque opération nécessitant une authentification
  • Lister (et rechercher) les films proposés et afficher une page pour un film avec des informations (issues de DBPedia).
  • Pouvoir demander à voir un film
  • Visionner un film (i.e. afficher une page web pour simuler une URL correspondant à un flux vidéo)
  • Ajout de ticket dans le compte du client, avec gestion du paiement via redirection vers rapidbank.com

Site d'administration

Implémenter une interface Web d'administration du site de VOD (listing, ajout, modification de films). Celle-ci devra tourner sur un serveur différent du serveur pour les clients du site de VOD. La communication entre les deux serveur se fera via des services.

Tick

Une page web permettra de consulter la date (virtuelle) courante et de faire avancer le temps d'une journée.

Services

Au delà des interfaces REST liées à l'utilisation des sites Web on implémentera les services suivants.

Site de VOD, côté client

  • le service de mise à jour des informations sur les films qui sera utilisé par le site d'administration
  • le service décrit dans Paiement.wsdl.
  • un service pour recevoir la mise à jour de la date (et rendre ainsi invalide certains URL de vidéos)

Processus d'obtention d'une URL pour une vidéo

Le processus demande de visionnage d'une vidéo (demande via le site Web, mise en attente en cas de nombre de tickets insuffisants, déblocage après approvisionnement, suppression de tickets, envoi de mails) sera géré via un processus BPEL.

Mise en oeuvre et intégration

Chaque “domaine” vivra sur sa propre instance de tomcat, avec des numéros de port différents (e.g. configuration de tomcat7:run). Il ne devront pas partager de données directement (i.e. utilisation de schéma ou de bases de données différentes). On utilisera de préférence des bases de données embarquées comme derby ou H2, éventuellement purement en mémoire. On pourra remplir ces bases de données au démarrage des serveurs.

On ne fera pas d'appel direct aux services depuis les serveurs d'application, mais on passera par des routes camel déployées dans servicemix. Cela permet de changer facilement (y compris à chaud) les adresses des services concrets, ainsi que d'implémenter à peu de frais des mockups.

<note important>Le port 8080 sera réservé pour le déploiement du tomcat contenant le moteur apache ODE</note>

1)
pour les besoin du projet, on pourra se contenter d'afficher une page web en lieu et place du flux video. Cette page pourra contenir (un lien vers) une bande annonce si l'info est disponible sur DBPedia
2) , 3)
-help pour les options
4)
essentiellement utilisation correcte des verbes HTTP et aspects stateless côté serveur