1. Architecture fonctionnelle d`une application

publicité
Licence Pro RTICPMO
Responsable des Technologies d’Information et de la
Communication en Petite et Moyennes Organisations
Chapitre 2
Eléments de
Developer 2000 / Forms Builder
1. Architecture fonctionnelle d'une application ____________________________________ 2
2. Eléments de l’environnement de FORMS _______________________________________ 3
3. Extensions de PL-SQL à Developer 2000 / Forms ________________________________ 4
3.1 Les variables de Developer 2000 _________________________________________________ 4
GLOBAL et SYSTEM __________________________________________________________________ 4
Eléments (items) de l'interface_____________________________________________________________ 4
Eléments (items) ne faisant pas partie de l'interface ____________________________________________ 5
3.2 Les appels de sous-programmes _________________________________________________ 5
3.3 Déclencheurs d'application _____________________________________________________ 5
Noms des déclencheurs d'application _______________________________________________________ 6
Exemple :_____________________________________________________________________________ 6
Etat de l'exécution d'un déclencheur. ________________________________________________________ 6
Types de déclencheurs. __________________________________________________________________ 6
Niveau d'un déclencheur _________________________________________________________________ 8
3.4. Mises à jour de la base de données _______________________________________________ 8
Licence Pro RTICPMO, Université Toulouse 1, P. A. France, 31042 Toulouse Cedex,
Secrétariat : tél 05 61 63 35 11, email : [email protected]
ORACLE
Chapitre 2
Page 2
FORMS est l'un des composants de l'atelier de développement d'applications Developer 2000
avec GRAPHICS et REPORTS. Il propose un environnement de programmation adapté aux
interfaces et est commun à plusieurs plates-formes (UNIX , DEC…).
FORMS est composé, outre sa propre documentation en ligne et son éventail de programmes de
démonstration, de 3 outils :
-
Builder est l'outil de conception d'application proprement dit, et permet d'écrire et de tester
des programmes.
-
Compiler ou Generator traduit les programmes produits à l'aide de Builder en un langage
intermédiaire interprétable par Runform.
-
Runform est l'interprète des programmes traduits par GENERATOR.
BUILDER contient des accès à GENERATOR et à RUNFORM pour faciliter la mise au point
des applications à développer :
-
menu Fichier / Administration / Générer & Exécuter
-
"feu vert" dans la palette d'outil : selon l'option choisie dans le menu Outils / Option
génère le code du module courant et l'exécute,
exécute directement le module courant, s'il a déjà été généré.
Ecrire des programmes avec Forms Builder consister à concevoir
-
des formulaires, composé d'une interface interactive (écrans et de menus), et de sousprogrammes écrits en PL/SQL, attachés aux objets de l'interface, et déclenchés par des
événements prédéfinis,
-
l'enchaînement de ces formulaires.
Tous les éléments d'un programme sont des objets choisis dans un catalogue prédéfini proposé
par Builder. Tous les objets sont définis par une liste de propriétés qui sont toutes paramètrables.
1. Architecture fonctionnelle d'une application
Une application est composée d'au moins un module / forme / form
Un module est composé d'au moins :
-
un bloc / block
-
un écran / canevas /canvas view et une fenêtre
-
un menu. Le menu par défaut (DEFAULT) est destiné aux modules qui gèrent des tables
de la base de données.
Un bloc a un numéro dans son module et est composé d'au moins un élément / item d'interface.
Un bloc est ou non attaché à une table ou une vue de la base de données
-
attaché (basé / based) à une table ou une vue de la BD. Par défaut, ses éléments sont des
copies des attributs de la table : leurs nom, type, taille sont identiques aux attributs. Si on
P.-J. Charrel & J.-M. Thévenin, Université Toulouse 1, Licence Pro RTICPMO
ORACLE
Chapitre 2
Page 3
veut ajouter un élément qui n'est pas la copie d'un attribut, il faut explicitement changer
la propriété "Basé sur" de cet élément.
-
libre (non basé). Aucun élément n'est lié à un attribut de la BD. Dans un bloc "basé" on
peut ajouter des éléments non basés.
Un élément a un numéro dans son bloc et lié à un écran / canevas. Cet écran est
-
soit l'écran sur lequel il est présenté, selon ses propriétés Taille, Couleur, Position…
-
soit NULL si l'élément sert de variable globale au module
Par défaut, tous les éléments d'un bloc sont
-
présentés sur un même écran et sont dans la même fenêtre,
-
accessibles en tant que zone de saisie et d'édition de valeurs.
Tout composant peut être créé, recopié, déplacé, détruit (menu Edition ou bouton droit de la
souris ou palette graphique de commandes du Navigateur Objets).
Mode d'exécution d'un module
L'exécution d'un module est pilotée par son interface, donc par les événements qui vont lui
parvenir : par défaut, le système met le module en attente sur le 1er élément "contrôlable" du 1er
bloc. De manière générale, dans une application, la 1ère instruction PL/SQL exécutée est la 1ère du
déclencheur / trigger associé au 1er événement que rencontre le 1er module de l'application. Le tout
premier événement qui peut atteindre un module porte le nom
WHEN-NEW-FORM-INSTANCE
C'est le texte de ce déclencheur qui accueille les déclarations / initialisations d'éventuelles
variables globales à tous les modules de l'application.
Chaque module, bloc, élément peut être associé à un ou plusieurs déclencheurs. Chaque
déclencheur peut être compilé séparément ou ils peuvent l'être tous en bloc.
2. Eléments de l’environnement de FORMS
4 outils principaux:
Le Navigateur
Le Navigateur est l'outil d'exploration de la hiérarchie des composants d'une application :
modules, blocs, éléments, déclencheurs… Chaque composant est un nœud de l'arborescence. Si ce
nœud est décomposable, il est doté d'un signe + ou - . Un clic sur ce signe permet de présenter /
resp. cacher ses composants. Un double-clic sur un composant ouvre la fenêtre de ses propriétés, ou
l'éditeur PL/SQL si c'est un sous-programme.
L'Editeur de présentation
L'Editeur de Présentation donne accès aux propriétés visuelles des objets de l'interface d'une
application, c'est-à-dire tout ce qui concerne leur présentation sur les écrans (canevas / canvas-view)
et les fenêtres (windows) de l'application. Il donne accès aux propriétés des éléments qui composent
un canevas donné ainsi qu'au décor (cadres, dessins, titres, couleurs de fond…).
P.-J. Charrel & J.-M. Thévenin, Université Toulouse 1, Licence Pro RTICPMO
ORACLE
Chapitre 2
Page 4
L'Editeur de propriétés
l'Editeur de Propriétés donne accès à toutes les propriétés de tous les composants d'une
application. Il peut être synchronisé avec le Navigateur Objet et l'Editeur de présentation et donne la
valeur courante de toutes les propriétés de l'objet courant de la hiérarchie des composants d'une
application.
Pour changer la valeur d'une propriété, cliquez dessus et modifier la valeur de la barre de saisie,
ou cliquez sur l'une des valeurs de la liste ou cliquez sur le bouton Plus.
L'Editeur PL/SQL
C’est un petit éditeur de textes dédié à l’écriture de modules PL/SQL (procédures, fonctions,
déclencheurs). Il donne aussi accès à la commande Compiler qui vérifie la syntaxe et traduit le texte
dans le langage interprétable par RUNFORM.
3. Extensions de PL-SQL à Developer 2000 / Forms
Les extensions concernent :
-
les variables : GLOBAL, SYSTEM, éléments (items) présentés à l'écran
-
les appels de modules,
-
la navigation entre blocs.
3.1 Les variables de Developer 2000
GLOBAL et SYSTEM
Les variables GLOBAL servent à passer des valeurs d'un module à l'autre. Elles sont déclarées
implicitement lors de leur 1ère affectation.
Leur nom est toujours construit ainsi:
:GLOBAL.<nom de variable globale>
Leur type est toujours
VARCHAR2
Conseil : déclarer toutes les variables GLOBAL, en leur affectant une valeur par défaut, dans le
déclencheur WHEN-NEW-FORM-INSTANCE du tout premier module de l'application.
Les variables SYSTEM sont des outils de réglages de l'application ou des comptes-rendus
d'exécution. Elles sont déjà déclarées.
Leur nom est toujours construit ainsi:
SYSTEM.<nom de variable système>
Exemples:
SYSTEM-MESSAGE-LEVEL : limite les messages d'avertissement ou de commentaires
SYSTEM-RECORD-STATUS : donne le statut de l' enregistrement courant du bloc courant
'CHANGED' signifie que l'un de ses éléments a été modifié.
Eléments (items) de l'interface
Tous les éléments qui peuvent contenir une valeur ont le statut de variable, leur type est déclaré
lors de leur construction.
P.-J. Charrel & J.-M. Thévenin, Université Toulouse 1, Licence Pro RTICPMO
ORACLE
Chapitre 2
Leur nom est toujours construit ainsi:
Page 5
:<nom du bloc>.<nom de l'élément>
Eléments (items) ne faisant pas partie de l'interface
Ce sont des éléments dont la propriété Canevas (Canvas) est laissée indéfinie (<null>). Ils sont
de même nature que les autres mais ne sont jamais affichés. Ils servent des variables globales au
module où ils ont déclarés. Ils ne sont pas accessibles à d'autres modules.
3.2 Les appels de sous-programmes
Toutes les instructions qui constituent une application Forms Builder étant inscrites dans des
sous-programmes écrits en PL/SQL qui sont les actions de déclencheurs.
On adjoint à l'appel de sous-programmes PL/SQL des instructions
-
d'appel de module : CALL_FORM, EXIT_FORM, OPEN_FORM, CLOSE_FORM
-
de navigation entre blocs : GO_BLOCK, NEXT_BLOCK, PREVIOUS_BLOCK
Seule CALL_FORM est un véritable "appel" de sous-programme : il y a transfert du contrôle du
module appelant au module appelé. EXIT_FORM est exécuté dans le module appelé et restitue le
contrôle à l'appelante.
Les autres procédures déplacent un pointeur d'item vers le module ou le bloc désigné, comme le
font les procédures GO_ITEM, NEXT_ITEM, PREVIOUS_ITEM dans le bloc courant.
3.3 Déclencheurs d'application
Un déclencheur est un couple
(événement, action)
où
-
l’événement est choisi dans une liste prédéfinie d’événements que peut rencontrer une
application durant son exécution
-
l’action est un module PL/SQL
Les déclencheurs sont
-
attachés directement à la base de données et se déclenchent quelle que soit l'application.
Dans ce cas, ils complètent la liste des contraintes posées sur les relations.
-
attachés aux objets composants une application : modules, blocs, éléments,
Ces déclencheurs d'application concernent tous les événements qui peuvent être déclenchés au
cours du déroulement de l'application elle—même. Ils complètent les déclencheurs de base de
données. Tous les composants d'une application : modules, blocs, éléments, peuvent être adjoints
de déclencheurs. Les déclencheurs d'application sont des événements prédéfinis que l'on décide de
prendre en compte, c'est-à-dire auxquels le système doit "réagir". Comme pour les déclencheurs de
base de données, ces réactions sont des "modules" de programme écrit avec le langage PL/SQL
P.-J. Charrel & J.-M. Thévenin, Université Toulouse 1, Licence Pro RTICPMO
ORACLE
Chapitre 2
Page 6
enrichi des structures de données et des bibliothèques de procédures et de fonctions spécifiques à
Forms.
Noms des déclencheurs d'application
Le nom d'un déclencheur se compose toujours ainsi :
<préfixe>-<nom symbolique>
Il existe 4 préfixes : PRE, POST, WHEN, ON. Selon le préfixe, le module PL/SQL se
déclenchera
PRE : avant le traitement standard de l'événement par le système,
POST : après le traitement standard de l'événement par le système,
WHEN : en même temps que le traitement standard de l'événement par le système
ON : à la place du traitement standard de l'événement par le système.
Exemple :
WHEN-BUTTON-PRESSED : lorsque l'utilisateur clique sur un bouton de l'interface, le
système "surligne" le bouton (traitement standard du clic qui donne l'impression d'avoir appuyé sur
le bouton) et exécute le module PL/SQL.
Etat de l'exécution d'un déclencheur.
Le code PL/SQL peut conduire à la "levée" d'exceptions. Si l'exception levée ne fait pas l'objet
d'un traitement spécifié dans le module PL/SQL, le déclencheur se termine dans l'état "échec"
(failuree), et le système lève l'exception prédéfinie FORM_TRIGGER_FAILURE. Le déclencheur
se termine dans un état "échec".
Si le code PL/SQL ne fait l'objet d'aucune exception, le déclencheur se termine dans l'état
"succès".
On peut, si besoin, exécuter
raise FORM-TRIGGER-FAILURE;
pour déclencher l'abandon d'un déclencheur et sa mise dans l'état "échec"
Types de déclencheurs.
7 types de déclencheurs : navigation dans l'interface, réaction aux frappes des touches du
clavier, action sur les objets de l'interface, validation d'une saisie, interrogation de la base de
données, gestion des enregistrements, mise à jour de la base de données.
1) Navigation
PRE-FORM, POST-FORM : entrée dans le / sortie du module
PRE-BLOCK, POST-BLOCK : entrée dans le / sortie du bloc
PRE-RECORD, POST-RECORD : entrée dans l' / sortie de l'enregistrement
PRE-TEXT-ITEM, POST-TEXT-ITEM : entrée dans le / sortie de l'élément texte
P.-J. Charrel & J.-M. Thévenin, Université Toulouse 1, Licence Pro RTICPMO
ORACLE
Chapitre 2
Page 7
2) Réaction aux touches du clavier
KEY-<Fonction assurée par une touche du clavier>
Exemples :
KEY-NEXT-ITEM (touche de tabulation), i.e. navigation d'un élément de l'interface
à l'élément suivant (Next Item) …
KEY-NEXT-RECORD (flèche haut), i.e. navigation d'un enregistrement au suivant
(Next Record)
KEY-PREVIOUS-BLOCK (double flèche bas) i.e. navigation d'un bloc au précédent
(Previous Block)
3) Interface
WHEN-BUTTON-PRESSED : clic sur un bouton de commande
WHEN-CHECKBOX-CHANGED: changement du choix des cases d'une case à cocher
WHEN-RADIO-CHANGED : changement du choix d'un bouton radio
WHEN-IMAGE-ACTIVATED
WHEN-MOUSE-UP/DOWN ...
WHEN-WINDOW-ACTIVATED
WHEN-WINDOW-DESACTIVATED
WHEN-WINDOW-RESIZED
WHEN-WINDOW-CLOSED
WHEN-NEW-FORM-INSTANCE : au moment de l'activation du module
WHEN-NEW-BLOCK-INSTANCE : au moment où le "pointeur d'objet courant" atteint le
bloc
WHEN-NEW-RECORD-INSTANCE : au moment où le "pointeur d'objet courant" atteint
l'enregistrement
WHEN-NEW-ITEM-INSTANCE : au moment où le pointeur d'objet courant atteint
l'élément
4) Validation
WHEN-VALIDATE-ITEM : validation de la saisie d'un élément
WHEN-VALIDATE-RECORD : validation de la saisie d'un enregistrement
5) Interrogation
PRE-QUERY : juste avant l'exécution d'un SELECT SQL ou d'une commande
EXECUTE_QUERY;
POST-QUERY : après l'extraction de chaque n-uplet extrait et son affichage dans un
enregistrement
6) gestion des enregistrements
déclenchée par les commandes d'effacement / création d'enregistrement
WHEN-REMOVE-RECORD : au moment où on efface un enregistrement
P.-J. Charrel & J.-M. Thévenin, Université Toulouse 1, Licence Pro RTICPMO
ORACLE
Chapitre 2
Page 8
WHEN-CREATE-RECORD : au moment ou un enregistrement est créé
7) mise à jour de la base de données
déclenchée par les commandes INSERT, UPDATE, DELETE et COMMIT
PRE/ON/-COMMIT, POST-FORM-COMMIT, POST-DATABASE-COMMIT
PRE/ON/POST-DELETE
PRE/ON/POST-UPDATE
PRE/ON/POST-INSERT
Remarque : COMMIT-FORM remplace COMMIT, ROLLBACK reste inchangée
Niveau d'un déclencheur
On attache normalement un déclencheur de bloc à un bloc et un déclencheur d'élément à un
élément. Mais il est parfois utile d'attacher un déclencheur d'élément à un bloc. Ce sont alors tous
les éléments du bloc qui sont concernés par ce déclencheur "générique".
3.4. Mises à jour de la base de données
Toute mise à jour de table se fait en 2 temps :
1. "postage" des données : mise à jour des tables et stockage dans une zone de transit
(ROLLBACK-SEGMENT) des anciennes valeurs avant la mise à jour.
2. validation (commit) ou annulation (rollback)
Tant que la transaction n'est pas terminée (par un commit ou un rollback), seule la transaction
en cours "voit les données à jour. Toutes les autres n'ont accès qu'aux anciennes au travers du
Rollback Segment.

Instructions SQL
UPDATE, INSERT, DELETE déclenchent une instruction POST.
COMMIT_FORM valide cette mise-à-jour,
ROLLBACK l'annule.

Instructions PL/SQL intégrées à Forms
Les éléments d'un bloc constituent une autre zone de transit, avant le ROLLBACK-SEGMENT.
Lorsqu'une mise à jour d'un élément image d'un attribut est validée, il faut la poster avec
post;
Ou l'effacer avec, selon l'étendue de la remise à zéro :
Clear_item; Clear_record; clear_block; clear_form;
Si des valeurs ont été postées, il faut ensuite valider ou annuler la mise à jour avec :
commit_form;
ou
rollback;
Remarque
Avant un appel de module ou un retour à un module appelant (CALL_FORM et EXIT_FORM),
il faut s'assurer que les éléments du module qui déclenchent l'appel ou le retour sont soit postés, soit
P.-J. Charrel & J.-M. Thévenin, Université Toulouse 1, Licence Pro RTICPMO
ORACLE
Chapitre 2
Page 9
effacés. Rappelons que si un élément au moins a changé de valeur, les variables
SYSTEM.FORM/BLOCK/RECORD/ITEM/STATUS prennent la valeur 'CHANGED'.
Les commentaires intempestifs d'Oracle peuvent être allégés en imposant dans certaines zones
de code la valeur 5 à la variable SYSTEM.MESSAGE-LEVEL.
P.-J. Charrel & J.-M. Thévenin, Université Toulouse 1, Licence Pro RTICPMO
Téléchargement