Evaluation du couplage entre Designer & JDeveloper d Oracle



Documents pareils
BIRT (Business Intelligence and Reporting Tools)

DEVAKI NEXTOBJET PRESENTATION. Devaki Nextobjects est un projet sous license GNU/Public.

Modélisation et Gestion des bases de données avec mysql workbench

Module pour la solution e-commerce Magento

Sage 100 CRM Guide de l Import Plus avec Talend Version 8. Mise à jour : 2015 version 8

OpenPaaS Le réseau social d'entreprise

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Tutoriel de formation SurveyMonkey

Notes de cours : bases de données distribuées et repliquées

La base de données dans ArtemiS SUITE

ESPACE COLLABORATIF SHAREPOINT

Bases de Données relationnelles et leurs systèmes de Gestion

Olivier Mondet

KPI (Key Performance Indicator) dans MOSS

Compte Rendu d intégration d application

Service On Line : Gestion des Incidents

8. Gestionnaire de budgets

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Guide d utilisation commandes des pièces de rechange Rev.1.0.3

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Création et Gestion des tables

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Tutorial sur SQL Server 2000

Bases de données et sites WEB Licence d informatique LI345

Introduction aux outils BI de SQL Server Tutoriel sur SQL Server Integration Services (SSIS)

Access et Org.Base : mêmes objectifs? Description du thème : Création de grilles d écran pour une école de conduite.

TP Contraintes - Triggers

Écriture de journal. (Virement de dépense)

Compte-rendu de projet de Système de gestion de base de données

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Tutoriel d installation de Hibernate avec Eclipse

Master Exploration Informatique des données DataWareHouse

MEGA ITSM Accelerator. Guide de démarrage

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Compétences Business Objects

Les tablettes et l'extranet Intermixt Mode d'emploi

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Installer Enterprise Miner 5.1 en SAS environnement Windows

PHP 5. La base de données MySql. A. Belaïd 1

Création d un service web avec NetBeans 5.5 et SJAS 9

Créer une base de données vidéo sans programmation (avec Drupal)

Formation. Module WEB 4.1. Support de cours

Data Tier Application avec SQL Server 2008 R2

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Tenrox. Guide d intégration Tenrox-Salesforce. Janvier Tenrox. Tous droits réservés.

Guide de démarrage Intellipool Network Monitor

Gestion des utilisateurs, des groupes et des rôles dans SQL Server 2008

Les Utilisateurs dans SharePoint

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Gestion de références bibliographiques

Création d une application JEE

Mise en oeuvre d un Serveur de CD AXIS StorPoint

CREATION WEB DYNAMIQUE

Création d un formulaire de contact Procédure

Bases de données et sites WEB

Gestion des références bibliographiques. Comment simplifier la gestion des références bibliographiques?

Once the installation is complete, you can delete the temporary Zip files..

PARTAGER UN ANNUAIRE COLLECTIF DE SIGNETS AVEC DEL.ICIO.US

COMMENT TROUVER VOS FUTURS CLIENTS À L INTERNATIONAL? 05/03/2015 Creditsafe France

Lancez le setup, après une phase de décompression, la fenêtre d installation des prérequis apparaît, il faut les installer :

1. Base de données SQLite

Cahier Technique. «Développer une application intranet pour la gestion des stages des étudiants» Antonin AILLET. Remi DEVES

Les bases de données

Bases de données relationnelles

GUIDE Excel (version débutante) Version 2013

Cours Bases de données 2ème année IUT

Cours 1 : introduction

1.2 Genèse. 1.3 Version de Designer utilisée

Langage SQL : créer et interroger une base

Administration des bases de données. Jean-Yves Antoine

Cours iguess. inotes v10.1

TechSoftware Présentations

Application web de gestion de comptes en banques

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

KWISATZ_TUTO_module_magento novembre 2012 KWISATZ MODULE MAGENTO

Oracle Developer Suite 10g. Guide de l installation. Vista & Seven

Connexions à un projet CVS via Eclipse en accès local et distant. 15 Mai 2007

Méthode de préparation du fichier texte d import depuis Excel, via Access jusqu à Drupal.

D.S.A. Dossier-Suivi/Agenda MODULE OUTLOOK MANUEL DE L UTILISATEUR

INF 1250 INTRODUCTION AUX BASES DE DONNÉES. Guide d étude

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

COMMUNICATION TECHNIQUE N TCV060 Ed. 01. OmniVista 4760 Nb de pages : 18 Date : URGENTE NON URGENTE TEMPORAIRE DEFINITIVE

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

Access 2007 FF Access FR FR Base

Avant-propos 1. Avant-propos Organisation du guide À qui s'adresse ce guide?...4

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

MEGA ITSM Accelerator. Guide de Démarrage

Paginer les données côté serveur, mettre en cache côté client

Dossier Technique. Détail des modifications apportées à GRR. Détail des modifications apportées à GRR Le 17/07/2008. Page 1/10

VAMT 2.0. Activation de Windows 7 en collège

Objectifs du TP : Initiation à Access

EJBCA PKI Open Source

Auto-évaluation Oracle: cours de base

WORKSHOP OBIEE 11g (version ) PRE-REQUIS:

Transcription:

Travail de diplôme d informaticienne de gestion HES Evaluation du couplage entre Designer & JDeveloper d Oracle Cahier pratique Etudiante Astrid von Wyl Directeur du travail Pierre-André Sunier Date de restitution Février 2005 Cycle d études Plein temps 2003-2005

Table des matières 1. Introduction...4 2. Outil...6 2.1. Espace de travail...6 2.2. Créer un projet...7 2.3. Connexion...7 2.4. Diagramme...9 2.5. Propriétés d une entité...11 2.5.1. Name...11 2.5.2. Attributs...11 2.5.2.1. Contraintes...15 2.5.2.2. Séquences...16 2.5.3. Autres nœuds de la fenêtre des propriétés d une entité...17 2.6. Associations...17 2.7. Vues...19 2.8. Composants modules...22 3. Couche modèle...25 3.1. Génération d applications à partir de nos propres spécifications...25 3.2. Importation d un module depuis Oracle Designer...25 3.2.1. Perte /conservation d information lors de l importation...28 3.3. Génération d applications à partir de modules Designer avec scripts d APIS et SQL-DDL...28 3.3.1. Module avec table de référence...28 3.3.2. Module avec LOV...31 3.3.3. Module maître-détail avec entité associative...33 3.3.4. Module avec champs calculés...35 3.3.5. Lien réflexif...35 3.4. Synthèse de l importation...37 3.4.1. Clé primaire...38 3.4.2. Champs d audit et domaines...39 3.4.3. Validation...39 3.4.4. Vues et modules...39 3.4.5. Navigation...39 3.4.6. Enrichissement du module et synchronisation...40 4. Couche view/controller...41 4.1. ADF UIX...42 4.1.1. LOV...45 4.1.2. Types...46 4.2. JSP...46 4.2.1. LOV...48 4.2.2. Types...49 4.3. Java Client...49 4.3.1. LOV...50 23.03.2005 2 sur 73 Astrid von Wyl

4.4. JHeadstart...51 4.4.1. LOV...53 4.4.2. JSP...54 4.4.2.1. JSP avec LOV...55 4.4.3. Types...55 4.4.4. Personnalisation des applications...55 4.5. Remarques...55 4.6. Affichage d un module avec table de référence...56 4.6.1. Web Client...56 4.6.2. Java Client...56 5. Application garage...57 5.1. Importation...60 5.2. Affichage, couche vue...61 5.2.1. Champs calculés...61 5.2.2. ADFUIX...62 5.2.2.1. Erreur...63 5.2.3. JSP...63 5.2.4. Java Client...65 5.2.5. JHeadstart...66 6. Evaluation du couplage...68 7. Conclusion...69 8. Annexes...70 8.1. Figures...70 8.2. Options du fichiers ApplicationStructure.xml...71 9. Remerciements...72 23.03.2005 3 sur 73 Astrid von Wyl

1. Introduction Le but de cette partie pratique est de montrer une partie des possibilités d utilisations de JDeveloper. L outil est d abord utilisé seul, puis en couplage avec Designer. Les tests se font autant pour la couche modèle que pour la couche vue des applications. Dans tout le travail, je pars du principe qu Oracle Designer est connu du lecteur. Ma démarche est la suivante, tout d abord, j ai commencé par me familiariser avec l outil en suivant les cahiers 1 à 3 du cours d AGL 1. Ces cahiers traitent des points suivants : de la structure du référentiel, de la modélisation conceptuelle de données, du passage du niveau conceptuel au niveau logique, de la modélisation logique de données, de la génération des scripts SQL-DDL, de la génération des APIs de table, du modèle de traitement, de la génération des procédures PL/SQL de création de pages HTML dynamiques, de l utilisation des modules de traitement via IAS, des mécanismes de notification, des types de données, des clés secondaire, des associations, des champs d audit, des journaux de table, du mécanisme de consolidation de bases de données, des propriétés d affichage, des tables de références, des listes de valeurs de référence, des cardinalités des associations, des attributs des associations 1 :1 et 1 :N, des contraintes, des formulaires maître-détails, des associations non transférables, des associations identifiantes, des contraintes d intégrité référentielles, des contraintes d unicité d association, des champs calculés Dans le chapitre outil, j étudie ces notions au fur et à mesure de ma progression dans la compréhension de l outil. JDeveloper repose sur le modèle MVC (modèle-vue-contrôleur). C est pourquoi la suite du cahier est décomposé en deux parties : vue et modèle. Le deuxième chapitre est consacré à la couche modèle d une application. Pour travailler dans cette couche, je réalise deux connexions, la première à une base de données et la seconde à une instance de l AGL Designer. J utilise JDeveloper pour spécifier les entités d une application, puis je génère le modèle de base de données associé. Je fais ensuite des essais avec Designer. J importe un module Clients-Representants depuis Designer pour étudier la manière dont JDeveloper traite ces informations. Les «applications» de cette couche sont ensuite testées. Le troisième chapitre est consacré à la couche vue du modèle MVC. Pour tester cette couche, je reprends trois modules de Designer : un module Clients, un module Clients- Représentants (table de référence), un module Clients-représentants (avec LOV). 1 Voir le site http://zuse.esnig.cifom.ch/analyse/designer6i/index.htm 23.03.2005 4 sur 73 Astrid von Wyl

Pour chacun de ces modules, je vais expérimenter les trois manières de procéder possibles. La couche vue peut être soit un client java, soit un client web. Ce dernier peut être réalisé à l aide de deux technologies : ADF UIX et JSP. Suite à mes recherches, je réalise également une application complète avec JHeadstart. La quatrième chapitre est consacré à une application développée avec Designer. Il s agit d une application de gestion des réparations dans un garage. Le but du quatrième chapitre est de générer l application avec les trois possibilités de la couche vue et JHeadstart qui est une extension de JDeveloper. J ai choisi ce sujet, car j estime qu il contient un bon équilibre entre théorie et pratique. De plus j ai l impression que la partie théorique peut être vérifiée par la pratique. J ai une préférences pour les sujets qui touchent un domaine inconnu. 23.03.2005 5 sur 73 Astrid von Wyl

2. Outil Pour pouvoir utiliser l outil JDeveloper, il faut définir un espace de travail, un projet et une connexion à une base de données. 2.1. Espace de travail Pour créer l espace de travail, il faut choisir dans le navigateur l onglet Applications(Figure 1) et avec un click-droit sur la racine de l arborescence Applications dérouler le menu (Figure 2). Figure 1 Figure 2 Sélectionner New Application Workspace. L assistant de création d espace de travail est déployé (Figure 3). Figure 3 Pour pouvoir profiter d ADF BC, les modèles d application à utiliser sont : Java Application [Default] : Génère un projet ADFJclient et un projet ADF BC. Web Application [Default] : Génère un projet pour la couche vue + contrôleur et un autre pour la couche modèle. Web Application [Default, no controller] : Génère un projet pour la couche vue et un autre pour la couche modèle, pas de contrôleur. 23.03.2005 6 sur 73 Astrid von Wyl

2.2. Créer un projet Dans l arborescence du navigateur de l onglet Application, dérouler le menu sur l application choisie et cliquer sur >New. Ensuite, sélectionner le type de projet que l on souhaite créer (Figure 4). Figure 4 Pour chaque projet il est possible d éditer des propriétés. A cet effet, choisir le menu Tools> Project properties. Parmi les propriétés, il y a la définition d une connexion à une base de données, le choix des technologies qu il est possible d utiliser dans le projet, p.ex. EJB, Struts, UML. D autres propriétés définissent les classes java qui seront créées, les chemins etc.. La définition du projet est contenue dans un fichier à l extension.jpx (Figure 5). Ce fichier est visible depuis l onglet system. <?XML version='1.0' encoding='windows-1252'?> <!DOCTYPE JboProject SYSTEM "jbo_03_01.dtd"> <JboProject Name="Project" SeparateXMLFiles="true" PackageName="" > <DesignTime> <Attr Name="_version" Value="9.0.5.16.0" /> <Attr Name="_jprName" Value="../Project.jpr" /> <Attr Name="_ejbPackage" Value="false" /> <Attr Name="_NamedConnection" Value="ConnexionG04" /> </DesignTime> <Containee Name="mypackage" FullName="mypackage.mypackage" ObjectType="JboPackage" > </Containee> </JboProject> 2.3. Connexion Figure 5 Pour établir la connexion à une base de données avec Oracle JDeveloper 10g, dans le navigateur, choisir l onglet connections (Figure 6) et développer dans l arborescence le nœud Database (Figure 7). Figure 6 23.03.2005 7 sur 73 Astrid von Wyl

Figure 7 Dérouler le menu avec click-droit sur le type de connexion voulu > New Database connection. L assistant de création de connexion apparaît, il faut alors saisir les paramètres JDBC suivants : Connection Name : ConnectionG02 Connection type : Oracle(JDBC) JDBC-ODBC Bridge Oracle Lite Third Party JDBC Drive Username: DIPL04AVW_G02 Password:******* Role: - Driver: thin Host Name: leto.cpln.ch JDBC Port: 1521 SID: es28 Figure 8 La dernière étape de l assistant offre la possibilité de tester la connexion et de corriger d éventuelles erreurs. L arborescence du nœud Database (Figure 7) s agrandit, un nœud pour chaque type d objet de la base de donnée est crée (Figure 9). Figure 9 Les objets contenus dans la base de données peuvent être visualisés en déroulant le nœud correspondant dans l arborescence. La connexion est visible dans la fenêtre de structure (Figure 10). Figure 10 Les données liées à la connexion se trouvent dans le fichier bc4j.xcfg. Il contient notamment les paramètres JDBC, le nom des modules, leur portée. Ce fichier est visible depuis l onglet system. 23.03.2005 8 sur 73 Astrid von Wyl

<?XML version = '1.0' encoding = 'UTF-8'?> <BC4JConfig> <AppModuleConfigBag> <AppModuleConfig name="clientsappmodulelocal"> <AppModuleJndiName>ClientsPackage.ClientsAppModule</AppModuleJndiName> <DeployPlatform>LOCAL</DeployPlatform> <JDBCName>ConnexionG04</JDBCName> <ApplicationName>ClientsPackage.ClientsAppModule</ApplicationName> <jbo.project>clients</jbo.project> </AppModuleConfig> </AppModuleConfigBag> <ConnectionDefinition name="connexiong04"> <ENTRY name="jdbc_port" value="1521"/> <ENTRY name="connectiontype" value="jdbc"/> <ENTRY name="hostname" value="leto.cpln.ch"/> <ENTRY name="user" value="dipl04avw_g04"/> <ENTRY name="connectionname" value="connexiong04"/> <ENTRY name="sid" value="es28"/> <ENTRY name="jdbcdriver" value="oracle.jdbc.driver.oracledriver"/> <ENTRY name="password"> <![CDATA[{904}0516E666252DCC0C13E894B6904A2696C]]> </ENTRY> <ENTRY name="oracle_jdbc_type" value="thin"/> <ENTRY name="deploypassword" value="true"/> </ConnectionDefinition> </BC4JConfig> 2.4. Diagramme Figure 11 Dans Oracle JDeveloper 10g, à l aide du business components diagram, il est possible de spécifier ou de représenter des entités. Pour créer ce diagramme, cliquer sur le projet NEW> General >Diagrams (Figure 12). Figure 12 Les objets que l on peut mettre dans ce diagramme sont proposés par la palette des composants (Figure 13). 23.03.2005 9 sur 73 Astrid von Wyl

Figure 13 Une entité spécifiée avec ce diagramme se présente de telle façon (Figure 14): Figure 14 Figure 15 La fenêtre de structure (Figure 15) montre la structure de l entité. A partir du diagramme, il est possible de procéder à deux générations : 23.03.2005 10 sur 73 Astrid von Wyl

Default Data Model Components : Génère le composant module correspondant aux spécifications des entités ainsi que des vues et les liens vues. Database objects : Génère la table correspondant aux spécifications dans un schéma de base de données. 2.5. Propriétés d une entité Pour une entité, on peut définir des attributs. Ces attributs ont un type en tant qu attribut d une entité et en tant que colonne dans une table. Il y a neuf nœuds dans la fenêtre des propriétés d un attribut : Name, Attributes, Tuning, Java, Validation, Publish, Suscribe, Authorization, Custom properties. Je les décris un à un ci-dessous. 2.5.1. Name Si l entité est la définition d une table déjà existante, choisir la connexion à un schéma et la table à laquelle l entité est liée : 2.5.2. Attributs Figure 16 Les colonnes qui existent dans la table mais qui ne se trouvent pas sous forme d attribut dans l entité sont générées après que l on ait lié l entité à une table (Figure 16). Selon les besoins, des attributs sont définis dans l entité mais de manière non persistante. Ils n existent pas sous forme de colonne de la table. Pour chaque attribut créé, des propriétés sont définies : 23.03.2005 11 sur 73 Astrid von Wyl

Figure 17 Persistent : Persistance ou non d un attribut Mandatory : Attribut obligatoire ou non. Si la case est cochée, une contrainte not null est générée. Discriminator : La case est cochée si cet attribut permet de distinguer une entité polymorphe d une autre. En effet, JDeveloper regroupe les objets polymorphes dans une seule classe. Change indicator 2 : Il faut cocher cette case si la colonne est un indicateur de changement, par exemple un timestamp. La plate-forme ADFBC utilise cet indicateur pour déterminer si un tuple a déjà été modifié dans une autre transaction ou peut être verrouillée. S il n y pas de colonne spécifiée comme indicateur de changement, une comparaison colonne par colonne est effectuée. Selected in query : L attribut apparaît dans la requête SQL de la vue. Primary key : Attribut de clé primaire. Si la case est cochée, une contrainte de clé primaire est générée. Unique: Définit si l attribut est unique ou non. Si la case est cochée, une contrainte d unicité est générée. Queriable: Attribut qui apparaît dans les formulaires de recherches. History column: Champ d audit. (created on modified on created by modified by version number). Ne fonctionne pas si l attribut a les propriété suivantes: clé primaire, obligatoire ou discriminant, Updateable : L attribut peut-il être mis à jour? While new s utilise pour les clés primaires par exemple. Always pour un numéro de téléphone par exemple et Never pour un attribut d une table de lookup. Refresh after : Si un trigger existe, cocher la case correspondante au type de trigger. Database column : Définit le nom de la colonne dans la table ainsi que son type. Le fichier Impl.java (Figure 18) dépend directement des ces propriétés. Par exemple Updateable never a pour conséquence qu aucune méthode set () n est écrite pour l attribut. 2 Traduit de l aide en ligne 23.03.2005 12 sur 73 Astrid von Wyl

Figure 18 L onglet Attribute properties (Figure 19) contient des attributs qui se trouvent dans les méta données. Ces propriétés se trouvent dans le fichier XML associé à l entité. Ci-dessous, les propriétés sont extraites automatiquement lors d une importation d un module depuis Designer. Figure 19 Par défaut, on peut choisir entre quatre noms Description File name XML element XML Explicit null. Un autre nom de propriété peut être défini, par exemple prompt (Figure 19)) Il n y a pas de lien entre ces propriétés et celles définies dans les autres onglets, par exemple display et la propriété display de l onglet décrit ci-dessous. Ces propriétés sont utilisées selon le besoin lors de l exécution. Les propriétés des entités sont liées au fichier XML correspondant à l entité. Celui-ci contient les propriétés décrites ci-dessus. En voici un extrait : 23.03.2005 13 sur 73 Astrid von Wyl

<Attribute Name="Nom" IsNotNull="true" Precision="255" ColumnName="NOM" Type="java.lang.String" ColumnType="VARCHAR2" SQLType="VARCHAR" TableName="MON_CLIENT" > <Data> <Property Name ="ID" Value ="901fd421-0101-1000-7::mypackage1.EntityObject1::EntityObjectAttribute" /> <Property Name ="CHANGEABILITY" Value ="CHANGEABLE" /> <Property Name ="OWNER_SCOPE" Value ="INSTANCE" /> <Property Name ="MULTIPLICITY" Value ="1" /> <Property Name ="VISIBILITY" Value ="PACKAGE" /> </Data> </Attribute> Figure 20 L onglet control hints permet de définir des paramètres d affichage pour l attribut : Figure 21 Display hint : Display hide affiche ou non l attribut. Label text : Etiquette qui correspond à l attribut. Tooltip text : Texte qui sera contenu dans l information relative à l attribut. Format type : Par exemple Date. Format : Selon le type de l attribut, différents formats sont proposés, par exemple (yyyy-mm-dd) si Format type = Date. Control type : Date Edit Default. Date affiche un calendrier, edit rend le contrôle de champ éditable et default le client choisit le plus approprié. Display width : Largeur du champ. Display height: Hauteur du champ. Form Type : Détermine le type d affichage: Detail summary. Le type detail aligne tous les attributs dans une colonne Summary les affiche sous forme de grille. Cette propriété n est valable que pour les couches vues de types Jclient. Lorsque l on saisit des valeurs dans l onglet control hints, un fichier ImplMsgBundle.java est créé pour l entité (Figure 22). Ce fichier correspond au contenu de l onglet control hints. 23.03.2005 14 sur 73 Astrid von Wyl

package mypackage1.common; import oracle.jbo.common.jboresourcebundle; public class MonClientImplMsgBundle extends JboResourceBundle { public MonClientImplMsgBundle() { } public Object[][] getcontents() { return super.getmergedarray(smessagestrings, super.getcontents()); } static final Object[][] smessagestrings = { {"Nom_LABEL", "Nom du client"}, {"Nom_DISPLAYWIDTH", "50"}}; } 2.5.2.1. Contraintes Figure 22 Les contraintes sont générées à partir des propriétés définies pour les attributs. Elles sont définies dans le fichier XML correspondant à l entité (Figure 23). <Key Name="MonClientNumeroCheck" > <AttrArray Name="Attributes"> <Item Value="mypackage1.MonClient.Numero" /> </AttrArray> <DesignTime> <Attr Name="_DBObjectName" Value="MON_CLIENT_NUMERO_CHECK" /> <Attr Name="_checkCondition" Value=""NUMERO" IS NOT NULL" /> <Attr Name="_isNotNull" Value="true" /> <Attr Name="_isCheck" Value="true" /> </DesignTime> </Key> <Key Name="MonclientPrimaryKey" > <AttrArray Name="Attributes"> <Item Value="mypackage1.MonClient.Numero" /> </AttrArray> <DesignTime> <Attr Name="_DBObjectName" Value="MONCLIENT_PRIMARY_KEY" /> <Attr Name="_isPrimary" Value="true" /> </DesignTime> </Key> Figure 23 Contrainte not null : Il faut cocher la case mandatory dans les propriétés de l attribut. Cette contrainte permet d éviter que Oracle JDeveloper 10g interroge la Base de données mais vérifie lui-même la validité d un champ. Contrainte de clé primaire : La case à cocher primary key dans les propriétés de l attribut permet de spécifier la clé primaire. Si une table n a pas de clé primaire qui est spécifiée, Oracle JDeveloper 10g crée une clé primaire basée sur la pseudo-colonne ROWID. Contrainte d unicité : La case à cocher unique génère une contrainte d unicité. Contrainte de check : Définir une nouvelle contrainte (Figure 24). Par défaut JDeveloper crée des contraintes de type check pour les contraintes not null. Une contrainte peut être créée à partir d une entité ou par click-droit sur l entité <New Entity Constraint. 23.03.2005 15 sur 73 Astrid von Wyl

Figure 24 Mandatory : La colonne est obligatoire. Deferrable validation : La vérification de la contrainte peut être effectuée à la fin de la transaction. Disable validation : Désactive la contrainte, efface les indexes et interdit toute modification de la colonne concernée par la contrainte. Toute nouvelle colonne ou colonne modifiée peut violer la contrainte. Enable validation, validate existing data : La contrainte est vérifiée et doit être respectée pour toutes les nouvelles données et pour les données existantes. Enable validation : Les anciennes valeurs ne sont pas vérifiées, seules les nouvelles insertions sont contrôlées. Les contraintes sont visibles dans la fenêtre de structure (Figure 25). Figure 25 Remarque : La clé secondaire que l on trouve dans Designer doit être spécifiée comme une contrainte d unicité. 2.5.2.2. Séquences Il existe un type DBSequence pour définir la clé primaire dans les propriétés de l entité. Le fait de choisir DBSequence comme type met automatiquement updateable à while new, met en grisé refresh after insert, coche la case queriable et ajoute un onglet sequence à côté de database column. L onglet séquence permet de définir un nom pour la séquence dans le schéma de base de données (Figure 26). Figure 26 23.03.2005 16 sur 73 Astrid von Wyl

2.5.3. Autres nœuds de la fenêtre des propriétés d une entité Tuning: Permet de définir le nombre d enregistrements modifiés qui seront envoyés en même temps à la base de données. Ne fonctionne pas si refresh on update or insert est coché. Java: Définition des classes java qui seront générées pour l entité. Validation : Le nœud validation permet de définir des règles des validation, par exemple, la valeur d un attribut doit être plus grande que 10 ou comprise entre 60 et 900. Un message d erreur personnalisé peut être rédigé afin de savoir quelle règle a été violée. Ces règles de validation permettent de réaliser la validation dans l application et évitent ainsi un trafic réseau inutile. Publish: Crée un événement lié à l entité. Suscribe: Choix des événements auxquels l entité va réagir. Authorization: Gestion des droits d accès à l entité ou à un ou plusieurs de ses attributs. Custom properties: Permet d ajouter des descriptions dans les méta données. 2.6. Associations Une association entre deux entités peut être dessinée sur le diagramme de type business components diagram. Elle y est représentée par : ou l une des variantes de multiplicité. Une autre façon de définir une association est de cliquer sur New>Association sur l entité ou le package. Les propriétés de l association sont : (Figure 27) Figure 27 Sur la Figure 27, on définit la source et la destination de l association. Les associations sont orientées par défaut dans les deux sens. C est à dire que pour les deux extrémités de l association une instance de l entité source peut accéder à une instance de l entité destination. Pour enlever cette orientation, il faut enlever les accesseurs. On accède aux définitions des accesseurs par le nœud association properties (Figure 28). 23.03.2005 17 sur 73 Astrid von Wyl

Figure 28 Expose Accessor : Autorise l accès à l entité source via cet accesseur Use Database Key Constraints: Création de contraintes de niveau entité. La contrainte de clé étrangère va être créée afin de représenter l association. Le fait de décocher cette case n efface pas les contraintes déjà générées. Composition Association: Créer une composition. Dans une composition la destination fait logiquement partie de la source. Optimize for Database Cascade Delete: Empêche la base de données de générer du code DML qui efface chaque tuple de destination. Implement cascade DELETE : Implémente DELETE cascade dans le middle-tier Cascade Update Key Attributes: Les attributs de la destination changent si la source change. Lock Top-level Container: Verrouille la source lorsque la destination est verrouillée. Update Top-Level History Columns: Met à jour les champs d audit de la source lorsque la destination est modifiée. Si un accesseur existe seulement dans la source, l association est unidirectionnelle et ne peut être traversée que de la source à la destination. Dans notre cas, si l accesseur existe sur Representants uniquement, cela signifie que des enregistrements de la destination, en l occurrence Clients sont retournés. Figure 29 Le fichier XML correspondant à l association contient la propriété suivante pour la destination de l association, en l occurrence Clients. ExposedAccessor="false" Aucun accesseur n est disponible pour une instance de l entité Clients. Par contre une instance de l entité représentants accède à des instances de l entité Clients. Le sens de la flèche montre cette situation. 23.03.2005 18 sur 73 Astrid von Wyl

Figure 30 La manière de spécifier les associations influence la navigation dans les composants modules. 2.7. Vues Une vue est une représentation d une table ou vue de la base de données. Mais elle possède des informations supplémentaires à celles contenues dans la base de données, par exemple des champs calculés. La vue contient la requête de type SELECT qui est exécutée sur le schéma de base de données. Une vue peut se référer à plusieurs entités. Les vues n ont pas les mêmes propriétés que les entités. Les attributs d une vue se composent des nœud suivants (Figure 31 ): Figure 31 Entity objects : Ce nœud permet de définir quelles entités composent la vue. Attributes : Montre les attributs disponibles et ceux qui sont sélectionnés. Les attributs sélectionnés feront partie de la requête. Dès lors, les champs d audit sont de trop. Ils n ont pas besoin d apparaître dans le formulaire de test de module. Les attributs numero qui font partie d une relation sont obligatoires. Query : La requête représentée est un select des attributs sélectionnés dans la vue. Il est possible de personnaliser la requête en cochant la case expert mode. Mais dès lors «un retour en arrière implique la perte d informations». 3 La requête peut contenir une clause where et définir un order by. 3 Extrait de l Aide en ligne 23.03.2005 19 sur 73 Astrid von Wyl

SELECT LReprEntityUsage.NOM, LReprEntityUsage.PRENOM, LReprEntityUsage.MNEMO, ClientsEntityUsage.NUMERO, ClientsEntityUsage.REPR_NUMERO, ClientsEntityUsage.NOM AS NOM1, ClientsEntityUsage.PRENOM AS PRENOM1, ClientsEntityUsage.RUENO, ClientsEntityUsage.CODEPOSTAL, ClientsEntityUsage.LOCALITE, LReprEntityUsage.NUMERO AS NUMERO1 FROM CLIENTS ClientsEntityUsage, REPRESENTANTS LReprEntityUsage WHERE (ClientsEntityUsage.REPR_NUMERO = LReprEntityUsage.NUMERO) Figure 32 Attribute mapping (Figure 33) : On établit le lien entre les colonnes de la table de la base de données et les attributs de la vue. Pour pouvoir éditer ces propriétés, il faut cocher la case expert mode dans le nœud query. A partir de là, on peut personnaliser en cas de besoin, la relation entre les colonnes des tables et les attributs des vues. Une colonne de la table (si elle n est pas obligatoire) peut n être liée à aucun attribut. Figure 33 Tuning (Figure 34): Offre la possibilité de définir la façon dont les données sont extraites de la base de données. Figure 34 «1. As Needed: Le resultset demeure ouvert et les tuples sont retrouvés au fur et à mesure que l utilisateur navigue. Lorsque la fin du resultset est atteinte, celui-ci est fermé. 2. All at Once: Tous les tuples sont retrouvés même si l utilisateur ne navigue pas. Une fois que tous les tuples ont été retrouvés le resultset est fermé. Utile si le nombre de tuples est faible. 3. Page-by-Page Iteration Mode: Si on souhaite éviter la répétition des données Allow Partial Last Page, sinon (Keep Last Page Full )la dernière page est remplie avec des risques de doublons. 23.03.2005 20 sur 73 Astrid von Wyl

4. Fetch Size : Indique le nombre de tuples que l on souhaite capturer à la fois lorsque As needed est sélectionné. 5. Maximum Fetch Size : Définit le nombre maximal de tuples à capturer. 6. Query Hint : Permet d optimiser ou non une requête. 7. Enable Passivation: Si la case est décochée, les modifications sur des attributs persistants ou dérivés seront enregistrées mais le cache de la vue sera vide et la requête devra être exécutée à nouveau si on veut voir les nouvelles données. 8. For all Transient Attibutes: Les modifications des attributs transients sont écrit en cache.» 4 Java (Figure 35): Définition des classes java générées. Par défaut seule une classe est générée pour la vue, mais une classe peut aussi être générée pour les tuples. Si la case est cochée pour les tuples, un fichier.java supplémentaire est crée. Celui-ci contiendra les accesseurs des attributs qui se trouvaient auparavant dans la classe correspondant à la vue. Figure 35 Client interface : Les méthodes que nous avons écrites peuvent être choisies. Ces méthodes implémentent l interface serializable. L interface serializable indique qu une classe peut être sérialisée, c est-à-dire qu un objet peut devenir persistant. L interface permet d envoyer ou de recevoir des objets au travers d inputstream et outpustream Client Row Interface : Contient des méthodes si dans le nœud java generate Java file de view row class est coché. Les vues sont décrites, comme les entités, dans un fichier XML et un ou deux fichiers java (cela dépend du fait que des propriétés d affichage aient été définies). Les liens vues reposent également sur un fichier XML. Les nœuds des propriétés de la fenêtre d édition des liens vues sont : Figure 36 View Objects : On définit la source et la destination du lien vue. Il s agit d attributs d objet vue ou d une association. 4 Traduit de l aide en ligne 23.03.2005 21 sur 73 Astrid von Wyl

Figure 37 View link SQL : Requête correspondante au lien vue. Figure 38 View link properties : Définition d accesseurs pour le lien vue. Figure 39 Les propriétés des attributs d une entité se transmettent normalement aux objets vues qui leur correspondent. 2.8. Composants modules Un composant module est composé d instances d objets vues. Dans le référentiel Oracle Designer, le module produit se présente ainsi : 23.03.2005 22 sur 73 Astrid von Wyl

Figure 40 Dans Oracle JDeveloper 10g, ce même module, une fois importé, a l apparence suivante : Voici l exemple de deux vues : Figure 41 Figure 42 Le contenu du composant module sera utilisé lors de l affichage de l application. Les propriétés du composant module sont : Data model : On choisit parmi les objets vues du projets ceux qui vont faire partie du composant. Chaque instance d objet vue a un nom différent qui est défini ici. 23.03.2005 23 sur 73 Astrid von Wyl

Figure 43 Application module : Référence à un autre composant module qui se trouve dans le même projet. Java : Définition des fichiers java qui seront générés. Remote : Lorsque le déploiement de l application ne se fait pas en local, on peut choisir entre deux configurations : EJB session bean et J2EE web services. Figure 44 Client Interface : Choix des méthodes qui pourront être appelées par le client. Custom properties : Ajout de données dans les méta données. Lorsque je teste un module, le contenu du champ numero est incrémenté automatiquement mais le nombre est négatif et décrémenté au fur et à mesure des insertions. Selon le livre [DKF10g], la valeur affichée n a aucun rapport avec la valeur en cache. C est effectivement le cas. Dans la table, malgré que 4 ait été affiché, la valeur insérée est la valeur de la séquence. Il faut veiller à cliquer sur si on ne veut plus ajouter de nouvel enregistrement, sinon si on clique sur ajouter un nouvel enregistrement vide est créé et les contraintes not null provoquent des erreurs. 23.03.2005 24 sur 73 Astrid von Wyl