Vous êtes sur la page 1sur 13

Cahier des charges

Donnes du client : Mise en place de linterface avec le GPS. Spcifications extrapoles de ces donnes : - Mise en place dun serveur applicatif de traitement des donnes. - Mise en place dune base de donnes afin davoir un historique des points de passage, des vitesses, des altitudes et des directions. - Interfaage via GPRS entre le module GPS et le server TCP avec possibilit dune communication bidirectionnelle. - Mise en place dun systme de traitement unifi des donnes indpendant du modle du module GPS. - Dveloppement et publication dun service web. - Dveloppement dun client lourd avec authentification. Services fournir : - Disponibilit du service web. - Historique infini des points. - Client lourd : trac des itinraires, acquisition de la vitesse maximale, acquisition du dernier point, poursuite en temps rel dun module. Architecture propose :

Module GPS GPRS Module GPS

Internet

TCP Serveur applicatif VB.Net

Client

Internet
Client Base de donnes SQL Server 2005 Service Web Java

Site web exploitant le service web

Architecture valide par le client. Planning prvisionnel : - Etude : deadline le 15 dcembre 2007. - Dveloppement de la partie applicative : deadline le 11 janvier 2008. - Dveloppement du service web avec le client lourd : deadline le 18 janvier 2008. - Passage en qualit : 19 au 21 janvier 2008. - Recette : le 22 janvier 2008. - Livraison en production : prvue le 24 janvier 2008.

Diagramme UML type Use case :


Authentificate uses uses Pushes data uses uses uses uses uses uses Module GPS Hand Shaking GeoTracker Three-tiers Server Get Last Position uses GeoTracker Client Get All positions uses uses uses

Real Time Tracking

Cahier de dveloppement
Dveloppement du serveur applicatif
Etude
Aprs documentation sur Internet ainsi quune prise de contact directe avec la socit Nomadic, nous avons obtenu les manuels de protocole de communication des deux types de modules GPS en notre possession. Suite cette recherche bibliographique, nous avons pu entamer ltude proprement parler de la structure du serveur applicatif. Lensemble du dveloppement sest fait sous : - Windows XP SP2 ou Windows Vista - Microsoft Visual Basic 2005 ou Visual Basic Enterprise Studio.Net - Eclipse Europa - Base de donnes MS SQL Server 2005 Express Edition Nous avons opt pour programmer le serveur applicatif en Visual basic .Net, il se compose dune fentre principale dadministration contenant entre autres la trace dexcution des commandes envoyes et reues des modules GPS. Ensuite, le traitement des diffrentes connexions aux modules GPS se fait de manire multi-threade : pour chaque client dont la connexion est accepte, lapplication cre un nouveau thread. Nous avons galement dcid de crer une classe spcifique pour stocker toutes les donnes dun point GPS (ID, date, longitude, latitude, vitesse, cap, altitude, nombre de satellites) et les formater correctement. En ce qui concerne le webservice, nous avons opt pour la programmation en Java. Les mthodes de base taient la rcupration dun log de positions entre deux dates avec un nombre maximum de rsultats, la rcupration de la dernire position.

Dveloppement Diagramme de classe du serveur applicatif

Descriptif des classes


frmServer La Windows Form principale, il sagit de la fentre principale o se trouvent les commandes de contrle du serveur ainsi que la zone de texte o se trouve le log.

Cette classe est utilise pour : - Lancer le serveur - Envoyer des commandes aux modules GPS - Configurer lIP du serveur - Grer les paramtres de connexion la base de donnes Ses mthodes sont principalement lies aux actions sur les contrles, le traitement est effectu par la classe clsServer. clsServer Cest cette classe qui traite activement avec les clients GPS ainsi que la base de donnes. Elle contient une collection de clients. Elle remonte galement une srie dvnements (signaux au sens systme) la form principale pour notamment afficher des messages de log. clsAbstractClient Cette classe abstraite regroupe tous les types de clients au sens GPS, quel que soit le module qui tente de se connecter. Cette classe doit tre hrite, on ne peut lutiliser en tant que telle. clsIntellitracX1 et clsN100 Classes drives de clsAbstractClient, elles sont spcifiques au type de module GPS qui se connecte. Pour utiliser un nouveau boitier, le dveloppeur devra crer une nouvelle classe clsDEVICE qui hrite de clsAbstractClient.

Dtail du fonctionnement du serveur applicatif


Le dmarrage du server et la connexion dun client Lors du chargement de la fentre principale, le serveur va chercher en base de registre Windows les dernires donnes entres dans les champs IP et port afin de ne pas avoir retaper ces informations chaque dmarrage. De plus, le serveur nest pas dmarr et ncoute pas sur le port au chargement, il faut le lancer avec le bouton Run . Ds lors, on lance une instance de la classe clsServer dans un thread diffrent. Les deux threads communiquent laide dvnements VB. Cette form devient totalement passive une fois la classe serveur lance. La classe server va alors se connecter la base SQL (dans notre cas, une base MS SQL Server 2005 Express Edition). Par dfaut, la base SQL est locale, mais il est tout fait possible dutiliser une base distante en paramtrant diffremment le connection string . Le mode dauthentification SQL est mixte dans notre cas, mais une authentification NT est galement possible. Un vnement DBConnectionState remonte la form ltat de cette connexion SQL afin dafficher un message derreur en cas de tentative de connexion infructueuse. Maintenant, le server est en coute sur le port TCP spcifi et attend quun client tente de se connecter. Lorsquun client tente de se connecter, il envoie un message de synchronisation puis attend que le serveur lui renvoie le mme. Au niveau server, le message de synchronisation reu est dcoup en plusieurs string significatives : on peut alors connatre le type de module qui se connecte ainsi que son ID. Plusieurs cas peuvent se prsenter alors : - Le type est inconnu ou lID est dj connecte : le client est refus ou mis jour dans le cas dune reconnexion. - Le client nest pas encore connect et il est du bon type : le server renvoie le message de synchronisation afin de signifier que la connexion est accepte. Un vnement signifie la form que le client est accept. La classe clsServer cre une instance dans sa collection de clsAbstractClients, avec le bon type de module (Intellitrac ou NS100) selon le type fourni par le message de synchronisation. Le serveur est configur afin que toutes les X secondes (dlai dterminer par lutilisateur), il demande une position tous les modules via une commande GetPosition. La rponse est ensuite traite et formate dans un objet PositionLog puis est entre en base de donnes. Les classes client Les classes client drives de clsAbstractClient contiennent des mthodes permettant de rcuprer la dernire position, une mthode pour la boucle de lecture invoque par le server. Le client contient en attribut une liste de commandes disponibles selon son type de module, son mot de passe daccs.

Lobjet PositionLog Cest un objet sans mthodes, uniquement pourvu de proprits. Il a t cr afin de nous assurer que les informations retournes par le module GPS, une string, soient bien recoupes et changes dans le bon format avant lentre en base de donnes. Cet objet nous sert aussi lorsque nous extrayons des donnes depuis la base de donnes. La base de donnes Notre base de donnes est une base de donnes Microsoft SQL Server 2005 Express Edition. Cette dition a simplement une limite de taille de DB de 4Go et ne possde pas doutils dadministration avancs. Nous fonctionnons avec une instance nomme localhost\SQLExpress, en authentification mixte. Elle contient pour le moment une table contenant les diffrentes entres de lhistorique de positions ; les colonnes sont ID (varchar), Date (date), Longitude (float), Latitude (float), Speed (float), Heading (float), NbSatellites (int). Quel que soit le type de module, le format des informations remontes est sensiblement le mme, ce qui nous a simplifi la tche.

Attention : le format de donnes date est trs diffrent selon que lon soit dans une base SQL ou dans un langage de programmation ou sur un service web.

Le client
Authentifiaction Web service Zone de configuration de lacqusition Acquisition de Acquisition de vitesse maximale la dernire position Mode traque

Acquisition de toutes les positions

Historique de positions

Boutons de navigation

Sur la partie droite de la form, on retrouve une fentre web dans laquelle est affiche la carte correspondant aux rsultats avec un itinraire trac si on ne slectionne aucun lment. Contrle gnral de laccs au service web : La zone dauthentification nous permet davoir lidentifiant et le mot de passe de lutilisateur disponible en permanence pour les renvoyer au service chacun de nos appels. Les envois de requtes au service web sont en gnral dans un try-catch afin de ne pas planter le client si jamais nous perdons la connexion ou si lauthentification est mauvaise. Nous avons en cas derreur, un pop-up avec le texte de lexception leve et le genre derreur. Configuration de lacquisition Le menu droulant des ID est dynamique et rcupre la liste des ID disponibles auprs du webservice en temps rel chaque fois que lutilisateur clique dessus. Lorsque lutilisateur slectionne une ID, une requte selon les critres actifs ce moment l est automatiquement effectue. Si aucune ID nest entre et/ou slectionne, une pop-up interrompt le traitement et demande quune ID soit choisie. Le nombre de points est plafonn 100 par dfaut sur le contrle car sinon lurl passe dans le calcul de la carte trace est trop longue (plus de 2083 caractres) et ne se rsout pas. Par dfaut, la date maximale est la date du jour et la date minimale est la date une semaine avant le jour courant (fonction addDate(int) en VB)

Historique de positions : Contrle de type ListView en vue dtails . Pour chacun des rsultats renvoys par une requte, on ajoute un nouvel objet dans la listview. Lorsque lon clique sur un lment, il est slectionn et mis en surbrillance. Cette action de cliquer dclenche un handle qui rafraichit la fentre web pour centrer la carte sur lunique point slectionn. Boutons de navigation : Ils permettent lorsque la requte renvoie plus de rsultats que le nombre demand, de naviguer entre plusieurs pages de rsultats grce la variable iteration retroune au service web. Si lon se trouve dj la premire page, un handle rend le bouton previous inaccessible. Boutons Get Max Speed et Get Last Position : ils font appel aux fonctions ponymes au niveau du webservice, avec comme ID, celle slectionne dans le menu droulant. Mode traque : Ce mode permet le trac en temps rel du suivi dun module. Au moment o lon coche le bouton, la listview de rsultats est vide. Lorsque le bouton est coch, chaque tick du timer, un GetLastPosition est fait et son rsultat ajout la listview des rsultats sans remise zro. Le timer utilis est un timer prconfigur avec ses handles dans VB.Net, avec par dfaut un temps de 2s.

Le Web Service GeoTracker

Etude
Afin de pimenter un peu ce projet, nous avons dcid de raliser ce web service laide dEclipse Europa, de Tomcat et dAxis2 dans le but de dcouvrir Java. Pour cela, nous avons rcupr le JDBC Sql Server pour Java et Axis2 utilis pour gnrer le web service laide de classes Java.

Cette partie t conue pour permettre au client final daccder des informations pertinentes sur les vhicules surveills. Les mthodes actuellement consommables sont : GetIds : Retourne lidentification de tous les boitiers GetLastPosition(id) : Retourne la dernire position occupe dun boitier GetPositions(id, date min, date max, iterations, max results) : Retourne un tableau de positions. Cette fonction est la principale et permet de rcuprer des trajets effectus par les vhicules. Nous devons pour cela indiquer la date de dbut et de fin que nous souhaitons consulter, lidentifiant du boitier, litration puis le nombre maximal de rsultats. Litration est utilise pour parcourir les rsultats si le nombre de positions retournes est suprieur au nombre maximal de rsultats. GetMaxSpeed(id, date min, date max) : Renvoie la vitesse maximale atteinte par le boitier dans lintervalle dates spcifis. Pour chaque appel, le client doit fournir un login et un mot de passe utilisateur afin de limiter laccs au web service de lextrieur.

Evolutions sont envisages


Renseignements sur ltat actuel du vhicule (Moteur en marche etc.) laide des entres accessibles par le Boitier Intellitrac X1 Activer des feux de signalisations, le Klaxon voire mme arrter le moteur en utilisant des sorties du boitier Intellitrac X1 Accder des mthodes dadministration pour la reconfiguration des boitiers De mme pour reconfigurer le Server TCP

Dveloppement Diagramme de classe du Web Service

La structure du Web Service est relativement simple. GeoTracker.java Classe principale du Web Service, cest partir de celle-ci que le web service t gnr. Ce sont les mthodes publiques qui sont exposes par le Web Service. Les variables membres et les mthodes prives sont utilises pour son fonctionnement interne. Voici les fonctions du Web Service publiques (en java):
public PositionLog GetLastPosition(String userName, String Password, long trackerId) public PositionLog[] GetPositions(String userName, String Password, int trackerID, Date minDate, Date maxDate, int maxResponse, int iteration, boolean OnlyMovingPositions) public SpeedLog GetMaxSpeed(String userName, String password, int trackerID, Date minDate, Date maxDate) public int[] GetIds(String userName, String password)

Le nom choisi pour les fonctions est le plus explicite possible. Pour cela, il nest pas ncessaire dexpliquer leurs fonctions dans le dtail.

SqlConnection.java Cette classe est une surcouche aux fonctions du JDBC Sql Server utilise pour simplifier les appels des fonctions de connexion. De ce fait, la connexion au server SQL seffectue de manire extrmement simple. SpeedLog.java Cette classe est en ralit un conteneur destin renvoyer un lment de type complexe (au sens XML) lors de lappel de la fonction GetMaxSpeed. Il est trs important de noter que chaque conteneur destin tre renvoy travers le Web Service doit possder des mthodes bien formates de type getX et setX (X tant le nom de la variable membre). Dans le cas contraire, le fichier WSDL ne contiendra pas les informations ncessaires pour rcuprer les donnes dans llment renvoy. PositionLog.java Cette classe joue le mme rle que SpeedLog, mais pour les informations de positions. Elle est donc une classe conteneur destine tre renvoye par le Web Service. En effet, lors de lappel de la fonction GetLastPosition, le Web Service renvoie un Objet PositionLog contenant les informations recherches.