Projet de services Web 2015

Déroulement

Le projet est à réaliser par groupes de 4 à 5 personnes. On créera un projet forge pour le rendu. Tous les étudiants du groupe doivent saisir l'identifiant du projet dans tomuss, dans la case PRJ_F de l'UE TIW5: Services Web.

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

Le projet est à rendre pour le 31 janvier 2016

Description

On souhaite développer une application de commande de repas à livrer. L'application se présente sous la forme d'un site Web offrant un choix de restaurants et permettant une recherche par quartier/ville1). L'affichage d'un restaurant est enrichi d'informations issues de DBPedia lorqu'une IRI est disponible.

Commande

Un client peut passer une commande pour un ensemble de repas. Pour cela il constitue un panier puis le valide. Il est alors redirigé vers une interface de paiement. Une fois le paiement confirmé, il reçoit un e-mail de confirmation de la commande. Le restaurant prépare la commande et met à jour son statut via une interface Web dédiée. Le livreur effectue ensuite la livraison et signale que la livraison a été effectuée sur son terminal (qui sera simulé par une interface Web). Le restaurant est alors payé (voir flux financier ci-dessous).

Traitement des commandes dans un restaurant et des commandes à livrer

Un restaurateur dispose d'une interface Web (mentionnée ci-dessus) listant l'ensemble des commandes qui le concerne. Cette interface permet de changer le statut d'une commande vers EN_PREPARATION ou vers PRETE.

De la même manière, un livreur dispose d'un terminal listant les commandes qu'il doit livrer et permettant de confirmer leur livraison (en passant le statut d'une livraison à LIVREE).

Flux financier

Afin de confirmer sa commande, le client saisit ses informations bancaires (numéro de carte et cryptogramme) via une redirection sur le “site” de rapidbank.com. Ce dernier contacte mabanque.com qui effectue le débit si possible. En cas de problème, rapidbank.com affiche un message d'erreur. Sinon rapidbank.com invoque un URL prédéfinie du service paiement. Le compte bancaire du site de réservation est alors crédité du montant indiqué (pour simplifier, on utilisera l'opération debit avec un montant négatif). Une fois la livraison confirmée, un transfert bancaire est effectué depuis le compte du site de restauration vers le compte du restaurant. Le site de réservation prend 3% du montant de la commande au titre de la gestion.

Toujours à des fins de simplification, on suppose que les clients, les restaurants et le site de réservation ont tous leur comptes hébergés chez mabanque.com.

Travail demandé

  • Faire une interface Web, de type single page application (sauf pour la partie paiement qui est externalisée), pour le site de commandes de repas. En particulier, la constitution du panier se fera intégralement côté client.
  • Faire une interface Web, de type single page application pour les restaurants et une autre pour les livreurs.
  • Implémenter un service de gestion des commandes qui sera utilisé en interne du processus pour traiter l'évolution des commandes (évolution du statut). On déplacera l'opération livraison vers ce service
  • Implémenter le processus métier lui-même (i.e. les interactions possible entre les services et les déclenchements de messages).

Les échanges de message et le processus métier devront être implémenté dans servicemix. Aucun serveur ne devra contacter aucun autre serveur directement, (hors servicemix qui assure le lien entre les services).

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 services-fournis.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-2015.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-2015.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-2015.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

Remarques

  • Le service locService a été étendu:
    • une nouvelle opération getQuartiers a été ajoutée
    • la description des restaurants inclut maintenant une IRI DBPedia.
1)
pour simplifier, une ville est assimilée à un quartier
2) , 3)
-help pour les options