IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Le guide Oracle Forms 9i/10g

Date de publication : Juin 2005




Les composants d'une application Forms
Les déclencheurs
Les alertes
Les bibliothèques PL/SQL
Les menus
Les blocs de données
Les canevas
Les éditeurs
Les listes de valeurs (LOV)
Les groupes d'objets
Les paramètres
Les menus instantanés
Les unités de programme
Les classes de propriétés
Les groupes d'enregistrements
Les états
Les attributs visuels
Les fenêtres


Les composants d'une application Forms

Une application Forms est constituée d'un ensemble de composants

L'unité de base d'une application Forms est le Module

Un module peut gérer les composants suivants :

  • Déclencheurs [Triggers]
  • Alertes [Alerts]
  • Bibliothèques PL/SQL [Librairies]
  • Menus
  • Blocs de données [Blocks]
  • Canevas [Canvas]
  • Editeurs [Editors]
  • Liste de valeurs (LOV) [List of values]
  • Groupes d'objets [Object groups]
  • Paramètres [Parameterss]
  • Menus instantanés [Popup menus]
  • Unités de programme [Program units]
  • Classes de propriété [Property classes]
  • Groupes d'enregistrements [Record groups]
  • Etats [Reports]
  • Attributs visuels [Visual attributes]
  • Fenêtres [Windows]


Les déclencheurs

Les déclencheurs contiennent du code exécutable. Ils sont nommés et répondent à des évènements spécifiques. (programmation évènementielle)

Par exemple
Le déclencheur When-New-Form-Instance se déclenche au chargement du module.
Le déclencheur Pre-Insert se déclenche avant l'insertion d'une ligne en table
Le déclencheur On-Update se déclenche au moment de la mise à jour d'une ligne
Le déclencheur Key-Next-Item se déclenche lorsque l'utilisateur se déplace sur l'item suivant avec la touche Tab.

Forms gère deux types de déclencheurs:

  • Les déclencheurs natifs
  • Les déclencheurs créés par le développeur
Les déclencheurs natifs font partie intégrante d'une application Forms. Ils ont un nom spécifique et répondent à un évènement particulier. Ils sont gérés automatiquement par Forms et peuvent être surchargés par de développeur.

Les déclencheurs explicites sont créés et nommés par le développeur. Ils ne répondent à aucun évènement particulier et doivent être appelés explicitement dans le code du programme. Ce ne sont que des procédures contenant du code exécutable.

Il existe cinq familles de déclencheurs natifs:

  • PRE-xxx
  • ON-xxx
  • WHEN-xxx
  • POST-xxx
  • KEY-xxx
Les déclencheurs de type PRE-xxx se déclenchent juste avant l'évènement qu'ils désignent. (PRE-DELETE se déclenche juste avant l'ordre de suppression)

Les déclencheurs de type ON-xxx se déclenchent à la place de l'évènement qu'ils désignent. (ON-INSERT se déclenche au moment de l'insertion)

Les déclencheurs de type WHEN-xxx se déclenchent au moment de l'évènement qu'ils désignent. (WHEN-NEW-BLOC-INSTANCE se déclenche lorsque le focus arrive dans un bloc)

Les déclencheurs de type POST-xxx se déclenchent juste après l'évènement qu'ils désignent. (POST-COMMIT se déclenche juste après la validation en base)

Les déclencheurs de type KEY-xxx se déclenchent sur une touche ou combinaison de touches du clavier. (KEY-NXTREC se déclenche sur l'appui de la touche sautant à l'enregistrement suivant)

Les déclencheurs peuvent être situés au niveau du module, d'un bloc ou d'un item.
Si un déclencheur de même type est renseigné à chaque niveau, alors le déclenchement et l'ordre de déclenchement dépend de sa propriété : Ordre de déclenchement qui peut prendre l'une des trois valeurs suivantes :

  • Avant se déclenche avant tout autre déclencheur situé à un niveau supérieur
  • Après se déclenche après tout autre déclencheur situé à un niveau supérieur
  • Substitué annule et remplace tout autre déclencheur situé à un niveau supérieur
Prenons l'exemple d'un déclencheur WHEN-NEW-ITEM-INSTANCE renseigné au niveau item, bloc et forme (entre parenthèses l'ordre d'exécution)

   Avant  Après  Substitué
 Item  X (1)    
 Bloc    X (3)  
 Forme      X (2)

   Avant  Après  Substitué
 Item  X (1)    
 Bloc  X (2)    
 Forme  X (3)    

   Avant  Après  Substitué
 Item      X (1)
 Bloc  X (jamais*)    
 Forme  X (jamais)    
Dès qu'un déclencheur possède la propriété : Substitué, il annule et remplace tout autre déclencheur de même type situé à un niveau supérieur.
(*)(dans le troisième exemple, si l'item n'a pas de déclencheur W-N-I-I renseigné alors celui de niveau bloc se déclenchera)

Ce système permet une gestion élaborée du comportement de l'application, du niveau le plus fin (item) au plus large (forme).
Il est possible, dès qu'un item reçoit le focus, d'exécuter du code au niveau de cet item, puis d'en exécuter un autre au niveau de chaque item du bloc et d'en exécuter encore un autre au niveau de chaque item de toute la forme.


Les alertes

Les alertes sont des boites de dialogue que vous pouvez appeler de n'importe quel endroit de la forme pour afficher un message et récupérer le code d'un bouton pressé par l'utilisateur.

La palette de propriété d'une alerte permet de configurer le titre, le message (maxi 255 caractères) et de un à trois boutons (avec leur libellé respectif).


Les bibliothèques PL/SQL

Ce sont des bibliothèques externes de code exécutable liées à un ou plusieurs modules Forms.

Elles permettent de centraliser des fonctions, packages et procédures qui seront utilisés par les applications Forms.

Elles offrent l'avantage de n'être chargées en mémoire qu'une fois et d'y résider pendant toute la durée d'exécution de l'application.

C'est l'endroit idéal pour stocker les fonctions communes à plus d'un module.

Ce sont des fichiers indépendants ayant l'extension .PLL pour la version source et .PLX pour la version compilée et exécutable.


Les menus

Ils sont gérés sous la forme de modules indépendants (.MMB) et peuvent être associés à un ou plusieurs modules Forms.

Ils contiennent les options nécessaires à l'exécution de l'application.
Ils peuvent attacher une ou plusieurs librairies PL/SQL et contenir des unités de programme (procédures, fonctions, packages).

Ils permettent de filtrer les autorisations d'accès aux modules Forms via les rôles implémentés en base.


Les blocs de données

Ce sont des conteneurs d'objets de données.
Ils sont indépendant de tous canevas et de toutes fenêtres. (le canevas d'affichage étant stipulé au niveau item, les items d'un même bloc peuvent être affichés sur des canevas différents).
Ils contiennent des éléments (items), des déclencheurs (triggers) et des relations.
Ils permettent d'organiser plusieurs éléments dans une structure commune.
Ils sont le plus fréquemment basés.(table, vue, clause From, procédure stockée).
Ce sont eux qui ont la charge de gérer les ordres du DML (SELECT, INSERT, UPDATE, DELETE).
Il est possible de créer des blocs non basés (dit blocs de contrôle).
Dans ce cas, ces blocs ne peuvent contenir aucun item basé et ne mettent en oeuvre aucun mécanisme automatique depuis ou vers la base de données.
Ils sont utilisés pour la gestion interne de la forme mais n'ont aucune interaction directe avec la BDD.

Un bloc basé est généralement lié à une table ou une vue simple (mono-table).
Il peut contenir des items correspondant à toutes ou certaines colonnes de la table/vue liée.
Forms gèrera automatiquement les interactions avec la base (SELECT, INSERT, UPDATE, DELETE, LOCK).
Un bloc basé peut contenir des items non basés.

Un bloc peut également être lié à la base avec les éléments suivants :

  • Une sous-interrogation (SUB-QUERY). Dans ce cas le bloc est en SELECT seulement et ne gère donc pas automatiquement les opérations du DML. (il faudra les implémenter manuellement)
  • Une procédure stockée (chaque opération du DML doit être attachée à une procédure stockée en base)
  • Un trigger transactionnel (pour les bases autres qu' Oracle)
Les blocs peuvent être indépendants ou liés par une relation afin de gérer les mécanismes de relation maître/détail entre plusieurs tables.


Les canevas

Ce sont des conteneurs d'objets graphiques.
Ils correspondent à une surface d'affichage.
Ils permettent d'afficher les objets graphiques (surfaces, traits, cercles, encadrements, etc.) ainsi que les items contenus dans les blocs.
Il n'y a pas de limite théorique au nombre de canevas que peut contenir une forme.
Chaque canevas est attaché à une et une seule fenêtre.
Ils peuvent être de cinq types:

  • Intégral
  • Superposé
  • Onglets
  • Barre d'outils horizontale
  • Barre d'outils verticale
Le canevas intégral est le conteneur de base. Il peut y en avoir plusieurs par fenêtre mais un seul peut être affiché à la fois.
Le canevas superposé peut, comme son nom l'indique se superposer à un canevas intégral (il peut y en avoir plusieurs par fenêtre). Il permet de n'afficher qu'une partie de façon fenêtrée et de déplacer le contenu dans cette fenêtre à l'aide de barres de défilement.
Le canevas à onglets se superpose également à un canevas intégral et permet de gérer des pages d'onglets (il peut y en avoir plusieurs par fenêtre)
Les canevas de type barre d'outils permettent de réaliser des barres d'outils flottantes ou non. (un seul canevas horizontal et un seul canevas vertical par fenêtre).
La taille physique d'un canevas n'a pas de limite et peut excéder celle de la fenêtre qui l'englobe. Dans ce cas, il est possible d'afficher des barres de déplacement horizontales et verticales pour gérer le défilement.


Les éditeurs

Ce sont des boites de dialogue modales permettant d'éditer le contenu d'un item de type texte.
Il est possible de gérer le titre de la boite, ses dimensions et ses attributs graphiques.
Il sont utiles lorsque l'item contient un texte imposant tout en n'affichant que les premières lignes.

Lorsque le focus se trouve sur un item de type texte on peut appeler la fenêtre de l'éditeur avec la combinaison de touche Ctrl+E


Les listes de valeurs (LOV)

Ce sont des boites de dialogue modales qui permettent d'afficher des listes d'enregistrements pour la sélection ou le contrôle du contenu d'un item.
Elles sont alimentées par un groupe d'enregistrements.
Elles représentent une aide à la saisie et peuvent être considérées comme des vues filtrées.

Par exemple, vous devez saisir dans un écran le numéro de la dernière commande passée par votre client. Le système de numérotation des commandes est tellement compliqué qu'il est impossible de se le rappeler. Une liste de valeur peut alors être invoquée pour afficher la liste des commandes passées par ce client (numéro, date, libellé, etc.) pour vous permettre de la sélectionner sans équivoque.
Une LOV peut également servir à valider une saisie. Si la valeur entrée dans l'item ne correspond pas à celles de la LOV, celle-ci est alors affichée pour sélectionner une valeur valide.
Une LOV permet également d'alimenter, après sélection, d'autres items de votre forme. Cette alimentation n'est pas automatique en mode interrogation.


Les groupes d'objets

Ce sont des conteneurs d'objets.
Ils permettent de rassembler des objets de tous types (blocs, déclencheurs, attributs visuels, etc.) dans un groupe qui peut être ensuite inséré dans une forme.
Les groupes d'objets participent à la notion d'héritage et permettent d'une part la centralisation des objets communs à plusieurs formes et d'autre part le respect des normes graphiques et de développement.
On peut les assimiler à des objets complexes constitués d'attributs et de méthodes.


Les paramètres

Ce sont des variables permettant de recevoir des valeurs transmises par les modules appelants.

Ils peuvent être l'un des trois types suivants:

  • CHAR
  • NUMBER
  • DATE


Les menus instantanés

Ce sont des menus contextuels pouvant être attachés soit à un canevas soit à un ou plusieurs items.

Ils sont affichés avec un clic-droit de la souris sur le canevas ou l'item auquel ils sont rattachés.


Les unités de programme

Ce sont des conteneurs de code.
Ils contiennent les packages, procédures et fonctions écrites par le développeur.
Leur mise en oeuvre est identique à celle utilisée pour les procédures et fonctions stockées ou déclarées dans un bloc PL/SQL anonyme.
Elles ne nécessitent pas les mots clés : CREATE OR REPLACE.
Elle peuvent contenir des appels à toutes les fonctions natives Forms.
Elles ne sont visibles que dans le module Forms.


Les classes de propriétés

Ce sont des conteneurs de propriétés et de déclencheurs.
Elle permettent de définir des ensembles de propriétés communes qui seront ensuite appliqués aux items.

Elles participent à la mise en place et au respect de la charte graphique.


Les groupes d'enregistrements

Ce sont des conteneurs de données.
Ils sont statiques ou alimentés par une requête SQL et permettent de constituer des tableaux d'enregistrements.
Ils sont utilisés pour alimenter les LOV et les items de type liste.


Les états

Ils permettent d'exécuter un état (report) développé avec l'application Oracle Reports.


Les attributs visuels

Ce sont des conteneurs d'attributs graphiques.
Ils permettent de constituer des ensembles de propriétés graphiques qui seront ensuite appliqués aux items.


Les fenêtres

Ce sont des conteneurs de canevas et de menus.
Elles peuvent être de type document ou boite de dialogue et peuvent être modales ou non. (une fenêtre non modale permet la navigation entre plusieurs fenêtres. Une fenêtre modale ne permet pas la navigation entre plusieurs fenêtres).
Il n'y a pas de limite théorique au nombre de fenêtres d'une application Forms.
Une fenêtre peut contenir un ou plusieurs canevas.
Elle peut également être attachée à un menu.



Copyright © 2005 SheikYerbouti. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.