2013 Projet Echange de Données M2MIAGE ETUDIANTS : CAO ZHENGYI, GUO LIYU, WANG YUE
SOMMAIRE Netcheque... 2 1. Description du projet netchèque... 2 Contexte... 2 Fontionnement... 2 Acteurs identifies :... 2 2. Description fonctionnelle du projet réalisé... 3 Etape 1 : Echange entre Client - Gestionnaire de comptes (Banque)... 3 Etape 2 : Echange entre Client Entreprise (Magasin)... 6 Etape 3 : Echange entre Entreprise - Gestionnaire de comptes (Banque)... 8 3. Description technique et choix d implémentation... 10 Diagramme de Classes... 10 Méthodes principales... 10 Classes auxiliaires... 12 Quelques mots sur le traitement, mise en forme et validation du projet... 13 4. Scénario et copies d écran... 13 5. Annexes... 21 1
ECHANGE DE DONNEES PROJET XML 2013 NETCHEQUE 1. Description du projet netchèque Contexte NetCheque est un système de paiement électronique pour Internet. L objectif de ce projet, dans le cadre du cours XML, est d assurer la gestion des fichiers XML nécessaires à sa mise en œuvre. Fontionnement Chaque utilisateur doit maintenir un compte auprès d un gestionnaire de compte. Après l obtention de ses chèques électroniques, l utilisation est identique à celle d un chèque classique : le client envoie le chèque pour le paiement et le marchand encaisse auprès de son gestionnaire de compte. Ensuite les deux gestionnaires effectuent les virements entre les comptes. Acteurs identifies : Client Gestionnaire de compte (Banque) Gestionnaire de l entreprise (Magasin) Dans l appellation de nos fichiers XML, les initiales B, C, et E représentent respectivement Banque, Client et Entreprise. 2
2. Description fonctionnelle du projet réalisé La réalisation du projet est décomposée selon les trois étapes décrites dans le schéma ci-dessous, chacun des échanges étant réalisés en XML. Etape 1 : Echange entre Client - Gestionnaire de comptes (Banque) Le client doit s enregistrer auprès d un gestionnaire de comptes afin de bénéficier les chèques électroniques. Il fournit les informations suivantes : 1. le montant total associé à ce compte 2. son identité (nom, prénom, date de naissance, adresse, numéro téléphone) 3. le nombre de chèques par devise souhaitée. Le gestionnaire de comptes enregistre ces données en ajoutant ces informations à sa base de clients enregistrée en XML. Dans les fichiers B_listeClients_Gestionnaire[idGestionnaire].xml 3
Le gestionnaire génère, pour le client, le nombre de chèques vierges souhaités par devise, au format XML. Dans le fichiers B_cheque[nom client]_[devise][compteur].xml Pour chaque chèque, le gestionnaire donne les informations suivantes : 1. la devise 2. identifiant du chèque 3. identifiant du client 4. identifiant du gestionnaire 5. le montant du chèque (initié à 0) 6. la date d émission du chèque (initiée à 00/00/0000) 4
(Fig1. exemple du chèque 47885ed2-3465-432e-9459-8b60c13ce65e vide) Le gestionnaire de comptes enregistre également les chèques générés pour ce client dans un fichier XML. Dans le fichier B_listeCheques[nom du compte]_gestionnaire[numéro gestionnaire].xml 5
Etape 2 : Echange entre Client Entreprise (Magasin) Une entreprise a un et un seul type de devise, elle possède un certain nombre de produits, chaque produit ayant un nom, un prix, et un nombre de quantité disponible en stock. Pour payer un produit avec son chèque électronique, le client se connecte via son interface client (console de commande). Il choisit un produit parmi les produits disponibles d un magasin en entrant le nom du produit et la quantité souhaitée, ensuite, il doit indiquer la devise de son chèque, et enfin, comme un chèque classique, il indique le montant de son chèque. La date d émission sera en revanche, automatisée et correspondra la date du jour. L entreprise reçoit les commandes au format XML, chaque fichier commande contient la description de la demande et le chèque correspondant. Les fichiers C_commande[numéro commande].xml 6
L entreprise décidera ensuite de valider ou pas la commande en fonction des contraintes suivantes : 1. La devise du chèque doit correspondre à la devise du magasin 2. La quantité commandée doit être inférieure au nombre de stock disponible 3. Le montant du chèque doit être exact Pour simplifier, nous avons assimilé l entreprise et son gestionnaire à une même entité. Si la transaction est validée, l entreprise encaissera les chèques correspondants. Les fichiers E_commande[numero commande]_chequeencaisse.xml A la fin de journée, l entreprise (son gestionnaire) saisit la date dans le système, et le traitement récupère automatiquement tous les chèques encaissés de la journée en question dans un fichier XML. Le fichier E_cheque_Encaisses_jour_[date].xml 7
Etape 3 : Echange entre Entreprise - Gestionnaire de comptes (Banque) A la fin de chaque journée, le gestionnaire du magasin transfère, le fichier contenant la liste des chèques encaissés du jour, (fichier obtenu automatiquement par le traitement du système), au gestionnaire de compte du client en question. Le gestionnaire du compte va faire deux opérations : 1. Modifier le solde du client (débiter) 2. Compléter les renseignements du chèque en question initialement vide (montant et date) 8
(Fig2. exemple: chèque complété (cf. fig1)) On vérifie bien que le chèque n 47885ed2-3465-432e-9459-8b60c13ce65e de la fig1 dans notre exemple a été complété (Fig3. Mise à jour de solde) Fichier B_compte[numéro compte].xml, on vérifie que le solde du compte 118218, initialement est de 10000 dans notre exemple, a bien été mis à jour. 9
3. Description technique et choix d implémentation Diagramme de Classes Uniquement les classes métiers, les classes annexes comme UtilTransformer.java, HandlerCommande.java, HandlerCompteClient.java et HandlerChequeClient.java ne sont pas présentées sur le schéma. Méthodes principales Ci-dessous quelques méthodes métiers importantes Gestionnaire.java genererxmlcheques(compte): void génère tous les chèques vides d un compte passé en paramètre, au format XML grâce à DOM B_cheque[nom client]_[devise][compteur].xml 10
genererlistecheques(compte): void génère la liste récapitulant les chèques d un compte donnée, avec DOM. B_listeCheques[nom du compte]_gestionnaire[numéro gestionnaire].xml genererxmlclients(): void génère la liste des comptes gérés par ce gestionnaire B_listeClients_Gestionnaire[idGestionnaire].xml Client generercompte() : void génère la fiche détaille du compte client au format XML grâce à DOM. B_compte[numéro compte].xml generercommande(int i, Entreprise ent) : void génère la commande i au entreprise ent, le fichier commande est généré au format XML avec DOM on récupère une liste de produits grâce à l objet Entreprise, avec chaque produits son nom, sa prix, son quantité disponible on propose au client cette liste de produit, en affichant le nom de chaque produit et leurs quantités de stockage. le client saisit via le console, le nom de produit et la quantité souhaite, il doit également indiquer la devise du chaque, la date en revanche, sera la date du jour remplit par le système, en fonction de la devise saisie, le système va chercher dans la liste de chèques du client, s il y en a un chèque correspondant cette devise, si oui, la méthode retient tous les informations de ce chèque pour fabriquer la commande, ensuite, elle supprime ce chèque de la liste de chèques utilisables, et décrémente de 1 au nombre de chèques disponibles pour cette devise. C_commande[numéro commande].xml 11
Entreprise.java verifiercommandes(string date) : void en fonction de la date passée en paramètre, la méthode va récupérer la liste des commandes destinée à cette entreprise, correspondant à la date saisie. (par défaut, la date du jour) pour chaque commande de la liste récupérée, la fonction passe le fichier commande à HandlerCommande pour vérifier ses conditions de ventes (devise, stock.) E_cheque_Encaisses_jour_[date].xml Classes auxiliaires UtilTransformer.java contenant diverses fonctions auxiliaires : générer depuis un fichier un Document, ajouter un schéma à un document, créer un fichier depuis un objet Document et référençant une DTD etc. HandlerCommande.java Vérifier les contraintes suivantes : si la devise du chèque correspond à celle du magasin si le nom du produit est correctement saisi si la quantité commandée est inférieur à la quantité disponible du produit si la date d émission de chèque correspond à la date dont nous souhaitons vérifier les chèques les vérifications s effectuent avec SAX si oui, la méthode génère avec DOM, un fichier par commande, représentant le chèque encaissé, ensuite, elle ajoute le chèque encaissé dans un fichier XML, qui contient tous les chèques encaissés du magasin. HandlerCompteClient.java Une fois le gestionnaire reçoit les chèques encaissés de la part de l entreprise, cette classe permet d effectuer 2 traitements en SAX HandlerChequeClient.java Mettre à jour le solde du compte client avec DOM Compléter les renseignements du chèque initial en faisant appel à HandlerChequeClient.java Permet de retrouver le chèque initial correspond au chèque encaissé de l entreprise avec SAX Compléter le chèque vierge correspondant, son montant et sa date d émission avec DOM 12
Quelques mots sur le traitement, mise en forme et validation du projet DOM/SAX Les créations des fichiers sont effectuées en DOM, les analyses et les traitements sont effectués en SAX XSLT Tous les fichiers XML sont transformés avec xslt, les fichiers xslt se trouve dans le dossier BIBLIOTHEQUE/xslt/ DTD/Schema Tous les fichiers XML du projet sont associés et validés par ces fichiers de validation. 4. Scénario et copies d écran Exemple d un scenario: Nous initialisons ici 3 clients ayant chacun un compte : TINTIN, WALACE et ZOE. Ils ont placé respectivement 10000, 20000, et 15000 dans la banque. Tous ces clients passement une commande auprès de l entreprise e1 pour acheter des consoles de jeu vidéo. Etant données que l entreprise e1 est une entreprise européenne, celle-ci n accepte que de chèque en euro. Commande numéro 1 : le client paie son achat de 2 PS1 avec un chèque d une valeur 200 euros. 13
Commande numéro 2 : le client 2 se trompe sur la devise et utilise un chèque en dollar. Commande numéro 3 : le client 3 achète 1 console PS3 et paie avec un chèque de 300 euros. La deuxième commande est échouée, car l entreprise n accepte que de chèque en euro, et le client 2 effectue son paiement en dollar, le chèque est rejeté. Le chèque de TINTIN et ZOE sont encaissés. 14
Fichiers XML générés : Nous pouvons constater que le chèque de WALACE (client2) pour la commande numéro 2 n est pas encaissé. Visualisation des fichiers XML de commandes : Commande 1 15
Commande 2 Commande 3 16
Les chèques répondent aux conditions de ventes du magasin sont encaissés : Visualisation des fichiers XML de commandes encaissées Commande encaissée du client 1 (TINTIN) Commande encaissée du client 3 (ZOE) 17
A la fin de la journée, l entreprise transmet la liste de chèques encaissés du jour aux gestionnaires Visualisation de liste de commandes encaissées : 18
Chaque gestionnaire mettre à jour le solde de son client On vérifie les nouveaux soldes des clients : Visualisation des comptes Solde du compte de TINTIN modifié Solde du compte de ZOE modifié 19
Le montant (initialement égale à 0) et la date (initialement égale à 00/00/0000) du chèque utilisé lors de la commande sont complétés. Visualisation des chèques complétés : Le premier chèque en Euro de TINTIN (client1) est complété Le premier chèque en Euro de ZOE (client3) est complété 20
5. Annexes Exemple d un fichier XML : C_commande.xml Exemple d un DTD : commande.dtd Exemple d un Schéma : cheque.xsd 21
22 Exemple d un XSLT : listecheques.xsl