You are on page 1of 16

RAPPORT DE STAGE

Du 25/05/2015 au 26/06/2015

Maître de stage : M. Ivan Sivadon

BTS SIO 1
Année 2014/2015

Page 1 sur 16

Abran Olivier

Sommaire
I/Présentation de l’entreprise ....................................... 3
A) Qu’est ce que le CIRAME ? ..................................... 3
B) Plan d’accès ............................................................ 3
C) Les Activités du CIRAME ......................................... 4
D) Les Partenariats du CIRAME ................................... 4
II/L’Informatique dans l’entreprise ............................... 5
A) L’Architecture Informatique du CIRAME ................ 5
B) Les logiciels dans l’entreprise ................................. 7
C) Internet dans l’entreprise ....................................... 8
D) Les bases de données ............................................. 8
III/Le Projet.................................................................... 9
A) Cahier des Charges et Existant ............................... 9
B) APEX ...................................................................... 10
C) Solutions et Développement ................................ 11
IV/Conclusion .............................................................. 15
V/Remerciements ....................................................... 16

Page 2 sur 16

Abran Olivier

I/Présentation de l’entreprise
A) Qu’est ce que le CIRAME ?
Le CIRAME ou Centre d’Information Régional Agro-Météorologique et Economique,
est une association régionale crée en 1984 faisant suite à l’ACR (Association
Climatologique Régionale). Elle est composée d’une quinzaine de personnes et se
situe au 779 Chemin de l’Hermitage dans le Hameau de Serres.

B) Plan d’accès

Page 3 sur 16

Abran Olivier

C) Les Activités du CIRAME
Le CIRAME :
- gère et coordonne un réseau de stations agro-météorologiques implantées dans les
principaux bassins agricoles de la région PACA ;
- collecte, valide, stocke et traite les données climatiques utiles à l’agriculture et aux
agriculteurs de la région ;
- diffuse les données à l'ensemble des utilisateurs potentiels du milieu agricole via des
bulletins d’informations,… ;
- contribue à la traçabilité des cultures et au développement d’une agriculture
durable.

D) Les Partenariats du CIRAME
Le CIRAME possède des partenaires dans les domaines techniques et scientifiques,
tant à l’échelle locale qu’à l’échelle nationale, les voici :

NATIONAL
*INRA
*Service Régional de l’Alimentation
*Institutions spécialisées : IFV-CTIFL-Arvalis
*CEMAGREF
*Sociétés phytosanitaires
*CNRS
*MétéoFrance

REGIONAL
*Chambre d’Agriculture
*Stations Régionales d’Expérimentation
*Coopératives d’Approvisionnement
*Syndicats Professionnels spécialisés
*Etablissements d’enseignement
*Météo-France
*Groupes d’études : GRCETA-CETA-GDA
*Coopératives Agricoles

Page 4 sur 16

Abran Olivier

II/L’Informatique dans l’entreprise
A) L’Architecture Informatique du CIRAME

Page 5 sur 16

Abran Olivier

Le câblage du réseau fait partie de la catégorie 5e (Fréquence : <155MHz, Débit :
<1000Mb/s).
Le réseau est protégé par un pare-feu Fortigate80C de FORTINET, il regroupe deux
zones :
-

Une DMZ (DeMilitarized Zone) qui rassemble les serveurs internet liés à
diffusion sur le web qui sont : un serveur de production DELL Power edge sous
Windows Serveur 2003 (www.agrometeo.fr) et une machine virtuelle sous
Windows Serveur 2008 (serveur internet de test). Ces deux versions de
Windows sous des versions standards (IIS).

-

Une zone interne qui regroupe un contrôleur de domaine sous Windows
Serveur 2003, les postes de travail (environs 15 postes sous Windows XP et
Windows 7) et deux serveurs de virtualisation sous ESXI (VMWARE). Un de ces
deux serveurs est une ancienne machine (serveur de production HP ProLiant)
qui a été upgradée (2 processeurs, 32 Go de RAM et 2To de stockage disque).
Ce premier serveur héberge un serveur (machine virtuelle) sous Windows
Serveur 2008 R2 avec oracle XE et Apex 4.0.2 et une machine virtuelle dédiée
aux sauvegardes sous DEBIAN (squeeze).
Le second serveur de virtualisation est un serveur INTEL qui héberge la base de
production ORACLE 11g, sous oracle-linux, une machine de développement
dédié au JAVA et à la cartographie et un serveur web sous Windows 2008 R2.
Ce dernier serveur sera à terme le serveur internet de production.

Page 6 sur 16

Abran Olivier

B) Les logiciels dans l’entreprise
Le CIRAME s’est équipé de logiciels de programmation tels que Visual Basic 6, JAVA
et MAPINFO, ainsi que du pack Office Pro, 2007 ou 2013 en fonction des postes. Pour
assurer le fonctionnement de ses services, le CIRAME a développé des logiciels
spécifiques qui sont:

-le logiciel Ylona, développé en Visual basic 6 et servant à la gestion des abonnés, à
l’envoi des bulletins d’information et à l’édition des enveloppes (envoi courrier des
bulletins) ;
-le logiciel Tavelure, développé en Visual basic 6 et utilisé pour l’élaboration des
avertissements Tavelure et l’envoi des avertissements par fax, mail et SMS ;
-le logiciel Virement développé en PL/SQL sous oracle dont l’utilité est l’élaboration
d’ordre de virement au format SEPA (Single Euro Payement Area) ;
-le logiciel d’interrogation des stations météo automatiques, développé en Visual
basic 6 ;
-le logiciel de validation des données collectées sur les stations, développé lui aussi
en Visual basic 6 ;
-le logiciel de modélisation du risque phytosanitaire, développé à la fois en Visual
basic 6 et en PL/SQL sous Oracle.

Les sites web, quant à eux, ont été développés en ASP sous IIS.

Page 7 sur 16

Abran Olivier

C) Internet dans l’entreprise
Le CIRAME est situé loin des équipements ORANGE permettant l’accès à internet en
ADSL. Pour répondre à ses besoins ORANGE a mis à sa disposition une SDSL (2 paire
de cuivre) 2Mo. Ce débit est le débit maximal auquel le CIRAME a accès dans sa
situation géographique.

D) Les bases de données
Le CIRAME possède deux bases de données :
-la base « clim » sous ORACLE 11G, qui stocke les données météo collectées sur les
stations. Cette BDD a subi trois migrations : de la version 7 à la 8i, de la 8i à la 10g,
puis de la 10g à la 11g. Lors du changement de version la machine physique est
changée. Au début l’interface était réalisée à l’aide de logiciel ORACLE (Developer
2000). Lors du passage à la version 11g, cette interface a été abandonnée et
redéveloppée à l’aide d’autres outils ORACLE : APEX installés par défaut avec la
version 11g. Apex est un ensemble d’outils diffusés gratuitement par oracle, sans
licence, ce qui n’était pas le cas de Developer 2000) ;
-la base « Latitude » qui est la base d’observations d’épidémiosurveillance. Elle
fonctionne sous ORACLE XE 1Og et a été conçue et développée en interne. L’interface
a été réalisée en ASP.

Page 8 sur 16

Abran Olivier

III/Le Projet
A) Cahier des Charges et Existant
La mission qui m’a été confiée par M. Sivadon (Maître de stage) était l’élaboration
d’une CRM (Customer Relationship Management ou GRC : Gestion de la Relation
Client) adaptée aux besoins du CIRAME à partir d’un MCD et d’une base de données
existante.
Le besoin majeur à satisfaire était la mise en commun de la base de données
« client » (la bdd « client » est située sur la même instance d’Oracle 11g que la bdd
«clim», mais sur un schéma, une sorte de sous-groupe, différent), qui était
jusqu’alors accessible uniquement par la comptable du CIRAME et par le vicedirecteur M. Sivadon.
Ensuite, il fallait empêcher l’accès aux modifications des données en fonction de
l’utilisateur qui les consulte, c’est-à-dire qu’à part l’administrateur et l’utilisateur
ayant créé un client, personne ne devait pouvoir modifier celui-ci. Il en va de même
pour les données des utilisateurs qui ne devaient être accessibles qu’à
l’administrateur.
Afin de permettre l’accès à tous le personnel, M. Sivadon a modifié la base de
données « client » et m’a demandé de développer une application sur APEX 4.0.2.
Par la suite certains employés ont apportés leurs suggestions, parmi lesquelles se
trouvaient : la normalisation des numéros de factures, la mise à jour automatique de
l’état des cotisations des clients, une page de tri globale des informations,…

Page 9 sur 16

Abran Olivier

B) APEX
Comme je l’ai dit un peu plus haut, APEX est un ensemble d’outils, distribué par
ORACLE, qui permet de créer des applications en ligne utilisant une base de données,
du HTML, du CSS, du JavaScript et du PL/SQL. Ce set d’outils nous met à disposition
une interface permettant de créer des pages entières en ayant seulement besoin
d’écrire une ou deux requêtes SQL, voici comme exemple une page créée sans écrire
une seule ligne de code ou de requête SQL (query builder):

Barre de
recherche

Résultat de la
requête

Voici à quoi ressemble l’interface de création d’un élément de type rapport SQL tel
que celui ci-dessus :

Page 10 sur 16

Abran Olivier

Outre la facilité de création de pages que permet APEX, celui-ci limite néanmoins la
liberté de création/modification du développeur moyen.
Pour créer les éléments de la page, APEX génère du code HTML, du CSS et du
JavaScript. Pour modifier le code généré par APEX on se heurte à deux problèmes : le
débogage et « l’endroit » où l’on écrit/exécute le code. Tout d’abord, du fait que l’on
n’ait pas connaissance de tout ce que créer APEX, on fait parfois face à de nombreux
bugs sans avoir aucune indication de leur provenance, et supprimer le dernier
élément créé ne suffit pas toujours à revenir en arrière car APEX ne supprime pas
tout ce qu’il a créé en même temps que l’élément. Ensuite « l’endroit » où l’on écrit
le code a une importance capitale mais on ne sait pas toujours où l’on doit l’écrire
pour obtenir le résultat escompté, ce problème est généralement lié à l’exécution de
la page.
Une fois que l’on à peu près comprit comment il fonctionne, APEX est relativement
simple à prendre en main et l’on peut commencer à créer des pages plus poussées.

C) Solutions et Développement
Tout d’abord, j’ai analysé le MCD suivant (Les entités colorées en vertes sont
celles qui ont été ajoutées par M. Sivadon après ses premières modifications):

Page 11 sur 16

Abran Olivier

Après analyse, je me suis aperçu que ce MCD ne gérait pas correctement les besoins
énoncés par M. Sivadon, nous en avons donc discuté et avons modifié plusieurs fois
le MCD pour en arriver au modèle suivant (les entités vertes sont celles qui ont été
ajoutées):

Après avoir résolu le problème causé par le MCD, je me suis attaqué au problème
d’accessibilité des données.
Pour commencer j’ai créé une fonction qui s’exécute à la page de connexion afin que
l’authentification se fasse en fonction en PL/SQL des identifiants qui se trouvent dans
la table UTILISATEUR de la base de données client, plutôt qu’avec les identifiants
d’APEX (authentification par défaut), afin de restreindre l’accès à l’application.
Voici le code en question :
create or replace function authentification (p_username in varchar2,
p_password in varchar2) return Boolean as variable_test varchar2(1);
begin
select ‘x’
into variable_test
from UTILISATEUR
where upper(LOGIN) = upper(p_username)
and MDP = p_password;
variable_test:=true;
return variable_test;
exception when no_data_found then
return false;
end authentification;

Déclaration de la
fonction

Requête
Exception : en cas
d’une erreur type no
data found

Page 12 sur 16

Abran Olivier

Détails : Cette fonction est très simple, elle cherche un résultat en comparant les
paramètres avec le résultat d’une requête SQL, si il y a correspondance alors
l’utilisateur peut accéder à l’application, sinon il n’y a aucune donnée trouvée et
l’exception renvoi false, l’utilisateur ne peut donc pas accéder à l’application.
Pour restreindre l’accès aux modifications, j’ai créé une fonction qui s’exécute à
l’affichage du formulaire de modification des clients lorsque l’un d’entre a demandé à
être modifié. Voici le code en question :
DECLARE
codeuser number;
codegrp number;
BEGIN
select UTILISATEUR.CD_UTILISATEUR, UTILISATEUR.CD_GROUPE into codeuser, codegrp
from UTILISATEUR where UPPER(UTILISATEUR.LOGIN)=UPPER(v('APP_USER'));
IF codeuser=v('P1_CD_UTILISATEUR') OR codegrp=9 THEN

Utilisateur correct
ou administrateur

RETURN true;
Else
IF v('P1_CD_CLIENT') IS NULL OR v('P1_CD_CLIENT')='' THEN

Aucun client
sélectionné

RETURN true;
ELSE
RETURN false;
END IF;
END IF;
EXCEPTION WHEN no_data_found THEN
RETURN false;
END;

Page 13 sur 16

Abran Olivier

Cette fonction récupère le code du groupe d’utilisateurs et le code utilisateur auquel
appartient l’utilisateur qui a pour login « &APP_USER. » (&APP_USER. Permet dans
APEX de récupérer le login de l’utilisateur courant), veuillez noter que c’est
l’administrateur qui créer les utilisateurs, il n’y aura donc pas de risque de login
identiques.
Puis si la requête trouve un résultat on compare alors le code utilisateur que l’on a
récupéré dans la requête avec le code utilisateur présent dans les informations du
client, autrement dit on vérifie que le code récupéré est bien celui de l’utilisateur ou
que c’est celui d’un administrateur.

Pour finir après avoir réalisé le gros de l’application, (aspect graphique, ajustement
des requêtes SQL, organisation des pages, ergonomie,…), je me suis occupé des
demandes du personnel :
-La page de tri n’a pas été très compliquée à réaliser, le plus problématique était le
débogage. La page contient un rapport contenant le résultat d’une requête construite
en PL/SQL en fonction des champs remplis du formulaire situé sous le rapport.
-La normalisation des numéros de facture a été faite en créant une séquence dans un
champ de la table « ABONNEMENT ».
-La mise à jour automatique de la cotisation des clients à demandé la création d’un
champ spécifique dans la table « CLIENT » et un « CASE » dans la requête du rapport
des clients, le voici :
CASE WHEN CD_CLIENT IN (select CD_CLIENT from ABONNEMENT where
CD_SERVICE=60 and DT_PAIEMENT>TRUNC(SYSDATE, 'y')) THEN 'N'
WHEN CLIENT.CD_CLIENT IN (select DISTINCT CD_CLIENT from ABONNEMENT)
THEN 'O'
ELSE 'N'
END AS "A_COTISE",

Page 14 sur 16

Abran Olivier

IV/Conclusion
A la fin de ce stage, l’application est fonctionnelle malgré quelques bugs
intempestifs que je n’ai pas eu le temps de corriger. Il reste certains soucis
d’ergonomie au niveau de l’adaptation de la taille des rapports en fonction de
la taille de l’écran et de l’organisation des formulaires, à savoir que si l’on à
plusieurs formulaires dans la même page, dès que l’un d’eux est soumis, les
autres le sont aussi. Afin de « régler » ce problème j’ai dû créer une page par
formulaire et cela n’est pas très optimisé.
Ce stage m’a permis de découvrir la technologie ORACLE et notamment APEX
qui est un outil intéressant du fait de sa « simplicité » d’utilisation et de sa
gratuité. N’ayant fais auparavant qu’un stage en cuisine scolaire lors de mon
année de 4ième, j’ai pu découvrir pour la première fois le fonctionnement d’une
entreprise et les problématiques auxquelles elle doit faire face au quotidien.

Page 15 sur 16

Abran Olivier

V/Remerciements
Je tiens à remercier toutes les personnes ayant permis le succès de ce stage.
Je tiens à remercier tout particulièrement
- mon maître de stage, M.Sivadon, qui m’a accepté comme stagiaire et m’a
apporter ses connaissances lorsque j’en avais besoin,
- mon professeur de spécialité, M. Girard, qui m’a aidé à trouver ce stage et qui
est passé me voir lors de l’avant dernier jour,
- les employés du CIRAME, pour m’avoir accueilli avec bonne humeur et pour
avoir répondu du mieux qu’ils pouvaient à mes questions.

Page 16 sur 16

Abran Olivier