Rapport de stage
Entreprise SIGMA du 15 mars au 27 août
Intitulé : Développer un logiciel de gestion d’affaire …
Kévin DE BOCK
26/08/2010
Master Informatique Technologies nouvelles des systèmes
d’information et décisionnels
Tuteur entreprise : Franck VAN DEN MEERSSCHAUT
Tuteur universitaire : S. PIECHOWIAK
Stage Sigma 26/08/2010
Sommaire
1. Remerciements........................................................................................3
2. Introduction...............................................................................................4
3. L’entreprise...............................................................................................5
3.1. La société Sigma................................................................................5
3.2. Organigramme de la société :............................................................6
3.3. Activités de l’entreprise :....................................................................6
4. Le projet....................................................................................................7
4.1. Nature et objectifs du projet...............................................................7
4.1.1. En quoi consiste le projet ?...................................................................7
4.1.2. Analyse de l’existant..............................................................................7
4.1.3. Dans quel but a t-il été réalisé ?............................................................8
4.2. Choix des outils nécessaires à la réalisation de ce projet..................8
4.2.1. L’architecture utilisée.............................................................................9
4.2.2. Le serveur d’application.......................................................................11
4.2.3. La base de données :..........................................................................12
4.2.4. La couche présentation.......................................................................12
4.3. L’application « GesCom² »...............................................................16
4.3.1. Introduction..........................................................................................16
4.3.2. Les fonctionnalités...............................................................................17
4.3.3. La base de données............................................................................20
4.3.3.1. Introduction...................................................................................20
4.3.3.2. Le logiciel PowerAMC..................................................................20
4.3.3.3. Explication de la base de données GesCom²..............................21
4.3.4. Le middleware “ADO.Net Data Services”............................................30
4.3.4.1. Introduction à ADO.Net Data Services.........................................30
1
Stage Sigma 26/08/2010
4.3.4.2. Infrastructure d’accès aux données.............................................31
4.3.4.3. Les technologies utilisées par ADO .NET Data Services.............32
4.3.4.4. L’architecture REST.....................................................................33
4.3.4.5. Le cas du projet............................................................................34
4.3.5. L’application.........................................................................................35
4.3.5.1. Structure de base.........................................................................35
4.3.5.2. Les interfaces graphiques de l’application...................................36
4.3.5.3. Le système d’impression..............................................................48
4.3.5.4. Le stockage de fichier sur le serveur...........................................49
4.3.6. Le déploiement....................................................................................50
4.4. La migration des données................................................................52
4.4.1. Introduction :........................................................................................52
4.4.2. L’interface graphique...........................................................................52
5. Difficultés rencontrées et solutions apportées........................................54
5.1. La migration des données................................................................54
5.2. Le serveur ADO.net data services...................................................54
6. Conclusion..............................................................................................55
7. Bibliographie...........................................................................................57
8. Annexes..................................................................................................58
2
Stage Sigma 26/08/2010
1. REMERCIEMENTS
Je tiens à remercier, dans un premier temps, Monsieur WATTREMEZ Jean-Marie,
PDG du groupe Sigma, pour son accueil et la confiance qu’il m’a accordé dès mon
arrivée dans l’entreprise.
Je tiens également à remercier monsieur Franck VAN DEN MEERSSCHAUT,
responsable informatique et mon tuteur, pour m’avoir intégrer rapidement au sein
de l’entreprise et m’avoir accordé toute sa confiance ; pour le temps qu’il m’a
consacré tout au long de cette période.
Je tiens à remercier tout particulièrement et à témoigner toute ma reconnaissance
aux personnes suivantes, pour l’expérience qu’ils m’ont apporté durant ces six
mois de stage :
Monsieur MOURONVAL Stéphane, DUCROQUET Sébastien et DELBECQUE
Christian, développeur informatique, pour leur aide durant le développement du
projet.
L’ensemble du personnel de Sigma pour leur accueil sympathique et leur
coopération professionnelle tout au long de ces six mois.
3
Stage Sigma 26/08/2010
2. INTRODUCTION
Dans le cadre de mon Master Informatique Technologies nouvelles des systèmes
d’information et décisionnels, un stage de 5 à 6 mois est programmé. Celui-ci s’est
déroulé pour moi au sein de l’entreprise SIGMA du 15 mars 2010 au 26 aout
2010.
J’ai été affecté au service informatique en tant que « développeur d’application »
avec comme objectif la réalisation d’un logiciel de gestion d’affaire.
Dans un premier temps, je vous présenterai brièvement l’entreprise.
Ensuite, j’aborderai le projet, avec la nature et son objectif, ainsi que les différents
outils utilisés et également l’application réalisée.
Enfin, je terminerai par les difficultés rencontrées et les solutions apportées ainsi
qu’une conclusion.
4
Stage Sigma 26/08/2010
3. L’ENTREPRISE
3.1. La société Sigma
SIGMA est une jeune entreprise née en mai 1998. Elle a appartenu au groupe 2M
jusqu’en décembre 1999, elle est à ce jour autonome.
SIGMA était implantée à saint Amand les eaux et depuis janvier 2002 s’est
installée à Sars et Rosières.
Il s’agit d’une société de service dont les activités s’orientent vers différents
domaines :
l’automatisme :
Etude, analyse fonctionnelles et organiques
Programmation et installation de systèmes automatisés, etc.
l’électricité industrielle : Etude et réalisation de plans. Câblage d’armoires
Informatique industrielle : Logiciel de suivi de process, Gestion de qualité,
de traçabilité, gestion d’entrepôt. codes barres, mesure sans contact et
vision.
5
Stage Sigma 26/08/2010
Courant Faible : Téléphonie, câblage réseau et fibre optique,
vidéosurveillance et alarme.
SIGMA est une S.A. au capital de 80 000€ et ayant un chiffre d’affaire de 1,9
Million d’euros en 2009. Elle emploie actuellement 40 personnes réparties dans
les domaines cités précédemment.
Aujourd’hui, SIGMA est à la tête de 2 filiales à savoir TECHTRA et ARIA.
3.2. Organigramme de la société :
3.3. Activités de l’entreprise :
6
Directeur :
Mr Jean Marie
Téléphonie :
Mr Pascal CARLIER
Electricité :
Mr Pascal LESOIN
Automatisme : Mr Silvère MAES
Informatique : Mr Franck VAN DEN MEERSSCHAUT
Stage Sigma 26/08/2010
18%
23%
8%4%12%
23%
12%
Répartition de notre clientèle par secteurs
d'activités
Chimie MétallurgiePapeterie Automobile
7
Stage Sigma 26/08/2010
4. LE PROJET
4.1. Nature et objectifs du projet
4.1.1. En quoi consiste le projet ?
Le projet qui m’a été confié durant ce stage, est la réalisation d’un logiciel de
gestion d’affaire. Celui-ci permet le suivi et la gestion de l’entreprise SIGMA mais
également de ses filiales ARIA et TECHTRA. Il a été nommé GesCom².
Ce logiciel permet de gérer différentes parties de l’entreprise :
Tout d’abord, la gestion de ses clients, fournisseurs et contacts.
Puis la gestion de ses chantiers, commandes et factures.
La gestion des filiales
Administration du logiciel.
Et enfin la gestion des pointages.
J’aborderai plus tard le détail de ces fonctionnalités.
4.1.2. Analyse de l’existant
SIGMA avait depuis 10 ans un logiciel, GeSigma, qui possédait une partie des
fonctionnalités cité précédemment. Celui-ci avait été développé en VB6 avec une
base de données Access.
L’entreprise SIGMA s’étant agrandit grâce aux filiales ARIA et TECHTRA, la
centralisation des données est devenue un problème majeur. En conséquence, Le
logiciel GeSigma a dû être dupliqué à savoir GesAria et GesTechtra .La base de
données a également du être reproduite à l’identique.
8
Stage Sigma 26/08/2010
De plus, l’effectif a également augmenté, ce qui a posé quelques problèmes
d’accès aux fichiers Access sur le réseau de l’entreprise. L’accès à un fichier par
plusieurs personnes simultanément peut parfois provoquer des erreurs du logiciel
Access.
4.1.3. Dans quel but a t-il été réalisé ?
GesCom² a été réalisé dans le but de résoudre les problèmes cités précédemment
Mais également de préparer l’avenir de l’entreprise SIGMA et donc apporter une
nouvelle solution logiciel qui permettrai d’accéder plus facilement aux informations
de l’entreprise, d’avoir une interface utilisateur plus attractive et plus ergonomique
et enfin d’augmenter la productivité des employés en facilitant la saisie de
données telle que les commandes fournisseurs etc.
4.2. Choix des outils nécessaires à la réalisation de ce projet
Afin de mettre en œuvre ce projet, j’ai tout d’abord comparé différentes
technologies les plus appropriées.
Je me suis, dans un premier temps, intéressé à l’architecture à utiliser.
9
Stage Sigma 26/08/2010
4.2.1. L’architecture utilisée
L’objectif principal, comme dit précédemment, est la centralisation des données.
Pour cela, j’ai opté pour une architecture 3 tiers.
Tout système d'information nécessite la réalisation de trois groupes de fonctions:
Le stockage des données,
La logique applicative
La présentation.
Ces trois parties sont indépendantes les unes des autres: on peut ainsi vouloir
modifier la présentation sans modifier la logique applicative. La conception de
chaque partie doit également être indépendante.
Le principe d'une architecture trois-tiers est relativement simple:
10
Stage Sigma 26/08/2010
Il consiste à séparer la réalisation des trois parties vues précédemment (stockage
des données, logique applicative, présentation). Ici il s'agit de séparer leur
implantation. Tout comme dans le client-serveur cette séparation signifie qu'il est
possible de déployer chaque partie sur un serveur indépendant, toutefois cela
n'est pas obligatoire. La mise en place de ce type d'architecture permet dans tous
les cas une plus grande évolutivité du système. Il est ainsi possible de commencer
par déployer les deux serveurs sur la même machine, puis de déplacer le serveur
applicatif sur une autre machine lorsque la charge devient excessive. Les
éléments permettant la réalisation classique d'un système en architecture trois
tiers sont les suivants:
système de base de données relationnel (SGBDR) pour le stockage des
données
serveur applicatif pour la logique applicative
Application lourde ou navigateur web pour la présentation
Avantages d’une architecture 3 tiers :
Les avantages de l'architecture 3-tiers sont principalement au nombre de quatre :
Les requêtes clients vers le serveur sont d'une plus grande flexibilité que
dans celles de l'architecture 2-tiers basées sur le langage SQL.
Cette flexibilité permet à une entreprise d'envisager dans le cadre d'une
architecture 3-tiers une grande souplesse pour l'introduction de toutes
nouvelles technologies.
D'un point de vue développement, la séparation qui existe entre le client, le
serveur et le SGBD permet une spécialisation des développeurs sur
chaque tiers de l'architecture.
Plus de flexibilité dans l'allocation des ressources; la portabilité du tiers
serveur permet d'envisager une allocation et ou modification dynamique
aux grés des besoins évolutifs au sein d'une entreprise.
11
Stage Sigma 26/08/2010
- Inconvénients d'une architecture 3-tiers
Les inconvénients sont au nombre de deux :
Une expertise de développement à acquérir qui semble plus longue que
dans le cadre d'une architecture 2-tiers.
Les coûts de développements d'une architecture 3-tiers sont plus élevés
que pour du 2-tiers, au début semble t'il, d'après une étude du cabinet
Gartner.
4.2.2. Le serveur d’application
Les technologies utilisées par SIGMA étant plus orienté Microsoft, j’ai opté pour
ADO.NET Data Services pour la réalisation de la partie serveur d’application.
J’expliquerai plus en détail cette partie dans la suite du rapport.
12
Stage Sigma 26/08/2010
4.2.3. La base de données :
Au niveau de la base de données, on a décidé d’utiliser MySQL.
MySQL qui est une solution très courante en hébergement public, grâce à sa très
bonne intégration dans l'environnement Apache/PHP et une bonne rapidité. Il est
très stable, même avec un grand nombre d'enregistrements. Un des avantages
est donc une énorme communauté d'utilisateurs, ce qui en facilite le support en
cas de problèmes. De plus, MySQL est gratuit, sauf pour certaines utilisations.
Du point de vue des performances MySQL est relativement rapide et supporte
bien la charge. Ceci s'explique par le fait que MySQL est un SGBD qui a été
conçu à l'origine pour être performant sur des serveurs web, donc destiné aux
applications web, dont le critère principal est la rapidité.
4.2.4. La couche présentation
Pour cette partie, je suis également resté dans le monde de Microsoft, en utilisant
sa dernière technologie de présentation des données à savoir WPF (Windows
présentation foundation).
Introduction à WPF :
Pour ce qui est de .Net, on a le choix entre les WinForms, et depuis la sortie du
Framework .Net 3.0 (2006) avec Windows Vista : WPF.
13
Stage Sigma 26/08/2010
Avant WPF
Comme on a pu l’énoncer précédemment, WPF est très récent étant donné qu’il
est apparu avec le Framework .Net 3.0. Avant il n’y avait que les WinForms.
Les WinForms, c’est le nom donné à la partie du Framework .Net, responsable de
la partie interface utilisateur (GUI). Les WinForms apparaissent similaires aux
Forms du langage Visual Basic 6 tout en ayant apporté leur lot d’avantages. En
effet, elles sont très faciles à prendre en main et très orienté objet.
Pourquoi WPF :
A la sortie de Windows Vista, on voit apparaitre des effets 3D et en même temps
la sortie du .Net Framework 3.0. Pourquoi ? Microsoft s’est aperçu que les
WinForms n’étaient pas vraiment adaptés (pour de nombreuses raisons
techniques telles qu’elles ne sont pas forcément des plus aisées à personnaliser).
Elles posent également un problème au niveau du travail collaboratif entre
designers et développeurs.
WPF apporte son lot de nouveautés qui facilitent le « design » de la GUI. Par
exemple, on peut citer les graphismes vectoriels, la transparence par pixel, les
animations, l’adaptation à la résolution, le support des templates de data binding,
et bien d’autres…
14
Stage Sigma 26/08/2010
Avantages de WPF :
Utilisation du GPU
Un des principaux changements avec WPF c’est l’utilisation du GPU. Le fait que
WPF utilise le GPU change énormément de choses. En effet cela permet de
déléguer une partie du travail, habituellement délégué au microprocesseur (CPU),
au processeur graphique qui va se charger de la manipulation de données
graphiques. Ce n’est pas votre GPU qui va se charger des traitements
conditionnels... Non pas qu’il ne puisse pas le faire, mais tout simplement parce
qu’il n’est pas optimisé pour de tels traitements.
Les GPU étant de plus en plus puissant et nos applications de plus en plus « jolies
» et par conséquent lourdes… le fait que WPF utilise le GPU n’est pas inutile tout
au contraire.
Séparation code / design
Lors du développement d’une application en collaboration avec des designers et
d’autres développeurs, un problème majeur se poser. En effet pour customiser
une application, le designer devra avoir des compétences en développement, il va
devoir connaître les objets de votre application et les fonctionnalités des
WinForms…
15
Stage Sigma 26/08/2010
C’est là que WPF permet justement de séparer en couches l’application.
WPF va se charger de séparer le code designer du code behind (classe d’arrière
plan). C'est à dire que le designer va pouvoir travailler sur le design de
l’application, via un langage commun basé sur du XML qui est le XAML. Quant au
développeur de son côté via le code behind il va pouvoir travailler sur la couche
métier. Cela va permettre une meilleure productivité et un support de l’application
plus facile par la suite.
WPF offre plus de possibilités comme on a pu le voir et plus de « puissance ».
C'est‐à‐dire que par exemple grâce à WPF et Expression Blend on va pouvoir
mettre en place des animations pour notre application, de façon vraiment très
simple et très rapide. Cela augmente d’une part la productivité du développeur,
celle du designer et pour finir l’ergonomie de l’application pour l’utilisateur final.
De plus on peut parler de la puissance de WPF au niveau du Data Binding
(liaisons de données).
16
Stage Sigma 26/08/2010
Inconvénients :
Le principal problème de WPF reste le même que les WinForms c'est‐à‐dire
l’interopérabilité de ce dernier. En effet on ne peut pas, dans l’état actuel des
choses, faire du WPF sous linux sous Mac OS ou d’autres systèmes… Le seul
portage de .NET fait sur les autres systèmes reste mono et mono ne supporte
actuellement pas le WPF.
Egalement on peut citer un inconvénient normal qui est le manque de maturité de
WPF. En effet, WPF est arrivé avec le Framework .NET 3.0. C’est une technologie
qui a actuellement plus de 2 ans (depuis 2006). Ainsi, les communautés
concernant WPF restent peu développées, et les entreprises commencent à peine
à se pencher dessus.
4.3. L’application « GesCom² »
4.3.1. Introduction
L’application GesCom² devra comme dit précédemment être plus conviviale à
l’utilisation et permettra d’accéder aux données plus facilement.
Le langage de développement utilisé est donc un client lourd à savoir une
application WPF.
L’accès aux données se fera par une tierce applicative (le serveur d’application)
qui est ADO.Net Data Services.
La base de données utilisée est le SGBD MySQL.
17
Stage Sigma 26/08/2010
4.3.2. Les fonctionnalités
L’application GesCom² devra répondre au cahier des charges suivant :
gestion des clients
o ajout
o modification
o suppression
o ajout de contacts aux clients
o bilan de chaque client
o impression des clients
gestion des fournisseurs
o ajout
o modification
o suppression
o ajout de contacts aux fournisseurs
o bilan des fournisseurs
o graphique d’évolution du montant des commandes par années
o impression des fournisseurs
gestion des contacts
o ajout
o modification
o suppression
18
Stage Sigma 26/08/2010
gestion des chantiers
o ajout
o modification
o Facturation des chantiers
o Passer une commande pour les chantiers
o créer des bons de livraisons
o bilan sur les chantiers
visualisations des commandes des chantiers
liste des produits à réceptionner
liste des factures
détail du chantier
établissement du résultat global du chantier (prise en
compte des pointages)
passer des commandes
o création dune commande auprès des fournisseurs
o modifier les commandes
o visualiser les commandes
o réceptionner les commandes
o copier coller de ligne de commande (pour faciliter la saisi de
données)
o impression de commande
Gestion des factures
o ajout
o modification
o impression
19
Stage Sigma 26/08/2010
les bons de livraison
o ajout
o modification
o impression
gestion des pointages
o pointages par personnel
ajout
modification
suppression
détail des pointages
o gestion des pointages par les chefs de services
Administration de l'application
o gestion des droits d'accès du personnel
o gestion du personnel
o gestion des ordinateurs connectés (permet d’autoriser ou non l’accès
aux fonctionnalités au démarrage de l’application).
o gestion des filiales
o gestion des logs (traces des opérations effectuées : ajout d’un
chantier, modification d’une facture, etc.).
o modification de l’adresse du server ADO.Net.
o gestion de son compte personnel
Permettre de stocker des fichiers sur des commandes, ligne de
commandes ou chantiers.
20
Stage Sigma 26/08/2010
4.3.3. La base de données
4.3.3.1. Introduction
J’ai implanté la base de données avec le logiciel Xampp qui est un logiciel qui
contient un package de différentes choses :
Apache : il s'agit du serveur web.
PHP : il communique avec apache et permet de traiter les pages PHP.
MySQL : il s'agit du SGBD utilisé.
PHPMyAdmin : Grâce à PHPMyAdmin, on dispose d'une interface de
gestion des bases de données.
4.3.3.2. Le logiciel PowerAMC
Pour réaliser la base de données, j’ai utilisé le logiciel powerAMC qui m’a permis
de générer le script SQL.
Voici un exemple d’utilisation du logiciel :
21
Stage Sigma 26/08/2010
Pour réaliser les différentes tables et relations, il suffit de glisser déposer les
objets souhaités grâce à l’outil palette.
Lorsque le modèle conceptuel de données nous convient, il faut générer un script
SQL. Cela permet d’importer directement dans la base MySQL le script générer.
4.3.3.3. Explication de la base de données GesCom²
La base de données GesCom² a donc été réalisée avec powerAMC. Elle
comporte 45 tables permettant de gérer l’application.
22
Stage Sigma 26/08/2010
Facturation de chantiers :
Cette image décrit comment est gérée la partie facturation d’un chantier.
Description d’un chantier :
Un chantier, est en faite, une commande d’un client. Par exemple, le client CIC de
valenciennes demande à SIGMA d’effectuer une modification de leur réseau. Cela
figure comme un chantier chez SIGMA.
23
Stage Sigma 26/08/2010
Description d’un chantier au niveau du MCD :
Au niveau modèle conceptuel de données :
Un chantier possède un identifiant unique.
Un numéro interne à sigma (exemple 265 10 156. qui correspond au client
256, de l’année 2010 et un numéro incrémentale à l’année de 156)
Il appartient à une filiale.
Il possède un client, un contact.
Il possède une description au niveau des couts, à savoir sa main d’œuvre
prévue et sa main d’œuvre réelle
Il contient plusieurs factures clientes.
Il contient également diverses informations relatives aux chantiers
(montant, intitulé, etc.).
Description de la facturation :
Une facture est le fait de facturer un client pour un chantier.
Exemple : Le montant de mon chantier pour le client CIC de valenciennes est de
2000€. On peut établir par exemple, plusieurs factures pour ce client de 2 fois
1000€ à des dates différentes.
24
Stage Sigma 26/08/2010
Description de la facturation au niveau du MCD :
Au niveau du MCD, cela se traduit par une table facture qui contient :
Un identifiant
Un numéro de facture interne à sigma (exemple : 10 0379, qui correspond
à l’année 2010 et du numéro incrémentale à l’année de 379).
Diverses informations pour une facture.
Un type de facture (facture définitive, acompte, etc.).
Un mode de règlement (cheque, virement, etc.).
Un texte de règlement (facture à 45 jours fin de mois, etc.).
Un détail de facture (possédant une désignation et un montant).
25
Stage Sigma 26/08/2010
Les commandes pour les chantiers :
La partie commande permet à SIGMA d’effectuer des commandes auprès de leurs
fournisseurs.
Description de la partie commande :
Une commande est passée chez un fournisseur pour un chantier.
Pour gérer les commandes, il y a 2 tables principales : commandes et
lignecommande.
Une commande peut être passée pour plusieurs chantiers. C’est pourquoi on
mémorise l’identifiant du chantier dans la table lignecommande.
26
Stage Sigma 26/08/2010
Pour gérer la réception des commandes, il s’agit des tables livrer et livraison. Ce
système permet de réceptionner un même produit d’une commande à des dates
et quantités différentes.
Exemple :
Commande : 10 08 101 :
Produit 1, qte=5
Produit 2, qte=2
A la réception on peut avoir :
Livraison 1, date : 17/07/2010 :
produit 1, qte=3
Produit 2, qte =2
Livraison 2 date : 20/07/2010:
produit 1, qte=2
Description de la partie commande au niveau du MCD :
La table commande possède :
Un ID unique
Un numéro de commande interne (ex : 10 08 101 qui correspond à l’année
2010, le mois d’aout et du numéro incrémentale 101).
Elle appartient à une filiale
Un fournisseur
Une collection de ligne de commande (produits)
27
Stage Sigma 26/08/2010
Un champ permettant de savoir si la commande a été validée (tous les
produits on été réceptionnés).
Un champ informant l’état de conformité actuelle de la commande (produits
manquant, problème de prix à la réception).
Diverses informations.
La table Lignecommande possède :
Un identifiant unique.
Les informations sur le produit.
L’identifiant d’un chantier.
La table Livraison possède :
Un identifiant unique.
Une date de livraison.
Un numéro de BL.
La table livrer possède :
L’identifiant de livraison.
L’identifiant de la ligne de commande.
Une quantité réceptionnée.
28
Stage Sigma 26/08/2010
Gestion des clients/fournisseurs :
Cette partie de la base de données, permet de gérer les clients, fournisseurs et
contacts de l’entreprise. Elle est commune à toutes les filiales de SIGMA.
Description :
Un client et un fournisseur possède plusieurs contacts.
Un personnel appartient à une filiale et un service.
29
Stage Sigma 26/08/2010
Description au niveau du MCD :
Dans ce modèle, on a 2 héritages :
Tout d’abord, on à l’héritage Entreprises, fournisseurs et clients. Un client et un
fournisseur hérite de la table entreprises car elle possède des informations
communes à savoir : les adresses, nom, etc.
Puis, on a l’héritage Personnes, personnels, contacts. Un personnel et un contact
hérite de la table personnes.
Gestion des droits d’accès :
30
Stage Sigma 26/08/2010
Description de la gestion des droits :
Un personnel appartient à plusieurs groupes sur les filiales.
Ces groupes possèdent des droits d’accès aux différentes fonctionnalités.
Exemples :
Personnel : Kévin DE BOCK
o Appartient aux groupes informatiques et chef de services.
L’attribution des droits s’effectuent en prenant le droit du plus haut niveau des
groupes auxquels il appartient.
4.3.4. Le middleware “ADO.Net Data Services”
4.3.4.1. Introduction à ADO.Net Data Services
ADO .NET Data Services est un ensemble de composants du Framework .NET,
permettant donc la création de services génériques, interopérables et utilisables
dans de diverses applications (Silverlight, WinForms, WPF, ASP .NET, …).
ADO .NET Data Services repose sur l’utilisation combinée de WCF, LINQ To SQL,
Entity Framework et ADO.Net ainsi que l’architecture REST. Cela permet de
requêter une base de données, de gérer les données en mode CRUD (Create
Read Update et Delete), en envoyant des requêtes HTTP à destination de
services WCF déployés sur serveur IIS, une application console ou un service
Windows.
31
Stage Sigma 26/08/2010
4.3.4.2. Infrastructure d’accès aux données
32
Stage Sigma 26/08/2010
Sur ce schéma on peut observer que la couche WCF, propose des services,
exposant et permettant de gérer les données d’une base de données. Ces
données sont donc accessibles :
Directement depuis un navigateur.
Depuis une application .NET, il suffira de créer une référence de service,
générant une classe Proxy, se chargeant d’exposer toutes les méthodes
que l’on pourra utiliser sur nos données au travers du service distant.
4.3.4.3. Les technologies utilisées par ADO .NET Data Services
ADO .NET Data Services utilise deux langages, pour transmettre les données
contenues dans une source de données, à une application cliente :
Le langage JSON (JavaScript Object Notation) :
Le langage JSON (JavaScript Object Notation) permet de créer un flux de
données. Il constitue une alternative au langage XML, car il est plus concis et
nativement interprété par le JavaScript. Il est principalement utilisé lors du
développement d’applications Web avec Ajax.
Le langage ATOM (Atom Publishing Protocol).
Le langage ATOM (Atom Publishing Protocol) est un langage basé sur le langage
XML. De ce fait, il respecte ses spécifications. Le groupe de travail IETF (Internet
Engineering Task Force) a défini les spécifications de ce langage.
Pour ma part, j’ai utilisé ce langage pour transmettre mes données.
ADO .NET Services est basée sur l’architecture REST (Representational State
Transfer).
33
Stage Sigma 26/08/2010
4.3.4.4. L’architecture REST
L’architecture REST (Representational State Transfer) est une architecture
orientée ressources. Autrement dit, il faut voir chaque donnée dans notre base
comme une ressource à laquelle on peut accéder au travers d’un service. Une
base de données est considérée comme un dépôt de ressources. Le principal
objectif d'ADO.NET Data Services est de créer une infrastructure basée sur REST
(Representational State Transfer) pour permettre à des applications clientes :
D’obtenir des données, pour les afficher, les traiter…
D’utiliser des services centrés sur les données.
Pour cela, ADO.NET Data Services utilise des commandes HTTP liées au
protocole REST :
POST : permet d’ajouter, de mettre à jour ou de supprimer une ressource
du dépôt (Create, Update, Delete).
GET : permet de lire une ressource (Read).
PUT : permet de créer ou de mettre à jour une ressource (Create, Update).
DELETE : permet de supprimer une ressource (Delete).
34
Stage Sigma 26/08/2010
Voici un schéma présentant cette infrastructure :
4.3.4.5. Le cas du projet
Utilisant une base de données MySQL, Visual studio contient par défaut le
connecteur à la base de données MS SQL server. Cependant dans mon cas, j’ai
dû télécharger le connecteur approprié sur le site officiel de MySQL
http://dev.mysql.com/downloads/connector/net/ .
Grâce à cela, Visual studio à pu reconnaitre ma base de données MySQL et il m’a
donc été possible de mapper les tables de ma base de données en objets.
35
Stage Sigma 26/08/2010
Pour déployer mon service ADO.net, j’ai réalisé un service WCF hébergé dans un
service Windows qui s’occuperai d’exposer les données de mon service.
Voir en annexe 1 le résultat obtenu après avoir démarré mon service.
4.3.5. L’application
4.3.5.1. Structure de base
Comme dit précédemment, j’ai développé cette application dans le langage WPF
C#.
Dans un premier temps, je me suis intéressé à comment afficher mes différents
formulaires tels que : gestion des clients, chantiers, etc. Après m’être informé sur
internet, je me suis orienté vers un mode d’affichage au style d’un navigateur web
à savoir des onglets (Il s’agit du composant TabControl).
Souhaitant également une ergonomie conviviale et plaisante à utiliser, j’ai
découvert sur le site internet http://wpf.codeplex.com/ la possibilité d’utiliser le
ruban de Microsoft. Il s’agit du menu de la série Office de Microsoft tel que Word,
Excel 2007 etc. Les boutons de ce ruban contiennent les fonctionnalités de
l’application GesCom².
Voici un exemple de ruban :
36
Stage Sigma 26/08/2010
L’application GesCom² va donc être sous la forme suivante :
4.3.5.2. Les interfaces graphiques de l’application
Je vais vous présenter ci-après différentes parties graphiques de l’application.
37
Stage Sigma 26/08/2010
La gestion des fournisseurs :
Cette interface nous permet de gérer les fournisseurs ainsi que les contacts des
fournisseurs. En cliquant sur le bouton « fournisseurs » du ruban, l’interface
« gestion des fournisseurs » s’est ajoutée aux onglets et à également ajouté les
fonctionnalités spécifiques à cette gestion dans le ruban. Ici, le groupe
« fournisseurs » avec le bouton « ajouter un fournisseur » et également des
critères de filtrage. Ici juste le filtre par nom était nécessaire.
Bien évidemment, il est également possible de trier cette liste en cliquant sur les
colonnes.
38
Stage Sigma 26/08/2010
En double-cliquant sur un fournisseur en particulier on accède au bilan du
fournisseur :
Sur ce bilan, nous avons donc la liste des commandes passées auprès de ce
fournisseur. On a également des fonctionnalités sur cette interface qui sont des
filtrages sur les années ainsi qu’un graphique représentant l’évolution du montant
des commandes par années.
La gestion des clients et des contacts sont similaire à la gestion des fournisseurs.
39
Stage Sigma 26/08/2010
La gestion des chantiers :
Cette interface nous montre la gestion des chantiers. Pour chaque chantier, on a
les fonctionnalités telles que modifier le chantier, passer une commande, facturer
le chantier, et créer un bon de livraison.
Dans le ruban, nous avons la possibilité d’ajouter un nouveau chantier ainsi qu’un
système de filtrage plus approfondis.
Si nous double-cliquons sur un chantier, nous accédons à son bilan :
40
Stage Sigma 26/08/2010
Sur cette interface nous avons :
Le détail du chantier.
Sa main d’œuvre prévue et sa main d’œuvre réelle.
La liste des commandes du chantier.
La liste des produits qui sont à réceptionner.
La liste des factures du chantier.
Le résultat global du chantier en tenant compte des salaires des employés
grâce aux pointages que nous verrons par la suite et aux couts des trajets
en véhicule jusqu'au client.
41
Stage Sigma 26/08/2010
Passer une commande :
Dans cette interface, on crée des commandes.
Les zones de texte sont des assistants à la saisie pour gagner en rapidité. Par
exemple, en commençant à taper une référence, celle-ci nous complète notre
référence et inscrit directement la désignation, la marque et le prix de la ligne de la
référence sélectionnée.
Celle assistant à la saisie s’utilise pour choisir un chantier, une référence, une
marque et les fournisseurs.
42
Stage Sigma 26/08/2010
On peut également remarquer qu’il est possible de coller des lignes de
commande. Pour cela, il faut ouvrir la commande souhaitée :
Puis, on sélectionne les lignes de commande souhaitées en les cochant et on
clique sur le bouton « Copier les produits ».
Enfin, on retourne dans l’onglet de notre commande et on clique sur « coller les
produits » :
43
Stage Sigma 26/08/2010
Réception de commande :
Ici nous pouvons réceptionner les différentes commandes ayant été enregistrées.
Il est possible pour chaque ligne de commandes de préciser s’il y a un litige
(référence de produit non conforme, prix non conforme, etc.).
On peut également faire des recherches de commandes par rapport aux
fournisseurs, numéro de commande et l’année.
44
Stage Sigma 26/08/2010
Visualisation des commandes :
Dans cette interface, on a la liste des commandes. Les commandes peuvent
prendre 3 états :
Commande Réceptionnée entièrement : La commande est en verte et ne
peut plus être modifiée.
Commande à réceptionner : La commande est en blanc si sa date de
réception n’est pas dépassée et qu’elle ne possède aucun litige sinon elle
figure en rouge.
Il est possible également de filtrer et trier la liste mais également d’effectuer une
recherche plus fine en cliquant sur le bouton « rechercher » dans le ruban. On
obtient cette interface.
45
Stage Sigma 26/08/2010
J’ai recherché ici, toutes les commandes où elles contiennent une désignation de
produit contenant le texte « portable ».
Facturation d’un chantier :
46
Stage Sigma 26/08/2010
La facturation s’effectue sur un chantier.
Pour cela, il faut sélectionner :
Un type de facture
Un mode de règlement
Un texte de règlement
Une adresse cliente de facturation
Et également, ajouter le détail de la facture (une désignation et un montant).
La gestion des pointages :
47
Stage Sigma 26/08/2010
Dans cette interface, il est possible d’effectuer des pointages sur des chantiers.
Le pointage s’effectue quotidiennement.
On inscrit :
Le nombre d’heure travaillée sur un chantier.
le nombre d’heure de route.
Si la journée possède un grand déplacement (un Grand déplacement est le
fait de dormir à l’extérieur. Cela comprend un repas + une nuit
d’hébergement).
Si la journée possède un panier (un panier correspond à un repas).
Dans l’onglet pointage, on a accès aux détails de ses pointages :
48
Stage Sigma 26/08/2010
Ici, nous avons le bilan des pointages du personnel.
Cela nous affiche par mois, le nom d’heure travaillée, le nombre d’heure de route,
le nombre grand déplacement et de panier.
4.3.5.3. Le système d’impression
Pour réaliser l’impression des factures, commandes, etc., j’ai utilisé un composant
se nommant « Document fixes ».
Explication des documents fixes :
Les documents fixes sont prévus pour les applications qui requièrent une
présentation WYSIWYG (« tel affichage, tel résultat ») précise, particulièrement en
ce qui concerne l'impression .Les documents fixes sont principalement utilisés
pour la Publication Assistée par Ordinateur (PAO), le traitement de texte et la
présentation d'un formulaire, où le respect de la conception de la page d'origine
est essentiel.
Ils sont écrits dans le langage XAML. Voir en annexe 2 un exemple de document
fixe. Ce code affiche la facture d’un chantier. Le résultat figure en annexe 3.
Ce système d’impression a été réalisé pour la liste des clients/fournisseurs, les
commandes, les factures, la réception de commande et les bons de livraison.
49
Stage Sigma 26/08/2010
4.3.5.4. Le stockage de fichier sur le serveur
Comme dit précédemment, l’application doit être capable de stocker des fichiers
sur le serveur.
Pour réaliser ce système, j’ai réalisé un autre service WCF, s’occupant
uniquement d’enregistrer et restituer un fichier du serveur.
Voici l’interface de mon service :
[ServiceContract()] public interface IFileTransfer { [OperationContract] string GetFileNameComplet(string filename,Opération operation,long id);
[OperationContract] bool UploadFile(string filename, byte[] data);
[OperationContract] byte[] DownloadFile(string filename);
[OperationContract] bool ExistFile(string filename);
}
Le format d’enregistrement des fichiers est le suivant :
Par exemple si on enregistre un fichier se nommant « devis CIC VA.pdf » pour la
commande dont l’Id est 13677. On aura donc sur le serveur un fichier du type :
« ».
Ceci permet de bien identifier le fichier et ainsi éviter d’avoir le même nom de
fichier.
Si un même nom de fichier pour la même commande devait être enregistré alors
le fichier serait « devis CIC VA_Commande_13677_2.pdf ».
50
Stage Sigma 26/08/2010
Le nom complet du fichier est stocké en base de données. Il est possible d’ajouter
plusieurs fichiers pour une commande.
On aurait alors en base de données le format suivant :
« \\192.168.1.254\Fichiers GesCom2\Commandes\ devis CIC
A_Commande_13677 _1.pdf | \\192.168.1.254\Fichiers GesCom2\Commandes\
devis CIC VA_Commande_13677_2.pdf »
Chaque fichiers sont séparés par la barre verticale « | ».
4.3.6. Le déploiement
Afin de déployer l’application sur tous les postes qui seront amenés à utiliser
GesCom², J’ai utilisé le déploiement ClickOnce ainsi qu’un BootStrap.
ClickOnce est une technologie de déploiement qui permet de créer des
applications Windows à mise à jour automatique et pouvant être installées et
exécutées avec un minimum d'intervention de l'utilisateur. Il représente la réponse
de Microsoft à « Java Web Start ».
Le BootStrap permet de gérer les mises à jour ClickOnce. Il s’agit de
DDay.Update. Ainsi, il est possible de déployer mon application dans un répertoire
personnalisé.
Principe de fonctionnement :
51
Stage Sigma 26/08/2010
Voici également le diagramme de séquence montrant comment fonctionne le
BootStrap :
Le contenu des fichiers est le suivant :
52
Stage Sigma 26/08/2010
A droite se situe l’application BootStrap. Elle contient les versions de l’application
téléchargées. En démarrant le BootStrap, celui-ci compare la version située dans
le manifest à celui déployé sur le réseau afin de le télécharger ou pas.
53
Stage Sigma 26/08/2010
4.4. La migration des données
4.4.1. Introduction :
Pour réaliser la migration des données. J’ai du tout d’abord m’intéresser à la base
de données Access actuelle, afin de repérer comment sont enregistrées les
données par rapport à mon modèle dans MySQL.
Par exemple : Le numéro de chantier dans la base Access est représenté comme
suit :
Numchantier : 15010455 qui correspond au client 150, de l’année 2010 et du
chantier 455.
Tandis que dans ma base, le numéro de chantier est divisé en 3 champs
différents :
o NumClient : qui est une clé étrangère à la table « client ».
o DateChantier : qui est un type datetime dans la table « chantier ».
o NumChantier : qui est un entier dans la table « chantier »
4.4.2. L’interface graphique
54
Stage Sigma 26/08/2010
Voici l’interface graphique permettant de migrer les données de la base Access
vers la base MySQL.
Pour effectuer la migration, il faut dans un premier temps configurer l’adresse du
serveur ADO.Net .Puis de copier la dernière version des fichiers Access. Et enfin,
transférer les données dans l’ordre suivant :
D’abord les clients
Puis les fournisseurs
Les chantiers
Les factures
Les commandes
L’ordre est important car ayant des clés étrangères sur ma table chantier (le
client), il faut d’abord récupérer les clients sinon cela provoquera bien évidemment
des erreurs. Il en est de même pour les factures, je ne peux pas ajouter une
facture si le chantier facturé n’a pas encore été ajouté.
55
Stage Sigma 26/08/2010
4.5. La sauvegarde automatique des données
MySQL offre des outils de sauvegardes des bases de données. Il s’agit « MySQL
dump ».
Pour réaliser une sauvegarde automatique j’ai donc créé un service Windows qui
permettra d’effectuer cette tache.
Le service tournera en permanence et exécutera l’utilitaire « mysqldump » à
intervalle de temps régulier.
Pour faciliter la configuration du service j’ai inscrit dans un fichier config toutes les
informations nécessaires.
Voir le fichier config en annexe 4.
5. DIFFICULTÉS RENCONTRÉES ET SOLUTIONS APPORTÉES
5.1. La migration des données
La migration des données a été une tache difficile à réaliser.
La base de données Access ne répondez pas aux normes de la méthode
MERISE. Elle ne comportait aucune clé primaire / clé étrangère. Il s’agissait
juste d’un stockage de données géré par l’application.
J’ai donc dû décortiquer l’ensemble de la base de données Access. C'est-à-
dire trouver qu’elle champ correspondait à tel ou tel table comme clé étrangère
etc.
56
Stage Sigma 26/08/2010
5.2. Le serveur ADO.net data services
Au début du stage, j’avais réalisé mon MCD avec des tables qui comprenait des
clés primaires multiples. Cela était valable pour plusieurs table (chantiers,
commandes, etc.).
Par exemple : table chantier :
Clé primaire : Numchantier, dateChantier, NumFiliale.
Mais cela a vite posé des problèmes au niveau des associations de table. Il
pouvait comporter beaucoup de champ. Et de plus dans mon application, lorsque
j’effectuais un simple « ajout », cela me provoquait des erreurs
incompréhensibles.
Donc pour y remédier, j’ai gardé ces champs mais seulement en clé étrangère et
j’ai ajouté aux tables en question, un champ « IdChantier », par exemple, qui est
la clé primaire unique à la table « chantier ». Donc je n’est plus qu’une seule clé
primaire pour chaque table et cela fonctionne très bien maintenant.
6. CONCLUSION
Ainsi, j’ai effectué mon stage de fin d’étude Master Informatique Technologies
Nouvelles des Systèmes d’information et décisionnels au sein de l’entreprise
SIGMA. Lors de ce stage de 5 mois et demi, j’ai pu mettre en pratique mes
connaissances théoriques acquises durant ma formation, de plus, je me suis
confronté aux difficultés réelles du monde du travail.
Le projet qui m’a été confié a été très intéressant et m’a permis d’approfondir mes
connaissances dans le développement logiciel.
57
Stage Sigma 26/08/2010
Je pense que cette expérience en entreprise m’a offert une bonne préparation à
mon insertion professionnelle car elle fut pour moi une expérience enrichissante et
complète.
7. BIBLIOGRAPHIE
Livres
Matthew MacDonald, Pro WPF in C# 2008: Windows Presentation
Foundation with .NET 3.5, Second Edition, Apress, 1072 pages.
Adam NATHAN, Windows Presentation Foundation Unleashed, 655 pages.
Roger Jennings, ADO.NET 3.5 with LINQ and the Entity Framework, Wrox,
672 pages.
Sites
http://www.developpez.com/
http://www.codeplex.com/ : Ce site m’a permis d’accéder à des exemples
de code source.
58
Stage Sigma 26/08/2010
http://msdn.microsoft.com/fr-fr/default.aspx : Le site contenant les
informations sur les technologies de MICROSOFT. (webcasts, tutoriels,
etc.) ;
59
Stage Sigma 26/08/2010
8. ANNEXES
Annexe 1 : Résultat obtenu lors du déploiement de mon service ADO.net .
60
Stage Sigma 26/08/2010
Annexe 2 : exemple de document fixe écrit en XAML permettant d’imprimer une
facture .
<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:xrd="clr-namespace:CodeReason.Reports.Document;assembly=CodeReason.Reports" PageHeight="29.7cm" PageWidth="21cm" ColumnWidth="21cm" PagePadding="0" ScrollViewer.IsDeferredScrollingEnabled="True"> <xrd:ReportProperties> <xrd:ReportProperties.ReportTitle>Facture client</xrd:ReportProperties.ReportTitle> </xrd:ReportProperties>
<xrd:SectionReportHeader PageHeaderHeight="2" Padding="30,60,30,30" FontSize="12" > <Table CellSpacing="0" > <Table.Columns> <TableColumn Width="*" /> <TableColumn Width="*" /> <TableColumn Width="*" /> </Table.Columns> <TableRowGroup> <TableRow> <TableCell > <Paragraph><!----> <Image Source="" > </Image> </Paragraph> </TableCell> <TableCell /> <TableCell BorderThickness="0"> <Paragraph FontSize="14" TextAlignment="Left"> <xrd:InlineDocumentValue PropertyName="NomClient" /> </Paragraph> <Paragraph FontSize="14" TextAlignment="Left"> <xrd:InlineDocumentValue PropertyName="AdresseClient" /> </Paragraph> <Paragraph FontSize="14" TextAlignment="Left"> <xrd:InlineDocumentValue PropertyName="CPClient" /> <xrd:InlineDocumentValue PropertyName="Villeclient" /> </Paragraph> </TableCell> </TableRow> </TableRowGroup> </Table>
(…)</FlowDocument>
61
Stage Sigma 26/08/2010
Annexe 3 : exemple de facture d’un chantier
62
Stage Sigma 26/08/2010
63
Stage Sigma 26/08/2010
Annexe 4 : Fichier Config du service de sauvegarde automatique
<?xml version="1.0" encoding="utf-8" ?><configuration> <appSettings> <add key="CheminMysqldump" value="C:\wamp\bin\mysql\mysql5.1.36\bin\mysqldump.exe"/> <add key="serveur" value="localhost"/> <add key="database" value="gesigma"/> <add key="user" value="backup"/> <add key="pass" value="sigma"/> <!--chemin de sauvegarde des fichiers--> <add key="CheminFichier" value="C:\BackupBDDGesCom\"/>
<!--interval de temps de sauvegarde Ici ca correspond à 12h--> <add key="interval" value="43200000"/> <!--Indique le delai de suppression en jour cest a dire que l'application supprimera les fichiers dont la date de modification est inférieur au nb de jours --> <add key="delaiSuppression" value="7" /> </appSettings>
</configuration>
64
Top Related