• Aucun résultat trouvé

Page 1/5

N/A
N/A
Protected

Academic year: 2022

Partager "Page 1/5"

Copied!
5
0
0

Texte intégral

(1)

Unité d’Enseignement en Informatique Année 2015-2016

2è année ESTIA – Étudiants

Examen de Système d’Information – Première Session du 11 Mars 2016 (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 2 : Transfert de données (10 points) Partie 1. Topologie d’infrastructure logicielle (5 points)

Une entreprise utilise 7 progiciels de gestion pour gérer son activité. Cette entreprise hésite entre deux topologies possibles pour moderniser son système d’information. Ces deux topologies sont représentées graphiquement ci-dessous.

Conn.

Gestion de production

E-commerce Conn.

Conn.

Conn.

Gestion de stock Conn.

Conn.

Conn.

Conn.

Conn.

Conn.

Concentrateur E.A.I.

Comptabilité, Achats, Paie,

Facturation

Conn.

Gestion commerciale

Conn.

Conception assistée par ordinateur Gestion des

données techniques

Conn.

Conn.

Topologie 1

(2)

Les possibilités de stockage et d’échange d’information de ces 7 progiciels sont les suivants :

Progiciel S tockage Export Import Echange

Comptabilité, Achats, Paie, Facturation Fichiers PNM XLSX XLSX

Gestion de production Base de données (Oracle) Webservice (XM L-RPC)

Gestion des données techniques Base de données (M ySQL) Webservice (XM L)

Conception Assistée par Ordinateur Fichiers PRT IGES IGES

Gestion Commerciale Base de données (M ySQL)

Gestion de stock Base de données (PostgreSQL) XLSX ; CSV

E-commerce Base de données (M ySQL) Webservice (JSON)

1) Dans la topologie 2, afin de faire communiquer les deux progiciels de E-commerce et de Gestion Commerciale, deux connecteurs sont nécessaires. Quel langage pouvez-vous utiliser pour écrire les deux scripts qui joueront le rôle de connecteur ? Décrivez les grandes étapes du fonctionnement de chacun de ces scripts.

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 se connecter à des bases de données MySQL (avec MySQLi ou PDO) et de traiter des fichiers JSON.

Le premier script fera des requêtes SELECT dans la base de données MySQL du progiciel de Gestion Commerciale puis, analysera les données. Ensuite, soit le script fera des requêtes INSERT, UPDATE ou DELETE dans la base de données MySQL du logiciel de E-Commerce ou bien écrire un fichier texte formaté en JSON avec les données destinées au logiciel de E-Commerce.

Dans le sens inverse, le deuxième script pourra obtenir des données soit en faisant des requêtes SELECT dans la base de données MySQL du progiciel de E-Commerce, soit en lisant un fichier texte JSON provenant du progiciel de E-commerce. Ensuite, le script fera des requêtes INSERT, UPDATE ou DELETE dans la base de données MySQL du logiciel de Gestion Commerciale.

2) Toujours dans la topologie 2, comment développer les connecteurs pour faire communiquer les deux progiciels de Conception Assistée par Ordinateur et de Gestion des données techniques ?

Conn.

E-commerce Conn.

Conn.

Conn.

Comptabilité, Achats, Paie,

Facturation

Conn.

Conn.

Conn.

Conn.

Conn.

Conn.

Conn.

Gestion de production

Gestion de stock Gestion

commerciale

Conn.

Conn. Conn. Conn.

Gestion des données techniques

Conception assistée par ordinateur

Topologie 2

(3)

Nous pouvons écrire un deuxième script qui fera des requêtes SELECT dans la base de données MySQL du progiciel de SGDT, analysera les données, puis écrira des fichiers IGES que le progiciel de CAO pourra importer.

3) Avec la topologie 1, combien d’écritures et de lectures sont nécessaires pour transférer un bon de commande entre le progiciel de E-commerce et le progiciel de Gestion commerciale ? Et avec la topologie 2 ?

Avec la topologie 1 : 4 écritures et 4 lectures Avec la topologie 2 : 2 écritures et 2 lectures

4) Quelle topologie est la plus efficace en termes de nombre de calculs pour transférer une donnée ? Justifiez.

Selon le cas, l’une ou l’autre des topologies se révèle plus efficace.

Avec la topologie 1, la distance maximale entre deux logiciels reste constante. Il faut toujours au plus 4 écritures et 4 lectures entre deux logiciels. Sauf pour le cas du progiciel de CAO, mais celui-ci n’a pas vraiment vocation à communiquer avec d’autres progiciels que le SGDT.

Avec la topologie 2, la distance maximale entre deux logiciels est variable. Elle peut tantôt être de seulement 2 écritures et 2 lectures, mais parfois bien au-delà avec par exemple 8 écritures et 8 lectures entre les progiciels de CAO et de E-Commerce. Dans ce cas, la transmission d’information peut être accélérée, mais au prix de nouveaux connecteurs à créer et à maintenir.

5) Quels seraient les avantages à programmer un logiciel concentrateur de type E.A.I ?

Par exemple, il est plus facile d’ajouter ou remplacer des logiciels, cela permet une meilleure évolution du système d’information dans le long terme.

Exercice 3 : Service web XML

Partie 1. Développement d’un service web (8 points) Vous avez appris à utiliser PHP

pour différentes utilisations (script en ligne de commande, traitement d’un formulaire, traitement d’un fichier, consulter une base de données) et notamment pour générer un flux HTML depuis un serveur web.

Aussi, il n’y a qu’un pas à franchir pour réutiliser cette compétence pour mettre en place un service web. La seule différence étant qu’au lieu de produire des balises HTML, ce sont des balises XML qui sont produites.

Considérons un progiciel de Gestion des stocks propose une fonctionnalité d’exportation des données au format CSV. Chaque ligne de ce fichier correspond à un produit en stock, décrit par son numéro (id), son libellé (label) et la quantité en stock (quantity). Chaque information est séparée par un point-virgule. Ce qui donne par exemple :

(4)

Nous souhaitons rendre ces informations accessibles au travers d’un service web. Ainsi, elles pourront être consultées par les employés depuis un smartphone grâce à l’application de l’entreprise.

Nous allons écrire le script en_stock.php qui fournit une réponse dans un format XML qui sera compréhensible par l’application smartphone. Par exemple, pour retrouver les informations sur le produit avec le numéro 160, le script (hébergé sur le serveur web de l’entreprise) sera appelé comme suit par l’application smartphone :

https://www.monentreprise.fr/webservices/en_stock.php?id=160

et la réponse au format XML reçue par le smartphone sera :

<?xml version="1.0"?>

<product id="160">

<label type="string">Rondelle acier zingue 8-12</label>

<quantity type="integer">8000</quantity>

</product>

NB : Remarquez bien les 3 informations qui ont été insérées dans la réponse.

Dans le cas où le produit recherché n’est pas trouvé dans le fichier CSV, la réponse sera alors :

<?xml version="1.0"?>

<product id="400">

<error/>

</product>

1) D’après ce que vous venez de lire, par quelle méthode le id du produit recherché sera-t-il communiqué au script en_stock.php ?

Comme montré par l’URL, le id sera communiqué par la méthode GET.

2) Si WAMP est installé sur le serveur de l’entreprise, dans quel répertoire allez-vous enregistrer le script en_stock.php ?

Dans le répertoire racine de WAMP, comme par exemple en TP : C:\wamp\www\

3) Ecrivez le script en_stock.php qui va retrouver dans le fichier stock.csv la ligne qui correspond au produit recherché et envoyer la réponse (en écrivant avec des echo) formatée en XML. Attention de ne pas oublier de gérer le cas où le produit n’est pas trouvé dans le fichier (et d’envoyer la réponse XML adaptée).

stock.csv - Bloc notes

12;Boulon acier zingue 10x40;2500;

14;Ecrou acier zingue 10;6500;

80;Tige filetee laiton 4;800;

84;Tige filetee laiton 8;900;

140;Entretoise acier inox 8-10x4;100;

141;Entretoise acier inox 8-10x6;80;

160;Rondelle acier zingue 8-12;8000;

230;Circlips interieur acier brut 12;0;

240;Circlips exterieur acier brut 12;2;

(5)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

<?php

$id = $_GET['id'] ;

$fd = fopen ('stock.csv', 'r') ; if (!$fd) {

die ('Erreur ouverture du fichier en lecture') ; }

$resp = ' <error/>'."\r\n" ; while (!feof($fd)) {

$line = fgets ($fd) ;

$tab = explode (';', $line) ; if ($tab[0] == $id) {

$resp = ' <label type="string">'.$tab[1].'</label>'."\r\n" ;

$resp .= ' <quantity type="integer">'.$tab[2].'</quantity>'."\r\n" ; }

}

fclose ($fd) ;

echo '<?xml version="1.0"?>'."\r\n" ; echo '<product id="160">'."\r\n" ; echo $resp ;

echo '</product>'."\r\n" ;

?>

Références

Documents relatifs

Un attribut de type SET peut prendre pour valeur la chaîne vide, NULL ou une chaîne contenant une liste de valeurs qui doivent être déclarées lors de la.. définition de

• Dans les exemples, quand on fait du DML, vérifier le résultat avec un script MySQL, soit dans phpMyAdmin, soit dans un client MySQL.. • Une page pour l’affichage des

L’évaluation de la requête imbriquée est d’abord effectuée une fois pour toutes et va servir (comme valeur unique, ou liste de valeurs) à la requête appelante.. SELECT

La requête imbriquée corrélée va dépendre, cette fois, de valeurs de colonnes de la requête appelante, elle est liée à la requête appelante, elle en est dépendante, corrélée

Utilisation : lister les œuvres dont la valeur est supérieure à la moyenne des valeurs des œuvres de l’artiste SELECT * FROM œuvre A. WHERE valeurOeuvre &gt; (SELECT AVG(valeur)

Comme pour le point précédent, mais en affichant le nombre total de crédits pour tous les cours choisis par l’étudiant, mais sans afficher tot_creds (pourquoi ?).. Même question

Pour recherche dans une même table (même numéro pour quels clients?) utiliser un AS pour renommer .... Le natural join, je dois renommer les champs à ne

You can use one of the append write modes (see Table 7-5), or you can simply open a file for reading and writing with one of the other modes that supports writing, and move the