Oracle Application Express
From Isiwiki
Oracle Application Express (APREX) est un environnement interactif de développement d'applications Web au-dessus d'une base de données Oracle. APEX est essentiellement déclaratif, plutôt que de programmer des actions (en PHP, en Java, ...) pour créer les contenus des pages, on décrit ce que l'on veut. Cette caratéristique est intéressante car il est généralement reconnu que l'utilisation de langages déclaratifs facilite l'écriture, la mise au point la maintenance, comparés aux langages procéduraux.
Contents |
[edit] Concepts de base d'APEX
[edit] Page
Une application APEX est composée de pages, ou plus exactement de schémas de pages. Lorsqu'une page est demandée au serveur celui-ci la construit à partir de son schéma. Le schéma de construction comprend des éléments fixes et des éléments calculés à partir de requêtes SQL ou de code PL/SQL. Avant ou pendant ou à la fin de la construction le serveur peut exécuter des actions spécifiées dans le schéma de page. De même, si la page comprend des boutons de soumission (des boutons "submit" de HTML) il peut y avoir exécution d'actions avant le traitement de la soumission.
Pour organiser une application un peu complexe on peut former des groupes de pages.
[edit] Région
Une pages est composée de régions. Chaque région peut contenir des éléments (item) et des boutons. Comme à l'ancienne, les pages sont identifiées par un numéro, mais on peut aussi leur attribuer un identificateur.
Les régions peuvent être de type - HTML - Report - Form - Chart - Breadcrumb - PL/SQL Dynamic Content - Tree - URL - Calendar
Le schéma de construction d'une région varie en fonction de son type. Une région HTML n'a aucun schéma particulier, mis à part un template de décoration. Une région Report a besoin d'une requête SQL ou d'une table et d'une liste de colonnes, suivant le type de Report choisi.
Le modèle est un peu trompeur car une région peut très bien n'avoir aucun élément et afficher du contenu. Par exemple un région Report affiche le contenu d'une sélection sans qu'il soit besoin d'ajouter le moindre élément.
[edit] Bouton
Chaque bouton appartient à une région. Il sert à déclencher une action, par exemple la navigation vers une autre page ou bien un calcul, etc. .
Attention à une petite incohérence d'interface : pour spécifier la page à laquelle conduit un bouton il faut aller dans la zone "Optional URL Redirect", bien qu'il ne s'agisse pas d'une redirection mais d'un lien direct vers une page.
[edit] Elément
Les éléments (item) sont en général des widgets d'interface pour la saisie de données (champs texte, sélecteur de fichier, bouton radio, etc.). Chaque élément porte un nom qui est unique dans l'application d'où la proposition de les nommer PXX_chose où XX est le numéro de la page.
Chaque élément joue donc le rôle d'une variable globale accessible depuis toutes lea autres pages. Il faudrait plutôt dire qu'à chaque élément correspond une variable de session.
Le positionnement a l'air totalement primitif : il faut donner des numéros d'ordre, et ne pas oublier de laisser des trous au cas où l'on voudrait insérer d'autres éléments.
[edit] La navigation
La navigation fixe se fait simplement en définissant des boutons et en leur associant un "Optional URL Redirect" qui pointe soit vers une page de l'application soit vers un URL quelconque.
Pour une navigation basée sur le contenu c'est assez détourné. Supposons qu'à partir d'une page qui affiche la liste des départements on veuille aller sur la page qui affice la liste des employés du département cliqué. Le principe est le suivant : - le clic sur un numéro de département met ce numéro comme valeur d'un élément S de la page destination - on saut à la page destination - celle-ci sélectionne les employés dont le numéro de département est S
Il faut le dire de la manière suivante :
- Dans la page, disons 100, qui affiche les employés
- Définir un élément (caché) P100_DEPARTEMENT
- Dans la région Report qui montre les employés, ajouter une condition de sélection de la forme DEPT_ID = :P100_DEPARTEMENT (le : indique qu'il s'agit d'un élément)
- Dans la page qui affiche les départements, dans le Report qui montre les départements
- Dire que la colonne DEPARTEMENT est de type Lien
- La faire pointer vers la page 100 et indiquer qu'elle met sa valeur (#DEPARTEMENT#) dans l'élément P100_DEPARTEMENT
ouf!
[edit] Le développement
APEX n'a pas de langage de spécification de page (ou alors il est caché). On définit le contenu d'une page uniquement à traver l'interface interactive d'APEX. La définition est ensuite stockée dans des tables et interprétée au moment d'assembler la page.
On peut exporter une application dans un format propre à Oracle et l'importer dans une autre BD Oracle.
En cours de développement les pages ont toujours, en bas, un menu de mise au point pour revenir immédiatement à la définition de la page ou de l'application.
