Vous êtes sur la page 1sur 3

Page 1/3

Unit dEnseignement en Informatique


Anne 2016-2017

2 anne ESTIA tudiants


Examen de Systme dInformation Premire Session du 31 Mars 2017
(dure 2h00, aucun document autoris)

CORRECTION

Remarque : Ce document ne prsente que des lments de correction. Les variantes possibles sont
nombreuses.

Exercice 5 : Transfert de donnes (2,5 points)


Une petite entreprise utilise trois progiciels de gestion pour grer son activit. La gestion
commerciale gre les commandes passes par les clients (chacune identifi par son numro
nocomm ). La gestion des donnes technique gre la liste des composants utiliss (chacun
identifi par son numro nocomp ) pour fabriquer chaque produit de lentreprise (chacun
identifi par son numro noprod ). La gestion des stocks gre les quantits de composants
entreposs. Le stock rel dcompte les composants prsents physiquement en stock. Le stock
virtuel dcompte les composants rels moins les composants dj rservs par les produits
commands. Lorsquune nouvelle commande est passe, les composants ncessaires pour fabriquer
les produits doivent tre rservs. Les trois logiciels ne sachant pas communiquer entre eux, nous
souhaitons crer un connecteur afin dautomatiser la transmission de linformation entre ces
logiciels.
Gestion des
donnes
techniques

Conn.

Gestion Gestion de
commerciale stock

Chacun de ces logiciels fonctionne comme suit :


Le progiciel de gestion commerciale dispose dune fonctionnalit de webservice qui fournit
(via le protocole HTTP) un fichier Excel avec la liste des produits dune commande. Pour ce
faire, il suffit de donner le numro de commande lorsquon interroge le webservice.
Le progiciel de gestion des donnes techniques enregistre ses informations dans une base de
donnes Oracle. Trois des tables dcrivent de quels composants sont composs les produits :
OProduit OCompose OComposant
noprod nom #noprod #nocomp quantite nocomp nom

Le progiciel de gestion de stock enregistre ses informations dans une base de donnes
PostgreSQL. Une des tables dcrit les niveaux de stocks pour chaque composant :
PComposant
nocomp nom quantite_reel quantite_virtuel

ESTIA 2 anne preuve dInformat ique SI - G. Rivire - tudiants Estia 2018


Page 2/3
1) Quel langage pouvez-vous utiliser pour crer ce connecteur au sein du systme dinformation de
cette entreprise ? Justifiez votre choix.

Un langage de script, comme par exemple PHP, est un choix commun pour ce genre de connecteurs.
Lavantage est un temps de dveloppement relativement court. De plus, PHP permet de lire de
fichiers Excel (avec la bibliothque PHPExcel) et de se connecter des bases de donnes Oracle et
PostgreSQL (avec PDO).

2) Expliquez quelles seraient les grandes tapes de fonctionnement de ce connecteur.

Tout dabord, ouvrir le fichier Excel, issu de la gestion commerciale, correspondant au numro de
commande (nocomm) pour en extraire la liste des numros de produit et leur quantit. Ensuite, se
connecter la base de donnes Oracle de la gestion des donnes techniques afin de constituer la liste
et quantit des composants ncessaires pour les produits. Enfin, se connecter la base de donnes
PostgreSQL de la gestion de stocks pour diminuer le stock virtuel du nombre de composants qui
seront utiliss pour les produits commands.

3) Dcrivez quelles instructions de code (les fonctions, les requtes, les tests, les calculs ) seraient
effectuer pour chaque tape. Attention, il est demand de dcrire brivement le code du
connecteur, mais non pas dcrire le code complet du connecteur.

Les diffrentes tapes du script PHP seraient :


1) Accder au webservice de la gestion commerciale avec le numro de commande afin de
tlcharger le fichier Excel.
2) Lire le fichier Excel grce aux fonctions de la bibliothque PHPExcel et enregistrer en
mmoire les numros et quantits de produits dans un tableau PHP $listeProd.
3) Refermer le fichier Excel.
4) Se connecter la base de donnes Oracle de la gestion des donnes techniques grce PDO.
5) Pour chaque numro de produit noprod dans $listeProd, faire une requte SQL pour
rcuprer la liste des composants :
SELECT nocomp, quantite FROM OCompose WHERE noprod = $listeProd[$i][noprod] ;
Ajouter les quantits de composants dans un tableau associatif $listeComp index par les
numros de composants.
6) Se dconnecter de la base de donnes Oracle.
7) Se connecter la base de donnes PostgreSQL de la gestion des stocks grce PDO.
8) Pour chaque composant du tableau $listeComp, dcrmenter le stock virtuel de la quantit
correspondante :
UPDATE PComposant SET quantite_virtuel = quantite_virtuel - $listeComp[$nocomp]
WHERE nocomp = $nocomp ;
9) Se dconnecter de la base de donnes PostgreSQL

Exercice 6 : Connecteur IGES vers Mupad (5 points)


Nous souhaitons pouvoir transmettre Mupad les lments de type 158 des fichiers IGES (Initial
Graphics Exchange Specification) : les troncs de cne (ou cnes tronqus). Ces lments sont dcrits
par un 9-uplet :
H, R1, R2, X, Y, Z, I, J, K
o le nombre rel H est la hauteur, le nombre rel R1 le rayon de la grande face, le nombre rel R2 le
rayon de la face la petite face, le vecteur rel (X, Y, Z) est la position du centre de la grande face et
le vecteur (I, J, K) est lorientation du cne.

ESTIA 2 anne preuve dInformat ique SI - G. Rivire - tudiants Estia 2018


Page 3/3

R1
R2

(X, Y, Z) H (I, J, K)
Voici un exemple dune ligne dcrivant un tel cne tronqu dans un fichier IGES :
158,8.1D0,1.7D1,8.5D0,0D0,0D0,0D0,0D0,1D0,0D0; 98P 56

Lobjectif est dcrire un connecteur qui puisse trouver dans un fichier IGES tous les troncs de cne
et en extraire les caractristiques (H, R1, R2) afin de pouvoir les fournir Mupad. Par exemple,
Mupad pourra alors calculer les volumes des troncs de cnes avec le code suivant :
code.mu
1 Volume := proc (hauteur, rayon1, rayon2)
2 begin
3 return (h*PI/3) * (rayon1^2 + rayon2^2 + rayon1*rayon2);
4 end_proc;
5
6 V := Volume (hauteur_IGES, rayon1_IGES, rayon2_IGES);
7
8 hauteur_IGES := 8.1 ;
9 rayon1_IGES := 17 ;
10 rayon2_IGES := 8.5 ;
11 V;

1) Ecrivez un script PHP qui lit un fichier IGES et pour chaque ligne dcrivant un cne (c.--d.
commenant par 158) affiche trois lignes avec les caractristiques du cne et lappel de fonction V
(c.--d. comme dans les lignes 8, 9, 10 et 11 du fichier code.mu).
1 <?php
2
3 $filename = 'conception.iges' ;
4 $desc = fopen ($filename, 'r') ;
5
6 if (!$desc) {
7 die ('Erreur ouverture du fichier '.$filename.' en lecture.') ;
8 }
9
10 while (!feof ($desc)) {
11 $line = fgets ($desc) ;
12 $debut = substr ($line, 0, 3) ;
13
14 if ($debut == '158') {
15 $tab = explode (',', $line) ;
16
17 $tab_h = explode ('D', $tab[1]) ;
18 $tab_r1 = explode ('D', $tab[2]) ;
19 $tab_r2 = explode ('D', $tab[3]) ;
20
21 $h = $tab_h[0] * pow (10, $tab_h[1]) ;
22 $r1 = $tab_r1[0] * pow (10, $tab_r1[1]) ;
23 $r2 = $tab_r2[0] * pow (10, $tab_r2[1]) ;
24
25 echo 'hauteur_IGES := '.$h.' ; '."\r\n" ;
26 echo 'rayon1_IGES := '.$r1.' ; '."\r\n" ;
27 echo 'rayon2_IGES := '.$r2.' ; '."\r\n" ;
28 echo 'V; '."\r\n" ;
29 }
30 }
31
32 fclose ($desc) ;
33 ?>

ESTIA 2 anne preuve dInformat ique SI - G. Rivire - tudiants Estia 2018

Vous aimerez peut-être aussi