Vous êtes sur la page 1sur 3

Page 1/3

Unité d’Enseignement en Informatique


Année 2016-2017

2è année ESTIA – Étudiants


Examen de Système d’Information – Première Session du 31 Mars 2017
(durée 2h00, aucun document autorisé)

– – CORRECTION – –

Remarque : Ce document ne présente que des éléments de correction. Les variantes possibles sont
nombreuses.

Exercice 5 : Transfert de données (2,5 points)


Une petite entreprise utilise trois progiciels de gestion pour gérer son activité. La gestion
commerciale gère les commandes passées par les clients (chacune identifié par son numéro
« nocomm »). La gestion des données technique gère la liste des composants utilisés (chacun
identifié par son numéro « nocomp ») pour fabriquer chaque produit de l’entreprise (chacun
identifié par son numéro « noprod »). La gestion des stocks gère les quantités de composants
entreposés. Le stock « réel » décompte les composants présents physiquement en stock. Le stock
« virtuel » décompte les composants réels moins les composants déjà réservés par les produits
commandés. Lorsqu’une nouvelle commande est passée, les composants nécessaires pour fabriquer
les produits doivent être réservés. Les trois logiciels ne sachant pas communiquer entre eux, nous
souhaitons créer un connecteur afin d’automatiser la transmission de l’information entre ces
logiciels.
Gestion des
données
techniques

Conn.

Gestion Gestion de
commerciale stock

Chacun de ces logiciels fonctionne comme suit :


Le progiciel de gestion commerciale dispose d’une fonctionnalité de webservice qui fournit
(via le protocole HTTP) un fichier Excel avec la liste des produits d’une commande. Pour ce
faire, il suffit de donner le numéro de commande lorsqu’on interroge le webservice.
Le progiciel de gestion des données techniques enregistre ses informations dans une base de
données Oracle. Trois des tables décrivent de quels composants sont composés 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 données
PostgreSQL. Une des tables décrit les niveaux de stocks pour chaque composant :
PComposant
nocomp nom quantite_reel quantite_virtuel

ESTIA 2è année – Épreuve d’Informat ique – SI - G. Rivière - Étudiants Estia 2018


Page 2/3
1) Quel langage pouvez-vous utiliser pour créer ce connecteur au sein du système d’information de
cette entreprise ? Justifiez votre choix.

Un langage de script, comme par exemple PHP, est un choix commun pour ce genre de connecteurs.
L’avantage est un temps de développement relativement court. De plus, PHP permet de lire de
fichiers Excel (avec la bibliothèque PHPExcel) et de se connecter à des bases de données Oracle et
PostgreSQL (avec PDO).

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

Tout d’abord, ouvrir le fichier Excel, issu de la gestion commerciale, correspondant au numéro de
commande (nocomm) pour en extraire la liste des numéros de produit et leur quantité. Ensuite, se
connecter à la base de données Oracle de la gestion des données techniques afin de constituer la liste
et quantité des composants nécessaires pour les produits. Enfin, se connecter à la base de données
PostgreSQL de la gestion de stocks pour diminuer le stock virtuel du nombre de composants qui
seront utilisés pour les produits commandés.

3) Décrivez quelles instructions de code (les fonctions, les requêtes, les tests, les calculs …) seraient
à effectuer pour chaque étape. Attention, il est demandé de décrire brièvement le code du
connecteur, mais non pas d’écrire le code complet du connecteur.

Les différentes étapes du script PHP seraient :


1) Accéder au webservice de la gestion commerciale avec le numéro de commande afin de
télécharger le fichier Excel.
2) Lire le fichier Excel grâce aux fonctions de la bibliothèque PHPExcel et enregistrer en
mémoire les numéros et quantités de produits dans un tableau PHP $listeProd.
3) Refermer le fichier Excel.
4) Se connecter à la base de données Oracle de la gestion des données techniques grâce à PDO.
5) Pour chaque numéro de produit noprod dans $listeProd, faire une requête SQL pour
récupérer la liste des composants :
SELECT nocomp, quantite FROM OCompose WHERE noprod = $listeProd[$i][noprod] ;
Ajouter les quantités de composants dans un tableau associatif $listeComp indexé par les
numéros de composants.
6) Se déconnecter de la base de données Oracle.
7) Se connecter à la base de données PostgreSQL de la gestion des stocks grâce à PDO.
8) Pour chaque composant du tableau $listeComp, décrémenter le stock virtuel de la quantité
correspondante :
UPDATE PComposant SET quantite_virtuel = quantite_virtuel - $listeComp[$nocomp]
WHERE nocomp = $nocomp ;
9) Se déconnecter de la base de données PostgreSQL

Exercice 6 : Connecteur IGES vers Mupad (5 points)


Nous souhaitons pouvoir transmettre à Mupad les éléments de type 158 des fichiers IGES (Initial
Graphics Exchange Specification) : les troncs de cône (ou cônes tronqués). Ces éléments sont décrits
par un 9-uplet :
H, R1, R2, X, Y, Z, I, J, K
où le nombre réel H est la hauteur, le nombre réel R1 le rayon de la grande face, le nombre réel R2 le
rayon de la face la petite face, le vecteur réel (X, Y, Z) est la position du centre de la grande face et
le vecteur (I, J, K) est l’orientation du cône.

ESTIA 2è année – Épreuve d’Informat ique – SI - G. Rivière - Étudiants Estia 2018


Page 3/3

R1
R2

(X, Y, Z) H (I, J, K)
Voici un exemple d’une ligne décrivant un tel cône tronqué dans un fichier IGES :
158,8.1D0,1.7D1,8.5D0,0D0,0D0,0D0,0D0,1D0,0D0; 98P 56

L’objectif est d’écrire un connecteur qui puisse trouver dans un fichier IGES tous les troncs de cône
et en extraire les caractéristiques (H, R1, R2) afin de pouvoir les fournir à Mupad. Par exemple,
Mupad pourra alors calculer les volumes des troncs de cônes 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 décrivant un cône (c.-à-d.
commençant par 158) affiche trois lignes avec les caractéristiques du cône et l’appel 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è année – Épreuve d’Informat ique – SI - G. Rivière - Étudiants Estia 2018

Vous aimerez peut-être aussi