Vous êtes sur la page 1sur 74

Condentiel

Rapport de stage - Master ALMA - 2007/2008

Master ALMA

2007/2008

Rapport de Stage Dveloppement dapplications e mobiles communicantes innovantes

Tuteur universit : e Christian ATTIOGBE Tuteur entreprise : Olivier THOMAS

Ralis par : e e Thomas COZIEN

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

Table des mati`res e


1 Introduction 2 Prsentation de la socit e e e 2.1 Activits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 2.2 Equipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Prsentation du stage e 4 Gestion de Projet 4.1 Planning prvisionnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . e 5 Projet Dch`terie e e 5.1 Description fonctionnelle . . . . . . . . . . . . 5.1.1 Application Web . . . . . . . . . . . . 5.1.2 Application Terminal Portable . . . . . 5.1.3 Exemple de fonctionnement . . . . . . 5.2 Description technique . . . . . . . . . . . . . . 5.2.1 Synchronisation . . . . . . . . . . . . . 5.2.2 Application Web . . . . . . . . . . . . 5.2.3 Application TP . . . . . . . . . . . . . 5.3 Environnement technique de lapplication Web 5.3.1 IDE Eclipse . . . . . . . . . . . . . . . 5.3.2 Framework (Template) AppFuse 2 . . . 5.3.3 Framework Spring . . . . . . . . . . . 5.3.4 Framework Struts 2 . . . . . . . . . . . 5.3.5 Framework Hibernate . . . . . . . . . . 5.3.6 Serveur dapplications TomCat . . . . 5.3.7 Microsoft SQL Server 2005 . . . . . . . 5.3.8 Les autres modules utiliss . . . . . . . e 5.4 Schma de la base de donnes relationnelle . . e e 5.5 Interface Web - IHM . . . . . . . . . . . . . . 5.5.1 Page de connexion . . . . . . . . . . . 5.5.2 Charte graphique . . . . . . . . . . . . 5.5.3 Page des paramtrages . . . . . . . . . e 5.5.4 Page des visites . . . . . . . . . . . . . 5.5.5 Page de larchivage . . . . . . . . . . . 5.5.6 Page des tats . . . . . . . . . . . . . . e 5.6 Droulement du projet . . . . . . . . . . . . . e 5.6.1 Diagramme de Gantt . . . . . . . . . . 5.6.2 Comits de suivi . . . . . . . . . . . . e 5.6.3 Phases de Recette et Validation Service 5.6.4 Documentation . . . . . . . . . . . . . 6 Projet LogACS 6.1 LogACS : partie du projet GPS Logistique 6.2 Description fonctionnelle . . . . . . . . . . 6.3 Description technique . . . . . . . . . . . . 6.4 Environnement technique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Rgulier e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 5 5 6 7 8 8 9 9 9 10 10 11 12 12 14 15 15 15 15 16 17 17 18 18 19 20 20 20 21 22 23 24 25 25 25 25 25 26 26 27 28 28

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

6.5 6.6

6.7

Schma de la base de donnes relationnelle e e Interface Homme Machine . . . . . . . . . 6.6.1 Fentre de connexion . . . . . . . . e 6.6.2 Fentre des AST . . . . . . . . . . e 6.6.3 Fentre de rcapitulation dun AST e e 6.6.4 Fentre de rcapitulation dun ACS e e Droulement du projet . . . . . . . . . . . e 6.7.1 Diagramme de Gantt . . . . . . . . 6.7.2 Runions davancement . . . . . . . e 6.7.3 Documentation . . . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . .

30 30 30 31 31 32 32 32 32 32 34 34 34 34 35 35 35 35 36 37 37 37 38 39 40 42

7 Projet Camion 7.1 Description fonctionnelle . . . . . . . . . . . . . 7.2 Description technique . . . . . . . . . . . . . . . 7.3 Environnement technique . . . . . . . . . . . . . 7.4 Schma de la base de donnes relationnelle . . . e e 7.5 Interface Homme Machine . . . . . . . . . . . . 7.5.1 Fentre du choix de la date de planning . e 7.5.2 Fentre du planning . . . . . . . . . . . e 7.5.3 Fentre des dtails dun silo . . . . . . . e e 7.6 Droulement du projet . . . . . . . . . . . . . . e 7.6.1 Diagramme de Gantt . . . . . . . . . . . 7.6.2 Runions . . . . . . . . . . . . . . . . . . e 8 Planning nal du stage 9 Conclusion 10 Glossaire 11 Bibliographie 12 Annexes 12.1 Projet 12.1.1 12.1.2 12.1.3 12.1.4 12.1.5 12.2 Projet 12.2.1 12.2.2 12.3 Projet 12.3.1 Dchteries . . . . . . . . . . . . . . . e e Fichier de conguration struts.xml Page JSP . . . . . . . . . . . . . . . . Action Struts2 . . . . . . . . . . . . . Hibernate . . . . . . . . . . . . . . . . IHM de lapplication TP . . . . . . . . LogACS . . . . . . . . . . . . . . . . . Requte Windev . . . . . . . . . . . . e Envoi dun SMS . . . . . . . . . . . . . Camion . . . . . . . . . . . . . . . . . Lecture de chiers texte . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . .

44 44 44 48 52 61 66 68 68 69 70 70

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

Remerciements
Je remercie M. Beno DOREAU, directeur technique de la socit Inexbee, de mavoir t ee accueilli en stage au sein de lactivit Webtiss. e Je remercie tout particuli`rement M. Olivier THOMAS, mon tuteur entreprise, M. e Laurent DESTOUCHES, directeur commercial Webtiss, et toute lquipe Webtiss, pour e mavoir permis de raliser ce stage dans des conditions favorables et pour laide prcieuse e e apporte tout au long du stage. e Je tiens galement ` remercier M. Christian ATTIOGBE, mon tuteur ` lUniversit e a a e de Nantes, pour les changes enrichissants raliss durant toute la dure du stage. e e e e Je remercie enn le dpartement Informatique de lUniversit de Nantes pour lenseie e gnement de qualit fourni. e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

Introduction

Le stage de seconde anne du Master Professionnel ALMA ` lUniversit de Nantes a e a e pour but de former ltudiant ` son futur mtier et constitue de ce fait un tremplin vers e a e le monde de lentreprise. Webtiss, socit o` jai eectu mon stage de n dtudes, est prcurseur dans la ee u e e e ralisation de solutions et services Internet Mobile ` forte valeur ajoute, en proposant e a e des solutions mtiers axes sur les mdias PDA, WAP ou SMS. e e e Le projet qui ma t con en premier a consist ` eectuer des volutions sur une ee e ea e architecture client/serveur Java/J2EE pour la socit SITA France. ee SITA France, liale de SUEZ Environnement, est le spcialiste de la gestion e globale des dchets : collecte et tri, acheminement, traitement, valorisation (mati`re e e nergtique, biologique, . . .). An de rpondre aux attentes de ces dirents clients, SITA e e e e France emploie 19900 personnes. Jai ensuite eu en charge la ralisation dvolutions sur une application Windev Mobile e e pour la socit Saint Louis Sucre, puis on ma con ltude et la conception dune ee e e seconde application embarque Windev Mobile pour cette mme socit. e e ee Saint Louis Sucre, producteur de sucre de betteraves et de cannes est une socit ee qui emploie 1500 personnes et a ralis un chire daaires de 819 millions deuros pour e e lanne 2007. e Le stage sest eectu du 1er avril au 29 ao t 2008. e u

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

Prsentation de la socit e e e
Crateur de Solutions Internet Mobile e

Prcurseur sur son march, Webtiss accompagne ses clients depuis sa cration en e e e 1999, dans la ralisation de solutions et services Internet Mobile ` forte valeur ajoute, en e a e proposant des solutions mtiers axes sur les mdias PDA, WAP ou SMS. Sur le march en e e e e forte croissance de lInternet Mobile, Webtiss bncie dune exprience unique et dune e e e parfaite ma trise des technologies Wireless (XML/XSL, Palm OS, Pocket PC, WAP, SMS, J2ME, Sim Toolkit, GPRS, UMTS, . . .). Webtiss ralise donc des solutions Internet e Mobile ` destination de lEntreprise dans les secteurs du Transport, de la Logistique, des a Forces de Vente et de la Maintenance. Les investissements en Recherche et Dveloppement e permettent de ma triser les technologies les plus avances et de garantir des solutions e prennes et volutives. e e

2.1

Activits e

Transport et logistique Fort de ses rfrences dans le domaine du transport et de la logistique, Webtiss ee dispose dune connaissance fonctionnelle du secteur et en ma trise les grands enjeux. Son positionnement ` la pointe des nouvelles technologies Internet Mobile lui permet a de se dmarquer des syst`mes classiques dinformatique embarque en proposant des e e e solutions modulaires, volutives, reposant sur des architectures prouves et ouvertes, e e e indpendantes des constructeurs et des diteurs de progiciels. e e Exemples de projets : Traabilit des livraisons et des enl`vements en messagerie c e e Suivi des preuves de livraison Remonte des donnes sociales et positionnement du matriel roulant en transport e e e de lots Rseaux locaux sans ls en entrepts logistiques e o Cette comptence sappuie sur la ma e trise des technologies suivantes : Terminaux durcis professionnels (PDAs, ardoises tactiles) Suivi des preuves de livraison Lecteur de codes ` barres, de puces RFID a Rseaux 802.11, GSM/GPRs e Connectique pour linterfaage avec le chrono tachygraphe analogique c Go-localisation par GPS ou via loprateur en tlphonie mobile, cartographie e e ee

Techniciens dinterventions Webtiss construit des solutions mobiles sur mesure rpondant aux problmatiques de e e reporting dintervention sur le terrain, doptimisation de ressources par rapport aux besoins dinterventions, de communication de donnes avec les personnes mobiles. Ces e solutions sadressent aux populations suivantes : socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

Equipes Equipes Services Services

de maintenance et de SAV de dpannage e de contrle technique o durgence

Les solutions dployes int`grent les technologies suivantes : e e e Alerte par SMS Saisie dinformations sur terminaux mobiles Go localisation et cartographie au niveau du plateau de rpartition e e

2.2

Equipe

Webtiss, entreprise existante au sein de la socit Inexbee, nouvellement structure en ee e Webtiss Group est compose de 4 personnes : e M. M. M. M. Olivier THOMAS, mon tuteur entreprise, directeur technique Laurent DESTOUCHES, directeur commercial Antoine DRACIUS, ingnieur dtudes e e Franois ROCCA, ingnieur dtudes c e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

Prsentation du stage e

Le stage consiste dabord ` intervenir sur un projet darchitecture client/serveur. a Lapplication client est embarque sur un terminal mobile de type Pocket PC. Le serveur e se base quant ` lui sur une application Web dveloppe en Java/J2EE. Le but de lara e e chitecture est dassurer la communication entre le client et le serveur an de transmettre des donnes en temps rel. Linteraction entre le client et le serveur peut tre eectue ` e e e e a travers dirents protocoles (TCP/IP, GSM/Data, ActiveSync,...). e Le stage consiste ensuite ` travailler sur deux applications dveloppes en Windev a e e Mobile 10 sur un terminal portable Pocket PC. Ces deux applications sont des sousparties dun mme projet. Chacune delles eectue des traitements ncessaires au bon e e fonctionnement du projet.

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

4
4.1

Gestion de Projet
Planning prvisionnel e

Fig. 1 Planning prvisionnel du stage e Le diagramme de Gantt (Fig. 1) reprsente le planning prvisionnel de la gestion des e e dirents projets. Ces projets seront prsents par la suite. e e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

Projet Dch`terie e e

5.1

Description fonctionnelle

SITA France a utilis dans le pass le progiciel Grard de gestion des dch`teries, e e e e e sur du matriel qui nest plus maintenu. Cette entreprise a souhait faire dvelopper un e e e nouvel outil de suivi de lactivit des dch`teries, sur matriel maintenu, qui permettra e e e e de suivre et restituer : Les visites des utilisateurs des dch`teries, avec la saisie ventuelle de leurs apports, e e e et la production ventuelle de ticket de paiement pour facturation e Les oprations denl`vement des conteneurs e e Les objectifs de cet outil sont ainsi multiples : Aide ` lexploitation des dch`teries a e e Justication de la facture au client Aide du client dans sa politique de gestion des dchets avec un suivi de lusage des e dch`teries e e La solution propose par Webtiss repose sur deux modules : un serveur PC Central avec e une application Web et une application sur Terminal Portable (TP). 5.1.1 Application Web

Lapplication Web poss`de les fonctionnalits suivantes : e e Gestion des prols : Les utilisateurs peuvent avoir des niveaux de droits (i.e. prols) dirents pour accder e e ` certaines fonctionnalits de lapplication. Il existe 4 prols dirents. En dehors du a e e prol Administrateur national qui a tous les droits, chaque prol est rattach ` une ea notion gographique qui correspond soit ` une dch`terie, soit ` une entit (un ensemble e a e e a e de dch`teries). Le prol Administrateur local peut crer les prols Administrateur e e e local, Consultant Web et Agent attachs ` une ou plusieurs units auxquelles il est e a e lui-mme rattach. Il peut aussi consulter et modier les donnes remontes des entits e e e e e ainsi que lancer larchivage de celles-ci. Le prol Utilisateur de consultation Web (ou plus couramment Consultant Web) na acc`s quen consultation aux donnes concernant les e e dch`teries auxquelles il est lui-mme rattach. Enn le prol Agent permet dutiliser e e e e uniquement toutes les fonctions du terminal. Paramtrage des tables et formulaires du terminal : e Lapplication param`tre chaque terminal avec une dch`terie particuli`re. Les terminaux e e e e poss`dent d`s lors des informations direntes en fonction de leur zone daction. e e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

10

Visualisation des donnes transfres depuis les terminaux : e ee Les terminaux remontent ` laide de dirents moyens les donnes enregistres par les a e e e agents. Ces donnes correspondent aux visites de la dch`terie ainsi quaux demandes e e e denl`vement de conteneurs. e Ajout/suppression/modication des donnes : e Les donnes remontes sont modiables ` partir de lapplication Web. De plus il est pose e a sible dajouter des visites ` partir du serveur central. a Archivage : Larchivage permet ` lutilisateur darchiver les donnes de la dch`terie qui ne seront a e e e accessibles quen consultation. Production dtats : e Les tats reprsentent les dirents rapports possibles sur les visites depuis les donnes e e e e transfres par les terminaux ou ajoutes par les utilisateurs sur lapplication Web (par ee e exemple : le nombre de visites eectues durant une priode dnie en fonction dun type e e e de visiteur particulier).

5.1.2

Application Terminal Portable

Lapplication terminal permet essentiellement aux agents des dch`teries denregistrer e e les visites des clients avec leurs apports ventuels. Chaque terminal est congur pour une e e seule dch`terie et dpend ainsi de la conguration mise par le serveur central. Ainsi des e e e e terminaux de deux dch`teries direntes ne poss`dent pas les mmes congurations : les e e e e e types de visiteurs, apports et r`gles de facturation sont propres ` chacune des dch`teries. e a e e De plus, lapplication TP permet de synchroniser les donnes avec le serveur central. La e synchronisation permet ainsi de prendre en considration les visites enregistres par les e e terminaux. Elle peut seectuer ` laide de dirents outils (expliqus par la suite). a e e 5.1.3 Exemple de fonctionnement

Le schma 2 ach ` la page 11 reprsente un exemple simple de fonctionnement e e a e de lapplication. Tout dabord un client de la dch`terie eectue une visite (1). Lagent e e responsable de la dch`terie enregistre la visite puis met une facture sur une imprimante e e e portable bluetooth (2). Il synchronise ensuite son terminal portable avec le serveur central an de remonter les donnes prcdemment enregistres (3). Un administrateur local e e e e rattach ` la dch`terie peut eectuer d`s lors du reporting sur les visites eectues dans ea e e e e celle-ci (4).

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

11

Fig. 2 Exemple de fonctionnement de lapplication Dch`terie e e

5.2

Description technique

Larchitecture technique gnrale de lapplication (TP + Web) est reprsente par le e e e e schma 3 ` la page 12. e a Lapplication Dch`terie est ainsi reprsente par un serveur central reli via le rseau e e e e e e RTC, GSM/Data ou via Internet aux terminaux portables. Le serveur est hberg dans e e un centre dhbergement de la socit C&Si. Les employs de lagence en charge de la e ee e dch`terie y acc`dent via lIntranet ou Internet. Ce serveur regroupe entre autres : e e e Un serveur de synchronisation an dalimenter et de rcuprer les donnes des e e e terminaux Lapplication Web La base de donnes e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

12

Fig. 3 Architecture de lapplication Dch`terie e e 5.2.1 Synchronisation

Les terminaux peuvent synchroniser leurs donnes (via TCP/IP) ou tlcharger des e ee mises ` jour de lapplication (via FTP) en atteignant le serveur de 2 mani`res direntes : a e e En tablissant une connexion PPP (Point Par Point) par modem RTC ou GSM/Data e avec le prestataire choisi. En tablissant une connexion TCP/IP avec le serveur via un PC local ayant luie mme acc`s au serveur central via lIntranet SITA France ou Internet directement. e e Cest le cas des PC situs en agence par exemple. Dans ce cas le terminal tablit e e une connexion ActiveSync avec le PC local. 5.2.2 Application Web

La plate-forme dcrite par le schma 4 ` la page 13 se compose de 4 modules princie e a paux : Le serveur de synchronisation Mobilink : il sagit du module qui permet la synchronisation des donnes entre la base de donnes Ultralite embarque sur les e e e terminaux portables et la base de donnes SQL Server du serveur central. Via les e scripts de synchronisation, ce module rcup`rera les donnes saisies sur le TP par e e e les oprateurs et les supprimera du TP une fois transfres. Il transf`rera galement e ee e e les donnes de paramtrage saisies par le module Web et ncessaires ` lapplication e e e a tournant sur le TP. Par ailleurs, il sera possible de grer la mise ` jour de versions e a de lapplication mobile via ce mcanisme de synchronisation. e socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

13

Fig. 4 Architecture de lapplication Web

Lapplication Web Java : permet de faire toutes les actions de paramtrage, vie sualisation de rapports, requtage et archivage de donnes. Le module Web, dploy e e e e sur un serveur dapplications TomCat, est dvelopp en Java ` laide du framework e e a Spring 2.0 permettant : De grer les DAO (Data Access Objects) via le framework Hibernate 3.2 : mape ping des tables de la base de donnes en objets. e Grer le cycle de vie des objets mtiers. e e Grer la couche de prsentation en suivant le mod`le MVC (Mod`le Vue e e e e Contrleur) par le biais du framework Struts 2. o La base de donnes SQL Server 2005 : utilisation dune base de donnes pour e e la gestion des donnes de tous les sites. Les donnes courantes et les donnes are e e chives sont dans des tables distinctes. Des procdures stockes permettent de faire e e e les imports/exports des donnes en base. e Le serveur FTP : ce module permet de rcuprer une nouvelle version de lapplie e cation embarque, directement ` partir des TPs par une connexion ` distance sur e a a le serveur.

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

14

5.2.3

Application TP

Fig. 5 Architecture de lapplication TP Larchitecture de lapplication TP est prsente par le schma 5. Ce module est e e e dvelopp sur un terminal Windows Mobile 6. Le mod`le choisi est le Workabout Pro e e e S Serie G2 de Psion Teknologix (Fig. 6).

Fig. 6 Terminal Portable G2 de Psion Teknologix Lapplication TP est dveloppe enti`rement en C#. e e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

15

5.3

Environnement technique de lapplication Web

Lapplication Web est dveloppe enti`rement en Java et utilise plusieurs frameworks, e e e biblioth`ques Open-source dans les direntes parties du projet. Les frameworks facilitent e e la programmation dans le sens o` la standardisation des processus de programmation rend u le code plus lisible et facilement interprtable lors dventuelles modications. Toutes les e e volutions du projet Dch`terie ont t ralises sous lenvironnement de dveloppement e e e ee e e e Eclipse. Ensuite divers framework tels que AppFuse 2, Struts 2, Spring et Hibernate ont t utiliss. Le projet Web est dploy sur un serveur dapplication TomCat et utilise une ee e e e base de donnes Microsoft SQL Server 2005. Une prsentation des dirents outils est e e e faite ci-apr`s. e 5.3.1 IDE Eclipse

Eclipse IDE est un environnement de dveloppement intgr libre (le terme Eclipse e e e dsigne galement le projet correspondant, lanc par IBM) extensible, universel et poe e e lyvalent, permettant potentiellement de crer des projets de dveloppement mettant en e e uvre nimporte quel langage de programmation. Eclipse IDE est principalement crit e en Java (` laide de la biblioth`que graphique SWT, dIBM), et ce langage, grce ` des a e a a biblioth`ques spciques, est galement utilis pour crire des extensions. e e e e e La spcicit dEclipse IDE vient du fait de son architecture totalement dveloppe e e e e autour de la notion de plug-in (en conformit avec la norme OSGi) : toutes les fonce tionnalits de cet atelier logiciel sont dveloppes en tant que plug-in. Plusieurs logiciels e e e commerciaux sont bass sur ce logiciel libre, comme par exemple IBM Lotus Notes 8, e IBM Symphony ou Websphere Studio Application Developer. 5.3.2 Framework (Template) AppFuse 2

Les technologies Java/J2EE proposent un large panel de biblioth`ques et modules e mais lintgration de ces technologies ensemble ` partir de sources spares est dicile. e a e e Nous avions besoin des modules principaux (Struts 2, Hibernate) dont nous parlions plus haut mais aussi dautres modules pour grer des situations rcurrentes sans avoir ` les e e a rinventer comme lauthentication, la gnration de tables avec tri, pagination et exe e e ports, les calendriers, etc. AppFuse 2 est un projet Open-source dont lobjectif est de fournir des applications Web de base cl en main dj` congures avec de nombreux modules utiles pour les e ea e problmatiques Web. Il sagit dune application Web dexemple qui implmente quelques e e pages varies rpondant ` un large panel de situations rpandues. Il sut ensuite de faire e e a e ` voluer cette application et dy intgrer les fonctionnalits voulues pour le projet. A sa e e e base, AppFuse 2 est donc un squelette de projet, similaire ` un nouveau projet Web cr a ee par un IDE. 5.3.3 Framework Spring

AppFuse 2 utilise le framework Spring pour ses capacits dinjection de dpendance, e e ainsi que pour sa simplication au dveloppement et test dune application J2EE. Spring e est un framework Open-source J2EE pour les applications 3-tiers, dont il facilite le dveloppement et les tests. Il est considr comme un conteneur dit lger . Il prend en e ee e socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

16

charge la cration dobjets et la mise en relation dobjets par lintermdiaire dun chier e e de conguration qui dcrit les objets ` fabriquer et les relations de dpendances entre ces e a e objets. Le gros avantage par rapport aux serveurs dapplication est quavec Spring, les classes crites par le dveloppeur nont pas besoin dimplmenter une quelconque intere e e face pour tre prises en charge par le framework (au contraire des serveurs dapplications e J2EE et des EJBs). Spring sappuie principalement sur lintgration de trois concepts cls : e e Inversion of Control (IoC) - inversion de contrle ou injection de dpendance o e Aspect Oriented Programmation (AOP) - programmation oriente aspect e Couche dabstraction La couche dabstraction permet dintgrer dautres frameworks et biblioth`ques avec e e une plus grande facilit. Ce framework, grce ` cette couche, ne concurrence pas dautres e a a frameworks dans une couche spcique dun mod`le architectural MVC mais sav`re e e e un framework multi-couches pouvant sinsrer ` nimporte quel niveau : mod`le, vue et e a e contrleur. Il permet ainsi dintgrer Hibernate pour la couche de persistance ou encore o e Struts 2 pour la couche prsentation. e 5.3.4 Framework Struts 2

Apache Struts 2 est un lgant et extensible framework pour la cration dapplications ee e Web Java. Le framework a t conu pour rationaliser le cycle complet de dveloppement ee c e dune application : de la construction puis du dploiement jusqu` la maintenance. Pour e a atteindre cet objectif, Struts 2 fournit direntes caractristiques pour rduire la cone e e guration XML, utiliser des annotations et des conventions sur la conguration. Dun plus haut niveau, Struts 2 est un framework implmentant le patron de concepe tion MVC 2 (Mod`le - Vue - Contrleur). Ce patron est lg`rement dirent du design e o e e e pattern classique MVC dans le sens o` les actions prennent le rle de mod`le plutt que u o e o de contrleur. MVC 2 est ralis avec 5 composants noyaux : o e e Les actions Les intercepteurs La pile de valeurs/OGNL Les types de rsultat e Les vues technologiques/rsultats e Le schma 7 ` la page 17 montre les composants principaux du patron de conception e a MVC 2 dans larchitecture haut niveau de MVC. Le contrleur est implment avec un o e e ensemble de ltres dexpdition tout comme les intercepteurs, le mod`le est implment e e e e avec des actions et la vue comme une combinaison de types de rsultat et de rsultats. La e e pile de valeurs et OGNL fournissent un processus commun, liant et activant lintgration e entre tous les composants. Les actions doivent implmenter linterface Action. Elles hritent ainsi de mthodes e e e permettant lacc`s aux proprits et mthodes du mod`le pour retourner des cha e ee e e nes de caract`res (String). Ces String sont lies avec les noms result dnies dans e e e le chier de conguration struts.xml. Les actions ont typiquement une seule mthode e execute() permettant deectuer les traitements sur la vue. Struts 2 utilise aussi socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

17

Fig. 7 Schma du framework Struts 2 e les intercepteurs pour intercepter les traitements de requtes et de rponses des pages e e Web. Les intercepteurs ressemblent ` des ltres de servlet ` lexception que lon peut a a communiquer directement avec les actions. 5.3.5 Framework Hibernate

Hibernate est un framework de persistance. Cest une solution Open-source Object Relational Mapping (ORM). Cet acronyme reprsente la technique du mapping mod`le e e Objet en mod`le Relationnel (gnralement reprsent par une base de donnes SQL). e e e e e e Hibernate lib`re le dveloppeur du codage JDBC. Plutt que dutiliser SQL et JDBC, e e o le dveloppeur peut utiliser des objets de domaine (POJOs) ainsi que de nombreuses e annotations an de mapper les objets avec une base de donnes relationnelle. Les ane notations indiquent quels champs dun objet doivent tre mapps avec quelles colonnes e e dans la table. Hibernate poss`de aussi un puissant langage de requte Hibernate Query e e Language (HQL) qui permet dcrire ` la fois en SQL mais dutiliser aussi une smantique e a e objet. Linterface de session Hibernate est similaire ` une connexion avec une base de donnes a e dans la mesure o` la connexion doit tre ouverte et ferme ` des moments opportuns pour u e e a viter des erreurs et des fuites de mmoire. Hibernate apporte ainsi une solution aux e e probl`mes dadaptation entre le paradigme objet et les SGBD en remplaant les acc`s e c e ` la base de donnes par des appels ` des mthodes objet de haut niveau. Coupl avec a e a e e le framework Spring, Hibernate permet la non-gestion de lutilisateur de louverture et clture de sessions. o 5.3.6 Serveur dapplications TomCat

Apache TomCat est un conteneur de servlet J2EE. Issu du projet Jakarta, TomCat est dsormais un projet principal de la fondation Apache. Il implmente les spcications e e e des servlets et des JSP de Sun Microsystems. Il inclut des outils pour la conguration socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

18

et la gestion, mais peut galement tre congur en ditant des chiers de conguration e e e e XML. Comme TomCat inclut un serveur HTTP interne, il est aussi considr comme tel. ee 5.3.7 Microsoft SQL Server 2005

SQL Server est un SGBD dvelopp et commercialis par Microsoft, mais ` lorie e e a gine par Sybase. Le SGBD Microsoft SQL Server fonctionne dsormais uniquement sous e Windows. 5.3.8 Les autres modules utiliss e

Acegi Security : Acegi Security est un sous projet de la communaut Spring tr`s largement rpandu e e e et utilis dans le monde de lOpen-source Web. Il propose des mcanismes de scurit de e e e e mani`re intgre aux environnements bass sur Spring, allant des plus simples aux plus e e e e complexes. Ces aspects se rpartissent en deux catgories : e e Lauthentication qui consiste ` garantir que la personne connecte est bien celle a e quelle prtend tre. e e Les autorisations qui consistent ` vrier que la personne connecte a bien les pera e e missions deectuer une action donne. e Displaytag : Dans toutes les applications Web, on a systmatiquement besoin dacher des sries e e denregistrements ou des listes dobjets via des tableaux en html. Il faut alors itrer sur e la liste, grer la ligne dentte du tableau et assurer la pagination. Cela devient vite e e lourd et rptitif. En J2EE, la librairie Displaytag ore une solution rapide, pratique e e et ecace ` ce probl`me. Cette Taglib ore un mcanisme tr`s simple ditration a e e e e sur une collection, celui-ci sexcutant directement depuis le code dune jsp. Le rsultat e e donne lachage dun tableau html avec une quantit doptions telles que les tris sur les e colonnes, la pagination, le regroupement de donnes ou encore lexport du tableau aux e formats csv, excel, xml, pdf ou rtf. Couple au framework Struts 2, cette librairie ore e un gain majeur en rapidit de dveloppement et en maintenance. e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

19

5.4

Schma de la base de donnes relationnelle e e

Fig. 8 Schma de la base de donnes de lapplication Dch`terie e e e e Le schma 8 prsente les direntes tables dnies dans la base de donnes relatione e e e e nelle MS SQL Server.

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

20

5.5
5.5.1

Interface Web - IHM


Page de connexion

La page de connexion est la premi`re page Web de lapplication Web. Par ailleurs e toutes les pages sont ralises en technologie Java Server Page (JSP). Les mots de e e passe sont crypts dans la base de donnes ` laide du framework Acegi Security (dcrit e e a e prcdemment). e e La page de connexion se prsente comme suit : e

Fig. 9 Page de connexion de lapplication Web Java Server Page : Les JSP (Java Server Pages) sont un standard permettant de dvelopper des applicae tions Web interactives, cest-`-dire dont le contenu est dynamique. Ainsi une page Web a JSP (reprable par lextension .jsp) aura un contenu pouvant tre dirent selon certains e e e param`tres (des informations stockes dans une base de donnes, les prfrences de lutie e e ee lisateur, . . .) tandis quune page Web classique (dont lextension est .htm ou .html) achera continuellement la mme information. e 5.5.2 Charte graphique

Toutes les pages Web de lapplication Web (except la page de connexion) rpondent ` e e a une charte graphique. Elle se compose tout dabord dun bandeau den-tte reprsentant le e e logo de lentreprise (SITA France) auquel est ajout le nom de la dch`terie slectionne e e e e e ainsi que les informations sur lutilisateur connect. Ensuite un menu situ ` gauche e e a permet de naviguer ` travers les diverses fonctionnalits de lapplication. Enn le panneau a e principal permet la visualisation des donnes. Le schma 10 ach ` la page 21 reprsente e e ea e la charte graphique utilise. Les direntes pages prsentes ci-apr`s reprsentent les e e e e e e fonctionnalits les plus importantes de lapplication. e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

21

Fig. 10 Charte graphique de lapplication Web 5.5.3 Page des paramtrages e

Plusieurs pages permettent de paramtrer la dch`terie slectionne. Lutilisateur peut e e e e e ainsi, en fonction de son prol, modier les informations de la dch`terie (Fig. 11), les e e dchets, les types de visiteur (Fig. 12) ou encore les agents de la dch`terie (Fig. 13). e e e

Fig. 11 Page du paramtrage de la dch`terie slectionne e e e e e Sur cette page, lutilisateur entre toutes les informations concernant la dch`terie. e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

22

Fig. 12 Page du paramtrage des types de visiteur e Lutilisateur param`tre les types de visiteur qui ont acc`s ` la dch`terie slectionne. e e a e e e e Ces dirents types de visiteur appara e tront sur lapplication TP des terminaux portables de la dch`terie. e e

Fig. 13 Page du paramtrage des agents de la dch`terie e e e Lutilisateur param`tre les agents qui ont acc`s ` lapplication mobile et qui peuvent e e a ainsi synchroniser les donnes avec le serveur central. e

5.5.4

Page des visites

La page des visites (Fig. 14) permet de visualiser les visites de la dch`terie slectionne e e e e en fonction dun ltre sur les dates prcdemment tabli. Il est dailleurs possible de vie e e socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

23

sualiser les apports des visites en dplaant la souris sur le total de la visite voulue. e c

Fig. 14 Page des visites de lapplication Web

5.5.5

Page de larchivage

La page de larchivage (Fig. 15) permet darchiver toutes les donnes dune dch`terie e e e choisie en fonction dune anne. Les donnes seront encore consultables mais non modie e ables.

Fig. 15 Page de larchivage de lapplication Web

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

24

5.5.6

Page des tats e

Lapplication Web permet dacher dirents tats tels que le nombre de visites par e e type de visiteurs et par mois ou encore les quantits enregistres par type de dchets. Au e e e total, on dnombre 7 tats possibles. La liste des tats est disponible ` partir de longlet e e e a Etats du menu. Le schma 16 ` la page 24 montre le nombre de visites par mois et e a par commune pour la dch`terie slectionne. Un ltre est auparavant remplissable an e e e e de visualiser les donnes selon des crit`res particuliers. Un rappel de ce ltre est visible e e en haut de ltat. e

Fig. 16 Page reprsentant un exemple dtat e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

25

5.6
5.6.1

Droulement du projet e
Diagramme de Gantt

Fig. 17 Diagramme de Gantt de lapplication Dch`terie e e Le diagramme de Gantt (Fig. 17) prsente le droulement du projet Dch`terie. Apr`s e e e e e lapprentissage et la comprhension du projet et des techniques utilises, jai particip e e e exclusivement aux volutions de lapplication Web durant les phases de Recette et de e Validation Service Rgulier (VSR). e 5.6.2 Comits de suivi e

Pratiquement toutes les semaines se runissaient les quipes Webtiss et SITA France e e an de faire le point sur lavancement du projet. Pour chaque partie de la solution (TP et Web) on commenait par vrier les conclusions de la runion prcdente. Ensuite on c e e e e numrait lavancement du projet depuis cette runion et enn on nonait les points e e e e c bloquants sil y en avait. 5.6.3 Phases de Recette et Validation Service Rgulier e

En phases de Recette et de VSR (Validation Service Rgulier), SITA France soumete taient les erreurs rencontres sur lapplication (TP et Web) ` laide de loutil Mantis Buge a Tracker. Cet outil est un syst`me de suivi de bogues . Il permet daider dveloppeurs e e et utilisateurs ` amliorer la qualit dun logiciel. Cet outil est extrmement protable a e e e dans le dveloppement logiciel. e 5.6.4 Documentation

En complment de lapplication, divers documents taient crits an de spcier les e e e e fonctionnalits et lenvironnement technique. Dautre-part divers manuels prcisaient e e linstallation ou encore lutilisation du logiciel. Jai eu en charge de mettre ` jour les a spcications fonctionnelles (SF) et techniques (ST). De plus, Webtiss ma con lcriture e e e dune prsentation de lapplication Web. Ce diaporama est utilis pour former les futurs e e utilisateurs du logiciel.

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

26

Projet LogACS

6.1

LogACS : partie du projet GPS Logistique

Le projet LogACS fait partie du projet GPS Logistique pour la socit Saint Louis ee Sucre. GPS Logistique a pour but doptimiser les approvisionnements en betteraves ` a sucre des usines ` partir dun reprage sur le terrain par GPS. Saint Louis Sucre est en a e relation avec de nombreux planteurs de betteraves. Ceux-ci poss`dent une ou plusieurs e parcelles o` sont cultives les betteraves. Les planteurs sont chargs dentreposer les u e e betteraves dune parcelle sur une aire de stockage (AST) et de les stocker en dirents e silos (ACS). Une fois les silos constitus, une grue et plusieurs transporteurs viennent e rcuprer les silos de betteraves. Le schma 18 rsume le fonctionnement dune rcolte e e e e e de betterave par Saint Louis Sucre.

Fig. 18 Fonctionnement du projet LogACS Le projet GPS Logistique a donc pour but de : Permettre de guider les grues jusqu` leur point de chargement a Permettre aux transporteurs de recevoir par SMS les coordonnes GPS des silos ` e a enlever au moyen des outils de navigation GPS dont ils seront munis socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

27

Suivre en temps rel lenl`vement des silos an de respecter les r`gles dchelonnement e e e e et viter le paiement dindemnits de retard aux planteurs e e Optimiser lapprovisionnement de lusine en betteraves grce ` une connaissance en a a temps rel des positions des grues et des besoins en camions e Avertir les planteurs de lenl`vement immdiat de leur silo an quils puissent ine e tervenir en cas de probl`me e

Fig. 19 Cinmatique du projet GPS Logistique e Le schma 19 prsente la cinmatique du projet GPS Logistique.Le projet LogACS e e e est reprsent la partie encercle. e e e

6.2

Description fonctionnelle

Lapplication mobile LogACS est ` destination des surveillants de plaine. Ces agents a du service betteravier Saint Louis Sucre sont chargs de rpondre ` la demande des e e a planteurs pour enregistrer les silos des parcelles et rpertorier simultanment les aires de e e stockage utilises. Lapplication permet donc de crer et modier les aires de stockage e e conjoncturelles (AST) et les avis de constitution de silos (ACS) en campagne de rcolte e de betteraves ` sucre. a Les informations saisies par le surveillant de plaine (AST et ACS) sont remontes par e SMS vers les direntes usines via la plate-forme SPG dOrange ` laquelle se connecte e a le serveur API-WEB de Saint Louis Sucre utilis pour lacheminement de tous e les SMS entre les applications mtiers de Saint Louis Sucre et les terminaux mobiles des e dirents acteurs (grutiers, transporteurs, agriculteurs, surveillants de plaine). e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

28

Lapplication int`gre aussi des fonctionnalits de cartographie. En eet, il est possible e e de se situer gographiquement sur un fond de carte IGN et dacher sur cette carte les e positions GPS des aires enregistres. e

6.3

Description technique

Lapplication LogACS est dploye sur terminal mobile. Deux types de terminaux sont e e utiliss : Orange SPV M3000 et Intermec CN3. Tous deux sont des Pocket PC quips e e e de Windows Mobile 5.

Fig. 20 Pocket PC Orange SPV M3000 et Intermec CN3

Fig. 21 Architecture du projet LogACS Lapplication LogACS poss`de une architecture simple comme le montre le schma 21. e e Elle poss`de une base de donnes locale embarque Hyper File et communique avec une e e e application de cartographie an de visualiser les coordonnes GPS. e

6.4

Environnement technique

Lapplication client LogACS est dveloppe enti`rement en Windev Mobile 10 qui est e e e un environnement de dveloppement intgr propritaire, cr par la socit franaise PC e e e e ee ee c Soft, permettant de crer des applications bases sur un moteur dexcution (Framework). e e e WinDev est un outil conu pour dvelopper rapidement des applications, principalec e ment orientes donnes. Le langage de programmation inclus dans loutil est le W-langage, e e un langage de 4e gnration (L4G). Cest un langage simpli et exible qui permet dobe e e tenir des rsultats tr`s rapidement. e e WinDev poss`de un diteur dinterface graphique permettant de crer les IHM par e e e simple glisser/dplacer (Fig. 22). e socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

29

Fig. 22 Editeur dinterface graphique Windev Mobile 10 Windev permet galement de choisir un mod`le de charte graphique parmi un ene e semble propos et den crer de nouveaux. Loutil dinterface permet de dnir interactie e e vement de tr`s nombreuses scurits de saisie sur les champs : taille, masque, formatage e e e automatique, saisie obligatoire, aide ` acher, . . . Cela limite ensuite le nombre de fonca tions ` programmer. Comme les langages Java, Visual Basic ou C#, le code est prcompil a e e et interprt ` lexcution par le framework, ce qui permet une indpendance du chier eea e e excutable par rapport au syst`me dexploitation cible. WinDev a t initialement prvu e e ee e pour Windows. Depuis la version 10, WinDev permet de gnrer les applications au fore e mat Java en plus des formats excutables standard et .NET. On peut noter que cette e version permet lexcution sur les syst`mes Windows mais aussi Linux, pour une pare e tie des fonctions. Ses fr`res WebDev et WinDev Mobile permettent dutiliser le mme e e langage de programmation, et les mmes concepts (analyse, fentre, tats, composants, e e e classes, . . .), pour la gnration de sites Web et dapplications pour Pocket PC, Smarte e phones et terminaux industriels. La version 10 des outils vise la construction de projets multi cibles ` partir dun mme code. En version 11, WinDev int`gre des fonctionnalits a e e e lies ` la domotique, les tests unitaires intgrs, un tableau de bord de gestion du projet, e a e e et des fonctionnalits de rtro analyse des codes existants. WinDev Mobile sappuie sur e e une base de donnes Hyper File embarque (base de donnes gratuite). e e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

30

6.5

Schma de la base de donnes relationnelle e e

Fig. 23 Schma de la base de donnes de lapplication LogACS e e La base de donnes relationnelle est reprsente par le schma 23. Elle est assez lg`re ; e e e e e e elle ne comporte que 7 tables.

6.6
6.6.1

Interface Homme Machine


Fentre de connexion e

Fig. 24 Fentre de connexion de lapplication LogACS e La fentre de connexion (Fig. 24) permet de se connecter ` lapplication LogACS. Deux e a prols sont disponibles : administrateur et utilisateur. Les deux prols ont acc`s ` toutes e a les fonctionnalits de lapplication. Le prol administrateur permet en plus de pouvoir e paramtrer lapplication. Il est ainsi possible de modier les identiants du terminal, e socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

31

changer le numro du SPG Orange ncessaire pour lenvoi des SMS ou encore choisir les e e param`tres du GPS utilis. e e 6.6.2 Fentre des AST e

Fig. 25 Fentre des AST de lapplication LogACS e Le schma 25 prsente la fentre listant les Aires de Stockage. A partir de celle-ci, il est e e e possible de crer, modier une aire, dacher ses dtails ou encore de visualiser sa position e e sur une carte IGN. Cette visualisation est possible grce au logiciel CartoExploreur de la a socit Bayo. ee 6.6.3 Fentre de rcapitulation dun AST e e

Fig. 26 Fentre de rcapitulation dun AST de lapplication LogACS e e La fentre (Fig. 26) montre un rcapitulatif des informations saisies par lutilisateur e e lors de la cration dune aire. Une fois valides, lutilisateur peut transmettre les infore e mations au serveur central par lenvoi dun SMS.

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

32

6.6.4

Fentre de rcapitulation dun ACS e e

Fig. 27 Fentre de rcapitulation dun ACS de lapplication LogACS e e La fentre (Fig. 27) reprsente, comme la fentre prcdente, un rcapitulatif des e e e e e e informations saisies par lutilisateur mais cette fois-ci lors de la cration dun avis de e constitution de silo. Ici aussi, apr`s avoir contrl les informations, lutilisateur peut les e oe envoyer par SMS au serveur central.

6.7
6.7.1

Droulement du projet e
Diagramme de Gantt

Fig. 28 Diagramme de Gantt de lapplication LogACS Le diagramme de Gantt (Fig. 28) prsente le droulement du projet LogACS. Jai e e tout dabord masteuriser les Pocket PC CN3 dIntermec avec lapplication LogACS dj` ea existante. Jai eu ensuite en charge la fusion des applications LogACS des CN3 et des SPV M3000. Enn, jai particip aux volutions de lapplication durant la phase de Recette. e e 6.7.2 Runions davancement e

Environ deux fois par mois se droulait une runion davancement avec le client e e reprsentant la direction technique de Saint Louis Sucre. Ces runions permettaient e e de faire un point sur ltat davancement du projet. e 6.7.3 Documentation

En complment de lapplication LogACS, divers documents taient crits an de e e e spcier les fonctionnalits ainsi que lenvironnement technique. Jai eu en charge de e e rdiger un manuel dinstallation ainsi quun manuel utilisateur de lapplication. Ce mae nuel est utilis pour la formation des agents de Saint Louis Sucre. e socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

33

Les 18 et 19 ao t, jai eectu des essais de lapplication LogACS en compagnie du client u e aux alentours de lusine Saint Louis Sucre dEppeville (Picardie). Ces essais ont eu pour but de vrier le bon fonctionnement de lapplication sur le terrain. e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

34

Projet Camion

7.1

Description fonctionnelle

Lapplication mobile Camion est ` destination des conducteurs de camion de Saint a Louis Sucre en charge de lacheminement des silos de betteraves vers les usines. Elle permet aux chaueurs de visualiser lordre des silos ` ramasser et de les guider vers leur a emplacement. Lapplication ache ensuite les dtails des Aires de Stockage (AST) puis e situe leur position sur un fond de carte IGN. Lapplication sajoute dans le projet GPS Logistique car elle communique avec le serveur API-WEB qui achemine un type de SMS particulier vers lapplication.

7.2

Description technique

Lapplication Camion est dploye sur terminal mobile de type Orange SPV M3000 (Fig. 20 e e ` la page 28). Ce Pocket PC est quip de Windows Mobile 5. a e e

Fig. 29 Architecture du projet Camion Lapplication Camion poss`de une architecture simple comme le montre le schma 29. e e Tout dabord, lapplication MapiRule intercepte les SMS dun type particulier envoys e par le serveur API-WEB . Ces SMS ne seront pas visibles dans la bo de rception te e du Pocket PC. MapiRule les transforme ensuite en chiers de type texte. Lapplication Camion lit ensuite les chiers texte crs et les enregistre dans une base de donnes ee e embarque de type Hyper File. e

7.3

Environnement technique

Lapplication Camion est dveloppe en Windev Mobile 10 (chapitre 6.4). En plus e e de cet environnement de dveloppement, la petite application MapiRule est dveloppe e e e en C# sous Visual Studio 2008. MapiRule est un exemple lg`rement modie de Visual e e e Studio 2008.

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

35

Fig. 30 Schma de la base de donnes de lapplication Camion e e

7.4

Schma de la base de donnes relationnelle e e

La base de donnes relationnelle de lapplication Camion est reprsente par le schma 30. e e e e Elle est tr`s lg`re ; elle ne comporte que 2 tables : la table TP PLANING regroupant les e e e informations des SMS reus et la table TP PARAM pour le paramtrage de lapplication. c e

7.5
7.5.1

Interface Homme Machine


Fentre du choix de la date de planning e

Fig. 31 Fentre du choix de la date de planning lapplication Camion e La premi`re fentre (Fig. 31) du projet Camion permet essentiellement aux conduce e teurs de choisir la date du planning ` acher en fonction de la grue slectionne. Ils a e e peuvent aussi accder au menu paramtrage ` partir de cette mme fentre. Lergonomie e e a e e du projet permet aux chaueurs de naviguer ` la main sur lapplication ; cest pourquoi a les zones de texte ainsi que les boutons sont volontairement grands. 7.5.2 Fentre du planning e

Le schma 32 prsente la fentre du planning du conducteur. Elle ache, en fonction e e e de la grue prcdemment slectionne, lordre, la commune et le numro du silo quil e e e e e faut enlever. Une fois le silo choisi, lutilisateur acc`de aux dtails de ses informations en e e cliquant sur le bouton de validation. socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

36

Fig. 32 Fentre du planning de lapplication Camion e 7.5.3 Fentre des dtails dun silo e e

Fig. 33 Fentre des dtails dun silo de lapplication Camion e e La fentre (Fig. 33) ache les dtails du silo prcdemment slectionn. Lutilisateur e e e e e e peut vrier ainsi les informations du silo (commune, lieu-dit, coordonnes GPS, . . .). e e En cliquant sur le bouton situ en bas ` droite de lcran, le conducteur visualise les e a e coordonnes du silo sur une carte IGN ` laide du logiciel CartoExploreur de la socit e a ee Bayo.

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

37

7.6
7.6.1

Droulement du projet e
Diagramme de Gantt

Fig. 34 Diagramme de Gantt de lapplication Camion Le diagramme de Gantt (Fig. 34) prsente le droulement du projet Camion. e e 7.6.2 Runions e

Le 27 juin 2008 sest droul, dans les locaux de la socit Webtiss et en prsence du e e ee e reprsentant de Saint Louis Sucre, une premi`re runion an de prsenter lapplication e e e e Camion. Cette runion dite de Workshop a permis ` lquipe Webtiss de dnir e a e e les spcications fonctionnelles et techniques de lapplication. Ensuite, jai propos une e e maquette de lapplication pour prsenter lIHM au client. Une fois la maquette valide, e e jai pu commenc le dveloppement de lapplication Camion. e e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

38

Planning nal du stage

Fig. 35 Planning nal du stage Le diagramme de Gantt (Fig. 35) reprsente le planning nal du stage. Il prsente les e e direntes tches classes par projet auxquelles jai particip. Ce planning est lg`rement e a e e e e dirent du planning prvisionnel (Fig. 1 ` la page 8). Tout dabord, la projet Dch`terie e e a e e est toujours en phase de VSR. Ensuite, concernant le projet LogACS, la fusion entre les applications existantes sur CN3 et sur M3000 a t un peu plus longue que prvue en ee e raison dun manque de connaissance sur Windev Mobile 10. Enn, tant donn la lg`ret e e e e e et la simplicit du projet Camion, les spcications fonctionnelles et techniques du projet e e nont pas t crites. eee

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

39

Conclusion

Durant ce stage, jai t partie intgrante de lquipe Webtiss. Mon travail ne se boree e e nait donc pas ` la simple excution dune tche mais ` comprendre les enjeux de la a e a a socit en terme de qualit de satisfaction client. Cest dans ce sens que jai particip ee e e ` travers les dirents projets ` des runions entre la ma a e trise douvrage et les clients. A e auxquels jai particip, jai pu avoir une vue prcise du cycle de gestion dun projet : e e propositions de solutions, dveloppement, tests et dploiement des applications, criture e e e de dirents documents et maintenance. e Le projet Dch`terie est toujours en phase de VSR ; il est dploy sur plusieurs e e e e dch`teries pilotes. Les projets LogACS et Camion sont eux-aussi en phase de pilotage e e tant donn que la rcolte de betteraves commence dbut septembre et se termine courant e e e e janvier. Ce stage a donc t tr`s intressant aussi sur un plan professionnel quhumain. En ee e e eet sur le plan professionnel, jai tout dabord tendu mes connaissances en programe mation Web Java/J2EE (Struts 2, Hibernate, Spring) et utilis un nouvel atelier de gnie e e logiciel (Windev) tout en apprenant le langage de programmation W-Langage. Sur le plan humain, le travail en quipe au sein de Webtiss ma permis daner ma vision de e limportance de la relation cliente. Enn je tiens ` signaler la qualit de lenseignement du dpartement Informatique de a e e lUniversit de Nantes, ` la fois technique et gnraliste, qui ma permis de mener ` bien e a e e a ce stage de n dtudes. e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

40

10

Glossaire
Dnition et information e Alias service de messagerie permettant de SMS transmettre de courts messages textuels. Smartphone tlphone mobile coupl avec un PDA. ee e Pocket PC tlphone mobile coupl avec PDA et ee e dot dun cran tactile associ avec un e e e stylet. Rseau tlphonique commut rseau du tlphone (xe et mobile), RTC e ee e e ee dans le lequel un poste dabonn est e reli ` un central tlphonique. ea ee Global System for Mobile norme numrique e de seconde GSM gnration pour la tlphonie moe e ee bile, idale pour les communications e de type voix . Cest un rseau reli e e au rseau RTS permettant ainsi de e nallouer les ressources que pour la dure de conversation. e General Packet Radio Service norme pour la tlphonie mobile GPRS ee drive du GSM permettant un dbit e e e de donnes plus lev. Le GPRS ajoute e e e au rseau GSM la transmission par pae quet. Mod`le - Vue - Contrleur e o architecture et mthode de conception MVC e qui organise linterface Hommemachine dune application logicielle. Il divise lIHM en un mod`le (mod`le e e de donnes), une vue (prsentation, e e interface utilisateur) et un contrleur o (logique de contrle, gestion des o v`nements, synchronisation), chacun e e ayant un rle prcis dans linterface. o e Object-Relational Mapping technique de programmation informa- ORM tique qui cre lillusion dune base e de donnes oriente objet ` partir e e a dune base de donnes relationnelle en e dnissant des correspondances entre e cette base de donnes et les objets du e langage utilis. e Terme Short Message Service

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

41

Dnition et information e Alias application Java qui permet de gnrer Servlet e e dynamiquement des donnes au sein e dun serveur HTTP. Ces donnes sont e le plus gnralement prsentes au e e e e format HTML, mais elles peuvent galement ltre au format XML ou e e tout autre format destin aux navigae teurs web. Global Positioning System syst`me de positionnement par satel- GPS e lites mondial. Institut gographique national tablissement public de lEtat ` cae e a IGN ract`re administratif ayant pour mise sion de service public dassurer la production, lentretien et la diusion de linformation gographique de rfrence e ee en France. Aire de Stockage lieu rfrenc destin ` recevoir les silos AST ee e ea de betteraves. Avis de constitution de Silo avis de constitution dun tas de betteACS raves dispos sur laire de stockage et e prt ` tre enlev par la grue. e ae e

Terme API Java Servlet

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

42

11

Bibliographie

Wikipdia, http ://fr.wikipedia.org/wiki/Wiki e Framework AppFuse 2, appfuse.org/ Framework Struts 2, struts.apache.org/2.x/ Microsoft, http ://msdn.microsoft.com/ Framework Hibernate, www.hibernate.org/ Framework Spring, www.springframework.org/ Saint Louis Sucre, www.saintlouis-sucre.com/ SITA France, www.sita.fr/ ACEGI security, http ://www.acegisecurity.org/ Display Tag, http ://displaytag.sourceforge.net/11/ PC Soft, http ://www.pcsoft.fr/ MapiRule, http ://msdn.microsoft.com/en-us/library/aa446561.aspx

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

43

Table des gures


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 Planning prvisionnel du stage . . . . . . . . . . . . . . . . . . . . . . . . e Exemple de fonctionnement de lapplication Dch`terie . . . . . . . . . . e e Architecture de lapplication Dch`terie . . . . . . . . . . . . . . . . . . e e Architecture de lapplication Web . . . . . . . . . . . . . . . . . . . . . . Architecture de lapplication TP . . . . . . . . . . . . . . . . . . . . . . . Terminal Portable G2 de Psion Teknologix . . . . . . . . . . . . . . . . . Schma du framework Struts 2 . . . . . . . . . . . . . . . . . . . . . . . . e Schma de la base de donnes de lapplication Dch`terie . . . . . . . . . e e e e Page de connexion de lapplication Web . . . . . . . . . . . . . . . . . . . Charte graphique de lapplication Web . . . . . . . . . . . . . . . . . . . Page du paramtrage de la dch`terie slectionne . . . . . . . . . . . . . e e e e e Page du paramtrage des types de visiteur . . . . . . . . . . . . . . . . . e Page du paramtrage des agents de la dch`terie . . . . . . . . . . . . . . e e e Page des visites de lapplication Web . . . . . . . . . . . . . . . . . . . . Page de larchivage de lapplication Web . . . . . . . . . . . . . . . . . . Page reprsentant un exemple dtat . . . . . . . . . . . . . . . . . . . . e e Diagramme de Gantt de lapplication Dch`terie . . . . . . . . . . . . . . e e Fonctionnement du projet LogACS . . . . . . . . . . . . . . . . . . . . . Cinmatique du projet GPS Logistique . . . . . . . . . . . . . . . . . . . e Pocket PC Orange SPV M3000 et Intermec CN3 . . . . . . . . . . . . . . Architecture du projet LogACS . . . . . . . . . . . . . . . . . . . . . . . Editeur dinterface graphique Windev Mobile 10 . . . . . . . . . . . . . . Schma de la base de donnes de lapplication LogACS . . . . . . . . . . e e Fentre de connexion de lapplication LogACS . . . . . . . . . . . . . . . e Fentre des AST de lapplication LogACS . . . . . . . . . . . . . . . . . e Fentre de rcapitulation dun AST de lapplication LogACS . . . . . . . e e Fentre de rcapitulation dun ACS de lapplication LogACS . . . . . . . e e Diagramme de Gantt de lapplication LogACS . . . . . . . . . . . . . . . Architecture du projet Camion . . . . . . . . . . . . . . . . . . . . . . . Schma de la base de donnes de lapplication Camion . . . . . . . . . . e e Fentre du choix de la date de planning lapplication Camion . . . . . . e Fentre du planning de lapplication Camion . . . . . . . . . . . . . . . . e Fentre des dtails dun silo de lapplication Camion . . . . . . . . . . . e e Diagramme de Gantt de lapplication Camion . . . . . . . . . . . . . . . Planning nal du stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . Interaction entre les dirents frameworks utiliss de lapplication Dch`terie e e e e Fentre de connexion de lapplication TP . . . . . . . . . . . . . . . . . . e Fentre denregistrement dune visite de lapplication TP . . . . . . . . . e Fentre denregistrement des apports de lapplication TP . . . . . . . . . e 8 11 12 13 14 14 17 19 20 21 21 22 22 23 23 24 25 26 27 28 28 29 30 30 31 31 32 32 34 35 35 36 36 37 38 44 66 67 67

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

44

12
12.1

Annexes
Projet Dchteries e e

Fig. 36 Interaction entre les dirents frameworks utiliss de lapplication Dch`terie e e e e Le schma 36 montre un exemple dinteraction entre les dirents frameworks utiliss e e e dans lapplication Web du projet Dchterie. Un utilisateur eectue une action sur une e e page JSP (1). La page est lie ` une action Struts 2 grce au chier de conguration e a a strust.xml (2). Laction correspondante fait ensuite appel ` un objet Hibernate (3) a an daccder ` la base de donnes (4). Celle-ci eectue le traitement correspondant (5) e a e et renvoie le rsultat ` la page JSP en eectuant le chemin inverse. e a 12.1.1 Fichier de conguration struts.xml

Le chier struts.xml prsent par la suite est un chier de conguration XML e e dnissant les intercepteurs et les actions ncessaires au fonctionnement de lapplication e e Web. Les intercepteurs permettent aux dirents prols daccder ` des actions en fonce e a tion de leur statut. Les actions sont ensuite congures en fonction des ces intercepteurs. e Pour chaque action est dnit une cha de caract`res comme rsultat et une page JSP e ne e e comme type de rsultats. e

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation// DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- Constants --> <constant name="struts.devMode" value="false"/> <constant name="struts.i18n.encoding" value="UTF-8"/> <constant name="struts.action.extension" value="html"/> <constant name="struts.objectFactory" value="spring"/> <constant name="struts.custom.i18n.resources" value="ApplicationResources,errors"/> <constant name="struts.multipart.maxSize" value="2097152"/> <constant name="struts.ui.theme" value="css_xhtml"/> socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

45

<constant name="struts.codebehind.pathPrefix" value="/WEB-INF/pages/"/> <constant name="struts.enable.SlashesInActionNames" value="true"/> <!-- Configuration for the default package. --> <package name="default" extends="struts-default"> <!-- Dfinition des intercepteurs --> e <interceptors> <!-- Interceptor to handle allowing only admins to certain actions --> <interceptor name="adminOnly" class="adminInterceptor"/> <interceptor name="adminNatOnly" class="adminNatInterceptor"/> <interceptor name="adminLocOnly" class="adminLocInterceptor"/> <interceptor name="needSelectedDecheterie" class="noDecheterieInterceptor"/> [...] </interceptors> <!-- Dfinition des actions --> e <action name="mainMenu"> <result name="success">/jsp/welcome.jsp</result> </action> <action name="choixDecheterieList" class="choixDecheterieAction" method="choixDecheterieList"> <result name="error">/jsp/welcome.jsp</result> <result name="success">/jsp/choixDecheterie.jsp</result> </action> <action name="choixDecheterieChoix" class="choixDecheterieAction" method="choixDecheterieChoix"> <result name="success">/jsp/choixDecheterie.jsp?ok=1</result> </action>

<action name="changePasseEdit" class="changePasseAction" method="form" > <result name="success">/jsp/changePassword.jsp</result> </action> <action name="changePasseSave" class="changePasseAction" method="save" > <result name="success">/jsp/changePassword.jsp</result> <result name="error">/jsp/changePassword.jsp</result> </action> <action name="login"> <result name="success">/jsp/login.jsp</result> socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

46

</action> </package> <package name="donnees" extends="default" namespace="/donnees" > <action name="enlevementList" class="enlevementAction" method="list"> <interceptor-ref name="confDecheterieConsultCheck"/> <result name="success">/jsp/donnees/enlevementList.jsp</result> </action> <action name="enlevementConsult" class="enlevementAction" method="consult"> <interceptor-ref name="confDecheterieConsultCheck"/> <result name="success">/jsp/donnees/enlevementForm.jsp</result> </action> <action name="enlevementEdit" class="enlevementAction" method="edit"> <interceptor-ref name="confDecheterieCheck"/> <result name="success">/jsp/donnees/enlevementForm.jsp</result> </action> <action name="enlevementSave" class="enlevementAction" method="save"> <interceptor-ref name="confDecheterieCheck"/> <result name="success" type="redirect-action"> enlevementList </result> <result name="error">/jsp/donnees/enlevementForm.jsp</result> <result name="input">/jsp/donnees/enlevementForm.jsp</result> </action> <action name="enlevementFiltre" class="enlevementFiltreAction" method="form"> <interceptor-ref name="confDecheterieConsultCheck"/> <result name="success">/jsp/donnees/enlevementFilter.jsp</result> <result name="error">/jsp/donnees/enlevementList.jsp</result> </action>

<action name="enlevementFiltreSave" class="enlevementFiltreAction" method="save"> <interceptor-ref name="confDecheterieConsultCheck"/> <result name="success" type="redirect-action">enlevementList</result> <result name="error">/jsp/donnees/enlevementFilter.jsp</result> </action>

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

47

<!-- Dfinition de laction permettant de lister les visites --> e <action name="visiteList" class="visiteAction" method="list"> <interceptor-ref name="confDecheterieConsultCheck"/> <result name="success">/jsp/donnees/visiteList.jsp</result> </action> <action name="visiteConsult" class="visiteAction" method="consult"> <interceptor-ref name="confDecheterieConsultCheck"/> <result name="success">/jsp/donnees/visiteForm.jsp</result> </action> <action name="visiteEdit" class="visiteAction" method="edit"> <interceptor-ref name="confDecheterieCheck"/> <result name="success">/jsp/donnees/visiteForm.jsp</result> </action> <action name="visiteCreation" class="visiteAction" method="cree"> <interceptor-ref name="confDecheterieCheck"/> <result name="success">/jsp/donnees/visiteForm.jsp</result> </action> <action name="visiteSave" class="visiteAction" method="save"> <interceptor-ref name="confDecheterieCheck"/> <result name="success">/jsp/donnees/visiteForm.jsp</result> <result name="error">/jsp/donnees/visiteForm.jsp</result> </action> <action name="visiteFiltre" class="visiteFiltreAction" method="form"> <interceptor-ref name="confDecheterieConsultCheck"/> <result name="success">/jsp/donnees/visiteFilter.jsp</result> <result name="error">/jsp/donnees/visiteList.jsp</result> </action>

<action name="visiteFiltreSave" class="visiteFiltreAction" method="save"> <interceptor-ref name="confDecheterieConsultCheck"/> <result name="success" type="redirect-action">visiteList</result> <result name="error">/jsp/donnees/visiteFilter.jsp</result> </action> <action name="calendar"> <result name="success">/calendar/calendar.jsp</result> </action> socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

48

</package> [...] </struts>

12.1.2

Page JSP

Le chier visitList.jsp prsent par la suite reprsente la page listant les visites de e e e la dchterie slectionne. Dans cette page est dnit les actions disponibles par lutilisae e e e e teur : consulter, modier, crer et supprimer une visite. Pour chacune de ces actions est e lie une URL particuli`re permettant de raliser les actions dnies dans le chier Vie e e e siteAction.java . La page utilise la librairie Displaytag pour acher la liste des visites dans un tableau. <%@ include file="/common/taglibs.jsp"%> <head> <c:set var="ajouterTexte"> Ajouter une visite </c:set> <c:set var="titre">Liste des visites</c:set> <c:set var="arianeText"> Gestion des donnes &gt; Visites &gt; Liste e </c:set> <c:set var="prefix"> /donnees </c:set> <c:set var="ajouterMethod">cree</c:set> <c:set var="ajouterAction">visiteCreation</c:set> <c:set var="consultAction"> <c:url value=${prefix}/visiteConsult.html?from=list /> </c:set> <c:set var="modifAction"> <c:url value=${prefix}/visiteEdit.html?from=list /> </c:set> <c:set var="creeAction"> <c:url value=${prefix}/visiteCreation.html?from=list /> </c:set> <c:set var="deleteAction"> <c:url value=${prefix}/visiteDel.html?from=list /> </c:set>

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

49

<title><c:out value="${titre}" /></title> <meta name="heading" content="${arianeText}" /> </head> <c:set var="exportPdfLimit">4000</c:set> <c:set var="exportExcelLimit">10000</c:set> <c:set var="exportable"> <c:choose> <c:when test="${size < exportExcelLimit}">true </c:when> <c:otherwise>false</c:otherwise> </c:choose> </c:set> <c:set var="filtreAction"> <c:url value=visiteFiltre /> </c:set> <c:set var="filtreTexte">Changer/Consulter filtre...</c:set> <!-- rcapitulatif du filtre utilis --> e e <c:set var="filtreInfo"> Filtre actuel : <c:choose> <c:when test="${filtre.beginDateF!= or filtre.endDateF!=}"> <c:choose> <c:when test="${filtre.beginDateF!= and filtre.endDateF==}"> ` partir du <c:out value="${filtre.beginDateF}" />. a </c:when> <c:when test="${filtre.beginDateF== and filtre.endDateF!=}"> jusquau <c:out value="${filtre.endDateF}" />. </c:when> <c:otherwise> date comprise entre <br /> le <c:out value="${filtre.beginDateF}" /> et le <c:out value="${filtre.endDateF}" />. </c:otherwise> </c:choose> </c:when> <c:otherwise> aucun critre de date. e </c:otherwise> </c:choose> <br />Consultez le filtre pour plus de dtails. e </c:set> <table> socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

50

<tr> <td width="70%"><s:form method="get" name="filtreVisite" action="${filtreAction}"> <table> <tr> <td><b><c:out value="${filtreInfo}" escapeXml="false" /></b></td> <td width="16px">&nbsp;</td> <td><s:submit key="${filtreTexte}" method="form" cssClass="bouton" align="left" /></td> </tr> </table> </s:form></td> <td><c:if test="${connectedUser.firstRole.name!=ROLE_CONS}"> <s:form method="get" name="visiteList" action="${ajouterAction}"> <li class="buttonBar top"><s:submit key="${ajouterTexte}" method="${ajouterMethod}" cssClass="bouton" align="left" /></li> </s:form> </c:if></td> </tr> </table> <p>Pour visualiser les apports ventuels dune visite, <b>passer e la souris</b> sur les totaux HT/TTC.</p> <!-- tableau des visites avec la librairie Displaytag --> <display:table cellspacing="0" cellpadding="0" requestURI="" decorator="com.webtiss.decheterie.webapp.decorator.VisiteListDecorator" pagesize="100" class="table" export="${exportable}" name="visites" id="visites" sort="list"> <!-- formats exportables --> <display:caption media="[wtxls] [wtpdf]"> <c:out value="${titre}" /> </display:caption> <! dfinition de la colonne Date/Heure --> e <display:column sortable="true" escapeXml="false" title="Date/Heure" media="html"> <c:choose> <c:when test="${ visites.archive == false && connectedUser.firstRole.name!= ROLE_CONS && true==false}"> <a href="#" sort="<c:out value=${visites.dateHeureEn} />" onclick="document.location.href=<c:out value="${modifAction}"/> &id=<c:out value="${visites.pk.id}" /> &serial=<c:out value="${visites.pk.serial}" />"> <c:out value="${visites.dateHeure}" /> </a> </c:when> <c:otherwise> socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

51

<a href="#" sort="<c:out value=${visites.dateHeureEn} />" onclick="document.location.href=<c:out value="${consultAction}"/> &id=<c:out value="${visites.pk.id}" /> &serial=<c:out value="${visites.pk.serial}" />"> <c:out value="${visites.dateHeure}" /> </a> </c:otherwise> </c:choose> </display:column> <display:column media="[wtxls] [wtpdf]" sortable="true" escapeXml="true" property="dateHeure" title="Date/Heure" /> <display:column sortable="true" escapeXml="false" property="agent.nom" title="Agent" /> <display:column sortable="true" escapeXml="false" property="typeVisiteur.nom" title="Type de visiteur" /> <display:column sortable="true" escapeXml="false" property="displayVisiteurId" title="Identifiant visiteur" /> <display:column sortable="true" escapeXml="false" property="visiteur.nom" title="Nom du visiteur" /> <display:column sortable="true" escapeXml="false" property="visiteur.immatriculation" title="Imma triculation" /> <display:column sortable="true" escapeXml="false" property="lieu.nom" title="Commune" /> <display:column sortable="false" escapeXml="false" media="html" property="totalHTApport" title="Total HT" /> <display:column sortable="false" escapeXml="false" media="[wtxls] [wtpdf]" property="totalHT" title="Total HT" /> <display:column sortable="false" escapeXml="false" media="html" property="totalTTCApport" title="Total TTC" /> <display:column sortable="false" escapeXml="false" media="[wtxls] [wtpdf]" property="totalTTC" title="Total TTC" /> <display:setProperty value="${titre}.xls" <display:setProperty value="${titre}.pdf" </display:table> <!-- fonction Javascript permettant dafficher les apports dune visite en passant la souris sur les montants HT et TTC --> socit Webtiss - Thomas COZIEN ee name="export.[wtxls].filename" /> name="export.[wtpdf].filename" />

Rapport de stage - Master ALMA - 2007/2008

52

<script type="text/javascript"> function showApport(divTableId,button) { var logicIdSuffix = divTableId.substring( (ApportsVisite_).length , divTableId.length ); //alert(position[divTableId]); var table = document.getElementById(visites); var divTable = document.getElementById(divTableId); // divTable.parentNode.parentNode est le TR apres lequel il faut insrer e // le TR qui nous interesse var newRow = document.createElement("TR"); newRow.id="INSERTED_" + divTableId ; insertAfter(divTable.parentNode.parentNode.parentNode, newRow , divTable.parentNode.parentNode); // cellule tr... var newCell = newRow.insertCell(0); newCell.colSpan=1; newCell.innerHTML = &nbsp;; newCell = newRow.insertCell(1); newCell.colSpan=10; newCell.innerHTML = divTable.innerHTML ; } function hideApport(divTableId,button) { var logicIdSuffix = divTableId.substring( (ApportsVisite_).length , divTableId.length ); // et supprimer la ligne inseree... var inserted = document.getElementById(INSERTED_ + divTableId ); inserted.parentNode.removeChild(inserted); } </script>

12.1.3

Action Struts2

Le chier VisiteAction.java dnit la classe VisiteAction drivant de la classe e e BaseAction. Cette classe implmente les actions proposes ` lutilisateur sur la page JSP e e a prcdemment prsente. Elle interagit avec direntes classes (VisiteDao, VisiteurDao, e e e e e . . .) qui peuvent accder aux donnes via le framework Hibernate. e e package com.webtiss.decheterie.webapp.action;

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

53

import import import import

java.math.BigDecimal; java.sql.Timestamp; java.util.Date; java.util.List;

import com.opensymphony.xwork2.Preparable; [...] public class VisiteAction extends BaseAction implements Preparable { // classes DAO accdant aux donnes via Hibernate e e private VisiteDao visiteDao ; private VisiteurDao visiteurDao ; private DechetDao dechetDao ; private RegleDao regleDao ; private GenericDao apportDao ; private TypeVisiteurDao typeVisiteurDao ; private LieuDao lieuDao ; private private private private private private private private private List<Utilisateur> agents ; List<TypeVisiteur> typeVisiteurs ; List<Lieu> zones ; List<Dechet> dechets ; List<Visite> visites ; Visite visite ; String visiteId ; String serial ; FiltreVisite filtre ;

// Quelque soit laction utilise, la mthode <<prepare()>> est appele e e e // avant toute chose. // La mthode rcupre les informations prsentes dans lurl envoye e e e e e public void prepare() { if (log.isDebugEnabled()) { log.debug("userManager : " + this.userManager ); log.debug("decheterieManager : " + this.decheterieManager ); log.debug("visiteDao : " + this.visiteDao ); log.debug("visiteurDao : " + this.visiteurDao ); log.debug("typeVisiteurDao : " + this.typeVisiteurDao ); log.debug("lieuDao : " + this.lieuDao ); log.debug("dechetDao : " + this.dechetDao ); log.debug("apportDao : " + this.apportDao ); log.debug("regleDao : " + this.regleDao ); log.debug("Http Parameters :\n " + Misc.getParameterLog(getRequest()) ); socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

54

} visiteId = getRequest().getParameter("id"); if (visiteId==null || visiteId.length()==0) { visiteId = getRequest().getParameter("visite.pk.id"); } serial = getRequest().getParameter("serial"); if (serial==null || serial.length()==0) { serial = getRequest().getParameter("visite.pk.serial"); } if (visiteId!=null && visiteId.length()>0 && serial!=null && serial.length()>0) { log.debug("recuperation de la visite - avant "); this.visite = visiteDao.getVisite(new OperationPK( serial, Integer.parseInt(visiteId)), getSelectedDecheterie()); log.debug("recuperation de la visite - apr`s "); e } if (visite!=null) { // on ne cre le visiteur que si la visite a t cre sur le web e e e ee if (visite.getVisiteur()==null && visite.isCreeeSurWeb() ) { visite.setVisiteur(new Visiteur()); } if (log.isDebugEnabled()) { log.debug("enumeration des apports et de leur proprit visite "); e e for (Apport a : visite.getApports()) { log.debug("apport " + a ); } } } if (log.isDebugEnabled()) log.debug("fin prepare, this.visite = " + this.visite );

filtre = (FiltreVisite)getRequest().getSession().getAttribute( socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

55

Constants.SESSION_FILTRE_VISITE ); if (filtre == null ) { if (log.isDebugEnabled()) log.debug("filtre Visite en session null recration du filtre par dfaut "); e e filtre = new FiltreVisite(); filtre.valeursParDefaut(); getRequest().getSession().setAttribute( Constants.SESSION_FILTRE_VISITE, filtre); } } // Mthode listant les visites en faisant appel ` la classe VisiteDao e a public String list() { if (log.isDebugEnabled()) log.debug("list()"); visites = visiteDao.getVisites(getSelectedDecheterie(), filtre); return SUCCESS ; } public String consult() { if (log.isDebugEnabled()) log.debug("consult()"); setMode(Constants.MODE_CONSULTATION); return SUCCESS ; } public String edit() { if (log.isDebugEnabled()) log.debug("edit()"); setMode(Constants.MODE_EDIT); this.getTypeVisiteurs(); this.getZones(); this.getDechets(); this.getAgents(); return SUCCESS ; } public String cree() { if (log.isDebugEnabled()) log.debug("cree()"); socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

56

setMode(Constants.MODE_CREATION); if (visite==null) visite = new Visite(); visite.setDate( new Timestamp( System.currentTimeMillis())); visite.setDecheterie(getSelectedDecheterie()); return SUCCESS ; } public String save() { if (log.isDebugEnabled()) log.debug("save()"); String date = getRequest().getParameter("visite.date"); if (date!=null && date.length()>0) { try { Date d = DateUtil.convertStringToDate( "dd/MM/yyyy HH:mm",date) ; visite.setDate( new Timestamp( d.getTime() ) ); } catch (Exception x) { this.setError("Mauvais format de date. Le bon format est (dd/MM/yyyy HH:mm)"); return "error" ; } } // agent String agent = getRequest().getParameter("agent"); if (agent!=null && agent.length()>0) visite.setAgent( userManager.getUser(agent) ); // type visiteur String typeVisiteurStr = getRequest().getParameter("typeVisiteur"); if (typeVisiteurStr!=null && typeVisiteurStr.length()>0) visite.setTypeVisiteur( typeVisiteurDao.get( Integer.parseInt(typeVisiteurStr))) ; // zone String zoneStr = getRequest().getParameter("lieu"); if (zoneStr!=null && zoneStr.length()>0) visite.setLieu( lieuDao.get( Integer.parseInt(zoneStr))) ; socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

57

// Le visiteur devient anonyme si il ne porte pas de nom if (visite.getVisiteur()!=null && visite.getVisiteur().getNom()!=null && visite.getVisiteur().getNom().trim().length()==0) { visite.setVisiteur(null); } // on transmet le type de visiteur de la visite au visiteur // vu que ce champs est obligatoire. if (visite.getVisiteur()!=null && visite.getVisiteur().getType()==null) { visite.getVisiteur().setType(visite.getTypeVisiteur()); } if (visite.getVisiteur()!=null) { visiteurDao.sauveSansFlush(visite.getVisiteur(), getSelectedDecheterie()); } if (visite.getApports()!=null && visite.getApports().size()>0) { for (int i=visite.getApports().size()-1; i>-1; i--) { Apport ap = visite.getApports().get(i); feedOrDeleteApports(ap,Integer.toString(i)); } } for (int i=1; i<21; i++) { feedOrDeleteApports(null,"NEW" + Integer.toString(i)); } visite.setDecheterie(getSelectedDecheterie()); ApplicateurRegle.Resultat appR = appliqueRegles(); if (appR == null) { setError("Attention : Un incident technique est advenu lors de lapplication des rgles"); e } else if (appR == ApplicateurRegle.Resultat.AUCUNE_REGLE) { setError("Attention : Il ny a aucune rgle de facturation e sappliquant cette visite"); } socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

58

else if (appR == ApplicateurRegle.Resultat.REGLE_PARTIELLE) { setError("Attention : Certains apports de cette visite ne sont pas couverts par une rgle"); e } visiteDao.sauve(visite); return consult(); } // mthode appliquant les rgles de facturation pour chaque visite e e private ApplicateurRegle.Resultat appliqueRegles() { ApplicateurRegle appliRegle = new ApplicateurRegle(); appliRegle.setVisite(visite); appliRegle.setReglesForfait( regleDao.getReglesForfait( visite.getDecheterie(), visite.getTypeVisiteur())); appliRegle.setReglesFrequenceForfait( regleDao.getReglesFrequenceForfait(visite.getDecheterie(), visite.getTypeVisiteur())); appliRegle.setReglesPrixUnite( regleDao.getReglesPrixUnite( visite.getDecheterie(), visite.getTypeVisiteur())); appliRegle.setReglesPrixPalier( regleDao.getReglesPrixPalier( visite.getDecheterie(), visite.getTypeVisiteur())); ApplicateurRegle.Resultat result = null ; try { result = appliRegle.applique(); } catch (Exception xx) { log.error(xx.getMessage()); xx.printStackTrace(); } return result ; } // getteurs et setteurs public Visite getVisite() { return visite; } public void setVisite(Visite visite) { this.visite = visite; } public List<Visite> getVisites() { return visites; } public void setVisiteDao(VisiteDao visiteDao) { this.visiteDao = visiteDao; socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

59

} public long getSize() { return this.visites==null?0:this.visites.size(); } public List<Utilisateur> getAgents() { if (agents==null) { agents = userManager.getUsersPourRoleEtDecheterie( Constants.ROLE_AGENT, getSelectedDecheterie()); if (visite!=null && visite.getAgent()!=null && ! visite.getAgent().isEnabled()) { agents.add(0,visite.getAgent() ); setErrorReferences("agent"); } } return agents; } public List<TypeVisiteur> getTypeVisiteurs() { if (typeVisiteurs==null) { typeVisiteurs = typeVisiteurDao.getTypeVisiteursPour( getSelectedDecheterie()); if (visite!=null && visite.getTypeVisiteur()!=null && !visite.getTypeVisiteur().isEnabled()) { typeVisiteurs.add(0,visite.getTypeVisiteur() ); setErrorReferences("types de visiteur"); } } return typeVisiteurs; } public List<Lieu> getZones() { if (zones==null) { zones = lieuDao.getLieuxPour(getSelectedDecheterie()); if (visite!=null && visite.getLieu()!=null && !visite.getLieu().isEnabled()) { zones.add(0,visite.getLieu() ); setErrorReferences("communes/zones"); } } return zones; socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

60

} public void setTypeVisiteurDao(TypeVisiteurDao typeVisiteurDao) { this.typeVisiteurDao = typeVisiteurDao; } public void setLieuDao(LieuDao lieuDao) { this.lieuDao = lieuDao; } public void setVisiteurDao(VisiteurDao visiteurDao) { this.visiteurDao = visiteurDao; } public List<Dechet> getDechets() { if (dechets==null) { dechets = dechetDao.getDechetsPour(getSelectedDecheterie()); if (visite!=null && visite.getApports()!=null && visite.getApports().size()>0) { boolean oldDechetExists = false ; for (Apport a : visite.getApports()) { if (a.getDechet()!=null && !a.getDechet().isEnabled()) { oldDechetExists = true ; if (!dechets.contains(a.getDechet())) dechets.add(0,a.getDechet()); } } if (oldDechetExists) { setErrorReferences("dchets"); e } } } return dechets; } public void setDechetDao(DechetDao dechetDao) { this.dechetDao = dechetDao; } public void setApportDao(GenericDao apportDao) { this.apportDao = apportDao; }

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

61

public FiltreVisite getFiltre() { return filtre; } public void setFiltre(FiltreVisite filtre) { this.filtre = filtre; } public void setRegleDao(RegleDao regleDao) { this.regleDao = regleDao; } }

12.1.4

Hibernate

Le chier VisiteDaoHibernate.java dnit la classe VisiteDaoHibernate. Cette e classe permet daccder aux objets stockes dans la base de donnes grce au framework e e e a Hibernate. package com.webtiss.decheterie.dao.hibernate; public class VisiteDaoHibernate extends GenericDaoHibernate <Visite,OperationPK> implements VisiteDao { public VisiteDaoHibernate() { super(Visite.class); } private static HashMap<String,OperationPK> clefsInsertion = new HashMap<String,OperationPK>(); private static String reservedSerial = "WEBCREATED"; // genere une cle ngative pour chaque insertion e private synchronized OperationPK getClefsInsertion(String entity) { OperationPK clef = clefsInsertion.get(entity); if (clef == null) { String query = "select min(x.pk.id)-1 from " + entity + " x " ; List<Integer> result = this.getHibernateTemplate().find( query/*,reservedSerial*/); int cl ; if (result == null || result.size() == 0 || result.get(0) == null) { cl = -1; log.debug("getClefsInsertion : resultat requete select min => null "); } else { socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

62

Integer increment = (Integer) result.get(0); cl = (int) increment.longValue() ; log.debug("getClefsInsertion : resultat select min = " + cl ); if (cl>=0) cl=-1; } clef = new OperationPK(reservedSerial, new Integer( cl)); } else // decrementation { clef = new OperationPK(clef.getSerial(), new Integer(clef.getId() .intValue() - 1)); } // dans tout les cas on met jour clefsInsertion.put(entity, clef); log.debug("getClefsInsertion(" + entity + ") result = " + clef); return clef; } // enregistre une visite dans la base de donnes e public Visite sauve(Visite visite) { // gnration dune clef pour la visite si besoin e e if (visite.getPk()==null || visite.getPk().isNotInsertable()) { visite.setPk( getClefsInsertion("Visite") ) ; } //log.debug("sauvegarde visite. valeur clef : " + visite.getPk()); // gnration dune clef pour chacun des apports qui en a besoin e e OperationPK precedenteClef = null ; for (Apport ap : visite.getApports() ) { //log.debug("save visite : apport found : " + ap ); if (ap.getPk()==null) { //log.debug("creation dune pk pour Apport "); precedenteClef = getClefsInsertion("Apport") ; //log.debug("affectation dune pk " + precedenteClef ); ap.setPk( precedenteClef ); // si la visite existe, on rcup`re son serial e e // plutot que de prendre if (visite!=null && visite.getPk()!=null) { socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

63

ap.getPk().setSerial(visite.getPk().getSerial()); } } ap.setVisite(visite); } log.debug("sauvegarde visite - saveOrUpdate avant"); this.getHibernateTemplate().saveOrUpdate(visite); log.debug("sauvegarde visite - saveOrUpdate apres, avant this.getHibernateTemplate().flush(); log.debug("sauvegarde visite - saveOrUpdate apres, apres return visite ; }

flush "); flush ");

// retourne la liste des visites private List getVisitesOrVisiteurDistinct( boolean visites, Decheterie decheterie, Timestamp borneGauche, Timestamp borneDroite, String visiteur, List<String> typeVisiteurNoms, List<String> lieuNoms, List<String> dechetNoms, String agentNom, String visiteurId, boolean nomContientValeurSaisie) { String select = visites? "select v from Visite v " : "select distinct vi from Visite v " ; String jointures = "left join v.decheterie d "; String clause = "where d.id = ? "; String orderBy = "order by v.date desc "; // 1ere phase : calcul du nombre de parametres // initialement au moins lidentifiant de dch`terie. e e int nbParams = 1; if (borneGauche!=null) nbParams++; if (borneDroite!=null) nbParams++; if (lieuNoms!=null) nbParams+= lieuNoms.size(); if (typeVisiteurNoms!=null) nbParams+= typeVisiteurNoms.size(); if (dechetNoms!=null) nbParams+= dechetNoms.size(); if (agentNom!=null) nbParams++; Object [] values = new Object[nbParams]; // 2eme phase, parcours des conditions pour construire // le corps de la requete socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

64

int index = 0; values[index++] = decheterie.getId(); if (borneGauche!=null) { clause += "and v.date >= ? " ; values[index++] = borneGauche; } if (borneDroite!=null) { clause += "and v.date <= ? " ; values[index++] = borneDroite; } if ( (visiteur!=null && visiteur.length()>0) || (visiteurId!=null && visiteurId.length()>0) || (!visites)) { jointures += "left join v.visiteur vi "; } if ( (visiteur!=null && visiteur.length()>0)) { clause += "and upper(vi.nom) like upper(" + (nomContientValeurSaisie?"%":"") + visiteur + "%) " ; } if (lieuNoms!=null && lieuNoms.size()>0) { jointures += "left join v.lieu l "; clause += "and upper(l.nom) in ("; for (int i=0; i<lieuNoms.size(); i++) { clause += ( i==lieuNoms.size()-1? "?" : "?,") ; values[index++] = lieuNoms.get(i).toUpperCase(); } clause +=") "; } if (typeVisiteurNoms!=null && typeVisiteurNoms.size()>0) { jointures += "left join v.typeVisiteur tv "; clause += "and upper(tv.nom) in ("; for (int i=0; i<typeVisiteurNoms.size(); i++) { clause += ( i==typeVisiteurNoms.size()-1? "?" : "?,") ; values[index++] = typeVisiteurNoms.get(i).toUpperCase(); } socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

65

clause +=") "; } if (dechetNoms!=null && dechetNoms.size()>0) { jointures +="left join v.apports ap " ; jointures +="left join ap.dechet dec "; clause += "and upper(dec.nom) in ("; for (int i=0; i<dechetNoms.size(); i++) { clause += ( i==dechetNoms.size()-1? "?" : "?,") ; values[index++] = dechetNoms.get(i).toUpperCase(); } clause +=") "; } if (agentNom!=null && agentNom.length()>0) { jointures +="left join v.agent ag "; clause += "and upper(ag.nom) = upper(?) "; values[index++] = agentNom.toUpperCase(); } if ( (visiteurId!=null && visiteurId.length()>0)) { clause += "and upper(vi.pk.id) like upper(%" + visiteurId + "%) " ; } String query = select + jointures + clause + (visites? orderBy : "") ; if (log.isDebugEnabled()) { log.debug("statement : " + query ); String debugValues = "values : ("; for (int k=0; k<values.length; k++) { debugValues +="[" + values[k].toString() + "]"; if (k!=values.length-1) debugValues+=","; } debugValues+=")"; log.debug(debugValues); } // 3eme phase. Execution de la requte. I List liste = this.getHibernateTemplate().find(query, values); return liste; }

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

66

// retourne une visite en fonction de sa cl primaire et de la dch`terie e e e public Visite getVisite(OperationPK clef, Decheterie decheterie) { String query = "select v from Visite v where v.decheterie.id = ? and v.pk.id= ? and v.pk.serial = ? "; List<Visite> liste = this.getHibernateTemplate().find( query, new Object[] { decheterie.getId(), clef.getId(), clef.getSerial() } ) ; if (liste!=null && !liste.isEmpty()) return liste.get(0); else return null ; } }

12.1.5

IHM de lapplication TP

Les schmas suivants reprsentent lIHM de lapplication TP du projet Dchterie. e e e e

Fig. 37 Fentre de connexion de lapplication TP e Le schma 37 montre la connexion ` lapplication TP. Lagent de la dchterie pour e a e e laquelle le terminal est congur entre son identiant ainsi que son mot de passe. Ces e deux valeurs ont t prcdemment enregistres avec lapplication Web. Lagent peut enee e e e suite valider les informations et ainsi accder ` lapplication ou synchroniser les donnes e a e enregistres avec le serveur central en appuyant sur le bouton Transfert . e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

67

Fig. 38 Fentre denregistrement dune visite de lapplication TP e Le schma 38 montre lenregistrement dune visite dun client de la dchterie. Lagent e e e en charge entre lidentiant du client ainsi que son type et la commune auquel il appartient.

Fig. 39 Fentre denregistrement des apports de lapplication TP e Aprs avoir valid les informations sur le client, lagent accde ` la fentre 39. Lagent e e e a e choisi ensuite les apports du client en cliquant sur le pictogramme correspondant et en entrant la quantit apporte. Lagent valide ensuite an dimprimer un ticket de visite et e e socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

68

denregistrer la visite.

12.2

Projet LogACS

Latlier gnie logiciel Windev et son langage W-langage ne sont pas les outils les e e plus rpandus. Ainsi, les exemples suivants prsenteront deux procdures Windev. Le e e e premier exemple montre linterrogation de la base de donnes embarque Hyper File e e de lapplication LogACS. Le second exemple prsente lenvoi dun SMS avec le langage e W-Langage. 12.2.1 Requte Windev e

Le W-Langage est un langage procdural. Toutes les instructions sont en franais et e c il ny a quune seule instruction par ligne. De plus Windev fournit direntes fonctions e permettant lacc`s ` la base de donnes HyperFile. Ces fonctions commencent toutes par e a e la lettre H (Hyper File). Lexemple suivant montre lutilisation dune requte SQL et e lachage des informations recupres avec le W-Langage. ee // Syntaxe : // afficheCommune () // Affiche les communes de la table TP_COM_EMPLACT dans un tableau // Param`tres : e // Auncun // Valeur de retour : // Aucune // Exemple : // // PROCEDURE afficheCommune() sdReq est une Source de Donnes e bInitReq est un boolen e // execution de la requ^te SQL e bInitReq = HExcuteRequ^teSQL(sdReq,hRequ^teInterruptible,... e e e "SELECT ID_COM as id_com, ID_LIB AS com_lib, EMPLACT_ID as emplact_id, EMPLACT_LIB as emplact_lib FROM TP_COM_EMPLACT ORDER BY ID_COM") // On supprime toutes les donnes du tableau e TableSupprimeTout(FEN_Principale.TABLE_COM_EMPLACT) SI bInitReq ALORS // on lit le rsultat de la requ^te e e possuivant est un boolen = HLitPremier(sdReq) e TANTQUE possuivant // on ajoute les donnes lues dans le tableau e TableAjoute(FEN_Principale. TABLE_COM_EMPLACT,... sdReq. id_com +TAB+sdReq. com_lib +TAB+... sdReq.emplact_id+TAB+sdReq.emplact_lib) socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

69

possuivant = HLitSuivant(sdReq) FIN HFerme(sdReq) SINON Erreur(HErreurInfo(errComplet)) FIN

12.2.2

Envoi dun SMS

Windev Mobile fournit de nombreuses primitives utiles pour lenvoi de SMS par exemple. Lexemple suivant montre lutilisation de quelques une de ces fonctions. // Rsum : <indiquez ici ce que fait la procdure> e e e // Syntaxe : //[ <Rsultat> = ] EnvoieSms (<sMessage> est cha^ne) e // // Param`tres : e // sMessage (cha^ne) : message textuel ` envoyer a // Valeur de retour : // boolen : // Vrai si lenvoi du SMS sest bien droul e e e // // Exemple : // Indiquez ici un exemple dutilisation. // PROCEDURE EnvoieSms(sMessage est une cha^ne) // Enregistrement du message, numro de tlphone et du nombre dessai e e e SMSRAZ() SMS.Message=sMessage SMS.Essai=1 SMS.Numro=gsPARAM_NUMSPG e // Permet en mode test denvoyer un SMS sur un tlphone e e // ( numro 06 xx xx xx ) e SI Taille(gsPARAM_NUMSPG)=10 ALORS SMS.TypeNumro = smsNumroInternational e e SINON SMS.TypeNumro = smsNumroNational e e FIN // envoi du SMS bResEnvoi est un boolen = SMSEnvoie() e SI bResEnvoi=Faux ALORS Erreur("Echec lors de lenvoi du SMS: RENVOYER Faux SINON Info("SMS envoy") e

absence de couverture rseau"); e

socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

70

RENVOYER Vrai FIN

12.3

Projet Camion

Lapplication Camion est elle-aussi dveloppe en Windev Mobile. Un exemple de e e procdure montre lutilisation dautres primitives W-Langage permettant lac`s au chier. e e 12.3.1 Lecture de chiers texte

La procdure suivante permet de lire un chier texte pass en param`tre et den e e e e extraire les informations an de remplir la table TP PLANING de la base de donnes Hyper File de lapplication Camion. // Syntaxe : //[ <Rsultat> = ] lectureFichier (<Chemin> est cha^ne, e // <NomFichier> est cha^ne) // lit le fichier inclut dans le rpertoire donn puis efface le fichier e e // Param`tres : e // Chemin (cha^ne) : chemin de fichier // NomFichier (cha^ne) :nom du fichier // Valeur de retour : // boolen : Vrai si la lecture et linsertion des donnes e e // se sont bien passes e // Exemple : // Indiquez ici un exemple dutilisation. // PROCEDURE lectureFichier (Chemin est une cha^ne, NomFichier est une cha^ne) // Lecture des fichiers SMS // ajout dans la table planning dateFichier est une DateHeure = Milieu(NomFichier,5) nIdSMS est un entier sLigne est une cha^ne nPos est un entier // ouverture du fichier nIdSMS = fOuvre(Chemin+NomFichier,foLecture) SI nIdSMS <> -1 ALORS sLigne = fLitLigne(nIdSMS) nPos = Cha^neOccurrence(sLigne,";") SI nPos <> 9 ALORS Erreur(ErreurInfo(errComplet)) RENVOYER Faux SINON socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

71

// On recupere les champs entre le sparateur ";" e codeGrue est une cha^ne = ExtraitCha^ne(sLigne,2,";") dateProgramme est une cha^ne = ExtraitCha^ne(sLigne,3,";") numroOrdre est une cha^ne = ExtraitCha^ne(sLigne,4,";") e numroSilo est une cha^ne = ExtraitCha^ne(sLigne,5,";") e GPSLong est une cha^ne = ExtraitCha^ne(sLigne,6,";") GPSLat est une cha^ne = ExtraitCha^ne(sLigne,7,";") libCommune est une cha^ne = ExtraitCha^ne(sLigne,8,";") lieuDitAS est une cha^ne = ExtraitCha^ne(sLigne,9,";") commentaire est une cha^ne = ExtraitCha^ne(sLigne,10,";") clCompose est une cha^ne = codeGrue+dateProgramme+numroOrdre e e e // verification des tailles des informations reues c SI Taille(codeGrue) > 4 OU Taille(dateProgramme) > 8 OU Taille(numroOrdre) > 2 ... e OU Taille(numroSilo) > 8 OU Taille(GPSLong) > 9 OU e Taille(GPSLat) > 9 ... OU Taille(libCommune) > 25 OU Taille(lieuDitAS) > 40 OU Taille(commentaire) > 40 ... ALORS // le SMS nest pas valide Info("Un sms non valide a t reu. Ce sms ne sera pas trait.") e e c e SINON // on ajoute les champs dans la table TP_PLANING HLitRecherchePremier(TP_PLANING, ID_GRUEDATE_PROGNUM_ORDRE,clCompose) e e SI HTrouve(TP_PLANING) ALORS // modification des informations dans la table TP_PLANING TP_PLANING.NUM_SILO = numroSilo e TP_PLANING.LONGITUDE = GPSLong TP_PLANING.LATITUDE = GPSLat TP_PLANING.COMMUNE = libCommune TP_PLANING.LIEU_DIT = lieuDitAS TP_PLANING.COMMENTAIRE = commentaire HModifie(TP_PLANING) SINON // insertion dans la table TP_PLANING des informations // contenues dans le SMS TP_PLANING.ID_GRUE = codeGrue TP_PLANING.DATE_PROG = dateProgramme TP_PLANING.NUM_ORDRE = numroOrdre e TP_PLANING.NUM_SILO = numroSilo e TP_PLANING.LONGITUDE = GPSLong TP_PLANING.LATITUDE = GPSLat TP_PLANING.COMMUNE = libCommune TP_PLANING.LIEU_DIT = lieuDitAS TP_PLANING.COMMENTAIRE = commentaire socit Webtiss - Thomas COZIEN ee

Rapport de stage - Master ALMA - 2007/2008

72

resAjoute est un boolen = HAjoute(TP_PLANING) e SI resAjoute = 0 ALORS RENVOYER Faux FIN HFerme(TP_PLANING) FIN FIN FIN // fermeture du fichier fFerme(nIdSMS) FIN // une fois toutes les informations rcupres, on peut e e e // effacer le fichier fSupprime(Chemin+NomFichier) RENVOYER Vrai

socit Webtiss - Thomas COZIEN ee

Vous aimerez peut-être aussi