Programme d�impl�mentation de la base de donn�e

Document Sample
Programme d�impl�mentation de la base de donn�e Powered By Docstoc
					                         PROVINCE DE HAINAUT
                  HAUTE ECOLE MONS-BORINAGE-CENTRE




                        INSTITUT SUPERIEUR ECONOMIQUE
                         Place Dooms, 7 – 7012 MONS-FLENU
                         Tél. : 065/88.12.28 – Fax : 065/88.12.24




                           GRADUAT EN INFORMATIQUE
                            Option Informatique de Gestion




                             TRAVAIL DE FIN D’ETUDES




                           Programme authoring de catalogue
                                   sur CD ROM




                          ANNEE ACADEMIQUE 2003/2004




Bastin Jean-Sébastien                     -1-           Institut Supérieur Economique
  Remerciements ____________________________________________________ 4
  Introduction _______________________________________________________ 5
  1. Présentation de l’entreprise ________________________________________       6
     1.1 M.P. Colinet en quelques dates :___________________________________     7
     1.2 M.P. Colinet en quelques chiffres :_________________________________    8
     1.3 Eléments d’une machine : ________________________________________       9
  2. Présentation du projet : __________________________________________         11
     2.1 Généralités : _________________________________________________         11
     2.2 Première approche : ___________________________________________         11
     2.3 La base de donnée : ____________________________________________        12
  3. Programme d’implémentation de la base de donnée ___________________         13
     3.1 Généralités : _________________________________________________         13
     3.2 Schéma du programme : ________________________________________          14
     3.3 Gestion des données du catalogue : _______________________________      15
       3.3.1 Gestion des familles d’articles : _______________________________   15
       3.3.2 Gestion des type d’articles : __________________________________    15
       3.3.3 Gestion des fournisseurs : ___________________________________      16
       3.3.4 Gestion des type de liens : ___________________________________     16
       3.3.5 Gestion des gammes : ______________________________________         17
       3.3.6 Gestion des opérations : _____________________________________      17
       3.3.7 Gestion des usures de plaquettes : _____________________________    18
       3.3.8 Gestion des documents annexes : _____________________________       18
       3.3.9 Gestion des types de mesures ________________________________       18
       3.3.10 Gestion des articles : ______________________________________      20
       3.3.11 Gestion des sous-ensembles : _______________________________       21
       3.3.12 Gestion des ensembles : ____________________________________       23
       3.3.13 Gestion des machines : ____________________________________        24
     3.4 Gestion codes de calculatrice : ___________________________________     26
     3.5 Validation du catalogue : _______________________________________       27
  4. Le Player de catalogue ___________________________________________          29
     4.1 Généralités : _________________________________________________         29
     4.2 Choix du support : _____________________________________________        29
     4.3 Choix des outils_______________________________________________         29
     4.4 Connexion du client : __________________________________________        30
     4.6 Définitions des Tags : __________________________________________       31
       4.6.1 Récupération d’information unique : ___________________________     31
          4.6.1.1 Les données alphanumériques : ___________________________      32
          4.6.1.2 Les Images: ___________________________________________        32
          4.6.1.3 Les documents : _______________________________________        33
          4.6.1.4 Génération de lien hypertexte : ____________________________   33
       4.6.2 Tag de récupération de données multiples ______________________     34


Bastin Jean-Sébastien                 -2-           Institut Supérieur Economique
         4.6.2.1 Tag de Tableau : _______________________________________         34
            4.6.2.1.1 Paramètres de gestion de table : ________________________   35
            4.6.2.1.2 Paramètres de gestion de champs : _____________________     35
            4.6.2.1.3 Paramètres de rendu: ________________________________       36
         4.6.2.2 Tag de résultat _________________________________________        37
         4.6.2.3 Tag de menu déroulant __________________________________         37
    3.7 Schéma logique _______________________________________________            38
    3.8 Schéma de récupération de BLOB ________________________________           39
    3.9 Gestion des templates externes et internes __________________________     41
    3.10 Gestion des langues___________________________________________           42
    3.11 Intégration des Tag dans Dreamweaver ___________________________         43
  4. Le site WEB ____________________________________________________ 43
     4.1 Schéma de navigation : _________________________________________ 44
  5. Conclusion _____________________________________________________ 47
  6. Annexes _______________________________________________________              48
     Utilisation de Borland C++ Builder 5 :________________________________       48
     Présentation de la VCL ____________________________________________          48
     Utilisation d’une connexion à la base de donnée : _______________________    49
     Les Blob _______________________________________________________             51
     L’encodage de caractères : _________________________________________         52




Bastin Jean-Sébastien                 -3-            Institut Supérieur Economique
Remerciements

Durant ces 4 mois de stage au sein de l’entreprise COLINET, j’ai été agréablement
surpris par l’ambiance et la facilité de prise de contact avec les différents employés.

Je tiens a remercier Mr Chassoulier mon maître de stage ainsi que Mr Eeckhout qui
ont su me guider tout au long de ce projet, et m’ont aidé sur les points techniques.

Je remercie aussi Mr Bataille, chef de service outillage, qui dès le début du projet ma
longuement expliqué les aspects de la gestion des articles.

Un remerciement spécial pour les autres stagiaires Eto Patrick, Fabien Omgba,
Brancart Jerry, Garcia Gregory et Michaux David qui m’ont aussi aidé activement tout
au long de ces 4 mois.




Bastin Jean-Sébastien                      -4-            Institut Supérieur Economique
Introduction

Mon stage de fin d’étude c’est déroulé au sein de l’entreprise Colinet située au Roeulx
spécialisée dans le montage et la création de machines de filetage de tube dans le
domaine pétrolier.

Ce stage s’est déroulé en plusieurs étapes :

   -   D’une part j’ai eu une approche globale du projet qui fut une analyse des
       besoins et des finalités avant son démarrage, il s’agissait d’éclaircir le dossier.

   -   D’autre part j’ai pu me familiariser avec l’environnement C++ Builder 5

   -   Finalement la mise en forme des différents modules de ce projet.




Bastin Jean-Sébastien                      -5-             Institut Supérieur Economique
1. Présentation de l’entreprise

Créée en 1921 par Armand Colinet, la société a tout d’abord produit et commercialisé
des équipements tel que le célèbre marteau-piques « Lacroix » pour les mines.

Très vite, la compagnie s’est développée et a pris conscience de sa grande capacité à
produire dans le domaine de la précision. Les premières machines outils spécifique de
chez Colinet ainsi que le traitement thermique ont alors vu le jour.

Ce potentiel technologique et de main d’œuvre a été intégré au groupe
CRI-DAN dans le but de contre-balancer son déclin dans les activités minières.

L’entreprise se lance alors dans la conception et la fabrication de mandrins pour
machines outils pour le domaine pétrolier (filetage et tronçonnage).
Elle s’occupe également de l’assemblage de machines en sous-traitance pour CRI-
DAN.

Ensuite, l’entreprise a conçu et a développé une nouvelle génération complète de
machines de filetage OCGT.

Colinet dispose d’un important potentiel de techniciens et ingénieurs ayant en
moyenne 25 ans d’expérience tant théorique que pratique dans les pipes et dans la
technologie des accouplements usinant (réduction, filetage, rapport de prime,…)
Cette équipe possède toute la compétence nécessaire (le concept, la fabrication,
l’assemblage…) et des spécialistes dans le domaine de l’application (traitement et
outillage).
Ces spécialistes internes, dans le cadre d’un dialogue actif avec les producteurs de
pipes les plus connu, peuvent définir et proposer l’équipement adéquat capable de
répondre à la demande future et parfaitement adapté à l’environnement industriel
concerné.

L’organisation interne de la société a abouti à la division de ces compétences
principales en quatre secteurs d’expertise :

   -   Construction mécanique
   -   Electrotechnique
   -   Assistance technique de client
   -   Ingénierie d’obtention

Grâce aux ingénieurs extrêmement compétents et à une équipe de designers, les quatre
départements principaux inscrits ci-dessus, sont responsable du développement
mécanique, électrique et d’application des produits Colinet.

Toutes les caractéristiques techniques des produits Colinet sont développées à
l’intérieur de la société.

Bastin Jean-Sébastien                     -6-            Institut Supérieur Economique
Colinet est actif de plusieurs façons sur le marché.
En effet l’entreprise peut fournir des pièce de rechange. Comme fabricant d’une
gamme complète de machines-outils, Colinet soutient n’importe quelle demande de
pièces de rechange liées à son programme passé et présent.
Les pièces produites chez Colinet sont de différents types tels que les pièces
mécaniques, électriques, commerciales et d’outillage.

Ils accomplissent également des montages partiels de technologie Colinet qui peuvent
s’adapter sur des tours de rotation classiques comme l’adaptation de mandrins avant et
arrière sur des machines de tuyauterie, adaptation de mandrins pour des machines
d’accouplements.

L’entreprise offre également une Assistance Technique de Client (CTS).
Ces services d’aide aux clients dessert l’après vente, l’aide pour un choix judicieux de
l’outillage adéquat, et l’aide au développement de la programmation de partie sur
n’importe quelle machine de Colinet.

Colinet ne fournit pas uniquement des machines d’OCGT (Machine de Gisement de
Pétrole), mais développe aussi tous les services périphériques :
   - Contrôle de qualité
   - Amélioration de la sécurité (Conformité CE)
   - Maintenance
   - Logistique
   - …

Colinet est un des quelques rares licenciés (concessionnaire) Sendzimir pour
l’assemblage haute précision des laminoirs à froids. Colinet possède maintenant une
réputation vaste et internationale comme fabricant de composants de moulins.
L’entreprise met en œuvre des techniques spécialisées pour assurer une haute précision
et la fabrication facile de l’usinage des composants et les comportements pour des
moulins Sendzimir, elle garantit leur exécution parfaite avec des tolérances
d’exactitude particulièrement sévère de 6 microns.

1.1 M.P. Colinet en quelques dates :

1983: La faillite de la société CRI-DAN est prononcée.

1985: Les ateliers Colinet sont en faillite.

1985: La société est achetée par un investisseur industriel nommé Yves Wasteels et est
renommée Mécanique de Précision Colinet.

1987: La division européenne de Jones et Lamson est acquise par MP Colinet. Tous
les équipements de fabrication sont déplacés à Le Roeulx. Utilisant cette opportunité,
la compagnie met au point une toute nouvelle génération de machine. MP Colinet


Bastin Jean-Sébastien                          -7-       Institut Supérieur Economique
devient un véritable concepteur/ fabriquant/ installateur de machines outils de filetage
et tronçonnage de tubes d’extraction pétrolière.

1992: La société prend la décision d’investir en Chine et ouvre un bureau commercial
à Beijing.

1993: MP Colinet achète la société DEMOOR et renforce sa position de leader sur le
marché mondial dans la fabrication de machines outils d’extraction de pétrole.

1994 – 1996: Cette période a été désastreuse pour les ateliers Colinet et pour le secteur
pétrolier en général.

1999: Le parc Ohio holding corporation (MPC) et MP Colinet fusionnent afin de
créer une compagnie unique au monde et leader mondial dans l’équipement de finition
tubulaire. C’est l’équipe belge qui prend les commandes opérationnelle de la nouvelle
structure.

2001: L’entreprise prend la décision de lancer un nouveau produit. Une ligne de
machine appelée MPM qui est le résultat de la collaboration entre MP Colinet et PMC
industrie.

1.2 M.P. Colinet en quelques chiffres :

L’entreprise emploie 81 personnes sous le statut ouvrier et 37 sous le statut employé.
En tout, 169 personnes travaillent pour la structure PMC – MP Colinet.

Le chiffre d’affaire est de l’ordre de 10.000.000 d’euros pour MPC et 25.000.000 pour
PMC – MPC.

    40 à 50 % du chiffre d’affaire en Chine.
    30 à 35 % du chiffre d’affaire aux Amériques
     (Canada/USA/Mexique/Venezuela/Argentine).
    15 à 20 % du chiffre d’affaire en Europe Centrale (Pologne, Tchéquie,
     Roumanie, Russie, Autriche, …).

Les dimensions des tubes produits varient de 5 à 61 centimètres pour le diamètre et
jusqu'à plus de 14 mètres pour la longueur pour un poids pouvant dépasser la tonne.

La précision des machines de MPC est de l’ordre de 6 microns.

Entrée du tube dans la machine/positionnement (centrage,
serrage)/dégrossissage/filetage/sortie du tube : le tout en 28 secondes !




Bastin Jean-Sébastien                      -8-            Institut Supérieur Economique
Exemple d’une machine montée :




Les produits usinés sont généralement des tubes et des manchons


1.3 Eléments d’une machine :
La machine se compose essentiellement de systèmes hydrauliques, électriques,
d’automates programmables…
Sur celle-ci on y trouve des axes qui supportent chacun une tourelle, plus il y aura
d’axe, plus l’espace de travail sera restreins, ce qui imposera des outils de volumes
différents pour le même travail de filetage.




                                                                               Barre



        Têtes


                                                                             Tourelle


                                                      Axe

Bastin Jean-Sébastien                     -9-             Institut Supérieur Economique
Une tourelle permet d’accueillir une ou plusieurs barres pour l’usinage de manchons
ou directement une ou plusieurs têtes pour l’usinage de tube. Dans le second cas, une
fixation est prévu entre la tourelle et la tête.
On distingue sur la tourelle le nombre de barres montable, la forme d’embase, le type
de l’axe compatible à la machine…
Les tourelles pour tubes et manchons sont différentes, les outils sont donc différents
aussi !

La barre est un composant qui soutient la tête et se branche sur une tourelle, ses
dimensions sont liées au diamètre de la pièce usinée.

Une tête se compose d’une ou plusieurs plaquettes fixées elles-mêmes par divers
accessoires tels que des vis, leviers, sous-plaquettes, brises copeau…

La plaquette va usiner la pièce, elle doit donc résister à certaines contraintes de chaleur
et de déformation…
Colinet ne fabrique pas ces plaquettes, celles-ci viennent de carburiers différents, elles
n’auront pas les mêmes tenues, ni les mêmes paramètre (vitesse, avance, profondeur
de prise de matière, désignation…)

Un article est une entité qui représente une tourelle, une barre, une tête, un
accessoire…

Un sous-ensemble est l’association de plusieurs articles, c'est-à-dire une tête habillée
ou une barre habillée…

Un ensemble est un assemblage de sous-ensemble et d’articles ayant des paramètres
précis…




Bastin Jean-Sébastien                     - 10 -           Institut Supérieur Economique
2. Présentation du projet :


2.1 Généralités :

Ce projet vise a la réalisation d’un catalogue embarqué sur CD ROM. Ce catalogue
devra contenir toutes les information nécessaires sur les machines, et les outils créé par
l’entreprise COLINET, et ce pour présenter l’entreprise à une clientèle mondiale.
Du fait que cette clientèle se répartit à travers le monde, le catalogue se doit d’être
multilingue, et c’est aussi un catalogue multimédia qui contiendra du texte, des
graphiques, des images ou des documents annexes…
Il contiendra en plus un système de calcul pour simuler des test de machine-outils, et
tout ceci pourra être géré et mis a jour simplement.


2.2 Première approche :

Le projet est divisé en 2 grandes parties : La gestion des données, et la réalisation du
rendu des données.
La partie de gestion des données est la première dans le processus de création du
catalogue, c’est ici que le catalogue va être chargé en données…
On utilisera donc un système de gestion par base de données, et une fois créée elle
devra être implémentée aisément par un programme.
La seconde partie consiste à la création d’une technique de rendu de catalogue, et à la
suite de cela le support du catalogue sera créé. Cette création de rendu doit être
entièrement modulable, facilement mis a jour.

Une contrainte s’ajoute, le catalogue devra pouvoir s’exécuter a partir d’un CD ROM,
il ne doit donc y avoir aucune installation de fichier sur le disque dur ou de
modification de paramètre sur la machine cliente.
Le CD ROM est donc autonome, c'est-à-dire qu’aucune installation préalable n’est
nécessaire pour le lancement du serveur de base de donnée ni pour le lancement du
player de catalogue.


Certains documents et images seront entreposés dans la base de données.
Cette gestion des documents internes permet une certaine sécurité, la base de donnée
peut être protégée par mot de passe, seul le Player de catalogue est en possession de
celui-ci. Il ne sera donc pas possible d’interroger la base de données autrement que par
le Player.




Bastin Jean-Sébastien                     - 11 -          Institut Supérieur Economique
2.3 La base de donnée :

Ce programme réalisé avec Borland C++ Builder peut gérer en natif les bases de
données de type Intebase, or Firebird est une version d’InterBase OpenSource, qui est
gérée de la même manière.
Firebird est une base de données relationnelle implémentant en grande partie la norme
ANSI SQL-92. Il fonctionne sur Linux, Windows, MacOS-X et une variété de
plateformes d'Unix (Solaris,*BSD, etc..).

Le projet Firebird a en fait pour but d'étendre et d'améliorer les sources d'Interbase 6
fournis par Borland
C'est un SGBD très intéressant, complet, fiable et assez simple d'utilisation.

Dans un premier temps, une première base de données a vu le jour, mais après
multiple discussion avec Mr. Bataille et Mr. Chassoulier, un second schéma de base de
données a été mis au point (Voir MCDs en annexes). Cette base de données ne suit
plus exactement la gestion des articles et machines Colinet, mais devient plus ouverte
pour d’autres types de gestion…
Ce modèle conceptuel ne suit pas exactement une analyse merise, qui est linéaire, mais
s’oriente plus vers une analyse objet de type UML.
Ce type d’analyse permet une plus grande souplesse dans la gestion physique des
données dans la base de données même, mais en contrepartie cette gestion demande un
travail plus élaboré dans l’application d’implémentation.




Bastin Jean-Sébastien                     - 12 -           Institut Supérieur Economique
3. Programme d’implémentation de la base de donnée


3.1 Généralités :

Ce application est un programme d’authoring de catalogue qui va permettre l’insertion
de données de manière simple et structurée dans la base de données. Cette étape est la
première a réaliser avant le lancement du catalogue, c’est ici que l’on va ajouter,
modifier ou supprimer des données dans chacune des tables.
Une fois la gestion validée, le programme prépare le catalogue pour sa mise en place
sur un CD ROM.



                                  Gestion de la
                                  connexion

   Base de
   donnée                                                      Gestions des
                                                               tables



Le programme se constitue d’un premier niveau, qui gère la connexion a la base de
données. Chaque fenêtre secondaire reçoit une connexion a la base de données, et
contient plusieurs requêtes paramétrées.

Les données catalogue sont réparties au travers de 17 fenêtres qui gèrent l’ensemble
des tables.
Chacune des fenêtres permet l’ajout, la modification et la suppression de données dans
une ou plusieurs tables, les données pouvant être du texte, des images, ou tout autre
type documents…


Ce programme se divise en 3 parties :
   - Gestion des données du catalogue
   - Gestion des codes de calculatrices
   - Gestion des fichiers prêts à la gravure




Bastin Jean-Sébastien                   - 13 -          Institut Supérieur Economique
         3.2 Schéma du programme :


                                 Validation
                                 catalogue


               1er niveau
                                                                             Base de
                                              Déconnexion                    données
          Arrêt
                                                            Connexion




       Menu principal




Gestion des                              Gestion des                    Gestion des types
familles d’article                       machines                       d’opérations

Gestion des types                        Gestion des                    Gammes de
d’article                                usures                         produits             2e niveau

Gestion des type                         Gestion des                    Gestion des
de mesures                               documents                      articles

Gestion des type                         Gestion des                    Gestion des sous-
de liens                                 calculettes                    ensembles

Gestion des                              Gestion des                    Gestion des
fournisseurs                             templates                      ensembles




         Bastin Jean-Sébastien                    - 14 -         Institut Supérieur Economique
3.3 Gestion des données du catalogue :

3.3.1 Gestion des familles d’articles :




On regroupe ici une gestion de familles d’articles.
On retrouve actuellement les valeurs Base, Accessoire et Carbure, qui vont déterminer
une première catégorie d’article, dans la nomenclature actuelle cette catégorie précise
la 1re lettre d’un article.

Le seul paramètre à indiquer est le nom de famille.


3.3.2 Gestion des type d’articles :




On regroupe ici une gestion de type d’articles. Les valeurs sont Tête, cartouche, barre,
tourelle… Elles vont déterminer la 2e catégorie de l’article.
Le seul paramètre à indiquer est le nom de type d’article.




Bastin Jean-Sébastien                    - 15 -          Institut Supérieur Economique
3.3.3 Gestion des fournisseurs :




Cette gestion de fournisseur détermine généralement la 2e lettre de la désignation d’un
article dans la nomenclature actuelle, elle est la troisième et dernière catégorie de
l’article.
Le seul paramètre à indiquer est le nom d’un fournisseur.

Ces 3 catégories ne servent qu’au triage ou au filtrage d’articles, et seront exploitable
via le module du rendu de données.


3.3.4 Gestion des type de liens :




La gestion des documents étant différentes d’articles en articles, il faut que celle-ci
reste ouverte, c'est-à-dire qu’il faut pouvoir ajouter des catégories de documents Word
ou PDF sur de la maintenance, des réparations diverses propres aux articles.

Exemple de données : Doc Maitenance, Doc référence, Doc Illustratif ….
On indique ici uniquement le type de liens.


Bastin Jean-Sébastien                     - 16 -           Institut Supérieur Economique
3.3.5 Gestion des gammes :




Cette fenêtre gère les gammes se base de produits, on y indique le nom de la gamme,
et les valeurs d’usinages minimale et maximale.
La gamme (API, premium, VAM…) définit les normes de produits, entre autre les
dimensions minimales et maximales d’usinage de pièces…
Concrètement cette gamme va définir les machines et les outils a utiliser.

On choisit en premier lieu le type de mesure propre a une gamme au travers des
groupe d’énumérations, on y indique un nom de gamme et les diamètres d’usinage …


3.3.6 Gestion des opérations :




Cette gestion d’opération défini les différents usinages réalisable par des outils.
On y indique uniquement le nom du type d’opération.




Bastin Jean-Sébastien                     - 17 -           Institut Supérieur Economique
3.3.7 Gestion des usures de plaquettes :




Elle permet d’enregistrer sous format BLOB des documents de tout type relatifs a des
usures de plaquettes…
On recherche donc le fichier dans un répertoire, et celui-ci va être chargé dans la base
de données. Un bouton « Visu » permet d’extraire un document d’usure depuis la base
de données pour l’afficher.


3.3.8 Gestion des documents annexes :




La gestion des documents annexes regroupe des documents de toutes sortes n’ayant
pas de liens au reste du catalogue… On y indique le titre du document et le fichier a
charger… Ce fichier est enregistré sous format BLOB dans la base de données
Un bouton « Visu » permet d’extraire un document annexe de la DB pour l’afficher.


3.3.9 Gestion des types de mesures

                                                        Gestion des groupes
 Gestion des types                                      d’énumérations
 de mesures
                                                        Gestion des
                                                        énumérations


Bastin Jean-Sébastien                    - 18 -          Institut Supérieur Economique
Ici se trouve la gestion des énumérations et des groupes d’énumérations. Ce type de
gestion va permettre une grande souplesse au niveau de la gestions de variables, de
dimensions d’usinage, et d’autres types de mesures indispensable pour les éléments du
catalogue…




Dans un premier temps se trouve des groupes d’énumérations qui serviront dans des
cas bien particulier comme par exemple lors de la gestion des différentes langues de
template, la gestion des mesures d’usinage d’un ensemble ou d’une gamme de
produit…
On indique uniquement le nom du groupe comme paramètre.




Parmi ces groupes se trouvent les énumération qui peuvent être des mesures, des nom
de variable…
On doit indiquer le nom de l’énumération et son unité (facultative) comme paramètre.




Bastin Jean-Sébastien                   - 19 -          Institut Supérieur Economique
3.3.10 Gestion des articles :                       Gestion des
                                                    montages d’articles

                                                    Gestion des
 Gestion des                                        mesures d’articles
 articles

                                                    Gestion des documents
                                                    annexes d’articles

                                                    Gestion des templates
                                                    de pages WEB



Cette fenêtre permet la gestion d’articles de tout type, plaquette, brise copeau, tourelle,
barre …




Ce premier onglet va gérer les articles, on y indique une désignation, un nom, les trois
catégories qui sont le type d’article, la famille d’article, et le fournisseur. Une image
peut être associée a l’article, elle va être enregistrée sous format BLOB.




Bastin Jean-Sébastien                     - 20 -           Institut Supérieur Economique
Le second onglet gère les mesures propres a l’article, elle sont retrouvées par les
groupe d’énumérations, une valeur numérique et du texte peuvent accompagner ces
mesures…




Cette fenêtre spécifie, si besoin est, la compatibilité de certains articles montés sur
d’autres. A n’utiliser que si cela s’avère nécessaire dans le rendu du catalogue, en effet
il peut être intéressant de visualiser toutes les têtes pouvant se monter sur une barre
particulière, toutes les plaquettes pouvant se loger dans une tête…
On indique le type d’article, une liste de choix s’opère alors pour la désignation de
l’article compatible.

La gestion des templates sera vue ultérieurement dans la partie player.



3.3.11 Gestion des sous-ensembles :

                                                   Gestion de la
                                                   nomenclature d’articles
 Gestion des sous-
 ensembles                                         Gestion des assemblages
                                                   compatible et des
                                                   nomenclatures

                                                   Gestion des templates de
                                                   pages WEB

Grâce a cette fenêtre on peut voir facilement un sous-ensemble de plusieurs outils
monté, c'est-à-dire une tête habillée ou une barre habillée…
On retrouvera une nomenclature d’articles et des images
Un sous-ensemble peut recevoir différentes autres pièces compatibles, on distinguera
donc les différents montages qui auront chacun des mesures… chaque montage a lui
aussi sa nomenclature d’articles…



Bastin Jean-Sébastien                     - 21 -          Institut Supérieur Economique
Gestion du sous-ensemble, on y indique sa désignation, le nom, et l’image associée…
Cette image étant enregistrée par la suite sous format BLOB dans la base de données.




Cette gestion des nomenclature d’article permet de retrouver dans le catalogue un petit
tableau de nomenclature d’article lié a un sous ensembles…
On y indique la famille d’article pour sélectionner aisément l’article, on indique aussi
son n° d’élément de montage et sa quantité.




Cette gestion d’assemblage compatible va permettre de spécifier les différents
usinages possibles avec des articles différents dans le montage du sous-ensemble.
On y indique le numéro de l’élément du sous-ensemble a changer, des références X et
Z, la gamme de produit à travailler et le type d’usinage possible.
Pour chaque assemblage compatible on retrouve là aussi une nomenclature d’article
compatible.

La gestion des templates sera vue ultérieurement dans la partie player.


Bastin Jean-Sébastien                    - 22 -          Institut Supérieur Economique
3.3.12 Gestion des ensembles :

                                                 Gestion de la
                                                 nomenclature de sous-
                                                 ensembles
 Gestion des
 ensembles                                       Gestion de la
                                                 nomenclature d’articles


                                                 Gestion des templates de
                                                 pages WEB

Cette fenêtre permet de voir facilement un ensemble monté sur machine, on y trouvera
donc une nomenclature de sous-ensemble, une nomenclature d’articles une description
des opérations pour chaque outils et des images




Gestion de l’ensemble, on y indique la désignation, la gamme de produit, une
description, ses dimensions d’usinages minimal et maximal et une image.
L’image étant enregistrée au format BLOB dans la base de données…




Bastin Jean-Sébastien                   - 23 -         Institut Supérieur Economique
Ce second onglet affiche sous forme de tableau la nomenclature de sous-ensemble qui
forment l’ensemble. On y indique un numéro d’opération, une description de
l’opération effectuée, une image de l’assemblage et une liste de sous-ensembles
chacun en quantités déterminées.




Une nomenclature d’article est aussi gérée dans le cas ou un petit article de type
accessoire ne se trouverais pas dans un des sous-ensemble spécifié plus haut…
Une sélection du type d’article opère sur l’affichage de désignation de l’article, on
choisit l’article ainsi que la quantité.

La gestion des templates sera vue ultérieurement dans la partie player.


3.3.13 Gestion des machines :

                                   Gestion des mesures de
                                   machines

 Gestion des
 machines                                                                 Composition
                                   Gestion des                            d’ensembles, de
                                   process                                sous-ensembles,
                                                                          et d’articles


Bastin Jean-Sébastien                     - 24 -          Institut Supérieur Economique
Dans une machine on retrouve entre autre : Son nom, sa rotation, le nombre d’axe, les
dimensions d’usinage minimal et maximal et une image enregistrée en format BLOB.




Le second onglet permet d’insérer d’autres types mesure propre a la machine
provenant de la table énumération. On y indique le groupe d’énumération,
l’énumération et la valeur (facultative).




Une machine travaille sur différentes gamme de produits, avec un process bien précis
Un process est une description de la manière de travailler, et les outils utilisé sur la
machine, on y retrouve plusieurs ensembles, sous-ensembles, et articles en quantité
distincte…




Bastin Jean-Sébastien                     - 25 -          Institut Supérieur Economique
On y trouve aussi un commentaire, et un fichier représentant les temps de cycle sous
format BLOB dans la base de données. La gestion des templates sera vue
ultérieurement dans la partie player.

3.4 Gestion codes de calculatrice :

 Gestion des                                       Gestion des
 calculatrices                                     variables

Cette gestion de calculette dynamique est un outils complémentaire du catalogue. Cet
outil permettra a l’utilisateur final de procéder à des calculs en rapport avec son type
de production, ses machines…
La calculatrice est un outils « ouvert » lui aussi, c'est-à-dire que l’on peut modifier ou
ajouter à volonté des calculs, le principe étant en premier lieu de fournir un titre de
calculatrice, d’entrer toutes les variables que l’on doit disposer pour le calcul, et
finalement d’entrer le code sous forme d’expression en code pascal. Ce code peut être
directement testé via des Edit mis a disposition, il suffit alors d’entrer des données
numériques pour voir apparaître un résultat…




Bastin Jean-Sébastien                     - 26 -           Institut Supérieur Economique
Cette partie particulière du programme d’implémentation intègre un objet de la libraire
ExpressLibrary qui est un interpréteur de code pascal.
Une fois les variables déclarée dans la table VARIABLE, les code du calcul doit être
encodé. Ce code est tapé dans un Tmemo et stocké dans la base de donnée sous forme
de BLOB…Une fois le code enregistré l’objet dfxEpressionExplorer va analyser celui-
ci et récupérer les valeur des variable pour donner un résultat.


3.5 Validation du catalogue :

Cet outil fournit avec le programme de gestion de donnée va permettre la préparation
du catalogue pour sa mise en place sur CD ROM.
Le concepteur du catalogue réalise donc cette opération lors de la fin de
l’implémentation d’une nouvelle base de données, ou d’une mise a jour de celle-ci.
Une part de gestion du player du catalogue va être réalisée ici aussi, le concepteur
devra indiquer le répertoire ou vont s’entreposer momentanément le player, la base de
données et les librairies requise. Il devra aussi indiquer les différentes langues qui vont
être a disposition des clients, et indiquer les répertoires concordants.
Le port d’écoute de socket du catalogue est à indiquer aussi, il est recommandé donc
de n’utiliser que des numéro de ports au delà de 1024 pour éviter tout conflit possible
avec d’autres applications qui pourraient tourner sur les machines clientes…




Une fois cette étape validée, un répertoire est créé sur la machine contenant une base
prête a la gravure. Un player est installé, la base de données est copiée, les répertoire
accueillants les pages Web de différentes langues sont créés. Un autorun de base est
lui aussi copié, à charge du concepteur de le modifier a souhait pour personnaliser le
démarrage du CD (changement d’icône, nom affiché dans l’arborescence…)

Contenu du répertoire :
Autant de sous répertoires que de langues spécifiées
   - La base de donnée CATALOGUE.FDB
   - Un Autorun.inf de base
   - Les DLL utilisées par le player de DB : borlndmm.dll cc3250mt.dll
      comctl32.dll gds32.dll ib_util.dll
   - Webserver.ini pour la configuration du player

Bastin Jean-Sébastien                     - 27 -           Institut Supérieur Economique
Le fichier Webserver.ini qui a été créé précédemment lors de la validation du
catalogue, est présent aussi, c’est le fichier de configuration du player. Ce fichier est
modifiable manuellement avant sa gravure en cas de problème de dernière minutes…

Contenu du fichier Webserver.ini :
[DIRECTORIES]
FR=fr
GB=gb
[OPTIONS]
Port=12345
Dir=c:\TESTE

La base de donnée va être lue en mode lecture seule sur le CD ROM, l’outil de
validation va automatiser la modification de la base de donnée pour ne plus avoir
d’accès en écriture et va la copier dans le répertoire de gravure.

Commande utilisée :
ShellExecute(NULL, “open“ , “readonly.bat“,“ “, “ “, SWHIDE);

Readonly.bat:
Active la base de donnée en mode lecture seule, prête à la gravure sur CD ROM

Gfix.exe catalogue.fdb –mode read_only –user sysdba –password masterkey




Bastin Jean-Sébastien                     - 28 -          Institut Supérieur Economique
4. Le Player de catalogue


4.1 Généralités :
Le player est un module qui intègre des outils mis à la disposition du concepteur de
catalogue pour réaliser la charte de navigation dans le catalogue. Grâce à ces outils on
peut extraire aisément des données de la base données et façonner de n’importe quelle
manière le rendu.

Une fois la mise en page réalisée, c’est le player qui analyse le tout et affiche un
résultat.

4.2 Choix du support :

Une fois la base de donnée prête et remplie, il faut trouver un environnement, un
support accessible par tous pour sa bonne visualisation…
Le choix du support a été l’objet de réflexions par mon maître de stage et moi-même,
celui-ci devait être le plus dynamique possible.
L’utilisation de l’environnement Web a donc été retenu car il répondait aux exigences
du projet, il est multi-plateforme, autonome et dynamique… Un Webdesigner peut
gérer l’interface graphique et le développement futur du catalogue, une page WEB est
par définition multi-plateforme, et le serveur WEB devra être développé pour être
embarquable.
L’environnement WEB permet l’utilisation de l’HTML, des feuilles de styles, du
javascript, du Flash, et bien d’autres outils pour améliorer le rendu du catalogue !


4.3 Choix des outils

Le player est donc un serveur WEB embarquable sur CD ROM, il est développé sous
C++ Builder qui contient de multiples librairies de gestion des socket.
Ce serveur WEB est un programme qui écoute sur un port précis de la machine,
récupère des requêtes, les analyses, redirige celles-ci, et renvoie une réponse au client.
La particularité de ce player est qu’il intègre un serveur Web et un navigateur Internet.

Le player contient les objet suivants :
   - TcppWebBrowser  pour l’utilisation du navigateur
   - TIBDatabase  Pour l’accès a la base de donnée FireBird
   - TIBQuery  Pour gérer des requêtes SQL sur la base de données
   - TidHTTPServer  pour la gestion du serveur de Socket

Le dernier objet utilisé est un TpageProducer qui permet de convertir un modèle
HTML en une chaîne de commandes HTML pouvant être interprétée par une
application client, par exemple un navigateur Web. Les modèles HTML contiennent



Bastin Jean-Sébastien                     - 29 -           Institut Supérieur Economique
des commandes HTML et des balises transparentes HTML qui sont remplacées par des
valeurs personnalisées dans l'événement OnHTMLTag.

Ce sont ces balises qui sont les outils mis à la disposition du concepteur de
catalogue pour l’extraction des données.


4.4 Connexion du client :
Le serveur WEB est le moteur du rendu, il va gérer les connexions des clients WEB et
aiguiller leurs requêtes http.
Chacune des connexions au serveur WEB se fait via un serveur de socket TCP/IP

Les sockets serveur ouvrent une connexion socket d'écoute afin d'établir une file de
requêtes client en attente. Lorsqu'une requête de la file est acceptée par le socket
serveur, un événement OnAccept se produit. Lorsque le socket serveur accepte la
connexion, un thread est créé.

Chaque thread géneré va appeler la fonction OnCommandGet(), qui sera une section
dite critique du programme. Ici se réaliseront des accès à la base de données exclusifs.

Les sections critiques fonctionnent comment une porte ne pouvant être franchie que
par un seul thread à la fois. Pour utiliser une section critique, il faut créer une instance
globale de TCriticalSection. TCriticalSection dispose de deux méthodes, Acquire (qui
empêche les autres threads d'exécuter la section) et Release (qui retire le blocage).

Chaque section critique est associée à la mémoire globale devant être protégée.
Chaque thread accédant à cette mémoire globale doit commencer par utiliser la
méthode Acquire pour vérifier qu'un autre thread n'est pas en train de l'utiliser. Une
fois terminé, le thread appelle la méthode Release afin que les autres threads puissent
accéder à la mémoire globale en appelant Acquire.

Exemple de code utilisant une section critique :

pLockXY->Acquire(); // Bloque les autres threads

try {
  Y = sin(X);
}
__finally {
  pLockXY->Release();
}




Bastin Jean-Sébastien                      - 30 -           Institut Supérieur Economique
4.6 Définitions des Tags :

Les Tags sont des balises incorporées au code HTML d’une page web, ils vont
permettre un rendu dynamique par des accès à la base de données entièrement
transparent pour le webdesigner.

Ces Tags ont pour principal avantage d’être entièrement propriétaires à l’application,
et autonomes face à une base de données.

Un Tag va se présenter sous la forme suivante : <#NOM_DE_TAG liste de paramètres
et de valeurs >

Ces Tags sont prédéfini et encodé en C++ dans le serveur Web, lorsqu’on fournit une
page web au PageProducer, il analyse toutes les lignes, et s’il trouve un Tag il
déclenche l’évènement OnHTMLTag… C’est dans cette fonction que se déroule
l’analyse des paramètres et la transformation en code HTML.

Les Tags sont divisés en 2 catégories :
      1. Les tags de récupération d’informations uniques
      2. Les tags de récupération d’informations multiples


4.6.1 Récupération d’information unique :

Ces types de Tags servent a rechercher une information bien précise lors d’une requête
SQL, on cherche un champ unique sur une ligne unique. Il faut donc veiller a ce que
les clés de recherche soient suffisamment précises pour ne pas récupérer plusieurs
lignes dans le résultat de la requête. On utilisera généralement les clés primaires
comme clés de recherche.

Les Tags de récupération unique vont chercher les principaux paramètres dont ils ont
besoins dans l’URL, en effet, par soucis de facilité de conception de pages web, la
table, et les multiples clés de recherche ne seront pas a préciser… Elles seront
généralement créées automatiquement par d’autres Tags fournit pour la création de
lien hypertexte…

Type d’URL nécessaire :
http://127.0.0.1:10000/script/PageWeb?table=NomDeTable&CléPrimaire=Valeur&…

Le serveur envoie la page demandée au PageProducer qui récupère le Tag, décompose
ses paramètres dans une TstringList, et les paramètres de l’URL dans une seconde
TstringList.
Lors d’une demande d’un des Tag de récupération d’information unique, le
PageProducer lance une requête SQL a la base de données



Bastin Jean-Sébastien                    - 31 -          Institut Supérieur Economique
Type de requête SQL :
SELECT * FROM NomDeTable WHERE CléPrimaire=Valeur AND ...


4.6.1.1 Les données alphanumériques :

<#RECUP_UNIQUE champs=NomDuChamp>

Ce Tag renvoie la valeur alphanumérique d’un champ de la base de donnée, celui-ci
est indiqué comme paramètre du Tag. Le Tag est donc remplacé physiquement dans la
page web par du texte.
L’objet IBQuery récupère tous les champs de la table, le PageProducer sélectionne
uniquement le champ souhaité

Type de récupération de champ :
IBQuery1->DataSet->FieldByName(NomDuChamp)->AsString

4.6.1.2 Les Images:

<#RECUP IMAGE champs=NomDuChamp
              [width=Numérique]
              [heigth=Numérique]
>

Ce Tag génère un lien HTML d’image vers un champ de la base de donnée, celui-ci
est indiqué comme paramètre du Tag. Le reste des paramètres, comme le nom de la
table et les clés de recherches, sont générés automatiquement grâce au contenu de
l’URL

Type de lien image HTML généré :
<IMG SRC= « http://localhost:10000/document/NomImage ?
table=NomDeTable&CléPrimaire=Valeur&… »width=Valeur heigth=Valeur>

Les paramètres width et heigth indiquent la largeur et la hauteur à appliquer sur
l’image, ceux-ci étant facultatifs…
Le serveur aiguille les requêtes si le chemin d’accès correspond à un DOCUMENT ou
à un SCRIPT, dans le cas d’un document, une requête est directement adressée a la
base de données sans passer par un PageProducer. Il y a donc autant de requêtes
supplémentaires que de demandes d’images…

Lors des requêtes suivantes, le serveur web va récupérer les données du champ de type
BLOB par la façon suivante :

IBQuery1->DataSet->FieldByName(NomDuChamp)->AsBlob

Ces données sont recueillies dans un flux d’octets qui est ensuite retourné au client...

Bastin Jean-Sébastien                     - 32 -          Institut Supérieur Economique
Exemple de retour de flux :

Return IBQuery2->CreateBlobStream(IBQuery2->FieldByName(nomCol)
,bmRead);


4.6.1.3 Les documents :

<#RECUP_DOCUMENT champs=NomDuChamp>

Ce Tag génère un lien hypertexte vers un champ de la base de données, celui-ci est
indiqué comme paramètre du Tag. Le reste des paramètres est toujours généré grâce au
contenu de l’URL

Type de lien hypertexte généré :
<A HREF= « http://127.0.0.1:10000/document/NomDuDocument ?
table=NomDeTable&CléPrimaire=Valeur&… »> Document </A>

Le PageProducer remplace donc le Tag par un lien qui va faire l’objet d’une seconde
requête http du client. Le serveur web va aiguiller la demande, pour faire directement
une requête SQL a la base de donnée comme pour le Tag d’image ci-dessus, et ce par
la récupération d’un champs BLOB…
Le client distinguera les image et tout autre document grâce au type MIME inscrit dans
la réponse http.

Exemple de reconnaissance du type MIME :

AResponseInfo->ContentType = GetMIMETypeFromFile(ARequestInfo-
>Params->Values["nomfi"]);


4.6.1.4 Génération de lien hypertexte :

<#LIEN table = NomDeTable
         page = NomDePage
         [clé de recherche = valeur]
         […]
> Cliquer ici </A>

Ce type de Tag génère un lien hypertexte vers une page, il utilise les paramètres table
et page qui sont obligatoires. On peut aussi ajouter de multiples clés de recherche avec
leurs valeurs si la page de destination le demande…

Type de lien généré :


Bastin Jean-Sébastien                     - 33 -         Institut Supérieur Economique
<A HREF= « http://127.0.0.1:10000/script/NomDePage?
table=NomDeTable&CléDeRecherche=Valeur&… »> Cliquer ici </A>

A la suite du Tag #LIEN on tape le texte qui sera le lien physique, puis on referme le
lien par la balise </A>.


4.6.2 Tag de récupération de données multiples


4.6.2.1 Tag de Tableau :

Ces Tag génèrent des tableaux HTML qui peuvent contenir a la fois des données
alphanumériques, des images, des liens vers des champs BLOB, des liens
hypertextes…
Par soucis de facilité de gestion de tableau HTML, ce Tag génère en fait une série de
balise <tr> <td>… </td> </tr>, le Webdesigner peut ensuite lui ajouter une mise en
forme, des lignes supplémentaire de titre…

Ce type de Tag peut utiliser de multiples paramètres qui sont divisés en 3 catégories :
   - les paramètres de gestion de table
   - les paramètres d’affichage de champs de table
   - les paramètres de rendu

Type de Tag :
<#TABLE pk=clé primaire,[clé,…]
             [table=NomDeTable]
             [fk=(FK,cle_recherche_URL),[(FK,cle_recherche_URL)],…]
             [condition=champ%20like%20’C%25’]

          litteral=texte
          texte=NomDeChamp,[ NomDeChamp,…]
          image=NomDeChamp,[ hauteur,largeur ]
          lien=texte(NomDeChamp),NomDePage,[
[NomDeTable],[(FK,NomDeChampReférence)],[(FK,ChampRéférence)],[…] ]
          lien=image(NomDeChamp,[ hauteur,largeur ]),NomDePage,[
[NomDeTable],[(FK,NomDeChampReférence)],[(FK,ChampRéférence)],[…] ]
          lien=litteral(texte),NomDePage,[
[NomDeTable],[(FK,NomDeChampReférence)],[(FK,ChampRéférence)],[…] ]
          lien_litteral=texte,LienHypertexte
          document=NomDeChamp
          saisie=NomDeChamp

             [odd_color=CodeCouleurHTML]
             [par_color= CodeCouleurHTML]
             [max_line=Nombre]

Bastin Jean-Sébastien                    - 34 -          Institut Supérieur Economique
>


4.6.2.1.1 Paramètres de gestion de table :

Ces 4 paramètres permettent de décrire des éléments importants de la table concernée
pour le PageProducer.

     Pk : indique la ou les clés primaires de la table. Ce champ est obligatoire, il
      servira notamment a la génération de liens hypertextes ou d’images qui seraient
      demandés plus loin dans le tableau…

     Table : Ce paramètre est facultatif, il précise une table de la base de données qui
      sera utilisée pour l’affichage des données dans le tableau HTML. Si ce
      paramètre n’est pas indiqué dans le Tag, le serveur cherchera alors dans l’URL.
      Si l’URL a été générée par un Tag de type <#LIEN>, elle contient entre autre le
      nom de page visée, et la table a accéder…

     Fk : indique la ou les clés étrangères de la table, ce champ est facultatif, il sert
      notamment lorsque les noms des clés de recherches envoyées par URL seraient
      différentes des noms des clés étrangères de la table.

     Condition : Ce paramètre permet d’indiquer la recherche à effectuer dans la
      table, c'est-à-dire les conditions a appliquer au lieu d’utiliser les clés de
      recherches reçues par URL. C’est en fait une requête SQL qui, étant dans une
      page HTML, doit respecter la norme UTF (voir annexes), les caractères
      spéciaux comme un espace ou un ‘%’ seront écrit de la façon suivante %20 et
      %25


4.6.2.1.2 Paramètres de gestion de champs :

Ils vont permettre d’insérer des colonne au tableau HTML, et le contenu peut être de
l’alphanumérique, des lien, des images… L’ordre d’affichage des colonne suivra
l’ordre de déclaration des champs et des paramètres.

     Litteral : Paramètre de Tag permettant d’insérer une colonne contenant du texte
      libre, ne venant pas de la base de donnée… Seule contrainte due au
      PageProducer, est que des caractères HTML spéciaux comme par exemple « <
      # > \ ‘ ‘ » devront être écrit encodé sous une norme UTF (voir annexes)

     Texte : Peut contenir plusieurs nom de champs et l’affichage sera du texte.

     Image : Ce paramètre utilisera la même technique que le Tag
      <#RECUP_IMAGE> , on y indique le nom du champ BLOB, la hauteur et la
      largeur de l’image. Ceci a pour effet de créer un lien de type <IMG SRC>. Si


Bastin Jean-Sébastien                         - 35 -       Institut Supérieur Economique
       les 2 dernières valeurs sont manquante, l’image sera affichée dans sa taille
       réelle.

    Lien : Ce paramètre va créer un lien de même type qu’un tag <#LIEN> pour
     chaque ligne du tableau HTML. La première valeur indique le type de champs
     qui fera le lien, c'est-à-dire un champ alphanumérique, une image de la base de
     données, ou un simple texte littéral… Liste des choix :
     - texte(NomDuChamp)
     - image(NomDuChamp, [hauteur, largeur])
     - litteral(texte)

       La seconde valeur précise la page a pointer, et s’il n’y a plus d’autre valeur dans
       ce paramètre, les valeurs suivantes seront créées par l’URL appelante, c'est-à-
       dire le nom de la table, et les différentes clés de recherches…

       La troisième valeur, qui est facultative, indique la table a utiliser tout comme
       dans le tag <#LIEN>.
       Les valeurs suivantes préciseront les clé de recherches, elles devront se
       présenter sou la forme :
               (FK,ChampRéférence)
     - FK étant le nom de la clé étrangère de la table citée juste précédemment.
     - Et le champs de référence précise le contenu a appliquer depuis la table citée
         par l’URL

    Lien_litteral : Ce paramètre crée un lien hypertexte vers une autre page que
     celles du catalogue. La première valeur est le texte du lien, la seconde valeur est
     l’URL a pointer.

    Document : indique que l’on désire récupérer un champs BLOB de la base de
     données, ce paramètre crée un lien hypertexte de même type que celui du tag
     <#RECUP_DOCUMENT>. Une fois que le client clique sur ce lien, un flux
     d’octet est renvoyé au navigateur, l’affichage est possible via le type MIME de
     la réponse http

   Saisie : Ce paramètre est utilisé quand le serveur web a besoin de valeurs de la
    part du client, généralement pour la gestion des calculettes du catalogue.
    Lorsque le PageProducer analyse ce paramètre, il renvoie le code HTML
    suivant :
           <INPUT TYPE= texte NAME= NomDuChamp
VALUE=NomDuChamp>

       les valeurs entrées par le client seront cette fois passées par méthode POST


4.6.2.1.3 Paramètres de rendu:




Bastin Jean-Sébastien                     - 36 -          Institut Supérieur Economique
Ces paramètres permettent une mise en forme du tableau HTML, tous trois sont
facultatif…

    Odd_color : Paramètre précisant le code couleur a appliquer pour les ligne
     impaires du tableau HTLM. Si rien n’est indiqué, la couleur blanche est
     appliquée

    Par_color : Paramètre précisant le code couleur a appliquer pour les ligne paires
     du tableau HTLM. Si rien n’est indiqué, la couleur blanche est appliquée

    Max_line : Précise le nombre de ligne maximale a afficher dans le tableau
     HTML. Si plus de lignes sont disponible que la valeur indiquée, des liens
     hypertextes sont créé et pointent vers les pages suivantes…

Exemple d’affichage de liens de pages suivantes :
<123>


4.6.2.2 Tag de résultat

<#RESULTAT>

Ce type de Tag s’utilise avec les calculatrices et renvoie la valeur du résultat du calcul.
Il est de pair avec l’utilisation du Tag <#TABLE> et de son paramètre « saisie »


4.6.2.3 Tag de menu déroulant

Ces Tags génèrent des lignes de liste déroulantes
Par soucis de facilité, ce Tag génère en fait une série de balise <option
value= « texte »> texte </option>, à charge du webdesigner de gérer le liens vers
d’autre page

Type de tag :
<#OPTION_SELECT
              table=NomDeTable
              option=NomDeChamp
              value=NomDeChamp
>

Le paramètre « table » indique la table depuis laquelle seront extraites les valeurs,
« option » indique le champ a afficher, et le paramètre « value » indique la valeur
effectivement envoyée a la page suivante…




Bastin Jean-Sébastien                     - 37 -           Institut Supérieur Economique
3.7 Schéma logique

Appels de fonction lors d’une requête http GET du client vers le serveur Web.

IdHTTPServer1CommandGet(…)
   - Si demande de page Web  GetProducer(…)
   - Si demande d’objet de la DB  GetBlob(…)
   - Si demande d’image  return Tstream

GetProducer(…)
   - Décompose les paramètres passés par GET ou POST
   - Appel au TpageProducer

PageProducer1HTMLTag(…)
   - Analyse de TAG d’une page Web
   - Retourne uniquement du code HTML
   - RECUP_UNIQUE  retourne la valeur d’un champ de la DB
   - RECUP_IMAGE  GetImage(…)
   - RECUP_DOCUMENT GetDocument(...)
   - TABLE  AnalyseTagParam(…)
   - LIEN  GetLien()
   - RESULTAT GetResultat(…)
   - OPTION_SELECT  retourne les valeurs de champs de la DB

GetImage(…)
   - Création d’un lien type <IMG SRC> contenant les clé primaire pour récupérer
      l’image par un flux binaire
   - Retourne la chaîne

GetDocument(…)
   - Création d’un lien type <A HREF> contenant les clé primaire pour récupérer
     l’objet par un flux binaire
   - Retourne la chaîne

GetLien(…)
   - Création d’un lien type <A HREF> pour rediriger vers une autre page Web
   - Retourne la chaîne

AnalyseTagParam(…)
  - Récupération des champs de la DB via des GetImage(), GetDocument(),
      GetLien()…
  - Retourne la chaîne <TD> Texte </TD> <TD> …</TD>…

GetResultat(…)
   - Récupere le code de la calculatrice
   - Exécute le calcul via dfExpressionExplorer()

Bastin Jean-Sébastien                   - 38 -         Institut Supérieur Economique
       -     Retourne le résultat sous forme d’une chaîne

    GetBlob(…)
       - Récupère le champ BLOB demandé et retourne un Stream binaire


    3.8 Schéma de récupération de BLOB




                                                             Base de donnée catalogue




                                                                 3                      6
Serveur Web


                                                                      PageProducer


           Sélection de                                                           Rapatriement
                                                       Analyse des
           page Web                                                               de BLOB
                                                       Tags
                                 2




                                                                              5
                     1                                   4                                  7




                                               Analyse de la page
                                               si demande
                                               d’image
                        Client Web
    Bastin Jean-Sébastien                     - 39 -             Institut Supérieur Economique
   1. Demande de page Web dont l’URL contiens généralement le nom de page
      pointée, le nom de la table de la base de donnée, les clé de recherches et leurs
      valeurs.
   2. Le serveur Web recherche la page Web indiquée, et la fournit au PageProducer
   3. Le PageProducer analyse la page à la recherche de Tag prédéfinis et exécute au
      besoin des requêtes SQL.
   4. Le PageProducer remplace les Tag par du langage HTML et retourne la page
      Web au client.
   5. Le navigateur du client analyse la page Web reçue et renvoie autant de requêtes
      http qu’il y a de demande d’images dans la page.
   6. Le serveur Web effectue une requête SQL pour récupérer le champs BLOB
      contenant l’image demandée
   7. Le serveur renvoie ensuite le BLOB au moyen d’un Stream binaire au client.

Dans le cas d’une demande de page Web contenant des images venant de la base de
données, il y aura :
   - 1 requête http du client vers le serveur Web
   - 1 réponse http du serveur vers le client
   - Autant de requête/ réponse qu’il y a de demande d’image dans la page Web
   - plusieurs requêtes SQL du serveur vers la base de données
          o des requêtes SQL pour les Tags utilisés et transformés par le
              PageProducer
          o autant de requêtes SQL que de demande vers un champs BLOB

Exemple de retour de Stream BLOB :
IBQ_Stream->CreateBlobStream(IBQ_Stream ->FieldByName(nomCol) ,bmRead);




Bastin Jean-Sébastien                   - 40 -          Institut Supérieur Economique
3.9 Gestion des templates externes et internes

Le catalogue se compose physiquement de 2 couches de templates, les externes et les
internes à la base de données.

Les templates externes sont en fait le squelette du catalogue, ils définissent le
cheminement de navigation entre les visualisations des différents objets contenu dans
la base de données.
Physiquement les templates externes sont enregistrés dans les répertoires et sous-
répertoires du CD ROM.

La seconde couche est une extension qui permet au concepteur de catalogue d’ajouter
momentanément et à souhait des pages Web relatives à des objets de la base de
données.
On peut par exemple ajouter un nouvel article et lui associer une page web particulière
de telle façon que le client aura une vue différente que celle offerte par le template
externe. Il se peut qu’il y aie d’importantes modifications d’une machine, on va
pouvoir alors mettre en avant celle-ci sans pour autant changer le squelette de
navigation du catalogue.
En réalité le player va, lors de chaque requête http, analyser les paramètres reçus par
URL et effectuer une requête SQL pour vérifier la présence d’une page WEB interne.
Si une page a été trouvée, elle sera affichée avant celle du template externe.

Les templates internes peuvent être associés à des articles, des machines, des
ensembles et des sous-ensembles et leurs gestion se fait lors de l’implémentation de la
base de données. Des onglets sont prévu a cet effet pour chacune des fenêtres : gestion
d’articles, gestion de sous-ensembles, gestion d’ensembles et de machines…




Voici un exemple de gestion de template interne d’article, on y indique le type de
langue de la page insérée par le biais des énumérations. On cherche aussi le fichier
HTML pour ensuite l’intégrer dans la DB sous forme de BLOB.


Bastin Jean-Sébastien                    - 41 -          Institut Supérieur Economique
Une gestion de tous les templates internes se fait via une dernière fenêtre du
programme d’implémentation…




3.10 Gestion des langues

Le catalogue étant multilingue, la gestion des langues a donc été prise en compte. On
trouvera donc des répertoires différents dans le CD ROM pour chacune des langues
souhaitées, les pages Web appropriées s’y trouveront.

A charge donc du Webdesigner de réaliser les templates par défaut en différentes
langues, à lui aussi de gérer au mieux sa gestion d’images externes et autres
documents de telle sorte qu’ils soient le moins redondant possible. Par exemple
l’image d’un bouton doit pouvoir s’afficher en plusieurs langues, il y aura donc
plusieurs images, par contre une image de fond peut se trouver dans un répertoire
commun a toutes les langues… Le player a un accès en lecture a tous les répertoires du
CD ROM sur lequel il est installé.

Une page dans le répertoire racine se nommant index.html servira à la redirection des
clients en fonction de la langue choisie. Le chemin d’accès de l’URL indiquera au
serveur web la langue désirée.
Un système de gestion de Cookie y est aussi intégré pour ne pas avoir a choisir la
langue à chaque lancement du catalogue sur une machine cliente. Lors du premier
lancement de catalogue, la langue Anglaise est choisie par défaut.

Grâce au fichier Webserveur.ini du répertoire racine, la liste des répertoires est
associée à un code de langue, le player peut à tout moment récupérer le chemin
d’accès de l’URL, et vérifier la présence d’un template interne dans cette même



Bastin Jean-Sébastien                     - 42 -          Institut Supérieur Economique
langue ! Si rien n’est trouvé, le template externe cité dans l’URL va alors être
affiché…


3.11 Intégration des Tag dans Dreamweaver

Cette partie du projet permet une certaine aisance au WebDesigner lors de la
conception de templates externe ou interne sous Macromedia Dreamweaver.
Ce produit est un programme de création de page Web WYSIWIG complet, et peut
intégrer de nouvelles balises personnalisées, ceci dans le but de vérifier la bonne
orthographe du document et d’aider le concepteur en affichant les paramètres à utiliser
lors de l’encodage d’une de ces balises.

Exemple de création d’une balise personnalisée :
Dans Dreamweaver
    Aller dans Edit - Tag libraries
    Cliquer sur le bouton « + » et choisir « New Tag Library » pour insérer une
      nouvelle librairie de balise.
    Donner un titre à cette nouvelle librairie : « Balise du catalogue » puis OK
    Cliquer sur le bouton « + » et choisir « New Tag » pour insérer une balise dans
      la librairie, puis OK
    Donner un titre a la nouvelle balise : « RECUP_UNIQUE » et décocher la case
      « Have matching End Tag », car dans notre cas il n’y a pas de balise ouvrante et
      fermante
    Une fois la balise crée choisir dans la liste déroulante « Case » la valeur
      « UpperCase » et ce, pour forcer les majuscules lors de l’encodage du nom de
      balise.
    Cliquer sur le bouton « + » et choisir « New Attribute » pour insérer un attribut
    Donner un titre à cet attribut : « champs » puis OK
    Une fois l’attribut crée choisir dans la liste déroulante « Attribute Case » la
      valeur « LowerCase » et ce, pour forcer les minuscules lors de l’encodage de
      celui-ci.
    A la fin de l’encodage de toutes les balise, sélectionner la librairie et entrer un
      préfixe « # » puis cliquer sur OK.


4. Le site WEB

Cette dernière partie du projet est l’application et l’utilisation de tous les autres
éléments, c'est-à-dire l’exploitation d’une base de données implémentée par le
programme vu précédemment, et l’utilisation de Tags interprétés par le serveur Web.

Le « site web » du catalogue a été réalisé dans un premier temps pour des phases de
test sur les Tags, une fois ces tests validé il ne restait plus qu’a définir une analyse de
gestion de navigation entre les différentes tables de la base de données.



Bastin Jean-Sébastien                      - 43 -           Institut Supérieur Economique
Cette navigation doit être la plus simple possible pour le client, il ne doit pas y avoir
beaucoup de pages pour trouver l’information désirée.
Un squelette de site web a donc été mis en place, par la suite un designer pourra alors
l’agrémenter d’animation, d’autres images ou sonorités…


4.1 Schéma de navigation :

Index.html  Liste_machine.html  Detail_machine.html  Detail_process.html

             Liste_ensemble.html  Detail_ensemble.html

             Liste_sous_ensemble.html  Detail_sous_ensemble.html

             Liste_article.html  Detail_article.html

             Liste_plaquette.html

             Liste_document.html

             Liste_calculette.html  Detail_calculette.html


Index.html est la page d’accueil du catalogue, elle offre un menu composé des pages
Haut.html, Gauche.html et Contenu.html.
Elle utilise des Frames HTML qui permettent de ne recharger qu’un des cadres à la
fois pour une meilleur lisibilité et séparation des menus et des pages de navigations…

Haut.html intègre un code JavaScript pour une gestion de Cookie, celle-ci va permettre
de configurer la machine cliente pour la langue choisie.

Contenu.html affiche les liens hypertextes vers les autres pages de navigation entre
machines, ensemble, sous-ensemble… Elle intègre enfin un Tag de type
<#OPTION_SELECT> qui permet de filtrer la demande d’affichage d’articles par la
sélection d’une famille d’article.

Gauche.html Est un menu général qui sera visible tout au long de la navigation par
soucis de facilité…

Liste_machine.html ne reçoit aucun paramètre particulier, elle affiche un tableau
reprenant la liste des machines via le Tag <#TABLE>. Cette liste présente le nom,
quelques valeurs propres à la machine et une image réduite.
Des liens hypertextes sont générés automatiquement vers la page Detail_machine.html

Detail_machine.html reçoit le nom de la clé primaire de la table machine ainsi que sa
valeur comme paramètre. Cette page affiche les détails complets sur la machine


Bastin Jean-Sébastien                     - 44 -          Institut Supérieur Economique
spécifiées via des Tags de type <#RECUP_UNIQUE> <#RECUP_IMAGE> ainsi que
la nomenclatures des process via un Tag <#TABLE>.
De liens sont générés automatiquement vers la page Detail_process.html

Detail_process.html reçoit le nom et la valeur de la clé étrangère de la table process.
Cette page affiche le détail d’un process machine, c'est-à-dire la nomenclature des
ensembles qui le composent via un Tag <#TABLE>. Les informations propres au
process se font via les Tags <#RECUP_UNIQUE> et <#RECUP_DOCUMENT>
Des liens sont générés automatiquements vers les pages Details_ensemble.html

Liste_ensemble.html ne reçoit aucun paramètre, elle affiche une liste des ensemble
composé de sa désignation, de quelque valeurs propres à celui-ci et une image réduite.
Des liens sont aussi généré vers la page Deatil_ensemble.html

Detail_ensemble.html reçoit le nom et la valeur de la clé primaire de la table ensemble
comme paramètre. Cette page affiche les détails complet d’un ensemble via des Tags
<#RECUP_UNIQUE> et < #RECUP_IMAGE>, des nomenclatures de sous-
ensembles et d’articles sont affichées dans 2 tableaux via des Tags <#TABLE>.
Des liens sont générés automatiquement vers les pages Details_ensemble.html et
Detail_article.html

Liste_sous_ensemble.html affiche une liste des sous-ensembles répertoriés dans la
base de données et génère aussi de liens vers la pages Details_sous_ensemble.html via
un Tag <#TABLE>

Details_sous_ensemble.html reçoit le nom et la valeur de la clé primaire de la table
sous_ensemble comme paramètre. Cette page affiche les détails complet d’un sous-
ensemble via des Tags <#RECUP_UNIQUE> et < #RECUP_IMAGE>, ainsi qu’une
nomenclature d’articles et d’assemblages compatibles via des Tags <#TABLE>.
Des liens sont générés automatiquement vers la page Detail_article.html

Liste_article.html reçoit un paramètre généralement le nom et la valeur de la famille
d’articles désirés, et ceci par soucis de clarté… Cette page affiche une liste d’article
composée de quelques valeurs et d’une images via le Tag <#TABLE>.
Il y a génération de liens hypertexte vers la page Details_article.html

Detail_article.html reçoit le nom et la valeur de la clé primaire de la table article
comme parametre. Elle affiche toutes les données relatives à un article via des Tags
<#RECUP_UNIQUE> et <#RECUP_IMAGE>. Une nomenclature d’articles est
affichée ainsi qu’une série de mesures et de documents propres a l’article via des Tags
<#TABLE>.

Liste_plaquette.html affiche uniquement la listes des documents relatifs a des usures
de plaquettes via un Tag <#TABLE> qui sont téléchargeable sur la machine cliente…




Bastin Jean-Sébastien                     - 45 -           Institut Supérieur Economique
Liste_docs.html affiche quand à elle une listes de documents annexes téléchargeable
eux aussi par le client…

Liste_calculette.html est l’outil annexe qui permet au clients de réaliser différents
calculs préétablit dans la base de données. Cette page affiche donc l’ensembles des
calculs réalisable via un Tag <#TABLE> et des liens sont généré automatiquement
vers la page Details_calculette.html

Detail_calculette.html va permettre a l’utilisateur d’entrer des données numérique qui
vont charger les variables demandées lors du calcul. Le tableau de saisie se fait via un
Tag <#TABLE>, le résultat est lui affiché via le Tag <#RESULTAT>




Bastin Jean-Sébastien                    - 46 -           Institut Supérieur Economique
5. Conclusion

Ce stage ma permis d’apprendre beaucoup sur la gestion de projet, en effet, les
finalités et les besoins n’étant pas parfaitement définie, il m’a fallut réaliser un cahier
des charges après multiples discussions avec le personnel.
Cette démarche autonome m’a donc permise d’apprécier les difficultés d’une analyse
de projet, et la gestion du temps impartit pour la réalisation de celui-ci.

La gestion des données au sein de la base de données a aboutit à de nombreuses
discussions, qui ont d’elles même aboutie a des améliorations et des modifications
importantes…
J’ai donc pu me rendre compte que le travail d’analyste-programmeur demande
beaucoup de patience et d’adaptations.

Enfin, j’ai réalisé qu’un gros projets demande la coopération de plusieurs spécialités
dans le domaine informatique qui sont, l’analyse, la programmation, et le design, tous
trois complémentaires.

Ce projet est donc extrêmement formateur pour moi et m’a conforté dans le choix de la
formation que j’ai suivis à l’ISE, et dans l’idée que je m’étais faite d’une carrière
professionnelle.




Bastin Jean-Sébastien                      - 47 -           Institut Supérieur Economique
6. Annexes


Utilisation de Borland C++ Builder 5 :

Au démarrage de C++Builder, vous êtes immédiatement placé dans l'environnement
de développement intégré, appelé également EDI. Cet environnement propose tous les
outils nécessaires à la conception, au test, au débogage et au déploiement
d'applications.

L'environnement de développement C++Builder contient un concepteur visuel de
fiches, l'inspecteur d'objets, la palette des composants, le gestionnaire de projet,
l'éditeur de code source, le débogueur et l'outil d'installation.
                                                                 Palette des composants




          Inspecteur d’objet            Editeur de code source         Concepteur visuel de
                                                                       fiche
Présentation de la VCL

La bibliothèque des composants visuels (VCL) utilise le modèle Propriétés, Méthodes
et Evénements (PME). Le modèle PME définit les données membres (propriétés), les


Bastin Jean-Sébastien                     - 48 -          Institut Supérieur Economique
fonctions qui opèrent sur les données (méthodes) et un moyen d'interagir avec les
utilisateurs des classes (événements). La VCL est une hiérarchie d'objets, écrite en
Pascal Objet et liée à l'EDI C++Builder qui permet de concevoir rapidement des
applications.

Propriétés

Les propriétés sont les caractéristiques des composants. On peut voir et modifier les
propriétés à la conception et obtenir une réponse immédiate des composants dans
l'EDI.

Méthodes

Les méthodes sont des fonctions qui sont des membres d'une classe. Les méthodes de
classe peuvent accéder à toutes les propriétés publiques, protégées et privées et aux
données membre de la classe, on les désigne fréquemment par le terme fonctions
membres.

Evénements

La Programmation Pilotée par Evénement (PPE) signifie que l'on programme en
répondant à des événements. "Pilotée par événement" signifie que le programme ne
restreint pas les actions suivantes de l'utilisateur. Par exemple, dans un programme
Windows, le programmeur ne peut savoir la succession d'opérations que l'utilisateur va
entreprendre. L'utilisateur peut choisir une option de menu, cliquer sur un bouton ou
sélectionner du texte.

Utilisation d’une connexion à la base de donnée :

IBDatabase :
Cet objet fournit en standard avec Borland C++ Builder nous permet d’accéder à des
bases de données de type InterBase en natif et non plus par un pont ODBC… Ce
système ne nécessite aucune configuration des machine clientes pour accéder au
catalogue !

L’utilisation de cet objet est simplifié par une interface :




Bastin Jean-Sébastien                      - 49 -              Institut Supérieur Economique
IBTransaction :

Cet objet est lié a notre IBDatabase, c’est lui qui va confirmer ou annuler les requêtes
par un COMMIT ou ROLLBACK
Ici aussi le travail est simplifié grâce à une fenêtre :




Nous utilisons donc quelques objets de la librairie InterBase fournie avec le C++
Builder qui sont les suivants :
IBQuery : Permet de lancer une requête de tout type à notre base de donnée. (select,
insert, update, delete…)
IBDatabase : Gère la connexion à une base de donnée InterBase
IBTransaction : Gère le COMMIT et le ROLLBACK pour toutes les requêtes.

Nous utilisons aussi des objet de la libraire DataBase fournie avec le C++ Builder :


Bastin Jean-Sébastien                     - 50 -          Institut Supérieur Economique
DBGrid : Affiche les données venant d’une DBDataSource
DBDataSource : Objet permettant d’alimenter une DBGrid par une IBQuery.




                                                                        DBGrid




   IBDatabase       IBQuery           IBTransation      DBDataSource

Généralement chaque fenêtres secondaire du programme d’implémentation contient
plusieurs IBQuery qui sont des requêtes paramétrées pour l’ajout, la suppression, et la
modification. Une dernière query est utilisée pour l’affichage des données dans la
DBGrid.


Les Blob
Un BLOB est un stockage binaire étendu (Blob = Binary Large OBject) pouvant
contenir n’importe quoi.
Pour déclarer un tel Blob, on utilise la syntaxe suivante :

CREATE TABLE TABLE2
FicheID INTEGER, MonMemo BLOB SUB_TYPE 1);

Concernant les BLOB’s, Interbase propose plusieurs distinctions subtiles et
intéressantes. Elle offre un sous-types de BLOB spécialisé pour les textes non
formatés et offre des types utilisateurs utilisés notamment pour les images bitmap.

Voici les différents types binaires connus (certains sont réservés pour Interbase) :

0 Binaire “vrai” non type du tout
1 Texte non formaté (peut servir à stocker du RTF ou du HTML aussi)
2 Binary Language Representation (BLR), pseudo-code compilé de Interbase resultant
de la compilation d’une procedure ou d’un trigger par exemple.


Bastin Jean-Sébastien                    - 51 -           Institut Supérieur Economique
3 Access Control List. Type interne
4 Reservé
5 Description encodée des metadonnées d’une table (interne)
6 Description de transaction multi-database ne s’étant pas terminée normalement
(interne)
7 Description de transaction (interne)
8 Description de fichier externe (interne)
-1 .. – n Types utilisateurs. Le type –1 est généralement utilisé pour stocker des BMP,
ce qui fonctionne correctement avec Delphi (en connectant un TDBImage)


L’encodage de caractères :
Lors de l’utilisation de Tag dans une page HTML, il peut arriver que l’on utilise des
caractères spéciaux comme un espace, un tréma, un symbole monétaire…
Le PageProducer va, lors de certaines suites de caractères, interpréter le Tag d’une
mauvaise manière !
Pour pallier à cela il faut alors utiliser un encodage de caractère propre au « charset »
mentionné dans l’entête de page Web
La règle est simple : on remplace le caractère par un «%» suivi de son code
hexadécimal dans l'encodage courant du document (c'est-à-dire la norme iso-8859-1 en
général pour l'Europe de l'Ouest et les Amériques).

Exemples :
%20  un espace
%25  ‘%’

Lien vers la liste des caractères spéciaux codés :
http://www.csgnetwork.com/htmlchrset.html




Bastin Jean-Sébastien                     - 52 -         Institut Supérieur Economique

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:28
posted:6/29/2012
language:
pages:52