Table des matières

Projet TIW5 2013

Déroulement

Le projet est à réaliser en groupe correspondant aux groupes TI5. 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 01/12/2013, 23h59. 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.

Scénarios

Commande de vins

On considère un site de ventes de vins en ligne “Les vins du monde chez vous” (vinsdumondechezvous.com). Ce site permet de consulter son catalogue de vins et de procéder à une commande. Le scénario de déroulement d'une commande est le suivant:

Approvisionnement

Il se peut qu'un certain vin soit en rupture de stock: si on s'en aperçoit à la création de la commande, cette dernière ne peut pas être effectuée. Si c'est à la confirmation de la commande, une demande d'approvisionnement est effectuée et la date de livraison est modifiée en fonction des délais d'approvisionnement.

Un approvisionnement est une commande d'un certain nombre de bouteilles d'un vin particulier chez un fournisseur.

Le fonctionnement de l'approvisionnement d'un vin est le suivant:

Passage du temps

Afin de pouvoir simuler le temps qui avance un service tick permet de faire “avancer” virtuellement le temps d'une journée. Cet avancement aura des conséquences sur les approvisionnements et les confirmations de livraison.

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).

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).

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).

VinsDuMondeChezVous.com

Implémenter une interface web pour le site de vente de vins en ligne. Chaque client dispose d'un login et d'un mot de passe. Le site dispose des pages suivantes:

FournisseurDeVin.com

Cette interface permettra de consulter les demandes d'approvisionnement en cours et terminées.

Tick

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

Services

VinsDuMondeChezVous.com

Au delà des services REST liés à l'utilisation du site Web, on exposera le service livraison et le service de mise à jour des informations sur les vins. Remarque: l'ajout de messages pour un client pourra se faire via un POST sur la ressource REST associée. On implémentera également les services suivants:

FournisseurDeVin.com

On implémentera:

Tick

On implémentera un service permettant d'incrémenter la date courante et de consulter la date courante. L'incrémentation de la date déclenchera (via des appels de services) la validation des livraisons de commandes ainsi que la mise à jour du stock de bouteilles.

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 pourra s'inspirer de ce TP pour la mise en place de services REST.

On ne fera pas d'appel direct aux services depuis les serveurs d'application, mais on passera par des routes camel qui se chargeront d'appeler les services hébergés sur les autres serveurs. Cela permet de changer facilement (y compris à chaud) les adresses des services concrets, ainsi que d'implémenter à peu de frais des mockups. Les routes seront déployées via camel:run comme dans le TP Camel.

1)
peu réaliste, mais bon …
2) , 3)
-help pour les options
4)
essentiellement utilisation correcte des verbes HTTP et aspects stateless côté serveur