advanfr.pdf

468
Sybase ® PowerAMC Documentation utilisateur avancée Version 10.0 DC20013-01-1000-01 Dernière révision : Janvier 2004

Upload: balzofaye

Post on 12-Aug-2015

57 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: advanfr.pdf

Sybase®

PowerAMC™

Documentation utilisateuravancée

Version 10.0DC20013-01-1000-01

Dernière révision : Janvier 2004

Page 2: advanfr.pdf

Copyright © 1991–2004 Sybase, Inc. Tous droits réservés.

Les informations contenues dans ce document pourront faire l’objet de modifications sans préavis et ne constituent aucun engagementde la part de Sybase, Inc. et de ses filiales.

Sybase, Inc. fournit le logiciel décrit dans ce manuel sous Contrat de licence Sybase. Le logiciel ne peut être utilisé que conformémentaux termes de ce contrat.

Tout ou partie de cette publication ne peut être reproduit, transmis ou traduit, sous quelque forme ou par quelque moyen que ce soit(électronique, mécanique, manuel, optique ou autre) sans l'accord écrit préalable de Sybase, Inc.

Sybase, SYBASE (logo), AccelaTrade, ADA Workbench, Adaptable Windowing Environment, Adaptive Component Architecture,Adaptive Server, Adaptive Server Anywhere, Adaptive Server Enterprise, Adaptive Server Enterprise Monitor, Adaptive ServerEnterprise Replication, Adaptive Server Everywhere, Adaptive Server IQ, Adaptive Warehouse, AnswerBase, Anywhere Studio,Application Manager, AppModeler, APT Workbench, APT-Build, APT-Edit, APT-Execute, APT-Translator, APT-Library, ASEP,AvantGo, AvantGo Application Alerts, AvantGo Mobile Document Viewer, AvantGo Mobile Delivery, AvantGo Mobile Inspection,AvantGo Mobile Marketing Channel, AvantGo Mobile Pharma, AvantGo Mobile Sales, AvantGo Pylon, AvantGo Pylon ApplicationServer, AvantGo Pylon Conduit, AvantGo Pylon PIM Server, AvantGo Pylon Pro, Backup Server, BayCam, Bit-Wise, BizTracker,Certified PowerBuilder Developer, Certified SYBASE Professional, Certified SYBASE Professional Logo, ClearConnect, Client-Library, Client Services, CodeBank, Column Design, ComponentPack, Connection Manager, Convoy/DM, Copernicus, CSP, DataPipeline, Data Workbench, DataArchitect, Database Analyzer, DataExpress, DataServer, DataWindow, DB-Library, dbQueue,Developers Workbench, Direct Connect Anywhere, DirectConnect, Distribution Director, Dynamic Mobility Model, e-ADK, E-Anywhere, e-Biz Integrator, E-Whatever, EC Gateway, ECMAP, ECRTP, eFulfillment Accelerator, Electronic Case Management,Embedded SQL, EMS, Enterprise Application Studio, Enterprise Client/Server, Enterprise Connect, Enterprise Data Studio, EnterpriseManager, Enterprise Portal (logo), Enterprise SQL Server Manager, Enterprise Work Architecture, Enterprise Work Designer,Enterprise Work Modeler, eProcurement Accelerator, eremote, Everything Works Better When Everything Works Together, EWA,Financial Fusion, Financial Fusion (and design), Financial Fusion Server, Formula One, Fusion Powered e-Finance, Fusion PoweredFinancial Destinations, Fusion Powered STP, Gateway Manager, GeoPoint, GlobalFIX, iAnywhere, iAnywhere Solutions, ImpactNow,Industry Warehouse Studio, InfoMaker, Information Anywhere, Information Everywhere, InformationConnect, InstaHelp, IntelligentSelf-Care, InternetBuilder, iremote, iScript, Jaguar CTS, jConnect for JDBC, KnowledgeBase, Logical Memory Manager, M-BusinessChannel, M-Business Network, M-Business Server, Mail Anywhere Studio, MainframeConnect, Maintenance Express, ManageAnywhere Studio, MAP, MDI Access Server, MDI Database Gateway, media.splash, Message Anywhere Server, MetaWorks,MethodSet, ML Query, MobiCATS, My AvantGo, My AvantGo Media Channel, My AvantGo Mobile Marketing, MySupport, Net-Gateway, Net-Library, New Era of Networks, Next Generation Learning, Next Generation Learning Studio, O DEVICE, OASiS,OASiS logo, ObjectConnect, ObjectCycle, OmniConnect, OmniSQL Access Module, OmniSQL Toolkit, Open Biz, Open BusinessInterchange, Open Client, Open ClientConnect, Open Client/Server, Open Client/Server Interfaces, Open Gateway, Open Server, OpenServerConnect, Open Solutions, Optima++, Orchestration Studio, Partnerships that Work, PB-Gen, PC APT Execute, PC DB-Net, PCNet Library, PhysicalArchitect, Pocket PowerBuilder, PocketBuilder, Power++, Power Through Knowledge, power.stop, PowerAMC,PowerBuilder, PowerBuilder Foundation Class Library, PowerDesigner, PowerDimensions, PowerDynamo, Powering the NewEconomy, PowerJ, PowerScript, PowerSite, PowerSocket, Powersoft, PowerStage, PowerStudio, PowerTips, Powersoft Portfolio,Powersoft Professional, PowerWare Desktop, PowerWare Enterprise, ProcessAnalyst, QAnywhere, Rapport, Relational Beans,RepConnector, Report Workbench, Report-Execute, Replication Agent, Replication Driver, Replication Server, Replication ServerManager, Replication Toolkit, Resource Manager, RW-DisplayLib, RW-Library, SAFE, SAFE/PRO, SDF, Secure SQL Server, SecureSQL Toolset, Security Guardian, SKILS, smart.partners, smart.parts, smart.script, SQL Advantage, SQL Anywhere, SQL AnywhereStudio, SQL Code Checker, SQL Debug, SQL Edit, SQL Edit/TPU, SQL Everywhere, SQL Modeler, SQL Remote, SQL Server, SQLServer Manager, SQL SMART, SQL Toolset, SQL Server/CFT, SQL Server/DBM, SQL Server SNMP SubAgent, SQL Station, SQLJ,Stage III Engineering, Startup.Com, STEP, SupportNow, S.W.I.F.T. Message Format Libraries, Sybase Central, Sybase Client/ServerInterfaces, Sybase Development Framework, Sybase Financial Server, Sybase Gateways, Sybase Learning Connection, Sybase MPP,Sybase SQL Desktop, Sybase SQL Lifecycle, Sybase SQL Workgroup, Sybase Synergy Program, Sybase Virtual Server Architecture,Sybase User Workbench, SybaseWare, Syber Financial, SyberAssist, SybMD, SyBooks, System 10, System 11, System XI (logo),SystemTools, Tabular Data Stream, The Enterprise Client/Server Company, The Extensible Software Platform, The Future Is WideOpen, The Learning Connection, The Model For Client/Server Solutions, The Online Information Center, The Power of One, TotalFix,TradeForce, Transact-SQL, Translation Toolkit, Turning Imagination Into Reality, UltraLite, UltraLite.NET, UNIBOM, Unilib, Uninull,Unisep, Unistring, URK Runtime Kit for UniCode, Versacore, Viewer, VisualWriter, VQL, WarehouseArchitect, Warehouse ControlCenter, Warehouse Studio, Warehouse WORKS, Watcom, Watcom SQL, Watcom SQL Server, Web Deployment Kit, Web.PB,Web.SQL, WebSights, WebViewer, WorkGroup SQL Server, XA-Library, XA-Server and XP Server sont des marques de Sybase, Inc.ou ses filiales.

Unicode et le logo Unicode sont des marques déposées de Unicode, Inc.

Tous les autres noms de produit, société ou marque peuvent appartenir à des tiers.

Page 3: advanfr.pdf

Documentation utilisateur avancée iii

Table des matières

1 Guide de référence du SGBD ............................................1Présentation du fichier de définition de SGBD.......................... 2Editeur de SGBD ...................................................................... 4Notions de base relatives aux catégories de SGBD................. 5

Feuille de propriétés de SGBD........................................... 5Catégorie General .............................................................. 6Catégorie Script et ODBC .................................................. 6Catégorie Transformation profile...................................... 11Catégorie Profile............................................................... 12

Gestion de la génération et du reverse engineering ............... 18Mode de fonctionnement.................................................. 18Notions de base relatives aux instructions et requêtes.... 19Génération de script ......................................................... 21Reverse engineering de script.......................................... 24Génération ODBC ............................................................ 25Reverse engineering ODBC............................................. 25Syntaxe dans les instructions SQL................................... 36

Définition d'options physiques................................................. 47Définition d'options physiques spécifiées par une valeur . 49Syntaxe pour une option physique sans nom................... 51Définition d'une valeur par défaut pour une optionphysique ........................................................................... 51Définition d'une liste de valeurs pour une optionphysique ........................................................................... 52Définition d'une option physique correspondant à untablespace ou à un storage .............................................. 52Syntaxe d'option physique composite .............................. 53Répétitions d'options ........................................................ 55Changements d'interface utilisateur ................................. 56

Catégorie General................................................................... 57EnableCheck .................................................................... 57EnableIntegrity.................................................................. 57

Page 4: advanfr.pdf

iv PowerAMC

EnableMultiCheck ............................................................ 58EnableConstname............................................................ 58SqlSupport........................................................................ 58UniqConstName............................................................... 59

Catégories Script ou ODBC.................................................... 60Catégorie SQL ........................................................................ 61

Syntax .............................................................................. 61Format.............................................................................. 63File.................................................................................... 67Keywords.......................................................................... 72

Catégorie Objects ................................................................... 75Entrées communes aux différents objets......................... 75Table ................................................................................ 79Column............................................................................. 87Index............................................................................... 101Pkey ............................................................................... 109Key ................................................................................. 112Reference....................................................................... 117View................................................................................ 123Tablespace..................................................................... 126Storage........................................................................... 128Database........................................................................ 130Domain........................................................................... 132Abstract Data Type......................................................... 136Abstract Data Type Attribute .......................................... 138User................................................................................ 140Rule ................................................................................ 142Procedure....................................................................... 145Trigger ............................................................................ 149Group ............................................................................. 153Role ................................................................................ 155Privilege.......................................................................... 157Permission ..................................................................... 158Default ............................................................................ 159Join index ....................................................................... 161Qualifier .......................................................................... 164Sequence ....................................................................... 164Synonym......................................................................... 166DB Package ................................................................... 168DB Package Procedure.................................................. 170DB Package Variable ..................................................... 171DB Package Type .......................................................... 172DB Package Cursor ....................................................... 172DB Package Exception .................................................. 173DB Package Parameter ................................................. 173DB Package Pragma...................................................... 174

Page 5: advanfr.pdf

Documentation utilisateur avancée v

Commandes pour tous les objets ......................................... 175MaxConstLen ................................................................. 175EnableOption.................................................................. 175

Catégorie Data type .............................................................. 177AmcdDataType............................................................... 177PhysDataType ................................................................ 178PhysDttpSize .................................................................. 178OdbcPhysDataType ....................................................... 179PhysOdbcDataType ....................................................... 180PhysLogADTType .......................................................... 180LogPhysADTType .......................................................... 180AllowedADT.................................................................... 181HostDataType ................................................................ 181

Variables de MPD................................................................. 182Variables pour la génération de base de données,ainsi que celle des triggers et procedures...................... 182Variables pour le reverse engineering............................ 183Variables pour la synchronisation de base de données. 184Variables pour la sécurité dans la base de données...... 184Variables pour les métadonnées.................................... 185Variables communes pour tous les objets nommés ...... 185Variables communes pour les objets ............................. 185Variables relatives aux SGBD, options de base dedonnées.......................................................................... 186Variables pour les tables ................................................ 186Variables pour vérifications sur les domaines et sur lescolonnes ......................................................................... 187Variables pour les colonnes ........................................... 188Variables pour les types de données abstraits............... 188Variable pour les attributs de types de donnéesabstraites........................................................................ 189Variable pour les domaines............................................ 189Variables pour les règles................................................ 189Variables pour ASE & SQL Server................................. 190Variables pour les séquences ........................................ 190Variables pour les index ................................................. 190Variables pour les join indexes (IQ) ............................... 191Variables pour les colonnes d'index............................... 191Variables pour les références......................................... 191Variables de colonnes de référence............................... 193Variables pour les clés ................................................... 193Variables pour les vues .................................................. 194Variables pour les triggers.............................................. 194Variables pour les procédures........................................ 195

Page 6: advanfr.pdf

vi PowerAMC

2 Gestion des profils ........................................................197Notions de base relatives au concept de profil ..................... 198

Qu'est-ce qu'un profil ? .................................................. 198Extensions disponibles................................................... 199Ajout d'une métaclasse dans un profil ........................... 202Exclusion d'une métaclasse d'un modèle ...................... 205

Définition d'un stéréotype ..................................................... 206Propriétés de stéréotype ................................................ 206Création d'un stéréotype ................................................ 207Utilisation d'un stéréotype comme métaclasse .............. 208Attacher une icône à un stéréotype................................ 209Affectation d'un outil à un stéréotype ............................. 210Définition de noms par défaut pour des objetsstéréotypés..................................................................... 211

Définition d'un critère ............................................................ 213Définition d'un symbole personnalisé dans un profil............. 215

Personnalisation d'un symbole....................................... 215Définition d'un symbole personnalisé............................. 216

Définition d'attributs étendus dans un profil .......................... 218Création d'un type d'attribut étendu................................ 218Création d'un attribut étendu .......................................... 219

Définition d'une vérification personnalisée dans un profil ..... 221Propriétés de vérification personnalisée ........................ 222Définition du script d'une vérification personnalisée ...... 223Définition du script d'une correction automatique .......... 225Utilisation du script global............................................... 227Dépannage d'erreurs VB................................................ 228Exécution d'une vérification personnalisée .................... 228

Définition de templates et de fichiers générés dans un profil229Création d'un template ................................................... 229Création d'un fichier généré ........................................... 231

Définition d'une collection étendue dans un profil................. 234Propriétés d'une collection étendue ............................... 234Création d'une collection étendue .................................. 235

Définition d'une méthode dans un profil ............................... 237Propriétés d'une méthode .............................................. 237Création d'une méthode ................................................. 238

Définition des transformations dans un profil ....................... 241Propriétés d'une transformation ..................................... 241Création d'une transformation........................................ 243Méthodes helper de script pour les transformations ...... 245

Définition d'un gestionnaire d'événement dans un profil ...... 247Notions de base relatives aux gestionnairesd'événement................................................................... 247Ajout d'un gestionnaire d'événement à une métaclasseou à un stéréotype.......................................................... 250

Page 7: advanfr.pdf

Documentation utilisateur avancée vii

Définition de menus dans un profil ....................................... 252Propriétés d'un menu ..................................................... 253Création d'un menu ........................................................ 254

Utilisation de profils : une étude de cas ................................ 256Scénario ......................................................................... 257Attachement d'une nouvelle définition étendue demodèle au modèle.......................................................... 257Création de stéréotypes d'objet...................................... 260Définition de symboles personnalisés pour lesstéréotypes..................................................................... 262Création de liens entre objets et de messages entreobjets.............................................................................. 266Création de vérifications personnalisées sur les liensd'instance ....................................................................... 267Génération d'une description sous forme de texte desmessages....................................................................... 274

3 Guide de référence du langage objet............................283Présentation du langage objet .............................................. 284Notions de base relatives à l'éditeur de langage objet ......... 285

Propriétés d'un langage objet......................................... 286Catégorie Settings.......................................................... 288Catégorie Generation ..................................................... 291Catégorie Transformation profile.................................... 300Catégorie Profile............................................................. 300

4 Guide de référence du langage de processus .............311Présentation du langage de processus ................................ 312Notions de base relatives à l'éditeur de langage deprocessus ............................................................................. 314

Propriétés d'un langage de processus ........................... 315Catégorie Generation ..................................................... 316Catégorie Settings.......................................................... 325Catégorie Profile............................................................. 328Catégorie Transformation profile.................................... 328

5 Guide de référence du langage XML.............................329Présentation du langage XML............................................... 330Notions de base relatives à l'éditeur de langage XML.......... 331

Propriétés d'un langage XML ......................................... 332Catégorie Generation ..................................................... 333Catégorie Settings.......................................................... 339Catégorie Profile............................................................. 339Catégorie Transformation profile.................................... 339

Page 8: advanfr.pdf

viii PowerAMC

6 Guide de référence des définitions étendues demodèle ............................................................................341

Gestion des définitions étendues de modèle........................ 342Création d'une définition étendue de modèle................. 343Importation d'attributs étendus depuis les versionsantérieures ..................................................................... 348Importation d'une définition étendue de modèle dansun modèle....................................................................... 350Exportation d'une définition étendue de modèle ............ 351

Utilisation des définitions étendues de modèle..................... 353Propriétés d'une définition étendue de modèle .............. 354Catégorie Transformation profile.................................... 357Catégorie Generation ..................................................... 359

Génération pour une définition étendue de modèle.............. 366

7 Guide de référence de la génération ............................367Définition du langage de génération par template (GTL)...... 368Définition des concepts utilisés dans le langage degénération par template........................................................ 370

Définition de templates................................................... 370Définition des variables .................................................. 372Définition de la portée de la conversion ......................... 379Conversion d'un raccourci.............................................. 380Définition d'un héritage................................................... 381Redéfinition d'un template.............................................. 381Définition du polymorphisme.......................................... 382Définition d'une surcharge de template.......................... 383Définition des séquences d'échappement ..................... 383Utilisation de macros...................................................... 384Définition de blocs conditionnels .................................... 406Définition de messages d'erreur .................................... 406

Conseils et techniques de génération................................... 409Partage de templates ..................................................... 409Utilisation des variables d'environnement ...................... 410Utilisation de nouvelles lignes dans la chaîne d'en-têteet de fin........................................................................... 410Utilisation du passage de paramètres............................ 414

8 Métamodèle public PowerAMC.....................................417Qu'est-ce que le métamodèle public PowerAMC ? .............. 418Concepts relatifs au métamodèle ......................................... 419

Noms publics.................................................................. 419Classes........................................................................... 419Associations et collections ............................................. 420

Page 9: advanfr.pdf

Documentation utilisateur avancée ix

Généralisations .............................................................. 421Commentaires et notes sur les objets............................ 421

Notions de base relatives à la structure du métamodèle...... 422Organisation générale .................................................... 422Contenu de PdCommon................................................. 423Contenu des autres packages de bibliothèque .............. 423Navigation dans le métamodèle ..................................... 423

Utilisation du métamodèle avec VBS.................................... 426Utilisation du métamodèle à l'aide du langage degénération par template (GTL) ............................................. 428

Attributs calculés ............................................................ 429Collections calculées...................................................... 431

Utilisation du métamodèle pour comprendre le formatde fichier XML de PowerAMC............................................... 432

9 Spécification du format de fichier PowerAMC.............433Format de fichier XML .......................................................... 434

Structure et contenu des fichiers XML ........................... 434Notions de base relatives aux format XML .................... 438Etude de cas .................................................................. 438

Modification d'un fichier XML................................................ 442Modification d'un fichier XML à l'aide d'un éditeurstandard ......................................................................... 442Modification d'un fichier XML à l'aide d'un éditeur XML . 444Visualisation d'un fichier XML à l'aide d'une visionneuseXML ................................................................................ 445

Index .........................................................................................447

Page 10: advanfr.pdf

x PowerAMC

Page 11: advanfr.pdf

Documentation utilisateur avancée 1

C H A P I T R E 1

Guide de référence du SGBD

Ce document décrit la structure et le contenu d'un fichier de définition deSGBD PowerAMC. Ce guide constitue une référence pour travailler avec lesSGBD pris en charge par PowerAMC. Vous y trouverez une présentationglobale de l'utilisation des fichiers de définition de SGBD ne prenant pas encompte les spécificités de chaque SGBD.

Section Page

Présentation du fichier de définition de SGBD 2

Editeur de SGBD 4

Notions de base relatives aux catégories de SGBD 5

Gestion de la génération et du reverse engineering 18

Définition d'options physiques 47

Catégorie General 57

Catégories Script ou ODBC 60

Catégorie SQL 61

Catégorie Objects 75

Commandes pour tous les objets 175

Catégorie Data type 177

Variables de MPD 182

Les modifications apportées à un fichier de définition de SGBD peuventchanger la façon dont se comportent les fonctions de PowerAMC, toutparticulièrement lors de la génération de scripts. Créez des copies desauvegarde de vos définitions de bases de données, et testez scrupuleusementchaque script généré avant de l'exécuter.

Sujet

Sommaire

Avant decommencer

Page 12: advanfr.pdf

Présentation du fichier de définition de SGBD

2 PowerAMC

Présentation du fichier de définition de SGBD

PowerAMC peut être utilisé avec de nombreux SGBD différents. Pourchacun de ces SGBD, un fichier de définition standard est inclus et fournitune interface entre PowerAMC et le SGBD afin d'établir les meilleuresrelations possibles entre ces deux éléments.

AttentionNe modifiez pas les fichiers de SGBD fournis avec PowerAMC. Pourchaque SGBD que vous souhaitez modifier, créez un nouveau SGBDcorrespondant. Pour ce faire, créez le nouveau SGBD à partir de la boîtede dialogue Liste des SGBD, définissez un nom, puis sélectionnez le SGBDd'origine dans la liste déroulante Copier depuis. Cette méthode permet decréer un nouveau SGBD identique au fichier d'origine, à la différence dunom près.

Pour plus d'informations sur la création d'une nouvelle définition deSGBD à partir d'un SGBD existant, reportez-vous à la section Création d'unnouveau fichier de définition dans le chapitre Utilisation de l'éditeur dedéfinition dans le manuel Guide des fonctionnalités générales.

En revanche, vous pouvez être amené à modifier cette interface pour l'adapterà vos applications particulières, et ce en utilisant l'éditeur de fichier dedéfinition de SGBD.

Un fichier de définition de SGBD est une liste de valeurs et de paramètresqui représentent des spécifications pour un SGBD (Système de Gestion deBases de Données) dans un format compréhensible par PowerAMC. En tantqu'interface entre un SGBD et PowerAMC, il fournit à PowerAMC lasyntaxe et les règles relatives à la génération de bases de données, triggers etprocédures correspondant au SGBD cible choisi. Le fichier de définition deSGBD est un fichier au format .XML.

Le fichier de définition de SGBD est un composant requis de PowerAMClorsque vous travaillez sur des Modèles Physiques de Données (MPD).Chaque SGBD pris en charge par PowerAMC a sa propre définition deSGBD.

Qu'est-ce qu'unfichier de définitionde SGBD ?

Page 13: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 3

Tous les fichiers de définition de SGBD ont la même structure composée decatégories. Une catégorie peut contenir d'autres catégories, des entrées etdes valeurs. Ces entrées sont des paramètres reconnaissables parPowerAMC.

Les valeurs pour les catégories et entrées de définition de SGBD varient pourchaque SGBD. Certaines entrées peuvent ne pas exister dans certains fichiersde SGBD si elles ne sont pas applicables à ces SGBD particuliers.

Certaines entrées peuvent en outre contenir des paramètres qui sontobligatoires pour générer une syntaxe correcte. Certaines entrées contiennentdes instructions SQL qui vont permettre à PowerAMC de générer etd'effectuer du reverse engineering correctement pour la base de donnéeschoisie (create, drop , etc).

Vous pouvez incorporer des variables dans les requêtes SQL du SGBDsélectionné. Ces variables sont remplacées par les valeurs appropriées devotre modèle lorsque les scripts sont générés. Ces variables sont évaluéespour créer les objets correspondants dans les modèles PowerAMC lors dureverse engineering.

Les variables PowerAMC sont écrites entre signes pourcent (%).

CreateTable = create table %TABLE%

L'évaluation des variables dépend des paramètres et du contexte. Parexemple, la variable %COLUMN% ne peut pas être utilisée dans unparamètre CreateTablespace, car cette variable n'est reconnue que dans uncontexte de paramètre de colonne.

Pour obtenir la liste des toutes les variables PowerAMC que vouspouvez utiliser dans une définition de SGBD, reportez-vous à la sectionVariables de MPD.

Que contient unedéfinition deSGBD ?

Que sont lesvariablesPowerAMC ?

Exemple

Page 14: advanfr.pdf

Editeur de SGBD

4 PowerAMC

Editeur de SGBDVous pouvez consulter ou modifier un fichier de définition de SGBD à l'aidede l'éditeur de SGBD.

Pour afficher l'éditeur de SGBD :

♦ Sélectionnez SGBD→Editer le SGBD courantouSélectionnez Outils→Ressources→SGBD, puis sélectionnez un SGBDexistant, ou bien créez un nouveau fichier de définition de SGBD.

La feuille de propriétés de SGBD s'affiche.

L'éditeur de SGBD permet de naviguer parmi les catégories et entrées deSGBD. Lorsque vous sélectionnez une catégorie dans l'éditeur de définitionde SGBD, le nom, le code et le commentaire associés s'affichent dans lapartie droite de la boîte de dialogue. Lorsque vous sélectionnez une entréedans la fenêtre de définition de SGBD, le nom, la valeur et le commentaireassociés s'affichent dans la partie droite de la boîte de dialogue.

Pour plus d'informations sur l'utilisation de l'éditeur de SGBD,reportez-vous au chapitre L'éditeur de ressources dans le manuel Guide desfonctionnalités générales.

Le SGBD contient la définition des templates de trigger et des éléments detemplate de trigger.

Vous pouvez accéder aux pages Templates de trigger ou Eléments detemplate de trigger en cliquant sur l'onglet correspondant.

Les templates pour les procédures stockées sont définis sous la catégorieProcedure dans l'arborescence du SGBD.

Pour plus d'informations sur l'utilisation, la création et l'édition detemplates de trigger ou d'éléments de template de trigger, reportez-vous auchapitre Triggers et procédures dans le manuel Guide de l'utilisateur duMPD.

Templates detrigger et élémentsde template detrigger

Page 15: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 5

Notions de base relatives aux catégories deSGBD

Une définition de SGBD peut avoir les catégories suivantes :

Catégorie Description

General Identification du SGBD cible

Script Caractéristiques du SGBD, définition de commande etconversions de types de données pour la génération et lereverse engineering de script

ODBC Caractéristiques du SGBD, définition de commande etconversions de types de données pour la génération et lereverse engineering via ODBC

Profil detransformations

Permet de créer des profils contenant des transformationsutilisées au cours de la génération de modèle ou appliquéesdans un modèle

Profile Extension des métaclasses PowerAMC pour personnaliser lesmodèles

Remarquez que certains SGBD n'affichent pas de catégorie ODBC car cettedernière n'est pas nécessaire à leur définition.

Feuille de propriétés de SGBD

Un SGBD a une feuille de propriétés disponible quand vous cliquez sur lenoeud racine dans l'arborescence. Les propriétés suivantes y sont définies :

Propriété Description

Nom Nom du SGBD. Ce nom doit être unique dans un modèle

Code Code du SGBD. Ce code doit être unique dans un modèle

Nom dufichier

Chemin d'accès et nom du fichier du SGBD. Vous ne pouvez pasmodifier le contenu de cette zone

Famille Utilisé pour classifier un SGBD. L'utilisation d'une famillepermet d'établir un lien entre différents fichiers de ressourcesde base de données. Par exemple, Sybase AS Anywhere etSybase AS Enterprise appartiennent à la famille SQL Server.

Les triggers ne sont pas effacés lorsque vous changez de base dedonnées cible au sein d'une même famille.

Une interface de fusion permet de fusionner des modèles de lamême famille

Page 16: advanfr.pdf

Notions de base relatives aux catégories de SGBD

6 PowerAMC

Propriété Description

Commentaire Informations supplémentaires relatives au SGBD

Catégorie General

La catégorie General contient des informations générales relatives à la basede données, sans catégorie. Toutes les entrées définies dans la catégorieGeneral s'appliquent à tous les objets de la base de données.

Si l'entrée EnableCheck a la valeur Yes, les paramètres de contrôle sontgénérés.

Catégorie Script et ODBC

La catégorie Script est utilisée pour la génération et le reverse engineering descript, ainsi que pour le reverse engineering ODBC.

La catégorie ODBC est utilisée pour les requêtes de génération ODBClorsque le SGBD ne prend pas en charge les instructions standard pour lagénération. Remarquez que certains SGBD n'affichent pas de catégorieODBC car elle n'est pas nécessaire à leur définition.

Exemple

Page 17: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 7

Lorsque la valeur d'une commande ou sa catégorie manque lors de lagénération ODBC, PowerAMC la recherche dans la catégorie Script. Uneentrée est alors redéfinie dans la catégorie ODBC uniquement si elle estdifférente de la valeur située dans Script.

Les catégories Script et ODBC contiennent les catégories suivantes :

Catégories Description

SQL Contient les catégories Syntax, Format, File et Keywords.Chaque catégorie contient des entrées dont les valeursdéfinissent la syntaxe générale pour la base de données

Objects Contient des catégories pour chaque type d'objet dans labase de données. Chaque catégorie contient des entréesdont les valeurs définissent des commandes de base dedonnées et des caractéristiques objet

Data Type Contient des entrées de conversion des types de données.Ces entrées répertorient les correspondances entre les typesde données internes PowerAMC et les types de données dela base de données cible

Customize Extrait les informations de fichiers de définition de SGBDde PowerAMC Version 6. Non utilisé dans les versionsultérieures

Page 18: advanfr.pdf

Notions de base relatives aux catégories de SGBD

8 PowerAMC

Dans le fichier de définition de Sybase Adaptive Server Anywhere 6, lacatégorie Script est développée pour afficher la catégorie Objects danslaquelle Index est également développée. L'entrée Create est sélectionnéeet la zone Valeur associée à cette commande définit la façon ont l'index estcréé.

Catégorie SQL

La catégorie SQL contient les catégories suivantes :

♦ Syntax contient des paramètres généraux relatifs à la syntaxe SQL

♦ Format contient des paramètres concernant les caractères admis

♦ File contient les entrées de texte header, footer et usage utilisées lors dela génération

♦ Keywords contient la liste des mots réservés et fonctions disponiblesdans SQL

Exemple

Page 19: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 9

Dans le fichier de définition de Sybase Adaptive Server Anywhere 6, lacatégorie Script est développée pour montrer la catégorie SQL dans laquelleSyntax est également développée pour montrer les paramètres généraux desyntaxe tels que Terminator et BlockTerminator.

L'entrée Terminator est sélectionnée et la zone Valeur associée à cetteentrée définit le symbole de fin courant.

Catégorie Objects

La catégorie Object contient toutes les commandes pour créer, supprimer oumodifier tous les objets dans la base de données. Elle inclut également descommandes qui définissent le comportement des objets, les valeurs pardéfaut, les instructions SQL nécessaires, les options de reverse engineering,etc.

Exemple

Page 20: advanfr.pdf

Notions de base relatives aux catégories de SGBD

10 PowerAMC

Dans le fichier de définition de Sybase Adaptive Server Anywhere 8, lacatégorie Objects est développée pour montrer la catégorie Database.L'entrée Create est sélectionnée et la zone Valeur associée contient lacommande relative à la création de base de données.

Exemple

Page 21: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 11

Catégorie Data type

La catégorie Data Type contient une liste des types de données valides pourle SGBD spécifié et les types correspondants dans PowerAMC.

Dans le fichier de définition de Sybase Adaptive Server Anywhere 8, lacatégorie Data Type est développée de façon à afficher tous les types dedonnées. L'entrée PhysDataType est sélectionnée et la valeur associéemontre la mise en correspondance décrite dans la zone Commentaire.

Catégorie Transformation profile

Un profil de transformation est un groupe de transformations utilisé au coursd'une génération de modèle ou lorsque vous souhaitez appliquer desmodifications à certains objets dans les modèles source ou cible.

Vous définissez un profil de transformation dans la catégorie TransformationProfiles d'une définition étendue de modèle, d'un langage objet, d'un SGBD,ou d'un langage de processus. Chaque profil est identifié par le modèle danslequel le fichier de ressource est défini, par un type de modèle, une famille etune sous famille.

Pour plus d'informations sur les transformations, reportez-vous auchapitre Gestion des transformations, dans le Guide des FonctionnalitésGénérales.

Exemple

Page 22: advanfr.pdf

Notions de base relatives aux catégories de SGBD

12 PowerAMC

Catégorie Profile

La catégorie Profile est utilisée pour définir les profils PowerAMC.

Dans un SGBD, vous pouvez définir les types d'attributs étendus et lesattributs étendus pour les objets de base de données.

La catégorie Profile contient les catégories suivantes :

Catégorie Description

Shared\Extendedattribute types

Permet de définir les types d'attributs étendus et lestemplates partagés. Les types d'attributs étendus sont destypes de données réutilisés entre attributs étendus. Lestemplates partagés sont des morceaux de code utilisés dansla génération de texte

Metaclasses Permet de définir des extensions de métaclasse, parexemple des symboles personnalisés, des stéréotypes, descritères ou des fichiers générés

Pour plus d'informations sur les profils, reportez-vous au chapitreGestion de profils.

Pour plus d'informations sur les templates et les fichiers générés,reportez-vous au chapitre Guide de référence de la génération.

Pour chaque attribut étendu défini dans cette catégorie, un onglet Attributsétendus s'affiche dans la feuille de propriétés de l'objet correspondant. Vouspouvez utiliser cet onglet pour ajouter une valeur d'attribut étendu dans ladéfinition de l'objet.

Certains SGBD sont fournis avec des attributs étendus qui sont nécessaireslors de la génération, il est donc préférable de ne pas modifier ces attributsétendus, ou tout au moins de créer une copie de sauvegarde de chaque fichierde SGBD avant de commencer à les modifier.

Si vous souhaitez améliorer la génération de modèle, vous pouvez suivre lemodèle des attributs étendus existants et l'affecter aux autres catégoriesd'objet.

Si vous souhaitez compléter la définition des objets de modélisation etdévelopper le métamodèle PowerAMC, vous devez définir des attributsétendus dans une définition étendue de modèle. De tels attributs étendus nesont pas utilisés lors du processus de génération.

Pour plus d'informations sur les définitions étendues de modèle,reportez-vous au chapitre Guide de référence des définitions étendues demodèle.

Attributs étendus

Définition étendued'objet

Page 23: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 13

La catégorie Extended Attribute est divisée en deux catégories :

♦ Types

♦ Objects

Définition d'un attribut étendu dans un SGBD

Chaque attribut étendu a les propriétés suivantes :

Propriété del'entrée Description

Nom Nom de la catégorie ou de l'entrée

Commentaire Description de la catégorie ou de l'entrée sélectionnée

Type de données Types d'attributs étendus prédéfinis ou définis parl'utilisateur

Valeur par défaut Valeur par défaut de la liste des valeurs. Dépend du type dedonnées sélectionné

Pour ajouter un attribut étendu :

1 Pointez sur une catégorie de métaclasse dans la catégorie Profile, cliquezle bouton droit de la souris, puis sélectionnez Nouveau→Attributsétendus dans le menu contextuel.

Un nouvel attribut étendu est créé.

2 Saisissez un nom dans la zone Nom.

3 Saisissez un commentaire dans la zone Commentaire.

4 Sélectionnez un type de données dans la liste déroulante Type dedonnées.

5 <facultatif>> Sélectionnez une valeur par défaut dans la liste déroulanteValeur par défaut.

6 Cliquez sur Appliquer.

Dans DB2 UDB 7 OS/390, l'attribut étendu WhereNotNull permetd'ajouter une clause qui spécifie que les noms d'index doivent être uniques àcondition qu'ils ne soient pas null.

Exemple

Page 24: advanfr.pdf

Notions de base relatives aux catégories de SGBD

14 PowerAMC

Dans la commande Create index, WhereNotNull est évalué commesuit :create [%INDEXTYPE% ][%UNIQUE% [%WhereNotNull%?where notnull ]]index [%QUALIFIER%]%INDEX% on[%TABLQUALIFIER%]%TABLE% (%CIDXLIST%)[%OPTIONS%]

Si le nom d'index est unique, et si vous définissez le type de l'attribut étenduWhereNotNull comme True, la clause "where not nul" sera insérée dans lescript.

Dans la quête SqlListQuery :{OWNER, TABLE, INDEX, INDEXTYPE, UNIQUE, INDEXKEY,CLUSTER, WhereNotNull}

select tbcreator, tbname, name, case indextype when '2' then 'type 2' else 'type 1'end, case uniquerule when 'D' then '' else 'unique' end, case uniquerule when 'P' then 'primary' when 'U' then'unique' else '' end, case clustering when 'Y' then 'cluster' else '' end, case uniquerule when 'N' then 'TRUE' else 'FALSE' endfrom sysibm.sysindexeswhere 1=1[ and tbname=%.q:TABLE%][ and tbcreator=%.q:OWNER%][ and dbname=%.q:CATALOG%]order by 1 ,2 ,3

Utilisation des attributs étendus dans le MPD

Les attributs étendus définis dans un SGBD sont utilisés pour contrôler lagénération du modèle.

Vous pouvez également définir des attributs étendus dans une définitionétendue de modèle, afin d'enrichir la définition d'un objet. Ces attributsétendus ne sont pas utilisés lors de la génération.

Pour plus d'informations sur les définitions étendues de modèle,reportez-vous au chapitre Guide de référence des définitions étendues demodèle.

Page 25: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 15

Par défaut, les attributs étendus s'affichent sur un onglet distinct dans la pageAttributs étendus d'une feuille de propriétés d'objet ou dans des listesd'objets.

Chaque attribut étendu a les propriétés suivantes :

Propriété Description

Nom Nom de l'attribut étendu

Type de données Type de données de l'attribut étendu (boolean, color, date,file, float, font, etc.) ou type de données personnalisé

Valeur Valeur de l'attribut étendu. Cette zone affiche la valeur pardéfaut définie pour le type de données d'attribut étendu

R Valeur redéfinie. Cette case est cochée si vous modifiez lavaleur par défaut dans la colonne Valeur, soit en ouvrant laliste déroulante, soit en cliquant sur le bouton Points desuspension

Le nom et le type de données des attributs étendus ne peuvent pas êtremodifiés à partir de la feuille de propriétés de l'objet. Ces propriétés doiventêtre éditées à partir de l'éditeur de SGBD. Toutefois, la valeur d'attributétendu peut être modifiée dans la page Attributs étendus ou dans une liste.

Pour définir la valeur d'un attribut étendu :

1 Affichez la feuille de propriétés d'un objet.ouSélectionnez Modèle→Objets pour afficher une liste d'objets.

2 Cliquez sur l'onglet Attributs étendus pour afficher la pagecorrespondante.ouCliquez sur l'outil Personnaliser les colonnes et filtrer, sélectionnezAttributs étendus dans la liste des colonnes, puis cliquez sur OK.

Les attributs étendus s'affichent dans des pages munies d'onglets ou sousla forme de colonnes supplémentaires dans la liste.

3 Cliquez sur la colonne Valeur d'un attribut étendu si vous souhaitezmodifier sa valeur et sélectionnez une valeur dans la liste déroulante.ouSaisissez ou sélectionnez une valeur dans la cellule appropriée de laliste.

Le bouton Points de suspension permet de mieux définir la valeur del'attribut étendu sélectionné.

Page 26: advanfr.pdf

Notions de base relatives aux catégories de SGBD

16 PowerAMC

4 Cliquez sur OK.

Utilisation d'attributs étendus lors de la génération

Les attributs étendus sont créés pour contrôler la génération : chaque valeurd'attribut étendu peut être utilisée sous forme de variable qui peut êtreréférencée dans les scripts définis dans la catégorie Script.

Certains SGBD incluent des attributs étendus prédéfinis. Par exemple, dansPostgreSQL, les domaines incluent les attributs étendus par défaut utiliséspour la création de types de données utilisateur.

Vous pouvez créer autant d'attributs étendus que vous le souhaitez, pourchaque objet pris en charge par le SGBD.

PowerAMC prend en compte la casse des caractèresLes noms des variables PowerAMC tiennent compte de la casse descaractères. Le nom d'une variable doit correspondre à la casse près au nomd'attribut étendu.

Page 27: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 17

Dans DB2 UDB 7, l'attribut étendu WhereNotNull permet d'ajouter uneclause qui spécifie que les noms d'index doivent être uniques à conditionqu'ils ne soient pas null.

Dans la commande Create index, WhereNotNull est évalué commesuit :create [%INDEXTYPE% ][%UNIQUE% [%WhereNotNull%?where notnull ]]index [%QUALIFIER%]%INDEX% on[%TABLQUALIFIER%]%TABLE% (%CIDXLIST%)[%OPTIONS%]

Si le nom d'index est unique, et si vous avez défini le type de l'attribut étenduWhereNotNull comme True, la clause "where not nul" sera insérée dans lescript.

Dans l'entrée SqlListQuery :{{OWNER, TABLE, INDEX, INDEXTYPE, UNIQUE, INDEXKEY,CLUSTER, WhereNotNull}

select tbcreator, tbname, name, case indextype when '2' then 'type 2' else 'type 1'end, case uniquerule when 'D' then '' else 'unique' end, case uniquerule when 'P' then 'primary' when 'U' then'unique' else '' end, case clustering when 'Y' then 'cluster' else '' end, case uniquerule when 'N' then 'TRUE' else 'FALSE' endfrom sysibm.sysindexeswhere 1=1[ and tbname=%.q:TABLE%][ and tbcreator=%.q:OWNER%][ and dbname=%.q:CATALOG%]order by 1 ,2 ,3

Exemple

Page 28: advanfr.pdf

Gestion de la génération et du reverse engineering

18 PowerAMC

Gestion de la génération et du reverseengineering

PowerAMC utilise le fichier de définition de SGBD pour communiquer avecla base de données via reverse engineering et génération. PowerAMC prenden charge à la fois l'utilisation de script et d'ODBC pour le reverseengineering et la génération. Dans cette section, vous allez en apprendre plussur le reverse engineering et la génération.

Mode de fonctionnement

Cette section décrit les mécanismes de génération et de reverse engineering.

Le mot instruction est utilisé pour définir un fragment de syntaxe SQL ; lesinstructions contiennent le plus souvent des variables qui seront évaluées lorsde la génération et du reverse engineering de script.

Le mot requête est réservé pour le reverse engineering ODBC.

Lors de la génération, les instructions sont analysées et les variablescontenues dans les instructions sont évaluées et remplacées par leur valeurprise dans le modèle courant. Les mêmes instructions sont utilisées pour lagénération de script et la génération ODBC.

Lors du reverse engineering de script, PowerAMC analyse le script etidentifie les différentes instructions grâce au caractère de fin (terminator)(défini dans Script\Sql\Syntax). Chaque instruction individuelle est"associée" à une instruction existante dans le fichier de définition de SGBDafin de valider en tant qu'éléments dans un modèle PowerAMC, les variablescontenues dans les instructions récupérées via reverse engineering.

Lors du reverse engineering ODBC, des requêtes spéciales sont utiliséespour extraire les informations de tables système de la base de données.Chaque colonne d'un jeu de résultats de requête est associée à une variable.L'en-tête de la requête spécifie l'association entre les colonnes du jeu derésultats et la variable. Les valeurs des enregistrements renvoyés sontstockées dans ces variables qui sont alors validées en tant qu'attributs d'objet.

Pour plus d'informations sur les variables, reportez-vous à la sectionChaînes et variables facultatives.

Terminologie

Génération

Reverseengineering

Page 29: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 19

Notions de base relatives aux instructions et requêtes

Les instructions relatives à la génération de script, au reverse engineering descript ainsi qu'à la génération ODBC sont identiques, tandis que le reverseengineering ODBC requiert des requêtes spécifiques.

La catégorie Script contient La catégorie ODBC contient

Instructions pour la génération de scriptInstructions pour le reverse engineering

de scriptRequêtes de reverse engineering ODBC

Instructions de génération ODBClorsque le SGBD ne prend pas encharge les instructions standard

Exploration de la catégorie Script

La catégorie Script ne contient que les entrées suivantes :

♦ Instructions de génération et de reverse engineering par script

♦ Instructions de modifications

♦ Eléments de définition de base de données

♦ Requêtes de reverse engineering ODBC

La catégorie Script contient des instructions DDL (Database DescriptionLanguage) utilisées pour la génération de script et la génération ODBC ainsique pour le reverse engineering de script.

Par exemple, l'instruction standard pour créer un index est la suivante :

create index %INDEX%

Toutefois, les valeurs d'instructions varient d'un fichier de définition à l'autreen ce qui concerne la syntaxe de SGBD et les fonctionnalités spécifiques. Parexemple, dans Oracle 9i, l'instruction de création pour un index contient ladéfinition du propriétaire de l'index car Oracle 9i prend en charge lespropriétaires d'index:

create [%UNIQUE%?%UNIQUE% :[%INDEXTYPE% ]]index[%QUALIFIER%]%INDEX% on [%CLUSTER%?clusterC_%TABLE%:[%TABLQUALIFIER%]%TABLE% ( %CIDXLIST%)][%OPTIONS%]

Les autres instructions incluent notamment :

♦ Drop pour supprimer un objet

♦ Options pour définir les options physiques d'un objet

Location

Instructions degénération et dereverseengineering

Page 30: advanfr.pdf

Gestion de la génération et du reverse engineering

20 PowerAMC

♦ ConstName pour définir le template de nom de contrainte pour lesvérifications d'un objet

etc...

Ces instructions sont utilisées lors d'une modification de base de données,afin de modifier les attributs d'objets existants. Elles peuvent être aisémentidentifiées car la plupart d'entre elles commencent par le mot "Modify". Parexemple ModifyColumn est l'instruction utilisée pour modifier une colonne.

Toutefois, toutes ces instructions ne commencent pas forcément par Modify,par exemple Rename ou AlterTableFooter.

Les instructions de création d'une clé peuvent également être particulières enfonction de l'endroit où la clé est définie : si elle se trouve dans la table, ellesera créée à l'aide d'une commande de génération. Si elle est créée hors de latable, elle sera créée à l'aide d'une commande de modification portant sur latable.

La catégorie Script contient également des éléments associés à la définitionde base de données. Il ne s'agit pas d'instructions et elles ne sont pas utiliséeslors de la génération ou du reverse engineering, mais plutôt dans le cas d'unepersonnalisation de l'interface et du comportement de PowerAMC enfonction des fonctionnalités de base de données.

Par exemple, l'élément Maxlen dans la catégorie table doit être définiconformément à une longueur maximale de code tolérée pour une table dansla base de données courante.

Permission, EnableOwner, AllowedADT sont d'autres exemples d'élémentsdéfinis pour adapter PowerAMC au SGBD courant.

La plupart des requêtes de reverse engineering ODBC commencent par"Sql", ce qui permet de les identifier facilement. Par exemple, SqlListQueryest la requête utilisée pour extraire une liste d'objets, ou SqlOptsQuery est larequête utilisée pour procéder au reverse engineering d'options physiques.

Pour plus d'informations sur les requêtes de reverse engineering ODBC,reportez-vous à la section Reverse engineering ODBC.

Exploration de la catégorie ODBC

La catégorie ODBC contient des entrées pour la génération ODBC lorsque leSGBD ne prend pas en charge les instructions de génération définies dans lacatégorie Script.

Instructions Modify

Eléments dedéfinition de basede données

Requêtes dereverseengineering ODBC

Page 31: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 21

Par exemple, l'échange de données entre PowerAMC et MSACCESSfonctionne à l'aide de scripts VB et non de SQL, c'est pourquoi cesinstructions sont situées dans la catégorie ODBC. Vous devez utiliser unprogramme spécial (access.mdb) pour convertir ces scripts en objets de basede données MSACCESS.

Génération de script

Les instructions de génération de script sont disponibles dans la catégorieScript, sous les différentes catégories d'objet.

Par exemple, dans Sybase ASA 8, l'instruction Create de la catégorie Tablese présente comme suit :

create table [%QUALIFIER%]%TABLE%( %TABLDEFN%)[%OPTIONS%]

Cette instruction contient les paramètres de création de la table ainsi que lenom de son propriétaire et ses options physiques.

Vous pouvez étendre des instructions de génération de script pour compléterla génération. Le mécanisme d'extension permet de générer les instructionsimmédiatement avant ou après les instructions Create, Drop et Modify, etd'extraire ces instructions lors du reverse engineering.

Pour plus d'informations sur le reverse engineering d'instructionssupplémentaires, reportez-vous à la section Reverse engineering de script.

Vous utilisez des instructions before ou after pour générer du codesupplémentaire ; il s'agit d'éléments de texte définis dans une catégoried'objet sélectionnée dans le SGBD. Dans cette section, nous les appelleronsinstructions d'extension.

Les instructions d'extension sont définies à l'aide du mécanisme de langagede génération par template (GTL) PowerAMC.

Une instruction d'extension peut contenir :

♦ Une référence à d'autres instructions qui sera évaluée lors de lagénération. Ces entrées sont des éléments de texte qui doivent êtredéfinis dans la même catégorie que les objet des instructions d'extension

♦ Des variables utilisées pour évaluer des propriétés d'objet et desattributs étendus. Les variables sont encadrées par des caractères %

♦ Des macros fournissant des structures de programmation générique pourtester des variables (.if)

Mécanismed'extension

Langage degénération partemplate (GTL)

Page 32: advanfr.pdf

Gestion de la génération et du reverse engineering

22 PowerAMC

Pour plus d'informations sur le langage de génération par template(GTL) PowerAMC, reportez-vous au chapitre Guide de référence de lagénération.

Lors de la génération, les instructions et variables sont évaluées et le résultatest ajouté au script global.

L'instruction d'extension AfterCreate est définie dans la catégorie Tablepour compléter l'instruction Create de la table, en ajoutant des partitions à latable si la valeur de l'attribut étendu de la table le requiert.

AfterCreate est défini dans la syntaxe de GTL comme suit :.if (%ExtTablePartition% > 1)%CreatePartition%go.endif

La macro .if est utilisée pour évaluer la variable %ExtTablePartitions%.Cette variable est un attribut étendu qui contient le nombre de partitions de latable. Si la valeur de %ExtTablePartitions% est supérieure à 1,%CreatePartition% sera généré suivi de "go". %CreatePartition% est uneinstruction définie dans la catégorie Table comme suit :

alter table [%QUALIFIER%]%TABLE% partition %ExtTablePartition%

%CreatePartition% génère l'instruction de création du nombre de partitionsde table spécifié dans %ExtTablePartitions%.

Vous créez dans Sybase ASE une instruction étendue pour créerautomatiquement un login d'utilisateur avant l'exécution de l'instructionCreate user. L'instruction BeforeCreate se présente comme suit :

sp_addlogin %Name% %Password%go

Exemple 1

Exemple 2

Page 33: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 23

Le login généré automatiquement aura le même nom que l'utilisateur et sonmot de passe. Vous pouvez afficher un aperçu de l'instruction dans la feuillede propriétés de l'objet, l'instruction BeforeCreate apparaît avant l'instructionde création de l'utilisateur :

Vous pouvez également ajouter des instructions BeforeModify etAfterModify aux instructions modify standard.

Les instructions Modify sont exécutées afin de synchroniser la base dedonnées avec la structure créée dans le MPD. Par défaut, la fonctionnalité demodification de base de données ne prend pas en compte les attributs étenduslorsqu'elle compare les changements effectués sur le modèle depuis ladernière génération. Vous pouvez contourner cette règle en ajoutant desattributs étendus dans l'élément de liste ModifiableAttributes. Les attributsétendus définis dans cette liste seront pris en compte dans la boîte dedialogue de fusion lors de la synchronisation de base de données.

Pour détecter qu'une valeur d'attribut étendu a été modifiée, vous pouvezutiliser les variables suivantes :

♦ %OLDOBJECT% pour accéder à l'ancienne valeur de l'objet

♦ %NEWOBJECT% pour accéder à la nouvelle valeur de l'objet

Par exemple, vous pouvez vérifier que la valeur de l'attribut étenduExtTablePartition a été modifiée à l'aide de la syntaxe de GTL suivante :

.if (%OLDOBJECT.ExtTablePartition% != %NEWOBJECT.ExtTablePartition%)

Instructions Modify

Page 34: advanfr.pdf

Gestion de la génération et du reverse engineering

24 PowerAMC

Si la valeur d'attribut étendu a été modifiée, une instruction étendue seragénérée pour mettre à jour la base de données. Dans la syntaxe de SybaseASE, l'instruction étendue ModifyPartition se présente comme suit car en casde changement de partition vous devez supprimer la précédente partitionavant de la recréer :

.if (%OLDOBJECT.ExtTablePartition% != %NEWOBJECT.ExtTablePartition%) .if (%NEWOBJECT.ExtTablePartition% > 1) .if (%OLDOBJECT.ExtTablePartition% > 1)%DropPartition% .endif%CreatePartition% .else%DropPartition% .endif.endif

Pour plus d'informations sur le langage de génération par template(GTL) PowerAMC, reportez-vous au chapitre Guide de référence de lagénération.

Reverse engineering de script

Les mêmes instructions sont utilisées pour la génération et le reverseengineering.

Si vous utilisez le mécanisme d'extension pour la génération de script, vousdevez déclarer les instructions dans l'élément de liste ReversedStatementsafin qu'elles puissent être correctement traitées par le reverse engineering.Saisissez une instruction par ligne dans la liste ReversedStatement.

Page 35: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 25

Par exemple, l'instruction d'extension AfterCreate utilise l'instructionCreatePartition. Cette entrée de texte doit être déclarée dansReversedStatements pour être correctement traitée par le reverse engineering.Vous pouvez déclarer d'autres instructions de la façon suivante :

Génération ODBC

Le plus souvent, la génération pour ODBC utilise les mêmes instructions quela génération de script. Toutefois, lorsque le SGBD ne prend pas en charge lasyntaxe SQL standard, des instructions de génération spéciales sont définiesdans la catégorie ODBC. C'est notamment le cas pour MSACCESS qui abesoin de scripts VB pour créer des objets de base de données à l'aide de lagénération ODBC.

Ces instructions sont définies dans la catégorie ODBC du SGBD.

Reverse engineering ODBC

Le SGBD contient des requêtes de reverse engineering ODBC permettantd'extraire des objets (tables, colonnes, etc.) de la base de données.

Page 36: advanfr.pdf

Gestion de la génération et du reverse engineering

26 PowerAMC

La plupart des requêtes sont nommées sur le modèle "Sql...Query".

Entrée Description

SqlListQuery Dresse la liste des objets pouvant être sélectionnés dansla zone Sélection. SqlListQuery extrait les objets etremplit la fenêtre de reverse engineering. Par la suite,chacune des autres requêtes ci-dessous est exécutée pourchaque objet sélectionné.Si SqlListQuery n'est pas défini, des fonctionsODBC standard sont utilisées pour extraire les objets.SqlAttrQuery, SqlOptsQuery etc. seront ensuiteexécutées, si elles ont été définies.SqlListQuery doit extraire le plus petit nombre decolonnes possible car le processus fait une utilisationintensive de la mémoire

SqlAttrQuery Procède au reverse engineering d'attributs d'objetsSqlAttrQuery peut ne pas être nécessaire siSqlListQuery peut extraire toutes les informationsnécessaires. Par exemple, dans Sybase Adaptive ServerAnywhere 6, TablespaceListQuery suffit pourextraire toutes les informations requises pour l'utilisationdans un MPD

SqlOptsQuery Procède au reverse engineering des options physiques

SqlListChildrenQuery Procède au reverse engineering des objets enfant, parexemple des colonnes d'un index ou d'une cléparticulière, des jointures d'une référence spécifique

SqlSysIndexQuery Procède au reverse engineering des index système crééspar la base de données

SqlChckQuery Procède au reverse engineering des contraintes relativesaux vérifications d'objet

SqlPermQuery Procède au reverse engineering de permissions sur lesobjets

Vous pouvez définir des requêtes ODBC supplémentaires pour récupérerplusieurs attributs lors du reverse engineering, ce afin d'éviter de chargerSqlListQuery avec des requêtes pour extraire des attributs non pris encharge par SqlAttrQuery, ou des objets non sélectionnés pour le reverseengineering. Ces requêtes supplémentaires doivent être répertoriées dansl'entrée ReversedQueries. Par exemple, SqlColnListQuery est utilisé pourextraire exclusivement des colonnes de vues. Cette requête doit être déclaréedans l'entrée ReversedQueries pour être prise en compte lors du reverseengineering.

Page 37: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 27

Remarque : les requêtes étendues ne doivent pas être définies dans l'entréeReversedQueries. Pour plus d'informations sur ReversedQueries, reportez-vous à la section Mécanisme d'extension pour les requêtes de reverseengineering ODBC.

Structure de requête

Chaque colonne d'un jeu de résultats est associée à une variable. Un en-têtede script spécifie l'association entre les colonnes du jeu de résultats et lavariable. Les valeurs des enregistrements renvoyés sont stockées dans cesvariables, qui sont alors validées comme valeurs d'attribut d'objet.

L'en-tête de script est contenu entre accolades { }. Ces variables sontrépertoriées entre crochets, et sont séparées les unes des autres par unevirgule. Il existe une colonne pour chaque variable dans l'instruction Selectqui suit l'en-tête.

Par exemple :

{OWNER, @OBJTCODE, SCRIPT, @OBJTLABL}SELECT U.USER_NAME, P.PROC_NAME, P.PROC_DEFN, P.REMARKSFROM SYSUSERPERMS U,SYSPROCEDURE PWHERE [%SCHEMA% ? U.USER_NAME='%SCHEMA%' AND]P.CREATOR=U.USER_IDORDER BY U.USER_NAME

La liste des variables possibles correspond à la liste des variables établie dansle chapitre Variables dans PowerAMC du Guide de l'utilisateur du MPD.

Page 38: advanfr.pdf

Gestion de la génération et du reverse engineering

28 PowerAMC

Chaque partie de l'en-tête (séparée par des virgules) est associée auxinformations suivantes :

♦ Nom de la variable (obligatoire). Voir l'exemple dans Traitement avecdes noms de variable

♦ Le mot clé ID suit chaque nom de variable. ID signifie que la variablefait partie de l'identifiant

♦ Le mot clé … (points de suspension) signifie que la variable doit êtreconcaténée pour toutes les lignes renvoyées par la requête SQL et ayantles mêmes valeurs pour les colonnes d'ID

♦ Retrieved_value = PD.value répertorie l'association entre unevaleur extraite et une valeur PowerAMC. Une table de conversionpermet de convertir chaque valeur de l'enregistrement (table système) enune autre valeur (dans PowerAMC). Ce mécanisme est un mécanismealternatif. Voir l'exemple dans Traitement avec une table de conversion

La seule information obligatoire est le nom de variable. Toutes les autresinformations sont facultatives. Les mots clés ID et … (points de suspension)sont mutuellement exclusifs.

{TABLE ID, ISPKEY ID, CONSTNAME ID, COLUMNS ...}select t.table_name, 1, null, c.column_name + ', ', c.column_idfrom systable t, syscolumn cwhereetc..

Dans ce script, l'identifiant est défini comme TABLE + ISKEY+CONSTNAME.

Dans les lignes de résultat renvoyées par le script SQL, les valeurs duquatrième champ sont concaténées dans le champ COLUMNS tant que cesvaleurs d'ID sont identiques.

SQL Result setTable1,1,null,’col1,’Table1,1,null,’col2,’Table1,1,null,’col3,’Table2,1,null,’col4,’

In PowerDesigner memoryTable1,1,null,’col1,col2,col3’Table2,1,null,’col4’

Traitement avecdes noms devariable

Page 39: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 29

Dans l'exemple, COLUMNS va contenir la liste des colonnes séparées pardes virgules. PowerAMC va traiter le contenu du champ COLUMNS poursupprimer la dernière virgule.

La syntaxe insérée immédiatement derrière un champ dans l'en-tête est lasuivante :

(SQL value1 = PowerDesigner value1, SQL value2 =PowerDesigner value2, * = PowerDesigner value3)

dans laquelle * représente toutes les autres valeurs.

Par exemple :

{ADT, OWNER, TYPE(25=JAVA , 26=JAVA)}SELECT t.type_name, u.user_name, t.domain_idFROM sysusertype t, sysuserperms uWHERE [u.user_name = '%SCHEMA%' AND](domain_id = 25 OR domain_id = 26) ANDt.creator = u.user_id

Dans cet exemple, lorsque la requête SQL renvoie la valeur 25 ou 26, elle estremplacée par JAVA dans la variable TYPE.

Mécanisme d'extension pour les requêtes de reverse engineering ODBC

Lors du reverse engineering, PowerAMC exécute des requêtes permettantd'extraire des informations des colonnes des tables système. Le résultat d'unerequête est mis en correspondance avec les variables internes PowerAMC vial'en-tête de la requête. Lorsque les tables système d'un SGBD stockent desinformations dans des colonnes avec LONG, BLOB, TEXT et d'autres typesde données incompatibles, il est impossible de concaténer ces informationsdans une chaîne.

Vous pouvez contourner cette limitation en créant des requêtes définies parl'utilisateur et des variables définies par l'utilisateur dans les requêtes dereverse engineering existantes. Ces requêtes sont également appeléesrequêtes étendues.

Lors du reverse engineering, les requêtes sont exécutées pour évaluer lesvariables et créer une instruction de chaîne. Lorsque l'en-tête de requêtecontient le mot clé EX, cela signifie que le résultat de la requête contient desrequêtes et variables définies par l'utilisateur.

Par exemple :select '%UserDefinedQueryName.UserDefinedVariableName%'|| i.indexnamefrom…

Ces variables définies par l'utilisateur seront évaluées par des requêtesséparées définies par l'utilisateur.

Traitement avecune table deconversion

Page 40: advanfr.pdf

Gestion de la génération et du reverse engineering

30 PowerAMC

Les graphiques suivants illustrent le processus d'évaluation de variable lorsdu reverse engineering :

ReversedQueriesLes requêtes étendues ne doivent pas être définies dans l'entréeReversedQueries.

Une requête est exécutée pour évaluer les variables dans un jeu d'instructionsde chaîne.

Si les variables contiennent des requêtes et variables définies par l'utilisateur,la requête définie par l'utilisateur est exécutée pour évaluer les variablesdéfinies par l'utilisateur. Ces variables définies par l'utilisateur sont crééespour être remplies de données provenant des colonnes de type de donnéesLONG/BLOB/TEXT….

Vous pouvez créer des requêtes définies par l'utilisateur dans une requête dereverse engineering ODBC. Assurez-vous d'utiliser le même nom de variabledans ces requêtes et dans les requêtes définies par l'utilisateur. Dans le cascontraire, les variables ne seront pas évaluées.

Etape 1

Page 41: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 31

Vous devez également vérifier l'unicité des noms de variable si voussouhaitez que toutes les variables soient évaluées lors de l'exécution de larequête.

L'en-tête d'une requête utilisateur contient des noms de variable internes quine seront pas évaluées. En revanche, les règles de conversion pour les valeursexprimées entre crochets (like (0="", *=",")) peuvent être utilisées lors de laconcaténation de chaîne.

L'exécution de la requête définie par l'utilisateur doit générer un jeu derésultats numérotés contenant autant de paires de variable définie parl'utilisateur (sans %) et de valeur de variable que nécessaire, s'il existe desvariables à évaluer.

Par exemple, dans le jeu de résultats suivant, la requête a renvoyé trois ligneset 4 colonnes par ligne :

Variable 1 1 Variable 2 2

Variable 3 3 Variable 4 4

Variable 5 5 Variable 6 6

Les noms des variables définies par l'utilisateur sont remplacés par leursvaleurs.

Les sections suivantes expliquent les requêtes utilisateur définies pourremédier aux limitations du reverse engineering.

Reverse engineering ODBC d'options physiques

Lors du reverse engineering, les options physiques sont concaténées dans uneseule instruction de chaîne. Toutefois, lorsque les tables système d'une basede données sont partitionnées (comme dans Oracle) ou fragmentées (commedans Informix), les partitions/fragments partagent les mêmes attributslogiques, mais leurs propriétés physiques telles que les spécifications destockage sont conservées dans chaque partition/fragment de la base dedonnées. Les colonnes dans les partitions/fragments ont un type de données(LONG) qui permet le stockage de grandes quantités d'informations binairesnon structurées.

Les options physiques dans ces colonnes ne pouvant pas être concaténéesdans une instruction de chaîne lors du reverse engineering, SqlOptsQuery(catégorie Tables dans le SGBD) contient un appel à une requête définie parl'utilisateur qui va évaluer ces options physiques.

Etape 2

Etape 3

Page 42: advanfr.pdf

Gestion de la génération et du reverse engineering

32 PowerAMC

Dans Informix SQL 9, SqlOptsQuery est fourni par défaut avec lesrequêtes et variables utilisateur suivantes (le code suivant est un sous-ensemble de SqlOptsQuery) :

select t.owner, t.tabname, '%SqlFragQuery.FragSprt'||f.evalpos||'%%FragExpr'||f.evalpos||'% in %FragDbsp'||f.evalpos||'%', f.evalposfrom informix.systables t, informix.sysfragments fwhere t.partnum = 0 and t.tabid=f.tabid[ and t.owner = '%SCHEMA%'][ and t.tabname='%TABLE%']

A l'issue de l'exécution de SqlOptsQuery, la requête définie parl'utilisateur SqlFragQuery est exécutée pour évaluer FragDbsp n,FragExpr n, et FragSprt n. n représente evalpos qui définit laposition du fragment dans la liste de fragmentation. n permet d'affecter desnoms uniques aux variables, quel que soit le nombre de fragments définisdans la table.

FragDbsp n, FragExpr n, et FragSprt n sont des variables utilisateurqui seront évaluées pour récupérer des informations concernant les optionsphysiques des fragments dans la base de données :

Variable utilisateur Options physiques

FragDbsp n Emplacement du fragment pour le fragment n

FragExpr n Expression du fragment pour le fragment n

FragSprt n Séparateur du fragment pour le fragment n

Page 43: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 33

SqlFragQuery est défini comme suit :{A, a(E="expression", R="round robin", H="hash"), B, b,C, c, D, d(0="", *=",")}select 'FragDbsp'||f.evalpos, f.dbspace, 'FragExpr'||f.evalpos, f.exprtext, 'FragSprt'||f.evalpos, f.evalposfrom informix.systables t, informix.sysfragments fwhere t.partnum = 0 and f.fragtype='T' and t.tabid=f.tabid[ and t.owner = '%SCHEMA%'][ and t.tabname='%TABLE%']

L'en-tête de SqlFragQuery contient les noms de variable suivants.{A, a(E="expression", R="round robin", H="hash"), B, b,C, c, D, d(0="", *=",")}

Seules les règles de conversion définies entre crochets seront utilisées lors dela concaténation de chaîne : "FragSprt0", qui contient 0 (f.evalpos), seraremplacé par " ", et "FragSprt1", qui contient 1, sera remplacé par ","

SqlFragQuery génère un jeu de résultats numérotés contenant autant depaires de nom de variable utilisateur (sans %) et de valeurs de variable quenécessaire, s'il existe de nombreuses variables à évaluer.

Les noms de variable définies par l'utilisateur sont remplacés par leur valeurdans l'instruction de chaîne pour les options physiques des fragments dans labase de données.

Reverse engineering ODBC d'index basés sur une fonction

Dans Oracle 8i et versions ultérieures, vous pouvez créer des index basés surdes fonctions et des expressions qui impliquent une ou plusieurs colonnesdans la table en cours d'indexation. Un index basé sur une fonction précalculela valeur de la fonction ou de l'expression et la stocke dans l'index. Lafonction ou l'expression va remplacer la colonne d'index dans la définition del'index.

Une colonne d'index avec une expression est stockée dans les tables systèmeayant un type de données LONG qui ne peut pas être concaténé dans uneinstruction de chaîne lors du reverse engineering.

Page 44: advanfr.pdf

Gestion de la génération et du reverse engineering

34 PowerAMC

Pour contourner cette limitation, SqlListQuery (catégorie Index dans leSGBD) contient un appel vers la requête définie par l'utilisateurSqlExpression utilisée pour récupérer l'expression d'index dans unecolonne ayant le type de données LONG et pour concaténer cette valeur dansune instruction de chaîne (le code suivant est un sous-ensemble deSqlListQuery) :

select '%SCHEMA%', i.table_name, i.index_name, decode(i.index_type, 'BITMAP', 'bitmap', ''), decode(substr(c.column_name, 1, 6), 'SYS_NC','%SqlExpression.Xpr'||i.table_name||i.index_name||c.column_position||'%', c.column_name)||' '||c.descend||', ', c.column_positionfrom user_indexes i, user_ind_columns cwhere c.table_name=i.table_name and c.index_name=i.index_name[ and i.table_owner='%SCHEMA%'][ and i.table_name='%TABLE%'][ and i.index_name='%INDEX%']

L'exécution de SqlListQuery appelle l'exécution de la requête définie parl'utilisateur SqlExpression.

SqlExpression est suivi d'une variable définie par l'utilisateur commesuit :

{VAR, VAL}

select 'Xpr'||table_name||index_name||column_position, column_expressionfrom all_ind_expressionswhere 1=1[ and table_owner='%SCHEMA%'][ and table_name='%TABLE%']

Le nom de la variable définie par l'utilisateur est unique, il s'agit du résultatde la concaténation de "Xpr", du nom de table, du nom d'index et de laposition de colonne.

Page 45: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 35

Qualifiants et reverse engineering ODBC

Le qualifiant d'objet est affiché dans la liste déroulante dans l'angle supérieurgauche de la boîte de dialogue Reverse engineering ODBC. Vous pouvezutiliser un qualifiant pour sélectionner les objets sur lesquels faire porter lereverse engineering.

Vous pouvez ajouter une section relative aux qualifiants lorsque vouspersonnalisez votre SGBD. Cette section doit contenir les entrées suivantes :

♦ enable: YES/NO

♦ SqlListQuery (script) : cette entrée contient la requête SQL qui estexécutée pour extraire la liste des qualifiants. Vous ne devez pas ajouterd'en-tête à cette requête

L'effet de ces entrées est affiché dans le tableau ci-dessous :

Activé SqlListQuery présent ? Résultat

Yes Yes Les qualifiants sont disponibles etpeuvent être sélectionnés.Sélectionnez-en si nécessaire. Vouspouvez également saisir le nom d'unqualifiant.SqlListQuery est exécuté pour remplirla liste des qualifiants

No Seule la valeur par défaut (Tous lesqualifiants) est sélectionnée. Vouspouvez également saisir le nom d'unqualifiant

Page 46: advanfr.pdf

Gestion de la génération et du reverse engineering

36 PowerAMC

Activé SqlListQuery présent ? Résultat

No No La liste déroulante est grisée

Pour plus d'informations sur les filtres de qualifiants, reportez-vous à lasection Filtres et options de reverse engineering dans le chapitreReverse engineering du manuel Guide de l'utilisateur du MPD.

Dans Adaptive Server Anywhere 7, une requête de qualifiant typique seprésente comme suit :

.Qualifier.SqlListQuery :select dbspace_name from sysfile

Syntaxe dans les instructions SQL

La syntaxe définie dans la définition de SGBD est utilisée par PowerAMCpour analyser les instructions SQL lors du reverse engineering d'un script debase de données. Elle est utilisée pour définir les variables appropriées lorsdu processus de création et de modification des objets PowerAMC.

Vous pouvez incorporer des variables dans les requêtes SQL du SGBDsélectionné. Les variables PowerAMC sont écrites entre signes pourcent (%).

Mots clés réservés

Pour un domaine ou une colonne, les champs de vérifications standardpeuvent indiquer les valeurs minimale, maximale et par défaut, ainsi qu'uneliste de valeurs.

En règle générale, Si le type de données du domaine ou de la colonne est untype de données de chaîne, des apostrophes encadrent ces valeurs dans lescript généré. Cependant, les apostrophes ne sont pas générées dans les cassuivants :

♦ Vous pouvez définir un type de données qui n'est pas reconnu en tantque type de données de chaîne par PowerAMC

♦ La valeur est encadrée par le caractère tilde

♦ La valeur est un mot réservé défini dans le SGBD (par exemple, NULL)

En outre, si la valeur est déjà encadrée d'apostrophes, des apostrophessupplémentaires ne sont pas générés.

Exemple

Page 47: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 37

La génération des apostrophes ou des guillemets dépend du SGBD courant.

Le SGBD contient la liste des mots réservés spécifiée sous forme de valeurspour le champ ReservedDefault, sous la catégorie Keywords.

L'exemple suivant affiche le résultat de l'utilisation d'un mot réservé pour leSGBD Sybase AS Anywhere 6.

Sybase AS Anywhere 6 contient les lignes suivantes :

ReservedDefault =NULLAUTOINCREMENTCURRENT DATECURRENT PUBLISHERCURRENT TIMECURRENT TIMESTAMPCURRENT USERLAST USERUSER

Vous pouvez définir CURRENT DATE comme valeur par défaut pour unecolonne :

Exemple

Page 48: advanfr.pdf

Gestion de la génération et du reverse engineering

38 PowerAMC

Le script résultant contient la chaîne CURRENT DATE sans apostrophe ouguillemet.

create table SALE( SALE_ID T_IDENTIFIER not null, STOR_ID T_AN_IDENTIFIER not null, TITLE_ISBN char(12) not null, SALE_DATE T_DATE not null default CURRENT DATE, SALE_AMOUNT T_AMOUNT , SALE_TERMS T_LONG_TEXT , SALE_QTY T_QUANTITY , primary key (SALE_ID));

Lorsque vous exécutez ce script, Sybase Adaptive Server Anywherereconnaît CURRENT DATE comme valeur par défaut réservée.

Chaînes et variables facultatives

Vous pouvez utiliser des crochets [ ] pour :

♦ Inclure des chaînes et variables facultatives, ou des listes de chaînes etde variables dans la syntaxe des instructions SQL [%--%]

♦ Tester la valeur d'une variable et insérer ou reconsidérer une valeur enfonction du résultat du test. [%--%? is true : is false]

♦ Testez le contenu d'une variable [%--%=--? if true : if false]

Variable GénérationReverseengineering

[%--%] Généré si la variable estdéfinie. Si la variable estvide ou a la valeur NO ouFALSE, elle n'est pasgénérée

Reçoit une valeur sil'analyseur détecte unmorceau de commandeSQL correspondant à lavariable. Si la variableest vide ou s'est vueaffecter la valeur NO ouFALSE, elle n'est pasrenseignée

Page 49: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 39

Variable GénérationReverseengineering

[%--%? Is true :Is false]

pour tester la valeur de lavariable (valeurconditionnelle)

Si la variable est true, Istrue est généré, si lavariable est false, Isfalse est généré

Si l'analyseur détecte Istrue, Is true subit lereverse engineering, sil'analyseur détecte Isfalse, Is false subitle reverse engineeringet la variable % % estdéfinie à True ou Falseen fonction

[%--%=--? Is true: Is false]

pour tester le contenu dela variable (valeurconditionnelle)

Si la variable est égale à lavaleur constante, Istrue est généré, si lavariable est différente, Isfalse est généré

Si l'analyseur détecte Istrue, Is true subit lereverse engineering, sil'analyseur détecte Isfalse, Is false subitle reverse engineering

[.Z: [s1][s2]...] .Z est ignoré Spécifie que la chaîneet les variables entrecrochets ne sont pastriés

♦ [%--%]

[%OPTIONS%]

Si %OPTIONS% n'est pas FALSE, n'est pas vide ou n'a pas la valeurNO, la variable est générée, ce texte est remplacé par la valeur de%OPTIONS% (options physiques pour les objets visibles dans la feuillede propriétés de l'objet).

[default %DEFAULT%]

Dans le reverse engineering, si un texte default 10 est rencontré lorsdu reverse engineering, %DEFAULT% est renseigné avec la valeur 10.Toutefois cette spécification n'est pas obligatoire et l'instruction SQL faitl'objet d'un reverse engineering même si la spécification est absente.Dans la génération du script, si la valeur par défaut est définie (10, parexemple) lors de la génération, le texte est remplacé par default 10,dans le cas contraire rien n'est généré pour le bloc.

♦ [%--%? Is true : Is false]

Exemples

Page 50: advanfr.pdf

Gestion de la génération et du reverse engineering

40 PowerAMC

Vous pouvez utiliser une valeur conditionnelle pour une chaîne ouvariable facultative. Deux conditions sont séparées par un signe deuxpoints au sein de crochets utilisés avec la chaîne ou variable facultative.Par exemple, [%MAND%?Is true:Is false]. Si %MAND% est évaluécomme true ou renseigné à l'aide d'une valeur (différente de FALSE ouNO) lors de la génération, ce texte est remplacé par Is true. Dans lecas contraire, il est remplacé par Is false.

♦ [%--%=--? Is true : Is false]

Vous pouvez également utiliser des mots clés pour tester le contenud'une variable.

[%DELCONST%=RESTRICT?:[on delete %DELCONST%]]

♦ Create table abc (a integer not null default 99)

Create table abc (a integer default 99 not null)

Ces deux commandes de création sont identiques mais les attributs sontinversés.

En règle générale, le fichier XDB cible prend en charge uniquement unenotation avec un ordre spécifique dans la chaîne et les variables. Si vousprocédez au reverse engineering de ces deux commandes, l'une d'elles nepassera pas en raison de l'ordre des variables. Vous pouvez contournercette limitation en utilisant la macro .Z de la façon suivante :

%COLUMN% %DATATYPE%[.Z: [%NOTNULL%][%DEFAULT%]]

Si vous utilisez cette macro, l'analyseur syntaxique du reverseengineering ne prend plus en compte l'ordre dans les variables.

Une chaîne placée entre crochets est toujours générée ; toutefois, que cettechaîne soit présente ou non dans l'instruction SQL n'annulera pas le reverseengineering de l'instruction courante puisqu'elle est facultative dans lasyntaxe SQL de l'instruction. Par exemple, la syntaxe de création d'une vueinclut une chaîne :

create [or replace] view %VIEW% as %SQL%

Lorsque vous procédez au reverse engineering d'un script, et si ce dernier necontient que create ou create or replace, l'instruction fait l'objetd'un reverse engineering dans les deux cas car la chaîne est facultative.

Utilisation deschaînes

Page 51: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 41

Définition d'options de format de variable

Les variables ont une syntaxe qui peut forcer un format sur leur valeur. Lesutilisations les plus courantes sont les suivantes :

♦ Forcer les valeurs en minuscules ou en majuscules

♦ Tronquer les valeurs

♦ Mettre le texte entre guillemets

Vous devez incorporer les options de format dans la syntaxe de variablecomme suit :

%.format:variable%

Les options de format des variables sont les suivantes :

Option Description

n (n, étant unentier)

Ajoute des espaces ou des zéros à gauche pour remplir lalargeur et justifier à droite

-n Ajoute des espaces ou des zéros à droite pour remplir lalargeur et justifier à gauche

.L Force les caractères en minuscules

.U Force les caractères en majuscules

.c Force la majuscule à la première lettre ainsi que desminuscules aux autres lettres du mot

.F Combiné avec L et U, applique des conversions au premiercaractère

.T Les espaces de début et de fin sont supprimés de la variable

.n Tronque la valeur pour ne conserver que les n premierscaractères

.-n Tronque la valeur pour ne conserver que les n dernierscaractères

q Place la variable entre apostrophes

Q Place la variable entre guillemets

Vous pouvez combiner les codes de format. Par exemple, %.U8:CHILD%met en forme le code de la table enfant avec un maximum de huit caractèresmajuscules.

Page 52: advanfr.pdf

Gestion de la génération et du reverse engineering

42 PowerAMC

Les exemples suivants montrent les codes de format incorporés dans lasyntaxe de variable pour le template de nom de contrainte des clés primaires,en utilisant une table nommée CUSTOMER_PRIORITY :

Format Utilisation Exemple Résultat

.L Minuscules PK_%.L:TABLE% PK_customer_priority

.Un Majuscules +texte de variablejustifié à droitejusqu'à unelongueur fixe, nreprésente lenombre decaractères

PK_%.U12:TABLE% PK_CUSTOMER_PRI

.T Supprimer lesespaces de débutet de fin de lavariable

PK_%.T:TABLE% PK_customer_priority

.n Longueurmaximum danslaquelle nreprésente lenombre decaractères

PK_%.8:TABLE% PK_Customer

-n Complète lerésultat avec desespaces à droitepour afficher unelongueur fixedans laquelle nreprésente lenombre decaractères

PK_%-20:TABLE% PK_ Customer_priority

Pour obtenir la liste des variables utilisées dans PowerAMC, reportez-vous à la section Variables de MPD.

Exemple

Page 53: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 43

Template de nom de contrainte

Le SGBD utilise des variables et des formats de variable pour définir destemplates de nom de contrainte. Ces derniers dont définis par la valeur duchamp de SGBD ConstName. Les catégories d'objet suivantes ont un nomConstName :

Catégorie Description

TABLE Template de nom de contrainte pour les vérifications de table

COLUMN Template de nom de contrainte pour les vérifications decolonne

PKEY Template de nom de contrainte pour les vérifications de cléprimaire

KEY Template de nom de contrainte pour les vérifications de cléalternative

REFERENCE Template de nom de contrainte pour les vérifications de cléétrangère

Dans PowerAMC, vous pouvez définir des noms de contrainte définis parl'utilisateur. Les templates s'appliquent à toutes les contraintes pour lesquellesvous ne définissez pas de noms de contrainte définis par l'utilisateur.

De nombreux objets ont des variables Code et Generated Code qui sontdifférenciées comme suit :

Variable Description

Code Code d'attribut défini dans la feuille de propriétés

Generated Code Code calculé en fonction des options de génération. Lecode généré peut être différent du code dans les cassuivants :

Le code est un mot réservé ou contient des caractèresincorrects. Le code généré est placé entreguillemets

Le code est plus long que la longueur autorisée par leSGBD. Le code généré est tronqué

Pour obtenir la liste de toutes les variables utilisées dans PowerAMC,reportez-vous à la section Variables de MPD.

Variables Code etGenerated code

Page 54: advanfr.pdf

Gestion de la génération et du reverse engineering

44 PowerAMC

Le champ ConstName pour tous les objets peut accepter les variablescourantes suivantes :

Variable Description

%@OBJTNAME% Nom d'objet

%@OBJTCODE% Code d'objet

%@OBJTLABL% Commentaire pour l'objet

%@OBJTDESC% Description pour l'objet

Le champ ConstName pour l'objet TABLE peut accepter les variablessuivantes :

Variable Valeur

%TABLE% Code généré pour la table

%TNAME% Nom de la table

%TCODE% Code de la table

%TLABL% Commentaire de la table

Le champ ConstName pour l'objet COLUMN peut accepter les variablessuivantes :

Variable Valeur

%COLUMN% Code généré pour la colonne

%COLNAME% Nom de la colonne

%COLNCODE% Code de la colonne

Le champ ConstName pour l'objet PKEY peut accepter la variable suivante :

Variable Valeur

%CONSTNAME% Nom de contrainte

Le champ ConstName pour l'objet KEY peut accepter les variablessuivantes :

Variable Valeur

%AKEY% Code de la clé alternative

%TABLE% Code de la table

Variables de nomcommunes pourConstName

ConstName pourTABLE

ConstName pourCOLUMN

ConstName pourPKEY

ConstName pourKEY

Page 55: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 45

Le champ ConstName pour l'objet REFERENCE peut accepter les variablessuivantes :

Variable Valeur

%REFR% Code généré pour la référence

%PARENT% Code généré pour la table parent

%PNAME% Nom de la table parent

%PCODE% Code de la table parent

%CHILD% Code généré pour la table enfant

%CNAME% Nom de la table enfant

%CCODE% Code généré pour la table enfant

%PQUALIFIER% Qualifiant de la table parent

%CQUALIFIER% Qualifiant de la table enfant

%REFRNAME% Nom de référence

%REFRCODE% Code de référence

%PKCONSTRAINT% Nom de contrainte de clé parent utilisé pour faireréférence à l'objet

%POWNER% Propriétaire de la table parent

%COWNER% Propriétaire de la table enfant

%CHCKONCMMT% TRUE lorsque Check on commit est sélectionné sur laréférence (spécifique ASA 6.0)

L'exemple suivant montre l'utilisation de templates de nom de contrainte pourSybase Adaptive Server Anywhere 6.

Le SGBD Adaptive Server Anywhere 6 contient les valeurs suivantes pour lechamp ConstName :

Catégorie Commentaire Valeur

PKEY Template de nomde contrainte pourles clés primaires

PK_%.U27:TABLE%

REFR Template de nomde contrainte pourles clés étrangères

FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%

ConstName pourREFERENCE

Exemple

Page 56: advanfr.pdf

Gestion de la génération et du reverse engineering

46 PowerAMC

Catégorie Commentaire Valeur

KEY Template de nomde contrainte pourles clés alternatives

AK_%.U18:AKEY%_%.U8:TABLE%

COLN Template de nomde contrainte pourles vérifications decolonne

CKC_%.U17:COLUMN%_%.U8:TABLE%

TABL Template de nomde contrainte pourles vérifications detable

CKT_%.U26:TABLE%

Le script résultant que vous pouvez générer pour une table utilisant AdaptiveServer Anywhere 6 déclare les noms de contrainte comme suit :

create table DISCOUNT( DISCOUNT_ID T_IDENTIFIER not null, STOR_ID T_AN_IDENTIFIER not null, DISC_PERCENT T_PERCENT not null, DISC_TYPE T_SHORT_TEXT null constraint CKC_DISC_TYPE_DISCOUNT check(DISC_TYPE in ('High','Medium','Low')), DISC_LOWQTY T_QUANTITY null , DISC_HIGHQTY T_QUANTITY null , constraint PK_DISCOUNT primary key (DISCOUNT_ID))go

Page 57: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 47

Définition d'options physiquesDans certaines définitions de SGBD, les entrées Options sont utilisées pourdéfinir une arborescence d'options physiques dans le volet gauche de lafeuille de propriétés d'un objet. Une option physique est un paramètre quidéfinit la façon dont un objet est optimisé ou stocké dans une base dedonnées. Les options physiques peuvent être incluses à la fin d'uneinstruction Create et sont spécifiques à un SGBD.

Une arborescence typique est représentée ci-dessous :

Lors de la génération, les options sélectionnées dans le modèle pour chaqueobjet sont stockées dans une variable %OPTIONS%.

La variable %OPTIONS% contient la chaîne d'option physique comme si elleétait écrite dans un script SQL. Cette chaîne doit s'afficher à la fin del'élément auquel elle appartient et ne doit être suivie de rien.

create table[%OPTIONS%]

Il s'agit de la syntaxe correcte.

Exemple

Page 58: advanfr.pdf

Définition d'options physiques

48 PowerAMC

Vous pouvez utiliser les variables PowerAMC définies pour un objet donnépour définir les options pour cet objet.

Par exemple, dans Oracle, vous pouvez définir la variable suivante pour uncluster si vous souhaitez que ce cluster prenne le même nom que la table.

Cluster %TABLE%

Pour obtenir la liste de toutes les variables utilisées dans PowerAMC,reportez-vous à la section Variables de MPD.

Vous pouvez utiliser des attributs étendus dans des options physiques.

Pour plus d'informations sur les attributs étendus, reportez-vous à lasection Catégorie Profile.

Lors du reverse engineering par script, la section de la requête SQLdéterminée comme étant les options physiques est stockée dans%OPTIONS%, et sera ensuite analysée lorsque requis par une feuille depropriétés d'objet.

Lors du reverse engineering ODBC, l'instruction SqlOptsQuery estexécutée pour extraire les options physiques qui sont stockées dans%OPTIONS% afin de les analyser lorsque requis par une feuille depropriétés d'objet.

Selon la définition de SGBD, vous pouvez définir des options physiques pourles objets suivants :

♦ Tablespace

♦ Storage

♦ Database

♦ Table

♦ Column

♦ Index

♦ Key (primaire et alternative)

Les options physiques typiques sont pctfree, pctused, fillfactor etpartition.

Vous définissez des options physiques sur la feuille de propriétés d'un objet.

Variables dans lesoptions physiques

Attributs étendus

Page 59: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 49

Définition d'options physiques spécifiées par une valeur

Les entrées d'options physiques contiennent du texte qui est analysé et utilisépour renseigner le volet gauche de la page Options de l'objet. Chaque ligned'une entrée Option crée une ligne dans le volet gauche de la page d'optionsphysiques. L'utilisateur peut cliquer sur les boutons entre les deux volets poursélectionner ces lignes.

Les lignes peuvent ou non contenir des variables %d ou %s pour laisserl'utilisateur spécifier une valeur. Exemple :

with max_rows_per_page=%don %s: category=storage

Lorsque vous sélectionnez une option avec une valeur %d ou %s dans le voletdroit, une zone d'édition s'affiche en bas de ce volet. Elle est utilisée lorsquel'option physique requiert une valeur. Les variables possibles sont lessuivantes :

Variable Description

%d Une valeur numérique suit l'option physique. Vous devez saisir unevaleur numérique dans le champ d'édition

%s La chaîne suit l'option physique. Vous devez saisir une chaîne dansla zone d'édition

Chaque option sélectionnée crée une ligne dans le volet droit. Si la sélectioncontient une variable %d, une valeur numérique peut être entrée. Si lasélection contient une variable %s, un texte est entré. Si la sélection necontient ni variable %d ni variable %s, aucune valeur n'est entrée.

Les variables entre signes % (%--%) ne sont pas admises dans les optionsphysiques.

Vous pouvez spécifier une contrainte sur n'importe quelle ligne contenant unevariable, par exemple une liste de valeurs, des valeurs par défaut, la valeurdoit être un storage ou un tablespace, certaines lignes peuvent être groupées.Ces contraintes sont introduites par une virgule directement derrière l'optionphysique et séparées par des virgules (voir la section suivante).

Page 60: advanfr.pdf

Définition d'options physiques

50 PowerAMC

La page Options dans une feuille de propriétés de tables est illustrée ci-dessous :

Lorsque l'option with max_rows_per_page est sélectionnée, la zoneValeur s'affiche en bas de la page, en regard du bouton Egal. La valeur pardéfaut est zéro (0).

With max_rows_per_page est une option physique d'index pourSybase AS Enterprise 11.x. Cette option limite le nombre de lignes par pagede données. La syntaxe se présente comme suit :

with max_row_per_page = x

Où x est le nombre de lignes spécifié par l'utilisateur.

Dans Sybase Adaptive Server Enterprise, cette option peut être définie pourl'objet d'index comme suit :

with max_rows_per_page=%don %s : category=storage

Les variables %d et %s doivent se trouver en dernière position et ne doiventpas être suivies d'autres options.

Exemple

Page 61: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 51

Syntaxe pour une option physique sans nom

Une ligne dans une entrée d'option ne doit pas contenir uniquement unevariable, elle doit contenir un texte pour l'option physique ou un nom afin ded'être identifiée par PowerAMC. Une option physique dépourvue de texte nepeut pas être représentée dans la syntaxe PowerAMC. Si une option physiqueest dépourvue de nom, vous devez ajouter un nom entre signes supérieur etinférieur à (<>) avant l'option. Cet indicateur est un mot qui décrit l'optionphysique à saisir.

Pour définir un segment dans Sybase AS Enterprise 11, la syntaxe appropriéeest la suivante :

sp_addsegment segmentname, databasename, devicename

segmentname correspond au code de storage défini dans PowerAMC.databasename correspond au code de modèle. Ces deux entrées sontautomatiquement générées. devicename doit être saisi par l'utilisateur, ildevient une option.

Dans SYSTEM11, cette option est définie comme suit :Create = execute sp_addsegment %STORAGE%, %DATABASE%,%OPTIONS%OPTIONS = <devname> %s

Une option physique dépourvue de nom doit être suivie de la variable %d ou%s.

Définition d'une valeur par défaut pour une option physique

Une option physique peut avoir une valeur par défaut. Le mot cléDefault= est utilisé pour spécifier cette valeur. Après le nom de l'optionphysique ou après la valeur %d ou %s, il est nécessaire d'ajouter un signedeux points suivi de default=x, où x est la valeur par défaut de la base dedonnées cible.

La valeur par défaut pour max_row_per_page est 0. Dans SybaseAdaptive Server Enterprise 11, cette valeur par défaut pour l'objet d'index estdéfinie comme suit :

max_rows_per_page=%d : default=0

La valeur par défaut est affichée par défaut dans la fenêtre Options.

Exemple

Exemple

Page 62: advanfr.pdf

Définition d'options physiques

52 PowerAMC

Définition d'une liste de valeurs pour une option physique

Lorsque vous utilisez les variables %d et %s, une valeur d'option physiquepeut correspondre à une liste d'options possibles. Le mot clé List= estutilisé pour spécifier cette liste. Après le nom de l'option physique, ou aprèsla valeur %d ou %s, il est nécessaire d'ajouter un signe deux-points, puislist= x | y co où x, y et z sont des valeurs possibles. Les valeurssont séparées par le caractère |.

L'option dup_prow d'un index Sybase Adaptive Server Enterprisecorrespond à deux options mutuellement exclusives pour créer un indexcluster non unique. Cette option peut être ignorée ou admise.

Dans Sybase Adaptive Server Enterprise 11 :IndexOption =<duprow> %s: list=ignore_dup_row | allow_dup_row

Une liste déroulante avec les valeurs est affichée en regard du volet droit dela page d'options physiques.

Utilisation d'une virgule pour séparer Default et ListSi vous utilisez simultanément Default= et List=, vous devez lesséparer par une virgule.

Si ignore_dup_row est la valeur par défaut pour un index, la syntaxeutilisée dans le fichier de définition de SGBD pour définir cette valeur est lasuivante :

IndexOption =<duprow> %s: default= ignore_dup_row, list=ignore_dup_row| allow_dup_row

Définition d'une option physique correspondant à un tablespace ouà un storage

Une option physique peut utiliser le code d'un tablespace ou d'un storage :category=tablespace ou category=storage construit une listeavec tous les codes de tablespace ou de storage définis dans la boîte dedialogue Liste des tablespaces ou Liste des storages.

L'option d'index on segmentname spécifie que l'index est créé sur lesegment nommé. Un segment Sybase correspond à un storage PowerAMC.La syntaxe est la suivante :

on segmentname

Exemple

Exemple

Exemple

Page 63: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 53

Dans Sybase Adaptive Server Enterprise 11, la valeur par défaut pour l'objetd'index est définie dans les options comme suit :

on %s: category=storage

Vous pouvez sélectionner le storage approprié dans une liste déroulante dansla page d'options physiques.

Syntaxe d'option physique composite

Une option physique composite est une option physique qui inclut d'autresoptions dépendantes. Ces options sont sélectionnées simultanément dans levolet droit de la page d'options physiques.

La syntaxe standard pour les options physiques se présente comme suit :with : composite=yes, separator=yes, parenthesis=no{fillfactor=%d : default=0max_rows_per_page=%d : default=0}

L'option physique With inclut les autres options entre accolades { },séparées par une virgule. Pour définir une option composite, vous devezutiliser un mot clé composite.

Mot clé Valeur et résultat

composite= Si composite=yes, des accolades sont utilisées pour définir uneoption physique composite

separator= Si separator=yes, les options sont séparées par une virguleSi separator=no, les options sont dépourvues de caractèreséparateur. Il s'agit de la valeur par défaut

parenthesis= Si parenthesis=yes, l'option composite est délimitée par desparenthèses qui incluent toutes les autres options, parexemple :with (max_row_per_page=0,ignore_dup_key)

Si parenthesis=no, rien ne délimite l'option composite. Il s'agitde la valeur par défaut

nextmand= Si nextmand=yes, la prochaine ligne dans l'option physique estobligatoire. Si vous n'utilisez pas ce mot clé, vous ne serezpas en mesure de procéder à la génération/au reverseengineering de l'intégralité de l'option physique composite

prevmand= Si prevmand=yes, la ligne précédente dans l'option physique estobligatoire. Si vous n'utilisez pas ce mot clé, vous ne serezpas en mesure de procéder à la génération/au reverseengineering de l'intégralité de l'option physique composite

Page 64: advanfr.pdf

Définition d'options physiques

54 PowerAMC

Mot clé Valeur et résultat

childmand= Si childmand=yes, il doit y avoir au moins une ligne enfant

category= Si category=tablespace, l'élément est lié à un tablespaceSi category=storage, l'élément est lié à un storage (*)

list= Liste dans laquelle des valeurs sont séparées par un trait vertical(|)

dquoted= Si dquoted=yes, la valeur est placée entre guillemets ("" "")

squoted= Si squoted=yes, la valeur est placée entre apostrophes (' ')

enabledbprefix= Si enabledbprefix=yes, le nom de base de données est utilisécomme préfixe (voir les options de tablespace dans DB2OS/390)

Default= et/ou List= peut également être utilisé avec les mots cléscomposite=, separator= et parenthesis=. Category= peut êtreutilisé avec les trois mots clés d'une option composite.

Les options relatives aux index IBM DB2 contiennent l'option compositesuivante :

<using_block> : composite=yes{ using vcat %s using stogroup %s : category=storage, composite=yes { priqty %d : default=12 secqty %d erase %s : default=no, list=yes | no }

Dans Oracle, la catégorie Storage est utilisée comme template pour définirtoutes les valeurs de storage dans une entrée de storage. Ceci vous permetd'éviter d'avoir à définir des valeurs indépendamment chaque fois que vousdevez utiliser les mêmes valeurs dans une clause de storage. L'optionphysique Oracle n'inclut pas le nom de storage (%s)

storage : category=storage, composite=yes, separator=no,parenthesis=yes

{

Exemple

(*) Cas particulieravec Oracle

Page 65: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 55

Répétitions d'options

Certaines bases de données répètent un bloc d'options, groupées dans uneoption composite. Dans ce cas, la définition composite contient le mot clémultiple :

with: composite=yes, multiple=yes

Par exemple, les options de fragmentation Informix peuvent être répétées nfois comme illustré ci-après :

IndexOption =fragment by expression : composite=yes, separator=yes{ <list> : composite=yes, multiple=yes { <frag-expression> %s in %s : category=storage } remainder in %s : category=storage}

La sous-option <list> est utilisée pour éviter d'avoir à répéter le mot cléfragment avec chaque nouveau bloc d'options.

Lorsque vous répétez une option composite, cette option s'affiche avec <*>dans le volet des options physiques disponibles (volet gauche) sur la page desoptions physiques.

max_rows_per_page=0 <*>

Vous pouvez ajouter l'option composite dans le volet droit plusieurs fois enutilisant le bouton Ajouter entre les volets, sur la page d'options physiques.

Page 66: advanfr.pdf

Définition d'options physiques

56 PowerAMC

Si la sélection se trouve sur l'option composite dans le volet droit et que vouscliquez sur la même option composite dans le volet gauche afin de l'ajouter,une boîte de message vous demande si vous souhaitez réutiliser l'optionsélectionnée. Si vous cliquez sur Non, l'option composite est ajoutée dans levolet droit comme nouvelle ligne.

Changements d'interface utilisateur

Votre interface utilisateur spécifique peut être différente de celle montréedans les illustrations. Ceci est dû aux caractéristiques spécifiques du SGBDque vous utilisez ou modifiez ainsi qu'aux paramètres de l'entréesélectionnée.

Si un paramètre d'option est vide pour un objet, ou s'il n'est pas activé,l'interface change comme suit :

♦ L'onglet Options correspondant ne s'affiche pas dans la feuille depropriétés de l'objet. Cette particularité est applicable à Tablespace,Storage, Database, Primary key et Keys

♦ Les cases à cocher Options physiques contenues dans la fenêtreGénération d'une base de données et Modifications d'une base dedonnées, ainsi que dans la page Base de données de la boîte de dialogueGénération d'une base de données sont grisées et ne sont pas accessibles.Ceci concerne les zones de groupe Tables, Index et Bases de données

Page 67: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 57

Catégorie GeneralLa catégorie General contient des informations d'identification de SGBD.

EnableCheckDétermine si la génération des paramètres de contrôle est autorisée ou non.

Valeur Résultat

Yes Paramètres de contrôle générés

No Toutes les variables liées aux paramètres de contrôle ne seront pasévaluées lors des processus de génération et de reverse engineering

EnableIntegrity

Permet de recourir à des contraintes d'intégrité dans le SGBD. Vouscontrôlez ainsi si les paramètres de génération relatifs aux clés primaires,étrangères ou alternatives sont grisés ou disponibles.

Valeur Résultat

Yes Les cases relatives aux clés primaires, clés alternatives et clésétrangères sont disponibles pour la génération et la modification debase de données

No Les cases relatives aux clés primaires, clés alternatives et clésétrangères sont grisées et non disponibles pour la génération et lamodification de base de données

Page 68: advanfr.pdf

Catégorie General

58 PowerAMC

EnableMultiCheck

Détermine si la génération de plusieurs paramètres de contrôle pour les tableset colonnes est autorisée ou non.

Valeur Résultat

Yes Plusieurs paramètres de contrôle sont générés. La première contraintedans le script correspond à la concaténation de toutes les règles devalidation, les autres contraintes correspondent à chaque règle degestion de contrainte attachée à un objet

No Toutes les règles de gestion (validation et contrainte) sont concaténéesdans une même expression de contrainte

EnableConstname

Détermine si les noms de contrainte sont utilisés lors de la génération.

Valeur Résultat

Yes Les noms de contrainte sont utilisés lors de la génération

No Les noms de contrainte ne sont pas utilisés

SqlSupport

Détermine si la syntaxe SQL est admise. Cette entrée est sans influence sur lagénération de script mais a un impact sur l'aperçu de code SQL.

Valeur Résultat

Yes Syntaxe SQL admise et Aperçu SQL disponible

No La Syntaxe SQL admise et Aperçu SQL disponible

Page 69: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 59

UniqConstName

Détermine si les noms de contrainte uniques pour les objets sont ou nonautorisés.

Valeur Résultat

Yes Tous les noms de contrainte doivent être uniques dans la base dedonnées, y compris les noms d'index

No Les noms de contrainte doivent être uniques pour un objet

La vérification de modèle prend en compte cette entrée lors de la vérificationde nom de contrainte.

Page 70: advanfr.pdf

Catégories Script ou ODBC

60 PowerAMC

Catégories Script ou ODBCLa catégorie Script est utilisée pour la génération de Script et la catégorieODBC est utilisée pour la génération ODBC. Lorsqu'une valeur d'entrée ousa catégorie est manquante dans la catégorie ODBC lors de la générationODBC, elle est automatiquement recherchée dans la catégorie Script.

Les catégories Script ou ODBC sont divisées en catégories comme suit :

♦ SQL

♦ Objects

♦ Data Type

Toutes les entrées de chaque catégorie sont décrites dans les sectionssuivantes.

Page 71: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 61

Catégorie SQLLa catégorie SQL contient les catégories suivantes :

♦ Syntax

♦ Format

♦ File

♦ Keywords

Ces catégories contiennent les entrées qui définissent la syntaxe SQL pour leSGBD.

Syntax

La catégorie Syntax contient les entrées qui définissent la syntaxe spécifiqueau SGBD.

Terminator

Caractère de fin d'instruction. Est utilisé pour terminer les instructions tellesque les instructions de création de table, de vue ou d'index, ou bien pour lesinstructions d'ouverture/fermeture de base de données.

Terminator = ;

Si aucune valeur n'est spécifiée, c'est BlockTerminator qui est utilisé.

BlockTerminator

Caractère de fin de bloc. Est utilisé pour terminer les expressions pour lestriggers et les procédures stockées.

BlockTerminator = /

Exemple

Exemple

Page 72: advanfr.pdf

Catégorie SQL

62 PowerAMC

UseBlockTerm

Syntaxe d'utilisation de BlockTerminator.

Valeur Résultat

Yes BlockTerminator est toujours utilisé

No BlockTerminator est utilisé pour les triggers et les procéduresstockées uniquement

Dans Oracle 8I :

UseBlockTerm = yes

Delimiter

Caractère de séparation de champs. Par exemple : col1, col2, col3.

Delimiter = ,

Les colonnes sont séparées par des virgules dans l'instruction create table.create table CUSTOMER( CUSNUM numeric(5) not null, CUSNAME char(30) not null, CUSADDR char(80) not null, CUSACT char(80) , CUSTEL char(12) , CUSFAX char(12) , primary key (CUSNUM));

Quote

Caractère utilisé pour encadrer les valeurs de chaîne. Il s'agit le plus souventde l'apostrophe ou du guillemet.

Quote = '

Quote est utilisé pour placer des apostrophes ou des guillemets de part etd'autre des valeurs par défaut dans le code SQL généré.

Cohérence entre les apostrophes ou guillemetsLe même caractère (apostrophe ou guillemet) doit être utilisé dans lespages de paramètres de contrôle pour encadrer les mots réservés utiliséscomme valeur par défaut.

Exemple

Exemple

Exemple

Page 73: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 63

SqlContinue

Caractère de suite. Certaines bases de données requièrent un caractère desuite lorsqu'une instruction dépasse une ligne. Pour connaître le caractèreapproprié, reportez-vous à la documentation relative à votre SGBD. Cecaractère est attaché à chaque ligne, juste avant le caractère de saut de ligne.

BlockComment

Caractère utilisé pour encadrer un commentaire portant sur plusieurs lignes.

Utilisé dans le reverse engineering et dans la génération.

BlockComment = /* */

Ajoute un espace entre les caractères d'ouverture et de fermeture.

LineComment

Caractère utilisé pour encadrer un commentaire d'une seule ligne.

Utilisé dans le reverse engineering.

LineComment = %%

Format

La catégorie Format contient des entrées qui définissent le format du script.

IllegalChar

Caractères incorrects pour les noms. Utilisé uniquement pour la génération.Si le code contient un caractère illégal, il est défini entre guillemets lors de lagénération.

IllegalChar = "+-*/!=<>'"()"If the name of the table is “SALES+PROFITS", thegenerated create statement will be:

CREATE TABLE "SALES+PROFITS"

Des guillemets sont placés de part et d'autre du nom de table pour indiquerqu'un caractère incorrect est utilisé.

Lors du reverse engineering, tout caractère illégal est considéré commeséparateur à moins qu'il ne soit situé dans un nom entre guillemets.

Exemple

Exemple

Exemple

Page 74: advanfr.pdf

Catégorie SQL

64 PowerAMC

CaseSensitivityUsingQuote

Détermine si la sensibilité à la casse est gérée à l'aide de guillemets. Vousdevez définir cette valeur booléenne à Yes si le SGBD que vous utiliseznécessite des guillemets pour préserver la casse des codes d'objet.

UpperCaseOnly

Majuscules uniquement. Lorsque vous générez un script à partir d'un MPD,tous les objets (tables, colonnes, contraintes, index, etc.) peuvent être forcésen majuscules à la génération, indépendamment des conventions dedénomination définies pour le modèle (Majuscules, Minuscules ou Mixte) etdes codes du MPD.

Valeur Résultat

Yes Force tous les caractères du script généré en majuscules

No Génère tout le script sans changer la façon dont les objets sont écritsdans le modèle (majuscules, minuscules, ou mixte)

UpperCaseOnly = NO

Conflit entre UpperCaseOnly et LowerCaseOnlyLe champ UpperCaseOnly est ignoré si les entrées UpperCaseOnlyet LowerCaseOnly sont définies à la valeur Yes. Dans ce cas, le scriptPowerAMC est généré en minuscules.

LowerCaseOnly

Minuscules uniquement. Lorsque vous générez un script à partir d'un MPD,tous les objets (tables, colonnes, contraintes, index, etc.) peuvent être forcésen minuscules à la génération, indépendamment des conventions dedénomination définies pour le modèle (Majuscules, Minuscules ou Mixte) etdes codes du MPD.

Valeur Résultat

Yes Force tous les caractères du script généré en minuscules

No Génère tout le script sans changer la façon dont les objets sont écritsdans le modèle (majuscules, minuscules, ou mixte)

LowerCaseOnly = YES

Exemple

Exemple

Page 75: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 65

EnableOwnerPrefix et EnableDtbsPrefix

Les codes d'objet peuvent être préfixés par le nom du propriétaire de l'objet,le nom de la base de données, ou les deux, ce afin d'être identifiés de façonunique. Vous pouvez pour ce faire utiliser la variable %QUALIFIER%.

Si vous souhaitez que le préfixe soit le propriétaire de l'objet, vous devezdéfinir la valeur de l'entrée EnableOwnerPrefix à Yes, puis cocher la casePréfixe de propriétaire dans la boîte de dialogue de génération. Si voussouhaitez que le préfixe soit le nom de la base de données, vous devez définirla valeur de l'entrée EnableDtbsPrefix à Yes et cocher la case Préfixe de basede données dans la boîte de dialogue de génération.

Si vous cochez à la fois les cases Préfixe de base de données et Préfixe depropriétaire, les deux noms sont concaténés lorsque %QUALIFIER% estévalué.

Valeur Résultat

Yes Les cases Préfixe de base de données et Préfixe de propriétaire sontdisponibles dans la boîte de dialogue de génération. La variable%QUALIFIER% est renseignée avec le nom de l'objet, ou le nom de labase de données, ou bien les deux lors de la génération ou du reverseengineering

No Les cases Préfixe de base de données et Préfixe de propriétaire sontgrisées et le préfixe n'est pas disponible

MaxScriptLen

Indiquent la longueur maximale d'une ligne de script.

1024

AddQuote

Détermine si les codes d'objet sont systématiquement placés entreapostrophes ou guillemets lors de la génération.

Valeur Résultat

Yes Les codes d'objet sont systématiquement placés entre apostrophes ouguillemets lors de la génération

No Les codes d'objet sont générés sans apostrophes ou guillemets

Exemple

Page 76: advanfr.pdf

Catégorie SQL

66 PowerAMC

Format de date et d'heure

Vous pouvez personnaliser le format de date et d'heure pour la génération desdonnées de test via script ou via ODBC en utilisant les entrées de SGBD dansla catégorie Format.

PowerAMC utilise la table de correspondance PhysDataType dans lacatégorie Script\Data types afin de convertir les types de données physiquesdes colonnes en types de données conceptuels car les entrées de SGBD sontliées aux types de données conceptuels.

Exemple pour Sybase AS Anywhere 7 :

Type dedonnéesphysique

Type dedonnéesconceptuel

Entrée de SGBDutilisée pourSQL

Entrée de SGBDutilisée pour ODBC

datetime DT DateTimeFormat OdbcDateTimeFormat

timestamp TS DateTimeFormat OdbcDateTimeFormat

date D DateFormat OdbcDateFormat

time T TimeFormat OdbcTimeFormat

Si vous souhaitez personnaliser le format de date et d'heure pour votregénération de données de test, vous devez vérifier le type de données descolonnes dans votre SGBD, puis trouver le type de données conceptuelcorrespondant afin de savoir quelle entrée personnaliser dans votre SGBD.Par exemple, si les colonnes utilisent les données Date & heure dans votremodèle, vous devez personnaliser l'entrée DateTimeFormat dans votreSGBD.

Le format par défaut pour la date et l'heure est le suivant :

♦ SQL: 'yyyy-mm-dd HH:MM:SS'

♦ ODBC : {ts 'yyy-mm-dd HH:MM:SS'}

Dans lequel :

Format Description

yyyy Année sur quatre chiffres

yy Année sur deux chiffres

mm Mois

dd Jour

HH Heure

Page 77: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 67

Format Description

MM Minute

SS Seconde

Par exemple, vous pouvez définir la valeur suivante pour l'entréeDateTimeFormat pour SQL : aa-mm-dd HH:MM. Pour ODBC, cette entréedoit avoir la valeur suivante : {ts 'yy-mm-dd HH:MM'}.

File

La catégorie File contient des entrées qui définissent le format du script.

Header

Texte d'en-tête pour un script de génération de base de données.

Footer

Texte de fin pour un script de génération de base de données.

Page 78: advanfr.pdf

Catégorie SQL

68 PowerAMC

EnableMultiFile

Multi-script admis. Cette variable agit sur la disponibilité de la case Un seulfichier dans la boîte de dialogue de génération de base de données, la boîtede dialogue de triggers et de procédures ou la boîte de dialogue demodification de base de données.

Valeur Résultat

Yes La case à cocher Un seul fichier est disponible. Si vous décochez cettecase, un script est créé pour chaque table, et un script général récapituletoutes les entrées de script de table. Chaque script a le nom de la tableet le suffixe défini dans la variable TableExt. Si vous cochez cette case,un seul script global inclut tous les scripts.Le script général a comme suffixe de nom de fichier celui décrit dans lavariable de SGBD ScriptExt, et son nom est personnalisable dans lazone Nom de fichier des boîtes de dialogue de génération ou demodification. Les noms par défaut sont CREBAS pour la génération debase de données, CRETRG pour la génération des triggers et lesprocédures stockées, et ALTER pour la modification de base dedonnées

No La case à cocher Un seul fichier est grisée, et un seul script inclut toutesles commandes.Le suffixe de nom de fichier est décrit dans la variable ScriptExt, et sonnom est personnalisable dans la zone Nom de fichier des boîtes dedialogue de génération ou de modification. Les noms par défaut sontCREBAS pour la génération de base de données, CRETRG pour lagénération des triggers et les procédures stockées, et ALTER pour lamodification de base de données

Pour plus d'informations sur les variables utilisées avec PowerAMC,reportez-vous à la section Variables de MPD.

EnableMultiFile = YES

ScriptExt

La variable ScriptExt définit le suffixe de script par défaut lorsque vousgénérez une base de données ou la modifiez pour la première fois.

ScriptExt = sql

Exemple

Exemple

Page 79: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 69

TableExt

Si vous ne cochez pas la case Un seul fichier lorsque vous générez une basede données, ou lorsque vous modifiez une base de données, un script estgénéré pour chaque table, avec le suffixe de nom de fichier défini dans lavariable TableExt.

TableExt = sql

Voir aussi EnableMultiFile.

StartCommand

Instruction d'exécution d'un script. Ce paramètre correspond à la variable%STARTCMD%. La valeur de cette variable dépend de ce paramètre.L'instruction de début correspond à l'instruction utilisée par la base dedonnées cible pour exécuter un script SQL.

Le contenu de cette variable est utilisé dans le fichier d'en-tête pour unegénération portant sur plusieurs fichiers. Elle est utilisée pour appeler tous lesautres fichiers générés depuis le fichier d'en-tête.

Dans Sybase AS Enterprise 11.x :

StartCommand = isql %NAMESCRIPT%

Usage1

Applicable lorsque vous utilisez un script unique.

S'affiche à la fin de la génération dans la fenêtre Résultats.(1) Start the SQL interpreter: ISQL(2) Open the script %NAMESCRIPT%(3) Execute the script

Usage2

Applicable lorsque vous utilisez plusieurs scripts.

S'affiche à la fin de la génération dans la fenêtre Résultats.(1) Start the SQL interpreter: ISQL(2) Open one script from the directory %PATHSCRIPT%(3) Execute this script

Exemple

Exemple

Exemple

Exemple

Page 80: advanfr.pdf

Catégorie SQL

70 PowerAMC

TriggerExt

Variable qui définit le suffixe du script principal lorsque vous générez destriggers et des procédures stockées pour la première fois.

TriggerExt = trg

TrgUsage1

Applicable lorsque vous utilisez un script unique pour la génération destriggers et des procédures.

S'affiche à la fin de la génération dans la fenêtre Résultats.(1) Start the SQL interpreter: ISQL(2) Select the item "Options" of the menu "Command"(3) Change "Command Delimiter" to /(4) Open the script %NAMESCRIPT% from the directory%PATHSCRIPT%(5) Execute the script(6) Restore "Command Delimiter" to ;

TrgUsage2

Applicable lorsque vous utilisez plusieurs scripts pour la génération destriggers et procédures.

S'affiche à la fin de la génération dans la fenêtre Résultats.(1) Start the SQL interpreter: ISQL(2) Select the item "Options" of the menu "Command"(3) Change "Command Delimiter" to /(4) Open one script from the directory %PATHSCRIPT%(5) Execute the script(6) Restore "Command Delimiter" to ;

Exemple

Exemple

Exemple

Page 81: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 71

TrgHeader

Script d'en-tête pour la génération des triggers et procédures.

Dans Oracle 8 :

(1) Start the SQL interpreter: ISQL(2) Select the item "Options" of the menu "Command"Integrity package declarationcreate or replace package IntegrityPackage AS procedure InitNestLevel; function GetNestLevel return number; procedure NextNestLevel; procedure PreviousNestLevel; end IntegrityPackage;/-- Integrity package definitioncreate or replace package body IntegrityPackage AS NestLevel number;

-- Procedure to initialize the trigger nest level procedure InitNestLevel is begin NestLevel := 0; end;

-- Function to return the trigger nest level function GetNestLevel return number is begin if NestLevel is null then NestLevel := 0; end if; return(NestLevel); end;

-- Procedure to increase the trigger nest level procedure NextNestLevel is begin if NestLevel is null then NestLevel := 0; end if; NestLevel := NestLevel + 1; end;

-- Procedure to decrease the trigger nest level procedure PreviousNestLevel is begin NestLevel := NestLevel - 1; end;

end IntegrityPackage;

Exemple

Page 82: advanfr.pdf

Catégorie SQL

72 PowerAMC

TrgFooter

Texte de fin pour un script (génération de triggers et de procédures).

AlterHeader

Texte d'en-tête pour un script (modification de base de données).

AlterFooter

Texte de fin pour un script (modification de base de données).

Keywords

La catégorie Keywords contient des mots clés et des valeurs qui sontréservées pour des tâches spéciales et qui ne peuvent pas être utiliséescomme noms ou valeurs de variable.

ReservedWord

Mots réservés.

Si un mot réservé est utilisé comme code d'objet, il est placé entreapostrophes lors de la génération (en utilisant les apostrophes spécifiés dansSGBD→ Script → SQL → Syntax → Quote)

Dans Adaptive Server Anywhere 6 :TABLECREATEDELETEWHENEVER

ReservedDefault

Valeurs par défaut réservées.

Si un mot réservé est saisi dans une valeur par défaut, la valeur ne sera pasplacée entre apostrophes, elle sera utilisée comme valeur par défaut pour lescolonnes.

Dans Adaptive Server Anywhere 6, USER est une valeur par défaut réservée:Create table CUSTOMER (Username varchar(30) default USER,)

Exemple

Exemple

Page 83: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 73

GroupFunc

Liste de fonctions SQL à utiliser avec des mots clés de regroupement.

Utilisé dans l'éditeur SQL (views) pour proposer une liste de fonctionsdisponibles afin d'aider la saisie de code SQL. Ces fonctions sont les mêmesque celles disponibles dans le SGBD.

avg()count()max()min()

NumberFunc

Liste de fonctions SQL à utiliser sur les nombres.

Utilisé dans l'éditeur SQL (views) pour proposer une liste de fonctionsdisponibles afin d'aider la saisie de code SQL. Ces fonctions sont les mêmesque celles disponibles dans le SGBD.

abs()acos()asin()atan()

CharFunc

Liste de fonctions SQL pour les caractères et les chaînes.

Utilisé dans l'éditeur SQL (views) pour proposer une liste de fonctionsdisponibles afin d'aider la saisie de code SQL. Ces fonctions sont les mêmesque celles disponibles dans le SGBD.

ascii()char()charindex()char_length()difference()lower()

DateFunc

Liste de fonctions SQL pour les dates.

Utilisé dans l'éditeur SQL (views) pour proposer une liste de fonctionsdisponibles afin d'aider la saisie de code SQL. Ces fonctions sont les mêmesque celles disponibles dans le SGBD.

Exemple

Exemple

Exemple

Page 84: advanfr.pdf

Catégorie SQL

74 PowerAMC

dateadd()datediff()datename()

ConvertFunc

Liste de fonctions SQL à utiliser pour convertir des valeurs entre hex etinteger et pour gérer les chaînes.

Utilisé dans l'éditeur SQL (views) pour proposer une liste de fonctionsdisponibles afin d'aider la saisie de code SQL. Ces fonctions sont les mêmesque celles disponibles dans le SGBD.

convert()hextoint()inttohex()

OtherFunc

Liste de fonctions SQL pour l'estimation, la concaténation et les vérificationsSQL.

Utilisé dans l'éditeur SQL (views) pour proposer une liste de fonctionsdisponibles afin d'aider la saisie de code SQL. Ces fonctions sont les mêmesque celles disponibles dans le SGBD.

db_id()db_name()host_id()

ListOperators

Liste d'opérateurs SQL.

Utilisé dans l'éditeur SQL (views) pour proposer une liste de fonctionsdisponibles afin d'aider la saisie de code SQL. Ces fonctions sont les mêmesque celles disponibles dans le SGBD.

=!=not likenot in

Commit

Instruction de validation de la transaction par ODBC.

Exemple

Exemples

Exemple

Exemple

Page 85: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 75

Catégorie ObjectsLa catégorie Objects définit chaque type d'objet qui est pris en charge par ladéfinition de SGBD.

A la racine de la catégorie Objects, les deux entrées suivantes sont définiespour tous les objets du SGBD :

♦ EnableOption : Valeur booléenne qui spécifie si les options physiquessont admises pour les objets de SGBD

♦ MaxConstLen : Définit la valeur pour la longueur de nom de contraintepour les tables, les colonnes, les clés primaires et les clés étrangères

Entrées communes aux différents objets

Les entrées suivantes sont communes à de nombreux objets dans la définitionde SGBD :

Enable

Instruction permettant déterminer si un objet est admis.

Enable = Yes

Maxlen

Instruction permettant de définir la longueur maximale de code pour un objet.Cette valeur est mise en oeuvre lors de la vérification de modèle et produitune erreur si le code dépasse la valeur définie. Le code d'objet est égalementtronqué au moment de la génération.

MaxLen = 128

Create

Instruction permettant de créer un objet (génération et reverse engineering).

create table %TABLE%

Exemple

Exemple

Exemple

Page 86: advanfr.pdf

Catégorie Objects

76 PowerAMC

Add

Instruction permettant d'ajouter un objet dans l'instruction de création d'unautre objet (génération et reverse engineering).

Par exemple, Table create avec l'appel Column add.

Drop

Instruction permettant de supprimer un objet (génération uniquement).

Dans Sybase Adaptive Server Anywhere 6 :if exists(select 1 from sys.systable wheretable_name='%TABLE%' and table_type='BASE'[%QUALIFIER%?and creator=user_id('%OWNER%')]) then drop table [%QUALIFIER%]%TABLE%end if

BeforeCreate, BeforeDrop, BeforeModify

Instructions étendues exécutées avant les principales instructions Create,Drop ou Modify.

Pour plus d'informations sur les instructions étendues, reportez-vous àla section Génération de script.

AfterCreate, AfterDrop, AfterModify

Instructions étendues exécutées après les principales instructions Create,Drop ou Modify.

Pour plus d'informations sur les instructions étendues, reportez-vous àla section Génération de script.

Options

Options physiques portant sur la création d'un objet (génération et reverseengineering).

Dans Sybase Adaptive Server Anywhere 6 :

in %s : category=tablespace

Exemple

Exemple

Page 87: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 77

DefOptions

Valeurs par défaut pour les options physiques d'objet qui seront appliquées àtous les objets. Ces valeurs doivent respecter la syntaxe SQL.

Par exemple :

in default_tablespace

SqlListQuery

Requête SQL permettant de répertorier les objets dans une boîte de dialoguede reverse engineering.

La requête est exécutée pour renseigner les variables d'en-tête et créer desobjets en mémoire.

{OWNER, TABLE, COLUMN, DTTPCODE, LENGTH, SIZE, PREC,NOTNULL (N='NOT NULL', *=NULL), DEFAULT, COMMENT}

[%ISODBCUSER% ?SELECT '%SCHEMA%', C.TABLE_NAME, C.COLUMN_NAME,C.DATA_TYPE, C.DATA_PRECISION, C.DATA_LENGTH,C.DATA_SCALE, C.NULLABLE, C.DATA_DEFAULT, M.COMMENTSFROM SYS.USER_COL_COMMENTS M, SYS.USER_TAB_COLUMNS CWHERE M.TABLE_NAME = C.TABLE_NAME AND M.COLUMN_NAME =C.COLUMN_NAME [AND C.TABLE_NAME='%TABLE%']ORDER BY C.TABLE_NAME, C.COLUMN_ID:SELECT C.OWNER, C.TABLE_NAME, C.COLUMN_NAME,C.DATA_TYPE, C.DATA_PRECISION, C.DATA_LENGTH,C.DATA_SCALE, C.NULLABLE, C.DATA_DEFAULT, M.COMMENTSFROM SYS.ALL_COL_COMMENTS M, SYS.ALL_TAB_COLUMNS CWHERE M.OWNER = C.OWNER AND M.TABLE_NAME = C.TABLE_NAMEAND M.COLUMN_NAME = C.COLUMN_NAME [AND C.OWNER='%SCHEMA%'] [ANDC.TABLE_NAME='%TABLE%']ORDER BY C.OWNER, C.TABLE_NAME, C.COLUMN_ID]

Exemple

Page 88: advanfr.pdf

Catégorie Objects

78 PowerAMC

SqlAttrQuery

Requête SQL permettant d'extraire des information supplémentaires sur lesobjets récupérés via reverse engineering par SQLListQuery.

Dans Oracle 8 :{OWNER, TABLE, COMMENT}

[%ISODBCUSER% ?SELECT '%SCHEMA%', TABLE_NAME, COMMENTSFROM SYS.USER_TAB_COMMENTSWHERE COMMENTS IS NOT NULL [AND TABLE_NAME='%TABLE%']ORDER BY TABLE_NAME:SELECT OWNER, TABLE_NAME, COMMENTSFROM SYS.ALL_TAB_COMMENTSWHERE COMMENTS IS NOT NULL [AND OWNER='%SCHEMA%'] [ANDTABLE_NAME='%TABLE%']ORDER BY OWNER, TABLE_NAME]

Voir aussi SqlListQuery.

SqlOptsQuery

Requête SQL permettant d'extraire les options physiques d'objet sur les objetsrécupérés via reverse engineering par SqlListQuery.

Le résultat de la requête va renseigner la variable %OPTIONS% et doitrespecter la syntaxe SQL.

Dans Sybase Adaptive Server Anywhere 6 :{OWNER, TABLE, OPTIONS}select su.USER_NAME, st.TABLE_NAME, 'in '+ dbspace_namefrom SYS.SYSUSERPERMS su, SYS.SYSTABLE st, SYS.SYSFILEsfwherest.file_id = sf.file_id and dbspace_name <> 'SYSTEM' and[%TABLE% ? TABLE_NAME = '%TABLE%' and] [%SCHEMA% ?su.USER_NAME = '%SCHEMA%' and]st.CREATOR = su.USER_ID

Voir aussi SqlListQuery.

SqlFragQuery

Pour plus d'informations, reportez-vous à la section Mécanismed'extension pour les requêtes de reverse engineering ODBC.

Exemple

Exemple

Page 89: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 79

ModifiableAttributes

Liste des attributs étendus qui seront pris en compte dans la boîte de dialoguede fusion lors de la synchronisation de base de données.

Pour plus d'informations, reportez-vous à la section Génération descript.

Dans Sybase ASE 12.5

ExtTablePartition

ReversedStatements

Liste des instructions qui vont faire l'objet d'un reverse engineering.

Pour plus d'informations, reportez-vous à la section Reverseengineering de script.

Dans Sybase ASE 12.5 :

CreatePartition

Table

La catégorie Table contient des entrées qui définissent des paramètresassociés à la table.

Entrées communes pour Table

Vous pouvez définir des valeurs pour les entrées communes suivantes pourl'objet Table dans la définition de SGBD :

Entrée Exemple

Enable Dans Sybase Adaptive Server Anywhere 6 :

Enable = Yes

Maxlen Dans Sybase Adaptive Server Anywhere 6 :

Maxlen = 128

Create Dans Sybase Adaptive Server Anywhere 6 :

create table [%QUALIFIER%]%TABLE%(%TABLDEFN%)[%OPTIONS%]

Exemple

Exemple

Page 90: advanfr.pdf

Catégorie Objects

80 PowerAMC

Entrée Exemple

Drop Dans Sybase Adaptive Server Enterprise 11 :

if exists (select 1from sysobjectswhere id = object_id('[%QUALIFIER%]%TABLE%')and type = 'U')drop table [%QUALIFIER%]%TABLE%

Options Dans Sybase Adaptive Server Enterprise 11 :

with max_rows_per_page = %d : default=0on %s : category=storage

DefOptions Cette entrée est fréquemment vide. Elle définit les optionsqui sont appliquées à toutes les tables, par exemplewith_max_row_per_page = 128

SqlListQuery Dans Oracle 7 :

{OWNER, TABLE}selectowner,table_namefromsys.all_tableswhere 1=1[and owner='%SCHEMA%'][and table_name='%TABLE%']order byowner,table_name

SqlAttrQuery Dans Oracle 7 :

{OWNER, TABLE, COMMENT}

selectowner,table_name,commentsfromsys.all_tab_commentswherecomments is not null[and owner='%SCHEMA%'][and table_name='%TABLE%']

SqlOptsQuery Dans Sybase Adaptive Server Anywhere 6 :

{OWNER, TABLE, OPTIONS}select su.USER_NAME, st.TABLE_NAME, 'in '+

dbspace_namefrom SYS.SYSUSERPERMS su, SYS.SYSTABLE st,

SYS.SYSFILE sfwherest.file_id = sf.file_id and dbspace_name <> 'SYSTEM'

and[%TABLE% ? TABLE_NAME = '%TABLE%' and]

[%SCHEMA% ? su.USER_NAME = '%SCHEMA%'and]

st.CREATOR = su.USER_ID

Page 91: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 81

Entrée Exemple

SqlFragQuery Dans Oracle 9I :

{VAR1NAME, VAR1VALUE}

select 'HighVal'||tp.partition_position, tp.high_valuefrom all_tab_partitions tpwhere 1=1[ and tp.table_owner=%.q:OWNER% ][ and tp.table_name=%.q:TABLE%]

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Dans une colonne, si la variable par défaut est de type texte ou chaîne, larequête doit extraire la valeur de la variable par défaut entre apostrophes. Laplupart des SGBD ajoutent ces apostrophes à la valeur de la variable pardéfaut. Si le SGBD que vous utilisez n'ajoute pas les apostrophesautomatiquement, vous devez les spécifier dans les différentes requêtes àl'aide de la variable par défaut.

Par exemple, dans IBM DB2 UDB 8 pour OS/390, la ligne suivante a étéajoutée dans SqlListQuery afin d'ajouter des apostrophes à la valeur de lavariable par défaut :

...

case(default) when '1' then '''' concat defaultvalue concat '''' when '5'then '''' concat defaultvalue concat '''' else defaultvalue end,

...

Variable par défaut

Page 92: advanfr.pdf

Catégorie Objects

82 PowerAMC

Permission

Permissions disponibles pour les tables. La première colonne affiche le nomSQL de la permission (SELECT, par exemple). La seconde colonne est lenom abrégé qui s'affiche dans le titre des colonnes de grille.

Dans Sybase ASE 12.5 :SELECT / SelINSER / InsDELETE / DelUPDATE / UpdREFERENCES / Ref

ConstName

Template de nom de contrainte pour un paramètre de vérification de table.

Utilisé dans la feuille de propriétés de table pour renseigner le nom decontrainte.

Dans Sybase Adaptive Server Anywhere 6 :

CKT_%.U26:TABLE%

TableComment

Instruction permettant d'ajouter un commentaire de table. Le commentaire detable est une instruction SQL qui n'est pas prise en charge par tous les SGBD.Si TableComment est vide, la case Commentaire dans la page Tables &vues de la boîte de dialogue de génération est grisée et non disponible.

Utilisé pour la génération et pour les reverse engineering.

Dans Sybase SQL Anywhere 5.5 :

TableComment = comment on table %OWNERPREFIX%%TABLE% is'%COMMENT%'

La variable %TABLE% est le nom de la table défini dans la boîte dedialogue Liste des tables, ou dans la feuille de propriétés de la table. Lavariable %COMMENT% est le commentaire défini dans la zoneCommentaire de la feuille de propriétés de la table.

Exemple

Exemple

Exemple

Page 93: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 83

Rename

Instruction permettant de renommer une table. Si Rename est vide, leprocessus de modification de base de données supprime les contraintes de cléétrangère, crée une nouvelle table avec le nouveau nom, insère les lignes del'ancienne table dans la nouvelle table, et crée les index et contraintes sur lanouvelle table à l'aide de tables temporaires.

Utilisé dans le script de modification de base de données lorsqu'une table aété renommée.

Dans Sybase Adaptive Server Enterprise 11 :

sp_rename %OLDTABL%, %NEWTABL%

La variable %OLDTABL% est le code de la table avant qu'elle ne soitrenommée. La variable %NEWTABL% est le nouveau code de la table.

AlterTableHeader

En-tête de l'instruction alter table. Tout ce qui est ajouté dans cetteentrée est ajouté avant l'instruction alter table. Vous pouvez placer unen-tête alter table dans vos scripts pour les documenter ou dans le cadre d'unelogique d'initialisation.

AlterTableHeader = /* Table name: %TABLE% */

AlterTableFooter

Fin de Alter table. Tout ce qui est ajouté dans cette entrée est ajouté aprèsl'instruction alter table et avant le caractère de fin.

AlterTableFooter = /* End of alter statement */

DefineTableCheck

Instruction permettant de personnaliser le script de contraintes de table(vérifications) au sein d'une instruction create table.

check (%CONSTRAINT%)

AddTableCheck

Instruction permettant de personnaliser le script pour modifier les contraintesde table au sein d'une instruction alter table.

alter table [%QUALIFIER%]%TABLE% add check (%CONSTRAINT%)

Exemple

Exemple

Exemple

Exemple

Exemple

Page 94: advanfr.pdf

Catégorie Objects

84 PowerAMC

DropTableCheck

Instruction permettant de supprimer une vérification de table dans uneinstruction alter table.

alter table [%QUALIFIER%]%TABLE% delete check

SqlChckQuery

Requête SQL permettant de procéder au reverse engineering de vérificationsde table.

Dans Sybase Adaptive Server Anywhere 6 :{OWNER, TABLE, CONSTRAINT}SELECT U.USER_NAME, T.TABLE_NAME, T.VIEW_DEFFROM SYSUSERPERMS U, SYSTABLE TWHERE [U.USER_NAME = '%OWNER%' AND] [T.TABLE_NAME ='%TABLE%' AND]T.CREATOR = U.USER_ID AND T.TABLE_TYPE = 'BASE' ANDT.VIEW_DEF IS NOT NULL

SqlPermQuery

Requête SQL permettant de procéder au reverse engineering de permissionsaccordées sur des tables.

Dans Sybase Adaptive Server Enterprise 12.5 :{ select u1.name grantee,case when (s.action = 193) then 'SELECT' when (s.action = 195) then 'INSERT' when (s.action = 196) then 'DELETE' when (s.action = 197) then 'UPDATE'end +case when (s.protecttype = 0) then '+' when (s.protecttype = 1) then '' when (s.protecttype = 2) then '-'end|| ','from sysprotects s, sysusers u, sysusers u1, sysobjectsowhere o.name = %.q:TABLE% and o.uid = u.uid and s.id = o.id and u1.uid = s.uid

Exemple

Exemple

Exemple

Page 95: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 85

SqlListRefrTables

Requête SQL utilisée pour répertorier les tables référencées par une table.

Dans Oracle 9i :{OWNER, TABLE, POWNER, PARENT}

select c.owner, c.table_name, r.owner, r.table_namefrom sys.all_constraints c, sys.all_constraints rwhere (c.constraint_type = 'R' and c.r_constraint_name =r.constraint_name and c.r_owner = r.owner)[ and c.owner = %.q:SCHEMA%][ and c.table_name = %.q:TABLE%]union select c.owner, c.table_name, r.owner, r.table_namefrom sys.all_constraints c, sys.all_constraints rwhere (r.constraint_type = 'R' and r.r_constraint_name =c.constraint_name and r.r_owner = c.owner)[ and c.owner = %.q:SCHEMA%][ and c.table_name = %.q:TABLE%]order by 1, 2, 3, 4

UniqConstraintName

Interdit l'utilisation du même nom pour un index et une contrainte sur unemême table.

Valeur Résultat

Yes Le nom de contrainte et le nom d'index de la table doivent êtredifférents. Pris en compte pendant la vérification du modèle

No Le nom de contrainte et le nom d'index de la table peuvent êtreidentiques

Exemple

Page 96: advanfr.pdf

Catégorie Objects

86 PowerAMC

Header

En-tête de table. Tout ce qui est ajouté dans cette entrée est ajouté avantl'instruction create table.

Footer

Table footer. Tout ce qui est ajouté dans cette entrée est ajouté aprèsl'instruction create table.

AllowedADT

Liste de types de données abstraits sur lesquels une table peut être basée.Vous pouvez affecter des types de données abstraits objet aux tables. La tableutilise les propriétés du type de données abstrait et les attributs du type dedonnées abstrait deviennent des colonnes de la table.

Cette liste de types de données abstraits s'affiche dans la liste déroulante Basésur dans la feuille de propriétés de la table.

Dans Oracle 8I2 :OBJECT

Dans DB2 UDB 5.x :STRUCTURED

MaxConstLen

Instruction permettant de définir la longueur maximale de nom de contrainteprise en charge par la base de données cible. Cette valeur est mise en oeuvredans la vérification de modèle et produit une erreur si le code dépasse lavaleur définie. Le nom de contrainte est également tronqué au moment de lagénération.

Longueur maximale pour les noms de contrainte :PowerAMC a une longueur maximale de 254 caractères pour les noms decontrainte. Si votre base de données prend en charge des noms decontrainte plus longs, vous devez définir les noms de contrainte de sortequ'ils se conforment à la limite de 254 caractères.

MaxConstLen = 128

Exemple

Exemple

Page 97: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 87

Column

La catégorie Column contient des entrées qui définissent les paramètresrelatifs aux colonnes.

Entrées communes pour Column

Vous pouvez définir des valeurs pour les entrées communes suivantes pourl'objet Column dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Enterprise 11)

Enable Enable = Yes

Maxlen Maxlen = 30

Create alter table [%QUALIFIER%]%TABLE%add %20:COLUMN% %30:DATATYPE%[default %DEFAULT%][%IDENTITY%?identity:%NULL%][[constraint %CONSTNAME%] check (%CONSTRAINT%)]

Add %20:COLUMN% %30:DATATYPE% [default %DEFAULT%][%IDENTITY%?identity:[%NULL%][%NOTNULL%]][[constraint %CONSTNAME%] check (%CONSTRAINT%)]

Drop Dans Sybase Adaptive Server Anywhere 6 :

alter table [%QUALIFIER%]%TABLE%delete %COLUMN%

DefOptions Cette entrée est souvent vide. Elle définit des options qui sontappliquées aux colonnes

Page 98: advanfr.pdf

Catégorie Objects

88 PowerAMC

Entrée Exemple (Sybase Adaptive Server Enterprise 11)

SqlListQuery Dans Oracle 8I2 :

{OWNER, TABLE, COLUMN, DTTPCODE, LENGTH, SIZE,PREC, NOTNULL (N='NOT NULL', *=NULL), DEFAULT,COMMENT}[%ISODBCUSER% ?SELECT '%SCHEMA%', C.TABLE_NAME,C.COLUMN_NAME, C.DATA_TYPE, C.DATA_PRECISION,C.DATA_LENGTH, C.DATA_SCALE, C.NULLABLE,C.DATA_DEFAULT, M.COMMENTSFROM SYS.USER_COL_COMMENTS M,SYS.USER_TAB_COLUMNS CWHERE M.TABLE_NAME = C.TABLE_NAME ANDM.COLUMN_NAME = C.COLUMN_NAME[AND C.TABLE_NAME='%TABLE%']ORDER BY C.TABLE_NAME, C.COLUMN_ID:SELECT C.OWNER, C.TABLE_NAME, C.COLUMN_NAME,C.DATA_TYPE, C.DATA_PRECISION, C.DATA_LENGTH,C.DATA_SCALE, C.NULLABLE, C.DATA_DEFAULT,M.COMMENTSFROM SYS.ALL_COL_COMMENTS M,SYS.ALL_TAB_COLUMNS CWHERE M.OWNER = C.OWNER AND M.TABLE_NAME =C.TABLE_NAME AND M.COLUMN_NAME =C.COLUMN_NAME [AND C.OWNER='%SCHEMA%'] [ANDC.TABLE_NAME='%TABLE%']ORDER BY C.OWNER, C.TABLE_NAME, C.COLUMN_ID

SqlAttrQuery Dans Oracle 7 :

{OWNER, TABLE, COLUMN, COMMENT}

select c.owner, c.table_name, c.column_name, m.commentsfrom sys.all_col_comments m, sys.all_tab_columns cwhere m.owner=c.owner and m.table_name=c.table_name and m.column_name=c.column_name [and c.owner='%SCHEMA%'] [and c.table_name='%TABLE%'] [and c.column_name='%COLUMN%']

SqlOptsQuery

SqlFragQuery

Page 99: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 89

Entrée Exemple (Sybase Adaptive Server Enterprise 11)

Options Dans DB2 UDB 6.x common server :

<logged> %s : list=logged|not logged, default=logged<compact> %s : list=compact|not compact, default=notcompactlinktype url : composite=yes{ no link control file link control : composite=yes { mode db2options integrity %s : default=all read permission %s : list=fs|db, default=fs write permission %s : list=fs|blocked, default=fs recovery %s : list=yes|no, default=no on unlink %s : list=restore|delete, default=restore }}

ModifiableAttributes

Liste des attributs étendus qui seront pris en compte dans la boîtede dialogue de fusion lors de la synchronisation de base dedonnées

ReversedStatements

Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Permission

Permissions disponibles pour les colonnes. La première colonne affiche lenom SQL de la permission (SELECT, par exemple). La seconde colonne estle nom abrégé qui s'affiche dans le titre des colonnes de grille.

Dans Sybase ASA 8 :REFERENCES / ReferencesSELECT / SelectUPDATE / Update

Exemple

Page 100: advanfr.pdf

Catégorie Objects

90 PowerAMC

AltEnableAddColnChk

Indique si une contrainte de vérification de colonne, construite à partir desparamètres de contrôle de la colonne, peut ou non être ajoutée dans une tableà l'aide de l'instruction alter table.

Valeur Résultat

Yes AddColnChck peut être utilisé pour modifier la contrainte devérification de colonne dans une instruction alter table

No Le processus de modification de la base de données procède commesuit :

Supprime les contraintes de clé étrangèreCrée une table temporaire avec la même structure et les mêmes

colonnes que la table avant l'ajout de la contrainte de vérification decolonne

Insère la ligne depuis l'ancienne table dans la nouvelle table temporaireSupprime la table actuelleCrée une nouvelle table avec la nouvelle contrainte de vérification de

colonneInsère la ligne depuis la table temporaire dans la nouvelle tableCrée les index et contraintes sur la nouvelle table

AltEnableAddColnChk = NO

Voir aussi AddColnChck.

CheckNull

Vérifie si une colonne peut être NULL.

Valeur Résultat

Yes La vérification de modèle vérifie si les colonnes peuvent être NULL

No Aucune vérification sur la valeur NULL pour les colonnes

Exemple

Page 101: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 91

EnableBindRule

Permet ou interdit la liaison d'une règle de gestion à une colonne pour lesparamètres de vérification.

Valeur Résultat

Yes Les entrées Create et Bind sont générées pour l'objet Rule

No La vérification est générée dans la commande Add de colonne

EnableBindRule = No

EnableComputedColn

Instruction permettant l'utilisation de colonnes calculées.

Valeur Résultat

Yes Colonnes calculées admises

No Colonnes calculées non admises

EnableDefault

Permet d'utiliser des valeurs prédéfinies.

Valeur Résultat

Yes La valeur par défaut est générée pour les colonnes lorsque la valeur pardéfaut est définie. La valeur par défaut peut être définie dans lesparamètres de contrôle pour chaque colonne. La variable%DEFAULT% contiendra la valeur par défaut

La case Valeur par défaut pour les colonnes doit être cochée dans lapage Tables & vues de la boîte de dialogue de génération

No La case Valeur par défaut pour les colonnes est grisée dans la pageTables & vues de la boîte de dialogue de génération. La valeur pardéfaut ne peut pas être générée

Exemple

Page 102: advanfr.pdf

Catégorie Objects

92 PowerAMC

Dans SQL Anywhere 5.5 :

EnableDefault = YES

La valeur par défaut pour la colonne employee EMPFUNC est TechnicalEngineer, le script généré est le suivant :

create table EMPLOYEE( EMPNUM numeric(5) not null, EMP_EMPNUM numeric(5) , DIVNUM numeric(5) not null, EMPFNAM char(30) , EMPLNAM char(30) not null, EMPFUNC char(30) default 'Technical Engineer', EMPSAL numeric(8,2) , primary key (EMPNUM));

EnableIdentity

Prise en charge de l'entrée de mot clé Identity. Les colonnes Identity sont descompteurs séquentiels gérés par la base de données (par exemple, Sybase etMicrosoft SQL Server).

Valeur Résultat

Yes Active la case à cocher Identity dans la feuille de propriétés de lacolonne

No La case à cocher Identity ne s'affiche pas dans la feuille de propriétés dela colonne

Lorsque la case Identity est cochée, le mot clé Identity est généré dans lescript après le type de données de la colonne. Une colonne Identity ne peutpas être NULL : lorsque vous cochez la case Identity, la case Obligatoire estautomatiquement cochée.

Exemple

Page 103: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 93

PowerAMC s'assure que :

♦ Une seule colonne Identity peut être définie par table : lorsque Identityest défini pour une colonne, les autres colonnes de la table ont leur case àcocher Identity grisée et non disponible

♦ Une clé étrangère ne peut pas être une colonne Identity : la case à cocherest grisée et non disponible

♦ Identity n'est pris en charge que pour certains types de données : lorsquela case Identity est cochée pour une colonne dont le type de donnéesn'est pas compatible avec Identity, le type de données estautomatiquement changé en numeric. Lorsque le type de données d'unecolonne Identity est remplacé par un type de données qui necorrespondant à Identity, PowerAMC affiche un message d'erreur.

Dans Sybase AS Enterprise 11.x :

EnableIdentity=YES

La colonne employee number est une colonne Identity, le script suivant estgénéré :

create table EMPLOYEE( EMPNUM numeric(5) identity, EMP_EMPNUM numeric(5) null , DIVNUM numeric(5) not null, EMPFNAM char(30) null , EMPLNAM char(30) not null, EMPFUNC char(30) null , EMPSAL numeric(8,2) null , constraint PK_EMPLOYEE primary key (EMPNUM))go

Changement du contenu de IDENTITYLors de la génération, la variable Identity contient "identity", mais vouspouvez facilement changer le mot clé Identity à l'aide de la syntaxesuivante lorsque cela est nécessaire :

[%IDENTITY%?new identity keyword]

Exemple

Page 104: advanfr.pdf

Catégorie Objects

94 PowerAMC

EnableNull

Permet l'utilisation du mot clé NULL.

ValeurBase de donnéescible Résultat

Yes Supports NULLkeyword

Les colonnes non signalées commeObligatoire dans le MPD sont générées avecle mot clé NULL après le type de données

No Does not supportNULL keyword

Les colonnes non signalées commeObligatoire dans le MPD sont générées sansle mot clé NULL après le type de données

Dans Sybase AS Enterprise 11.x :

EnableNull = YES

CUSACT, CUSTEL, CUSFAX ne sont pas des colonnes obligatoires, lemot clé null est défini en regard de la colonne dans le script createtable.

create table CUSTOMER( CUSNUM numeric(5) not null, CUSNAME char(30) not null, CUSADDR char(80) not null, CUSACT char(80) null , CUSTEL char(12) null , CUSFAX char(12) null , constraint PK_CUSTOMER primary key (CUSNUM))go

Si

EnableNull = NO

Le script SQL se présente comme suit :create table CUSTOMER( CUSNUM numeric(5) not null, CUSNAME char(30) not null, CUSADDR char(80) not null, CUSACT char(80) , CUSTEL char(12) , CUSFAX char(12) , constraint PK_CUSTOMER primary key (CUSNUM))go

Exemple

Page 105: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 95

EnableNotNullWithDflt

Instruction permettant d'utiliser Not null with default.

Valeur Résultat

Yes Lorsque vous activez With Default dans la feuille de propriétés d'unecolonne, une valeur par défaut est affectée à une colonne lorsqu'unevaleur Null est insérée

No L'option With Default dans une feuille de propriétés de colonne estcachée

Dans IBM DB2 :

EnableNotNullWithDflt = YES

Bind

Instruction permettant de lier une règle à une colonne.

Dans Sybase Adaptive Server Enterprise 12 :

sp_bindrule %RULE%, %TABLE%.%COLUMN%

AddColnChck

Instruction permettant de personnaliser le script pour modifier des contraintesde colonne au sein d'une instruction alter table.

Dans Oracle 9i :alter table [%QUALIFIER%]%TABLE% modify (%COLUMN% %DATATYPE% constraint %CONSTNAME%check (%CONSTRAINT%));

ConstName

Template de nom de contrainte pour un paramètre de contrôle de colonne.

Utilisé dans les feuilles de propriétés de colonne pour renseigner les noms decontrainte.

CKC_%.U17:COLUMN%_%.U8:TABLE%

Exemple

Exemple

Exemple

Exemple

Page 106: advanfr.pdf

Catégorie Objects

96 PowerAMC

ColumnComment

Instruction permettant d'ajouter un commentaire à une colonne.

Utilisé pour la génération et pour le reverse engineering.

comment on column [%QUALIFIER%]%TABLE%.%COLUMN% is%.q:COMMENT%

DefineColnCheck

Instruction permettant de personnaliser le script des contraintes de colonne(vérifications) au sein d'une instruction create table. Cette instructionest appelée si les instructions create, add, ou alter contiennent%CONSTDEFN%.

[constraint %CONSTNAME%] check (%CONSTRAINT%)

DropColnChck

Instruction permettant de supprimer une vérification de colonne dans uneinstruction alter table. Cette instruction est utilisée dans le script demodification de base de données lorsque les paramètres de contrôle ont étésupprimés d'une colonne.

Si DropColnChck est vide, la procédure de modification d'une base dedonnées :

♦ Supprime les contraintes de clé étrangère

♦ Crée une table temporaire avec la même structure et les mêmes colonnesque la table avant la suppression du paramètre de contrôle

♦ Insère les lignes depuis l'ancienne table dans la nouvelle table temporaire

♦ Supprime la table actuelle

♦ Crée une nouvelle table sans paramètre de contrôle sur la colonnemodifiée

♦ Insère les lignes depuis la table temporaire dans la nouvelle table

♦ Crée les index et contraintes sur la nouvelle table

Exemple

Exemple

Page 107: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 97

Dans Sybase Adaptive Server Anywhere 6 :DropColnChck = alter table [%QUALIFIER%]%TABLE%modify %COLUMN% check null

La variable %COLUMN% est le nom de la colonne défini dans la liste descolonnes d'une table.

DropColnComp

Instruction permettant de supprimer une expression calculée de colonne dansune instruction alter table.

Dans Sybase Adaptive Server Anywhere 6 :

alter table [%QUALIFIER%]%TABLE% alter %COLUMN% drop compute

ModifyColumn

Instruction permettant de modifier une colonne. Ce paramètre est utilisé dansle script de modification de base de données lorsque la définition de lacolonne a été modifiée. L'instruction ModifyColumn définie dans ceparamètre est une instruction SQL spécifique différente de l'instructionalter table. Non pris en charge par tous les SGBD.

Dans Sybase Adaptive Server Anywhere 6 :alter table [%QUALIFIER%]%TABLE%modify %COLUMN% %DATATYPE% %NOTNULL%

ModifyColnDflt

Instruction permettant de modifier une valeur par défaut de colonne dans uneinstruction alter table. Ce paramètre est utilisé dans le script de modificationde base de données, lorsque la valeur par défaut d'une colonne a été modifiéedans la table.

Si ModifyColnDflt est vide, le processus de modification de base dedonnées :

♦ Supprime les contraintes de clé étrangère

♦ Crée une table temporaire avec la même structure et les mêmes colonnesque la table avant la modification de la valeur par défaut

♦ Insère les lignes depuis l'ancienne table dans la nouvelle table temporaire

♦ Supprime la table actuelle

Exemple

Exemple

Exemple

Page 108: advanfr.pdf

Catégorie Objects

98 PowerAMC

♦ Crée une nouvelle table avec la nouvelle valeur par défaut pour lacolonne modifiée

♦ Insère les lignes depuis la table temporaire dans la nouvelle table

♦ Créer les index et les contraintes sur la nouvelle table

Dans Sybase Adaptive Server Anywhere 6 :ModifyColnDflt = alter table [%QUALIFIER%]%TABLE%modify %COLUMN% default %DEFAULT%

La variable %COLUMN% est le nom de la colonne défini dans la feuille depropriétés de la table. La variable %DEFAULT% est la nouvelle valeur pardéfaut de la colonne modifiée.

AddColnChck

Instruction permettant de modifier une vérification de colonne dans uneinstruction alter table. Cette instruction est utilisée dans un script demodification de base de données lorsque les paramètres de contrôle d'unecolonne ont été modifiés dans la table.

AltEnableAddColnChk doit être défini à YES pour permettrel'utilisation de cette instruction.

Si AddColnChck est vide, le processus de modification de base dedonnées :

♦ Supprime les contraintes de clé étrangère

♦ Crée une table temporaire avec la même structure et les mêmes colonnesque la table avant modification des paramètres de contrôle

♦ Insère les lignes depuis l'ancienne table dans la nouvelle table temporaire

♦ Supprime la table actuelle

♦ Crée une nouvelle table avec les paramètres de contrôle pour la colonne

♦ Insère les lignes depuis la table temporaire dans la nouvelle table

♦ Crée les index et les contraintes sur la nouvelle table

Dans Sybase Adaptive Server Anywhere 6 :AddColnChck = alter table [%QUALIFIER%]%TABLE%modify %COLUMN% [default %DEFAULT%][check (%CONSTRAINT%)]

La variable %COLUMN% est le nom de la colonne définie dans la feuille depropriétés de la table. La variable % CONSTRAINT % est la contrainte devérification construite à partir du nouveau paramètre de contrôle.

Exemple

Exemple

Page 109: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 99

Voir aussi AltEnableAddColnChk.

ModifyColnNull

Instruction permettant de modifier l'état null/not null d'une colonne dans uneinstruction alter table.

Dans Oracle 7 :alter table [%QUALIFIER%]%TABLE% modify %COLUMN% %NOTNULL%

ModifyColnComp

Instruction permettant de modifier une expression calculée pour une colonnedans une instruction alter table.

Dans Sybase Adaptive Server Anywhere 6 :

alter table [%QUALIFIER%]%TABLE% alter %COLUMN% set compute (%COMPUTE%)

MaxConstLen

Instruction permettant de définir la longueur maximale de nom de contrainteprise en charge par la base de données cible. Cette valeur est mise en oeuvredans la vérification de modèle et produit une erreur si le code dépasse lavaleur définie. Le nom de contrainte est également tronqué au moment de lagénération.

Longueur maximale pour les noms de contrainte :PowerAMC a une longueur maximale de 254 caractères pour les noms decontrainte. Si votre base de données prend en charge des noms decontrainte plus longs, vous devez définir les noms de contrainte de sortequ'ils se conforment à la limite de 254 caractères.

MaxConstLen = 128

Rename

Instruction permettant de renommer une colonne dans une instruction altertable.

alter table [%QUALIFIER%]%TABLE% rename %OLDCOLUMN% to %NEWCOLUMN%

Exemple

Exemple

Exemple

Exemple

Page 110: advanfr.pdf

Catégorie Objects

100 PowerAMC

SqlChckQuery

Requête SQL permettant de procéder au reverse engineering de paramètresde contrôle d'une colonne.

Le résultat doit être conforme à la syntaxe SQL appropriée.

Dans Sybase Adaptive Server Anywhere 6 :{OWNER, TABLE, COLUMN, CONSTRAINT}SELECT SU.USER_NAME, ST.TABLE_NAME, SC.COLUMN_NAME,SC."CHECK"FROM SYSUSERPERMS SU, SYSTABLE ST, SYSCOLUMN SCWHERE [SU.USER_NAME='%OWNER%' AND][ST.TABLE_NAME='%TABLE%' AND]ST.CREATOR=SU.USER_ID AND SC.TABLE_ID=ST.TABLE_ID ANDSC."CHECK" IS NOT NULLORDER BY SU.USER_NAME, ST.TABLE_ID

SqlPermQuery

Requête SQL permettant de procéder au reverse engineering de permissionsd'objet.

Le résultat doit être conforme à la syntaxe SQL appropriée.

Dans Sybase Adaptive Server Anywhere 8 :{ GRANTEE, GRANTOR, PERMISSION}

selectu1.user_name grantee, u.user_name grantor,casewhen (p.privilege_type = 1 and p.is_grantable ='Y' )then 'SELECT+'when (p.privilege_type = 1) then 'SELECT'when (p.privilege_type = 8 and p.is_grantable ='Y' )then 'UPDATE+'when (p.privilege_type = 8) then 'UPDATE'when (p.privilege_type = 16 and p.is_grantable ='Y' )then 'REFERENCES+'when (p.privilege_type = 16) then 'REFERENCES'endpermissionfrom sysuserperm u, sysuserperm u1, syscolumn s,syscolperm p, systable twhere(t.table_name = %.q:TABLE%) and(t.table_id = p.table_id) and(s.column_name = %.q:COLUMN% ) and(s.table_id = t.table_id) and(u1.user_id = p.grantee) and(u.user_id = p.grantor)

Exemple

Exemple

Page 111: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 101

Unbind

Instruction permettant de faire en sorte qu'une règle ne soit plus liée à unecolonne.

Dans Sybase Adaptive Server Enterprise 12 :

sp_unbindrule %TABLE%.%COLUMN%, %RULE%

Index

La catégorie Index contient des entrées définissant les paramètres associés àun index.

Entrées communes pour Index

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Index object dans la définition de SGBD.

Entrée Exemple

Enable Enable = Yes

Maxlen Maxlen = 128

Create Dans Sybase ASA 8 :

create [%UNIQUE%] index %INDEX% on[%QUALIFIER%]%TABLE% (

%CIDXLIST%

)

[%OPTIONS%]

Drop if exists(select 1 from sys.sysindex I, sys.systable Twhere I.table_id=T.table_id andI.index_name='%INDEX%' andT.table_name='%TABLE%') thendrop index [%QUALIFIER%]%TABLE%.%INDEX%end if

Options in %s : category=tablespace

DefOptions in %s : category=tablespace

SqlListQuery —

SqlAttrQuery —

Exemple

Page 112: advanfr.pdf

Catégorie Objects

102 PowerAMC

Entrée Exemple

SqlOptsQuery Dans Sybase ASA 8 :

{OWNER, TABLE, INDEX, OPTIONS}

select u.user_name, t.table_name, i.index_name, 'in '+ f.dbspace_namefrom sys.sysuserperms u join sys.systable t on (t.creator=u.user_id) join sys.sysindex i on (i.table_id=t.table_id) join sys.sysfile f on (f.file_id=i.file_id)where i."unique" in ('Y', 'N')[ and t.table_name=%.q:TABLE%][ and u.user_name=%.q:OWNER%]

SqlFragQuery Dans Oracle 9I :

{VAR1NAME, VAR1VALUE}

select 'HighVal'||ip.partition_position, ip.high_valuefrom all_ind_partitions ipwhere 1=1[ and ip.index_owner=%.q:OWNER%][ and ip.index_name=%.q:INDEX%]

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 113: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 103

EnableAscDesc

Mots clés ASC et DESC admis sur une définition d'index. Vous pouvezindiquer un ordre ascendant ou descendant en sélectionnant la valeurcorrespondante dans la liste déroulante Tri de la page Colonnes d'une feuillede propriétés d'index. Ascendant est la valeur par défaut.

Valeur Base de données cible Résultat

Yes Prend en charge lescolonnes d'index triées enordre ascendant oudescendant

La variable %ASC% est calculée. Le motclé ASC ou DESC est généré lorsquevous créez ou modifiez la base dedonnées

No Ne prend pas en charge letri des colonnes d'index

La colonne Tri ne s'affiche pas sur lapage Colonnes de la feuille de propriétésd'index. La variable %ASC% n'est pascalculée. Le mot clé ASC ou DESC n'estpas généré lorsque vous créez oumodifiez la base de données

Dans Sybase Adaptive Server Anywhere 6 :

EnableAscDesc = YES

Dans l'exemple suivant, un index de clé primaire est créé sur la table TASK,la colonne PRONUM se voit attribuer un ordre ascendant et la colonneTSKNAME se voit attributer un ordre descendant.

create index IX_TASK on TASK (PRONUM asc, TSKNAME desc);

EnableCluster

Permet de définir un index comme index cluster.

Valeur Résultat

Yes La case à cocher Cluster s'affiche dans la feuille de propriétés d'index

No L'index ne prend pas en charge les index cluster

Exemple

Page 114: advanfr.pdf

Catégorie Objects

104 PowerAMC

EnableFunction

Permet d'utiliser des index basés sur des fonctions.

Valeur Résultat

Yes Vous pouvez définir des expressions pour les index

No L'index ne prend pas en charge les expressions

EnableOwner

Permet de définir des propriétaires d'index. Le propriétaire d'index peut êtrele propriétaire de la table, ou bien il peut s'agir d'un autre utilisateur.

Valeur Résultat

Yes La liste déroulante Propriétaire s'affiche dans la feuille de propriétésd'index et l'utilisateur peut sélectionner un propriétaire pour l'indexcourant

No L'index ne prend pas en charge les propriétaires

EnableOwner = YES

Si vous activez le propriétaire sur les index, vous devez faire en sorte quel'instruction Create reflète ce changement de façon à prendre en compte lepropriétaire de la table et de l'index. Par exemple, dans Oracle 9i,l'instruction Create d'un index est la suivante :

create [%UNIQUE%?%UNIQUE% :[%INDEXTYPE% ]]index[%QUALIFIER%]%INDEX% on [%CLUSTER%?clusterC_%TABLE%:[%TABLQUALIFIER%]%TABLE% (

%CIDXLIST%

)]

[%OPTIONS%]

%QUALIFIER% fait référence à l'objet courant (index) et%TABLQUALIFIER% fait référence à la table parent de l'index.

Exemple

Page 115: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 105

MandIndexType

Détermine si le type d'index est obligatoire pour un index.

Valeur Résultat

Yes Le type est obligatoire

No Le type n'est pas obligatoire

MaxColIndex

Nombre maximum de colonnes admis dans un index dans le SGBD. Lavérification de modèle procède au contrôle et indique une erreur si le nombrede colonnes incluses dans la définition d'index dépasse la valeur admise.

MaxColIndex = 99

Cluster

Mot clé Cluster. Si ce paramètre est vide, la valeur par défaut de la variable%CLUSTER% est CLUSTER.

Dans Sybase AS Enterprise 11.x :

Cluster = clustered

La valeur clustered est affectée à la variable %CLUSTER%.

AddColIndex

Instruction permettant d'ajouter une colonne dans l'instruction CreateIndex. Ce paramètre définit chaque colonne dans la liste des colonnes del'instruction Create Index.

Dans Sybase Adaptive Server Anywhere 6 :

AddColIndex = %COLUMN% [%ASC%]

%COLUMN% est le code de la colonne définie dans la liste des colonnes dela table. %ASC% est ASC (ordre ascendant) ou DESC (ordre descendant)selon l'état du bouton radio Tri pour la colonne d'index.

Exemple

Exemple

Exemple

Page 116: advanfr.pdf

Catégorie Objects

106 PowerAMC

DefIndexType

Définit le type par défaut pour un index.

Dans DB2 :

Type2

DefineIndexColumn

Définit la colonne d'un index.

Footer

Fin d'index. Tout ce qui est ajouté dans cette entrée est ajouté aprèsl'instruction create index.

Header

En-tête d'index. Tout ce qui est ajouté dans cette entrée est ajouté avantl'instruction create index.

IndexType

Liste des types disponibles pour un index.

Dans Sybase Adaptive Server Anywhere 6 :

bitmap

Exemple

Exemple

Page 117: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 107

SqlSysIndexQuery

Requête SQL utilisée pour répertorier les index système créés par la base dedonnées. Ces index sont exclus lors du reverse engineering.

Dans Sybase Adaptive Server Anywhere 6 :{OWNER, TABLE, INDEX}select u.user_name, t.table_name, i.index_namefrom sys.sysindex i, sys.systable t, SYSUSERPERMS uwhere "unique" = 'U' and t.table_id = i.table_id andu.user_id = t.creator [and u.user_name='%OWNER%'] [andt.table_name='%TABLE%']unionselect distinct u.user_name, t.table_name, t.table_name|| '(primary key)'from sys.systable t, SYSUSERPERMS uwhere u.user_id = t.creator and t.primary_root <>0 [andu.user_name='%OWNER%'] [and t.table_name='%TABLE%']unionselect distinct u.user_name, t.table_name, f.role ||'(foreign key)'from sys.systable t, SYSUSERPERMS u, sys.sysforeignkey fwhere u.user_id = t.creator and t.table_id =f.foreign_key_id [and u.user_name='%OWNER%'] [andt.table_name='%TABLE%']unionselect distinct u.user_name, t1.table_name, f.role ||'(foreign key)'from sys.systable t1, sys.systable t2, SYSUSERPERMS u,sys.sysforeignkey fwhere u.user_id = t1.creator and t2.table_id =f.primary_table_id and t1.table_id=f.foreign_table_id[and u.user_name='%OWNER%'] [andt1.table_name='%TABLE%']

IndexComment

Instruction permettant d'ajouter un commentaire à un index.comment on index [%QUALIFIER%]%TABLE%.%INDEX% is%.q:COMMENT%

Exemple

Exemple

Page 118: advanfr.pdf

Catégorie Objects

108 PowerAMC

UniqName

Définition de la portée d'un nom d'index unique. Utilisé par la vérification demodèle.

Valeur Résultat

Yes Un nom d'index unique est utilisé pour toute la base de données

No Un nom d'index peut être utilisé plusieurs fois s'il est associé àdifférents objets

UniqName = YES

CreateBeforeKey

Permet d'inverser l'ordre de génération des index et des clés.

Valeur Résultat

Yes Les index sont générés avant les clés

No Les index sont générés après les clés

CreateBeforeKey = YES

Exemple

Exemple

Page 119: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 109

Pkey

La catégorie Pkey contient des entrées qui définissent les paramètres relatifsaux clés primaires.

Entrées communes pour Pkey

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Pkey dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Enterprise 11)

Enable Enable = Yes

Create [%USE_SP_PKEY%?[execute] sp_primarykey %TABLE%,%PKEYCOLUMNS%

:alter table [%QUALIFIER%]%TABLE%add [constraint %CONSTNAME%] primary key

[%CLUSTER% ](%PKEYCOLUMNS%)[%OPTIONS%]]

Add [constraint %CONSTNAME%] primary key [%CLUSTER%](%PKEYCOLUMNS%)[%OPTIONS%]

Drop [%USE_SP_PKEY%?execute sp_dropkey primary, %TABLE%:alter table [%QUALIFIER%]%TABLE%drop constraint %CONSTNAME%]

Options <clustered> %s : list=clustered | nonclusteredwith : composite=yes, separator=yes, parenthesis=no{fillfactor=%d : default=0max_rows_per_page=%d : default=0}on %s : category=storage

DefOptions —

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 120: advanfr.pdf

Catégorie Objects

110 PowerAMC

PkAutoIndex

Clé primaire auto-indexée. Cette option détermine principalement sil'instruction Create Index doit être générée pour chaque instruction declé primaire.

Valeur Base de données cible Résultat

Yes Génère automatiquement unindex de clé primaire lorsquevous générez l'instruction declé primaire

Les cases à cocher de clé primaire etCréation d'index peuvent êtrecochées simultanément dans lesparamètres de génération ou demodification.

Si vous cochez la case Clé primairesous Création d'index, la casePrimaire est automatiquementdécochée sous Création de table,et réciproquement

No Ne génère pas les index de cléprimaire lorsque vous générezles clés primaires

Les index de clé primaire doivent êtregénérés de façon explicite. Les cases àcocher relatives aux clés primaires etla case Création d'index peuvent êtrecochées simultanément

Dans Sybase Adaptive Server Anywhere 6 :

PkAutoIndex = YES

UseSpPrimKey

Utilisez l'instruction Sp_primarykey pour générer une clé primaire.

Pour une base de données qui prend en charge la procédure de mise enoeuvre de définition de clé, vous pouvez tester la valeur de la variablecorrespondante %USE_SP_PKEY% et choisir entre la création d'une clédans la table et le lancement d'une procédure.

Valeur Résultat

Yes L'instruction Sp_primarykey est utilisée pour générer une cléprimaire

No Les clés primaires sont générées séparément dans une instruction altertable

Exemple

Page 121: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 111

Dans Microsoft SQL Server :UseSpPrimKey = YESAdd entry of Pkey contains

[%USE_SP_PKEY%?[execute] sp_primarykey %TABLE%,%PKEYCOLUMNS%:alter table [%QUALIFIER%]%TABLE% add [constraint %CONSTNAME%] primary key[%IsClustered%] (%PKEYCOLUMNS%) [%OPTIONS%]]

ConstName

Permet de déclarer un template personnalisable pour tous les noms decontrainte de clé primaire dans un MPD.

Pour chaque table dans un modèle, le nom de contrainte de clé primaire estdéfini dans l'entrée Nom de contrainte pour la clé définie comme cléprimaire. Ce nom de contrainte est généré dans la base de données si cettedernière prend en charge les clés primaires et noms de contrainte.

Certaines variables PowerAMC peuvent être utilisées pour définir le nom decontrainte de clé primaire :

♦ %TABLE% : code de table

♦ %KEY% : code de clé

♦ %COLUMN% : code de colonne

♦ %COLNNO% : numéro de colonne

Les noms de contrainte en double sont renommés automatiquement enprenant en compte la longueur de la contrainte.

%OID%La variable %OID% utilisée dans certains fichier .Def dans la Version 6n'est plus disponible. Les identificateurs d'objet sont codés sur plus de 20caractères, ce qui les rend inutilisables pour les noms de contrainte(souvent limités à 8 ou à 18 caractères)

PKConstraintName = PK_%.U27:TABLE%

PKeyComment

Instruction permettant d'ajouter un commentaire de clé primaire.

comment on primary key [%QUALIFIER%]%TABLE%.%PKEY% is%.q:COMMENT%

Exemple

Exemple

Exemple

Page 122: advanfr.pdf

Catégorie Objects

112 PowerAMC

Key

La catégorie Key contient des entrées qui définissent les paramètres associésaux clés.

Entrée communes pour Key

Vous pouvez définir des valeurs pour les entrées communes suivantes pourl'objet Key dans la définition de SGBD :

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

Enable Enable = Yes

Create alter table [%QUALIFIER%]%TABLE% add unique (%COLUMNS%)

Add unique (%COLUMNS%)

Drop alter table [%QUALIFIER%]%TABLE% delete unique (%COLNLIST%)

DefOptions _

Options Oracle 7 :

using index : composite=yes, separator=no,parenthesis=no{ pctfree %d initrans %d : default=1 maxtrans %d tablespace %s : category=tablespace storage : category=storage, composite=yes,separator=no, parenthesis=yes { initial %s : default=10K next %s : default=10K minextents %d : default=1 maxextents %s maxextents unlimited pctincrease %d : default=50 freelists %d : default=1 freelist groups %d : default=1 optimal %d optimal NULL } nosort <recoverable> %s : list=recoverable | unrecoverable}disable

SqlAttrQuery —

SqlOptsQuery —

Page 123: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 113

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

SqlListQuery {TABLE ID, ISPKEY ID, CONSTNAME ID, COLUMNS…}select t.table_name, 1, null, c.column_name + ', ', c.column_idfrom systable t, syscolumn cwhere t.table_name='%TABLE%' and c.pkey='Y' and c.table_id=t.table_idunion select t.table_name, 0, i.index_name, c.column_name + ', ', x.sequencefrom sysindex i, systable t, syscolumn c, sysixcol xwhere t.table_name='%TABLE%' and i."unique"='U' and i.table_id=t.table_id and x.table_id=t.table_id and c.table_id=t.table_id and x.index_id=i.index_id and x.column_id=c.column_idorder by 1, 3, 5

SqlFragQuery —

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 124: advanfr.pdf

Catégorie Objects

114 PowerAMC

AllowNullableColn

Instruction indiquant que la clé peut contenir des colonnes non obligatoires.

Valeur Résultat

Yes Colonne pouvant être non obligatoires admises

No Seules les colonnes obligatoires sont admises

UniqConstAutoIndex

Indexaction automatique de contrainte unique de clé alternative. Cette optioncommence par déterminer si une instruction Create Index est requisepour chaque instruction de clé.

Valeur Base de données cible Résultat

Yes Génère automatiquement unindex de clé alternative lorsde la génération del'instruction de clé alternative

La case Clé alternative (dans lesoptions Filtre d'index de la zone degroupe Index) et la case Création declé (zone de groupe Clés alternatives)ne peuvent pas être cochéessimultanément dans la page Clés etindex de la boîte de dialogue degénération

No Ne génère pas d'index de cléalternative lors de lagénération des clésalternatives

Les index de clé alternative doiventêtre générés de façon explicites. Lescases à cocher concernant les clésalternatives et la case Création d'indexpeuvent être cochées simultanément

Dans Sybase Adaptive Server Anywhere 6 :

UniqConstAutoIndex = YES

Exemple

Page 125: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 115

UniqInTable

Clé alternative créée dans la table. Cette entrée détermine l'endroit où la cléalternative est définie dans le script SQL.

Valeur Résultat

Yes Les clés alternatives sont incluses dans l'instruction create table.L'entrée Add pour la clé est concaténée dans la variable%TABLEDEFN%

No Les clés alternatives sont générées séparément dans une instructionalter table, le contenu de l'entrée Create pour la clé alternative estutilisé lors de la génération

UniqInTable = Yes

MaxConstLen

Instruction permettant de définir la longueur maximale de nom de contrainteprise en charge par la base de données cible. Cette valeur est mise en oeuvredans la vérification de modèle et produit une erreur si le code dépasse lavaleur définie. Le nom de contrainte est également tronqué au moment de lagénération.

Longueur maximale pour les noms de contrainte :PowerAMC a une longueur maximale de 254 caractères pour les noms decontrainte. Si votre base de données prend en charge des noms decontrainte plus longs, vous devez définir les noms de contrainte de sortequ'ils se conforment à la limite de 254 caractères.

MaxConstLen = 128

ConstName

Permet de déclarer un template personnalisable pour tous les noms decontrainte de clé alternative dans un MPD. Utilisé dans la feuille depropriétés de clé pour toutes les clés qui sont des clés alternatives et qui nesont pas des clés primaires.

Pour chaque table dans un modèle, un nom de contrainte de clé alternative estdéfini dans l'entrée Nom de contrainte des propriétés de la clé si cette clé estdéfinie comme clé alternative. Ce nom de contrainte est généré dans la basede données si la base de données prend en charge les clés alternatives et lesnoms de contrainte.

Exemple

Exemple

Page 126: advanfr.pdf

Catégorie Objects

116 PowerAMC

Certaines variables PowerAMC peuvent être utilisées pour définir un nom decontrainte de clé alternative :

♦ %TABLE% : code de table

♦ %KEY% : code de clé

Les noms de contrainte en double sont automatiquement renommés enfonction de la longueur de la contrainte.

Dans Sybase Adaptive Server Anywhere 6 :

AK_%.U18:AKEY%_%.U8:TABLE%

SqlAkeyIndex

Requête de reverse engineering permettant d'obtenir les index de cléalternative d'une table via ODBC.

Dans Sybase Adaptive Server Anywhere 6 :select distinct I.INDEX_NAMEfrom SYSINDEX I, SYSUSERPERMS U, SYSTABLE Twhere I."UNIQUE" = 'U' and I.TABLE_ID = T.TABLE_ID and T.TABLE_NAME = '%TABLE%' and T.CREATOR = U.USER_IDand U.USER_NAME = '%USER%'

AKeyComment

Instruction permettant d'ajouter un commentaire de clé alternative.

comment on alternate key [%QUALIFIER%]%TABLE%.%AKEY% is%.q:COMMENT%

Exemple

Exemple

Exemple

Page 127: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 117

Reference

La catégorie Reference contient des entrée définissant des paramètres liés auxréférences.

Entrées courantes pour Reference

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Reference dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

Enable Enable = Yes

Create Remarquez que check on commit (CHCKONCMMT) à la finde l'exemple est utile pendant le reverse engineering pouranalyser le texte.

Alter table [%QUALIFIER%]%TABLE%Add foreign key %CONSTNAME%(%FKEYCOLUMNS%)references [%PQUALIFIER%]%PARENT%(%CKEYCOLUMNS%)[on update %UPDCONST%][on delete %DELCONST%][%CHCKONCMMT% ? check on commit]

Add foreign key %CONSTNAME% (%FKEYCOLUMNS%)references [%PQUALIFIER%]%PARENT%(%CKEYCOLUMNS%)[on update %UPDCONST%][on delete %DELCONST%][%CHCKONCMMT% ? check on commit]

Drop if exists(select 1 from sys.sysforeignkey whererole='%CONSTNAME%') thenalter table [%QUALIFIER%]%TABLE%delete foreign key %CONSTNAME%end if

SqlAttrQuery —

SqlListQuery —

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Page 128: advanfr.pdf

Catégorie Objects

118 PowerAMC

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

EnableChangeJoinOrder

Lorsqu'une référence est liée à une clé, comme affiché sur la page Jointuresd'une feuille de propriétés de référence, cette entrée détermine sil'organisation automatique de l'ordre des jointures est disponible.

Valeur Résultat

Yes L'ordre de jointure peut être établi automatiquement ou manuellementà l'aide de l'option Organisation automatique de l'ordre des jointures.Lorsque vous cochez la case de cette fonctionnalité, vous triez la listeen fonction de l'ordre des colonnes de clé (les boutons de déplacementne sont pas disponibles). En décochant cette case, vous pouvezmodifier manuellement l'ordre de jointure à l'aide des boutons dedéplacement (qui sont alors disponibles)

No La case Organisation automatique de l'ordre des jointures est grisée etnon disponible

EnableChangeJoinOrder = YES

EnablefKeyName

Rôle de clé étrangère admis lors de la génération de base de données.

Valeur Résultat

Yes Le code de la référence est utilisé comme rôle pour la clé étrangère

No Le rôle n'est pas admis pour la clé étrangère

Exemple

Page 129: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 119

FKAutoIndex

Clé étrangère auto-indexée. Cette option détermine si une instructionCreate Index doit ou non être générée pour chaque instruction de cléétrangère.

Valeur SGBD Résultat

Yes Génère automatiquementun index de clé étrangèrelors de la génération desinstructions de clé primaire,alternative ou étrangère

La case Clé étrangère (dans les optionsFiltre d'index de la zone de groupe Index)et la case Création de clé (zone de groupeClés étrangères) ne peuvent pas êtrecochées simultanément dans la page Cléset index de la boîte de dialogue degénération

No Né génère pasautomatiquement d'index declé étrangère lors de lagénération de clésétrangères

Les index de clé étrangère doivent êtregénérés de façon explicite. Les cases àcocher de clé étrangère et la case à cocherCréation de table peuvent être cochéessimultanément

FKAutoIndex = YES

MaxConstLen

Instruction permettant de définir la longueur maximale de nom de contrainteprise en charge par la base de données cible. Cette valeur est mise en oeuvredans la vérification de modèle et produit une erreur si le code dépasse lavaleur définie. Le nom de contrainte est également tronqué au moment de lagénération.

Longueur maximale pour les noms de contrainte :PowerAMC a une longueur maximale de 254 caractères pour les noms decontrainte. Si votre base de données prend en charge des noms decontrainte plus longs, vous devez définir les noms de contrainte de sortequ'ils se conforment à la limite de 254 caractères.

MaxConstLen = 128

Exemple

Exemple

Page 130: advanfr.pdf

Catégorie Objects

120 PowerAMC

ConstName

Permet de déclarer un template personnalisable pour tous les noms decontrainte de clé étrangère dans un MPD. Utilisé dans la feuille de propriétésde référence, dans la zone Nom de contrainte sur la page Intégrité.

Pour chaque table dans un modèle, un nom de contrainte de clé étrangère estdéfini dans l'entrée Nom de contrainte de la feuille de propriétés d'uneréférence pour une clé définie comme clé étrangère. Ce nom de contrainte estgénéré dans la base de données si cette dernière prend en charge les clésétrangères et les noms de contrainte.

Les variables PowerAMC suivantes peuvent être utilisées pour définir unnom de contrainte de clé étrangère :

%TABLE% : code de la table (table parent et enfant, compatible Version 6)

Les noms de contrainte en double sont automatiquement renommés en tenantcompte de la longueur de la contrainte.

FK_%.U8:CHILD%_%.U9:REFR%_%.U8:PARENT%

CheckOnCommit

Le test d'intégrité référentielle est uniquement effectué après COMMIT.

Contient le mot clé utilisé pour spécifier une référence avec l'optionCheckOnCommit.

CHECK ON COMMIT

DclUpdIntegrity

Contraintes d'intégrité référentielle déclarative pour la modification admises.

Doit contenir une liste de mots de la sélection suivante.

RESTRICT

CASCADE

SET NULL

SET DEFAULT

Selon la liste de mots sélectionnés, le bouton radio sur la page Intégrité de lafeuille de propriétés de référence est disponible ou non.

Exemple

Exemple

Page 131: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 121

Dans Sybase Adaptive Server Anywhere 6 :RESTRICTCASCADESET NULLSET DEFAULT

DclDelIntegrity

Contraintes d'intégrité référentielle déclarative pour la suppression admises.

Doit contenir une liste de mots de la sélection suivante.

RESTRICT

CASCADE

SET NULL

SET DEFAULT

Selon la liste de mots sélectionnés, le bouton radio sur la page Intégrité de lafeuille de propriétés de référence est disponible ou non.

Dans Sybase Adaptive Server Anywhere 6 :RESTRICTCASCADESET NULLSET DEFAULT

DefineJoin

Définit une jointure pour une référence, ce qui correspond à la variable%JOINS%. Il s'agit d'une autre façon de définir le contenu de l'instructioncreate reference.

En règle générale, le script create pour une référence utilise les variables%CKEYCOLUMNS% et %PKEYCOLUMNS% qui contiennent descolonnes enfant et parent séparées par une virgule.

Si vous utilisez %JOINS%, vous pouvez faire référence à chaque paire decolonnes parent-enfant séparément.

Lorsque vous utilisez %JOINS%, une boucle est exécutée sur la jointure pourchaque paire de colonnes parent-enfant, ce qui permet d'utiliser une syntaxemélangeant PK et FK.

Exemple

Exemple

Page 132: advanfr.pdf

Catégorie Objects

122 PowerAMC

Dans Microsoft Access :DefineJoin = P=%PK% F=FK%Create = CreateJoin C=%CONSTANME% T=%TABLE% P=%PARENT%(%JOINS%)

SqlListChildrenQuery

Requête SQL utilisée pour répertorier les jointures dans une référence.

Dans Oracle 8 :SELECT COL2.COLUMN_NAME, COL1.COLUMN_NAMEFROM SYS.ALL_CONS_COLUMNS COL1, SYS.ALL_CONS_COLUMNSCOL2WHERE COL1.POSITION = COL2.POSITION AND COL1.OWNER=&#39;%SCHEMA%&#39; ANDCOL1.TABLE_NAME=&#39;%TABLE%&#39; AND COL2.OWNER=&#39;%POWNER%&#39; ANDCOL2.TABLE_NAME=&#39;%PARENT%&#39; AND COL1.CONSTRAINT_NAME=&#39;%FKCONSTRAINT%&#39; ANDCOL2.CONSTRAINT_NAME=&#39;%PKCONSTRAINT%&#39;ORDER BY COL1.POSITION

UseSpFornKey

Utilise l'instruction Sp_foreignkey pour générer une clé étrangère.

Valeur Résultat

Yes L'instruction Sp_foreignkey est utilisée pour créer une référence

No Les clés étrangères sont générées séparément dans une instruction altertable à l'aide de la commande Create de la référence

Dans Sybase Adaptive Server Enterprise 11 :

UseSpFornKey = Yes

Voir aussi UseSpPrimKey.

FKeyComment

Commande permettant d'ajouter un commentaire à une clé étrangère.

comment on foreign key [%QUALIFIER%]%TABLE%.%FK% is%.q:COMMENT%

Exemple

Exemple

Exemple

Exemple

Page 133: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 123

View

La catégorie View contient des entrées qui définissent les paramètres associésaux vues.

Entrées courantes pour View

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet View dans la définition de SGBD.

Entrée Exemple (Oracle 8)

Enable Enable = Yes

Create create [or replace ][%R% [no] force]view[%QUALIFIER%]%VIEW% [(%VIEWCOLN%) ]as%SQL%[%VIEWCHECK%] [%R%with read only]

Drop drop view [%QUALIFIER%]%VIEW%

SqlListQuery —

SqlAttrQuery {OWNER, VIEW, SCRIPT}

[%ISODBCUSER% ?SELECT '%SCHEMA%', VIEW_NAME, TEXTFROM SYS.USER_VIEWSORDER BY VIEW_NAME:SELECT OWNER, VIEW_NAME, TEXTFROM SYS.ALL_VIEWS [WHEREOWNER='%SCHEMA%']ORDER BY OWNER, VIEW_NAME]

SqlFragQuery {VAR1NAME, VAR1VALUE}

select 'HighVal'||tp.partition_position, tp.high_valuefrom all_tab_partitions tpwhere 1=1[ and tp.table_owner=%.q:OWNER% ][ and tp.table_name=%.q:VIEW%]

SqlOptsQuery —

Options —

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

Page 134: advanfr.pdf

Catégorie Objects

124 PowerAMC

Entrée Exemple (Oracle 8)

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Permission

Permissions disponibles pour les vues. La première colonne affiche le nomSQL de la permission (SELECT, par exemple). La seconde colonne est lenom abrégé qui s'affiche dans le titre des colonnes de grille.

Dans Sybase ASE 12.5 :SELECT / SelINSER / InsDELETE / DelUPDATE / Upd

Footer

Fin de la vue. Tout ce qui est ajouté dans cette entrée est ajouté aprèsl'instruction create view.

Header

En-tête de vue. Tout ce qui est ajouté dans cette entrée est ajouté avantl'instruction create view.

Exemple

Page 135: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 125

SqlPermQuery

Requête SQL permettant de procéder au reverse engineering de permissionsaccordées sur les vues.

Dans Sybase Adaptive Server Enterprise 12.5 :select u1.name grantee,case when (s.action = 193) then 'SELECT' when (s.action = 195) then 'INSERT' when (s.action = 196) then 'DELETE' when (s.action = 197) then 'UPDATE'end +case when (s.protecttype = 0) then '+' when (s.protecttype = 1) then '' when (s.protecttype = 2) then '-'end|| ','from sysprotects s, sysusers u, sysusers u1, sysobjectsowhere o.name = %.q:VIEW% and o.uid = u.uid and s.id = o.id and u1.uid = s.uid

ViewComment

Instruction permettant d'ajouter un commentaire à une vue. Le commentairede vue est une instruction SQL, qui n'est pas pris en charge par tous lesSGBD. Si ce paramètre est vide, la case à cocher Commentaire est grisée etnon disponible (zone de groupe Vues, dans la page Tables et vues de la boîtede dialogue de génération).

Dans Oracle 8 :

comment on table [%QUALIFIER%.]%VIEW% is '%COMMENT%'

La variable %VIEW% est le nom de la vue tel que défini dans la boîte dedialogue Liste des vues ou dans la feuille de propriétés de la vue. La variable%COMMENT% représente le commentaire défini dans la zone de texteCommentaire de la feuille de propriétés de la vue.

Exemple

Exemple

Page 136: advanfr.pdf

Catégorie Objects

126 PowerAMC

ViewCheck

Option permettant de vérifier une vue. Ce paramètre détermine si la caseWith Check Option dans la feuille de propriétés de la vue est disponible ougrisée.

Si la case est cochée et que le paramètre ViewCheck n'est pas vide, lavaleur de ViewCheck est générée à la fin de l'instruction select de la vue etavant le caractère de fin.

Dans Sybase SQL Anywhere 5.5 :

ViewCheck = with check option

Le script généré pour cet exemple est le suivant :

create view TEST asselect CUSTOMER.CUSNUM, CUSTOMER.CUSNAME,CUSTOMER.CUSTELfrom CUSTOMERwith check option;

ViewStyle

Option permettant de définir le type d'utilisation d'une vue. La valeur définiepour cette entrée sera affichée dans la liste déroulante Utilisation sur lafeuille de propriétés de la vue.

Dans Oracle 9i :

ViewStyle = materialized view

Tablespace

Le Tablespace contient des entrées qui définissent les paramètres associésaux tablespace.

Entrées courantes pour Tablespace

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Tablespace dans la définition de SGBD.

Entrée Exemple (Oracle 8)

Enable Enable = Yes

Create create tablespace %TABLESPACE%[%OPTIONS%]

Exemple

Exemple

Page 137: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 127

Entrée Exemple (Oracle 8)

Drop drop tablespace %TABLESPACE% [including contents[cascade constraints]]

Options datafile : composite=yes, chldmand=yes{<datafile_clause> : composite=yes, separator=yes,multiple=yes{<file_spec> : composite=yes{<filename> %s : squoted=yessize %dreuse}<autoextend_clause> : composite=yes{autoextend offautoextend on : composite=yes{next %smaxsize %s : default=UNLIMITED}}}}minimum extent %s<log> %s : list=logging | nologgingdefault storage : category=storage, composite=yes,parenthesis=yes{initial %d : default=10Knext %d : default=10Kminextents %d : default=1maxextents %dmaxextents unlimitedpctincrease %d : default=50freelists %d : default=1optimal %doptimal NULLbuffer_pool %s : list=keep | recycle | default}<online> %s : default=online, list=online | offline<permanent> %s : default=permanent, list=permanent |temporary

DefOptions —

SqlListQuery {TABLESPACE}

SELECT TABLESPACE_NAME FROMUSER_TABLESPACES ORDER BY 1

Page 138: advanfr.pdf

Catégorie Objects

128 PowerAMC

Entrée Exemple (Oracle 8)

SqlAttrQuery {TABLESPACE, OPTIONS}

SELECT TABLESPACE_NAME, 'DEFAULT STORAGE(INITIAL ' || INITIAL_EXTENT || ' NEXT ' || NEXT_EXTENT || ' MIN_EXTENTS ' ||MIN_EXTENTS || ' MAX_EXTENTS ' || MAX_EXTENTS || 'PCTINCREASE ' || PCT_INCREASE || ') ' || STATUS OPTSFROM USER_TABLESPACES

SqlOptsQuery —

SqlFragQuery —

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dans laboîte de dialogue de fusion lors de la synchronisation debase de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

TablespaceComment

Instruction permettant d'ajouter un commentaire à un tablespace.

comment on tablespace [%QUALIFIER%]%TABLESPACE% is%.q:COMMENT%

Storage

La catégorie Storage contient des entrées qui définissent les paramètresassociés aux storages.

Entrées courantes pour Storage

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Storage dans la définition de SGBD.

Entrée Exemple (Oracle 8)

Enable Enable = Yes

Create -

Exemple

Page 139: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 129

Entrée Exemple (Oracle 8)

Drop —

Options initial %d : default=10Knext %d : default=10Kminextents %d : default=1maxextents %dpctincrease %d : default=50freelists %d : default=1freelist groups %d : default=1optimal %dbuffer_pool %s : list=keep | recycle | default

DefOptions —

SqlList Query —

SqlAttrQuery {STORAGE, OPTIONS}

SELECT SEGMENT_NAME, 'INITIAL ' ||INITIAL_EXTENT ||' NEXT ' || NEXT_EXTENT || ' MIN_EXTENTS ' ||MIN_EXTENTS ||' MAX_EXTENTS ' || MAX_EXTENTS || 'PCTINCREASE ' || PCT_INCREASE ||' FREELISTS ' || FREELISTS || 'FREELIST_GROUPS ' || FREELIST_GROUPS OPTSFROM USER_SEGMENTS

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

StorageComment

Instruction permettant d'ajouter un commentaire à un storage.

comment on storage [%QUALIFIER%]%STORAGE% is%.q:COMMENT%

Exemple

Page 140: advanfr.pdf

Catégorie Objects

130 PowerAMC

Database

La catégorie Database contient des entrées qui définissent les paramètresassociés aux database.

Entrées courantes pour Database

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Database dans la définition de SGBD.

Entrée Exemple (Adaptive Server Anywhere 6)

Enable Enable = No

Create create database '%DATABASE%.db'[%OPTIONS%]

Drop drop database %DATABASE%

Options transactionlog %s : list= on | off<logonfile> %smirror %scase %s : default=respect, list=respect | ignorepage size %d : default=1024, list=1024 | 2048 | 4096collation %sencrypted %s : list=on | offblank padding %s : list=on | offASEcompatiblejava %s : list=on | offjconnect %s : list=on | off

DefOptions —

SqlListQuery —

SqlAttrQuery —

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 141: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 131

BeforeCreateDatabase

Détermine si les instructions Create Tablespace et CreateStorage sont générées avant ou après la création de la base de données.

Valeur par défaut : YES.

Valeur Résultat

Yes Les instructions Create Tablespace et Create Storage sont généréesavant l'instruction Create Database

No Les instructions Create Tablespace et Create Storage sont généréesaprès l'instruction Create Database

Dans IBM DB2 MVS version 4 :

BeforeCreateDatabase = NO

CloseDatabase

Instruction permettant de fermer une base de données. Si ce paramètre estvide, la case Fermeture de la base est grisée et non disponible (zone degroupe Base de données sur la page Base de données) dans la boîte dedialogue de génération.

Dans Sybase AS Enterprise 11.x :

CloseDatabase =

OpenDatabase

Instruction permettant d'ouvrir une base de données. Si ce paramètre est vide,la case Ouverture de la base est grisée et non disponible (zone de groupeBase de données sur la page Base de données) dans la boîte de dialogue degénération.

Dans Sybase AS Enterprise 11.x :

OpenDatabase = use %DATABASE%

La variable %DATABASE% est le code de la base de données associé aumodèle généré.

Exemple

Exemple

Exemple

Page 142: advanfr.pdf

Catégorie Objects

132 PowerAMC

EnableManyDatabases

Détermine si le SGBD prend en charge plusieurs bases de données dans lemême modèle.

Dans DB2MVS8 :

EnableManyDatabases = Yes

Domain

La catégorie Domain contient des entrées qui définissent les paramètresassociés aux domaines.

Entrées courantes pour Domain

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Domain dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

Enable Enable = Yes

Maxlen MaxLen = 30

Create create datatype %DOMAIN% %DATATYPE%[%NOTNULL%] [default %DEFAULT%][check (%CONSTRAINT%)]

Drop if exists(select 1 from systypes wherename='%DOMAIN%')thendrop datatype %DOMAIN%end if

SqlListQuery {@OBJTCODE id, DTTPCODE, LENGTH, PREC}Select d.type_name, t.domain_name, d.width,t."precision"from sysusertype d, sysdomain twhere d.domain_id=t.domain_id and d.domain_id<> 25 and d.domain_id <> 26 and creator <> 0

SqlAttrQuery {@OBJTCODE id, DTTPCODE, LENGTH, PREC,DEFAULT, CONSTRAINT}Select d.type_name, t.domain_name, d.width,d.scale, d."default", d."check"from sysusertype d, sysdomain twhere d.domain_id=t.domain_id andd.domain_id <> 25 and d.domain_id <> 26 andcreator <> 0

Exemple

Page 143: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 133

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

ModifiableAttributes Liste des attributs étendus qui seront pris en comptedans la boîte de dialogue de fusion lors de lasynchronisation de base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

EnableBindRule

Permet ou interdit l'association d'une règle de gestion à un domaine pour lesparamètres de contrôle.

Valeur Résultat

Yes Les entrées Create et Bind de l'objet Rule sont générées

No Le contrôle inclus dans la commande d'ajout du domaine est généré

Dans Microsoft SQL Server et Sybase 11 :

EnableBindRule = Yes

EnableDefault

Permet l'utilisation de valeurs par défaut prédéfinies.

Valeur Résultat

Yes La valeur par défaut est générée pour le domaine lorsque la valeur pardéfaut est définie. La valeur par défaut peut être définie dans lesparamètres de contrôle. La variable %DEFAULT% va contenir lavaleur par défaut

No La valeur par défaut ne peut pas être générée

Exemple

Page 144: advanfr.pdf

Catégorie Objects

134 PowerAMC

EnableCheckDétermine si la génération de paramètres de contrôle est autorisée ou non.

Cette entrée est testée lors de la génération des colonnes : si l'option Type utilisateurest sélectionnée pour les colonnes dans la boîte de dialogue de génération, et siEnableCheck est défini à Yes pour les domaines, alors les paramètres de contrôle nesont pas générés pour les colonnes, puisque la colonne est associée à un domaineayant des paramètres de contrôle. Lorsque les contrôles portant sur la colonnedivergent de ceux sur le domaine, les contrôles sur la colonne sont générés.

Valeur Résultat

Yes Paramètres de contrôle générés

No Toutes les variables liées aux paramètres de contrôle ne seront pasévaluées lors de la génération et du reverse engineering

EnableOwner

Permet de définir des propriétaires pour les domaines.

Valeur Résultat

Yes La liste déroulante Propriétaire s'affiche dans la feuille de propriétés dudomaine et l'utilisateur peut sélectionner un propriétaire pour ledomaine courant

No Le domaine ne prend pas en charge les propriétaires

EnableOwner = YES

UserTypeName

Vous pouvez définir des types de données avec des noms spécifiés parl'utilisateur. Vous améliorez ainsi la lisibilité du contenu des objets dans vosapplications particulières.

UserTypeName = T_%DOMAIN%

Bind

Lie une règle de gestion à un domaine.

Dans Sybase Adaptive Server Enterprise 11 :

[execute] sp_bindrule %RULE%, %DOMAIN%

Exemple

Exemple

Exemple

Page 145: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 135

BindDefault

Lie une valeur par défaut à un domaine.

Dans Microsoft SQL Server and Sybase 11 :

sp_bindefault %DEFAULTNAME%, %DOMAIN%

CreateDefault

Crée une valeur par défaut pour un domaine.

Dans Microsoft SQL Server and Sybase 11 :

create default %DEFAULTNAME% as %DEFAULT%

SqlListDefaultQuery

Requête SQL permettant de répertorier les valeurs par défaut du domaine.

Dans le cas de certains SGBD, le processus de reverse engineering ODBCextrait les valeurs par défaut de domaine dans les tables système. Cetterequête répertorie ces valeurs par défaut.

UddtComment

Instruction permettant d'ajouter un commentaire pour un type de donnéesutilisateur.

comment on user-defined data type [%QUALIFIER%]%DOMAIN%is %.q:COMMENT%

Unbind

Dissocie une règle de gestion d'un domaine.

Dans Sybase Adaptive Server Enterprise 11 :

[execute] sp_unbindrule %DOMAIN%, %RULE%

Exemple

Exemple

Exemple

Exemple

Page 146: advanfr.pdf

Catégorie Objects

136 PowerAMC

Abstract Data Type

La catégorie Abstract Data Type contient des entrées qui définissent lesparamètres associés aux types de données abstraits.

Entrées courantes pour Abstract Data Type

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Abstract Data Types dans la définition de SGBD.

Entrée Exemple

Enable Sybase Adaptive Server Anywhere 6 :

Enable = Yes

Create Dans Oracle 8 :

[%ISARRAY% ? create type %ADT% as %TYPE%(%SIZE%) of %DATATYPE%][%ISLIST% ? create type %ADT% as %TYPE% of%DATATYPE%][%ISOBJECT% ? create type %ADT% as %TYPE%(%ADTDEF%)]

Drop Dans Oracle 8 :

drop type %ADT%

SqlListQuery Dans Sybase Adaptive Server Anywhere 6 :

{ADT, OWNER, TYPE(25=JAVA , 26=JAVA)}SELECT t.type_name, u.user_name, t.domain_idFROM sysusertype t, sysuserperms uWHERE [u.user_name = '%SCHEMA%' AND](domain_id = 25 OR domain_id = 26) ANDt.creator = u.user_idORDER BY type_name

SqlAttrQuery —

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 147: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 137

EnableAdtOnDomn

Instruction permettant l'utilisation de types de données abstraits sur lesdomaines.

Valeur Résultat

Yes Les types de données abstraits sont ajoutés dans la listes des types dedomaines, à condition qu'ils aient un type correct

No Les types de données abstraits ne sont pas admis pour les domaines

EnableAdtOnDomn = Yes

EnableAdtOnColn

Instruction permettant l'utilisation de types de données abstraits sur lescolonnes.

Valeur Résultat

Yes Les types de données abstraits sont ajoutés dans la listes des types decolonne, à condition qu'ils aient un type correct

No Les types de données abstraits ne sont pas admis pour les colonnes

EnableAdtOnColn = Yes

Install

Instruction permettant d'installer une classe Java. Cette entrée équivaut à uneinstruction create.

Dans Sybase Adaptive Server Anywhere, les types de données abstraits nesont pas réellement créés, mais installés.

Dans Sybase Adaptive Server Anywhere 6 :

install JAVA UPDATE from file '%FILE%'

Exemple

Exemple

Exemple

Page 148: advanfr.pdf

Catégorie Objects

138 PowerAMC

Remove

Instruction permettant de désinstaller une classe Java. Cette entrée équivaut àune instruction de suppression.

Dans Sybase Adaptive Server Anywhere, les types de données abstraits nesont pas réellement supprimés, mais retirés.

Dans Sybase Adaptive Server Anywhere 6 :

remove JAVA class %ADT%

AllowedADT

Liste des types de données abstraits qui peuvent être utilisés comme types dedonnées pour un type de données abstrait.

Dans Oracle 8i :

OBJECT

ADTComment

Instruction permettant d'ajouter un commentaire au type de données abstrait.

comment on abstract data type [%QUALIFIER%]%ADT% is%.q:COMMENT%

Abstract Data Type Attribute

La catégorie Abstract Data Types Attribute contient des entrées quidéfinissent les paramètres associés aux attributs de types de donnéesabstraits.

Entrées courantes pour Abstract Data Type Attribute

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Abstract Data Types Attribute dans la définition de SGBD.

Entrée Example

Create_

Add Dans Oracle 8 :

%ADTATTR% %DATATYPE%

Exemple

Exemple

Exemple

Page 149: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 139

Entrée Example

Drop —

Modify —

SqlListQuery Dans Oracle 8 :

{ ADT, ADTATTR , DTTPCODE, LENGTH, PREC }SELECT type_name, attr_name, attr_type_name,length, precisionFROM all_type_attrsORDER BY type_name

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

AllowedADT

Liste des types de données abstraits qui peuvent être utilisés comme type dedonnées pour des attributs de type de données abstrait.

Dans PowerAMC, lorsque vous sélectionnez le type OBJECT pour un typede données abstrait, un onglet Attributs est ajoutée dans la feuille depropriétés du type de données abstrait. Cet onglet vous permet de spécifierles attributs du type de données de l'objet.

Dans Oracle 8i :OBJECTTABLEVARRAY

Exemple

Page 150: advanfr.pdf

Catégorie Objects

140 PowerAMC

User

La catégorie User contient des entrées qui définissent les paramètres associésaux utilisateurs.

Entrées courantes pour User

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet User dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

Enable Enable = Yes

Maxlen Maxlen = 128

SqlListQuery {@OBJTCODE id} Select USER_NAME fromSYS.SYSUSERPERMS order by USER_NAME

SqlAttrQuery —

Create Dans Sybase ASE 12.5 :

sp_adduser %USERID%[%PRIVILEGE%]

Drop Dans Sybase ASE 12.5 :

sp_dropuser %USERID%

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 151: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 141

SqlPermQuery

Requête SQL permettant de procéder au reverse engineering des permissionsaccordées aux utilisateurs.

Dans Sybase Adaptive Server Enterprise 12.5 :{USER ID, PRIVILEGE ...}

select u1.name grantee,case when (s.action = 198) then 'CREATE TABLE' when (s.action = 203) then 'CREATE DATABASE' when (s.action = 207) then 'CREATE VIEW' when (s.action = 221) then 'CREATE TRIGGER' when (s.action = 222) then 'CREATE PROCEDURE' when (s.action = 233) then 'CREATE DEFAULT' when (s.action = 236) then 'CREATE RULE'end +case when (s.protecttype = 0) then '+' when (s.protecttype = 1) then '' when (s.protecttype = 2) then '-'end|| ','from sysprotects s, sysusers u1where u1.uid = s.uidorder by 1

Exemple

Page 152: advanfr.pdf

Catégorie Objects

142 PowerAMC

Rule

La catégorie Rule contient des entrées qui définissent les paramètres associésaux règles.

Entrées courantes pour Rule

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Rule dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Enterprise 11)

Enable Enable = Yes

Maxlen MaxLen = 30

Create create rule %RULE% as%RULESEXPR%

Drop if exists (select 1 from sysobjects wherename='%RULE%' and type='R')

drop rule %RULE%

SqlListQuery {@OBJTNAME ID, @OBJTCODE ID, SCRIPT …}

selecto.name,convert(char(20), o.id),t.textfromdbo.sysobjects o, dbo.syscomments twhere[%SCHEMA%? o.uid=user_id('%SCHEMA%') and]o.type='R'and t.id=o.id and t.texttype=0order byo.id,t.number,t.colid

SqlAttrQuery —

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 153: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 143

MaxDefaultLen

Longueur maximale que le SGBD prend en charge pour le nom par défaut dela colonne. Ce nom n'est défini que dans la syntaxe des bases de données dela famille Sybase.

MaxDefaultLen = 254

ColnDefaultName

Nom de la valeur par défaut pour la colonne. Lorsqu'une colonne a unevaleur par défaut particulière définie dans ses paramètres de contrôle, un nomest créé pour cette valeur par défaut de colonne. Cette entrée est utilisée avecles SGBD qui ne prennent pas en charge les paramètres de contrôle sur lescolonnes, tels que SQL Server 4.

La variable correspondante est %DEFAULTNAME%

Dans Sybase Adaptive Server Enterprise 11 :

ColnDefaultName = D_%.19:COLUMN%_%.8:TABLE%

La colonne Employee function EMPFUNC de la table EMPLOYEE a lavaleur par défaut, Technical Engineer. Le nom par défaut de lacolonne, D_EMPFUNC_EMPLOYEE, est créé :

create default D_EMPFUNC_EMPLOYEEas 'Technical Engineer'go

execute sp_bindefault D_EMPFUNC_EMPLOYEE,"EMPLOYEE.EMPFUNC"go

ColnRuleName

Les paramètres de contrôle de colonne sont définis dans des règles séparéesdans l'instruction create table pour Sybase SQL Server 4.x et MicrosoftSQL Server. Lorsqu'une colonne a une règle particulière définie dans sesparamètres de contrôle, ces SGBD créent un nom pour cette règle decolonne.

La variable correspondante est %RULE%

Dans Sybase Adaptive Server Enterprise 11 :

ColnRuleName = R_%.19:COLUMN%_%.8:TABLE%

La colonne Specialty (TEASPE) de la table Team a une liste de valeursdéfinie dans ses paramètres de contrôle : Industry, Military, Nuclear, Bank,Marketing.

Exemple

Exemple

Exemple

Page 154: advanfr.pdf

Catégorie Objects

144 PowerAMC

Le nom de règle suivant, R_TEASPE_TEAM, est créé et associé à la colonneTEASPE :

create rule R_TEASPE_TEAMas @TEASPE in('Industry','Military','Nuclear','Bank','Marketing')go

execute sp_bindrule R_TEASPE_TEAM, "TEAM.TEASPE"go

UddtDefaultName

Nom par défaut pour un type de données défini par l'utilisateur. Lorsqu'undomaine a une valeur par défaut particulière définie dans ses paramètres pardéfaut, les bases de données Sybase créent un nom comme valeur par défautpour ce type de données par défaut.

La variable correspondante est %DEFAULTNAME%

Dans Sybase Adaptive Server Enterprise 11 :

UddtDefaultName = D_%.28:DOMAIN%

Le domaine FunctionList a une valeur par défaut définie dans sesparamètres de contrôle : Technical Engineer. Le script SQL suivantva générer un nom par défaut pour cette valeur par défaut :

create default D_Functionlistas 'Technical Engineer'go

UddtRuleName

Nom d'une règle définie pour un type de données utilisateur. Lorsqu'undomaine a une règle spécifique définie dans ses paramètres de contrôle, labase de données Sybase crée un nom pour cette valeur de type de donnéesutilisateur pour une règle.

La variable correspondante est %RULE%

Exemple

Page 155: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 145

Dans Sybase Adaptive Server Enterprise 11 :

UddtRuleName = R_%.28:DOMAIN%

Le domaine Domain_speciality doit appartenir à un jeu de valeurs. Cecontrôle de domaine a été défini dans une règle de validation. Le script SQLva générer le nom de règle en suivant le template défini dans l'entréeUddtRuleName :

create rule R_Domain_specialityas (@Domain_speciality in('Industry','Military','Nuclear','Bank','Marketing'))go

execute sp_bindrule R_Domain_speciality,T_Domain_specialitygo

RuleComment

Instruction permettant d'ajouter un commentaire à une règle.

comment on rule [%QUALIFIER%]%RULE% is %.q:COMMENT%

Procedure

La catégorie Procedure contient des entrées qui définissent les paramètresassociés aux procédures stockées.

Entrées courantes pour Procedure

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Procedure dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

Enable Enable = Yes

Maxlen Maxlen = 128

Create create procedure %PROC%[(%PROCPRMS%)]%TRGDEFN%

Drop if exists(select 1 from sys.sysprocedure whereproc_name = '%PROC%') thendrop procedure %PROC%end if

Exemple

Exemple

Page 156: advanfr.pdf

Catégorie Objects

146 PowerAMC

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

SqlListQuery {OWNER, @OBJTCODE}SELECT U.USER_NAME, P.PROC_NAMEFROM SYSUSERPERMS U,SYSPROCEDURE PWHERE [%SCHEMA% ?U.USER_NAME='%SCHEMA%' AND]P.CREATOR=U.USER_ID

SqlAttrQuery {OWNER, @OBJTCODE, SCRIPT, @OBJTLABL}SELECT U.USER_NAME, P.PROC_NAME,P.PROC_DEFN, P.REMARKSFROM SYSUSERPERMS U,SYSPROCEDURE PWHERE [%SCHEMA% ?U.USER_NAME='%SCHEMA%' AND]P.CREATOR=U.USER_IDORDER BY U.USER_NAME

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Permission

Permissions disponibles pour les procédures. La première colonne affiche lenom SQL de la permission (SELECT, par exemple). La seconde colonne estle nom abrégé qui s'affiche dans le titre des colonnes de grille.

Dans Sybase ASE 12.5 :EXECUTE / Exe

EnableFunc

Détermine si les fonctions sont admises ou non.

Les fonctions sont une forme de procédure qui renvoie à l'environnement unevaleur à utiliser dans des requêtes et dans d'autres instructions SQL.

Valeur Résultat

Yes La fonction est admise

No La fonction n'est pas admise

EnableFunc = Yes

Exemple

Exemple

Page 157: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 147

EnableOwner

Permet de définir des propriétaires pour les procédures.

Valeur Résultat

Yes La liste déroulante Propriétaire s'affiche dans la feuille de propriétés deprocédure et l'utilisateur peut sélectionner un propriétaire pour laprocédure courante

No La procédure ne peut pas prendre en charge les propriétaires

EnableOwner = YES

MaxFuncLen

Détermine la longueur maximum du nom d'une fonction.

MaxFuncLen = 128

CreateFunc

Instruction permettant de créer une fonction.

Dans Sybase Adaptive Server Anywhere 6 :

create function %FUNC%[(%PROCPRMS%)]%TRGDEFN%

CustomProc

Instruction permettant de créer une procédure stockée.

Les procédures stockées sont des scripts qui utilisent des opérateursprédéfinis, des variables, des fonctions et des macros pour gérer et modifierdes données.

Dans Sybase Adaptive Server Anywhere 6 :create procedure %PROC% (IN <arg> <type>)begin...end/

Exemple

Exemple

Exemple

Exemple

Page 158: advanfr.pdf

Catégorie Objects

148 PowerAMC

CustomFunc

Instruction permettant de créer une fonction.

Les fonctions définies par l'utilisateur ont la forme d'une procédure quirenvoie une valeur à l'environnement appelant afin de l'utiliser dans desrequêtes et dans d'autres instructions SQL.

Dans Sybase Adaptive Server Anywhere 6 :create function %FUNC% (<arg> <type>)RETURNS <type>begin...end/

DropFunc

Instruction permettant de supprimer une fonction.

Dans Sybase Adaptive Server Anywhere 6 :if exists(select 1 from sys.sysprocedure where proc_name= '%FUNC%') then drop function %FUNC%end if

SqlPermQuery

Requête SQL permettant de procéder au reverse engineering de permissionsaccordées sur les procédures.

Dans Sybase Adaptive Server Enterprise 12.5 :select u1.name grantee,case when (s.action = 193) then 'SELECT' when (s.action = 195) then 'INSERT' when (s.action = 196) then 'DELETE' when (s.action = 197) then 'UPDATE'end +case when (s.protecttype = 0) then '+' when (s.protecttype = 1) then '' when (s.protecttype = 2) then '-'end|| ','from sysprotects s, sysusers u, sysusers u1, sysobjectsowhere o.name = %.q:PROCEDURE% and o.uid = u.uid and

Exemple

Exemple

Exemple

Page 159: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 149

s.id = o.id and u1.uid = s.uid

ProcedureComment

Instruction permettant d'ajouter un commentaire à une procédure.

comment on procedure [%QUALIFIER%]%PROC% is %.q:COMMENT%

FunctionComment

Instruction permettant d'ajouter un commentaire à une fonction.

comment on procedure [%QUALIFIER%]%PROC% is %.q:COMMENT%

Trigger

La catégorie Trigger contient des entrées qui définissent les paramètresassociés aux triggers.

Entrées courantes pour Trigger

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Trigger dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

Enable Enable = Yes

Maxlen MaxLen = 30

Drop if exists(select 1 from sys.systrigger where trigger_name= '%TRIGGER%') thendrop trigger %TRIGGER%end if

Create create trigger %TRIGGER%[%TRGTIME%=before? nocascade][ %TRGTIME%][ %TRGEVENT%[ of%COLUMNS%]] on [%QUALIFIER%]%TABLE%%TRGDEFN%

Exemple

Exemple

Page 160: advanfr.pdf

Catégorie Objects

150 PowerAMC

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

SqlListQuery {OWNER, TABLE, TRIGGER, TRGEVENT (C=Update,D=Delete, *=Insert), TRGTIME (A=After, *=Before)}SELECT U.USER_NAME, T.TABLE_NAME,R.TRIGGER_NAME, R.EVENT, R.TRIGGER_TIMEFROM SYSUSERPERMS U,SYSTABLET,SYSTRIGGER RWHERE [%SCHEMA% ?U.USER_NAME='%SCHEMA%' AND]R.TRIGGER_NAME IS NOT NULL ANDT.CREATOR=U.USER_ID AND R.TABLE_ID =T.TABLE_IDORDER BY U.USER_NAME, T.TABLE_NAME

SqlAttrQuery {OWNER, TABLE, TRIGGER, SCRIPT}SELECT U.USER_NAME, T.TABLE_NAME,R.TRIGGER_NAME, R.TRIGGER_DEFNFROM SYSUSERPERMS U,SYSTABLET,SYSTRIGGER RWHERE [%OWNER% ?U.USER_NAME='%OWNER%' AND] [%TABLE% ?T.TABLE_NAME='%TABLE%' AND]T.CREATOR=U.USER_ID AND R.TABLE_ID =T.TABLE_IDORDER BY U.USER_NAME, T.TABLE_NAME

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

EnableMultiTrigger

Détermine si plusieurs triggers de même type peuvent être utilisés ou non.

EnableMultiTrigger = YesExemple

Page 161: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 151

EnableOwner

Permet de définir des propriétaires de trigger. Le propriétaire de trigger peutêtre identique ou différent du propriétaire de table.

Valeur Résultat

Yes La liste déroulante Propriétaire s'affiche dans la feuille de propriétés detrigger et l'utilisateur peut sélectionner un propriétaire pour le triggercourant

No Le trigger ne prend pas en charge le propriétaire

EnableOwner = YES

DefaultTriggerName

Nom de trigger par défaut.

Dans Sybase Adaptive Server Anywhere 6 :

%TEMPLATE%_%.L:TABLE%

UseErrorMsgTable

Gère les erreurs lors de la génération de trigger en utilisant des messagesdéfinis par l'utilisateur.

Lorsque vous sélectionnez Utilisateur dans la page Messages d'erreur de laboîte de dialogue Régénération des triggers, la macro .ERROR seraremplacée par le contenu de l'entrée UseErrorMsgTable lors duprocessus de régénération.

La macro .ERROR, est appelée par un élément de modèle dans le modèle detrigger, elle a deux paramètres : %ERRNO% est le numéro d'erreur et%ERRMSG% est le texte du message.

Les messages utilisateur sont stockés dans une table de messages que vousdevez créer dans votre base de données :

Variable Description

%MSGTAB% Nom de la table

%MSGNO% Colonne de numéro de message qui stocke le numéro dumessage d'erreur référencé dans le script de trigger

%MSGTXT% Colonne de texte de message qui stocke le texte du message

Exemple

Exemple

Page 162: advanfr.pdf

Catégorie Objects

152 PowerAMC

Lorsque vous avez sélectionnée l'option Utilisateur pour le type de messaged'erreur, si un numéro d'erreur dans le script du trigger correspond à unnuméro d'erreur dans la table de message, le paramètre de message d'erreurpar défaut de la macro .ERROR est remplacé par le message d'erreur définipar l'utilisateur dans la table de messages.

Dans Sybase Adaptive Server Enterprise 12 :begin select @errno = %ERRNO%, @errmsg = %MSGTXT% from %MSGTAB% where %MSGNO% = %ERRNO% goto errorend

%MSGNO%, %MSGTAB% et %MSGTXT% seront remplacés par les valeursdéfinies dans la colonne de numéro de message, la colonne de texte demessage et la colonne de nom de message dans le tableau de messages.

UseErrorMsgText

Gère les erreurs lors de la génération de triggers en utilisant des messagesd'erreur standard.

Lorsque vous sélectionnez Standard dans la page Messages d'erreur de laboîte de dialogue Régénération des triggers, la macro .ERROR seraremplacée par le contenu de l'entrée UseErrorMsgText lors du processusde régénération.

La macro .ERROR, est appelée par un élément de modèle dans le modèle detrigger, elle a deux paramètres : %ERRNO% est le numéro d'erreur et%ERRMSG% est le texte du message.

Si l'option Standard est sélectionnée pour les messages d'erreur, si un numérod'erreur dans le script de trigger correspond au paramètre %ERRNO% de lamacro .ERROR, le message correspondant de la macro est utilisé.

Dans Sybase Adaptive Server Enterprise 12 :begin select @errno = %ERRNO%, @errmsg = '%ERRMSG%' goto errorend

Dans ce cas, le message d'erreur et le texte du message sont directementutilisés.

Exemple

Exemple

Page 163: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 153

TriggerComment

Instruction permettant d'ajouter un commentaire au trigger.

comment on trigger [%QUALIFIER%]%TRIGGER% is%.q:COMMENT%

Time

Liste d'attributs de moment de trigger.

Before

After

Event

Liste d'attributs d'événements de trigger.

Select

EventDelimiter

Caractère utilisé pour séparer les événements si vous souhaitez affecterplusieurs événements à un trigger.

,

Group

La catégorie Group contient des entrées qui définissent les paramètresassociés aux groupes.

Entrées courantes pour Group

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Group dans la définition de SGBD.

Entrée Exemple (Sybase ASE 12.5)

Enable Enable = Yes

Exemple

Exemple

Exemple

Exemple

Page 164: advanfr.pdf

Catégorie Objects

154 PowerAMC

Entrée Exemple (Sybase ASE 12.5)

SqlListQuery {GROUP}select u.namefrom [%CATALOG%.]dbo.sysusers uwhere u.uid = u.gid and u.gid not in (select r.lrid from[%CATALOG%.]dbo.sysroles r)

order by 1

SqlAttrQuery —

Drop sp_dropgroup %GROUP%

Createsp_addgroup %GROUP%

[%BIND%]

[%PRIVILEGE%]

Maxlen —

ModifiableAttributes Liste des attributs étendus qui seront pris en comptedans la boîte de dialogue de fusion lors de lasynchronisation de base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Bind

Instruction permettant d'ajouter un membre dans un groupe.

Dans Sybase Adaptive Server Enterprise 12.5 :

sp_adduser %USERID%, null, %GROUP%

Unbind

Instruction permettant de supprimer un membre d'un groupe.

Dans Sybase Adaptive Server Anywhere 8.0 :

revoke membership in group %GROUP% from %USER%

Exemple

Exemple

Page 165: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 155

SqlListChildrenQuery

Requête SQL permettant de dresser la liste des membres d'un groupe.

Dans Sybase Adaptive Server Enterprise 12.5 :{GROUP ID, MEMBER}

select g.name, u.namefrom [%CATALOG%.]dbo.sysusers u, [%CATALOG%.]dbo.sysusersgwhere u.suid > 0 and u.gid = g.gid and g.gid = g.uidorder by 1

SqlPermQuery

Requête SQL permettant de procéder au reverse engineering des permissionsaccordées aux groupes.

Role

La catégorie Role contient des entrées qui définissent les paramètres associésaux rôles.

Entrées courantes pour Role

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Role dans la définition de SGBD.

Entrée Exemple (Sybase ASE 12.5)

Enable Enable = Yes

SqlListQuery {ROLE}

select u.namefrom master.dbo.syssrvroles uorder by 1

SqlAttrQuery —

Drop drop role %ROLE% [with override]

Exemple

Page 166: advanfr.pdf

Catégorie Objects

156 PowerAMC

Entrée Exemple (Sybase ASE 12.5)

Create create role %ROLE% [with passwd"%PASSWORD%"][%BIND%][%PRIVILEGE%]

Maxlen —

ModifiableAttributes Liste des attributs étendus qui seront pris en comptedans la boîte de dialogue de fusion lors de lasynchronisation de base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Bind

Instruction permettant d'affecter un rôle à un utilisateur ou à un autre rôle.

Dans Sybase Adaptive Server Enterprise 12.5 :

grant role %ROLE% to %USERID%

Unbind

Instruction permettant de désaffecter un rôle d'un utilisateur ou d'un autrerôle.

Dans Sybase Adaptive Server Enterprise 12.5 :

revoke role %ROLE% from %USER%

Exemple

Exemple

Page 167: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 157

SqlListChildrenQuery

Requête SQL qui dresse la liste des utilisateurs auxquels le rôle a été affecté.

Dans Sybase Adaptive Server Enterprise 12.5 :{ ROLE ID, MEMBER }

SELECT r.name, u.nameFROM master.dbo.sysloginroles l, [%CATALOG%.]dbo.sysroles s, [%CATALOG%.]dbo.sysusers u, [%CATALOG%.]dbo.sysusers rwhere l.suid = u.suid and s.id =l.srid and r.uid = s.lrid

SqlPermQuery

Requête SQL permettant de procéder au reverse engineering des permissionsaccordées aux rôles.

Privilege

La catégorie Privilege contient des entrées qui définissent les paramètresassociés aux privilèges.

Entrées courantes pour Privilege

Vous pouvez définir des valeurs pour les entrées courantes suivantes l'objetPrivilege dans la définition de SGBD.

Entrée Exemple (Sybase ASE 12.5)

Enable Enable = Yes

Drop revoke %PRIVLIST% from %USERID%

Create grant %PRIVLIST% to %USERID%

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Exemple

Page 168: advanfr.pdf

Catégorie Objects

158 PowerAMC

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

GrantOption

Option pour la commande grant.

Dans Oracle 9i :with admin option

RevokeOption

Option pour la commande revoke.

System

Liste de privilèges système admis dans le SGBD courant.

Dans Sybase ASE 12.5 :CREATE DATABASECREATE DEFAULTCREATE PROCEDURECREATE TRIGGERCREATE RULECREATE TABLECREATE VIEW

Permission

La catégorie Permission contient des entrées qui définissent les paramètresassociés aux permissions.

Entrées courantes pour Permission

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Permission dans la définition de SGBD.

Entrée Exemple (Sybase ASE 12.5)

Enable Enable = Yes

Drop revoke %PERMLIST% on %OBJECTLIST% from %IDLIST%[%REVOKEOPTION%]

Create grant %PERMLIST% on %OBJECTLIST% to %IDLIST%[%GRANTOPTION%]

Exemple

Exemple

Page 169: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 159

Entrée Exemple (Sybase ASE 12.5)

SqlListQuery Requête de liste d'objets

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

GrantOption

Option pour la commande grant.

Dans Sybase ASE 12.5 :

with grant option

RevokeOption

Option pour la commande revoke.

Dans Sybase ASE 12.5 :

cascade

Default

La catégorie Default contient les entrées qui définissent les paramètresassociés aux défauts.

Entrée communes pour Default

Vous pouvez définir des valeurs pour les entrées communes suivantes pourl'objet Default dans la définition de SGBD.

Entrée Example (Sybase ASE 12.5)

Enable Enable = Yes

Exemple

Exemple

Page 170: advanfr.pdf

Catégorie Objects

160 PowerAMC

Entrée Example (Sybase ASE 12.5)

SqlListQuery {DEFAULT ID, SCRIPT ...}select convert(char(20), d.tdefault), t.textfrom [%CATALOG%.]dbo.systypes d, [%CATALOG%.]dbo.syscomments twhere t.id = d.tdefault and (t.texttype=0 or t.texttype=2)[ and d.name = %.q:DOMAIN%]order by 1, 2

Drop drop default [%QUALIFIER%]%DEFAULT%

Create create default [%QUALIFIER%]%DEFAULT%

as %VALUE%

L'instruction create du défaut

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Bind

Commande permettant de lier un défaut à un domaine ou à une colonne.

Lorsqu'un domaine ou une colonne utilise un défaut, ce dernier n'est pasajouté mais une instruction binddefault est générée après l'instruction decréation du domaine ou de la table. Dans l'exemple suivant, la colonneAddress dans la table Customer utilise le défaut CITYDFLT :

create table CUSTOMER ( ADDRESS char(10)null)

sp_bindefault CITYDFLT, 'CUSTOMER.ADDRESS'

Si le domaine ou la colonne utilise une valeur de défaut directement saisiedans la liste déroulante Défaut, la valeur de défaut est déclarée sur la ligne decréation de la colonne :

ADDRESS char(10) default 'StdAddress' null

Page 171: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 161

EnableOwner

Permet de définir le propriétaire d'un défaut.

Value Result

Yes La liste déroulante Propriétaire s'affiche dans la feuille de propriétés dedéfaut et l'utilisateur peut sélectionner un propriétaire pour le défaut

No Le défaut ne prend pas en charge les propriétaires

EnableOwner = YES

Unbind

Détache un défaut d'un domaine ou d'une colonne.

Maxlen

Instruction permettant de définir la longueur maximale du code pour unobjet. Cette valeur est mise en oeuvre dans la vérification de modèle etproduit une erreur si le nom ou le code dépasse la valeur définie.

MaxLen = 30

Join index

La catégorie Join Index contient des entrées qui définissent les paramètresassociés aux join index.

Entrées courantes pour Join Index

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Join Index dans la définition de SGBD.

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

Enable Enable = Yes

Maxlen MaxLen = 128

Exemple

Example

Page 172: advanfr.pdf

Catégorie Objects

162 PowerAMC

Entrée Exemple (Sybase Adaptive Server Anywhere 6)

SqlListQuery Dans Adaptive Server IQ:

{JIDX ID, OWNER ID, REFRLIST ...}SELECT j.joinindex_name, u.user_name,lt.table_name || ',' || rt.table_name || ','FROM sysiqjoinindex j, sysuserperm u,sysiqjoinixcolumn jc, systable lt, systable rtWHERE j.joinindex_id = jc.joinindex_idAND j.creator = u.user_idAND jc.left_table_id = lt.table_id AND jc.right_table_id= rt.table_idORDER BY joinindex_name

SqlAttrQueryDans Adaptive Server IQ:

{JIDX ID, OWNER ID, RFJNLIST ...}SELECT j.joinindex_name, u.user_name,lt.table_name || '.' || lc.column_name || '=' ||rt.table_name || '.' || rc.column_name || ','FROM sysiqjoinindex j, sysuserperm u,sysiqjoinixcolumn jc, systable lt, systable rt,syscolumn lc, syscolumn rcWHERE j.joinindex_id = jc.joinindex_idAND j.creator = u.user_idAND jc.left_table_id = lt.table_id AND jc.right_table_id= rt.table_idAND jc.left_column_id = lc.column_id ANDjc.right_column_id = rc.column_idAND lc.table_id = lt.table_id AND rc.table_id =rt.table_idORDER BY joinindex_name

Options_

Dropif exists(select 1 from sys.sysiqjoinindex where

joinindex_name='%JIDX%') then drop join index %JIDX%end if

Add_

DefOptions_

Createcreate join index %JIDX% for

%JIDXDEFN%

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 173: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 163

Header

En-tête de join index. Tout ce qui est ajouté dans cette entrée est ajouté avantl'instruction create join index.

Footer

Fin de join index. Tout ce qui est ajouté dans cette entrée est ajouté aprèsl'instruction create join index.

AddJoin

Instruction SQL utilisée pour définir des jointures pour les index de jointure.

Table1.coln1 = Table2.coln2

JoinIndexComment

Instruction permettant d'ajouter un commentaire de join index.

comment on join [%QUALIFIER%]%JIDX% is %.q:COMMENT%

EnableJidxColn

Cette entrée permet d'autoriser l'ajout de colonnes aux join index à l'aide dela liste des colonnes dans la feuille de propriétés du join index. Dans Oracle9i, un join index avec une liste de colonnes est un bitmap join index.

EnableOwner

Certains SGBD supportent le concept de propriétaire de join index. Si vouspositionnez cette entrée à oui, la zone Propriétaire s'affiche dans la feuille depropriétés du join index.

Exemple

Exemple

Page 174: advanfr.pdf

Catégorie Objects

164 PowerAMC

Qualifier

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Qualifier dans la définition de SGBD.

Entrée Exemple (Oracle 8)

Enable Enable = Yes

SqlListQuery —

Label Label=All Qualifiers

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Sequence

La catégorie Sequence contient des entrées qui définissent les paramètresassociés aux séquences.

Entrées courantes pour Sequence

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Sequence dans la définition de SGBD.

Entrée Exemple (Oracle 8)

Enable Enable = Yes

Create create sequence %SQNC%[%OPTIONS%]

Drop drop sequence %SQNC%

Page 175: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 165

Entrée Exemple (Oracle 8)

Options <initial> : composite=yes{increment by %dstart with %d}<maxvalue> : composite=yes{maxvalue %dnomaxvalue}<minvalue> : composite=yes{minvalue %dnominvalue}<cycle> %s : list= cycle | nocycle<cache> : composite=yes{cache %dnocache}<order> %s : list= order | noorder

DefOptions —

SqlListQuery {SQNC}SELECT sequence_nameFROM user_sequencesORDER BY sequence_name

SqlAttrQuery {SQNC ID, OPTIONS ...}

selectsequence_name,' increment by ' || increment_by ||decode(max_value,999999999999999999999999999, ' nomaxvalue ', -1 ,' nomaxvalue ' ,' maxvalue ' || max_value ) ||decode(min_value, 1, ' nominvalue ', -99999999999999999999999999, ' nominvalue ' , 'minvalue ' || min_value ) ||decode(cycle_flag, 'N' , ' nocycle ', ' cycle ') ||decode(cache_size, 20, '', 0, ' nocache ', ' cache ' ||cache_size) ||decode(order_flag, 'N', ' noorder ', 'order')fromuser_sequencesorder by 1

Rename rename %OLDNAME% to %NEWNAME%

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

Page 176: advanfr.pdf

Catégorie Objects

166 PowerAMC

Entrée Exemple (Oracle 8)

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

EnableOwner

Permet de définir des propriétaires de séquence.

Valeur Résultat

Yes La liste déroulante Propriétaire s'affiche dans la feuille de propriétés deséquence et l'utilisateur peut sélectionner un propriétaire pour laséquence courante

No La séquence ne prend pas en charge le propriétaire

EnableOwner = YES

SequenceComment

Instruction permettant d'ajouter un commentaire de séquence.

comment on sequence [%QUALIFIER%]%SQNC% is %.q:COMMENT%

Synonym

La catégorie Synonym contient des entrées qui définissent les paramètresassociés aux synonymes.

Entrées courantes pour Synonym

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet Synonym dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Enable Enable = Yes

Create create [%VISIBILITY% ]synonym[%QUALIFIER%]%SYNONYM% for[%BASEOWNER%]%BASEOBJECT%

Exemple

Exemple

Page 177: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 167

Entrée Exemple (Oracle 9i)

Drop drop [%VISIBILITY% ]synonym[%QUALIFIER%]%SYNONYM%

SqlListQuery {OWNER, SYNONYM, BASEOWNER, BASEOBJECT}

[%ISODBCUSER% ?select %.q:SCHEMA%, t.synonym_name, t.table_owner, t.table_namefrom sys.user_synonyms torder by t.table_name:select t.owner, t.synonym_name, t.table_owner, t.table_namefrom sys.all_synonyms twhere(1=1)[ and t.synonym_name=%.q:TABLE%][ and t.owner=%.q:SCHEMA%]order by t.owner, t.synonym_name]

SqlAttrQuery —

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Maxlen

Instruction permettant de définir la longueur maximum du code pour unobjet. Cette valeur est mise en oeuvre dans la vérification de modèle etproduit une erreur si le nom ou le code dépasse la longueur définie.

MaxLen = 30

EnableAlias

Instruction permettant de définir si le type d'alias de synonyme est admis.

Dans DB2 :

EnableAlias = Yes

Exemple

Exemple

Page 178: advanfr.pdf

Catégorie Objects

168 PowerAMC

DB Package

La catégorie DB Package contient des entrées qui définissent les paramètresassociés aux packages de base de données.

Entrées courantes pour DB Package

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet DB Package dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Enable Enable = Yes

Maxlen MaxLen = 30

Create Instruction permettant de créer the specification of thedatabase package

create [or replace ]package %DBPACKAGE% [authid%DBPACKAGEPRIV% ][%R%?[is][as]:as] %DBPACKAGESPEC%end [%DBPACKAGE%]

Drop drop package %DBPACKAGE%

SqlListQuery {{OWNER, DBPACKAGE}

[%ISODBCUSER% ?select distinct %.q:SCHEMA%, decode (type, 'PACKAGE', name, '')from sys.user_sourcewhere type in ('PACKAGE')order by 2:select distinct owner, decode (type, 'PACKAGE', name, '')from sys.all_sourcewhere type in ('PACKAGE')[ and owner = %.q:SCHEMA%]order by 1, 2]

Page 179: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 169

Entrée Exemple (Oracle 9i)

SqlAttrQuery{OWNER ID, DBPACKAGE ID, TYPE ID,

DBPACKAGESPEC ..., DBPACKAGEBODY ...}

[%ISODBCUSER% ?SELECT %.q:SCHEMA%, NAME, TYPE, TEXT,NULL, LINEFROM SYS.USER_SOURCE SWHERE TYPE = 'PACKAGE' AND LINE > 1 ANDLINE <> (SELECT MAX(S2.LINE) FROMSYS.USER_SOURCE S2 WHERE S2.TYPE =S.TYPE AND S2.NAME = S.NAME)UNIONSELECT %.q:SCHEMA%, NAME, TYPE, NULL,TEXT, LINEFROM SYS.USER_SOURCE SWHERE TYPE = 'PACKAGE BODY' AND LINE > 1AND LINE <> (SELECT MAX(S2.LINE) FROMSYS.USER_SOURCE S2 WHERE S2.TYPE =S.TYPE AND S2.NAME = S.NAME)ORDER BY NAME, TYPE, LINE:SELECT OWNER, NAME, TYPE, TEXT, NULL, LINEFROM SYS.ALL_SOURCE SWHERE TYPE = 'PACKAGE' AND LINE > 1 ANDLINE <> (SELECT MAX(S2.LINE) FROMSYS.USER_SOURCE S2 WHERE S2.TYPE =S.TYPE AND S2.NAME = S.NAME)UNIONSELECT OWNER, NAME, TYPE, NULL, TEXT, LINEFROM SYS.ALL_SOURCE SWHERE TYPE = 'PACKAGE BODY' AND LINE > 1AND LINE <> (SELECT MAX(S2.LINE) FROMSYS.ALL_SOURCE S2 WHERE S2.TYPE = S.TYPEAND S2.NAME = S.NAME)ORDER BY OWNER, NAME, TYPE, LINE]

ModifiableAttributes Liste des attributs étendus qui seront pris en compte dansla boîte de dialogue de fusion lors de la synchronisationde base de données

ReversedStatements Liste des instructions qui vont faire l'objet d'un reverseengineering

Pour obtenir une description de chacune des entrées communes auxobjets, reportez-vous à la section Entrées communes aux différents objets.

Page 180: advanfr.pdf

Catégorie Objects

170 PowerAMC

CreateBody

Template permettant de définir le corps du package de base de données.Cette instruction est utilisée pour l'instruction d'extension AfterCreate.

Dans Oracle 9i :create [or replace ]package body %DBPACKAGE% as %DBPACKAGEBODY%[begin %DBPACKAGEINIT%]end [%DBPACKAGE%]

AfterCreate

Instruction d'extension évaluée après l'instruction create DB package.

Pour plus d'informations sur les instructions d'extension, reportez-vousà la section Génération de script.

DB Package Procedure

La catégorie DB Package Procedure contient des entrées qui définissent lesparamètres associés aux procédures de package.

Entrées courantes pour DB Package Procedure

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet DB Package Procedure dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Add %DBPKPROCTYPE% %DBPKPROC%[(%DBPKPROCPARAM%)][ return %DBPKPROCRETURN%][[%R%?[is][as]:as]

%DBPKPROCCODE%]

Exemple

Page 181: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 171

DBProcedureBody

Template permettant de définir le corps de la procédure de package dans lapage Définition de la feuille de propriétés de procédure de package.

Dans Oracle 9i :

begin

end

ParameterTypes

Types disponibles pour les procédures de package.

Dans Oracle 9i :inin outoutout no copy

DB Package Variable

La catégorie DB Package Variable contient des entrées qui définissent lesparamètres associés aux variables de package.

Entrées courantes pour DB Package Variable

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet DB Package Variable dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Add %DBPKVAR% [%DBPKVARCONST% ]%DBPKVARTYPE%[ :=%DBPKVARVALUE%]

Exemple

Exemple

Page 182: advanfr.pdf

Catégorie Objects

172 PowerAMC

DB Package Type

La catégorie DB Package Type contient des entrées qui définissent lesparamètres associés aux types de package.

Entrées courantes pour DB Package Type

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet DB Package Type dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Add type %DBPKTYPE%[ is %DBPKTYPEVAR%]

DB Package Cursor

La catégorie DB Package Cursor contient des entrées qui définissent lesparamètres associés aux curseur de package.

Entrées courantes pour DB Package Cursor

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet DB Package Cursor dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Add cursor %DBPKCURSOR% [ (%DBPKPROCPARAM%)][ return%DBPKCURSORRETURN%][ is

%DBPKCURSORQUERY%]

ParameterTypes

Types disponibles pour le curseur de package.in

Exemple

Page 183: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 173

DB Package Exception

La catégorie DB Package Exception contient des entrées qui définissent lesparamètres associés aux exceptions de package.

Entrées courantes pour DB Package Exception

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet DB Package Exception dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Add %DBPKEXC% exception

DB Package Parameter

La catégorie DB Package Parameter contient des entrées qui définissent desparamètres relatifs aux paramètres du package.

Entrées courantes pour DB Package Parameter

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet DB Package Parameter dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Add %DBPKPARM% [%DBPKPARMTYPE% ]%DBPKPARMDTTP%

Page 184: advanfr.pdf

Catégorie Objects

174 PowerAMC

DB Package Pragma

La catégorie DB Package Pragma contient qui définissent les paramètresrelatifs au pragma de package.

Entrées courantes pour DB Package Pragma

Vous pouvez définir des valeurs pour les entrées courantes suivantes pourl'objet DB Package Pragma dans la définition de SGBD.

Entrée Exemple (Oracle 9i)

Add pragma %DBPKPRAGMA% (%DBPKPRAGMAOBJ%,%DBPKPRAGMAPARAM%)

Page 185: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 175

Commandes pour tous les objetsLes commandes suivantes sont définies dans la catégorie Objects ets'appliquent à tous les objets.

MaxConstLen

Commande permettant de définir la longueur maximale de nom de contrainteprise en charge par la base de données cible. Cette valeur est mise en oeuvredans la vérification de modèle et produit une erreur si le code dépasse lavaleur définie. Le nom de contrainte est également tronqué au moment de lagénération.

Longueur maximale pour les noms de contrainte :PowerAMC a une longueur maximale de 254 caractères pour les noms decontrainte. Si votre base de données prend en charge des noms decontrainte plus longs, vous devez définir les noms de contrainte de sortequ'ils se conforment à la limite de 254 caractères.

MaxConstLen = 128

EnableOption

Commande permettant d'activer les options physiques pour le modèle, lestables, les index, les clés alternatives et autres objets quis ont pris en chargepar le SGBD cible. Elle contrôle également la disponibilité de la pageOptions d'une feuille de propriétés d'objet.

Valeur Base de données cible Résultat

Yes Prend en charge les optionsphysiques, par exempleTablespaces, Storages, ouoptions physiques telles quepctfree et fillfactor

La page Options est disponible dans lafeuille de propriétés de l'objet

No Ne prend pas en charge lesoptions physiques

La page Options n'est pas disponibledans le feuille de propriétés de l'objet.Dans la page Base de données de laboîte de dialogue de génération, tous lesparamètres de génération sont grisés etne peuvent pas être sélectionnés

Exemple

Page 186: advanfr.pdf

Commandes pour tous les objets

176 PowerAMC

EnableOption = YESExemple

Page 187: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 177

Catégorie Data typeLa catégorie Data type définit les conversions de types de données entre lestypes de données PowerAMC et les types de données de SGBD.

AmcdDataType

Table de conversion des types de données qui montre les correspondancesentre les types de données internes de PowerAMC et ceux du SGBD. Cettetable est utilisée pendant la génération d'un MCD vers un MPD ainsi quelorsque vous changez de SGBD courant. Les variables suivantes sontutilisées pour qualifier les types de données :

Variable Indique

%n Longueur du type de données

%s Taille du type de données

%p Précision du type de données

En utilisant les variables définies pour qualifier la correspondance,PowerAMC crée une interface de fait entre ses types de données natifs etceux du SGBD choisi.

Dans Sybase Adaptive Server Enterprise 12 :

Type de donnéesASE 12 Type de données PowerAMC

A%n char(%n)

VA%n varchar(%n)

LA%n varchar(%n)

BT tinyint

Exemple

Page 188: advanfr.pdf

Catégorie Data type

178 PowerAMC

PhysDataType

Table de conversion des types de données qui montre les correspondancesentre les types de données du SGBD et ceux de PowerAMC. Cette table estutilisée pendant la génération d'un MPD vers un MCD ainsi que lorsque vouschangez de SGBD courant (utilisation des types de données internes dePowerAMC pour trouver un correspondance entre deux types de données defichier de définition de SGBD). Les variables suivantes sont utilisées pourqualifier les types de données :

Variable Indique

%n Longueur du type de données

%s Taille du type de données

%p Précision du type de données

En utilisant les variables définies pour qualifier la correspondance,PowerAMC crée une interface de fait entre ses types de données natifs etceux du SGBD choisi.

Dans Sybase Adaptive Server Enterprise 12 :

Type de donnéesPowerAMC Type de données ASE 12

sysname VA30

integer I

PhysDttpSize

Tableau des tailles de stockage pour les types de données de SGBD.

La taille de stockage appropriée est affectée à chaque type de données pour leSGBD sélectionné.

Dans Sybase Adaptive Server Enterprise 12.5 :

Type de donnéesASA 6 Taille de Storage

smallmoney 8

smalldatetime 4

datetime 8

timestamp 8

Exemple

Exemple

Page 189: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 179

OdbcPhysDataType

Table de conversion des types de données qui montre les correspondancesentre les types de données ODBC et ceux du SGBD.

Cette table est utilisée lors du reverse engineering via ODBC pour mettre encorrespondance les types de données extraits de la base de données et lestypes de données de SGBD. Bien que les types de données soient desconcepts identiques dans la base de données et le SGBD, la façon dont cestypes de données sont stockés dans la base de données diffère de la notationdans le SGBD. Par exemple, vous pouvez créer une colonne avec le type dedonnées decimal dans la base de données. Le type de données decimal eststocké sous la forme decimal(30,6) dans Sybase Adaptive ServerAnywhere 6. Cette précision (30,6) n'apparaissait pas dans votre commandecreate, et n'est pas requis lorsque vous utilisez les types de données deSGBD, "decimal" suffit. Lorsque vous procédez au reverse engineering de labase de données, le processus extrait des types de données tels qu'ils sontstockés dans la base de données, i.e. decimal(30,6). A ce stade, PowerAMCva utiliser la table de conversion pour mettre en correspondance les types dedonnées ODBC (decimal(30,6)) avec la notation préférée du type de donnéesSGBD (decimal).

Dans Sybase Adaptive Server Anywhere 6 :

Type de donnéesODBC Type de données ASA 6

numeric(30,6) numeric

char(1) char

binary(1) binary

decimal(30,6) decimal

Exemple

Page 190: advanfr.pdf

Catégorie Data type

180 PowerAMC

PhysOdbcDataType

Table de conversion des types de données de la base de données cible versles types de données ODBC.

Dans MS Access 95/97 :

Physique Type de données ODBC

Integer Short

LongInteger Long

OLE LongBinary

PhysLogADTType

Table de conversion des types de données abstraits cible vers les types dedonnées abstraits internes. Vous ne devez pas modifier ces valeurs.

Dans Sybase Adaptive Server Anywhere 6 :

Type de données physique debase de données Type de données PowerAMC

Java Java

LogPhysADTType

Table de conversion des types de données abstraits internes vers les types dedonnées abstraits cible. Vous ne devez pas modifier ces valeurs.

Dans Sybase Adaptive Server Anywhere 6 :

Type de données internesPowerAMC

Type de données physiques de basede données

Undefined Array

Undefined List

Java Java

Undefined Object

Undefined Structured

Exemple

Exemple

Exemple

Page 191: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 181

AllowedADT

Liste des types de données abstraits qui peuvent être utilisés comme types dedonnées pour les domaines et les colonnes.

Dans Sybase Adaptive Server Anywhere 6 :

JAVA

HostDataType

Conversion des types de données de base de données vers les types dedonnées de procédure.

Dans Oracle8 :

Type de données internesPowerAMC

Type de données physique debase de données

Number DEC

Number REAL

Number DOUBLE PRECISION

Float FLOAT

Integer INT

Integer INTEGER

Varchar VARCHAR(%n)

Varchar VARCHAR2(%n)

Exemple

Exemple

Page 192: advanfr.pdf

Variables de MPD

182 PowerAMC

Variables de MPDVous pouvez incorporer des variables dans les requêtes SQL du SGBDsélectionné. Ces variables sont remplacées par les valeurs de votre modèlelors de la génération du script.

Variables pour la génération de base de données, ainsi que celledes triggers et procedures

Nom de lavariable Commentaire

DATE Date et heure de génération

USER Nom de login de l'utilisateur exécutant la génération

PATHSCRIPT Emplacement pour la génération du fichier script

NAMESCRIPT Nom du fichier script dans lequel les commandes SQLdoivent être écrites

STARTCMD Description des modalités d'exécution du script généré

ISUPPER TRUE si l'option de génération Majuscules est sélectionnée

ISLOWER TRUE si l'option de génération Minuscules est sélectionnée

DBMSNAME Nom du SGBD associé au modèle généré

DATABASE Code de la base de données associée au modèle généré

USE_SP_PKEY Utilise la clé primaire de la procédure stockée pour créerdes clés primaires (spécifique à SQL Server)

USE_SP_FKEY Utilise la clé étrangère de procédure stockée pour créer desclés primaires (spécifique à SQL Server)

Page 193: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 183

Variables pour le reverse engineering

Nom de lavariable Commentaire

R Défini à TRUE lors du reverse engineering

S Permet de sauter un mot. La chaîne est analysée pour lereverse engineering, mais pas générée

D Permet de sauter une valeur numérique. La valeurnumérique est analysée pour le reverse engineering, maispas générée

A Permet de sauter tout le texte. Le texte est analysé pour lereverse engineering, mais pas généré

ISODBCUSER True si l'utilisateur courant est l'utilisateur connecté

CATALOG Nom du catalogue à utiliser dans des requêtes de reverseengineering ODBC

SCHEMA Variable qui représente un login utilisateur et l'objetappartenant à cet utilisateur dans la base de données. Vousdevez utiliser cette variable pour les requêtes sur les objetsrépertoriés dans les boîtes de dialogue de reverseengineering ODBC, car leur propriétaire n'est pas encoredéfini. Une fois le propriétaire d'un objet défini, vouspouvez utiliser SCHEMA ou OWNER

SIZE Taille du type de données de la colonne ou du domaine.Utilisé pour le reverse engineering ODBC, lorsque lalongueur n'est pas définie dans les tables système

VALUE Une valeur de la liste des valeurs dans une colonne ou dansun domaine

PERMISSION Permet de procéder au reverse engineering de permissionsdéfinies sur des objets de base de données

PRIVILEGE Permet de procéder au reverse engineering de privilègesdéfinis sur un utilisateur, un groupe ou un rôle

Page 194: advanfr.pdf

Variables de MPD

184 PowerAMC

Variables pour la synchronisation de base de données

Nom de lavariable Commentaire

OLDOWNER Nom de l'ancien propriétaire de l'objet. Voir aussiOWNER

NEWOWNER Nom du nouveau propriétaire de l'objet. Voir aussiOWNER

OLDQUALIFIER Ancien qualifiant de l'objet. Voir aussi QUALIFIER

NEWQUALIFIER Nouveau qualifiant de l'objet. Voir aussi QUALIFIER

OLDTABL Ancien code de la table

NEWTABL Nouveau code de la table

OLDCOLN Ancien code de la colonne

NEWCOLN Nouveau code de la colonne

OLDNAME Ancien code de la séquence

NEWNAME Nouveau code de la séquence

Variables pour la sécurité dans la base de données

Nom de lavariable Commentaire

PRIVLIST Liste des privilèges pour une commande grant/revoke

PERMLIST Liste des permissions pour une commande grant/revoke

USER Nom de l'utilisateur

GROUP Nom du groupe

ROLE Nom du rôle

GRANTEE Nom générique utilisé pour concevoir un utilisateur, ungroupe ou un rôle

PASSWORD Mot de passe pour un utilisateur, un groupe ou un rôle

OBJECT Objets de base de données (table, vue, colonne, etc.)

GRANTOPTION Option pour grant : with grant option / with admin option

REVOKEOPTION Option pour revoke : with cascade

Page 195: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 185

Variables pour les métadonnées

Nom de lavariable Commentaire

@CLSSNAME Nom localisé de la classe de l'objet. Ex : Table, View,Column, Index

@CLSSCODE Code de la classe de l'objet. Ex : TABL, VIEW, COLN,INDX

Variables communes pour tous les objets nommés

Nom de lavariable Commentaire

@OBJTNAME Nom de l'objet

@OBJTCODE Code de l'objet

@OBJTLABL Commentaire de l'objet

@OBJTDESC Description de l'objet

Variables communes pour les objets

Ces objets peuvent être des tables, des index, des vues, etc.

Nom de lavariable Commentaire

COMMENT Commentaire de l'objet ou son nom (en l'absence decommentaire)

OWNER Code généré pour l'utilisateur propriétaire de l'objet ou deson parent. N'utilisez pas cette variable pour les requêtessur les objets répertoriés dans les boîtes de dialogue dereverse engineering ODBC, car leur propriétaire n'est pasencore défini

DBPREFIX Préfixe de base de données des objets (nom de la base + '.'si la base est définie)

QUALIFIER Qualifiant de l'objet complet (préfixe de base + préfixe depropriétaire)

OPTIONS Texte SQL définissant les options physiques pour l'objet

Page 196: advanfr.pdf

Variables de MPD

186 PowerAMC

Nom de lavariable Commentaire

CONSTNAME Nom de contrainte de l'objet

CONSTRAINT Corps de la contrainte SQL de l'objet. Ex : (A <= 0) AND(A >= 10)

CONSTDEFN Définition de contrainte de colonne. Ex : contraint C1checks (A>=0) AND (A<=10)

RULES Concaténation d'expression serveur des règles de gestionassociée à l'objet

NAMEISCODE True si le nom et le code de l'objet (table, colonne, index)sont identiques (spécifique AS/400)

Variables relatives aux SGBD, options de base de données

Nom de lavariable Commentaire

TABLESPACE Code généré pour le tablespace

STORAGE Code généré pour le storage

Variables pour les tables

Nom de la variable Commentaire

TABLE Code généré pour la table

TNAME Nom de la table

TCODE Code de la table

TLABL Commentaire de la table

PKEYCOLUMNS Liste des colonnes de clé primaire. Ex : A, B

TABLDEFN Corps complet de la définition de table. Contient ladéfinition des colonnes, des contrôles et des clés

CLASS Nom de type de données abstrait

CLUSTERCOLUMNS Liste des colonnes utilisées pour un cluster

Page 197: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 187

Variables pour vérifications sur les domaines et sur les colonnes

Nom de lavariable Commentaire

UNIT Attribut Unité des paramètre de contrôle

FORMAT Attribut Format des paramètre de contrôle

DATATYPE Type de données. Ex : int, char(10) ou numeric(8, 2)

DTTPCODE Code du type de données. Ex : int, char ou numeric

LENGTH Longueur du type de données. Ex : 0, 10 ou 8

PREC Précision du type de données. Ex : 0, 0 ou 2

ISRDONLY TRUE si l'attribut Lecture seule est sélectionné dans lesparamètres de contrôle standard

DEFAULT Valeur par défaut

MINVAL Valeur minimum

MAXVAL Valeur maximum

VALUES Liste des valeurs. Ex : (0, 1, 2, 3, 4, 5)

LISTVAL Contrainte SQL associée à la liste des valeurs. Ex : C1 in(0, 1, 2, 3, 4, 5)

MINMAX Contrainte SQL associée aux valeurs minimale etmaximale. Ex : (C1 <= 0) AND (C1 >= 5)

ISMAND TRUE si le domaine ou la colonne est obligatoire

MAND Contient le mot clé "null" ou "not null" selon la valeur del'attribut Obligatoire

NULL Contient le mot clé "null" si le domaine ou la colonne estobligatoire

NOTNULL Contient le mot clé "not null" si le domaine ou la colonneest obligatoire

IDENTITY Mot clé "identity" si le domaine ou la colonne est de typeIdentity (spécifique Sybase)

WITHDEFAULT Mot clé "with default" si le domaine ou la colonne est detype With default

ISUPPERVAL TRUE si l'attribut Majuscules est sélectionné dans lesparamètres de contrôle standard

ISLOWERVAL TRUE si l'attribut Minuscules est sélectionné dans lesparamètres de contrôle standard

Page 198: advanfr.pdf

Variables de MPD

188 PowerAMC

Variables pour les colonnes

Les variables de table parent sont également disponibles.

Nom de lavariable Commentaire

COLUMN Code généré pour la colonne

COLNNO Position de la colonne dans la liste des colonnes de la table

COLNNAME Nom de la colonne

COLNCODE Code de la colonne

PRIMARY Contient le mot clé "primaire" si la colonne est une colonnede clé primaire

ISPKEY TRUE si la colonne fait partie d'une clé primaire

FOREIGN TRUE si la colonne fait partie d'une clé étrangère

COMPUTE Calcul du texte de la contrainte

Variables pour les types de données abstraits

Nom de lavariable Commentaire

ADT Code généré du type de données abstrait

TYPE Type du type de données abstrait. Contient des mots clés telsque "array", "list", …

SIZE Taille du type de données abstrait

FILE Fichier Java du type de données abstrait

ISARRAY TRUE si le type de données abstrait est de type Array

ISLIST TRUE si le type de données abstrait est de type List

ISSTRUCT TRUE si le type de données abstrait est de type Structure

ISOBJECT TRUE si le type de données abstrait est de type Object

ISJAVA TRUE si le type de données abstrait est de type JAVA class

ADTDEF Contient la définition du type de données abstrait

Page 199: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 189

Variable pour les attributs de types de données abstraites

Nom de lavariable Commentaire

ADTATTR Code généré pour l'attribut de type de données abstrait

Variable pour les domaines

Nom de lavariable Commentaire

DOMAIN Code généré du domaine (disponible également pour lescolonnes)

DEFAULTNAME Nom de l'objet par défaut associé au domaine (spécifique àSQL Server)

Variables pour les règles

Nom de lavariable Commentaire

RULE Code généré pour la règle

RULENAME Nom de la règle

RULECODE Code de la règle

RULECEXPR Expression client de la règle

RULESEXPR Expression serveur de la règle

Page 200: advanfr.pdf

Variables de MPD

190 PowerAMC

Variables pour ASE & SQL Server

Nom de lavariable Commentaire

RULENAME Nom de la règle associée au domaine

DEFAULTNAME Nom de l'objet par défaut associé au domaine

USE_SP_PKEY Utilise sp_primary_key pour créer des clés primaires

USE_SP_FKEY Utilise sp_foreign_key pour créer des clés étrangères

Variables pour les séquences

Nom de lavariable Commentaire

SQNC Nom de la séquence

SQNCOWNER Nom du propriétaire de la séquence

Variables pour les index

Nom de la variable Commentaire

INDEX Code généré pour l'index

TABLE Code généré du parent d'un index, peut être une tableou une table de requête (vue)

INDEXNAME Nom de d'index

INDEXCODE Code d'index

UNIQUE Contient le mot clé "unique" lorsque l'index estunique

INDEXTYPE Contient le type d'index (disponible uniquement pourun nouveau SGBD)

CIDXLIST Liste des codes d'index avec séparateur, sur la mêmeligne. Exemple : A asc, B desc, C asc

INDEXKEY Contient le mot clé "primary", "unique" ou "foreign"en fonction de l'origine de l'index

Page 201: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 191

Nom de la variable Commentaire

CLUSTER Contient le mot clé "cluster" lorsque l'index est detype cluster

INDXDEF Liste des colonnes d'index sans séparateur, surdifférentes lignes. Exemple :

ColnAColnBColnC

Variables pour les join indexes (IQ)

Nom de lavariable Commentaire

JIDX Code généré pour le join index

JIDXDEFN Corps complet des définitions de join index definition

REFRLIST Liste des références (pour ODBC)

RFJNLIST Liste des références de jointure (pour ODBC)

Variables pour les colonnes d'index

Nom de lavariable Commentaire

ASC Contient les mots clés "ASC" ou "DESC", selon l'ordre de tri

ISASC TRUE si l'ordre de tri de la colonne d'index est l'ordreascendant

Variables pour les références

Nom de lavariable Commentaire

REFR Code généré pour la référence

PARENT Code généré pour la table parent

PNAME Nom de la table parent

Page 202: advanfr.pdf

Variables de MPD

192 PowerAMC

Nom de lavariable Commentaire

PCODE Code de la table parent

PQUALIFIER Qualifiant de la table parent. Voir aussi QUALIFIER.

CHILD Code généré pour la table enfant

CNAME Nom de la table enfant

CCODE Code de la table enfant

CQUALIFIER Qualifiant de la table enfant. Voir aussi QUALIFIER.

REFRNAME Nom de référence

REFRCODE Code de référence

FKCONSTRAINT Nom de contrainte de clé étrangère (référence)

PKCONSTRAINT Nom de contrainte de clé primaire utilisée pour faireréférence à un objet

CKEYCOLUMNS Liste des colonnes de clé parent. Ex : C1, C2, C3

FKEYCOLUMNS Liste des colonnes de clé étrangère. Ex : C1, C2, C3

UPDCONST Contient des mots clés de contrainte déclarative pour lesmodifications : "restrict", "cascade", "set null" ou "setdefault"

DELCONST Contient des mots clés de contrainte déclarative pour lessuppressions : "restrict", "cascade", "set null" ou "setdefault"

MINCARD Cardinalité minimale

MAXCARD Cardinalité maximale

POWNER Nom du propriétaire de la table parent

COWNER Nom du propriétaire de la table enfant

CHCKONCMMT TRUE si vous avez coché la case "check on commit" pourla référence (spécifique à ASA 6.0)

REFRNO Numéro de référence dans la collection de référence de latable enfant

JOINS Jointures de référence

Page 203: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 193

Variables de colonnes de référence

Nom de la variable Commentaire

CKEYCOLUMN Code généré pour la colonne de table parent (cléprimaire)

FKEYCOLUMN Code généré pour la colonne de table enfant (cléétrangère)

PK Code généré pour la colonne de clé primaire

PKNAME Nom de la colonne de clé primaire

FK Code généré pour la colonne de clé étrangère

FKNAME Nom de colonne de clé étrangère

AK Code de colonne de clé alternative (identique à PK)

AKNAME Nom de colonne de clé alternative (identique àPKNAME)

COLTYPE Type de données de colonne de clé primaire

DEFAULT Valeur par défaut de colonne de clé primaire

HOSTCOLTYPE Type de données de colonne de clé primaire utilisé dansune déclaration de procédure. Par exemple : withoutlength

Variables pour les clés

Nom de la variable Commentaire

COLUMNSCOLNLIST

Liste des colonnes de la clé. Ex : "A, B, C"

ISPKEY TRUE lorsque la clé est une clé primaire de table

PKEY Nom de contrainte de clé primaire

AKEY Nom de contrainte de clé alternative

KEY Nom de contrainte de la clé

ISMULTICOLN True si la clé porte sur plusieurs colonnes

CLUSTER Mot clé cluster

Page 204: advanfr.pdf

Variables de MPD

194 PowerAMC

Variables pour les vues

Nom de lavariable Commentaire

VIEW Code généré pour la vue

VIEWNAME Nom de la vue

VIEWCODE Code de la vue

VIEWCOLN Liste des colonnes de la vue. Ex : "A, B, C"

SQL Texte SQL de la vue. Ex : Select * from T1

VIEWCHECK Contient le mot clé "with check option" si cette option estsélectionnée dans la vue

SCRIPT Commande complète de création de la vue. Ex : create viewV1 as select * from T1

Variables pour les triggers

Des variables de table parent sont également disponibles.

Nom de lavariable Commentaire

ORDER Numéro d'ordre du trigger (si le SGBD prend en chargeplusieurs triggers d'un même type)

TRIGGER Code généré du trigger

TRGTYPE Type de trigger. Contient les mots clés "beforeinsert","afterupdate", etc.

TRGEVENT Evénement déclencheur. Contient les mots clés "insert","update", "delete"

TRGTIME Moment du déclenchement. Contient les mots clés NULL,"before", "after"

REFNO Numéro d'ordre de référence dans la liste des références

ERRNO Numéro d'erreur pour une erreur standard

ERRMSG Message d'erreur pour une erreur standard

MSGTAB Nom de la table contenant des messages définis parl'utilisateur

MSGNO Nom de la colonne contenant des numéros d'erreur dans untableau d'erreurs défini par l'utilisateur

Page 205: advanfr.pdf

Chapitre 1 Guide de référence du SGBD

Documentation utilisateur avancée 195

Nom de lavariable Commentaire

MSGTXT Code de la colonne contenant des numéros d'erreur dans untableau d'erreurs défini par l'utilisateur

SCRIPT Script SQL du trigger ou de la procédure

TRGBODY Corps du trigger (uniquement pour le reverse engineeringODBC de Oracle)

TRGDESC Description du trigger (uniquement pour le reverseengineering ODBC de Oracle)

TRGDEFN Définition de trigger

Variables pour les procédures

Nom de lavariable Commentaire

PROC Code généré pour la procédure (également disponible pourun trigger si ce dernier est mis en oeuvre pas uneprocédure)

FUNC Code généré pour la procédure si la procédure est unefonction (avec une valeur de résultat)

Page 206: advanfr.pdf

Variables de MPD

196 PowerAMC

Page 207: advanfr.pdf

Documentation utilisateur avancée 197

C H A P I T R E 2

Gestion des profils

Ce chapitre explique comment gérer les profils PowerAMC.

Section Page

Notions de base relatives au concept de profil 198

Définition d'un stéréotype 206

Définition d'un critère 213

Définition d'un symbole personnalisé dans un profil 215

Définition d'attributs étendus dans un profil 218

Définition d'une vérification personnalisée dans un profil 221

Définition de templates et de fichiers générés dans un profil 229

Définition d'une collection étendue dans un profil 234

Définition d'une méthode dans un profil 237

Définition des transformations dans un profil 241

Définition d'un gestionnaire d'événement dans un profil 247

Définition de menus dans un profil 252

Utilisation de profils : une étude de cas 256

Sujet

Sommaire

Page 208: advanfr.pdf

Notions de base relatives au concept de profil

198 PowerAMC

Notions de base relatives au concept de profilPowerAMC utilise le concept du profil d'UML pour étendre la définition deson métamodèle afin de fournir des modèles et méthodes personnalisés pourla construction d'applications différentes.

PrérequisIl est recommandé de bien connaître la structure et la philosophie dumétamodèle afin de pouvoir faire une utilisation optimale des profilsPowerAMC.

Qu'est-ce qu'un profil ?

Un profil est un mécanisme d'extension utilisé pour la personnalisation d'unmétamodèle à l'aide de sémantiques supplémentaires. Les profils sont utiliséspour créer des catégories d'objets (stéréotypes et critères), personnaliser lesgraphiques des objets, ajouter des métadonnées supplémentaires aux objets(attributs étendus), définir des fonctionnalités de génération nouvelles oumodifiées (templates), et ajouter des méthodes, des transformations et descollections étendues sur les métaclasses et menus.

Vous créez un profil lorsque vous avez besoin de concevoir uneméthodologie utilisateur, un modèle ayant une signification prédéfinie oubien pour une cible de génération particulière.

Dans PowerAMC, un profil permet de définir différentes extensions pour lesmétaclasses disponibles dans le métamodèle. De telles extensions, telles queles stéréotypes, les symboles ou les contrôles, sont utilisées pour compléter ladéfinition standard d'une métaclasse.

Les profils s'affichent dans tous les SGBD, les langages objet et lesdéfinitions étendues de modèle fournis avec PowerAMC. Par défaut, chaquefichier de ressource est doté d'un profil dès sa création.

Le Modèle de Processus Métiers PowerAMC permet de concevoir lesdifférentes tâches internes d'une société ainsi que la façon dont les partenairesinteragissent avec ces tâches et processus.

Si vous sélectionner le langage de processus ebXML, vous bénéficiez destéréotypes spécifiques, d'attributs étendus et de templates ainsi que d'autresextensions adaptées au standard ebXML. Vous pouvez utiliser cesstéréotypes définis dans le langage de processus ebXML pour définir plusavant les processus dans votre modèle et les transformer en<<BinaryCollaboration>>, <<BusinessTransaction>>, etc.

Exemple

Page 209: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 199

Pour plus d'informations sur ebXML, reportez-vous au manuel Guidede l'utilisateur du Modèle de Processus Métiers.

Le mécanisme d'extension peut être mis en oeuvre à différents niveaux :

Au niveau métaclasse Lorsque vous définissez une extension dans unemétaclasse, cette extension s'applique à toutes les instances de la métaclassesélectionnée. L'extension est globale

Au niveau instance Si vous définissez une extension dans un stéréotypeou dans un critère, cette extension s'applique aux instances ayant lestéréotype approprié ou qui vérifient la condition du critère. L'extension estdéfinie sur une base de niveau instance

Les extensions de profil prennent en charge l'héritage pour permettre deréutiliser les extensions entre les métaclasses d'un parent commun. Lesextensions communes doivent être définies sur des métaclasses abstraitespour que la métaclasse concrète hérite d'elles.

Extensions disponibles

Selon le niveau auquel vous définissez les extensions, différents élémentssont disponibles.

Vous pouvez attacher plusieurs fichiers de ressource à un modèle, il s'agitalors de plusieurs définitions étendues de modèle ainsi que du langage objetou de SGBD du modèle. Les extensions définies dans chaque fichier deressource s'affichent dans des pages distinctes pour indiquer leur origine.

Niveauxd'extension

Héritage

Page 210: advanfr.pdf

Notions de base relatives au concept de profil

200 PowerAMC

Par exemple, dans un MPD, les attributs étendus peuvent être définis pourune table dans le SGBD ainsi que dans les définitions étendues de modèleattachées au modèle, ils sont affichés sur différents onglets dans la pageAttributs étendus de la feuille de propriétés de table.

Un conflit se produit lorsque les extensions ayant des noms identiques sontdéfinies sur les mêmes métaclasses dans différents fichiers de ressourcesattachés au même modèle.

Par exemple, le stéréotype <<document>> est défini pour les composantsdans deux définitions étendues de modèle attachées au même MOO. Danschaque définition étendue de modèle, le stéréotype <<document>> a unsymbole personnalisé différent. Un conflit se produit dès lors que vous créezun composant et lui affectez le stéréotype <<document>> : PowerAMC vasélectionner de façon aléatoire l'un des symboles.

En cas de conflit entre SGBD ou langage objet et définition étendue demodèle, c'est le plus souvent la définition étendue de modèle qui prévaut.

Conflit d'extensions

Page 211: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 201

Les extensions définies sur une métaclasse s'appliquent à toutes les instancesde la métaclasse. Vous pouvez étendre les sémantiques d'une métaclasse àl'aide des éléments suivants :

♦ Stéréotypes : ils sont utilisés pour sous-classifier les instances d'unemétaclasse

♦ Attributs étendus : ils sont utilisés pour enrichir la définition d'unemétaclasse ainsi que pour contrôler la génération

♦ Symbole personnalisé et outil personnalisé : ils permettent auxutilisateurs de mieux identifier la métaclasse

♦ Vérifications personnalisées : elles sont utilisées pour affiner lavérification de la métaclasse dans votre modèle

♦ Fichiers générés et templates : ils sont utilisés pour personnaliser lagénération pour la métaclasse

♦ Critères : ils sont utilisés pour évaluer des conditions sur une métaclasse

♦ Collections étendues : elles sont utilisées pour ajouter des collections àdes métaclasses

♦ Méthodes : elles peuvent être définies sur une métaclasse

♦ Transformations : elles sont utilisées pendant la génération de modèleou directement appliquées dans le modèle

♦ Gestionnaires d'événement : ils sont déclenchés lorsque certainsévénements se produisent sur un objet

♦ Menus : ils permettent d'appeler des méthodes pour une instance demétaclasse

Les extensions définies pour un stéréotype ou pour un critère s'appliquent auxinstances de métaclasse ayant le stéréotype ou vérifiant la condition ducritère.

Vous pouvez définir les extensions suivantes dans un stéréotype ou dans uncritère :

♦ Attributs étendus : ils sont utilisés pour enrichir la définition del'instance de métaclasse ainsi que pour contrôler la génération

♦ Symbole personnalisé et outil personnalisé (l'outil personnalisé n'estdisponible que pour les stéréotypes) : ils permettent aux utilisateursd'identifier plus facilement l'instance de métaclasse

♦ Vérifications personnalisées : elles sont utilisées pour affiner lavérification de l'instance de métaclasse dans votre modèle

Extensions demétaclasse

Stéréotype etcritère

Page 212: advanfr.pdf

Notions de base relatives au concept de profil

202 PowerAMC

♦ Fichiers générés et templates : ils sont utilisés pour personnaliser lagénération pour la métaclasse

♦ Collections étendues (uniquement disponibles pour les stéréotypes) :elles sont utilisées pour ajouter des collections à des métaclasses

♦ Méthodes : elles peuvent être définies sur une métaclasse

♦ Transformations : elles sont utilisées pendant la génération de modèleou directement appliquées dans le modèle

♦ Gestionnaires d'événement (uniquement disponibles pour lesstéréotypes) : ils sont déclenchés lorsque certains événements seproduisent sur un objet

♦ Menus : ils permettent d'appeler des méthodes pour une instance demétaclasse

Ajout d'une métaclasse dans un profil

Selon le type de fichier de ressources sur lequel vous travaillez, la liste desmétaclasses pré-existantes peut changer dans la catégorie Profile.

La procédure d'ajout d'une métaclasse requiert de sélectionner des élémentsparmi une large gamme de métaclasses PowerAMC existantes. Dans la boîtede dialogue de sélection, vous pouvez utiliser l'outil Modifier le filtre desmétaclasses pour afficher toutes les métaclasses conceptuelles, concrètes ouabstraites, dans la liste de sélection.

Pour plus d'informations sur le métamodèle PowerAMC, reportez-vousau chapitre Métamodèle public PowerAMC.

Toutes les métaclasses concrètes qui ont un nom et un code affichent la zonede liste déroulante Convention de dénomination de code. Cette liste permetde sélectionner un script de conversion du nom en code pour toutes lesinstances de la métaclasse sélectionnée. Le processus assure la conversionautomatique des noms en codes en fonction de la convention sélectionnée, etpourvu que la case Permet les conversions nom-code dans la pageConventions de dénomination soit cochée.

Conventions dedénomination decode

Page 213: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 203

Vous pouvez choisir l'un des scripts de conversion suivants :

Convention dedénomination de code Description

firstLowerWord Première lettre en minuscule, ensuite les premièreslettres des autres mots en majuscules

FirstUpperChar Première lettre de chaque mot en majuscules

lower_case Tous les mots en minuscules et séparés par un traitde soulignement

UPPER_CASE Tous les mots en majuscules et séparés par un traitde soulignement

Lorsque vous sélectionnez une convention de dénomination de code, le scriptde conversion s'affiche comme un paramètre dans la page de script de la boîtede dialogue des options de modèle dès que vous créez un nouveau modèle oumodifiez la cible du modèle courant.

Pour plus d'informations sur les scripts de conversion et les conventionsde dénomination, reportez-vous à la section Macros .convert_name &.convert_code, dans le chapitre Gestion des modèles dans le Guide desfonctionnalités générales.

Lorsque vous ajoutez une métaclasse dans un profil, vous pouvez cocher lacase Activer la sélection pour la génération de fichiers afin de faire apparaîtreles instances de métaclasse dans la page Sélection de la boîte de dialogue degénération étendue. Si une métaclasse parent est sélectionnée pour lagénération de fichier, les métaclasses enfant sont également affichées dans lapage Sélection.

Pour ajouter une métaclasse dans un profil :

1 Pointez sur la catégorie Profile et cliquez le bouton droit de la souris,puis sélectionnez Ajouter des métaclasses dans le menu contextuel.

La boîte de dialogue Sélection de métaclasses s'affiche.

2 Cliquez sur l'onglet approprié pour afficher la page contenant lamétaclasse que vous souhaitez sélectionner.

Vous pouvez utiliser l'outil de filtrage pour afficher les métaclasses quevous souhaitez ajouter au profil.

Activer la sélectionpour la générationde fichiers

Page 214: advanfr.pdf

Notions de base relatives au concept de profil

204 PowerAMC

3 Sélectionnez une ou plusieurs métaclasses.

4 Cliquez sur OK.

La catégorie correspondant aux métaclasses sélectionnées s'affiche sousla catégorie Profile. Le nom et le parent de la métaclasse ne peuvent pasêtre modifiés.

5 <facultatif> Cochez ou décocher la case Activer la sélection pour lagénération de fichiers.

6 <facultatif> Saisissez un commentaire dans la zone Commentaire.

Page 215: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 205

Ajout d'une métaclasse parentSi la métaclasse parent ne s'affiche pas sous Profile, lorsque vouscliquez sur l'outil Propriétés en regard de la métaclasse Parent, unmessage s'affiche pour vous permettre d'insérer automatiquement lenoeud de la métaclasse sous Profile

Exclusion d'une métaclasse d'un modèle

La case à cocher Exclure du modèle est utilisée pour supprimer touteréférence à la métaclasse sélectionnée dans le modèle. Cette fonctionnalitén'est pas disponible pour les métaclasses abstraites ou les métaclasses n'étantpas des métaclasses de conception.

Cette fonctionnalité influe sur les menus, la palette, les feuilles de propriétésetc, ce pour simplifier l'interface de votre modèle. Par exemple, si vousn'utilisez pas les règles de gestion, vous pouvez cocher la Case Exclure dumodèle dans la feuille de propriétés de la métaclasse de règle de gestion.

Lorsque plusieurs définitions étendues de modèle et fichiers de ressourcessont définis dans un modèle, la métaclasse est exclue si l'un au moins desfichiers de ressources exclut cette métaclasse et qu'aucun autre fichier deressources ne l'active de façon explicite.

Si un modèle contient déjà des instances de cette métaclasse, les objets sontconservés mais il est impossible d'en créer de nouveaux.

Page 216: advanfr.pdf

Définition d'un stéréotype

206 PowerAMC

Définition d'un stéréotypeLes stéréotypes sont utilisés pour classifier les instances et rassembler desextensions pour une métaclasse qui prend en charge le concept de stéréotype.

Les stéréotypes peuvent également servir à créer une métaclasse à l'intérieurd'une métaclasse donnée, dans cette section, nous les appellerons stéréotypesmétaclasse. Ce mécanisme transforme le stéréotype en une sorte demétaclasse : toutes les instances portant le stéréotype métaclasse sontgroupées sous une métaclasse parent dans l'arbre de l'Explorateur ou dans laboîte de dialogue de fusion. Un stéréotype métaclasse crée également unsous-espace de nom dans une métaclasse, ce qui permet d'avoir des instancesde même nom mais avec différents stéréotypes métaclasse au sein d'unemême métaclasse.

Les stéréotypes peuvent également servir à créer des sous-classifications ausein d'une métaclasse donnée. Vous pouvez donner à un stéréotype le statutde métaclasse à l'intérieur d'une métaclasse existante.

Vous pouvez définir plusieurs stéréotypes pour une métaclasse donnée. Lesstéréotypes que vous créez peuvent être appliqués à n'importe quelle instancede la métaclasse. Toutefois, les extensions définies dans un stéréotype nes'appliquent qu'aux instances auxquelles le stéréotype est appliqué. C'est pourcette raison que l'utilisation des stéréotypes est considérée comme unmécanisme d'extension par instance.

Les stéréotypes prennent en charge l'héritage : les caractéristiques du parentd'un stéréotype sont héritées par les stéréotypes enfant.

Propriétés de stéréotype

Lorsque vous définissez un stéréotype, vous devez définir les propriétéssuivantes :

Propriété Description

Nom Nom du stéréotype tel qui s'affichera dans la liste déroulanteStéréotype de la feuille de propriétés de l'objet

Parent Nom du parent du stéréotype courant. Vous pouvez utiliser laliste déroulante pour sélectionner un stéréotype défini dans lamême métaclasse ou dans une métaclasse parent. Vous pouvezutiliser le bouton Propriétés pour sélectionner le stéréotypeparent dans l'arborescence et afficher ses propriétés

Héritage

Page 217: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 207

Propriété Description

Abstrait Le stéréotype ne peut pas être appliqué aux instances demétaclasse, ce stéréotype ne s'affiche pas dans la listedéroulante Stéréotype de la feuille de propriétés de l'objet, et nepeut être utilisé que comme parent d'autres stéréotypes enfant.Lorsque vous sélectionnez cette propriété, la case à cocherUtiliser comme métaclasse n'est pas disponible

Utiliser commemétaclasse

Le stéréotype devient une sous-classification des instances de lamétaclasse sélectionnée. Les instances de même stéréotypeseront regroupées dans la catégorie de la métaclasse au niveaude l'Explorateur ou de la boîte de dialogue de fusion. Cetteoption permet également de créer un sous-espace de nom defaçon à avoir dans la même métaclasse des instances de mêmenom mais avec différents stéréotypes utilisés comme métaclasse

Outilpersonnalisédans la palette

Si vous cochez cette case, vous pouvez associer un outil dansune palette au stéréotype courant. Cette option est disponiblepour les objets qui prennent en charge des symboles, et n'estpas disponible pour des objets comme les attributs, par exemple

Commentaire Informations supplémentaires relatives au stéréotype

Pour plus d'informations sur l'affectation d'un outil personnalisé à unstéréotype, reportez-vous à la section Affectation d'un outil à un stéréotype.

Création d'un stéréotype

Vous pouvez créer un ou plusieurs stéréotypes pour une métaclasse donnée.Vous ne pouvez pas créer un stéréotype au sein d'un autre stéréotype ou ausein d'un critère.

Pour créer un stéréotype:

1 Pointez sur une métaclasse, cliquez le bouton droit de la souris etsélectionnez Nouveau→Stéréotype dans le menu contextuel.

Un nouveau stéréotype est créé avec un nom par défaut.

2 Saisissez un nom de stéréotype dans la zone Nom.

3 <facultatif> Sélectionnez un stéréotype parent dans la liste déroulanteParent.

4 <facultatif> Sélectionnez la case Utiliser comme métaclasse si voussouhaitez créer une sous-classification à l'intérieur de la métaclassecourante.

Page 218: advanfr.pdf

Définition d'un stéréotype

208 PowerAMC

5 <facultatif> Définissez une icône pour le stéréotype à l'aide de l'outilRechercher le fichier d'icône et de curseur de l'outil.

6 <facultatif> Cochez la case Outil personnalisé dans la palette pourassocier un outil au stéréotype, puis sélectionnez l'apparence de l'outil.

7 <facultatif> Saisissez un nom par défaut dans la zone Nom par défaut sivous souhaitez créer un template de nom portant le stéréotype courant.

Une fois que vous avez créé le stéréotype, vous pouvez définir desextensions telles qu'un outil personnalisé, ou bien des vérificationspersonnalisées pour le stéréotype. Ces extensions seront appliquées auxinstances de métaclasse avec le stéréotype.

Utilisation d'un stéréotype comme métaclasse

Les stéréotypes peuvent être utilisés pour créer des sous-classifications àl'intérieur d'une métaclasse donnée. Vous pouvez sélectionner la case Utilisercomme métaclasse dans la feuille de propriétés du stéréotype et faire dustéréotype une métaclasse dans la métaclasse courante.

Cette fonctionnalité permet par exemple d'avoir des objets portant des nomsidentiques mais avec des stéréotypes différents dans un même espace de nom.Elle regroupe également les instances par stéréotypes dans l'Explorateur, leslistes déroulantes ou la boîte de dialogue de fusion pour en faciliterl'identification.

Page 219: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 209

Pour utiliser un stéréotype comme une métaclasse :

1 Pointez sur une métaclasse, cliquez le bouton droit de la souris, puissélectionnez Nouveau→Stéréotype dans le menu contextuel.

Un nouveau stéréotype est créé avec un nom par défaut.

2 Saisissez un nom d et un parent dans les champs correspondants.

3 Sélectionnez la case Utiliser comme métaclasse.

4 Cliquez sur Appliquer.

Attacher une icône à un stéréotype

Vous pouvez attacher une icône au stéréotype que vous avez défini pouridentifier les instances de la métaclasse portant le stéréotype. Lorsque vousaffecterez le stéréotype à une instance de métaclasse, celle-ci affichera l'icônecorrespondante au lieu de l'icône habituelle dans l'interface PowerAMC.

Aucune icône n'est sélectionnée par défaut, vous pouvez utiliser l'outilParcourir pour sélectionner un fichier ayant l'extension .cur ou .ico. Vouspouvez créer vos propres icônes ou curseurs à l'aide d'éditeurs tiers ou lesacheter à des graphistes.

Si vous sélectionnez la case à cocher Outil personnalisé dans la palette,l'icône est automatiquement initialisée avec l'icône système, ceci ne vousempêche pas de la modifier à l'aide de l'outil Parcourir.

Lorsque vous sélectionnez une nouvelle icône, celle-ci est copiée etenregistrée dans le fichier de ressources. Cette icône s'affiche dans la liste desicônes disponibles dans la catégorie Outils graphiques personnalisés de laboîte de dialogue Personnalisation des barres d'outils :

Page 220: advanfr.pdf

Définition d'un stéréotype

210 PowerAMC

Pour attacher une icône à un stéréotype :

1 Dans la page de propriétés du stéréotype, cliquez sur l'outil Rechercherle fichier d'icône et de curseur de l'outil pour afficher une boîte dedialogue standard d'ouverture de fichier dans laquelle vous pouvezsélectionner un fichier ayant le suffixe .cur ou .ico..

2 Cliquez sur Appliquer.

Affectation d'un outil à un stéréotype

Vous pouvez attacher un outil au stéréotype que vous avez défini afin defaciliter la création d'instances stéréotypées de la métaclasse. Tous les outilspersonnalisés s'affichent dans une palette d'outils sous le même nom que lefichier de ressources auquel ils appartiennent.

L'outil est identique à l'icône de stéréotype. Si vous ne sélectionnez pasd'icône, l'icône système sera affectée à l'outil par défaut. Vous devezsélectionner une icône pour modifier l'outil personnalisé du stéréotype.

Pour plus d'informations sur comment attacher une icône à unstéréotype, reportez-vous à la section Attacher une icône à un stéréotype.

Pour attacher un outil à un stéréotype :

1 Dans la page feuille de propriétés d'un stéréotype, cochez la case Outilpersonnalisé dans la palette pour activer les champs situés dans la partieinférieure de la boîte de dialogue.

Page 221: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 211

2 <facultatif> Sélectionnez une icône pour modifier l'outil par défaut.

Vous pouvez cliquer dans la zone de test pour vérifier l'aspect ducurseur.

3 Cliquez sur Appliquer.

Définition de noms par défaut pour des objets stéréotypés

Vous pouvez définir un nom par défaut pour les objets créés à l'aide d'unoutil personnalisé de stéréotype.

Le nom par défaut peut s'avérer très utile lorsque vous concevez pour unlangage cible ou une application ayant des conventions de dénominationstrictes. Toutefois, le nom par défaut ne prévaut pas sur les conventions dedénomination de modèle, de telle sorte que si un nom ne respecte pas cesdernières, il est automatiquement modifié.

Page 222: advanfr.pdf

Définition d'un stéréotype

212 PowerAMC

Vous pouvez utiliser la syntaxe %d pour définir la position du compteurdans le nom par défaut. Par exemple, vous pouvez définir %d_boundarycomme nom par défaut pour les objets <<boundary>>. Dans ce cas, lecompteur s'affiche avant le nom de l'objet et le troisième objet boundary créédans le diagramme sera nommé 3_boundary:

Page 223: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 213

Définition d'un critèreLes critères sont un autre mécanisme d'extension plus générique pour lesmétaclasses PowerAMC. Les critères sont également utilisés pour les objetsqui ne prennent pas en charge les stéréotypes, par exemple les objets deMCD ou de MPD.

Un critère définit une condition avec les expressions utilisées dans la macro.if du langage de génération par templates (GTL) PowerAMC. Vous pouvezégalement utiliser les attributs étendus définis au niveau de la métaclassedans la condition du critère, mais vous ne pouvez pas utiliser ceux définisdans le critère lui-même.

Lorsqu'une instance de métaclasse vérifie les conditions du critère, lesextensions définies sur le critère sont appliquées à cette instance.

Pour plus d'informations sur le langage de génération par templatesPowerAMC et sur la macro .if, reportez-vous au chapitre Guide de référencede la génération.

Vous pouvez définir un ou plusieurs critères pour une métaclassesélectionnée. Les critères permettent de définir les mêmes extensions que lesstéréotypes.

Dans un MPD, vous pouvez souhaiter personnaliser les symboles des tablesde fait. Vous pouvez créer un critère nommé "type-fait" qui va tester le typede la table en utilisant la condition suivante :

(%DimensionalType%) == "1"

DimensionalType est un attribut de l'objet BaseTable. Il dispose d'un jeu devaleurs définies parmi lesquelles 1 correspond aux types dimensionnels defait. Vous pouvez afficher cet attribut dans la section Table de la bibliothèquePdPDM située dans l'aide des objets de script PowerAMC (pdvbs10.chm).

Vous définissez ensuite un symbole personnalisé pour ce critère.

Pour plus d'informations sur les symboles personnalisés, reportez-vousà la section Définition d'un symbole personnalisé dans un profil.

Pour définir un critère :

1 Pointez sur une métaclasse, cliquez le bouton droit de la souris, puissélectionnez Nouveau→Critère dans le menu contextuel.

Un nouveau critère est créé avec un nom par défaut.

2 Modifiez le nom par défaut dans la zone Nom.

3 Saisissez une condition dans la zone Condition.

Exemple

Page 224: advanfr.pdf

Définition d'un critère

214 PowerAMC

Dans la syntaxe du critère, vous pouvez utiliser n'importe quelleexpression valide utilisée par la macro .if, mais vous ne devez pas saisirla macro elle-même.

Pour plus d'informations sur la macro .if, voir la section Utilisationdes macros , reportez-vous à la section Guide de référence de lagénération.

4 <facultatif> Saisissez un commentaire dans la zone Commentaire.

5 Cliquez sur OK.

Pour pouvez définir des extensions pour le nouveau critère.

Page 225: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 215

Définition d'un symbole personnalisé dans unprofil

PowerAMC permet de personnaliser le format des symboles afin de faire ensorte que le diagramme reflète la sémantique de la métaclasse. Vous pouvezpersonnaliser les symboles et le format modifié du symbole peut devenir unepréférence d'affichage par défaut.

Vous pouvez définir un symbole personnalisé par métaclasse, stéréotype oucritère.

Si vous définissez un symbole personnalisé dans une catégorie demétaclasse Toutes les instances de la métaclasse et un enfant de cettemétaclasse utiliseront le symbole personnalisé

Si vous définissez un symbole personnalisé dans un stéréotype oucritère sélectionné Seules les instances ayant le stéréotype ou critèresélectionné affichent le symbole personnalisé

Dans les autres cas Le format de symbole par défaut tel qu'affiché dansles préférences d'affichage est utilisé

Personnalisation d'un symbole

Vous pouvez personnaliser le format d'un symbole à l'aide de la boîte dedialogue Format de symbole. Les paramètres de format sont disponibles viales différentes pages de cette boîte de dialogue :

♦ Taille : pour définir une taille, l'ajustement automatiquement et lesproportions

♦ Style de trait : pour définir la couleur, l'épaisseur, le style et les anglesdes lignes et l'affichage des flèches sur les lignes

♦ Remplissage : pour définir le style et la couleur de remplissage

♦ Ombre : pour ajouter une ombre au symbole et définir sa couleur

♦ Police : pour définir le style et la taille de police

♦ Forme personnalisée : pour modifier la forme par défaut d'un symbole ensélectionnant parmi des bitmaps, des métafichiers ou des icônes

Pour plus d'informations sur la boîte de dialogue Format de symbole,reportez-vous à la section Modification de l'apparence d'un symbole dans lechapitre Manipulations graphiques du manuel Guide des fonctionnalitésgénérales.

Page 226: advanfr.pdf

Définition d'un symbole personnalisé dans un profil

216 PowerAMC

Définition d'un symbole personnalisé

Vous ne pouvez définir qu'un seul symbole personnalisé par métaclasse,stéréotype ou critère. Les enfants de métaclasse héritent de tout symbolepersonnalisé défini sur une métaclasse parent.

Lorsque vous créez un symbole personnalisé, le nom de ce symbole estautomatiquement affecté, vous pouvez taper un commentaire dans la zonecorrespondante si vous souhaitez compléter la définition du symbolepersonnalisé. Vous avez également la possibilité de modifier la taille pardéfaut du symbole. La plupart des actions de personnalisation sont effectuéesdans la boîte de dialogue Format de symbole qui s'affiche lorsque vouscliquez sur le bouton Modifier dans la page Symbole personnalisé.

Pour plus d'informations sur la boîte de dialogue Format de symbole,reportez-vous à la section Modification de l'apparence d'un symbole dans lechapitre Manipulations graphiques du manuel Guide des fonctionnalitésgénérales.

Pour définir un symbole personnalisé :

1 Pointez sur une métaclasse dans la catégorie Profile et cliquez sur lebouton droit de la souris, puis sélectionnez Nouveau→Symbolepersonnalisé.ouPointez sur un stéréotype ou un critère dans une métaclasse, puissélectionnez Nouveau→Symbole personnalisé.

Un nouveau symbole est créé sous la catégorie sélectionnée.

2 <facultatif> Saisissez un commentaire dans la zone Commentaire.

3 Définissez une taille par défaut dans la zone de groupe Taille par défaut.

Page 227: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 217

4 Cliquez sur le bouton Modifier pour afficher la boîte de dialogue Formatde symbole.

5 Modifiez le format du symbole dans les différents pages de la boîte dedialogue Format de symbole.

6 Cliquez sur OK.

7 Cliquez sur Appliquer dans l'éditeur de ressources.

Page 228: advanfr.pdf

Définition d'attributs étendus dans un profil

218 PowerAMC

Définition d'attributs étendus dans un profilLes attributs étendus sont définis pour une métaclasse, un stéréotype ou uncritère. Ils sont utilisés pour compléter la définition de la métaclasse ou deses instances afin de :

♦ Contrôler la génération pour une cible de génération donnée. Parexemple, la définition étendue de modèle pour BEA Weblogic contientdes attributs étendus tels que Weblogic-generator-type utilisés pourdéfinir un type de générateur

♦ Enrichir la définition des modèles

Les attributs étendus ont un type utilisé pour définir leur type de données etles valeurs autorisées.

Création d'un type d'attribut étendu

Les types d'attribut étendu sont utilisés pour définir le type de données et lesvaleurs autorisées pour des attributs étendus. Les types d'attribut étendu sontcréés dans le dossier Shared. Une fois définis, ces types sont disponibles dansla liste déroulante Type de données dans la feuille de propriétés d'attributétendu.

Pour créer un type d'attribut étendu :

1 Pointez sur la catégorie Profile\Shared, cliquez le bouton droit de lasouris, puis sélectionnez Nouveau→Type d'attribut étendu dans le menucontextuel.

Un nouveau type d'attribut étendu est créé sous la catégorieProfile\Shared\Extended Attribute Types.

Page 229: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 219

2 Sélectionnez le type d'attribut étendu et saisissez un nom, uncommentaire, une liste de valeurs et une valeur par défaut dans les zonesappropriées dans le volet droit de l'éditeur.

3 Cliquez sur Appliquer.

Création d'un attribut étendu

Un attribut étendu est une autre extension de la définition d'une métaclasse.Vous pouvez créer un attribut étendu :

♦ Dans la métaclasse si vous souhaitez l'appliquer à toutes les instances dela métaclasse

♦ Dans un stéréotype ou un critère, si vous souhaitez appliquer l'attributétendu à des instances de métaclasse sélectionnées

Les attributs étendus définis dans la métaclasse parent sont hérités par lesmétaclasses enfant. Il s'affichent dans l'onglet Attributs étendus d'une feuillede propriétés d'objet.

Les attributs étendus sont utilisés de la façon suivante lors de la génération :

Si la case Template est cochée L'attribut étendu est considéré commeun template de GTL et son code est remplacé par les valeurs du modèle lorsde la génération. Par exemple, l'attribut étendu roleBContainer contient letemplate %Code%, il sera généré sous la forme "Customer".

Page 230: advanfr.pdf

Définition d'attributs étendus dans un profil

220 PowerAMC

Si la case Template est décochée L'attribut étendu est considérécomme du texte lors de la génération. Par exemple, l'attribut étenduroleBContainer contient le template %Code%, il sera généré sous la forme%Code%.

Pour créer un attribut étendu :

1 Pointez sur une métaclasse dans la catégorie Profile et cliquez sur lebouton droit de la souris, puis sélectionnez Nouveau→Attribut étendu.ouPointez sur un stéréotype ou un critère dans une métaclasse, puissélectionnez Nouveau→Attribut étendu.

Un nouvel attribut étendu est créé sous la catégorie sélectionnée.

2 Sélectionnez le nouvel attribut étendu et saisissez un nom, uncommentaire, un type de données et une valeur par défaut dans les zonesappropriées dans le volet droit de l'éditeur.

3 Cliquez sur Appliquer.

Page 231: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 221

Définition d'une vérification personnalisée dansun profil

Vous pouvez ajouter des vérification personnalisées sur des métaclassesabstraites et concrètes. Toutefois, les vérifications personnalisées ne sontpertinentes que sur les métaclasses de modélisation (par exemple, les règlesde gestion) ; elles ne doivent pas être définies sur des objets techniques telsque les symboles ou éléments de rapport.

Pour plus d'informations sur les métaclasses abstraites et concrètes,reportez-vous au chapitre Métamodèle public PowerAMC.

Vous pouvez créer des vérifications personnalisées à l'aide du langage descript Visual Basic.

Pour plus d'informations sur le langage de script Visual Basic, reportez-vous au chapitre Manipulation des objets via VBScript dans le manuel Guidedes fonctionnalités générales.

Les vérifications personnalisées peuvent être définies sur une métaclassemais aussi pour un stéréotype ou un critère.

Lorsque vous définissez une vérification sur une métaclasse Celle-ci s'applique à toutes les instances de la métaclasse sélectionnée. Lesvérifications personnalisées définies sur une métaclasse abstraite s'affichentdans toutes ses catégories enfant dans la boîte de dialogue Paramètres devérification de modèle. Par exemple, si vous définissez une vérification sur lamétaclasse Classifier, cette vérification s'affiche dans les catégories Classe etInterface.

Lorsque vous définissez une vérification sur un stéréotype ou uncritère Vous liez la vérification personnalisée à un stéréotype ou à unecondition de critère particulière : si l'objet a le stéréotype approprié ouremplit la condition, PowerAMC va appeler la vérification personnalisée lorsdu processus de vérification du modèle.

Plusieurs vérifications personnalisées peuvent être ajoutées à une métaclassedonnée, elles vont toutes s'afficher dans la boîte de dialogue Paramètres devérification de modèle dans laquelle vous pouvez modifier les paramètresrelatifs au degré de gravité ou à la correction automatique.

Page 232: advanfr.pdf

Définition d'une vérification personnalisée dans un profil

222 PowerAMC

Propriétés de vérification personnalisée

Lorsque vous créez des vérifications personnalisées, vous devez définir lespropriétés générales suivantes :

Paramètre Description

Nom Nom de la vérification personnalisée. Ce nom s'affichesous la catégorie d'objet sélectionnée dans la boîte dedialogue Paramètres de vérification de modèle. Ce nomest également utilisé (concaténé) dans le nom de lafonction de vérification, afin d'identifier cette dernière defaçon unique

Commentaire Informations supplémentaires relatives à la vérificationpersonnalisée

Message d'aide Texte affiché dans la zone de message qui s'affichelorsque l'utilisateur sélectionne Aide dans le menucontextuel de la vérification personnalisée dans la boîtede dialogue de vérification de modèle

Message de résultats Texte affiché dans la fenêtre Liste de résultats lors del'exécution des vérifications

Sévérité par défaut Permet de définir si la vérification personnaliséecorrespond à une erreur (problème majeur dans la syntaxedu modèle) ou un avertissement (problème mineur ousimple recommandation)

Exécuter lavérification pardéfaut

Permet de vous assurer que cette vérificationpersonnalisée est sélectionnée par défaut dans la boîte dedialogue Paramètres de vérification de modèle

Exécuter lacorrectionautomatique

Permet d'autoriser la correction automatique pour lavérification personnalisée

Exécuter lacorrectionautomatique pardéfaut

Permet de vous assurer que la correction automatiquecorrespondant à cette vérification personnalisée estexécutée par défaut

La page Script de vérification permet de définir le corps de la fonction devérification personnalisée.

La page Script de correction automatique permet de définir le corps de lafonction de correction automatique.

La page Script global permet de partager les fonctions de bibliothèque et lesattributs statiques dans le fichier de ressources.

Page 233: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 223

Définition du script d'une vérification personnalisée

Vous pouvez saisir le type d'une vérification personnalisée dans la pageScript de vérification des propriétés de vérification personnalisée. Par défaut,la page Script de vérification affiche les éléments de script suivants :

♦ %Check% est le nom de la fonction, il est passé sur le paramètre obj. Ilest affiché sous forme de variable, cette variable étant une concaténationde nom du fichier de ressource, du nom de la métaclasse courante, dunom du stéréotype ou critère ainsi que du nom de la vérification elle-même défini dans la page Général. Si l'un de ces noms comporte unespace, ce dernier est remplacé par un trait de soulignement

♦ Commentaire expliquant le comportement attendu du script

♦ La ligne de valeur de résultat

Dans Sybase AS IQ, vous devez créer des vérifications supplémentaires surles index afin de vérifier leurs colonnes. La vérification personnalisée quevous allez créer vérifie si les index de type HG, HNG, CMP ou LF sont liésaux colonnes ayant comme type de données VARCHAR et si la longueur estsupérieure à 255.

Pour définir le script d'une vérification personnalisée :

1 Pointez sur une métaclasse dans la catégorie Profile et cliquez sur lebouton droit de la souris, puis sélectionnez Nouveau→Vérificationpersonnalisée.ouPointez sur un stéréotype ou un critère dans une métaclasse, puissélectionnez Nouveau→Vérification personnalisée.

Une nouvelle vérification personnalisée est créée sous la catégoriesélectionnée.

2 Cliquez sur l'onglet Script de vérification dans la feuille de propriétés dela vérification personnalisée pour afficher l'éditeur de script.

Par défaut, la fonction est déclarée au début du script. Vous ne devez pasmodifier cette ligne.

3 Saisissez un commentaire après la déclaration de la fonction afin dedocumenter la vérification personnalisée.

4 Déclarez les différentes variables utilisées dans le script.Dim c 'temporary index columnDim col 'temporary columnDim positionDim DT_col

Exemple

Page 234: advanfr.pdf

Définition d'une vérification personnalisée dans un profil

224 PowerAMC

5 Déclarez le corps de la fonction.%Check%= True

if obj.type = "LF" or obj.type = "HG" or obj.type ="CMP" or obj.type ="HNG" then for each c in obj.indexcolumns set col = c.column

position = InStr(col.datatype,"(") if position <> 0 then DT_col = left(col.datatype, position -1) else DT_col = col.datatype end ifif ucase(DT_col) = "VARCHAR" and col.length > 255then output "Table " & col.parent.name & "Column " & col.name & " : Data type is not compatiblewith Index " & obj.name & " type " & obj.type %Check% = False end if

6 Déclarez la fin de la fonction.

7 Cliquez sur Appliquer.

Page 235: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 225

Définition du script d'une correction automatique

Si la vérification personnalisée que vous avez définie prend en charge lacorrection automatique, vous pouvez saisir le corps de cette fonction dans lapage Script de correction automatique de la feuille de propriétés devérification personnalisée.

La correction automatique est visible dans la boîte de dialogue Paramètres devérification de modèle, elle est sélectionnée par défaut si vous cochez la caseExécuter la correction automatique par défaut dans la page Général de lafeuille de propriétés de la vérification personnalisée.

Par défaut, la page Script de correction automatique affiche les éléments descript suivants :

♦ %Fix% est le nom de la fonction, il est passé sur le paramètre obj. Il estaffiché sous forme de variable, cette variable étant une concaténation denom du fichier de ressource, du nom de la métaclasse courante, du nomdu stéréotype ou critère ainsi que du nom de la correction. Si l'un de cesnoms comporte un espace, ce dernier est remplacé par un trait desoulignement

♦ La variable outmsg est un paramètre de la fonction de correction. Vousdevez spécifier le message de correction qui va s'afficher lors del'exécution du script de correction

♦ La ligne de valeur de résultat

Nous allons reprendre l'exemple de la section Définition du script d'unevérification personnalisée afin de définir un script de correction automatiquequi supprime de l'index les colonnes ayant un type de données incorrect.

Pour définir le script d'une correction automatique :

1 Cliquez sur l'onglet Script de correction automatique dans la feuille depropriétés de vérification personnalisée.

Par défaut, la fonction est déclarée au début du script. Vous ne devez pasmodifier cette ligne.

2 Saisissez un commentaire après la déclaration de la fonction afin dedocumenter la vérification personnalisée.

3 Déclarez les différentes variables utilisées dans le script.Dim c 'temporary index columnDim col 'temporary columnDim positionDim DT_col

Page 236: advanfr.pdf

Définition d'une vérification personnalisée dans un profil

226 PowerAMC

4 Déclarez le corps de la fonction.%Fix% = False If obj.type = "LF" or obj.type = "HG" or obj.type= "CMP" or obj.type ="HNG" Then For Each c In obj.IndexColumns Set col = c.column position = InStr(col.datatype,"(") If position <> 0 Then DT_col = Left(col.datatype, position -1) Else DT_col = col.datatype End If If (Ucase(DT_col) = "VARCHAR") And(col.length > 255) Then outmsg = "Automatic correction hasremoved column " & col.Name & " from index." c.Delete %Fix% = True End If Next End If

5 Déclarez la fin de la fonction.

6 Cliquez sur Appliquer.

Page 237: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 227

Utilisation du script global

La page Script global est utilisée pour stocker les fonctions et attributsstatiques qui peuvent être réutilisés entre les différentes fonctions. Cette pageaffiche une bibliothèque de sous-fonctions disponibles.

Dans l'exemple Sybase AS IQ, vous pouvez utiliser une fonction appeléeDataTypeBase qui extrait le type de données d'un élément afin de mieuxl'analyser.

Cette fonction est définie comme suit :Function DataTypeBase(datatype) Dim position position = InStr(datatype, "(") If position <> 0 Then DataTypeBase = Ucase(Left(datatype, position -1)) Else DataTypeBase = Ucase(datatype) End IfEnd Function

Dans ce cas, cette fonction a seulement besoin d'être référencée dans lesscripts de vérification et de correction automatique :

Function %Check%(obj)Dim c 'temporary index column Dim col 'temporary column Dim position %Check%= True If obj.type = "LF" or obj.type = "HG" or obj.type ="CMP" or obj.type ="HNG" then For Each c In obj.IndexColumns Set col = c.column If (DataTypeBase(col.datatype) = "VARCHAR") And(col.length > 255) Then Output "Table " & col.parent.name & " Column" & col.name & " : Data type is not compatible withIndex " & obj.name & " type " & obj.type %Check% = False End If Next End IfEnd Function

Vous pouvez également déclarer des variables globales dans le script global.Ces variables sont réinitialisées chaque fois que vous exécutez la vérificationpersonnalisée.

Exemple

Variables globales

Page 238: advanfr.pdf

Définition d'une vérification personnalisée dans un profil

228 PowerAMC

Dépannage d'erreurs VB

Les scripts que vous avez définis sont exécutés lors de la vérification dumodèle.

Si des erreurs sont détectées lors de la vérification personnalisée, lacorrection automatique ou le script global, une boîte de message s'affiche etvous propose les actions suivantes :

Bouton Action

Ignorer Permet de sauter le script problématique et de reprendre lavérification

Ignorer tout Permet de sauter tous les scripts problématiques et de reprendre leprocessus avec les vérifications standard

Annuler Arrête la vérification du modèle

Déboguer Arrête la vérification du modèle, ouvre l'éditeur de ressources etindique sur quelle ligne se trouve le problème. Vous pouvezcorriger les erreurs et redémarrer la vérification du modèle

Exécution d'une vérification personnalisée

Si les vérifications personnalisées sont définies dans différents fichiers deressources attachés au modèle courant, toutes les sections globales sontfusionnées et toutes les fonctions pour toutes les vérifications personnaliséessont ajoutées pour construire un script unique. Les erreurs potentielles dansles sections de script global provenant de différentes sources vont provoquerl'émission de messages d'erreur. L'utilisateur sera invité à ignorer et àpoursuivre la vérification du modèle sans les vérifications personnalisées, ouà abandonner le processus de vérification afin de régler les problèmes descript.

La boîte de dialogue Paramètres de vérification de modèle affiche toutes lesvérifications personnalisées définies sur les métaclasses, les stéréotypes et lescritères sous les catégories correspondantes. Une vérification personnaliséedéfinie sur une métaclasse abstraite s'affiche dans tous les enfants de cettemétaclasse.

Page 239: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 229

Définition de templates et de fichiers générésdans un profil

Vous définissez maintenant des templates et des fichiers générés dans unprofil, pour une métaclasse, un stéréotype ou un critère sélectionné.

Le langage de génération par template (GTL, Generation TemplateLanguage) de PowerAMC permet de générer des morceaux de texte pour lesmétaclasses. Cette génération peut s'avérer utile pour produire du code (parexemple, du code JAVA ou C++) et des rapports (extraire des informationstextuelles du modèle) ou pour produire au format d'échange (par exemple, auformat XMI).

Le GTL est utilisé pour générer un fichier (appelé fichier généré) pour unemétaclasse donnée et aussi pour générer du texte pour une métaclasse quisera incluse dans un fichier plus global généré pour une autre métaclasse. Cetexte est appelé template. Il est constitué de texte brut, mélangé à desvariables qui sont composées d'informations provenant du modèle lui-même.

Un fichier est généré pour chaque instance de la métaclasse dans lequel il aété défini. Si vous définissez un fichier généré pour un stéréotype ou pour uncritère, un fichier sera généré pour chaque instance avec le stéréotypeapproprié ou répondant au critère.

Par exemple, si vous définissez un fichier généré dans la métaclasse dumodèle, un seul fichier sera généré par modèle. Toutefois, si vous définissezun fichier généré dans la métaclasse de la classe, un fichier sera généré pourchaque classe dans le modèle.

Pour plus d'informations sur la syntaxe du GTL, reportez-vous auchapitre Guide de référence de la génération.

Création d'un template

La catégorie Template contient des éléments de template. Vous pouvezaccéder aux informations dans le modèle à l'aide de variables. Cetteinformation peut se présenter sous la forme de simples attributs (par exemple,le nom d'une classe ou le type de données d'un attribut) ou d'une collectiond'objets (par exemple, la liste des attributs d'une classe) en fonction de lamétaclasse que vous avez définie dans le template.

Vous pouvez utiliser le métamodèle PowerAMC avec le fichier d'aidepdvbs10.chm pour visualiser les interactions entre les métaclasses. Celadevrait également vous aider à sélectionner la métaclasse dans laquelledéfinir un template.

Que sont lestemplates et lesfichiers générés?

Page 240: advanfr.pdf

Définition de templates et de fichiers générés dans un profil

230 PowerAMC

Vous utilisez le GTL pour définir un template. Les templates sont utilisésdans les fichiers générés : lors de la génération, chaque template est évalué etremplacé par sa valeur dans le fichier généré.

Pour plus d'informations sur la syntaxe du GTL, reportez-vous auchapitre Guide de référence de la génération.

Les templates peuvent être créés dans la catégorie Shared lorsque vous lesappliquez à toutes les métaclasses. Ils peuvent également être créés au niveaude la métaclasse ou pour un stéréotype ou critère donné.

Dans les version précédentes de PowerAMC, vous pouviez lier l'utilisationd'un template particulier à l'existence d'un stéréotype à l'aide de la syntaxesuivante :

template name <<stéréotype>>

Dans la version courant de PowerAMC, vous pouvez créer un template dansun stéréotype particulier afin de vous assurer que ce template est utiliséuniquement pour les instances de métaclasse avec le stéréotype.

Vous pouvez utiliser l'outil Parcourir pour trouver tous les templates portantle même nom. Pour ce faire, ouvrez un template, placez le curseur sur un nomde template (entre les caractères %) et cliquez sur Parcourir (ou appuyez surF12). Vous affichez ainsi une fenêtre Résultats qui répertorie tous lestemplates préfixés par le nom de leur métaclasse. Vous pouvez double-cliquer sur un template dans la fenêtre Résultats pour localiser sa définitiondans l'éditeur de ressources.

Pour créer un template :

1 Pointez sur une métaclasse dans la catégorie Profile et cliquez sur lebouton droit de la souris, puis sélectionnez Nouveau→Template.ouPointez sur un stéréotype ou un critère dans une métaclasse, puissélectionnez Nouveau→Template.

Un nouveau template est créé sous la catégorie correspondante.

2 Saisissez un nom explicite dans la zone Nom. Il est déconseillé d'utiliserdes espaces dans les noms de template.

3 <facultatif, mais très utile> Saisissez un commentaire dans la zoneCommentaire afin d'expliquer le rôle du template.

4 Saisissez le corps du template à l'aide du GTL dans la zone centrale.

Nouvelle syntaxe

Outil Parcourir(F12)

Page 241: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 231

Création d'un fichier généré

La catégorie Generated Files contient des entrées correspondant à desfichiers. Ces entrées définissent les fichiers qui seront générés pour unemétaclasse donnée ou pour les instances d'une métaclasse avec un stéréotypeou critère sélectionné.

Vous utilisez le GTL pour définir un fichier généré. Vous pouvez définir desfichiers générés pour toutes les métaclasses ; toutefois, seuls les fichiers,définis pour des objets appartenant à une collection de modèle ou de packageseront générés. Les sous-objets, par exemple les attributs, les colonnes ou lesparamètres ne prennent pas en charge la génération de fichier, mais il peutêtre intéressant de voir le code généré pour ces sous-objets dans la pageAperçu.

Vous pouvez identifier les collections de modèle ou de package dans lemétamodèle PowerAMC.

Pour plus d'informations sur le métamodèle PowerAMC, reportez-vousau chapitre Métamodèle public PowerAMC.

Pour plus d'informations sur la syntaxe GTL, reportez-vous au chapitreGuide de référence de la génération.

Si une définition étendue de modèle complétant la génération d'un langageobjet contient un nom de fichier généré identique à un nom de fichier générédéfini dans le langage objet, le fichier généré défini dans la définition étenduede modèle remplace alors le fichier généré dans le langage objet.

Dans la précédente version de PowerAMC, vous deviez définir un templatecorrespondant au type de fichier à générer. Vous pouvez maintenant éditerdirectement le template du fichier à générer dans la page de propriétés dufichier généré.

Les propriétés d'un fichier généré sont les suivantes :

Propriété Description

Nom Nom de l'entrée du fichier généré dans l'éditeur deressources

Nom de fichier Nom du fichier qui sera généré, il peut contenir desvariables

Propriétés defichier généré

Page 242: advanfr.pdf

Définition de templates et de fichiers générés dans un profil

232 PowerAMC

Propriété Description

Codage Format du fichier généré, PowerAMC prend en chargeplusieurs formats. Vous pouvez utiliser le bouton Pointsde suspension pour afficher la boîte de dialogue Formatde codage pour le texte en sortie dans laquelle vouspouvez sélectionner un format dans une listedéroulante. Dans cette boîte de dialogue, la case àcocher Annuler si perte de caractère permet d'arrêter lagénération si cette dernière provoque la perte decaractères

Commentaire Informations supplémentaires relatives aux fichiersgénérés

Utiliser la hiérarchiedes packages commechemin d'accès

Indique que la hiérarchie de packages doit être utiliséepour générer la hiérarchie des répertoires de fichiers

Template du fichiergénéré (zone de texte)

Template du fichier à générer. Vous pouvez ouvrir unéditeur à l'aide de l'outil Editer avec, et si vous utilisezdes templates, vous pouvez utiliser l'outil de recherchepour rechercher tous les templates du même nom(reportez-vous à la section Création d'un template)

Si la zone Nom de fichier est vide, aucun fichier n'est généré. Toutefois, ilpeut s'avérer utile car il permet d'afficher un aperçu du contenu du fichieravant la génération. Vous pouvez utiliser la page Aperçu de l'objetcorrespondant à tout moment pour ce faire.

Si la zone Nom de fichier contient un caractère '.' (point), aucun fichier n'estgénéré, mais vous pouvez utiliser la page Aperçu, comme indiqué ci-avant,en tirant profit de la coloration syntaxique. Vous pouvez ajouter des suffixesaprès le point afin d'utiliser l'éditeur de votre choix (par exemple : .dtd pourXML).

Pour définir un fichier généré :

1 Pointez sur une métaclasse dans la catégorie Profile et cliquez sur lebouton droit de la souris, puis sélectionnez Nouveau→Fichier généré.ouPointez sur un stéréotype ou un critère dans une métaclasse, puissélectionnez Nouveau→Fichier généré.

Une nouvelle entrée de fichier est créée sous la catégorie sélectionnée.

2 Saisissez un nom dans la zone Nom.

3 Saisissez le template du nom pour le fichier à générer dans la zone Nomde fichier.

Colorationsyntaxique

Page 243: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 233

4 Sélectionnez un format de codage.

5 <facultatif, mais très utile> Saisissez un commentaire dans la zoneCommentaire afin de décrire le contenu du fichier généré.

6 Cochez la case Utiliser la hiérarchie des packages comme chemind'accès si vous souhaitez conserver la hiérarchie de packages.

7 Saisissez la définition du fichier généré dans la zone de texte.

8 Cliquez sur Appliquer.

Page 244: advanfr.pdf

Définition d'une collection étendue dans un profil

234 PowerAMC

Définition d'une collection étendue dans unprofil

Une collection étendue est utilisée pour définir un lien supplémentaire entreune métaclasse sélectionnée ou un stéréotype d'une part et une autremétaclasse ou une métaclasse stéréotypée d'autre part.

Dans le métamodèle PowerAMC, les associations entre classes représententdes collections de métaclasses. La création d'une collection étendue équivautà tracer une association entre des métaclasses dans le métamodèle. Cettefonctionnalité est utile lorsque vous souhaitez créer des collectionssupplémentaires sur les métaclasses existantes, elle vous aide également àgérer de nouveaux types d'objets tels que les objets étendus et les liensétendus.

Pour plus d'informations sur le métamodèle PowerAMC, reportez-vousau chapitre Métamodèle public PowerAMC.

Lorsque vous définissez une collection étendue, vous devez sélectionner unemétaclasse ou un stéréotype dans lequel créer cette collection étendue et quenous appellerons alors métaclasse parent. Vous devez également définir unemétaclasse cible ou une métaclasse stéréotypée. Cette métaclasse cibles'affiche comme une nouvelle liste d'objets dans la feuille de propriétés de lamétaclasse parent. A l'inverse, la métaclasse parent s'affiche dans la pageDépendances de la métaclasse cible.

Lorsque vous souhaitez attacher des documents contenant des spécificationsde cas d'utilisation aux différents packages d'un modèle, vous pouvez utiliserune collection étendue. Vous créez une collection étendue dans la métaclassepackage et définissez FileObject comme métaclasse cible.

Propriétés d'une collection étendue

Lorsque vous créez une collection étendue, vous devez sélectionner lamétaclasse ou le stéréotype approprié dans lequel créer la collection. Lechoix de cet emplacement déterminera la portée de la collection étendue.Vous devez également définir les propriétés suivantes :

Propriété Description

Nom Nom de la collection étendue

Commentaire Informations supplémentaires relatives à la collection étendue

Exemple

Page 245: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 235

Propriété Description

Nom inverse Nom de la métaclasse parent qui va s'afficher dans la pageDépendances de la métaclasse cible. Si vous ne saisissez pasde valeur dans cette zone, un nom inverse estautomatiquement créé et affiché dans la page Dépendances

Type de cible Définit la métaclasse associée à la métaclasse ou austéréotype courant. La liste déroulante permet de sélectionnerle type d'objet qui peut être stocké dans la collection (dansnotre exemple, vous sélectionnez FileObject). La listedéroulante affiche uniquement les métaclasses qui peuventêtre instanciées dans un modèle ou un package comme desclasses ou des tables. Vous ne pouvez pas sélectionner dessous-objets tels que les attributs de classe ou des colonnes detable. Assurez-vous de sélectionner un type de cible, faute dequoi la définition de la collection étendue est ignorée

Stéréotype cible Filtre supplémentaire défini sur la collection étendue. Cettezone répertorie tous les stéréotypes définis dans le profilcourant pour le type de cible sélectionné. Vous pouvezégalement saisir un nouveau stéréotype dans cette zone

Lorsque vous créez une collection étendue sur un stéréotype, la liste d'objetscorrespondante s'affiche uniquement si l'instance de la métaclasse parent a lestéréotype approprié. Si vous changez le stéréotype, la liste disparaît.

Lorsque vous ouvrez un modèle contenant des collections étendues avec unfichier de ressources qui ne prend pas en charge les collections étendues, lescollections étendues restent visibles dans les différentes feuilles depropriétés. Ceci vous permet de supprimer des objets dans les collections quine sont plus prises en charge.

Si vous copiez et collez un objet avec des collections étendues Lesobjets associés ne sont pas copiés.

Si vous déplacez un objet avec des collections étendues Le lienavec les objets associés est conservé (si nécessaire à l'aide d'un raccourci).

Création d'une collection étendue

Pour créer une collection étendue :

1 Pointez sur un noeud de métaclasse ou de stéréotype, cliquez le boutondroit de la souris, puis sélectionnez Nouveau→Collection étendue.

Une collection étendue est créée.

Page 246: advanfr.pdf

Définition d'une collection étendue dans un profil

236 PowerAMC

2 Saisissez un nom et un code.

3 <facultatif>> Saisissez un nom inverse dans la zone Nom inverse.

4 Sélectionnez une métaclasse dans la zone Type de cible.

5 <facultatif>> Sélectionnez ou saisissez un stéréotype pour la métaclassecible dans la zone Stéréotype cible.

6 Cliquez sur Appliquer.

Page 247: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 237

Définition d'une méthode dans un profilVous pouvez ajouter des méthodes dans n'importe quelle métaclassePowerAMC.

Les méthodes peuvent être définies sur des stéréotypes et des critères si voussouhaitez limiter leur utilisation aux instances de métaclasse ayant desstéréotypes corrects ou vérifiant certains critères. Les méthodes définies dansune métaclasse parent sont héritées par les métaclasses enfant.

Une méthode contient un script qui sera exécuté lorsque la méthode seraappelée, à partir d'une commande de menu par exemple. Le script de laméthode est défini à l'aide de VBScript.

Pour plus d'informations sur VBScript, reportez-vous au chapitreManipulation des objets via VBScript dans le manuel Guide desfonctionnalités générales.

Propriétés d'une méthode

Lorsque vous créez une méthode, vous devez sélectionner la métaclasseappropriée dans laquelle la créer. Ceci détermine la portée de la méthode. Parexemple, si vous souhaitez qu'une méthode s'applique aux classes etinterfaces, vous devez la définir dans la métaclasse Classifier.

Lorsque vous créez une méthode, vous devez définir les propriétéssuivantes :

Propriété Description

Nom Nom de la méthode qui identifie un script

Commentaire Informations supplémentaires relatives à la méthode

La page Script de méthode permet de définir le corps de la fonction deméthode.

La page Script global permet de partager les fonctions de bibliothèques etattributs statiques dans le fichier de ressource.

Page 248: advanfr.pdf

Définition d'une méthode dans un profil

238 PowerAMC

Vous pouvez également utiliser la page Script global pour déclarer desvariables globales. Dans ce cas, n'oubliez pas que les variables globales nesont pas réinitialisées chaque fois que la méthode est exécutée. Ellesconservent leurs valeur jusqu'à ce que vous modifiez le fichier de ressources,ou jusqu'à la fin de la session PowerAMC. Ce comportement peut être lasource d'erreurs, tout particulièrement lorsque des variables font référence àdes objets qui peuvent être modifiés, voire supprimés. N'oubliez pasd'initialiser la variable globale au début d'une méthode si vous ne souhaitezpas conserver la valeur de l'exécution précédente.

Pour plus d'informations sur la définition d'un script et l'utilisation de lapage Script global, reportez-vous aux sections Définition du script d'unevérification personnalisée et Utilisation du script global.

Les méthodes peuvent être utilisées comme commandes dans des menusdéfinis par l'utilisateur. Il est donc important de créer des méthodes avant decréer des menus.

Pour plus d'informations sur les menus, reportez-vous à la sectionDéfinition de menus dans un profil.

Création d'une méthode

Lorsque vous créez une méthode, vous devez définir la fonction de laméthode dans la page Script de méthode. La page Script global est égalementdisponible et permet de réutiliser les fonctions et sous-procédures. Cette pageest commune aux gestionnaires d'événement et aux transformations.

Vous saisissez le script d'une vérification personnalisée dans la page Scriptde méthode de la feuille de propriétés de méthode. Par défaut, la page Scriptde méthode affiche les éléments de script suivants :

♦ %Mthd% est le nom de la fonction, il est passé sur le paramètre obj. Cenom est affiché sous forme de variable, cette variable est uneconcaténation du nom du fichier de ressource, du nom de la métaclassecourante, du nom du stéréotype ou critère, ainsi que du nom de laméthode elle-même dans la page Général. Si l'un de ces noms contientun espace, ce dernier est remplacé par un tiret bas.

♦ Un commentaire expliquant le comportement attendu du script

♦ La ligne de valeur de résultat

Page 249: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 239

Par exemple, vous pouvez créer une méthode pour une classe qui convertitdes classes en interfaces. Le script suivant copie les propriétés de base etopérations de classe, supprime la classe pour éviter tout problème d'espace denom et crée la nouvelle interface. Notez que le script ne gère par les autrespropriétés de classe, ni l'affichage de l'interface.

Sub %Mthd%(obj) ' Convertit la class en interface

' Copie les propriétés de base de la classe Dim Folder, Intf, ClassName, ClassCode Set Folder = obj.Parent Set Intf = Folder.Interfaces.CreateNew ClassName = obj.Name ClassCode = obj.Code Intf.Comment = obj.Comment

' Copie les opérations de la classe Dim Op For Each Op In obj.Operations ' ... Output Op.Name Next

' Détruit la classe obj.Delete

' Renomme l'interface Intf.Name = ClassName Intf.Code = ClassCodeEnd Sub

Pour créer une méthode :

1 Pointez sur le noeud d'une métaclasse, d'un stéréotype ou d'un critère,cliquez le bouton droit de la souris, puis sélectionnezNouveau→Méthode.

Une méthode est créée.

2 Saisissez un nom dans la zone Nom.

3 <facultatif>> Saisissez un commentaire dans la zone Commentaire.

4 Saisissez le script dans la page Script de méthode.

Page 250: advanfr.pdf

Définition d'une méthode dans un profil

240 PowerAMC

5 <facultatif>> Réutilisez les fonctions stockées dans la page Script global.

6 Cliquez sur Appliquer.

Page 251: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 241

Définition des transformations dans un profilDans PowerAMC, une transformation définit un jeu d'actions à exécuter lorsd'une génération ou sur demande. Vous définissez une transformation dans lacatégorie Profile d'une définition étendue de modèle. Les transformationspeuvent être définies soit sur une métaclasse soit sur un stéréotype ou critèresélectionné. Les transformations doivent être insérées dans un profil detransformation pour pouvoir être utilisées lors de la génération de modèleou appliquées dans un modèle.

Pour plus d'informations sur le profil de transformations, reportez-vousà la section Catégorie Transformation profile dans le chapitre Guide deréférence des définitions étendues de modèle.

Vous définissez une transformation lorsque vous avez besoin :

D'un utilitaire permettant de modifier des objets dans un modèle Afin d'adapter le modèle à des besoins spécifiques. Par exemple, vouspouvez créer une transformation dans un MOO qui convertit les classes<<control>> en composants

ou

D'un moyen de modifier un objet tout en conservant la possibilité derevenir sur cette modification Vous pouvez créer une transformationpour effectuer une tâche et une autre transformation pour annuler cette tâche.Cette fonctionnalité peut s'avérer très utile dans le cas d'une ingénierie parva-et-vient. Supposez que vous génériez un MPD à partir d'un MOO afin decréer une correspondance O/R. Si le MOO source contient des composants,vous pouvez créer des transformations qui convertissent des classes à partirde composants afin de générer facilement des tables dans un MPD et de lesmettre en correspondance. Toutefois, lorsque vous mettez à jour le MOOsource à partir du MPD généré, vous pouvez utiliser une autre transformationqui va automatiquement recréer les composants à partir des classes

Propriétés d'une transformation

Lorsque vous créez une transformation, vous devez sélectionner lamétaclasse appropriée dans laquelle créer cette transformation. Vousdéterminez ainsi la portée de la transformation. Par exemple, si voussouhaitez qu'une transformation soit appliquée aux classes et interfaces, vousdevez la définir dans la métaclasse Classifier.

Page 252: advanfr.pdf

Définition des transformations dans un profil

242 PowerAMC

Lorsque vous créez une transformation, vous devez définir les propriétéssuivantes :

Propriété Description

Nom Nom de la transformation. Prenez soin de spécifier des nomsexplicites afin de les identifier plus facilement dans les listes desélection

Commentaire Informations supplémentaires relatives à la transformationutilisées pour expliquer le script

La page Script de la transformation est utilisée pour définir le corps de lafonction de transformation. La fonction est écrite en VBScript.

La page Script global est utilisée pour le partage des fonctions debibliothèques et des attributs statiques dans le fichier de ressources.

Vous pouvez également utiliser la page Script global pour déclarer desvariables globales. Dans ce cas, n'oubliez pas que les variables globales nesont pas réinitialisées chaque fois que la transformation est exécutée. Ellesconservent leurs valeur jusqu'à ce que vous modifiez le fichier de ressources,ou jusqu'à la fin de la session PowerAMC. Ce comportement peut être lasource d'erreurs, tout particulièrement lorsque des variables font référence àdes objets qui peuvent être modifiés, voire supprimés. N'oubliez pasd'initialiser la variable globale au début d'une transformation si vous nesouhaitez pas conserver la valeur de l'exécution précédente.

Pour plus d'informations sur la définition d'un script et l'utilisation de lapage Script global, reportez-vous aux sections Définition du script d'unevérification personnalisée et Utilisation du script global.

La page Dépendances affiche une liste des profils dans lesquels latransformation est utilisée.

Les transformations peuvent être utilisées :

♦ Dans un profil de transformation, pour être appliquées lors de lagénération de modèle

Pour plus d'informations sur les transformations utilisées lors de lagénération, reportez-vous à la section Génération avec destransformations dans le chapitre Gestion des transformations du manuelGuide des fonctionnalités générales.

♦ Dans un profil de transformation, sur la page post-génération, pour êtreutilisées avec la fonctionnalité Appliquer des transformations

Page 253: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 243

Pour plus d'informations sur les transformations, utilisées lors de lagénération, reportez-vous à la section Application des transformationsdans un modèle, dans le chapitre Gestion des transformations du manuelGuide des fonctionnalités générales.

♦ Sous forme de commande dans un menu défini par l'utilisateur

Pour plus d'informations sur les menus, reportez-vous à la sectionDéfinition de menus dans un profil.

Création d'une transformation

Lorsque vous créez une transformation, vous devez définir la fonction detransformation dans la page Script de la transformation. La page Script globalest également disponible et permet de réutiliser des fonctions et sous-procédures.

Par défaut, la page Script de la transformation affiche le script suivant :Sub %Transformation%(obj, trfm)

obj représente l'objet dans le modèle pour lequel le script est exécuté ; trfmest un objet transformation interne qui sert à accéder à un jeu de fonctionshelper dans le script.

Pour plus d'informations sur les fonctions helper, reportez-vous à lasection Méthodes helper de script pour les transformations.

Le script de transformation ne requiert pas autant de vérifications que lesscripts standards. Dans un script standard, vous devez vérifier le contenu d'unmodèle pour éviter les erreurs. Par exemple, un script qui crée et renomme uncomposant à partir d'une classe doit contenir un contrôle qui vérifie si lecomposant n'existe pas déjà dans le modèle.

Ces vérifications ne sont pas requises dans un script de transformation car lestransformations sont toujours mises en oeuvre dans un modèle temporaire necontenant aucun objet. Ce modèle temporaire sera ensuite fusionné avec lemodèle cible de génération si l'option de conservation de modifications estactivée lors de la mise à jour.

Si vous créez une transformation en utilisant un script existant, vous pouvezsupprimer ces contrôles.

Les objets transformation interne ne s'affichent pas dans l'interface dePowerAMC. Ils sont créés comme objets temporaires et passés au script desorte que l'utilisateur puisse accéder aux fonctions helper mais aussi pourenregistrer l'exécution d'une séquence de transformations afin de pouvoir lesexécuter ultérieurement.

Vérifications descript

Objettransformationinterne

Page 254: advanfr.pdf

Définition des transformations dans un profil

244 PowerAMC

Les objets transformation interne sont préservés lorsque les transformationssont utilisées par la fonctionnalité Appliquer les transformations ou dans unmenu. En effet, lorsque vous mettez à jour un modèle (le régénérez) danslequel ce type de transformations a été exécuté, les transformations doiventêtre exécutées à nouveau dans le modèle source afin de préserverl'équivalence entre les modèles source et cible.

Par exemple, MCD1 contient l'entité A, vous générez un MOO à partir deMCD1 et la classe B est créée. Vous appliquez des transformations à laclasse B dans MOO1, ce qui crée la classe C. Vous souhaitez ensuiterégénérer MCD1 et mettre à jour MOO1 : la classe B sera générée à partir del'entité A mais la classe C est manquante dans le modèle généré, ce quirisquerait de se manifester par une différence dans la boîte de dialogue defusion. Toutefois, grâce aux objets transformation interne, les transformationsqui ont été exécutée dans le MOO généré sont ré-exécutées et vous obtenez laclasse C et les modèles à fusionner sont encore plus similaires qu'avant.

Pour créer une transformation :

1 Pointez sur un noeud de métaclasse, de stéréotype ou de critère, cliquezle bouton droit de la souris et sélectionnez Nouveau→Transformation.

Une transformation est créée.

2 Saisissez un nom dans la zone Nom.

3 <facultatif>> Saisissez un commentaire dans la zone Commentaire.

4 Saisissez le script dans la page Script de la transformation.

Page 255: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 245

5 Cliquez sur Appliquer.

Méthodes helper de script pour les transformations

Les scripts de transformation ont accès à des méthodes helper spéciales vial'objet transformation interne. Ces méthodes sont les suivantes:

Nom Définition Paramètres Renvoie

CopyObject Duplique un objetexistant et définit unesource pour l'objetdupliqué

source : objet à dupliquerétiquette* : identificateur

texte de l'objet

Une copiedu nouvelobjet

SetSource Définit l'objet sourced'un objet généré. Ilest recommandé dedéfinirsystématiquementl'objet source afin depouvoir retrouverl'origine d'un objetgénéré

source : objet sourcecible : objet cibleétiquette* : identificateur

texte de l'objet

GetSource Extrait l'objet sourced'un objet généré

cible : objet cibleétiquette* : identificateur

texte de l'objet

Objetsource

GetTarget Extrait l'objet cibled'un objet source

source : objet source

étiquette* : identificateurtexte de l'objet

Objet cible

* étiquette facultative utilisée pour améliorer l'historique de la génération, voir le paragraphesuivant

Le mécanisme d'historique de la génération est utilisé pour extrairel'identificateur de l'objet source afin d'identifier l'origine d'un objet cible etl'afficher dans la page Version. Cette opération est rendue possible par le faitqu'il existait une correspondance un-à-un entre les objets source et cible.

Maintenant qu'un objet source peut être transformé et avoir plusieurs cibles,vous pouvez rencontrer des problèmes pour identifier l'origine d'un objet,tout particulièrement dans la boîte de dialogue de fusion. Le mécanismesuivant est utilisé pour aider à identifier l'origine d'un objet :

Si l'objet source est transformé en un seul objet La transformationest utilisée comme identificateur interne de l'objet cible.

Historique de lagénération

Page 256: advanfr.pdf

Définition des transformations dans un profil

246 PowerAMC

Si l'objet source est transformé en plusieurs objets Pour pouvezdéfinir une étiquette (tag) pour identifier le résultat de la transformation.Cette étiquette est une valeur sélectionnée par l'utilisateur qui ne doitcomporter que des caractères alphanumériques. Il est recommandé d'utiliserune valeur "stable", c'est-à-dire une valeur qui ne risque pas d'être modifiéelors de générations successives, par exemple un stéréotype. Par exemple,MOO1 contient la classe Customer, vous appliquez un script detransformation à cet objet pour créer un EJB. Deux nouvelles classes sontcréées à partir de la classe source : une pour l'interface home, et l'autre pourl'interface remote. Dans le script de transformation, vous devez affecter uneétiquette “home” pour l'interface home, et “remote” pour l'interface remote.L'étiquette s'affiche entre signes <> dans la page Version pour un objet, enregard de l'objet source.

Dans l'exemple suivant, vous utilisez le mécanisme de l'étiquette pouridentifier les classes attachées à un composant :

'setting tag for all classes attached to component for each Clss in myComponent.Classes if clss <> obj then trfm.SetSource obj,Clss," GenatedFromEJB"+ obj.name +"target" +Clss.Name For each ope in clss.Operations if Ope.Name = Clss.Code Then 'then it is a constructor _Bean operation trfm.SetSource obj,Ope," GenatedFromEJB"+ obj.name +"target" +Ope.Name end if if Ope.Name = Clss.Name Then 'then it is a constructor operation trfm.SetSource obj,Ope," GenatedFromEJB"+ obj.name +"target" +Ope.Name end if if Ope.name = "equals" Then 'then it is an equals operation and should betagged trfm.SetSource obj,Ope," GenatedFromEJB"+ obj.name +"target" +Ope.Name end if next end if next

Page 257: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 247

Définition d'un gestionnaire d'événement dansun profil

Vous pouvez faire en sorte de lancer automatiquement un script lorsqu'unévénement se produit sur un objet. Cette fonctionnalité permet d'associer ducode VB Script à un événement en utilisant des gestionnaires d'événement.

Notions de base relatives aux gestionnaires d'événement

Vous pouvez associer un gestionnaire d'événement à une métaclasse ou à unstéréotype ; les critères ne prennent pas en charge les gestionnairesd'événement.

Chaque gestionnaire d'événement est doté d'une sémantique et de paramètresprédéfinis. Lorsque vous associez un gestionnaire d'événement à unstéréotype ou à une métaclasse, le script de gestionnaire d'événement estinitialisé avec les fonctions à mettre en oeuvre. Par exemple, le gestionnaired'événement CanCreate prend comme paramètre le parent dans lequel l'objetsera créé :

Function %CanCreate%(parent) ' Implement your creation validation rule on <parent>here ' and return True in case of success

%CanCreate% = TrueEnd Function

Vous utilisez la page Script du gestionnaire d'événement pour définir lafonctionnalité du gestionnaire d'événement et l'adapter à votre modèle et àvos besoins. La page Script global est utilisée pour partager les fonctions debibliothèque et les attributs statiques dans le fichier de ressources.

Vous pouvez également utiliser la page Script global pour déclarer desvariables globales. Dans ce cas, n'oubliez pas que les variables globales nesont pas réinitialisées chaque fois que le gestionnaire d'événement estexécuté. Elles conservent leurs valeur jusqu'à ce que vous modifiez le fichierde ressources, ou jusqu'à la fin de la session PowerAMC. Ce comportementpeut être la source d'erreurs, tout particulièrement lorsque des variables fontréférence à des objets qui peuvent être modifiés, voire supprimés. N'oubliezpas d'initialiser la variable globale au début d'une méthode si vous nesouhaitez pas conserver la valeur de l'exécution précédente.

Pour plus d'informations sur la définition d'un script et l'utilisation de lapage Script global, reportez-vous aux sections Définition du script d'unevérification personnalisée et Utilisation du script global.

Page 258: advanfr.pdf

Définition d'un gestionnaire d'événement dans un profil

248 PowerAMC

Plusieurs gestionnaires d'événement sont définis dans PowerAMC.

Le gestionnaire d'événement CanCreate est utilisé pour mettre en oeuvre unerègle de validation de création. Certains objets ne peuvent pas être créésn'importe où dans le modèle le gestionnaire d'événement CanCreate s'assureque cette exigence est remplie. Par exemple, dans un MPM pour ebXML, unprocessus ayant le stéréotype BusinessTransactions doit être créé sous unprocessus ayant le stéréotype BinaryCollaboration. Le script du gestionnaired'événement CanCreate associé au processus ayant comme stéréotypeBusinessTransaction se présente comme suit :

Function %CanCreate%(parent)

if parent is Nothing or parent.IsKindOf(PdBpm.Cls_Process) then %CanCreate% = False else %CanCreate% = True end if

End Function

Si le gestionnaire d'événement CanCreate est défini sur un stéréotype et quela valeur de retour de la fonction est True, vous pouvez utiliser l'outilpersonnalisé pour crée l'objet personnalisé. Dans le cas contraire, l'outilpersonnalisé n'est pas disponible, et la liste déroulante Stéréotype n'affichepas le stéréotype correspondant.

Si le gestionnaire d'événement CanCreate est défini sur une métaclasse etque la valeur de retour de la fonction est True, vous pouvez alors créer l'objetà partir de la palette d'outils, à partir de l'Explorateur d'objets ou bien dansune liste.

Modèles importés ou obtenus par reverse engineeringLorsque vous importez un modèle ou procédez à son reverse engineering,les fonctions CanCreate sont ignorées car elles pourraient modifier lemodèle et y créer des divergences par rapport au modèle d'origine.

CanCreate

Page 259: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 249

Le gestionnaire d'événement Initialize est utilisé pour instancier des objetsavec des templates prédéfinis. Par exemple, dans un MPM, un processusBusinessTransaction doit être un processus composite avec un sous-grapheprédéfini. Le script du gestionnaire d'événement Initialize associé austéréotype de processus BusinessTransaction contient toutes les fonctionsnécessaires pour la création du sous-graphe. L'extrait de script suivant est unsous-ensemble du gestionnaire d'événement Initialize pour un processusBusinessTransaction.

...' Search for an existing requesting activity symbol Dim ReqSym Set ReqSym = Nothing If Not ReqBizAct is Nothing Then If ReqBizAct.Symbols.Count > 0 Then Set ReqSym = ReqBizAct.Symbols.Item(0) End If End If

' Create a requesting activity if not found If ReqBizAct is Nothing Then Set ReqBizAct = BizTrans.Processes.CreateNew ReqBizAct.Stereotype ="RequestingBusinessActivity" ReqBizAct.Name = "Request" End If...

Si le gestionnaire d'événement Initialize est défini sur un stéréotype et que lavaleur de retour de la fonction est True, le script d'initialisation sera lancéchaque fois que le stéréotype est affecté, soit à l'aide d'un outil personnalisédans la palette, soit à partir de la feuille de propriétés d'objet.

Si le gestionnaire d'événement Initialize est défini sur une métaclasse et si lavaleur de retour de la fonction est True, le script d'initialisation sera lancélorsque vous créez un nouvel objet à partir de la palette d'outils, à partir del'Explorateur d'objets, dans une liste, ou bien en utilisant l'outil Nouveau dansune feuille de propriétés.

Si gestionnaire d'événement Initialize est défini sur la métaclasse model et sila valeur de retour de la fonction est True, le script d'initialisation est lancélorsque vous affectez une cible (SGBD, langage objet, langage de processus,langage de schéma) au modèle au moment de la création, lorsque vouschangez la cible du modèle ou lorsque vous affectez une définition étenduede modèle à ce modèle.

Initialize

Page 260: advanfr.pdf

Définition d'un gestionnaire d'événement dans un profil

250 PowerAMC

Ajout d'un gestionnaire d'événement à une métaclasse ou à unstéréotype

Lorsque vous ajoutez un gestionnaire d'événement à une métaclasse ou à unstéréotype, vous devez sélectionner le type du gestionnaire d'événement, puisdéfinir le script qui sera exécuté lorsque l'événement se produit.

Pour ajouter un gestionnaire d'événement à une métaclasse ou à unstéréotype :

1 Pointez sur une métaclasse ou sur un stéréotype, cliquez le bouton droitde la souris, puis sélectionnez Nouveau→Gestionnaire d'événement.

Une boîte de sélection de gestionnaire d'événement s'affiche.

2 Sélectionnez un ou plusieurs gestionnaires d'événement, puis cliquez surOK.

Le gestionnaire d'événement est ajouté dans la catégorie Event Handlerde la métaclasse ou du stéréotype sélectionné.

3 Sélectionnez un gestionnaire d'événement.

La page Général de la feuille de propriétés de gestionnaire d'événements'affiche dans le volet droit.

4 Cliquez sur l'onglet Script du gestionnaire d'événement pour afficher lapage correspondante.

5 Saisissez le script du gestionnaire d'événement.

Page 261: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 251

6 Cliquez sur Appliquer, puis répétez l'étape précédente pour chaquegestionnaire d'événement.

Page 262: advanfr.pdf

Définition de menus dans un profil

252 PowerAMC

Définition de menus dans un profilVous pouvez ajouter des menus dans l'interface de PowerAMC et les rempliravec des commandes qui appellent des fonctions de méthode ou destransformations.

Les menus peuvent être définis sur des stéréotypes et critères si voussouhaitez limiter leur utilisation aux instances de métaclasse ayant lestéréotype approprié ou répondant à un critère spécifié.

Vous pouvez ajouter des menus sur l'interface de votre choix. Les menusdéfinis dans une métaclasse parent sont hérités par les métaclasses enfant.

Vous pouvez créer des menus de type contextuel qui seront appelés à partird'un objet dans l'Explorateur d'objets ou à partir d'un symbole dans lediagramme. Ces menus peuvent être définis sur n'importe quelle métaclasse.Vous pouvez généraliser un menu contextuel en le définissant sur unemétaclasse parent telle que BaseObject.

Vous avez également la possibilité d'ajouter un sous-menu dans un menuprincipal existant. Ces sous-menus peuvent être définis sur une métaclassede modèle ou de diagramme. Les métaclasses Model et Diagram supportenten fait à la fois les menus contextuels et les sous-menus.

Un menu peut contenir des commandes, des sous-menus et desséparateurs :

♦ Une commande de menu appelle une méthode ou une transformationdéfinie dans la même métaclasse ou dans une métaclasse parent du menu

♦ Un sous-menu est un menu qui s'ouvre en cascade à partir d'un élémentde menu

♦ Un séparateur est une ligne utilisée pour organiser les commandes dansun menu

Les menus définis sur une métaclasse parent sont hérités par les métaclassesenfant.

Types de menu

Contenu du menu

Page 263: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 253

Propriétés d'un menu

Lorsque vous créez un menu, vous devez définir les propriétés suivantes :

Propriété Description

Nom Nom du menu qui va apparaître dans l'interface PowerAMC.Vous pouvez définir une touche de raccourci dans l'entrée demenu en ajoutant une perluète immédiatement avant lecaractère à utiliser comme touche de raccourci, cette lettre serasoulignée dans le menu

Commentaire Informations supplémentaires relatives au menu

Emplacement Liste des emplacements où la nouvelle entrée de menu doits'afficher. Cette liste est disponible uniquement si la métaclassesélectionnée est Model ou Diagram. Dans le cas desmétaclasses d'objet, la valeur unique est Menu contextuel del'objet, et donc cachée

Page Menu Zone de création du menu, vous pouvez utiliser des outils pourfaciliter l'ajout de commandes, de menus contextuels et deséparateurs de menu dans le nouveau menu

Page XML Résumé XML de ce qui est défini dans la page Menu

Vous pouvez utiliser les outils suivants dans la page Menu pour créer desmenus et commandes :

Outil Fonction

Affiche une boîte de dialogue de sélection permettant de sélectionnerune ou plusieurs méthodes ou transformations afin de créer descommandes associées. Vous pouvez sélectionner parmi les méthodesou transformations définies dans la métaclasse courante et sesmétaclasses parent. Lorsque vous sélectionnez une méthode ou unetransformation, cette dernière n'est pas retirée de la liste, car vouspouvez la réutiliser à différents niveaux de menu

Crée un séparateur sous l'élément sélectionné dans le niveau de menucourant

Crée un sous-menu sous l'élément de menu sélectionné ou sous lemenu racine

Crée une nouvelle commande dans le menu. La création d'unecommande dans un menu ne se traduit pas par la création de laméthode ou transformation correspondante dans la métaclasseappropriée, vous devez créer vous-même la méthode outransformation sous la métaclasses appropriée et vous assurer de bienutiliser le même nom que celui défini dans le menu

Outils de la pageMenu

Page 264: advanfr.pdf

Définition de menus dans un profil

254 PowerAMC

Outil Fonction

Supprime l'élément sélectionné dans l'arborescence de menu

Lorsque vous ajoutez une commande à l'aide d'une méthode outransformation existante, le contenu suivant est ajouté dans le menu :

<Libellé> (<Nom de méthode/transformation>)

L'élément libellé est le nom de la commande tel qui s'affichera dans le menu.Vous pouvez définir une touche de raccourci en ajoutant une perluèteimmédiatement avant la touche de raccourci, ce caractère s'affiche soulignédans le menu.

Le nom de méthode/transformation est le nom qui identifie le script.

Les méthodes ou transformations associées aux commandes de menu ne sontpas synchronisées avec celles définies dans une métaclasse. Si vous modifiezle nom ou le script d'une méthode ou transformation, vous devez utiliserl'outil de recherche pour localiser et mettre à jour toutes les commandes quiutilisent cette méthode ou transformation.

Création d'un menu

Vous pouvez créer des menus contextuels qui s'affichent lorsque vous pointezsur un noeud dans l'Explorateur d'objets ou un symbole dans le diagramme etcliquer le bouton droit de la souris. Les menus contextuels peuvent êtredéfinis sur n'importe quelle métaclasse.

Vous pouvez créer des sous-menus dans une métaclasse de modèle ou dediagramme afin d'ajouter des sous-menus aux menus PowerAMC suivants :

♦ Fichier→Exporter

♦ Outils

♦ Aide

Pour créer un menu :

1 Pointez sur une métaclasse, un stéréotype ou un critère, cliquez le boutondroit de la souris puis sélectionnez Nouveau→Menu.

Un menu est créé.

2 Saisissez un nom dans la zone Nom.

3 <facultatif>> Saisissez un commentaire dans la zone Commentaire.

Ajout d'unecommande

Synchronisation

Page 265: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 255

4 <uniquement pour les métaclasses Model et Diagram> Sélectionnezl'emplacement du menu dans la liste déroulante Emplacement.

5 Cliquez sur l'outil Ajouter des commandes à partir de commandes et detransformations dans la page Menu.

Une boîte de dialogue de sélection s'affiche.

6 Sélectionnez un ou plusieurs éléments, puis cliquez sur OK.

Les commandes sont ajoutées dans le menu. Chaque commande s'affichesur une ligne distincte, elle affiche un libellé et le nom de la méthode oude la transformation.

7 Editez le libellé pour l'adapter à l'interface.

RappelLes méthodes ou transformations de commande ne sont passynchronisées avec la définition de méthode ou de transformation.

8 Cliquez sur Appliquer.

Page 266: advanfr.pdf

Utilisation de profils : une étude de cas

256 PowerAMC

Utilisation de profils : une étude de casPour illustrer le concept de profil, vous allez construire une définitionétendue du modèle pour un MOO. Cette extension de modèle vous permet deconcevoir un diagramme robustness.

Le diagramme robustness est utilisé pour combler le vide existant entre ceque le système doit faire et comment il va s'y prendre pour accomplir satâche. Dans l'analyse UML, le diagramme robustness se trouve entre lesdiagrammes de cas d'utilisation et le diagramme de séquence. Il permet devérifier que le cas d'utilisation est correct et de vous assurer que vous n'avezpas spécifié un comportement de système déraisonnable compte tenu du jeud'objets disponibles. Le diagramme robustness permet également de vérifierqu'aucun objet ne manque dans le modèle.

Vous allez construire un diagramme robustness à l'aide du diagramme decollaboration dans le MOO, avec une définition étendue de modèle contenantun profil utilisateur. Ce profil comporte les extensions suivantes :

♦ Stéréotypes pour objets

♦ Outils personnalisés et symbole pour chaque stéréotype d'objet

♦ Vérifications personnalisées pour les liens d'instance

♦ Fichier généré pour produire une description des messages échangésentre objets

Vous allez suivre cette étude de cas pour créer une nouvelle définitionétendue de modèle. Cette définition étendue de modèle correspond au fichierde ressources Robustness.XEM, fourni par défaut et situé dans le dossier\Fichiers de ressources\Définitions étendues de modèle du répertoired'installation de PowerAMC.

DiagrammeRobustness

Page 267: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 257

Scénario

Vous allez construire la définition étendue de modèle robustness à partir d'unexemple concret. Le cas d'utilisation suivant représente une transaction Webde base : un client souhaite connaître la valeur de ses actions afin de déciders'il va ou non les vendre. Il envoie une requête sur explorateur Internet pourobtenir la valeur de l'action, la requête est transférée depuis l'explorateur versle serveur de bases de données via le serveur d'applications.

Vous allez utiliser le diagramme robustness pour vérifier ce diagramme decas d'utilisation.

Pour ce faire, vous allez utiliser un diagramme de collaboration standard etl'étendre avec un profil.

Attachement d'une nouvelle définition étendue de modèle aumodèle

Dans votre espace de travail, vous avez déjà créé un MOO avec undiagramme de cas d'utilisation contenant un acteur et trois cas d'utilisation.

Vous devez créer une nouvelle définition étendue de modèle et l'importerdans le modèle courant avant de commencer la définition du profil.

Page 268: advanfr.pdf

Utilisation de profils : une étude de cas

258 PowerAMC

Pour attacher une définition étendue de modèle au modèle :

1 Sélectionnez Outils→Ressources→Définitions étendues demodèle→Modèle Orienté Objet.

La boîte de dialogue Liste des définitions étendues de modèle (MOO)s'affiche.

2 Cliquez sur l'outil Nouveau dans la barre d'outils de la liste.

La boîte de dialogue Nouvelle définition étendue de modèle s'affiche.

3 Saisissez Robustness_Extension dans la zone Nom.

4 Conservez <Template par défaut> dans la zone Copier depuis.

5 Cliquez sur OK.

Une boîte de dialogue standard d'enregistrement s'affiche. Par défaut, lenom du fichier est identique au nom de la définition étendue de modèle.

6 Cliquez sur Enregistrer.

L'éditeur de définition étendue de modèle s'affiche.

7 Décochez la case Compléter la génération de langage.

Cette définition étendue de modèle n'appartient pas à une famille delangage objet et ne sera pas utilisée pour compléter une génération delangage objet.

8 Cliquez sur OK pour fermer l'éditeur de définition étendue de modèle.

Page 269: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 259

9 Cliquez sur Fermer dans la boîte de dialogue Liste des définitionsétendues de modèle.

Une boîte de confirmation vous invite à enregistrer le fichier dedéfinition étendue de modèle.

10 Cliquez sur Oui.

11 Sélectionnez Modèle→Définitions étendues de modèle.

La boîte de dialogue Liste des définitions étendues de modèle s'affiche.

12 Cliquez sur l'outil Importer une définition étendue de modèle dans labarre d'outils de la liste.

La boîte de dialogue Sélection des définitions étendues de modèles'affiche.

13 Cliquez sur l'onglet Général, puis cochez la case Robustness_Extension.

14 Cliquez sur OK, la définition étendue de modèle s'affiche dans la boîtede dialogue Liste des définitions étendues de modèle.

15 Cliquez sur OK dans la liste.

16 Pointez sur le noeud du modèle dans l'Explorateur d'objets, cliquez lebouton droit de la souris puis sélectionnez Nouveau→Diagramme decollaboration dans le menu contextuel.

La feuille de propriétés du diagramme s'affiche.

17 Saisissez Robustness Diagram dans la zone Nom, puis cliquez sur OKdans la feuille de propriétés.

Page 270: advanfr.pdf

Utilisation de profils : une étude de cas

260 PowerAMC

Création de stéréotypes d'objet

Le modèle robustness analysis classifie les objets dans trois catégories :

♦ Objets Boundary qui sont utilisés par les acteurs lorsqu'ilscommuniquent avec le système, il peut s'agit de fenêtres, d'écrans, deboîtes de dialogue ou de menus

♦ Objets Entity qui représentent des données stockées telles qu'une basede données, des tables de base de données ou tout type d'objettemporaire tel qu'un résultat de recherche

♦ Objets Control qui sont utilisés pour contrôler les objets Interface etEntité, et qui représentent un transfert d'informations

Pour mettre en oeuvre le modèle robustness analysis dans PowerAMC, vousallez créer des stéréotypes pour des objets dans le diagramme decollaboration. Ces stéréotypes correspondent aux trois catégories d'objetsdéfinies ci-avant. Vous allez également attacher des outils personnalisés pourcréer une palette spécialement conçue pour créer des objets avec lestéréotype <<Entity>>, <<Control>> ou <<Boundary>>.

Vous créez ces stéréotypes dans la catégorie Profile de la définition étenduede modèle attachée à votre modèle.

Pour créer des stéréotypes d'objet :

1 Sélectionnez Modèle→Définitions étendues de modèle puis double-cliquez sur la flèche en regard de Robustness_Extension dans la listepour afficher l'éditeur de ressources.

Page 271: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 261

2 Pointez sur la catégorie Profile, cliquez le bouton droit de la souris, puissélectionnez Ajouter des métaclasses.

La boîte de dialogue Sélection de métaclasses s'affiche.

3 Sélectionnez UMLObject dans la liste des métaclasses affichées dans lapage PdMOO, puis cliquez sur OK.

La catégorie UMLObject s'affiche sous Profile.

4 Pointez sur la catégorie UMLObject, cliquez le bouton droit de la souriset sélectionnez Nouveau→Stéréotype.

Un nouveau stéréotype est créé sous la catégorie UMLObject.

5 Saisissez Boundary dans la zone Nom.

6 Cochez la case Outil personnalisé dans la palette.

7 Cliquez sur l'outil Recherche le fichier curseur de l'outil, puissélectionnez le fichier boundary.cur dans le dossier\Exemples\Didacticiel.

8 Répétez les étapes 4 à 7 pour créer le stéréotypes et outils suivants :

Stéréotype Fichier de curseur

Entity entity.cur

Control control.cur

Vous devez à présent voir les 3 stéréotypes sous a catégorie demétaclasse UMLObject.

Page 272: advanfr.pdf

Utilisation de profils : une étude de cas

262 PowerAMC

9 Cliquez sur OK.

10 Cliquez sur Oui pour enregistrer la définition étendue de modèle.

La palette d'outils avec les outils de stéréotype s'affiche dans lediagramme.

11 Déplacez la Liste des définitions étendues de modèle en bas de l'écran.

12 Cliquez sur l'un des outils, puis cliquez dans le diagramme decollaboration.

Un objet ayant le stéréotype prédéfini est créé :

13 Cliquez sur le bouton droit de la souris pour libérer l'outil.

Définition de symboles personnalisés pour les stéréotypes

Vous allez définir un symbole personnalisé pour les entrées de UMLObjectassociées au stéréotypes Boundary, Control ou Entity. La fonctionnalité desymbole personnalisé permet d'appliquer les graphiques du diagrammerobustness dans votre diagramme de collaboration.

Pour définir des stéréotypes personnalisés pour les stéréotypes :

1 Double-cliquez sur la flèche en regard de Robustness_Extension dans laliste des définitions étendues de modèle pour afficher l'éditeur deressources.

2 Pointez sur le stéréotype Boundary dans la catégorie UMLObject,cliquez le bouton droit de la souris, puis sélectionnezNouveau→Symbole personnalisé.

Un symbole personnalisé est créé.

3 Cliquez sur le bouton Modifier.

La boîte de dialogue Format de symbole s'affiche.

4 Cliquez sur l'onglet Forme personnalisée.

5 Cochez la case Activer la forme personnalisée.

6 Sélectionnez Symbole prédéfini dans la liste déroulante Type de forme.

Page 273: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 263

7 Sélectionnez Boundary Object dans la liste déroulante liste déroulanteNom de la forme.

8 Cliquez sur OK.

Le symbole personnalisé s'affiche dans la zone Exemple.

Page 274: advanfr.pdf

Utilisation de profils : une étude de cas

264 PowerAMC

9 Répétez les étapes 2 à 8 pour les stéréotypes suivants :

Stéréotype Nom de la forme

Entity Entity Object

Control Control Object

10 Cliquez sur OK dans les boîtes de dialogue successives.

Le symbole de l'objet que vous aviez créé change en fonction dustéréotype :

11 Dans le diagramme de collaboration, créez un objet correspondant àchaque stéréotype.

Page 275: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 265

Votre diagramme contient maintenant 3 objets ayant des symbolesdifférents qui correspondent aux différents stéréotypes.

12 Sélectionnez Modèle→Objets pour afficher la liste des objets.

13 Cliquez sur l'outil Personnaliser les colonnes et filtrer dans la barred'outils de la liste, puis sélectionnez Stéréotype dans la liste descolonnes.

Les stéréotypes d'objet s'affichent dans la liste. Vous allez définir le nomet le code de chaque objet en fonction de leur stéréotype.

Objet Stéréotype Nom & code

Objet_1 <<Boundary>> Explorateur Internet

Objet_2 <<Control>> Serveur d'applications

Objet_3 <<Entity>> Serveur de bases de données

Page 276: advanfr.pdf

Utilisation de profils : une étude de cas

266 PowerAMC

14 Cliquez sur OK dans la liste des objets.

15 Faites glisser l'acteur Client de l'Explorateur d'objets dans le diagrammede collaboration afin de créer un symbole pour Client.

Création de liens entre objets et de messages entre objets

Vous allez créer des liens entre objets afin d'exprimer la collaboration entreces objets :

Source Destination

Client Explorateur Internet

Explorateur Internet Serveur d'applications

Serveurd'applications

Serveur de bases de données

Pour plus d'informations sur la création de liens entre objets dans lediagramme de collaboration, reportez-vous à la section Création d'un lienentre objets dans un diagramme de collaboration, dans le chapitreConstruction d'un diagramme de collaboration du manuel Guide del'utilisateur du MOO.

Vous pouvez définir des messages sur les différents liens entre objets afind'exprimer les données transportées par les liens.

Pour plus d'informations sur la création de messages sur les liens entreobjets dans le diagramme de collaboration, reportez-vous à la sectionCréation d'un message dans un diagramme de collaboration, dans le chapitreConstruction d'un diagramme de collaboration dans le manuel Guide del'utilisateur du MOO.

Vous allez créer les messages suivants :

Direction Nom du messageNumérod'ordre

Client - Explorateur Internet Demande de cotation 1

Explorateur Internet - Serveurd'applications

Demande valeur à serv.app

2

Serveur d'applications - Serveur debases de données

Demande valeur à bd 3

Serveur de bases de données - Serveurd'applications

Renvoie valeur de bd 4

Page 277: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 267

Direction Nom du messageNumérod'ordre

Serveur d'applications - ExplorateurInternet

Renvoie valeur de servapp

5

Explorateur Internet - Client Renvoie valeur 6

Création de vérifications personnalisées sur les liens d'instance

L'analyse Robustness implique certaines règles relatives au comportemententre les objets. Par exemple, un acteur doit toujours communiquer avec unobjet Boundary (une interface), les objets Entity doivent toujourscommuniquer avec les objets Control, etc. Pour représenter ces contraintes,vous allez définir des vérifications personnalisées sur les liens entre objets.

Les vérifications personnalisées n'empêchent pas les utilisateurs de se livrer àdes actions incorrectes du point de vue de la syntaxe, mais leur permet dedéfinir des règles qui seront vérifiées par la fonctionnalité de vérification demodèle.

Vous pouvez définir des vérifications personnalisées à l'aide de VBScripting.

Page 278: advanfr.pdf

Utilisation de profils : une étude de cas

268 PowerAMC

Pour plus d'informations sur la syntaxe VBS, reportez-vous au chapitreAccès aux objets à l'aide de VBScript dans le manuel Guide desfonctionnalités générales.

Pour créer des vérifications personnalisées sur les liens entreobjets :

1 Double-cliquez sur la flèche en regard de Robustness_Extension dans laboîte de dialogue Liste des définitions étendues de modèle pour afficherl'éditeur de ressources.

2 Pointez sur la catégorie Profile, cliquez le bouton droit de la souris, puissélectionnez Ajouter des métaclasses.

La boîte de dialogue Sélection de métaclasses s'affiche.

3 Sélectionnez InstanceLink dans la liste des métaclasses affichées dans lapage PdMOO, puis cliquez sur OK.

La catégorie InstanceLink s'affiche sous Profile.

4 Pointez sur la catégorie InstanceLink, cliquez le bouton droit de la souriset sélectionnez Nouveau→Vérification personnalisée.

Une nouvelle vérification est créée.

5 Saisissez Collaboration d'acteur incorrecte dans la zone Nom.

Cette vérification contrôle si les acteurs sont liés aux objets Interface. Lefait de lier des acteurs aux objets Contrôle ou Entité n'est pas admis dansrobustness analysis.

6 Saisissez "Cette vérification s'assure que les acteurs ne communiquentqu'avec les objets Boundary." dans la zone Message d'aide.

Ce texte s'affiche dans la boîte de message qui apparaît lorsquel'utilisateur sélectionne Aide dans le menu contextuel de la vérification(dans la boîte de dialogue Paramètres de vérification de modèle).

7 Saisissez " Les liens entre objets suivants sont incorrects :" dans la zoneMessage de résultats.

8 Sélectionnez Erreur comme sévérité par défaut.

Page 279: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 269

9 Cochez la case Exécuter la vérification par défaut.

10 Cliquez sur l'onglet Script de vérification.

La page Script de vérification permet de saisir le script pour lavérification supplémentaire.

11 Saisissez le script suivant dans la zone de texte.Function %Check%(link) ' Default return is True %Check% = True ' L'objet doit être un lien entre objets If link is Nothing or notlink.IsKindOf(PdMOO.cls_InstanceLink) then Exit Function End If ' Extrait les extrémités du lien Dim src, dst Set src = link.ObjectA Set dst = link.ObjectB ' Source est un acteur ' Appelle la fonction globale CompareObjectKind()définie dans le volet Script global If CompareObjectKind(src, PdMOO.Cls_Actor) Then ' Vérifie si la destination est un objet UMLavec le stéréotype "Boundary" If not CompareStéréotype(dst,PdMOO.Cls_UMLObject, "Boundary") Then %Check% = False End IfElsif CompareObjectKind(dst, PdMOO.Cls_Actor) Then ' Vérifie si la source est un objet UML avec lestéréotype "Boundary" If not CompareStéréotype(src,PdMOO.Cls_UMLObject, "Boundary") Then

Page 280: advanfr.pdf

Utilisation de profils : une étude de cas

270 PowerAMC

%Check% = False End If End IfEnd Function

12 Cliquez sur l'onglet Script global.

La page Script global est la page dans laquelle vous stockez desfonctions et des attributs statiques qui peuvent être réutilisés entre lesdifférentes fonctions.

13 Saisissez le script suivant dans la zone de texte.' Cette fonction globale vérifie si un objet a untype particulier' ou s'il est un raccourci d'un type particulierFunction CompareObjectKind(Obj, Kind) ' La valeur par défaut est false CompareObjectKind = False' Vérifie l'objet If Obj is Nothing Then Exit Function End If' Cas particulier du raccourci, recherche de sonobjet cible If Obj.IsShortcut() Then CompareObjectKind =CompareObjectKind(Obj.TargetObject) Exit Function End IfIf Obj.IsKindOf(Kind) Then ' Correct object kind CompareObjectKind = True End IfEnd Function' Cette fonction globale vérifie si un objet a untype particulier' et compare sa valeur de stéréotypeFunction CompareStéréotype(Obj, Kind, Value) ' La valeur par défaut est false CompareStéréotype = False ' Vérifie l'objet If Obj is Nothing or notObj.HasAttribute("Stéréotype") Then Exit Function End If' Cas particulier du raccourci, recherche de sonobjet cible If Obj.IsShortcut() Then CompareStéréotype =CompareStéréotype(Obj.TargetObject) Exit Function End IfIf Obj.IsKindOf(Kind) Then ' Type d'objet correcte

Page 281: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 271

If Obj.Stéréotype = Value Then ' Stéréotype correct CompareStéréotype = True End If End IfEnd Function

14 Cliquez sur Appliquer.

Vous allez répéter les étapes 4 à 14 et créer une vérification s'assurantqu'un lien entre objets n'est pas défini entre objets Boundary :

Définition de vérification Contenu

Nom Incorrect Boundary to Boundary Link

Message d'aide Cette vérification s'assurer qu'un lienentre objets n'est pas défini entredeux objets Interface

Message de résultats Les liens suivants entre objetsInterface sont incorrects :

Sévérité par défaut Erreur

Exécuter la vérification par défaut Coché

15 Saisissez la vérification suivante dans la page Script de vérification :Function %Check%(link)

' La valeur par défaut est True %Check% = True

' L'objet doit être un lien entre objets If link is Nothing or notlink.IsKindOf(PdMOO.cls_InstanceLink) then Exit Function End If

' Extrait les extrémités du lien Dim src, dst Set src = link.ObjectA Set dst = link.ObjectB

' Erreur si les deux extrémités sont des objets'Boundary' If CompareStéréotype(src, PdMOO.Cls_UMLObject,"Boundary") Then If CompareStéréotype(dst, PdMOO.Cls_UMLObject,"Boundary") Then %Check% = False End If End If

End Function

Page 282: advanfr.pdf

Utilisation de profils : une étude de cas

272 PowerAMC

16 Répétez les étapes 4 à 14 et créez une vérification pour vérifier que seulsles objets Control accèdent aux objets Entity :

Définition de la vérification Contenu

Nom Accès incorrect à un objet Entity

Message d'aide Cette vérification s'assure que seulsles objets Control accèdent aux objetsEntity

Message de résultats Les liens suivants sont incorrects :

Sévérité par défaut Erreur

Exécuter la vérification par défaut Coché

17 Saisissez la vérification suivante dans la page Script de vérification :Function %Check%(link) ' Default return is True %Check% = True ' L'objet doit être un lien entre objets If link is Nothing or notlink.IsKindOf(PdMOO.cls_InstanceLink) then Exit Function End If ' Extrait les extrémités du lien Dim src, dst Set src = link.ObjectA Set dst = link.ObjectB ' Source est un objet UML avec le stéréotype"Entity" ? ' Appelle la fonction globale CompareStéréotype()définie dans le volet Script global If CompareStéréotype(src, PdMOO.Cls_UMLObject,"Entity") Then ' Vérifie si la destination est un objet UMLavec le stéréotype "Control" If not CompareStéréotype(dst,PdMOO.Cls_UMLObject, "Control") Then %Check% = False End If Elsif CompareStéréotype(dst, PdMOO.Cls_UMLObject,"Entity") Then ' Vérifie si la source est un objet UML avec lestéréotype "Control" If not CompareStéréotype(src,PdMOO.Cls_UMLObject, "Control") Then %Check% = False End If End IfEnd Function

Page 283: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 273

18 Cliquez sur Appliquer.

19 Cliquez sur OK dans l'éditeur de ressources.

20 Sélectionnez Outils→Vérifier le modèle pour afficher la boîte dedialogue Paramètres de vérification de modèle.

Les vérifications personnalisées s'affichent dans la catégorie Liens entreobjets.

Page 284: advanfr.pdf

Utilisation de profils : une étude de cas

274 PowerAMC

Vous pouvez tester les vérifications en créant des liens entre objets entreClient et Serveur d'applications par exemple, puis en appuyant sur F4pour lancer la vérification du modèle.

Pour plus d'informations la fonctionnalité de vérification demodèle, reportez-vous aux sections correspondantes dans les différentsguides de l'utilisateur.

Génération d'une description sous forme de texte des messages

Vous allez générer une description sous forme de texte des messages quiexistent dans le diagramme de collaboration. La description doit fournir, pourchaque diagramme du modèle, le nom de l'émetteur du message, le nom dumessage et le nom de son récepteur.

Vous générez cette description à l'aide de templates et de fichiers générés, carpar défaut PowerAMC ne fournit pas cette fonctionnalité. Les templates etfichiers générés utilisent le langage de génération par templates (GTL) dePowerAMC. Les fichiers générés évaluent les templates définis sur lesmétaclasses et génèrent le résultat de l'évaluation dans des fichiers.

Pour plus d'informations sur GTL, reportez-vous au chapitre Guide deréférence de la génération.

Pour générer une description des messages d'un diagramme de collaborationsous forme de texte, vous devez définir des templates sur les métaclassessuivantes :

♦ Message : cette métaclasse contient des détails relatifs au numérod'ordre du message et au nom de ce message, à l'émetteur et aurécepteur, ce qui explique que vous définissez un template afin d'évaluerle numéro d'ordre et la description du message dans cette métaclasse

♦ CollaborationDiagram : vous définissez dans cette métaclasse lestemplates qui vont trier les messages dans le diagramme et rassemblertoutes les descriptions de message à partir du diagramme courant

Pour plus d'informations sur les métaclasses PowerAMC, reportez-vousau métamodèle PowerAMC et à sa documentation dans le chapitreMétamodèle public PowerAMC.

Le fichier généré est défini sur la métaclasse BasePackage afin de consulterla totalité du modèle, c'est-à-dire le modèle lui-même et les packages qu'ilcontient, ce afin de s'assurer que tous les messages dans le modèle et sespackages soient décrits dans le fichier généré. Il y aura un seul fichier générépuisque la métaclasse BasePackage n'a qu'une instance.

Quel templatedéfinir et où ledéfinir ?

Page 285: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 275

Définition d'un template pour la génération

Un fichier généré utilise des templates définis dans des métaclasses. Lepremier template que vous devez définir porte sur les messages. Le rôle de cetemplate est d'évaluer le numéro d'ordre de message et de fournir le nom del'émetteur, le nom du message et le nom du récepteur pour chaque messagedans le diagramme.

La syntaxe pour ce template est la suivante :.set_value(_tabs, "", new).foreach_part(%SequenceNumber%, '.').set_value(_tabs, " %_tabs%").next%_tabs%%SequenceNumber%) %Sender.ShortDescription% sendsmessage "%Name%" to %Receiver.ShortDescription%

La première partie du template vise à créer une indentation correspondant aunuméro de séquence du message. La macro foreach_parts boucle sur lesnuméros d'ordre :

.foreach_part(%SequenceNumber%, '.')

.set_value(_tabs, " %_tabs%")

Il passe en revue chaque numéro d'ordre et chaque fois qu'il trouve un point,il ajoute trois espaces vides automatiquement pour réaliser l'indentation.Cette procédure calcule la variable _tab, qui est ensuite utilisée pour créerl'indentation appropriée en fonction des numéros d'ordre.

La dernière ligne contient le texte généré pour le template : pour chaquenuméro de séquence, la valeur de tabulation appropriée est créée, suivie dunom de l'émetteur (brève description), le texte "sends message", puis le nomdu message, le texte "to", ainsi que le nom du récepteur.

Pour définir un template utilisé pour la génération :

1 Sélectionnez Modèle→Définitions étendues de modèle puis double-cliquez sur la flèche en regard de Robustness_Extension dans la boîte dedialogue Liste des définitions étendues de modèle pour afficher l'éditeurde ressources.

2 Pointez sur la catégorie Profile, cliquez le bouton droit de la souris, puissélectionnez Ajouter des métaclasses.

La boîte de dialogue Sélection de métaclasses s'affiche.

3 Sélectionnez Message dans la liste des métaclasses affichées dans lapage PdMOO, puis cliquez sur OK.

La catégorie Message s'affiche sous Profile.

Page 286: advanfr.pdf

Utilisation de profils : une étude de cas

276 PowerAMC

4 Pointez sur la catégorie Message, cliquez le bouton droit de la souris etsélectionnez Nouveau→Template.

Un nouveau template est créé.

5 Saisissez description dans la zone Nom du template

6 <facultatif> Saisissez un commentaire dans la zone Commentaire dutemplate.

7 Saisissez le code suivant dans la zone de texte :.set_value(_tabs, "", new).foreach_part(%SequenceNumber%, '.') .if (%Separator% == ".") .set_value(_tabs, " "%_tabs%) .endif.next%_tabs%%SequenceNumber%) %Sender.ShortDescription%sends message "%Name%" to %Receiver.ShortDescription%

8 Cliquez sur Appliquer.

Définition des templates pour la métaclasse du diagramme de collaboration

Une fois que vous avez défini le template utilisé pour évaluer le numérod'ordre de chaque message, vous devez créer un template pour trier cesnuméros d'ordre (compareCbMsgSymbols), ainsi qu'un autre templatepour extraire tous les messages du diagramme de collaboration(description).

Le template compareCbMsgSymbols est de type booléen et permet devérifier si le numéro de message est supérieur à un autre numéro de message.La syntaxe de ce template est la suivante :

.bool (%Item1.Object.SequenceNumber% >= %Item2.Object.SequenceNumber%)

Page 287: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 277

La valeur renvoyée pour ce template est utilisée avec le paramètre comparedans le template description dont le code se présente comme suit :

Collaboration Scenario %Name%:\n.foreach_item(Symbols,,, %ObjectType% ==CollaborationMessageSymbol, %compareCbMsgSymbols%) %Object.description%.next(\n)

Dans ce template, la première ligne est utilisée pour générer le titre duscénario à l'aide du nom du diagramme de collaboration %Name%. Puis ellecrée une nouvelle ligne.

Ensuite, la macro pour chaque élément boucle sur chaque symbole demessage, vérifie puis trie le numéro de message, puis génère la description demessage à l'aide de la syntaxe définie dans la section précédente.

Pour définir des templates pour la métaclasse du diagramme decollaboration :

1 Pointez sur la catégorie Profile, cliquez le bouton droit de la souris, puissélectionnez Ajouter des métaclasses.

La boîte de dialogue Sélection de métaclasses s'affiche.

2 Cliquez sur l'outil Modifier le filtre des métaclasses et sélectionnezAfficher toutes les métaclasses.

3 Sélectionnez CollaborationDiagram dans la liste des métaclassesaffichées dans la page PdMOO, puis cliquez sur OK.

La catégorie CollaborationDiagram s'affiche sous Profile.

4 Pointez sur la catégorie CollaborationDiagram, cliquez le bouton droitde la souris et sélectionnez Nouveau→Template.

Un nouveau template est créé.

5 Saisissez compareCbMsgSymbols dans la zone Nom du template.

6 <facultatif> Saisissez un commentaire dans la zone Commentaire dutemplate.

7 Saisissez le code suivant dans la zone de texte :

.bool (%Item1.Object.SequenceNumber% >=%Item2.Object.SequenceNumber%)

8 Cliquez sur Appliquer.

9 Pointez sur la catégorie CollaborationDiagram, cliquez le bouton droitde la souris et sélectionnez Nouveau→Template.

Un nouveau template est créé.

Page 288: advanfr.pdf

Utilisation de profils : une étude de cas

278 PowerAMC

10 Saisissez description dans la zone Nom du template

11 <facultatif> Saisissez un commentaire dans la zone Commentaire dutemplate.

12 Saisissez le code suivant dans la zone de texte :Collaboration Scenario %Name%:\n.foreach_item(Symbols,,, %ObjectType% ==CollaborationMessageSymbol, %compareCbMsgSymbols%) %Object.description%.next(\n)

13 Cliquez sur Appliquer.

Définition d'un fichier généré

Vous allez définir un fichier généré afin de répertorier les messages dechaque diagramme de collaboration existant dans votre modèle. Pour ce faire,vous devez définir le fichier généré dans la métaclasse BasePackage. Cettemétaclasse est la classe commune pour tous les packages et modèles, ellepossède les objets, diagrammes et autres packages.

Le fichier généré contiendra le résultat de l'évaluation de la descriptiondu template définie sur la métaclasse CollaborationDiagram. Le code dufichier généré contient également une macro foreach_item macro afin deboucler sur les différents diagrammes de collaboration du modèle.

Page 289: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 279

Pour définir un fichier généré :

1 Pointez sur la catégorie Profile, cliquez le bouton droit de la souris, puissélectionnez Ajouter des métaclasses.

La boîte de dialogue Sélection de métaclasses s'affiche.

2 Cliquez sur l'outil Modifier le filtre des métaclasses, sélectionnezAfficher les métaclasses de modélisation abstraite, puis cliquez surl'onglet PdCommon.

3 Sélectionnez BasePackage dans la liste des métaclasses, puis cliquez surOK.

La catégorie BasePackage s'affiche sous Profile.

4 Pointez sur la catégorie BasePackage, cliquez le bouton droit de la souriset sélectionnez Nouveau→Generated File.

Un nouveau fichier généré est créé.

5 Saisissez Descriptifs des collaborations dans la zone Nom.

Ce nom est utilisé dans l'éditeur de ressources.

6 Saisissez Descriptif de collaboration %Name%.txt dans la zone Nom defichier.

Il s'agit du nom du fichier qui sera généré. Il s'agira d'un fichier .txt, et ilcontiendra le nom du modèle courant grâce à la variable %Name%.

7 Conservez la valeur de codage ANSI.

8 <facultatif> Saisissez un commentaire dans la zone Commentaire.

9 Décochez la case Utiliser la hiérarchie des packages comme chemind'accès, car vous n'avez pas besoin de générer la hiérarchie des fichiers.

Page 290: advanfr.pdf

Utilisation de profils : une étude de cas

280 PowerAMC

10 Saisissez le code suivant dans la zone de texte :.foreach_item(CollaborationDiagrams) %description%.next(\n\n)

11 Cliquez sur OK et acceptez d'enregistrer la définition étendue de modèle.

12 Cliquez sur OK pour fermer la boîte de dialogue Liste des définitionsétendues de modèle.

Aperçu de la description sous forme de texte du diagramme de collaboration

Puisque le fichier généré est défini dans la métaclasse BasePackage, vouspouvez afficher un aperçu du texte généré dans la page Aperçu de la feuillede propriétés du modèle. Vous pouvez également en profiter pour vérifierque la syntaxe des templates et que ce que vous allez générer correspondent àvos attentes.

Pour afficher un aperçu de la description sous forme de texte dudiagramme de collaboration :

1 Pointez sur l'arrière-plan du diagramme de collaboration, cliquez lebouton droit de la souris, puis sélectionnez Propriétés.

La feuille de propriétés du modèle s'affiche.

2 Cliquez sur l'onglet Aperçu pour afficher la page correspondante.

Page 291: advanfr.pdf

Chapitre 2 Gestion des profils

Documentation utilisateur avancée 281

La page Aperçu affiche le contenu du fichier à générer.

3 Cliquez sur OK.

Page 292: advanfr.pdf

Utilisation de profils : une étude de cas

282 PowerAMC

Page 293: advanfr.pdf

Documentation utilisateur avancée 283

C H A P I T R E 3

Guide de référence du langage objet

Ce document décrit la structure et le contenu des langages objet dans unMOO. Il sert de référence pour les langages objet pris en charge parPowerAMC. Vous y trouverez une présentation générale de l'utilisation d'unlangage objet et ce, quelles que soient ses caractéristiques.

Section Page

Présentation du langage objet 284

Notions de base relatives à l'éditeur de langage objet 285

Ne modifiez pas un langage objet fourni avec PowerAMC. Créez toujoursvos nouveaux langages objet à partir des fichiers d'origine. Un langage objetest enregistré dans un fichier dont le nom est doté du suffixe XOL.

Les modifications que vous apportez dans un langage objet peuvent changerla façon dont PowerAMC fonctionne, tout particulièrement en ce quiconcerne la génération d'objets. Vous devez tester en profondeur les objetsgénérés.

Pour plus d'informations sur la création d'un langage objet par copied'un langage objet existant, reportez-vous à la section Création d'un fichier deressources, dans le chapitre L'éditeur de ressources du manuel Guide desfonctionnalités générales.

A propos de cedocument

Sommaire

Avant decommencer

Page 294: advanfr.pdf

Présentation du langage objet

284 PowerAMC

Présentation du langage objetVous pouvez utiliser de nombreux langages objet différents dans un MOO.Pour chaque langage objet, un fichier de définition standard est inclus quifournit une interface entre PowerAMC et le langage objet afin d'établir lesmeilleures relations entre eux.

AttentionNe modifiez pas les langages objet fournis avec PowerAMC. Pour chaquelangage objet que vous souhaitez modifier, vous devez créer un nouveaulangage objet. Pour ce faire, vous devez créer un nouveau langage objet àpartir de la boîte de dialogue Liste des langages objet(Outils→Ressources→Langages objet), définir un nom et sélectionner lefichier d'origine dans la liste déroulante Copier depuis. Vous pouvez ainsicréer un nouveau langage objet identique au fichier d'origine (sauf en cequi concerne le nom).

Le langage objet est un composant requis lorsque vous travaillez avec desmodèles orienté objet (MOO). Chaque langage objet a sa propre définition delangage objet au format XML qui contient les spécifications pour un langageobjet particulier dans un format lisible par un MOO. Il fournit la syntaxe etles règles de création des objets et met en oeuvre les stéréotypes, types dedonnées, scripts et constantes pour un langage objet.

Chaque MOO est par défaut attaché à un langage objet. Lorsque vous créezun nouveau MOO, vous devez choisir un langage objet : vous pouvez créerun nouveau langage objet, ou bien utiliser l'un des langages objet fournisavec le MOO.

La définition d'un langage objet est disponible dans sa feuille de propriétés(Outils→Ressources→Langages objet. Vous pouvez sélectionner etconfigurer des paramètres utilisés lors de la définition des objets ou de lagénération à partir d'un MOO.

Tous les langages objet ont la même structure constituée d'un certain nombrede catégories. Une catégorie peut contenir d'autres catégories, des entrées etdes valeurs. Ces entrées sont des paramètres reconnaissables par un MOO.

Les valeurs pour les entrées de langage objet varient selon le langageconsidéré. Certaines entrées peuvent ne pas être disponibles si lafonctionnalité ne s'applique pas au langage objet.

Même si un langage objet particulier est utilisé pour illustrer un exemple, lemécanisme expliqué dans ce chapitre s'applique à tous les langages objet prisen charge dans un MOO.

Qu'est-ce qu'unlangage objet ?

Que contient unlangage objet ?

Exemples delangage objet

Page 295: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 285

Notions de base relatives à l'éditeur de langageobjet

Vous utilisez l'éditeur de langage pour consulter ou modifier un langage objet(fichier .XOL).

Pour afficher l'éditeur de langage :

♦ Sélectionnez Langage→Editer le langage objet courant.ouSélectionnez Outils→Ressources→Langages objet puis double-cliquezsur un langage objet existant.

La feuille de propriétés du langage objet s'affiche.

L'éditeur de langage objet permet de naviguer entre les différentes catégorieset entrées du langage objet. Selon l'élément sélectionné, le contenu de lapartie droite de la fenêtre change. Le terme Métaclasse est utilisé dans ladocumentation PowerAMC pour identifier un objet en tant que métaclasse.Les métaclasses contenues dans l'arborescence de l'éditeur de ressources sontdes catégories.

Page 296: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

286 PowerAMC

Pour plus d'informations sur la manipulation des catégories et entréesdans l'éditeur de langages objet, reportez-vous au chapitre L'éditeur deressources dans le manuel Guide des fonctionnalités générales.

Propriétés d'un langage objet

L'éditeur de langage objet contient les catégories suivantes, qui incluent despropriétés spécifiques à chaque langage pris en charge :

Catégorie Description

Settings Contient des types de données, des constantes, des conventionsde dénomination et des catégories d'événements utilisés dans leMOO

Generation Contient des objets de génération avec des options et des scriptsde commandes définis dans le fichier .XOL

Profil detransformations

Permet de créer des profils contenant des transformationsutilisées au cours de la génération de modèle ou appliquéesdans un modèle

Profile Contient des templates, des stéréotypes, des attributs étenduspour la génération

Un langage objet a une feuille de propriétés disponible lorsque vous cliquezsur le noeud racine dans l'arborescence de l'éditeur de langage objet. Cettedernière inclut les propriétés suivantes :

Propriété Description

Nom Nom du langage objet

Code Code du langage objet

Nom de fichier Chemin d'accès et nom du fichier du langage objet. Cettezone est remplie lorsque le langage objet est partagé. Si lelangage objet est une copie, la zone est vide. Vous nepouvez pas modifier le contenu de cette zone

Famille Classification utilisée pour impliquer un certaincomportement dans le modèle objet. Dans PowerAMC, lafamille est utilisée pour activer certaines fonctionnalitésdans le modèle. De telles fonctionnalités n'existent pas pardéfaut dans le MOO standard. Voir l'exemple ci-après

Sous-famille Sous-classification qui peut être combinée avec laclassification en familles pour impliquer un certaincomportement dans le langage objet

Page 297: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 287

Propriété Description

Activer le suivi Affiche les templates de génération utilisés pour le textegénéré dans la page Aperçu des feuilles de propriétésd'objets

Commentaire Informations supplémentaires relatives au langage objet

Les propriétés Famille et Sous-famille impliquent certains comportementsdans le langage objet. Par exemple, les langages objet des familles Java,XML, IDL et PowerBuilder prennent en charge le reverse engineering.

Si vous sélectionnez Fichier→Reverse engineering→Langage objet, vouspouvez vérifier que seuls les langages objet de ces familles sont disponiblesdans la liste déroulante Langage objet de la boîte de dialogue.

La sous-famille est utilisée pour affiner les fonctionnalités définies pour unefamille particulière ; par exemple, dans la famille Java, la sous-famille J2EEpermet de gérer les Entreprise Java beans ou de rendre possible la création deservlets et de JSP.

Si vous travaillez sur un MOO Java créé dans la version 9.0, la sous-famillede Java est EJB 2.0 et elle prend en charge les EJB. Dans la version 9.5, lasous-famille de Java est devenue J2EE, elle prend en charge les composantsJ2EE (servlets, JSP et EJB).

Vous devez utiliser le nouveau langage objet Java fourni avec la versioncourante pour pouvoir utiliser les composants J2EE. Si vous avezpersonnalisé le langage objet Java dans la version précédente, vous devezappliquer ces changements au nouveau langage objet Java.

La case Activer le suivi permet de prévisualiser les templates utilisés lors dela génération. Avant même de lancer la génération, vous pouvez afficher lapage Aperçu de l'objet impliqué dans la génération pour voir ses templates etutiliser l'outil Réactualiser pour les afficher.

Lorsque vous double-cliquez sur une ligne de suivi dans la page Aperçu, ladéfinition de template correspondante s'affiche dans l'éditeur de ressources,dans la catégorie Profile\Objet\Templates. Le code du template peut êtreaffiché dans des couleurs distinctes.

Pour plus d'informations sur ces couleurs, reportez-vous au paragrapheColoration syntaxique dans la section Catégorie Generated Files.

Famille et sous-famille

Sous-famille JavaEJB

Activer le suivi

Page 298: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

288 PowerAMC

Catégorie Settings

La catégorie Settings contient des éléments permettant de personnaliser et degérer les fonctionnalités de génération de MOO. Les éléments spécifiques àun langage objet ne sont pas détaillés dans cette section.

Catégorie Description

Data Types Tables pour les correspondances de types de données

Constants Liste de valeurs constantes

Namings Contient les valeurs par défaut des opérations getter et setter,un caractère illégal ou des valeurs de nom de composant J2EE,par exemple

Events Valeurs d'événement standard

Catégorie Data types

La catégorie Data types (types de données) montre la correspondance entreles types de données internes et ceux du langage objet.

Les types de données suivants sont définis par défaut :

Constante Valeur par défaut

BasicDataTypes Types de données de base de langage objet. Lacolonne Valeur indique le type de données conceptuelutilisé pour la génération de MCD et de MPD.BasicDataTypes représente les types de données lesplus utilisés

ConceptualDataTypes La colonne Valeur indique le type de données delangage objet utilisé pour la génération des modèlesMCD et MPD. Les types de données conceptuels sontles types de données internes de PowerAMC, et ils nepeuvent pas être modifiés

AdditionalDataTypes Types de données supplémentaires ajoutés dans leslistes de types de données. La colonne Valeur indiquele type de données conceptuel utilisé pour lagénération des modèles MCD et MPD. Peut êtreutilisé pour ajouter ou modifier vos propres types dedonnées

DefaultDataType Valeur de type de données sélectionnée par défaut

Page 299: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 289

Dans le langage objet XML-Schema, la catégorie Settings est développéepour montrer la liste des valeurs pour Basic data types.

Catégorie Constants

La catégorie Constants contient les valeurs constantes suivantes définies pardéfaut :

NullTrueFalseVoidBool

Cette catégorie contient une table de correspondances entre les constantes etleurs valeurs par défaut. Les valeurs par défaut varient en fonction du langageobjet.

Catégorie Namings

La catégorie Namings contient des paramètres qui influent sur ce qui serainclus dans les fichiers que vous générez à partir d'un MOO. Vous pouvezmodifier les valeurs par défaut de cette catégorie pour personnaliser leprocessus de génération dans PowerAMC.

Exemple

Page 300: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

290 PowerAMC

Vous pouvez modifier les valeurs par défaut suivantes :

Constante Description

GetterName Nom et valeur pour les opérations getter

GetterCode Code et valeur pour les opérations getter

SetterName Nom et valeur pour les opérations setter

SetterCode Code et valeur pour les opérations setter

IllegalChar Liste des caractères illégaux dans le langage objet courant. Voirl'exemple ci-après

La liste des caractères illégaux est utilisée lorsque vous créez un MOO, oubien quand vous changez le langage objet pour initialiser les listes decaractères illégaux pour tous les codes de tous les objets du modèle. La listedes caractères illégaux est visible après la création du modèle(Outils→Options du modèle→Convention de dénomination).

Par exemple, les caractères suivants ne sont pas acceptés pour les noms oules codes dans XML-Schema :

"/!=<>""'()"

Catégorie Events

Vous pouvez utiliser cette catégorie pour définir des événements standard surles opérations. Vous pouvez trouver des événements existants par défaut telsque les constructeur et destructeur, en fonction du langage objet.

Un événement est lié à une opération. Le contenu de la catégorie Events estaffiché dans la liste déroulante Evénement dans les feuilles de propriétésd'opération. Il décrit les événements qui peuvent être utilisés par uneopération.

Dans PowerBuilder, par exemple, la catégorie Events est utilisée pourassocier les opérations aux événements PowerBuilder.

Caractères illégaux

Page 301: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 291

Catégorie Generation

La catégorie Generation contient des catégories et des entrées permettant dedéfinir et d'activer un processus de génération. Vous pouvez utiliser lescatégories suivantes :

♦ Commandes de génération

♦ Tâches de génération

♦ Options de génération

Guide de référence de générationLe processus de génération PowerAMC est défini dans le chapitre Guidede référence de génération de ce manuel. Nous vous recommandons decommencer par lire ce chapitre afin de vous familiariser avec les conceptset fonctionnalités du processus de génération.

Catégorie Commands

La catégorie Commands permet d'écrire des commandes de génération. Lescommande de génération peuvent être exécutées à la fin du processus degénération, une fois tous les fichiers générés. Vous pouvez par exempleintégrer des commandes de compilation ou de création d'un fichier d'archivesà la fin du processus de génération à partir d'un MOO.

Toutes les commandes écrites dans la catégorie Commands sont disponiblesaprès la création dans la page Tâches de la boîte de dialogue de génération,elles peuvent alors être exécutées à la fin de la génération. Vous pouveztrouver des commandes par défaut dans le langage objet courant. Toutes lescommandes par défaut ne sont pas répertoriées ici car elles dépendententièrement du langage objet utilisé.

Les commandes doivent être incluses au sein de tâches pour être exécutées.

Pour plus d'informations sur le rôle des tâches, reportez-vous à lasection Catégorie Tasks.

Les commandes sont liées à un langage objet. Le texte qui définit le code dela commande est écrit à l'aide du langage de génération par templates (GTL).Il utilise les variables d'environnement qui peuvent correspondre auxexécutables tels que javac.exe, par exemple.

Pour plus d'informations sur le GTL, reportez-vous au chapitre Guidede référence de génération.

Page 302: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

292 PowerAMC

Les macros spécifiques sont disponibles dans le cadre de l'exécution descommandes.

Pour plus d'informations sur les macros, reportez-vous à la sectionUtilisation de macros dans le chapitre Guide de référence de génération.

Pour définir une commande pour la génération :

1 Pointez sur la catégorie Generation\Commands dans le langage objet etcliquez le bouton droit de la souris.

2 Sélectionnez Nouvel élément.

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Saisissez un commentaire dans la zone Commentaire.

5 Saisissez le code de la commande dans la zone de texte vide en utilisantles outils à votre disposition.

6 Cliquez sur Appliquer.

Page 303: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 293

Suppression d'une commande de générationVous pouvez retirer une commande de génération dans le langage objet enpointant sur l'objet et en cliquant le bouton droit de la souris, puis ensélectionnant Supprimer. Une boîte de confirmation vous invite àconfirmer la suppression de la commande. Elle peut indiquer que la valeurpar défaut définie pour cette entrée sera utilisée, cette valeur par défaut eststockée dans le template caché du langage objet.

Pour plus d'informations sur ces entrées, reportez-vous à la sectionAjout d'une catégorie ou d'une entrée dans un fichier de ressources, dans lechapitre L'éditeur de ressources du manuel Guide des fonctionnalitésgénérales.

Catégorie Tasks

Une tâche est une liste de commandes à exécuter à l'issue de la génération.Ces commandes doivent être référencées au sein des différentes tâchesdéfinies pour la génération, une commande non référencée dans une tâche nepeut pas être exécutée. Vous trouverez à la fin de cette section un exemplecomportant une commande et une tâche contenant cette commande.

Le mécanisme d'exécution de la commande fonctionne comme suit :lorsqu'une tâche est sélectionnée dans la page Tâches de la boîte de dialoguede génération, les commandes incluses dans la tâches sont extraites et letemplate associé à la commande est évalué et exécuté.

Les tâches s'affichent dans la page Tâches de la boîte de dialogue degénération et sont exécutées dans un ordre défini. Cet ordre peut êtrefacilement modifié en utilisant les flèches de déplacement dans la pageTâches.

Explication du codedes commandes

Page 304: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

294 PowerAMC

Vous devez créer la commande avant de créer la tâche qui contient cettecommande : dans l'exemple suivant, la tâche nommée Compile fait référenceà une commande nommée Javac (écrite dans la colonne Nom). Le code de lacommande Javac est situé dans la catégorie Commands.

Pour définir une tâche pour la génération :

1 Pointez sur la catégorie Generation\Tasks et cliquez le bouton droit de lasouris.

2 Sélectionnez Nouvel élément.

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Saisissez un commentaire dans la zone Commentaire.

5 Dans la zone de groupe Commandes, cliquez sur l'outil Ajouter descommandes, puis sélectionnez la ou les commandes que vous souhaitezinclure dans la tâche courante.

Le nom de la ou des commandes s'affiche dans la colonne Nom.

6 <facultatif>> Double-cliquez sur la flèche au début de la ligne pourafficher le code de la commande.

Page 305: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 295

7 Cliquez sur Appliquer.

Ouvrez le langage objet Java (Langage→Editer le langage objet courant),créez et définissez une entrée de commande nommée DoCommand dans lacatégorie Generation\Commands :

Exemple

Page 306: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

296 PowerAMC

Créez une entrée de tâches nommée Execute dans la catégorieGeneration\Tasks, cliquez sur l'outil Ajouter des commandes, puissélectionnez DoCommand :

La nouvelle tâche est disponible dans la page Commands de la boîte dedialogue de génération. Le commentaire de la tâche est affiché par défaut. Siaucun commentaire n'a été fourni, le nom de la tâche est affiché.

Page 307: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 297

Catégorie Options

La catégorie Options permet de personnaliser le processus de génération. Ellecontient des entrées par défaut qui représentent des options de génération.

Vous pouvez définir des options de génération à partir de la catégorieGeneration\Options dans le langage objet. Ces options définies parl'utilisateur sont disponibles après la création dans la page Options de la boîtede dialogue de génération.

Les options de génération peuvent être utilisées dans tous les templates.

Vous pouvez créer les différents types d'options suivants :

Type Description

Booléenne Lorsque ce type est sélectionné, une zone Valeur permet de choisirentre Oui et Non

Chaîne Lorsque ce type est sélectionné, une zone Valeur permet de saisir lachaîne

Liste Lorsque ce type est sélectionné, une zone Valeur s'affiche. Vouspouvez ajouter une valeur à l'aide de l'outil Ajouter une valeur, puiscocher la case correspondante

Le format des valeurs peut être affiché comme suit dans la page Options de laboîte de dialogue de génération : lorsqu'un commentaire de valeur estspécifié, il est affiché dans la liste à la place du nom de la valeur.

Par exemple, si une case Value:Attribute est cochée dans une listed'options nommée myListOption dans la catégorie Generation\Options, seulela description Attribute est affichée dans la page Options de la boîte dedialogue de génération. Toutefois, le GTL va évaluer%GenOptions.MyListOption% à Value.

Vous pouvez trouver des options par défaut définies dans le langage objet.Ces options ne sont pas répertoriées ici car elles dépendent du langage objetque vous utilisez.

Pour plus d'informations sur la liste des options de votre langage objet,reportez-vous au chapitre Génération pour un langage dans le manuel Guidede l'utilisateur du Modèle Orienté Objet.

Pour définir une option pour la génération :

1 Pointez sur la catégorie Generation\Options et cliquez le bouton droit dela souris.

2 Sélectionnez Nouveau.

Page 308: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

298 PowerAMC

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Sélectionnez un type.

5 Saisissez un commentaire dans la zone Commentaire.

6 Selon le type de l'option, sélectionnez ou saisissez la valeur dans la zoneValeur.

7 Cliquez sur Appliquer.

Ouvrez le langage objet (Langage→Editer le langage objet courant), puiscréez une entrée booléenne nommée UserDefined_Option dans la catégorieGeneration\Options :

Exemple

Page 309: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 299

La nouvelle option est disponible dans la page Options de la boîte dedialogue de génération (Langage→Générer du code Java). Le commentairede l'option est affiché par défaut. Si aucun commentaire n'a été fourni, le nomde l'option est affiché.

La valeur d'une option peut être obtenue dans un template à l'aide de lasyntaxe suivante :

'%' 'GenOptions.'<option-name> '%'

Par exemple, si vous définissez une option booléenne nomméeGenerateComment, %GenOptions.GenerateComment% sera évaluée à trueou false dans un template, selon la valeur spécifiée dans la page Options de laboîte de dialogue de génération.

Suppression d'une option de générationVous pouvez supprimer une option de génération dans le langage objet enpointant sur l'entrée, en cliquant le bouton droit de la souris, puis ensélectionnant Supprimer. Une boîte de confirmation vous invite àconfirmer la suppression. Elle peut indiquer que la valeur par défautdéfinie pour cette entrée sera utilisée, cette valeur par défaut est stockéedans le template caché du langage objet.

Pour plus d'informations sur ces entrées, reportez-vous à la sectionAjout d'une catégorie ou d'une entrée dans un fichier de ressources, dans lechapitre L'éditeur de ressources du manuel Guide des fonctionnalitésgénérales.

Exemple

Page 310: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

300 PowerAMC

Catégorie Transformation profile

Un profil de transformation est un groupe de transformations utilisé au coursd'une génération de modèle ou lorsque vous souhaitez appliquer desmodifications à certains objets dans les modèles source ou cible.

Vous définissez un profil de transformation dans la catégorie TransformationProfiles d'une définition étendue de modèle, d'un langage objet, d'un SGBD,ou d'un langage de processus. Chaque profil est identifié par le modèle danslequel le fichier de ressource est défini, par un type de modèle, une famille etune sous famille.

Pour plus d'informations sur les transformations, reportez-vous auchapitre Gestion des transformations, dans le Guide des FonctionnalitésGénérales.

Catégorie Profile

Chaque objet a une catégorie identifiée par son nom qui peut contenir lescatégories suivantes :

♦ Criteria

♦ Stereotypes

♦ Extended attributes

♦ Generated Files et Templates

♦ Custom Check

♦ Custom Symbol et outil

♦ Methods

♦ Transformations

♦ Menus

Pour plus d'informations sur les vérifications personnalisées et lessymboles personnalisés, reportez-vous aux sections Définition d'unevérification personnalisée dans un profil et Définition d'un symbolepersonnalisé dans un profil, dans le chapitre Gestion des profils.

Ces objets sont des métaclasses (du métamodèle), puisque chaque objet estreprésenté sous forme de métaclasse dans le métamodèle.

Pour plus d'informations sur le métamodèle, reportez-vous au chapitreMétamodèle public PowerAMC.

Page 311: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 301

La catégorie Profile inclut également une catégorie Shared utilisée pourstocker des entrées réutilisables telles que les types d'attributs étendus et lestemplates partagés.

Pour plus d'informations sur les éléments de la catégorie Profile,reportez-vous au chapitre Gestion des profils.

Catégorie Criteria

Les critères (catégorie Criteria) sont un mécanisme d'extension génériquepour les métaclasses PowerAMC. Ils peuvent être utilisés pour des objets quine prennent pas en charge les stéréotypes dans un MCD ou dans un MPD.

Un critère définit une condition avec les expressions utilisées dans la macro.if du langage de génération par templates (GTL) de PowerAMC. Lorsqu'uneinstance de métaclasse vérifie la condition du critère, les extensions définiessur le critère sont appliquées à cette instance.

Pour plus d'informations sur les critères, reportez-vous à la sectionDéfinition d'un critère, dans le chapitre Gestion des profils.

Catégorie Stereotypes

Dans la catégorie Stereotypes, vous pouvez définir des stéréotypes pour desobjets qui prennent en charge les stéréotypes. Vous pouvez modifier lesstéréotypes par défaut existants, ou bien définir de nouveaux stéréotypes pourn'importe quel objet du modèle.

Catégorie Shared

Page 312: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

302 PowerAMC

Lorsque vous modifiez les valeurs d'un stéréotype pour un objet, leschangements s'appliquent à tous les objets existants et tous les objets dumême type que vous créez dans le modèle.

Pour plus d'informations sur les stéréotypes, reportez-vous à la sectionDéfinition d'un stéréotype, dans le chapitre Gestion des profils.

Catégorie Extended attributes

Les attributs étendus définis pour un objet sont créés en plus des attributsstandard. Les noms d'attributs étendus peuvent être utilisés en tant quevariables dans les scripts définis dans le langage objet.

Chaque attribut étendu peut être nécessaire pendant la génération, c'estpourquoi nous vous déconseillons de les modifier. Il est préférable de créerune copie de sauvegarde pour chaque langage objet avant de commencer àles modifier.

Par défaut, les valeurs d'attributs étendus que vous définissez dans le langageobjet s'affichent dans la page Attributs étendus de la feuille de propriétés del'objet.

Pour plus d'informations sur les attributs étendus, reportez-vous à lasection Définition d'attributs étendus dans un profil, dans le chapitre Gestiondes profils.

Si vous souhaitez compléter la définition des objets de modèle et étendre lemétamodèle, vous devez définir des attributs étendus dans une définitionétendue de modèle. De tels attributs étendus ne sont alors pas utilisés lors duprocessus de génération.

Pour plus d'informations sur les définitions étendues de modèle,reportez-vous à la section Gestion des définitions étendues de modèle, dansle chapitre Gestion des objets, dans le manuel Guide des fonctionnalitésgénérales.

Page 313: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 303

Dans le langage objet C#, l'attribut étendu virtual est utilisé pouridentifier l'opération :

Catégorie Generated Files

Certains objets de la catégorie Profile incluent une entrée Generated Files quicontient une liste de fichiers. Ces entrées définissent les fichiers qui serontgénérés pour une métaclasse donnée ou pour les instances d'une métaclasseayant un stéréotype ou correspondant à un critère sélectionné.

La catégorie Generated Files pour les objets fichiers dans Java contientl'entrée EmbeddedArtifact qui s'applique à tous les fichiers incorporés detype Artifact à générer. L'entrée EmbeddedArtifact contient la zone Nom defichier qui contient le template pour le nom des fichiers à générer.

Exemple

Exemple

Page 314: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

304 PowerAMC

Dans la partie inférieure, on trouve une zone de texte qui affiche le code dutemplate du fichier à générer.

Pour plus d'informations sur l'entrée Generated Files, reportez-vous à lasection Définition de templates et de fichiers générés dans un profil, dans lechapitre Gestion des profils.

Vous pouvez définir le format pour les fichiers générés dans la zone Codagepour chaque fichier que vous générez. Un format de codage par défaut vousest fourni, mais vous pouvez également cliquer sur le bouton Points desuspension en regard de la zone Codage pour changer de codage. Vousaffichez ainsi la boîte de dialogue Format de codage pour le texte en sortiedans laquelle vous pouvez sélectionner un format dans une liste déroulante.

Cette boîte de dialogue inclut les propriétés suivantes :

Propriété Description

Codage Format de codage du fichier généré

Annuler si perte decaractère

Permet d'arrêter la génération si des caractères ne peuventpas être identifiés et risquent d'être perdus dans le codagecourant

Codage

Page 315: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 305

Si la zone Nom de fichier de l'entrée Generated Files est vide, aucun fichiern'est généré. Toutefois, il peut s'avérer utile de laisser cette colonne vide defaçon à afficher un aperçu du contenu du fichier avant génération. Vouspouvez utiliser à cet effet la page Aperçu de l'objet correspondant à toutmoment.

Au cours de la génération, le template dans Nom de fichier est évalué et sil'une des extensions suivantes est rencontrée, le code est affiché dans l'éditeuret avec la coloration syntaxique correspondante (exemple : .cs pour C++) :

Extension Coloration syntaxique

.java Java

.c C

.h C

.sru PowerBuilder

.html HTML

.xml XML

.xsd XML

.dtd XML

.xmi XML

.jsp XML

.wsdl XML

.asp XML

.aspx XML

.asmx XML

.cpp CPP

.hpp CPP

.cs C++

.cls Visual Basic 6

.vb Visual Basic 6

.vbs VB Script

.sql SQL

.idl CORBA

.txt Editeur de texte par défaut

Colorationsyntaxique

Page 316: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

306 PowerAMC

Il y a deux scénarii possibles lors de la génération :

♦ Un fichier est généré

♦ Aucun fichier n'est généré

Le mécanisme de la génération de fichiers est le suivant pour chaque objetayant une entrée Generated Files qui n'est pas vide :

Un fichier est généré lorsque la zone Nom de fichier contient le nom dufichier ou le template du nom du fichier à générer. Vous pouvez saisir le nomdu fichier à générer comme suit :

♦ nom_fichier.suffixe (par exemple, ejb-jar.xml)

♦ %suffixenom_fichier% (par exemple, %asmxFileName%)

Fichier généré

Page 317: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 307

Dans cet exemple, un fichier appelé ejb-jar.xml situé dans le dossier META-INF est généré.

Dans cet exemple, aucun fichier n'est généré car le contenu de la zone Nomde fichier commence par un caractère . (point). Le contenu du fichier n'estdisponible que dans la page Aperçu de la feuille de propriétés du composant(EJB - Entity Bean).

Aucun fichiergénéré

Page 318: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

308 PowerAMC

Catégorie Templates

Les templates sont utilisés pour définir ce que vous souhaitez générer pourl'objet courant.

Pour plus d'informations sur l'utilisation des templates, reportez-vous àla section Définition de templates, dans le chapitre Guide de référence degénération.

Le template suivant est défini pour les opérations dans Java. Il définit lesrègles relatives à l'affichage de la visibilité. Il est également disponible dansla catégorie Templates pour les attributs et les classes.

Pour plus d'informations sur la catégorie Templates, reportez-vous à lasection Définition de templates et de fichiers générés dans un profil, dans lechapitre Gestion des profils.

Exemple

Page 319: advanfr.pdf

Chapitre 3 Guide de référence du langage objet

Documentation utilisateur avancée 309

Utilisation de la touche F12 pour trouver des templatesVous pouvez afficher tous les templates du même nom en utilisant latouche F12. Pour ce faire, ouvrez un template, placez le curseur sur unnom de template entre caractères %, puis appuyez sur la touche F12. Vousaffichez ainsi une fenêtre qui affiche tous les templates avec en préfixe lenom de la métaclasse correspondante.Exemple : placez le curseur sur %definition% dans un template, appuyezsur F12. La fenêtre affiche tous les <nom_métaclasse>::definition. Vouspouvez ensuite double-cliquer sur le template de votre choix dans lafenêtre Parcourir afin de placer le curseur directement sur le templatesélectionné.

Dans l'exemple suivant, la catégorie Generated Files pour les classificateurscontient une entrée 'Java Source'. Cette entrée contient le template nommé%source% dans la zone de texte.

Comment lesfichiers générés etles templatesfonctionnentensemble ?

Page 320: advanfr.pdf

Notions de base relatives à l'éditeur de langage objet

310 PowerAMC

Lorsque vous ouvrez la catégorie Templates pour les classificateurs, letemplate nommé 'source' est affiché. Lorsque le fichier est généré pour unclassificateur donné ou pour les instances d'un classificateur avec unstéréotype ou critère sélectionné, le template évalué est le template 'source'.Le nom du fichier généré correspond à l'entrée dans la zone Nom de fichier.

Vous pouvez définir des collections d'implémentation pour les associations.Les attributs d'association évalués sont : Nom de rôle, Visibilité, Multiplicité,Implémentation (RoleAContainer ou RoleBContainer), Classe de mise enoeuvre, Ordre, Navigable, Modifiable, Valeur initiale, Persistant, Volatile,Multiplicité minimale, Multiplicité maximale, Classificateur (ClassA ouClassB). Vous devez définir le rôle actif dans l'association à l'aide desattributs RoleAActive ou RoleBActive. Lorsque vous référencez parexemple RoleAActive, le rôle A de l'association devient actif et le scriptd'implémentation peut récupérer les attributs correspondant au rôle A.

Roles d'association

Page 321: advanfr.pdf

Documentation utilisateur avancée 311

C H A P T E R 4

Guide de référence du langage deprocessus

Ce document décrit la structure et le contenu des langages de processus dansun MPM. Il sert de référence pour les langages de processus pris en chargepar PowerAMC. Vous y trouverez une présentation générale de l'utilisationd'un langage de processus et ce, quelles que soient ses caractéristiques.

Section Page

Présentation du langage de processus 312

Notions de base relatives à l'éditeur de langage de processus 314

Ne modifiez pas un langage de processus fourni avec PowerAMC. Créeztoujours vos nouveaux langages de processus à partir des fichiers d'origine.Un langage de processus est enregistré dans un fichier dont le nom est dotédu suffixe XPL.

Les modifications que vous apportez dans un langage de processus peuventchanger la façon dont PowerAMC fonctionne, tout particulièrement en ce quiconcerne la génération d'objets. Vous devez tester en profondeur les objetsgénérés.

Pour plus d'informations sur la création d'un langage de processus parcopie d'un langage de processus existant, reportez-vous à la section Créationd'un fichier de ressources, dans le chapitre L'éditeur de ressources du manuelGuide des fonctionnalités générales.

A propos de cedocument

Sommaire

Avant decommencer

Page 322: advanfr.pdf

Présentation du langage de processus

312 PowerAMC

Présentation du langage de processusVous pouvez utiliser de nombreux langages de processus différents dans unMPM. Pour chaque langage de processus, un fichier de définition standardest inclus et fournit une interface entre PowerAMC et le langage de processusafin d'établir les meilleures relations possibles entre eux.

AttentionNe modifiez pas les langages de processus fournis avec PowerAMC. Pourchaque langage de processus que vous souhaitez modifier, vous devezcréer un nouveau langage de processus. Pour ce faire, vous devez créer unnouveau langage de processus à partir de la boîte de dialogue Liste deslangages de processus (Outils→Ressources→Langages objet), définir unnom et sélectionner le fichier d'origine dans la liste déroulante Copierdepuis. Vous pouvez ainsi créer un nouveau langage de processusidentique au fichier d'origine (sauf en ce qui concerne le nom).

Le langage de processus est un composant requis lorsque vous travaillez avecdes Modèles de Processus Métiers (MPM). Chaque langage de processus a sapropre définition de langage de processus au format XML qui contient lesspécifications pour un langage de processus particulier dans un format lisiblepar un MPM. Il fournit la syntaxe et les règles de génération des objets et lamise en oeuvre des stéréotypes, des scripts et des constantes pour un langagede processus.

Chaque MPM est par défaut attaché à un langage de processus. Lorsque vouscréez un nouveau MPM, vous devez choisir un langage de processus : vouspouvez créer un nouveau langage de processus, ou bien utiliser l'un deslangages de processus fournis avec le MPM.

La définition d'un langage de processus est disponible dans sa feuille depropriétés (Outils→Ressources→Langages de processus. Vous pouvezsélectionner et configurer des paramètres utilisés lors de la définition desobjets ou de la génération à partir d'un MPM.

Tous les langages de processus ont la même structure constituée d'un certainnombre de catégories. Une catégorie peut contenir d'autres catégories, desentrées et des valeurs. Ces entrées sont des paramètres reconnaissables par unMPM.

Les valeurs pour les entrées de langage de processus varient selon le langageconsidéré. Certaines entrées peuvent ne pas être disponibles si lafonctionnalité ne s'applique pas au langage de processus.

Qu'est-ce qu'unlangage deprocessus ?

Que contient unlangage deprocessus ?

Page 323: advanfr.pdf

Chapter 4 Guide de référence du langage de processus

Documentation utilisateur avancée 313

Même si un langage de processus particulier est utilisé pour illustrer unexemple, le mécanisme expliqué dans ce chapitre s'applique à tous leslangages de processus pris en charge dans un MPM.

Exemples delangage deprocessus

Page 324: advanfr.pdf

Notions de base relatives à l'éditeur de langage de processus

314 PowerAMC

Notions de base relatives à l'éditeur de langagede processus

Vous utilisez l'éditeur de langage pour consulter ou modifier un langage deprocessus (fichier .XPL).

Pour afficher l'éditeur de langage :

♦ Sélectionnez Langage→Editer le langage de processus courant.ouSélectionnez Outils→Ressources→Langages de processus puis double-cliquez sur un langage de processus existant.

La feuille de propriétés du langage de processus s'affiche.

L'éditeur de langage de processus permet de naviguer entre les différentescatégories et entrées du langage de processus. Selon l'élément sélectionné, lecontenu de la partie droite de la fenêtre change. Le terme Métaclasse estutilisé dans la documentation PowerAMC pour identifier un objet en tant quemétaclasse. Les métaclasses contenues dans l'arborescence de l'éditeur deressources sont des catégories.

Pour plus d'informations sur la manipulation des catégories et entréesdans l'éditeur de langages de processus, reportez-vous au chapitre L'éditeurde ressources dans le manuel Guide des fonctionnalités générales.

Page 325: advanfr.pdf

Chapter 4 Guide de référence du langage de processus

Documentation utilisateur avancée 315

Propriétés d'un langage de processus

L'éditeur de langage de processus contient les catégories suivantes, quiincluent des propriétés spécifiques à chaque langage pris en charge :

Catégorie Description

Settings Contient des types de données, des constantes, des conventionsde dénomination et des catégories d'événements utilisés dans leMPM

Generation Contient des objets de génération avec des options et des scriptsde commandes définis dans le fichier .XPL

Profile Contient des templates, des stéréotypes, des attributs étenduspour la génération

Transformationprofile

Contient un groupe de transformations utilisées lors de lagénération de modèle

Un langage de processus a une feuille de propriétés disponible lorsque vouscliquez sur le noeud racine dans l'arborescence de l'éditeur de langage deprocessus. Cette dernière inclut les propriétés suivantes :

Propriété Description

Nom Nom du langage de processus

Code Code du langage de processus

Nom de fichier Chemin d'accès et nom du fichier du langage de processus.Cette zone est remplie lorsque le langage de processus estpartagé. Si le langage de processus est une copie, la zoneest vide. Vous ne pouvez pas modifier le contenu de cettezone

Famille Classification utilisée pour impliquer un certaincomportement dans le modèle objet. Dans PowerAMC, lafamille est utilisée pour activer certaines fonctionnalitésdans le modèle. De telles fonctionnalités n'existent pas pardéfaut dans le MPM standard. Voir l'exemple ci-après

Sous-famille Sous-classification qui peut être combinée avec laclassification en familles pour impliquer un certaincomportement dans le langage de processus

Activer le suivi Affiche les templates de génération utilisés pour le textegénéré dans la page Aperçu des feuilles de propriétésd'objets

Commentaire Informations supplémentaires relatives au langage deprocessus

Page 326: advanfr.pdf

Notions de base relatives à l'éditeur de langage de processus

316 PowerAMC

Les propriétés Famille et Sous-famille impliquent certains comportementsdans le langage de processus. Par exemple, les langages de processus de lafamille Service Orchestration sont SOA, BPEL4WS et Sybase IntegrationOrchestrator.

La sous-famille est utilisée pour affiner les fonctionnalités définies pour unefamille particulière.

La case Activer le suivi permet de prévisualiser les templates utilisés lors dela génération. Avant même de lancer la génération, vous pouvez afficher lapage Aperçu de l'objet impliqué dans la génération pour voir ses templates etutiliser l'outil Réactualiser pour les afficher.

Lorsque vous double-cliquez sur une ligne de suivi dans la page Aperçu, ladéfinition de template correspondante s'affiche dans l'éditeur de ressources,dans la catégorie Profile\Objet\Templates. Le code du template peut êtreaffiché dans des couleurs distinctes.

Catégorie Generation

La catégorie Generation contient des catégories et des entrées permettant dedéfinir et d'activer un processus de génération. Vous pouvez utiliser lescatégories suivantes :

♦ Commands

♦ Tasks

♦ Options

Guide de référence de générationLe processus de génération PowerAMC est défini dans le chapitre Guidede référence de génération de ce manuel. Nous vous recommandons decommencer par lire ce chapitre afin de vous familiariser avec les conceptset fonctionnalités du processus de génération.

Famille et sous-famille

Activer le suivi

Page 327: advanfr.pdf

Chapter 4 Guide de référence du langage de processus

Documentation utilisateur avancée 317

Catégorie Commands

La catégorie Commands permet d'écrire des commandes de génération. Lescommande de génération peuvent être exécutées à la fin du processus degénération, une fois tous les fichiers générés.

Toutes les commandes écrites dans la catégorie Commands sont disponiblesaprès la création dans la page Tâches de la boîte de dialogue de génération,elles peuvent alors être exécutées à la fin de la génération. Vous pouveztrouver des commandes par défaut dans le langage de processus courant.Toutes les commandes par défaut ne sont pas répertoriées ici car ellesdépendent entièrement du langage de processus utilisé.

Les commandes doivent être incluses au sein de tâches pour être exécutées.

Pour plus d'informations sur le rôle des tâches, reportez-vous à lasection Catégorie Tasks.

Les commandes sont spécifiquement liées à un langage de processus. Le textequi définit le code de la commande est écrit à l'aide du langage de générationpar template (GTL, Generation Template Language).

Pour plus d'informations sur le GTL, reportez-vous au chapitre Guidede référence de la génération.

Les macros spécifiques sont disponibles dans le cadre de l'exécution descommandes.

Pour plus d'informations sur les macros, reportez-vous à la sectionUtilisation de macros dans le chapitre Guide de référence de génération.

Pour définir une commande pour la génération :

1 Pointez sur la catégorie Generation\Commands dans le langage deprocessus et cliquez le bouton droit de la souris.

2 Sélectionnez Nouvel élément.

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Saisissez un commentaire dans la zone Commentaire.

Page 328: advanfr.pdf

Notions de base relatives à l'éditeur de langage de processus

318 PowerAMC

5 Saisissez le code de la commande dans la zone de texte vide en utilisantles outils à votre disposition.

6 Cliquez sur Appliquer.

Suppression d'une commande de générationVous pouvez retirer une commande de génération dans le langage deprocessus en pointant sur l'objet et en cliquant le bouton droit de la souris,puis en sélectionnant Supprimer. Une boîte de confirmation vous invite àconfirmer la suppression de la commande. Elle peut indiquer que la valeurpar défaut définie pour cette entrée sera utilisée, cette valeur par défaut eststockée dans le template caché du langage de processus.

Pour plus d'informations sur ces entrées, reportez-vous à la sectionAjout d'une catégorie ou d'une entrée dans un fichier de ressources, dans lechapitre L'éditeur de ressources du manuel Guide des fonctionnalitésgénérales.

Catégorie Tasks

Une tâche est une liste de commandes à exécuter à l'issue de la génération.Ces commandes doivent être référencées au sein des différentes tâchesdéfinies pour la génération, une commande non référencée dans une tâche nepeut pas être exécutée. Vous trouverez à la fin de cette section un exemplecomportant une commande et une tâche contenant cette commande.

Page 329: advanfr.pdf

Chapter 4 Guide de référence du langage de processus

Documentation utilisateur avancée 319

Le mécanisme d'exécution de la commande fonctionne comme suit :lorsqu'une tâche est sélectionnée dans la page Tâches de la boîte de dialoguede génération, les commandes incluses dans la tâches sont extraites et letemplate associé à la commande est évalué et exécuté.

Les tâches s'affichent dans la page Tâches de la boîte de dialogue degénération et sont exécutées dans un ordre défini. Cet ordre peut êtrefacilement modifié en utilisant les flèches de déplacement dans la pageTâches.

Vous devez créer la commande avant de créer la tâche qui contient cettecommande.

Pour définir une tâche pour la génération :

1 Pointez sur la catégorie Generation\Tasks et cliquez le bouton droit de lasouris.

2 Sélectionnez Nouvel élément.

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Saisissez un commentaire dans la zone Commentaire.

5 Dans la zone de groupe Commandes, cliquez sur l'outil Ajouter descommandes, puis sélectionnez la ou les commandes que vous souhaitezinclure dans la tâche courante.

Le nom de la ou des commandes s'affiche dans la colonne Nom.

6 <facultatif>> Double-cliquez sur la flèche au début de la ligne pourafficher le code de la commande.

7 Cliquez sur Appliquer.

Page 330: advanfr.pdf

Notions de base relatives à l'éditeur de langage de processus

320 PowerAMC

Ouvrez le langage de processus Sybase Integration Orchestrator(Langage→Editer le langage de processus courant), créez et définissez uneentrée de commande nommée CreateDefaultFolders dans la catégorieGeneration\Commands :

Exemple

Page 331: advanfr.pdf

Chapter 4 Guide de référence du langage de processus

Documentation utilisateur avancée 321

Créez une entrée de tâches nommée CreateXSDFiles dans la catégorieGeneration\Tasks, vous pouvez vous assurer qu'elle contient la commandeCreateXSDFiles :

La nouvelle tâche est disponible dans la page Commands de la boîte dedialogue de génération. Le commentaire de la tâche est affiché par défaut. Siaucun commentaire n'a été fourni, le nom de la tâche est affiché.

Page 332: advanfr.pdf

Notions de base relatives à l'éditeur de langage de processus

322 PowerAMC

Catégorie Options

La catégorie Options permet de personnaliser le processus de génération. Ellecontient des entrées par défaut qui représentent des options de génération.

Vous pouvez définir des options de génération à partir de la catégorieGeneration\Options dans le langage de processus. Ces options définies parl'utilisateur sont disponibles après la création dans la page Options de la boîtede dialogue de génération.

Les options de génération peuvent être utilisées dans tous les templates.

Vous pouvez créer les différents types d'options suivants :

Type Description

Booléenne Lorsque ce type est sélectionné, une zone Valeur permet de choisirentre Oui et Non

Chaîne Lorsque ce type est sélectionné, une zone Valeur permet de saisir lachaîne

Liste Lorsque ce type est sélectionné, une zone Valeur s'affiche. Vouspouvez ajouter une valeur à l'aide de l'outil Ajouter une valeur, puiscocher la case correspondante

Le format des valeurs peut être affiché comme suit dans la page Options de laboîte de dialogue de génération : lorsqu'un commentaire de valeur estspécifié, il est affiché dans la liste à la place du nom de la valeur.

Vous pouvez trouver des options par défaut définies dans le langage deprocessus. Ces options ne sont pas répertoriées ici car elles dépendent dulangage de processus que vous utilisez.

Pour plus d'informations sur la liste des options de votre langage deprocessus, reportez-vous au chapitre Génération pour un langage dans lemanuel Guide de l'utilisateur du Modèle Orienté Objet.

1 Pointez sur la catégorie Generation\Options et cliquez le bouton droit dela souris.

2 Sélectionnez Nouveau.

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Sélectionnez un type.

5 Saisissez un commentaire dans la zone Commentaire.

Page 333: advanfr.pdf

Chapter 4 Guide de référence du langage de processus

Documentation utilisateur avancée 323

6 Selon le type de l'option, sélectionnez ou saisissez la valeur dans la zoneValeur.

7 Cliquez sur Appliquer.

Ouvrez le langage de processus (Langage→Editer le langage de processuscourant), puis créez une entrée booléenne nommée Options_Utilisateur dansla catégorie Generation\Options :

Exemple

Page 334: advanfr.pdf

Notions de base relatives à l'éditeur de langage de processus

324 PowerAMC

La nouvelle option est disponible dans la page Options de la boîte dedialogue de génération. Le commentaire de l'option est affiché par défaut. Siaucun commentaire n'a été fourni, le nom de l'option est affiché.

La valeur d'une option peut être obtenue dans un template à l'aide de lasyntaxe suivante :

'%' 'GenOptions.'<option-name> '%'

Par exemple, si vous définissez une option booléenne nomméeGenerateComment, %GenOptions.GenerateComment% sera évaluée à trueou false dans un template, selon la valeur spécifiée dans la page Options de laboîte de dialogue de génération.

Suppression d'une option de générationVous pouvez supprimer une option de génération dans le langage deprocessus en pointant sur l'entrée, en cliquant le bouton droit de la souris,puis en sélectionnant Supprimer. Une boîte de confirmation vous invite àconfirmer la suppression. Elle peut indiquer que la valeur par défautdéfinie pour cette entrée sera utilisée, cette valeur par défaut est stockéedans le template caché du langage de processus.

Pour plus d'informations sur ces entrées, reportez-vous à la sectionAjout d'une catégorie ou d'une entrée dans un fichier de ressources, dans lechapitre L'éditeur de ressources du manuel Guide des fonctionnalitésgénérales.

Exemple

Page 335: advanfr.pdf

Chapter 4 Guide de référence du langage de processus

Documentation utilisateur avancée 325

Catégorie Settings

La catégorie Settings contient des éléments permettant de personnaliser et degérer les fonctionnalités de génération de MPM. Les éléments spécifiques àun langage de processus ne sont pas détaillés dans cette section.

Catégorie Description

Implementation Disponible uniquement pour un MPM exécutable. Rassembleles options qui influencent les possibilités de mise en oeuvredu processus

DataHandling Disponible uniquement pour un MPM exécutable. Rassembleles options qui permettent de générer les données dans lelangage

Choreography Rassemble des objets qui permettent de modéliser le graphedes activités (début, fin, décision, synchronisation,transition...)

Catégorie Implementation

La catégorie Implementation (uniquement disponible pour le MPMexécutable) contient les valeurs constantes suivantes définies par défaut :

Constante Valeur par défaut

LoopTypeList Cette liste définit le type de boucle pris en chargepar le langage. La valeur doit être un entier

OperationTypeList Cette liste définit le type d'opération pris en chargepar le langage. Une opération d'un type non pris encharge ne peut pas être associée à un processus. Lavaleur doit être un entier

EnableEmissionCorrelation Ce paramètre permet la définition d'une corrélationpour un message émis

EnableProcessReuse Ce paramètre permet à un processus d'être mis enoeuvre par un autre processus

Page 336: advanfr.pdf

Notions de base relatives à l'éditeur de langage de processus

326 PowerAMC

Constante Valeur par défaut

AutomaticInvokeMode Ce paramètre indique si le type d'action d'unprocessus mis en oeuvre par une opération peut êtreautomatiquement déduit du type d'opération.Les valeurs possibles sont les suivantes :

♦ La valeur 0 (valeur par défaut) indiqueque le type d'action ne peut pas être déduitet doit être spécifié

♦ La valeur 1 est réservée pour les langagesdans lesquels le processus doit recevoirune opération Demande-réponse et uneopération One-way et doit appeler uneopération Request-response et uneopération Notification

♦ La valeur 2 est l'inverse pour les langagesdans lesquels le processus reçoitsystématiquement une opérationSollicitation-Réponse et une opérationNotification tandis que les opérationsRequest-response et One-way sonttoujours appelées

Dans le langage de processus BPEL4WS, la catégorie Settings estdéveloppée pour montrer la liste des valeurs pour la liste Type d'opération.

Exemple

Page 337: advanfr.pdf

Chapter 4 Guide de référence du langage de processus

Documentation utilisateur avancée 327

Catégorie DataHandling

La catégorie DataHandling (uniquement disponible pour le MPM exécutable)contient les valeurs constantes suivantes définies par défaut :

Constante Description

EnableMessageOnFlow Ce paramètre indique si un format de messagepeut ou non être associé à un flux. La valeur pardéfaut est Oui

EnableMessageVariable Ce paramètre permet à une variable de stocker latotalité d'un format de message. Dans ce cas, leformat de message apparaîtra dans la listedéroulante Type de données de la variable

Catégorie Choreography

La catégorie Choreography contient les valeurs constantes suivantes définiespar défaut :

Constante Description

EnableMultipleStarts Lorsque défini à Non, ce paramètre vérifiequ'un processus composite ne comporte pasplusieurs débuts

EnableTopLevelChoreography Lorsque défini à Non, ce paramètre vérifiequ'aucun flux ou objet de chorégraphie (début,fin, décision...) n'est défini directement sous lemodèle ou sous un package. Ces objets peuventêtre définis uniquement sous un processuscomposite

Page 338: advanfr.pdf

Notions de base relatives à l'éditeur de langage de processus

328 PowerAMC

Catégorie Profile

Chaque métaclasse dans le profil a une catégorie identifiée par son nom quicontient plusieurs catégories telles que Stereotypes, Extended attributes,Methods, etc.

Le profil est un mécanisme d'extension utilisé pour personnaliser unmétamodèle en lui ajoutant des sémantiques supplémentaires. Les profils sontutilisés pour créer des catégories d'objets (stéréotypes et critères),personnaliser les graphiques d'objets, ajouter des métadonnéessupplémentaires aux objets (attributs étendus), définir des possibilités degénération nouvelles ou modifiées (templates), ajouter des méthodes, destransformations, et des collections étendues sur les métaclasses et menus.

Pour plus d'informations sur la catégorie Profile, reportez-vous auchapitre Gestion des profils.

Catégorie Transformation profile

Un profil de transformation est un groupe de transformations utilisé au coursd'une génération de modèle ou lorsque vous souhaitez appliquer desmodifications à certains objets dans les modèles source ou cible.

Vous définissez un profil de transformation dans la catégorie TransformationProfiles d'une définition étendue de modèle, d'un langage objet, d'un SGBD,ou d'un langage de processus. Chaque profil est identifié par le modèle danslequel le fichier de ressource est défini, par un type de modèle, une famille etune sous famille.

Pour plus d'informations sur les transformations, reportez-vous auchapitre Gestion des transformations, dans le Guide des FonctionnalitésGénérales.

Page 339: advanfr.pdf

Documentation utilisateur avancée 329

C H A P I T R E 5

Guide de référence du langage XML

Ce document décrit la structure et le contenu des langages XML dans unmodèle XML. Il sert de référence pour les langages XML pris en charge parPowerAMC. Vous y trouverez une présentation générale de l'utilisation d'unlangage XML et ce, quelles que soient ses caractéristiques.

Section Page

Présentation du langage XML 330

Notions de base relatives à l'éditeur de langage XML 331

Ne modifiez pas un langage XML fourni avec PowerAMC. Créez toujoursvos nouveaux langages XML à partir des fichiers d'origine. Un langage XMLest enregistré dans un fichier dont le nom est doté du suffixe XPL.

Les modifications que vous apportez dans un langage XML peuvent changerla façon dont PowerAMC fonctionne, tout particulièrement en ce quiconcerne la génération d'objets. Vous devez tester en profondeur les objetsgénérés.

Pour plus d'informations sur la création d'un langage XML par copied'un langage XML existant, reportez-vous à la section Création d'un fichierde ressources, dans le chapitre L'éditeur de ressources du manuel Guide desfonctionnalités générales.

A propos de cedocument

Sommaire

Avant decommencer

Page 340: advanfr.pdf

Présentation du langage XML

330 PowerAMC

Présentation du langage XMLVous pouvez utiliser de nombreux langages XML différents dans un modèleXML. Pour chaque langage XML, un fichier de définition standard est inclusqui fournit une interface entre PowerAMC et le langage XML afin d'établirles meilleures relations entre eux.

AttentionNe modifiez pas les langages XML fournis avec PowerAMC. Pour chaquelangage XML que vous souhaitez modifier, vous devez créer un nouveaulangage XML. Pour ce faire, vous devez créer un nouveau langage XML àpartir de la boîte de dialogue Liste des langages XML(Outils→Ressources→Langages XML), définir un nom et sélectionner lefichier d'origine dans la liste déroulante Copier depuis. Vous pouvez ainsicréer un nouveau langage XML identique au fichier d'origine (sauf en cequi concerne le nom).

Le langage XML est un composant requis lorsque vous travaillez avec desmodèles XML. Chaque langage XML a sa propre définition de langage XMLau format XML qui contient les spécifications pour un langage XMLparticulier dans un format lisible par un modèle XML. Il fournit la syntaxe etles règles de création des objets et met en oeuvre les stéréotypes, types dedonnées, scripts et constantes pour un langage XML.

Chaque modèle XML est par défaut attaché à un langage XML. Lorsquevous créez un nouveau modèle XML, vous devez choisir un langage XML :vous pouvez créer un nouveau langage XML, ou bien utiliser l'un deslangages XML fournis avec le modèle XML.

La définition d'un langage XML est disponible dans sa feuille de propriétés(Outils→Ressources→Langages XML. Vous pouvez sélectionner etconfigurer des paramètres utilisés lors de la définition des objets ou de lagénération à partir d'un modèle XML.

Tous les langages XML ont la même structure constituée d'un certain nombrede catégories. Une catégorie peut contenir d'autres catégories, des entrées etdes valeurs. Ces entrées sont des paramètres reconnaissables par un modèleXML.

Les valeurs pour les entrées de langage XML varient selon le langageconsidéré. Certaines entrées peuvent ne pas être disponibles si lafonctionnalité ne s'applique pas au langage XML.

Même si un langage XML particulier est utilisé pour illustrer un exemple, lemécanisme expliqué dans ce chapitre s'applique à tous les langages XMLpris en charge dans un modèle XML.

Qu'est-ce qu'unlangage XML ?

Que contient unlangage XML ?

Exemples delangage XML

Page 341: advanfr.pdf

Chapitre 5 Guide de référence du langage XML

Documentation utilisateur avancée 331

Notions de base relatives à l'éditeur de langageXML

Vous utilisez l'éditeur de langage XML pour consulter ou modifier unlangage XML (fichier .XPL).

Pour afficher l'éditeur de langage XML :

♦ Sélectionnez Langage→Editer le langage XML courant.ouSélectionnez Outils→Ressources→Langages XML puis double-cliquezsur un langage XML existant.

La feuille de propriétés du langage XML s'affiche.

L'éditeur de langage XML permet de naviguer entre les différentes catégorieset entrées du langage XML. Selon l'élément sélectionné, le contenu de lapartie droite de la fenêtre change. Le terme Métaclasse est utilisé dans ladocumentation PowerAMC pour identifier un objet en tant que métaclasse.Les métaclasses contenues dans l'arborescence de l'éditeur de ressources sontdes catégories.

Pour plus d'informations sur la manipulation des catégories et entréesdans l'éditeur de langages XML, reportez-vous au chapitre L'éditeur deressources dans le manuel Guide des fonctionnalités générales.

Page 342: advanfr.pdf

Notions de base relatives à l'éditeur de langage XML

332 PowerAMC

Propriétés d'un langage XML

L'éditeur de langage XML contient les catégories suivantes, qui incluent despropriétés spécifiques à chaque langage pris en charge :

Catégorie Description

Settings Contient des tables de conversion de types de données

Generation Contient des options de génération, des tâches et des scripts decommande définis dans le fichier .XPL

Profile Contient des templates, des stéréotypes, des attributs étenduspour la génération

Transformationprofile

Contient un groupe de transformations utilisé lors de lagénération de modèle

Un langage XML a une feuille de propriétés disponible lorsque vous cliquezsur le noeud racine dans l'arborescence de l'éditeur de langage XML. Cettedernière inclut les propriétés suivantes :

Propriété Description

Nom Nom du langage XML

Code Code du langage XML

Nom de fichier Chemin d'accès et nom du fichier du langage XML. Cettezone est remplie lorsque le langage XML est partagé. Si lelangage XML est une copie, la zone est vide. Vous nepouvez pas modifier le contenu de cette zone

Famille Classification utilisée pour impliquer un certaincomportement dans le modèle XML. Dans PowerAMC, lafamille est utilisée pour activer certaines fonctionnalitésdans le modèle. De telles fonctionnalités n'existent pas pardéfaut dans le modèle XML standard

Sous-famille Sous-classification qui peut être combinée avec laclassification en familles pour impliquer un certaincomportement dans le langage XML

Activer le suivi Affiche les templates de génération utilisés pour le textegénéré dans la page Aperçu des feuilles de propriétésd'objets

Commentaire Informations supplémentaires relatives au langage XML

Page 343: advanfr.pdf

Chapitre 5 Guide de référence du langage XML

Documentation utilisateur avancée 333

La case Activer le suivi permet de prévisualiser les templates utilisés lors dela génération. Avant même de lancer la génération, vous pouvez afficher lapage Aperçu de l'objet impliqué dans la génération pour voir ses templates etutiliser l'outil Réactualiser pour les afficher.

Lorsque vous double-cliquez sur une ligne de suivi dans la page Aperçu, ladéfinition de template correspondante s'affiche dans l'éditeur de ressources,dans la catégorie Profile\Objet\Templates. Le code du template peut êtreaffiché dans des couleurs distinctes.

Catégorie Generation

La catégorie Generation contient des catégories et des entrées permettant dedéfinir et d'activer un processus de génération. Vous pouvez utiliser lescatégories suivantes :

♦ Commandes de génération

♦ Tâches de génération

♦ Options de génération

Guide de référence de générationLe processus de génération PowerAMC est défini dans le chapitre Guidede référence de génération de ce manuel. Nous vous recommandons decommencer par lire ce chapitre afin de vous familiariser avec les conceptset fonctionnalités du processus de génération.

Catégorie Commands

La catégorie Commands permet d'écrire des commandes de génération. Lescommande de génération peuvent être exécutées à la fin du processus degénération, une fois tous les fichiers générés.

Toutes les commandes écrites dans la catégorie Commands sont disponiblesaprès la création dans la page Tâches de la boîte de dialogue de génération,elles peuvent alors être exécutées à la fin de la génération. Vous pouveztrouver des commandes par défaut dans le langage XML courant. Toutes lescommandes par défaut ne sont pas répertoriées ici car elles dépendententièrement du langage XML utilisé.

Les commandes doivent être incluses au sein de tâches pour être exécutées.

Pour plus d'informations sur le rôle des tâches, reportez-vous à lasection Catégorie Tasks.

Activer le suivi

Page 344: advanfr.pdf

Notions de base relatives à l'éditeur de langage XML

334 PowerAMC

Les commandes sont liées à un langage XML. Le texte qui définit le code dela commande est écrit à l'aide du langage de génération par templates (GTL).

Pour plus d'informations sur le GTL, reportez-vous au chapitre Guidede référence de génération.

Les macros spécifiques sont disponibles dans le cadre de l'exécution descommandes.

Pour plus d'informations sur les macros, reportez-vous à la sectionUtilisation de macros dans le chapitre Guide de référence de génération.

Pour définir une commande pour la génération :

1 Pointez sur la catégorie Generation\Commands dans le langage XML etcliquez le bouton droit de la souris.

2 Sélectionnez Nouvel élément.

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Saisissez un commentaire dans la zone Commentaire.

5 Saisissez le code de la commande dans la zone de texte vide en utilisantles outils à votre disposition.

6 Cliquez sur Appliquer.

Suppression d'une commande de générationVous pouvez retirer une commande de génération dans le langage XMLen pointant sur l'objet et en cliquant le bouton droit de la souris, puis ensélectionnant Supprimer. Une boîte de confirmation vous invite àconfirmer la suppression de la commande. Elle peut indiquer que la valeurpar défaut définie pour cette entrée sera utilisée, cette valeur par défaut eststockée dans le template caché du langage XML.

Pour plus d'informations sur ces entrées, reportez-vous à la sectionAjout d'une catégorie ou d'une entrée dans un fichier de ressources, dansle chapitre L'éditeur de ressources du manuel Guide des fonctionnalitésgénérales.

Page 345: advanfr.pdf

Chapitre 5 Guide de référence du langage XML

Documentation utilisateur avancée 335

Catégorie Tasks

Une tâche est une liste de commandes à exécuter à l'issue de la génération.Ces commandes doivent être référencées au sein des différentes tâchesdéfinies pour la génération, une commande non référencée dans une tâche nepeut pas être exécutée. Vous trouverez à la fin de cette section un exemplecomportant une commande et une tâche contenant cette commande.

Le mécanisme d'exécution de la commande fonctionne comme suit :lorsqu'une tâche est sélectionnée dans la page Tâches de la boîte de dialoguede génération, les commandes incluses dans la tâches sont extraites et letemplate associé à la commande est évalué et exécuté.

Les tâches s'affichent dans la page Tâches de la boîte de dialogue degénération et sont exécutées dans un ordre défini. Cet ordre peut êtrefacilement modifié en utilisant les flèches de déplacement dans la pageTâches.

Vous devez créer la commande avant de créer la tâche qui contient cettecommande.

Pour définir une tâche pour la génération :

1 Pointez sur la catégorie Generation\Tasks et cliquez le bouton droit de lasouris.

2 Sélectionnez Nouvel élément.

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Saisissez un commentaire dans la zone Commentaire.

5 Dans la zone de groupe Commandes, cliquez sur l'outil Ajouter descommandes, puis sélectionnez la ou les commandes que vous souhaitezinclure dans la tâche courante.

Le nom de la ou des commandes s'affiche dans la colonne Nom.

6 <facultatif>> Double-cliquez sur la flèche au début de la ligne pourafficher le code de la commande.

7 Cliquez sur Appliquer.

Page 346: advanfr.pdf

Notions de base relatives à l'éditeur de langage XML

336 PowerAMC

Catégorie Options

La catégorie Options permet de personnaliser le processus de génération.Elle contient des entrées par défaut qui représentent des options degénération.

Vous pouvez définir des options de génération à partir de la catégorieGeneration\Options dans le langage XML. Ces options définies parl'utilisateur sont disponibles après la création dans la page Options de la boîtede dialogue de génération.

Les options de génération peuvent être utilisées dans tous les templates.

Vous pouvez créer les différents types d'options suivants :

Type Description

Booléenne Lorsque ce type est sélectionné, une zone Valeur permet de choisirentre Oui et Non

Chaîne Lorsque ce type est sélectionné, une zone Valeur permet de saisir lachaîne

Liste Lorsque ce type est sélectionné, une zone Valeur s'affiche. Vouspouvez ajouter une valeur à l'aide de l'outil Ajouter une valeur, puiscocher la case correspondante

Le format des valeurs peut être affiché comme suit dans la page Options dela boîte de dialogue de génération : lorsqu'un commentaire de valeur estspécifié, il est affiché dans la liste à la place du nom de la valeur.

Vous pouvez trouver des options par défaut définies dans le langage XML.Ces options ne sont pas répertoriées ici car elles dépendent du langage XMLque vous utilisez.

Pour plus d'informations sur la liste des options de votre langage XML,reportez-vous au chapitre Génération pour un langage dans le manuel Guidede l'utilisateur du Modèle Orienté Objet.

1 Pointez sur la catégorie Generation\Options et cliquez le bouton droit dela souris.

2 Sélectionnez Nouveau.

La nouvelle entrée s'affiche avec un nom par défaut.

3 Saisissez un nom dans la zone Nom.

4 Sélectionnez un type.

5 Saisissez un commentaire dans la zone Commentaire.

Page 347: advanfr.pdf

Chapitre 5 Guide de référence du langage XML

Documentation utilisateur avancée 337

6 Selon le type de l'option, sélectionnez ou saisissez la valeur dans la zoneValeur.

7 Cliquez sur Appliquer.

Ouvrez le langage XML (Langage→Editer le langage XML courant), puiscréez une entrée booléenne nommée UserDefined_Option dans la catégorieGeneration\Options :

Exemple

Page 348: advanfr.pdf

Notions de base relatives à l'éditeur de langage XML

338 PowerAMC

La nouvelle option est disponible dans la page Options de la boîte dedialogue de génération. Le commentaire de l'option est affiché par défaut. Siaucun commentaire n'a été fourni, le nom de l'option est affiché.

Suppression d'une option de générationVous pouvez supprimer une option de génération dans le langage XML enpointant sur l'entrée, en cliquant le bouton droit de la souris, puis ensélectionnant Supprimer. Une boîte de confirmation vous invite àconfirmer la suppression. Elle peut indiquer que la valeur par défautdéfinie pour cette entrée sera utilisée, cette valeur par défaut est stockéedans le template caché du langage XML.

Pour plus d'informations sur ces entrées, reportez-vous à la sectionAjout d'une catégorie ou d'une entrée dans un fichier de ressources, dansle chapitre L'éditeur de ressources du manuel Guide des fonctionnalitésgénérales.

Page 349: advanfr.pdf

Chapitre 5 Guide de référence du langage XML

Documentation utilisateur avancée 339

Catégorie Settings

La catégorie Settings contient la sous-catégorie Data types qui montre lacorrespondance entre les types de données internes et ceux du langage XML.

Les types de données suivants sont définis par défaut :

Type de données Description

ConceptualDataTypes La colonne Valeur indique le type de données delangage XML utilisé pour la génération des modèlesMCD et MPD. Les types de données conceptuels sontles types de données internes de PowerAMC, et ils nepeuvent pas être modifiés

XsmDataTypes Types de données pour les générations depuis lemodèle XML

Catégorie Profile

Chaque métaclasse dans le profil a une catégorie identifiée par son nom quicontient plusieurs catégories telles que Stereotypes, Extended attributes,Methods, etc.

Le profil est un mécanisme d'extension utilisé pour personnaliser unmétamodèle en lui ajoutant des sémantiques supplémentaires. Les profilssont utilisés pour créer des catégories d'objets (stéréotypes et critères),personnaliser les graphiques d'objets, ajouter des métadonnéessupplémentaires aux objets (attributs étendus), définir des possibilités degénération nouvelles ou modifiées (templates), ajouter des méthodes, destransformations, et des collections étendues sur les métaclasses et menus.

Pour plus d'informations sur la catégorie Profile, reportez-vous auchapitre Gestion des profils.

Catégorie Transformation profile

Un profil de transformation est un groupe de transformations utilisé au coursd'une génération de modèle, lorsque vous souhaitez appliquer desmodifications à certains objets dans les modèles source ou cible.

Pour plus d'informations sur les transformations, reportez-vous auchapitre Gestion des transformations, dans le Guide des FonctionnalitésGénérales.

Page 350: advanfr.pdf

Notions de base relatives à l'éditeur de langage XML

340 PowerAMC

Vous définissez un profil de transformation dans la catégorie TransformationProfiles d'un fichier de ressources. Chaque profil est identifié par le modèledans lequel le fichier de ressource est défini, par un type de modèle, unefamille et une sous famille.

Page 351: advanfr.pdf

Documentation utilisateur avancée 341

C H A P I T R E 6

Guide de référence des définitionsétendues de modèle

Ce document décrit la structure et le contenu d'une définition étendue demodèle PowerAMC. Ce guide sert de référence pour l'utilisation desdéfinitions étendues de modèle.

Section Page

Gestion des définitions étendues de modèle 342

Utilisation des définitions étendues de modèle 353

Génération pour une définition étendue de modèle 366

Sujet

Sommaire

Page 352: advanfr.pdf

Gestion des définitions étendues de modèle

342 PowerAMC

Gestion des définitions étendues de modèleLes définitions étendues de modèle permettent de personnaliser et d'étendreles métaclasses et les paramètres de génération PowerAMC.

AttentionIl est préférable de ne pas modifier les définitions étendues de modèlefournies avec PowerAMC. Pour chaque définition étendue de modèled'origine que vous souhaitez modifier, créez une nouvelle définitionétendue de modèle. Pour ce faire, vous devez créer la nouvelle définitionétendue de modèle à la partir de la boîte de dialogue Liste des définitionsétendues de modèle, définir un nom et sélectionner le fichier d'originedans la liste déroulante Copier depuis. Cette méthode permet de créer unenouvelle définition étendue de modèle identique au fichier d'origine,excepté son nom.

Pour plus d'informations sur la création d'une nouvelle définitionétendue de modèle à partir d'une définition étendue de modèle existante,reportez-vous à la section Création d'un fichier de ressources dans le chapitreL'éditeur de ressources du manuel Guide des fonctionnalités générales.

Un modèle étendu contient une définition de profil et des paramètres degénération. Le profil est un jeu d'extensions de métamodèle définies sur lesmétaclasses.

Pour plus d'informations sur les profils, reportez-vous au chapitreGestion des profils.

Les paramètres de génération sont utilisés pour développer ou compléter lagénération d'objets PowerAMC par défaut ou pour une génération distincte.

Les définitions étendues de modèle sont dotées d'un type, tout comme lesmodèles dans PowerAMC. Vous pouvez créer une définition étendue demodèle pour un type de modèle spécifique et vous ne pouvez pas partager cesfichiers entre modèles de type différent.

Vous pouvez définir une ou plusieurs définitions étendues de modèle pour unmodèle. Certaines définitions étendues de modèle sont fournies avecPowerAMC, et vous pouvez créer vos propres extensions. Les définitionsétendues de modèle sont globales pour un modèle, elles ne peuvent donc pasêtre attachées à un package particulier.

Pour plus d'informations sur la génération de définitions étendues demodèle, reportez-vous à la section Génération pour une définition étendue demodèle.

Qu'est-ce qu'unedéfinition étenduede modèle?

Page 353: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 343

Toutes les définitions étendues de modèle ont la même structure composée decatégories. Une catégorie peut contenir d'autres catégories, des entrées, etdes valeurs. Ces entrées sont des paramètres reconnaissables parPowerAMC.

Les valeurs pour les catégories de définition étendue de modèle varient d'unedéfinition étendue de modèle à l'autre. Certaines entrées peuvent ne pasexister dans un fichier de définition étendue de modèle si elles ne sont pasapplicables à cette définition étendue de modèle particulière.

Vous pouvez créer des définitions étendues de modèle génériques etspécifiques.

♦ Une définition étendue de modèle générique est une bibliothèqued'extensions de métamodèle, ainsi que des paramètres de génération. Cefichier est stocké dans une partie centrale et peut être référencé par desmodèles afin de garantir la cohérence des données et permettre àl'utilisateur de gagner du temps

♦ Une définition étendue de modèle spécifique est incorporée dans unmodèle et développe des définitions d'objet et des paramètres degénération dans ce modèle particulier

Création d'une définition étendue de modèle

Lorsque vous créez une nouvelle définition étendue de modèle, vous pouvezchoisir de :

♦ Créer un fichier de définition étendue de modèle générique à réutiliserentre les modèles

♦ Créer une définition étendue de modèle spécifique, adaptée aux besoinsd'un modèle particulier

La procédure de création diffère selon le type de définition étendue demodèle que vous souhaitez créer.

Que contient unedéfinition étenduede modèle ?

Comment utiliserles définitionsétendues demodèle ?

Page 354: advanfr.pdf

Gestion des définitions étendues de modèle

344 PowerAMC

Création d'une définition étendue de modèle générique

Vous pouvez créer des définitions étendues de modèle génériques pourpartager des informations entre différents modèles de même type.

Pour créer une définition étendue de modèle générique :

1 Ouvrez un modèle.

2 Sélectionnez Outils→Ressources→Définitions étendues demodèle→Type de modèle.

La boîte de dialogue Liste des définitions étendues de modèle s'affiche.

3 Cliquez sur l'outil Nouveau pour afficher la boîte de dialogue Nouvelledéfinition étendue de modèle.

4 Saisissez un nom pour la nouvelle définition étendue de modèle dans lazone Nom.

5 <facultatif> Sélectionnez un template dans la liste déroulante Copierdepuis. Cette liste déroulante affiche les définitions étendues de modèleexistantes.

6 Cliquez sur OK.

Une boîte de dialogue standard d'enregistrement s'affiche.

7 Saisissez un nom et sélectionnez un répertoire pour la nouvelle définitionétendue de modèle. Si vous n'enregistrez pas la définition étendue demodèle dans le répertoire par défaut de PowerAMC, elle ne s'affiche pasdans la boîte de dialogue Liste des définitions étendues de modèle. Vousdevez cliquer sur l'outil Chemin pour sélectionner le répertoire danslequel vous avez enregistré le fichier.

8 Cliquez sur Enregistrer.

Page 355: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 345

La boîte de dialogue Propriétés de la définition étendue de modèles'affiche. La page Général affiche les catégories sous formed'arborescence avec un éditeur dans la partie droite.

9 Définissez la définition étendue de modèle.

10 Cliquez sur OK.

La définition étendue de modèle est enregistrée dans un fichier ayantpour suffixe .XEM.

La boîte de dialogue Liste des définitions étendues de modèle affiche lanouvelle définition étendue de modèle si vous avez enregistré le fichierdans le répertoire par défaut de PowerAMC.

Page 356: advanfr.pdf

Gestion des définitions étendues de modèle

346 PowerAMC

11 Cliquez sur Fermer.

Importation d'un fichier de définition étendue de modèleSi vous voulez intégrer une définition étendue de modèle génériquedans un modèle, vous pouvez importer le fichier de définition étenduede modèle correspondant.

Pour plus d'informations sur l'importation de définitions étenduesde modèle, reportez-vous à la section Importation d'une définitionétendue de modèle dans un modèle.

Création d'une définition étendue de modèle spécifique pour un modèle

Vous pouvez créer une définition étendue de modèle adaptée à un modèleparticulier, dans ce cas, il a le même type que le modèle courant.

Pour créer une définition étendue de modèle spécifique pour unmodèle :

1 Ouvrez un modèle.

2 Sélectionnez Modèle→Définitions étendues de modèle.

La boîte de dialogue Liste des définitions étendues de modèle s'affiche.

3 Cliquez sur l'outil Ajouter une ligne pour créer une nouvelle définitionétendue de modèle.

4 Cliquez sur Appliquer.

5 Cliquez sur l'outil Propriétés pour afficher la feuille de propriétés de ladéfinition étendue de modèle.

Page 357: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 347

La boîte de dialogue Propriétés de la définition étendue de modèles'affiche.

6 Définissez la définition étendue de modèle.

7 Cliquez sur OK.

Vous revenez à la boîte de dialogue Liste des définitions étendues demodèle.

8 Cliquez sur OK.

Exportation d'une définition étendue de modèleSi vous souhaitez partager entre différents modèles une définitionétendue de modèle créée pour un modèle particulier, vous pouvezexporter cette définition étendue de modèle afin de la réutiliser avecd'autres modèles.

Pour plus d'informations sur l'exportation de définitions étenduesde modèle, reportez-vous à la section Exportation d'une définitionétendue de modèle.

Page 358: advanfr.pdf

Gestion des définitions étendues de modèle

348 PowerAMC

Importation d'attributs étendus depuis les versions antérieures

Vous pouvez importer dans la version courante de PowerAMC les attributsétendus définis dans une version antérieure. Le processus d'importationtransfère la plupart des attributs étendus contenus dans un modèle ou dans unfichier EXA vers une définition étendue de modèle.

Vous pouvez importer des attributs étendus de l'une des façons suivantes :

♦ En ouvrant un modèle comportant des attributs étendus et qui a étéenregistré avec une version antérieure de PowerAMC

♦ En ouvrant un fichier ayant pour suffixe .EXA

Importation d'attributs étendus de modèle depuis une version antérieure

Lorsque vous ouvrez un modèle enregistré avec PowerAMC version 5 ou 6,et que ce modèle contient des attributs étendus, ces derniers sontautomatiquement importés dans une définition étendue de modèle spécifiqueincorporée au modèle importé.

Si vous ouvrez un modèle comportant des attributs étendus PowerBuilder, ladéfinition étendue de modèle PowerBuilder est automatiquement attachée aumodèle importé.

Pour plus d'informations sur l'importation d'attributs étendusPowerBuilder, reportez-vous à la section Importation de modèles contenantdes attributs étendus PowerBuilder créés dans une version antérieure dans lechapitre Gestion des modèles physiques de données dans le manuel Guide del'utilisateur du MPD.

Pour importer des attributs étendus de modèle depuis une versionprécédente :

1 Ouvrez un modèle enregistré à l'aide d'une version antérieure dePowerAMC.

2 Sélectionnez Modèle→Définitions étendues de modèle.

Page 359: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 349

Une nouvelle définition étendue de modèle s'affiche dans la liste, elle acomme nom par défaut Attributs importés.

3 Double-cliquez sur la nouvelle définition étendue de modèle pourafficher sa feuille de propriétés.

Vous pouvez observer le contenu de la catégorie Extended Attributesdans la catégorie Profile\métaclasse et voir les attributs étendusimportés.

Importation d'attributs étendus à partir d'un fichier .EXA

Vous pouvez importer un fichier d'attribut étendu (suffixe .EXA) dans unedéfinition étendue de modèle générique, disponible pour tous les modèlesd'un même type. Vous pouvez ainsi récupérer les attributs étendus définisdans une version antérieure de PowerAMC.

Pour importer les attributs étendus à partir d'un fichier .EXA :

1 Sélectionnez Outils→Ressources→Définitions étendues demodèle→Modèle Physique de Données.

La boîte de dialogue Liste des définitions étendues de modèle s'affiche.

2 Cliquez sur l'outil Importer des attributs étendus.

Une boîte de dialogue standard d'ouverture de fichier s'affiche.

3 Sélectionnez un fichier d'attributs étendus doté du suffixe .EXA.

4 Cliquez sur OK.

Une boîte de dialogue standard d'enregistrement s'affiche.

Page 360: advanfr.pdf

Gestion des définitions étendues de modèle

350 PowerAMC

5 Sélectionnez le nom et le chemin de la nouvelle définition étendue demodèle (doté d'un suffixe .XEM) qui sera créée à partir du fichier .EXA.

6 Cliquez sur OK.

La nouvelle définition étendue de modèle s'affiche dans la boîte dedialogue Liste des définitions étendues de modèle.

7 <facultatif> Double-cliquez sur la nouvelle définition étendue de modèlepour afficher sa feuille de propriétés.

Importation d'une définition étendue de modèle dans un modèle

Vous pouvez importer un fichier de définition étendue de modèle génériquedans votre modèle courant. Lorsque vous importez une définition étendue demodèle existante, vous réutilisez le profil et les paramètres de générationdéfinis dans une bibliothèque disponible sur votre machine.

Lorsque vous importez une définition étendue de modèle, vous l'attachez aumodèle. Vous pouvez choisir l'une des options d'importation suivantes :

Optiond'importation Description

Partage : Utiliserdes définitionsétendues de modèlepartagées

Vous utilisez une version partagée de la définition étenduede modèle. Cette définition est partagée par tous lesmodèles, voire par tous les utilisateurs d'une équipe deconception. Toute modification dans les propriétés de ladéfinition étendue de modèle sont appliquées à tous lesmodèles qui partagent la définition étendue de modèle

Copie : Créer unecopie des définitionsétenduessélectionnées

Vous créez une copie de la définition étendue de modèledans le modèle. Vous pouvez modifier cette définitiondans votre modèle. Toute modification apportée auxpropriétés de la définition étendue de modèle n'estappliquée qu'au seul modèle courant

Conventions de dénominationLorsque vous importez une définition étendue de modèle et la copiez dansun modèle, le nom et le code de la définition étendue de modèle peut êtremodifié afin de respecter les conventions de dénomination définies dans laboîte de dialogue Options du modèle.

Page 361: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 351

Pour importer une définition étendue de modèle dans un modèle :

1 Sélectionnez Modèle→Définitions étendues de modèle.

La boîte de dialogue Liste des définitions étendues de modèle s'affiche.

2 Cliquez sur l'outil Importer une définition étendue de modèle.

La boîte de dialogue Sélection des définitions étendues de modèles'affiche.

3 Utilisez l'outil Chemin pour sélectionnez le répertoire dans lequel lesfichiers de définition étendue de modèle sont stockés.

4 Sélectionnez le bouton radio Partage ou Copie.

5 Cliquez sur OK.

La définition étendue de modèle importée depuis le fichier estrépertoriée dans la boîte de dialogue Liste des définitions étendues demodèle.

Exportation d'une définition étendue de modèle

Vous pouvez exporter une définition étendue de modèle créée dans unmodèle si vous souhaitez partager cette définition avec d'autres modèles.L'exportation permet de créer un fichier ayant le suffixe .XEM qui serastocké dans votre répertoire de bibliothèques de définitions étendues demodèle. Lorsque vous exportez une définition étendue de modèle, ladéfinition étendue de modèle spécifique reste incorporée dans le modèle.

Page 362: advanfr.pdf

Gestion des définitions étendues de modèle

352 PowerAMC

Une définition étendue de modèle créée dans un modèle ne s'affiche pas dansla boîte de dialogue Liste des définitions étendues de modèle. En revanche,une définition étendue de modèle exportée s'affiche dans la boîte de dialogueListe des définitions étendues de modèle.

Pour exporter une définition étendue de modèle dans un modèle :

1 Sélectionnez Modèle→Définitions étendues de modèle.

La boîte de dialogue Liste des définitions étendues de modèle s'affiche.

2 Sélectionnez une définition étendue de modèle dans la liste.

3 Cliquez sur l'outil Exporter une définition étendue de modèle.

Une boîte de dialogue standard d'enregistrement s'affiche.

4 Saisissez un nom et sélectionnez un répertoire pour la définition étenduede modèle.

5 Cliquez sur Enregistrer.

La définition étendue de modèle est enregistrée dans un répertoire debibliothèques dans lequel elle peut être partagée par différents modèles.

Page 363: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 353

Utilisation des définitions étendues de modèleVous utilisez les définitions étendues de modèle pour :

♦ Etendre le métamodèle PowerAMC et développer la définition desmétaclasses à l'aide des profils

♦ Compléter les cibles et commandes de génération d'un langage objet

♦ Générer pour une définition étendue de modèle

Vous pouvez consulter ou modifier une définition étendue de modèle à l'aidede l'éditeur de définition étendue de modèle.

L'éditeur de définition étendue de modèle permet de naviguer parmi lescatégories et entrées. Lorsque vous sélectionnez une catégorie dans l'éditeurde définition étendue de modèle, le nom, le code et le commentaire associés'affichent dans la partie droite de la fenêtre. Lorsque vous sélectionnez uneentrée dans l'éditeur, le nom, la valeur et le commentaire associé s'affichedans la partie droite de la fenêtre.

Pour plus d'informations sur l'utilisation de l'éditeur de définitionétendue de modèle, reportez-vous au chapitre L'éditeur de ressources dans lemanuel Guide des fonctionnalités générales.

Une définition étendue de modèle contient les principales catégoriessuivantes :

Catégorie Description

Generation Utilisé pour définir et/ou activer une génération

Profile Utilisé pour définir des extensions pour les métaclassesPowerAMC afin de définir des stéréotypes, des critères, desattributs étendus, des fichiers générés, des templates degénération, des symboles personnalisés et des vérificationspersonnalisées

Ces catégories sont analysées plus en détails dans les sections suivantes duprésent chapitre.

Editeur dedéfinitionsétendues demodèle

Page 364: advanfr.pdf

Utilisation des définitions étendues de modèle

354 PowerAMC

Propriétés d'une définition étendue de modèle

Une définition étendue de modèle a une feuille de propriétés qui s'affichelorsque vous cliquez sur le noeud racine dans l'arborescence. Les propriétéssuivantes sont définies :

Propriété Description

Nom Nom de la définition étendue de modèle. Ce nom doit êtreunique dans un modèle dans le cas des définitions étenduesde modèle génériques ou spécifiques

Code Code de la définition étendue de modèle. Ce code doit êtreunique dans un modèle pour les définitions étendues demodèle génériques ou spécifiques

Nom de fichier Chemin et nom du fichier de la définition étendue demodèle. Cette zone est renseignée lorsque la définitionétendue de modèle est partagée. Si la définition étendue demodèle est une copie, la zone est vide. Vous ne pouvez pasmodifier le contenu de cette zone

Famille Utilisé pour classifier une définition étendue de modèle. Lafamille est conçue pour aider à établir un lien entre lelangage objet d'un MOO et une définition étendue demodèle. Lorsque la famille de langage objet correspond à lafamille de la définition étendue de modèle, suggère que ladéfinition étendue de modèle peut être utilisée pourcompléter le langage objet. Par exemple, lorsqu'unedéfinition étendue de modèle a comme famille JAVA, elle aété conçue pour fonctionner avec le langage objet JAVA.Cette fonctionnalité n'est disponible que pour le MOO

Sous-famille Utiliser pour affiner la famille. Par exemple, EJB 2.0 estune sous-famille de Java

Rattachementautomatique

Utilisé pour lier la définition étendue de modèle au langageobjet courant. Si la case Rattachement automatique estcochée, la définition étendue de modèle correspondantesera sélectionnée dans la page Définitions étendues demodèle de la boîte de dialogue Nouveau modèle

Catégorie Utilisé pour regrouper des définitions étendues de modèleconcurrentes pour la génération. Par exemple, une catégorieappelée "Serveurs d'applications" peut être créée pourregrouper des définitions étendues de modèle dédiées auxdifférents serveurs. Les définitions étendues de modèle demême catégorie ne peuvent pas être générées simultanément

Activer le suivi Lorsque cette option est sélectionnée, affiche les templatesde génération utilisés pour le texte généré dans la pageAperçu d'une feuille de propriétés d'objet

Page 365: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 355

Propriété Description

Compléter lagénération delangage

Indique que la définition étendue de modèle est utiliséepour compléter la génération d'un langage objet. Voir lasection ci-après

Commentaire Commentaires relatifs à la définition étendue de modèle

La case Activer le suivi permet de prévisualiser les templates utilisés lors dela génération. Avant même de lancer la génération, vous pouvez afficher lapage Aperçu de l'objet impliqué dans la génération pour voir ses templates.Lorsque vous double-cliquez sur une ligne de suivi dans la page Aperçu, ladéfinition de template correspondante s'affiche dans l'éditeur de ressources,dans la catégorie appropriée. Le code du template peut être affiché dans descouleurs distinctes.

Pour plus d'informations sur la coloration syntaxique, reportez-vous à lasection Création d'un fichier généré dans le chapitre Gestion des profils.

Cibles de génération

L'entrée Category influence le format de la page Cibles de la boîte dedialogue de génération. Les définitions étendues de modèle sont regroupéespar catégorie sur cette page : chaque définition étendue de modèle s'afficheen regard d'un bouton radio et au sein de la catégorie à laquelle elleappartient. Si vous ne définissez aucune catégorie, la définition étendue demodèle est considérée comme cible de la génération.

Activer le suivi

Page 366: advanfr.pdf

Utilisation des définitions étendues de modèle

356 PowerAMC

Dans l'exemple suivant, la catégorie Serveur d'applications rassemble deuxdéfinitions étendues de modèle exclusives ; vous devez sélectionner l'uned'entre elles. "Autre génération" correspond à une définition étendue demodèle dans laquelle l'entrée Category n'est pas définie.

Complément de la génération de langage

Les définitions étendues de modèle peuvent être utilisées pour étendre lagénération ou pour compléter la génération d'un langage objet. Dans ledernier cas, la case Compléter la génération de langage doit être cochéepour autoriser la génération de la définition étendue de modèle avec lelangage objet.

Langage objet PowerBuilderPowerBuilder ne prend pas en charge les définitions étendues de modèlepour compléter la génération.

Les éléments de génération du langage objet sont fusionnés avec ceux de ladéfinition étendue de modèle avant la génération.

Tous les fichiers générés dans les définitions étendues de modèle et leslangages objets sont générés. Dans le cas de fichiers générés ayant des nomsidentiques, le fichier de la définition étendue de modèle remplace celui définidans le langage objet.

Fichiers générés

Page 367: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 357

Catégorie Transformation profile

Un profil de transformation est un groupe de transformations utilisé lors de lagénération de modèle lorsque vous souhaitez appliquer des changements àdes objets contenus dans le modèle source ou cible.

Pour plus d'informations sur les transformations, reportez-vous auchapitre Gestion des transformations, dans le manuel Guide desfonctionnalités générales.

Vous définissez un profil de transformation d'une définition étendue demodèle, d'un langage objet, d'un SGBD ou d'un langage de processus.Chaque processus est identifié par le modèle dans lequel le fichier deressources courant est défini, par un type de modèle, par une famille et unesous-famille.

Propriétés d'un profil de transformation

Les propriétés d'un profil de transformation sont les suivantes :

Propriétés Description

Nom Nom du profil de transformation

Commentaire Informations supplémentaires relatives au profil detransformation

Type de modèle Spécifie le type de modèle avec lequel le profil detransformation peut être utilisé. Permet de filtrer les profilslors de la génération. Par exemple, si vous sélectionnez MOOalors que la définition étendue de modèle courante est celled'un MPD, le profil de transformation peut être utilisé lors dela génération d'un MPD vers un MOO (ou depuis un MOOvers un MPD)

Famille et Sous-famille

Si le type de modèle prend en charge un fichier de ressourcecible, vous pouvez également définir une famille et une sous-famille pour filtrer l'affichage des profils dans la boîte dedialogue de génération.La famille est utilisée pour établir un lien entre le fichier deressources d'un modèle et une définition étendue de modèle.Lorsque la famille du fichier de ressources correspond à lafamille de la définition étendue de modèle, cela suggère quela définition étendue de modèle complète le fichier deressources

Les profils de transformation affichent deux listes de transformationsordonnées.

Page 368: advanfr.pdf

Utilisation des définitions étendues de modèle

358 PowerAMC

Pré-génération

La page Pré-génération du profil affiche une liste ordonnée detransformations qui sont exécutées avant la génération dans le modèle source.Ces transformations sont exécutées lorsque le modèle courant dans lequelvous avez créé la définition étendue de modèle est le modèle source et queles contraintes définies pour les type de modèle, famille et sous-famille sontrespectées.

Tout objet créé lors de la pré-génération est automatiquement ajouté à la listedes objets utilisés lors de la génération.

Par exemple, vous pouvez définir un profil de transformation à l'aide d'unetransformation qui annule la création des EJB à partir des classes avant degénérer un MOO dans un MPD, ce afin d'établir une meilleur correspondanceentre les classes et tables lors de la génération.

Post-génération

La page post-génération du profil affiche une liste ordonnée detransformations qui sont exécutées à l'issue de la génération. Cestransformations sont exécutées après la génération, si le modèle dans lequelvous avez créé la définition étendue de modèle est la cible de la génération.

Par exemple, vous définissez un profil de transformation avec destransformations qui appliquent automatiquement les conventions dedénomination appropriées aux objets générés.

Création d'un profil de transformation

Par défaut, la catégorie Transformation Profile ne s'affiche pas dansl'arborescence de la définition étendue de modèle.

Vous pouvez créer plusieurs profils de transformation dans la mêmedéfinition étendue de modèle : chaque profil correspondant à un scénario degénération spécifique ; par exemple lorsque le MCD est la source et que lacible est un MPD, etc.

TransformationsUn profil de transformation est une liste de transformations qui doit êtredéfinie préalablement dans la catégorie Profile\Tranformations de ladéfinition étendue de modèle.

Pour plus d'informations sur les transformations, reportez-vous auchapitre Gestion des profils.

Page 369: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 359

Pour créer un profil de transformation :

1 Pointez sur la racine de l'arborescence de la définition étendue demodèle, cliquez le bouton droit de la souris, puis sélectionnez Ajouterdes éléments dans le menu contextuel.

2 Sélectionnez Transformation Profiles dans la boîte de dialogue desélection, puis cliquez sur OK.

La catégorie Transformation Profiles s'affiche dans l'arborescence de ladéfinition étendue de modèle.

3 Pointez sur la catégorie Transformation Profiles, cliquez le bouton droitde la souris puis sélectionnez Nouveau dans le menu contextuel.

Un nouveau profil est créé.

4 Saisissez un nom et un commentaire dans la page Général.

5 <facultatif>> Sélectionnez un type de modèle dans la zone Type demodèle. Vous pouvez également sélectionner une famille et une sous-famille dans les zones correspondantes.

6 Cliquez sur l'onglet Pré-génération pour afficher les transformations pré-génération.

7 Cliquez sur l'outil Ajouter des transformations pour sélectionner lestransformations à appliquer au modèle courant avant la génération. Cestransformations ont été précédemment définies dans la catégorieProfile\Tranformations.

8 Répétez les mêmes étapes dans la page Post-génération.

9 Cliquez sur Appliquer dans l'éditeur de définition étendue de modèlepour enregistrer le profil de transformation.

Catégorie Generation

La catégorie Generation contient des catégories et des entrées servant àdéfinir et à activer un processus de génération. Vous pouvez utiliser lescatégories suivantes :

♦ Commands, pour lancer des commandes lors de la génération

♦ Options, pour définir des options relatives à la génération

♦ Tasks, pour stocker des commandes et pour définir des templates pour lagénération et pour les requêtes O/R et R/R

Page 370: advanfr.pdf

Utilisation des définitions étendues de modèle

360 PowerAMC

Une définition étendue de modèle peut être utilisée pour compléter lagénération du modèle objet, ou bien pour une génération étendue. Vouspouvez définir cette option à l'aide de la case à cocher Compléter lagénération de langage, située dans la feuille de propriétés de la définitionétendue de modèle.

Commandes et tâches

La catégorie Commands permet de définir les commandes de génération. Lescommandes de génération peuvent être exécutées à la fin de la génération,une fois les fichiers générés.

Le texte qui définit le code de la commande est écrit à l'aide du langage degénération par templates (GTL). Il fait appel à des variables d'environnementqui correspondent à des exécutables. Vous pouvez également utiliser desmacros dans vos commandes.

Pour plus d'informations sur le GTL, reportez-vous au chapitre Guidede référence de la génération.

Toutes les commandes écrites dans la catégorie Commands sont disponiblesdans la page Tâches de la boîte de dialogue de génération depuis laquelleelles peuvent être exécutées à la fin de la génération. Une tâche est une listede commandes à exécuter après la génération. Chaque tâche est répertoriéedans la page Tâches de la boîte de dialogue de génération, en regard du nomde la définition étendue de modèle. Vous pouvez les sélectionner et utiliserles flèches pour définir leur ordre.

Si une entrée de la liste des commande n'est pas référencée dans une entréede la liste des tâches, elle ne sera pas exécutée lors de la génération.Lorsqu'une tâche est sélectionnée dans la page Tâches de la boîte de dialoguede génération, les commandes qu'elle inclut sont extraites et le templateassocié à chaque commande est évalué et exécuté.

Page 371: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 361

Dans l'exemple suivant, des tâches sont définies dans la définition étendue demodèle Weblogic ; les autres tâches proviennent du langage objet du modèle(Java):

Vous devez créer des commandes avant de pouvoir créer des tâches.

Pour créer une commande :

1 Pointez sur la catégorie Commands, cliquez le bouton droit de la souriset sélectionnez Nouveau dans le menu contextuel.

Une nouvelle commande est créée.

2 Saisissez un nom dans la zone Nom.

3 <facultatif> Saisissez un commentaire dans la zone Commentaire.

Création d'unecommande

Page 372: advanfr.pdf

Utilisation des définitions étendues de modèle

362 PowerAMC

4 Saisissez le code de la commande dans la zone de texte vide en utilisantles différents outils de la barre d'outils.

5 Cliquez sur Appliquer.

Pour créer une tâche :

1 Pointez sur la catégorie Tasks, cliquez le bouton droit de la souris etsélectionnez Nouveau dans le menu contextuel.

Une nouvelle tâche est créée.

2 Saisissez un nom dans la zone Nom.

3 <facultatif> Saisissez un commentaire dans la zone Commentaire.

Le commentaire de la tâche s'affiche dans la boîte de dialogue degénération.

4 Cliquez sur l'outil Ajouter des commandes.

La boîte de dialogue Ajout de commandes s'affiche.

5 Sélectionnez une ou plusieurs commandes, puis cliquez sur OK.

La commande s'affiche dans la liste des commandes.

Création d'unetâche

Page 373: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 363

6 Utilisez les flèches situées sous la liste pour définir l'ordre descommandes.

7 Cliquez sur Appliquer.

Options

La catégorie Options permet de personnaliser le processus de génération.

Vous pouvez définir les types d'entrées suivants dans la catégorie Options :

Entrée Définition Exemple

Boolean Option à évaluer avec deuxvaleurs possibles : Yes ou No

EnableComment : Yes / No

String Chaîne de caractères d'uneseule ligne. Tous lescaractères sont admis dans lavaleur

Valeur WebLogicPassword

List Liste de chaînes au format<value>[:<label>]

WebLogicDeploymentType permetde spécifier si vous souhaitezdéployer ou redéployer : vouspouvez choisir "deploy" ou "update"dans la liste des valeurs

Page 374: advanfr.pdf

Utilisation des définitions étendues de modèle

364 PowerAMC

Chaque entrée a un nom et un commentaire, elle correspond à une option degénération. Le nom est utilisé si aucun commentaire n'est spécifié, dans le cascontraire, le commentaire s'affiche dans la colonne Options de la pageOptions de la boîte de dialogue de génération.

Ces options s'affichent dans la page Options de la boîte de dialogue degénération si les conditions suivantes sont remplies :

♦ La définition étendue de modèle contient au moins un fichier généré

♦ La définition étendue de modèle contient au moins une tâche

Ces deux conditions permettent d'afficher et de sélectionner la définitionétendue de modèle dans la page Cibles de la boîte de dialogue de génération :

Page 375: advanfr.pdf

Chapitre 6 Guide de référence des définitions étendues de modèle

Documentation utilisateur avancée 365

Lorsque la définition étendue de modèle est sélectionnée, les optionss'affichent dans la page Options :

Vous pouvez utiliser les opérations de génération dans tous les templates ettoutes les commandes de génération. Pour connaître la valeur d'une option degénération, utilisez la syntaxe suivante : %GenOptions.<Optionsname>%.

Par exemple, pour évaluer EnableComment, vous pouvez utiliser la syntaxesuivante :

.if (%GenOptions.EnableComment%)%Comment%.endif ( )

Pour plus d'informations sur la syntaxe du GTL, reportez-vous auchapitre Guide de référence de la génération.

Page 376: advanfr.pdf

Génération pour une définition étendue de modèle

366 PowerAMC

Génération pour une définition étendue demodèle

Vous attachez une définition étendue de modèle à un modèle afin de :

♦ Compléter la génération principale du modèle

♦ Générer pour une cible séparée

Les paramètres de génération d'une définition étendue de modèle influent surle contenu de la boîte de dialogue de génération. Le tableau suivant montreque vous pouvez personnaliser la génération à partir de l'éditeur de définitionétendue de modèle.

Boîte de dialoguede génération Définition étendue de modèle

Page Cibles La page Cibles s'affiche si vous avez coché la caseCompléter la génération de langage dans la feuille depropriétés de la définition étendue de modèle et si cettedéfinition étendue de modèle contient au moins une tâcheet un fichier généré

Page Options Définition des options dans Generation\Options à l'aided'entrées de type Booléenne, Liste et Chaîne

Page Tâches Définit les commandes à l'aide des entrées de commandeset de références à ces commandes dans des tâches

Les définitions étendues de peuvent être utilisées pour créer de nouvellescibles de génération. Dans ce cas, la case Compléter la génération de langagedoit être décochée et la définition étendue de modèle doit contenir desentrées GeneratedFiles.

Cette génération est disponible pour tous les modules PowerAMC, à toutmoment vous pouvez générer pour une génération étendue en sélectionnantOutils→Génération étendue.

Compléter lagénérationprincipale

Générer pour unecible séparée

Page 377: advanfr.pdf

Documentation utilisateur avancée 367

C H A P I T R E 7

Guide de référence de la génération

Ce chapitre fournit une référence complète sur les concepts utilisés dans lelangage de génération par templates (GTL, Generation Template Language)disponible dans PowerAMC. Vous y trouverez également des conseils relatifsà l'utilisation du GTL.

Section Page

Définition du langage de génération par template (GTL) 368

Définition des concepts utilisés dans le langage de génération partemplate 370

Conseils et techniques de génération 409

Sujet

Sommaire

Page 378: advanfr.pdf

Définition du langage de génération par template (GTL)

368 PowerAMC

Définition du langage de génération partemplate (GTL)

Vous avez la possibilité de définir vos propres préférences de générationdans un langage objet (fichier .XOL) ou bien dans une définition étendue demodèle (fichier .XEM) et personnaliser ainsi le processus de génération enutilisant le langage de génération par template (GTL).

Le langage de génération par template est un langage basé sur des templatesutilisés par PowerAMC pour la génération de texte. Ce langage vous permetune meilleure adaptation et un contrôle total de la génération car la logiquede génération est entièrement contenue dans le langage objet ou la définitionétendue de modèle que vous avez la possibilité d'éditer. En outre, il vouspermet d'ajouter facilement des modules de génération de codesupplémentaires adaptés à vos besoins.

Le langage de génération par template permet de générer du texte pourchaque objet (appelé métaclasse) contenu dans un modèle. Ce type degénération peut permettre de produire du code, générer des rapports (extrairede l'information textuelle du modèle) ou produire un format tel que XMIpermettant l'échange avec d'autres applications.

Vous pouvez générer un fichier par métaclasse (par exemple, une classe dansun MOO ou une table dans un MPD), mais vous pouvez également générerdu texte pour une métaclasse qui sera inclus dans un fichier plus globalgénéré pour un autre objet.

Ce fragment de texte est appelé template. Il se compose de texte mêlé devariables qui correspondent à des données provenant du modèle.

Vous pouvez accéder à n'importe quelle information contenue dans le modèlepar l'intermédiaire de variables. Ces informations peuvent être de simplesattributs (par exemple le nom d'une classe, un type de données d'attribut, etc.)ou une collection d'objets (par exemple, la liste des attributs d'une classe). LeGTL permet également de tester des variables, et d'utiliser certaines macrosdans le but de générer une disposition particulière.

Le processus de génération évalue quelles sont les métaclasses pourlesquelles des fichiers doivent être générés, puis, sur cette base, crée unfichier pour chaque objet dans le modèle qui appartient à cette métaclasse.Lors de la génération, chaque template et chaque variable est évalué etremplacé par sa valeur dans le fichier généré.

Présentation duprocessus

Page 379: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 369

Le langage de génération par template prend en charge des concepts orientésobjet tels que les héritages et le polymorphisme et permet donc de réutiliserles objets et d'assurer plus facilement leur maintenance. Il met également àvotre disposition des macros conditionnelles, itératives et de format de textepermettant de spécifier la logique des templates. Les macros fournissent lesstructures de programmation génériques pour le test des variables (parexemple : .if) et permettent l'itération entre les éléments dépendant d'un objet(par exemple : .foreach.).

Dans ce chapitre, la plupart des exemples utilisent le langage Java. Toutefois,le mécanisme décrit dans cette section est également applicable à tous leslangages objets et à toutes les définitions étendues de modèle.

Concepts pris encharge

Java pour lesexemples

Page 380: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

370 PowerAMC

Définition des concepts utilisés dans le langagede génération par template

Les concepts suivants sont utilisés dans le langage de génération partemplate.

Définition de templates

Un template se compose de texte et de variables, et peut également contenirdes macros. Il s'agit d'un fragment de texte généré pour un objet. Il secomporte comme un type de propriété particulier dont la valeur est recalculéechaque fois que vous l'obtenez. Le contenu d'un template est constitué par lecode généré au format texte.

Un template est associé à une métaclasse donnée, vous pouvez définir autantde templates que vous le souhaitez pour une métaclasse donnée, cettedernière est disponible pour tous les objets (instances) de cette métaclasse.Une métaclasse est une classe du métamodèle (ou classe abstraite). Il peuts'agir d'un attribut d'entité provenant d'un Modèle Conceptuel de Données(MCD), d'une table d'un Modèle Physique de Données (MPD), d'uneopération d'un Modèle Orienté Objet (MOO), etc …Les templates permettentd'accéder complètement aux attributs et collections du métamodèlePowerAMC ainsi qu'à tous les éléments du modèle.

Les templates sont utilisés pour générer des fichiers, leur rôle est de produiredu texte à des fins de génération. Lors de la génération, l'évaluation d'untemplate génère toujours du texte qui peut être stocké dans un fichier etutilisé pour rassembler des informations sur un objet donné.

Un template peut également faire référence à n'importe quel template (ycompris à lui-même) afin de promouvoir la récursion et le partage de code detemplate, le second template est évalué et sa valeur est située dans le résultatdu premier template.

Exemple de template :

.foreach_item (Parameters)

%definition%

.next(", ")

Exemple

Page 381: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 371

ExemplesVous allez trouver des exemples spécifiques de l'utilisation des templatesdans les différentes sections de ce chapitre.

Un template est construit à l'aide de la syntaxe suivante :

template = <template-complexe>

template-complexe = (<macro-bloc> | <macro-simple> |<simple-template<)*

template-simple = (<texte> | <bloc-variables> | <bloc-conditionnel>)*

Pour plus d'informations sur certaines parties de la syntaxe ci-dessus,reportez-vous à leur définition dans la suite de ce chapitre.

Vous pouvez utiliser des templates simples ou complexes. Un templatesimple ne contient pas de macros, tandis qu'un template complexe encontient.

La syntaxe d'un template simple se présente comme suit :

%Visibility% %DataType% %Code% [= %InitialValue]

Lorsqu'il est évalué, ce template qui contient les 4 variables Visibility,DataType, Code et InitialValue qui seront remplacées par les valeursprovenant de l'objet courant dans le modèle. Compte tenu du fait que le signe= et la valeur de la dernière variable InitialValue se trouvent entre crochets,cette section du template ne sera générée que si InitialValue n'est pas void.

La syntaxe d'un template complexe peut se présenter comme suit :

Chaque variable entre % peut être le nom d'un attribut, ou bien une propriétéde l'objet courant, ou encore le nom d'un template.

Pour plus d'informations sur les variables, reportez-vous à la sectionDéfinition des variables.

Exemple detemplate simple

Exemple detemplate complexe

Page 382: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

372 PowerAMC

Dans Java, ouvrez la catégorie Profile\Operation\Templates dans le langageobjet pour afficher tous les templates utilisés pour la génération d'opérationsexistant dans le MOO.

Définition des variables

Les variables sont des valeurs qualifiées encadrées par des caractères % etéventuellement précédés par des options de format. Au moment del'évaluation, elles sont remplacées par la valeur correspondante dans la portéede la traduction courante.

Une variable peut avoir l'un des types suivants :

♦ Attribut d'un objet

♦ Membre d'une collection ou d'une collection étendue

♦ Template

♦ Variable d'environnement

Par exemple, la variable %Name% d'une interface peut être directementévaluée dans une macro et remplacée par le nom de l'interface dans le fichiergénéré.

Respect de la casseAttention, la casse des caractères est prise en compte pour les noms devariable. La première lettre d'un nom de variable doit être une majuscule,comme dans %Code%.

Les variables suivantes sont représentées avec leur syntaxe possible :

Variable Syntaxe

bloc-variable '%' ['.' <options-format> ':'] <variable> '%'

variable [<portée-externe> '.'] [<objet-variable> '.'] [<portée-objet>'.']<membre-objet>

[<portée-externe> '.'] [<objet-variable> '.'] [<portée-collection> '.']<membre-collection>

[<portée-externe> '.']<variable-locale>

[<portée-externe> '.'] <global-variable>

Exemple detemplates Java

Syntaxe desvariables

Page 383: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 373

Variable Syntaxe

membre-objet <propriété>

[<code-cible> '::'] [<nom-métaclasse> '::'] <nom-template>['('<liste-paramètres>')']

[<code-cible> '::']<attribut-étendu>

[' * ']+ <valeur-locale> ['('<liste-paramètres>')']

membre-collection 'First'

'IsEmpty'

'Count'

local-variable <objet-local>

[' * '] <valeur-locale>

variable-globale <objet-global>

<valeur-globale>

'$' <variable-environnement>

objet-variable <objet-global>

<objet-local>

portée-externe [<portée-externe> '.'] 'Outer'

portée-objet [<portée-objet> '.'] <objet-membre-objet>

<portée-collection> '.' <collection-membre-objet>

objet-membre-objet <propriété-typeobjet>

objet-membre-collection

'First'

portée-collection [<portée-objet> '.'] <collection>

[<portée-objet> '.'] <collection étendue>*

* La collection inverse d'une collection étendue ne peut pas être évaluée avec le langage degénération par template

Pour plus d'informations sur les collections étendues, reportez-vous à lasection Définition d'une collection étendue dans un profil, dans le chapitreGestion des profils.

Page 384: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

374 PowerAMC

Membres d'objet

Un membre d'objet peut être une propriété standard, un template ou unattribut étendu. Il peut y avoir trois types de propriété standard : boolean,string ou object. La valeur d'une propriété standard peut être :

♦ 'true' ou 'false' s'il s'agit d'une propriété de type boolean

♦ 'null' ou 'notnull' s'il s'agit d'une propriété de type object

La valeur d'un template est le résultat de sa conversion (remarquez qu'untemplate peut être défini par rapport à lui-même, c'est-à-dire de façonrécursive).

La valeur d'un attribut étendu peut également être un template, auquel caselle est convertie. Ceci permet de définir les templates sur une base objet(instance) plutôt que sur une base métaclasse.

Pour éviter les conflits de nom lorsque l'évaluation d'un template s'étend surplusieurs cibles, il est possible de préfixer à la fois les attributs étendus et lestemplates par le code de leur cible parent. Par exemple :%Java::strictfp% ou %C++::definition%

Les noms de template peuvent également être préfixés par le nom de leurmétaclasse parent. Ceci vous permet d'invoquer un template redéfini, encontournant de fait le mécanisme de résolution de template dynamique. Parexemple : %Classifier::definition%

Vous avez également la possibilité de spécifier une liste de paramètres. Lesvaleurs de paramètre ne doivent pas contenir de caractères % et être séparéespar des virgules. Les paramètres sont transmis sous forme de variableslocales @1, @2, @3… définies dans la portée de la conversion du template.

Si le template MyTemplate est défini de la façon suivante :

Parameter1 = %@1%

Parameter2 = %@2%

L'évaluation de %MyTemplate(MyParam1, MyParam2)% va produire :

Parameter1 = MyParam1

Parameter2 = MyParam2

Page 385: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 375

La syntaxe ['*']+ <valeur-locale> ['('<liste-paramètres>')']renvoie le membre d'objet défini par l'évaluation de ['*']+ <valeur-locale>. Si le membre d'objet spécifié est un template, une liste deparamètres peut être spécifiée. Le fait d'appliquer l'opérateur astérisquecorrespond à une double évaluation (l'opérateur * agit comme un opérateurde déréférencement).

Supposons qu'une variable locale soit définie de la façon suivante :.set_value(C, Code)

Dans ce cas, %C% va renvoyer "Code" et %*C% va renvoyer le résultat del'évaluation de %Code%. En d'autres termes, %*C% peut être considérécomme %(%C%)% (la dernière syntaxe étant incorrecte).

Membres de collection

Les membres de collection disponibles sont les suivants :

Nom Type Description

First Object Renvoie le premier élément de la collection

IsEmpty Boolean Permet de tester si une collection est vide. True si lacollection est vide, false dans le cas contraire

Count Integer Nombre d'éléments de la collection

Remarque : Count est tout particulièrement utile pour définir des critèresbasés sur la finle de la collection, par exemple (Attributes.Count>=10).

Variables locales

Les variables locales ne sont visibles dans la portée que si elles sont définiesdans ses portées internes.

Les variables locales peuvent être définies en utilisant les macros set_objectet set_value.

Pour plus d'informations sur les macros set_object et set_value,reportez-vous aux sections Macro set_object et Macro set_value.

Opérateur dedéréférencement

Page 386: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

376 PowerAMC

Les variables définies via la macro set_object sont référencées comme desobjets locaux, tandis que celles définies à l'aide de la macro set_value sontappelées valeurs locales. L'opérateur de déréférencement * peut être appliquéaux valeurs locales.

L'opérateur * permet l'évaluation des variables dont le nom est la valeur de lavariable locale spécifiée.

'%'['.' <options-format> ':'] '*' <variable-locale>'%'

Par exemple, le code suivant :

.set_value(i, Code)

%*i%

Equivaut à :

%Code%

Variables globales

Les variables globales sont disponibles quelle que soit la portée courante.Certaines variables spécifiques au langage de génération par template sontrépertoriées dans le tableau suivant :

Nom Type Description

ActiveModel Object Modèle actif

GenOptions struct Permet d'accéder aux options de générationdéfinies par l'utilisateur

PreviewMode boolean True si en mode Aperçu, false en mode degénération de fichier

CurrentDate String Date et heure système courante, mises en forme enfonction des paramètres régionaux en vigueur

CurrentUser String Login utilisateur courant

NewUUID String Renvoie un nouvel UUID

Portée externe

Une portée externe peut être accessible à l'aide du mot clé Outer. Le fait despécifier une portée change la portée de la conversion courante utilisée pourl'évaluation de la variable.

Opérateur dedéréférencement

Page 387: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 377

Pour plus d'informations et des exemples sur la portée externe,reportez-vous aux illustrations de la section Définition de la portée de laconversion.

Portée de l'objet

Pour accéder aux membres d'un objet qui n'est pas actif dans la portée de laconversion courante, il est possible de spécifier une portée d'objet. Le fait despécifier une portée d'objet change la portée de la conversion couranteutilisée pour évaluer la variable.

Le caractère '.' (point) se comporte comme un opérateur d'indirection commedans le langage de programmation Java, le côté droit correspond à unmembre de l'objet référencé par le côté gauche.

Portée de la collection

Pour accéder aux membre d'une collection, vous pouvez spécifier une portéede collection. Le caractère '.' (point) se comporte comme un opérateurd'indirection comme dans le langage de programmation Java, le côté droitcorrespond à un membre de la collection référencée par le côté gauche.

Par exemple :

Définition d'options de formatage de variable

Les variables ont une syntaxe qui impose un format à leurs valeurs. Lesutilisations classiques de ces options sont les suivantes :

♦ Forcer les valeurs en majuscules ou un minuscules

♦ Tronque les valeurs

♦ Met le texte entre apostrophes ou entre guillemets

Vous pouvez incorporer des options de format dans la syntaxe d'une variablecomme suit :

%.format:variable%

Page 388: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

378 PowerAMC

Les options de format pour les variables sont les suivantes :

Option Description

n (n représente unentier)

Extrait les n premiers caractères. Des espaces ou des zérossont ajoutés à gauche pour compléter la largeur et justifier lerésultat à droite

-n Extrait les n derniers caractères. Des espaces ou des zérossont ajoutés à droite pour compléter la largeur et justifier lerésultat à gauche

L Convertit les caractères en minuscules

U Convertit les caractères en majuscules

c Initiale majuscule et les autres caractères en minuscules

A Supprime automatique le retrait à droite et aligne le texte surle bord gauche

D Affiche la valeur d'interface d'une propriété d'objet avec unnom différent dans la ligne de code. Dans l'exemple suivant,la valeur pour la visibilité sera 'public', tandis que cette valeurest stockée sous la forme '+' dans le MOO.%Visibility% = +%.D:Visibility% = public

F Combiné avec L et U, applique la conversion sur le premiercaractère

T Les espaces de gauche et de droite sont supprimés de lavariable

q Place la variable entre apostrophes

Q Place la variable entre guillemets

X Ignore les caractères interdits pour XML

Vous pouvez combiner les codes de format. Par exemple, %.U8:CHILD%convertir les 8 premiers caractères du code de la table CHILD en majuscules.

Page 389: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 379

Définition de la portée de la conversion

Les templates sont instanciés via un processus appelé conversion. Laconversion est effectuée dans une portée définie et consiste à remplacer lesvariables par leurs valeurs correspondante dans le cadre défini par la portéeTous les templates sont définis par rapport aux classes du métamodèle, ilssont considérés comme des propriétés d'un type particulier qui utilisent lerésultat de leur conversion comme valeur.

Une portée est un contexte pour l'évaluation d'un template, il inclut l'objetactif et les variables locales. A un point donné de la conversion, un seul objetest actif ; il s'agit de l'objet auquel le template est appliqué. Au sein d'uneportée de conversion, tous les attributs et collections de métamodèle définisdans la métaclasse de l'objet actif et ses parents sont visibles, de même queles attributs étendus et templates correspondantes. Lorsque le moteur deconversion commence à évaluer un template, une nouvelle portée deconversion est créée.

Pour plus d'informations sur les collections d'objets, reportez-vous à lasection Associations et collections, dans le chapitre Métamodèle publicPowerAMC.

Lorsqu'une portée est créée il s'agit de la portée de la conversioncourante, l'ancienne portée de conversion constituant la portée externe de laportée de conversion courante

Lorsqu'une portée est quittée sa portée externe est restaurée commeétant la portée de conversion courante

Pour plus d'informations sur la portée externe, reportez-vous à lasection Définition des variables.

Page 390: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

380 PowerAMC

De nouvelles portées peuvent être créées lors de l'évaluation d'un templatequi force l'objet à changer. Par exemple, la macro foreach_item, quipermet l'itération sur les collections définit une nouvelle portée, de même quela macro foreach_line. La portée externe est restaurée à la fin du bloc.

Pour plus d'informations sur ces deux macros, reportez-vous auxsections Macro foreach_item et Macro foreach_line.

Les portées imbriquées forment une hiérarchie qui peut être affichée sous laforme d'une arborescence, la portée de plus haut niveau étant la racine.

L'exemple suivant montre le mécanisme de la portée à l'aide d'un template declasse :

Conversion d'un raccourci

Les raccourcis sont déréférencés lors de la conversion : la portée de l'objetcible remplace la portée du raccourci.

Par exemple, le fichier généré suivant défini dans la métaclasse packagefournit la liste des classes contenues dans le package. Si un raccourci versune classe est trouvé, le code de son objet cible suivi de (Raccourci) estgénéré, suivi par l'ID de l'objet parent, puis par l'ID du raccourci, ce quimontre clairement que la portée du raccourci est remplacée par la portée del'objet cible du raccourci :

.foreach_item(Classes) .if (%IsShortcut%)%Code% (Raccourci)oid = %ObjectID%shortcut oid = %Shortcut.ObjectID% .else%Code%

Exemple

Page 391: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 381

%Shortcut% .endif.next(\n)

Ce comportement est l'inverse de celui du VB Script, dans lequel laconversion des raccourcis récupère le raccourci lui-même.

Si un raccourci externe a le statut fermé, il est ignoré lors de la conversion etn'apparaît pas dans le fichier généré.

Si vous souhaitez générer le raccourci lui-même plutôt que l'objet auquel ilfait référence, vous pouvez utiliser la variable %Shortcut%.

Définition d'un héritage

Les templates sont définis par rapport à une classe de métamodèle donnée etsont hérités par ses enfants. Ils sont hérités par tous les enfants de lamétaclasse pour laquelle ils sont définis. Ce mécanisme est utile pourpartager le code de template entre différentes métaclasses ayant un parent encommun.

Exemple d'héritage : Un classificateur/définition est disponible via l'héritaged'une classe et d'une interface. Dans l'exemple suivant, le template dedéfinition spécifié sur la métaclasse parent est utilisé dans l'évaluation dutemplate de contenu sur la métaclasse enfant.

Redéfinition d'un template

La redéfinition d'un template signifie qu'un template défini par rapport à unemétaclasse peut être redéfini sur une classe enfant, auquel cas le template dela métaclasse parent est dit redéfini. La nouvelle définition masque lapremière pour les objets de la métaclasse enfant.

Pour pouvoir utiliser la définition d'une métaclasse parent particulière, lelangage de génération par template fournit l'opérateur qualifiant "::".

Exemple

Page 392: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

382 PowerAMC

Le même nom de template "isAbstract" est utilisé dans deux catégoriesdifférentes : Classifier et Class. "false" est la valeur d'origine qui a étéredéfinie par la nouvelle valeur "true". Vous pouvez récupérer la valeurd'origine en utilisant la syntaxe suivante : <metaclassName::template>, dansce cas :

%isAbstract%

%Classifier::isAbstract%

Définition du polymorphisme

Les templates sont liés de façon dynamique. En d'autres termes, le choix dutemplate à évaluer et effectué au moment de la conversion en fonction dutype d'objet auquel il est appliqué. Ce mécanisme est comparable aumécanisme d'invocation de méthode virtuelle en vigueur dans les langagesorientés objet.

Le polymorphisme est obtenu en permettant la redéfinition du template dansles classes dérivées. Par exemple, il peut être utile dans Java de définirGenerated Files sur le classificateur. Le polymorphisme permet au code detemplate défini sur un classificateur d'utiliser des templates définis sur sesenfants (classe, interface), le template utilisé n'a pas à être défini sur lamétaclasse parent. Combinée avec les héritages, cette fonctionnalité permetde partager le code de template.

Exemple

Exemple

Page 393: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 383

Le contenu de %definition% est celui défini dans Classifier pour uneinterface, et celui défini dans Class pour une classe.

Définition d'une surcharge de template

Vous pouvez avoir plusieurs définitions du même template qui s'appliquent àdifférentes conditions. Si tel est le cas, le template n'est défini que pour lesobjets qui satisfont à la condition (les templates sont toujours liés de façondynamique). La fonctionnalité de surcharge peut être utilisée comme unmécanisme de commutation très puissant : vous pouvez trier les éléments parordre alphabétique afin d'obtenir une meilleure lisibilité lorsque vousrassemblez différentes versions du même template. Elle permet égalementd'améliorer la lisibilité en évitant d'utiliser des conditions .if trop longues.

Au moment de la conversion, le moteur de conversion évalue chaquecondition successivement jusqu'à ce qu'il en trouve une qui soit vérifiée, puisprend alors la définition de template correspondante. Si aucune conditionn'est vérifiée, le template non conditionnel, s'il est défini, est utilisé par défaut(voir syntax1 dans l'illustration suivante).

Les conditions doivent être mutuellement exclusives pour garantir uncomportement déterministe.

Les templates peuvent également être définis sous des critères ou desstéréotypes, auxquels cas les conditions correspondantes sont combinées.

Pour plus d'informations sur les critères et les stéréotypes, reportez-vous aux sections Définition d'un critère et Définition d'un stéréotype, dans lechapitre Gestion des profils.

Pour plus d'informations sur <condition-simple>, reportez-vous à lasection Macro if.

Définition des séquences d'échappement

Des séquences d'échappement sont des séquences de caractères spécifiquesutilisées pour configurer la présentation du fichier généré.

Exemple

Page 394: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

384 PowerAMC

Les séquences d'échappement suivantes peuvent être utilisées dans destemplates :

Séquenced'échappement Description

\n Caractère de passage à la ligne, crée une nouvelleligne

\t Caractère de tabulation, crée une tabulation

\\ Crée une barre oblique inverse

\ au début d'une ligne Crée un caractère de suite (ignore la nouvelle ligne)

. au début d'une ligne Ignore la ligne

.. au début d'une ligne Crée un caractère point (pour générer une macro)

%% Crée un caractère pourcent

Pour plus d'informations sur les séquences d'échappement, reportez-vous à la section Utilisation de nouvelles lignes dans la chaîne d'en-tête et defin.

Utilisation de macros

Les macros peuvent être utilisées pour exprimer la logique, et pour bouclersur des collections d'objets. Chaque mot clé de macro doit être précédé d'uncaractère "." (point) et doit être le premier caractère, autre qu'un espace, surune ligne. Prenez soin de respecter la syntaxe des macros en termes depassage à la ligne.

Vous pouvez définir une macro dans un template, ou dans une commande.

Vous pouvez définir trois types de macros, comme indiqué dans le tableausuivant :

Macro Syntaxe

Macro de bloc <if> | <vbscript> | <unique> | <lowercase> |<uppercase> | <replace> | <delete> | <block>

Macro deboucle

<foreach_item> | <foreach_line> | <foreach_part>

Macro simple <bool> | <set_object> | <set_value> |<execute_vbscript> | <execute_command> |<abort_command> | <change_dir> | <create_path> |<log> | <warning> | <error>

Page 395: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 385

Les macros de bloc se composent d'un mot clé de début et d'un mot clé de findélimitant un bloc auquel la macro est appliquée.

Leur structure se présente comme suit :

'.'<nom-macro> ['(' <paramètres> ')' ]

<bloc-entrée-macro>

'.'end<nom-macro> [ '(' <tail> ')' ]

<fin> est une constante de type chaîne facultative et qui est ajoutée au textegénéré, s'il existe.

Les macros de boucle sont utilisées pour l'itération. A chaque itération, unenouvelle portée est créée. Le template spécifié dans le bloc est convertisimultanément conformément à la portée d'itération.

'.'foreach_<nom-macro> ['(' <paramètres> [',' <head>[',' <fin>]] ')' ]

<template-complexe>

'.'next [ '(' <séparateur> ')' ]

<head> et <fin> sont des constantes de type chaîne facultatives. <head> estgénérée avant, et <fin> est ajoutée après le texte généré, s'il existe.

Un <séparateur> peut également être spécifié comme argument pour le motclé .next, il est placé entre des évaluations non vide de <template-complexe>.

Les macros simples sont les macros qui ne sont constituées que d'une seuleligne.

Délimiteurs de paramètres de macroLes paramètres de macro peuvent être délimités par des guillemets. Lesdélimiteurs sont requis lorsque la valeur du paramètre inclut des virgules,des accolades et des espaces de début ou de fin. La séquenced'échappement pour les guillemets au sein d'un paramètre est \".

Macro de bloc

Macro de boucle

Macro simple

Page 396: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

386 PowerAMC

Macro if

La macro if est utilisée pour la génération conditionnelle, et a la syntaxesuivante :

if= .if[not] <condition>

<template-complexe>

[(.elsif[not] <condition>

<template-complexe>)*]

[.else

<template-complexe>]

.endif ['(' <fin> ')']

condition= '(' <condition> ')' or '(' <condition> ')'|

'(' <condition> ')' and '(' <condition> ')' |

'(' <condition> ')' |

<condition-simple>

simple-condition= <variable> [ <opérateur-comparaison> <condition-rhs> ]

opérateur-comparaison='==' |

'!=' |

'<=' |

'>=' |

'<' |

'>' |

condition-rhs= <template-simple> |

<constante> |

true |

false |

null |

notnull |

constante= '"' <texte> '"'

Page 397: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 387

Paramètre Type Description

<fin> Texte Ajouté à la sortie, si elle existe

Lorsqu'une condition simple se compose d'une seule variable sans opérateurde comparaison, la condition est fausse lorsque la valeur de la variable est"false", "null" ou la chaîne null, dans le cas contraire elle est considéréecomme true.

Les opérateurs de comparaison <, >, >=, et <= permettent de comparer desentiers si les deux opérandes sont des entiers, dans le cas contraire, ellesinduisent une comparaison de chaînes intelligente qui prend en compte desnombres incorporés (exemple : Class_10 est supérieur à Class_2).

Macro vbscript

La macro vbscript est utilisée pour incorporer du code VB script dans untemplate. Il s'agit d'une macro de bloc.

La syntaxe d'une macro vbscript est la suivante :

.vbscript ['(' <liste-param-script> ')']

<bloc-entrée-vbscript>

.endvbscript ['(' <fin> ')']

Paramètre Type Description

<liste-param-script>(facultatif)

Liste d'arguments detemplate-simpleséparés par desvirgules

Paramètres passés sur le script via letableau ScriptInputArray

<bloc-entrée-vbscript>

Texte Texte VB script

<fin> Texte Ajouté à la sortie, si elle existe

Le résultat de la valeur ScriptResultArray.

Exemple :

.vbscript(hello, world)

ScriptResult = ScriptInputArray(0) + " " +ScriptInputArray(1)

.endvbscript

Paramètres

Paramètres

Résultat

Page 398: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

388 PowerAMC

Le résultat est le suivant :

hello world

Remarque : l'objet actif de la portée de conversion courante est accessible viala collection ActiveSelection en tant que ActiveSelection.Item(0).

Pour plus d'informations sur ActiveSelection, reportez-vous à la sectionPropriétés globales, dans le chapitre Manipulation des objets via VBScript,dans le manuel Guide des fonctionnalités générales.

Macro unique

L'objet de la macro unique est de définir un bloc dans lequel l'unicité dechaque ligne du texte généré est garantie. Cette macro peut être utile pourcalculer les importations, inclusions, typedefs ou de déclarations anticipéesdans des langages tels que Java, C++ ou C#.

.unique

<bloc-entrée-unique>

.endunique['(' <fin> ')']

Paramètre Type Description

<bloc-entrée-unique>

Templatecomplexe

Paramètre utilisé pour saisir du texte

<fin> Texte Ajouté au résultat, s'il y en a un

Le résultat est le bloc fourni en entrée dans lequel chaque ligne redondante aété supprimée.

Exemple :

.unique

import java.util.*;

import java.lang.String;

%imports%

.endunique

Paramètres

Résultat

Page 399: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 389

Macro lowercase

La macro .lowercase transforme en minuscules toutes les lettres majusculesd'un bloc de texte.

.lowercase

<bloc-entrée-minuscules>

.endlowercase

Cette macro est particulièrement utile lorsque vous travaillez sur lesconventions de dénomination.

Pour plus d'informations les conventions de dénomination, reportez-vous à la section Définition des conventions de dénomination, dans lechapitre Gestion des modèles du manuel Guide des fonctionnalités générales.

Paramètre Type Description

<bloc-entrée-minuscules>

Templatecomplexe

Un paramètre est utilisé pour spécifier du texte

Le résultat est le bloc utilisé en entrée et dans lequel toutes les majuscules ontété converties en minuscules.

Dans l'exemple suivant, la variable %Comment% a pour valeur 'BONJOUR'qui est convertie en 'bonjour.

.lowercase

%Comment%

.endlowercase

Macro uppercase

La macro .lowercase transforme en majuscules toutes les lettres minusculesd'un bloc de texte.

.uppercase

<bloc-entrée-uppercase>

.enduppercase

Cette macro est particulièrement utile lorsque vous travaillez sur lesconventions de dénomination.

Paramètres

Résultat

Page 400: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

390 PowerAMC

Pour plus d'informations les conventions de dénomination, reportez-vous à la section Définition des conventions de dénomination, dans lechapitre Gestion des modèles du manuel Guide des fonctionnalités générales.

Paramètre Type Description

<bloc-entrée-uppercase>

Templatecomplexe

Un paramètre est utilisé pour spécifier du texte

Le résultat est le bloc utilisé en entrée et dans lequel toutes les minuscules ontété converties en majuscules.

Dans l'exemple suivant, la variable %Comment% a pour valeur 'bonjour' andqui est convertie en 'BONJOUR.

.uppercase

%Comment%

.enduppercase

Macro replace

La macro .replace remplace toutes les occurrences d'une chaîne par une autrechaîne dans un bloc de texte.

Cette macro est particulièrement utile lorsque vous travaillez sur lesconventions de dénomination.

Pour plus d'informations les conventions de dénomination, reportez-vous à la section Définition des conventions de dénomination, dans lechapitre Gestion des modèles du manuel Guide des fonctionnalités générales.

La macro .replace remplace l'ancienne chaîne <ancienne-chaîne> par lachaîne <nouvelle-chaîne> dans le bloc de texte <Bloc>.

.replace '(' <ancienne-chaîne> ',' <nouvelle-chaîne> ')'

<bloc-entrée-replace>

.endreplace

Paramètre Type Description

<ancienne-chaîne>

Texte Chaîne contenant les caractères à remplacerpar <nouvelle-chaîne>

<nouvelle-chaîne>

Texte Chaîne contenant les caractères quiremplacent <ancienne-chaîne>

Paramètres

Résultat

Paramètres

Page 401: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 391

Paramètre Type Description

<bloc-entrée-replace>

Templatecomplexe

Un paramètre est utilisé pour spécifier dutexte

Le résultat est que toutes les occurrences de la chaîne <ancienne-chaîne> sontremplacées par des instances de la chaîne <nouvelle-chaîne> dans le blocspécifié.

Dans l'exemple suivant, 'GetCustomerName' est converti en'SetCustomerName'.

.replace( get , set )

GetCustomerName

.endreplace

Dans l'exemple suivant, la variable %Name% a pour valeur 'CustomerFactory' et est convertie en 'Customer_Factory'.

.replace(" ", "_")

%Name%

.endreplace

Macro delete

La macro .delete supprime toute les occurrences d'une chaîne dans un bloc detexte. Dans le script suivant, elle supprime la chaîne <chaîne-suppr> dans lebloc.

.delete '('<chaîne-suppr> ')'

<bloc-entrée-delete>

.enddelete

Cette macro est particulièrement utile lorsque vous travaillez sur lesconventions de dénomination.

Pour plus d'informations les conventions de dénomination, reportez-vous à la section Définition des conventions de dénomination, dans lechapitre Gestion des modèles du manuel Guide des fonctionnalités générales.

Paramètre Type Description

<chaîne-suppr> Texte Chaîne à supprimer dans le bloc

<bloc-entrée-delete>

Templatecomplexe

Un paramètre est utilisé pour spécifier du texte

Résultat

Paramètres

Page 402: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

392 PowerAMC

Le résultat est que toutes les occurrences de la chaîne <chaîne-suppr> sontsupprimées dans le bloc spécifié.

Dans l'exemple suivant, 'GetCustomerName' est converti en 'CustomerName'.

.delete( get )

GetCustomerName

.enddelete

Dans l'exemple suivant, la variable %Code% a la valeur 'm_myMember' etest convertie en 'myMember'.

.delete(m_)

%Code%

.enddelete

Macro block

La macro .block est utilisée pour ajouter un en-tête et/ou une fin à soncontenu lorsque ce dernier n'est pas vide.

.block ['('<en-tête> ')']

<bloc-entrée>

.endblock['(' <fin> ')']

Paramètre Type Description

<en-tête>(facultatif)

Template simple Généré avant le résultat, s'il y en un

<fin>(facultatif)

Texte Ajouté au résultat, s'il y en a un

<bloc-entrée> Templatecomplexe

Un paramètre est utilisé pour spécifier du texte

Le résultat est la concaténation de <en-tête>, l'évaluation de <bloc-entrée> et<fin>.

Exemple :

.block (<b>)

The current text is in bold

.endblock (</b>)

Résultat

Paramètres

Résultat

Page 403: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 393

Macro convert_name

La macro .convert_name utilise la table de conversion d'un nom en code.Lorsqu'aucune occurrence n'est trouvée dans la table, c'est le nom qui estrenvoyé.

.convert_name (<Expression> [,<caractère-séparateur>[,<séparateur-motif>]])

L'expression <Expression> est le nom à convertir dans la table de conversioncorrespondante.

Paramètre Type Description

<séparateur-motif>(facultatif)

Texte Déclaration des différents séparateurs quipeuvent exister dans un nom. Ces séparateursseront remplacés par le <caractère-séparateur>.Vous pouvez déclarer plusieurs séparateurs, parexemple "space" et "tab"

<caractère-séparateur>(facultatif)

Texte Caractère généré chaque fois qu'un séparateurdéclaré dans <séparateur-motif> est trouvé dansle nom. Par exemple, ce caractère peut être "_"

Vous pouvez utiliser la macro .convert_name avec une table de conversionpersonnalisée que vous sélectionnez dans la liste déroulante Table deconversion. Pour ce faire, affichez la boîte de dialogue Options du modèle,sélectionnez l'objet approprié dans la catégorie Conventions dedénomination, puis cliquez sur l'onglet Nom en code.

Les tables de conversion ne tiennent pas compte de la casse des caractères.Vous pouvez utiliser indifféremment des majuscules et des minuscules dansces tables. Cette macro est particulièrement utile lorsque vous travaillez surles conventions de dénomination.

Pour plus d'informations les conventions de dénomination, reportez-vous à la section Définition des conventions de dénomination, dans lechapitre Gestion des modèles du manuel Guide des fonctionnalités générales.

Paramètres

Page 404: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

394 PowerAMC

Vous pouvez également utiliser cette macro hors des conventions dedénomination à condition que la table de conversion soit la table de l'objetcourant du script. Voici un exemple d'une macro qui peut être ajoutée à partirde la catégorie Profile\Column dans une nouvelle entrée Generated Files :

.foreach_item(Columns)

%Name%,

.foreach_part(%Name%)

.convert_name(%CurrentPart%)

.next("_")

.next(\n)

Pour plus d'informations sur la macro .convert_name, reportez-vous à lasection .convert_name & .convert_code macros, dans le chapitre Définitiondes conversions de nom et de code du manuel Guide des fonctionnalitésgénérales.

Macro convert_code

La macro .convert_code utilise la table de conversion d'un code en nom.Lorsque la table ne contient aucune occurrence, c'est le code qui est renvoyé.

.convert_code (<Expression> [<caractère-séparateur>[,<séparateur-motif>]])

L'expression <Expression> est le code à convertir dans la table de conversioncorrespondante.

Paramètre Type Description

<séparateur-motif>(facultatif)

Texte Déclaration des différents séparateurs quipeuvent exister dans un code. Ces séparateursseront remplacés par le <caractère-séparateur>.Vous pouvez déclarer plusieurs séparateurs, parexemple "space " et "tab"

<caractère-séparateur>(facultatif)

Texte Caractère généré chaque fois qu'un séparateurdéclaré dans <séparateur-motif> est trouvé dansle code. Par exemple, ce caractère peut être "_"

Vous pouvez utiliser cette macro avec une table de conversion personnaliséeque vous sélectionnez dans la liste déroulante Table de conversion. Pour cefaire, affichez la boîte de dialogue Options du modèle, sélectionnez l'objetapproprié dans la catégorie Conventions de dénomination, puis cliquez surl'onglet Nom en code.

Remarque

Paramètres

Page 405: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 395

Les tables de conversion ne tiennent pas compte de la casse des caractères.Vous pouvez utiliser indifféremment des majuscules et des minuscules dansces tables. Cette macro est particulièrement utile lorsque vous travaillez surles conventions de dénomination.

Pour plus d'informations les conventions de dénomination, reportez-vous à la section Définition des conventions de dénomination, dans lechapitre Gestion des modèles du manuel Guide des fonctionnalités générales.

Vous pouvez également utiliser cette macro hors des conventions dedénomination à condition que la table de conversion soit la table de l'objetcourant du script.

Pour plus d'informations sur la macro .convert_code, reportez-vous à lasection Macros .convert_name & .convert_code, (Définition des conversionsde nom et de code) dans le chapitre Gestion des modèles du manuel Guidedes fonctionnalités générales.

Macro foreach_item

La macro foreach_item est utilisée pour l'itération des collections d'objets. Letemplate spécifié au sein du bloc est converti sur tous les objets contenusdans la collection spécifiée. Le bloc définit une nouvelle portée au sein delaquelle l'objet actif à l'itération i est le membre de collection i-ème membrede la collection.

Si une comparaison est spécifiée, les éléments de la collection sont pré-triésen fonction de la règle correspondante avant leur itération :

.foreach_item '(' <portée-collection> [',' <en-tête>[',' <fin> [',' <condition-simple> [',' <comparaison>]]]]')'

<template-complexe>

.next ['(' <séparateur> ')']

Toutes les collections sont accessibles pour un objet donné. Chaque objetPowerAMC peut avoir une ou plusieurs collections correspondant aux objetsavec lesquels il interagit. Les collections expriment le lien entre les objets,par exemple une table a des collections de colonnes, d'index, de règles degestion, etc.

Les collections sont représentées dans le métamodèle public PowerAMC pardes associations entre objets. Les rôles des associations correspondent auxcollections d'un objet.

Remarque

Définition decollections

Page 406: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

396 PowerAMC

Pour plus d'informations sur les collections d'objets, reportez-vous à lasection Associations et collections, dans le chapitre Métamodèle publicPowerAMC.

Paramètre Type Description

<portée-collection> Templatesimple

Collection sur laquelle l'itération esteffectuée

<en-tête> (facultatif) Texte Généré avant le résultat, s'il y en a un

<fin> (facultatif) Texte Ajouté au résultat, s'il y en a un

<condition-simple>(facultatif)

Conditionsimple

Si spécifié, seuls les objets qui satisfont lacondition sont considérés lors de l'itération

<comparaison> Conditionsimple

<comparaison> est évalué au sein d'uneportée dans laquelle deux objets locauxrespectivement nommés 'Item1' et 'Item2'sont définis. Ils correspondent aux élémentsdans la collection. <comparaison> doit êtreévalué comme true si Item1 doit être placéaprès Item2 dans l'itération

<séparateur>(facultatif)

Texte Générer entre deux évaluations de <template-complexe> non vides

Délimiteurs de paramètres de macroLes paramètres de macro peuvent être délimités par des guillemets. Lesdélimiteurs sont requis lorsque la valeur du paramètre inclut des virgules,des accolades et des espaces de début ou de fin. La séquenced'échappement pour les guillemets au sein d'un paramètre est \".

Le résultat est formé par les évaluations concaténées de <template-complexe> sur tous les objets dans la collection.

Exemple :

Attribut Type de données Valeur initiale

cust_name String __

cust_foreign Boolean false

.foreach_item(Attributes,,,,%Item1.Code% >=%Item2.Code%))

Attribute %Code%[ = %InitialValue%];

.next(\n)

Paramètres

Résultat

Page 407: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 397

Le résultat est le suivant :

Attribute cust_foreign = false

Attribute cust_name;

Les quatre virgules après (Attributes,,,, signifient que tous lesparamètres (en-tête, fin, condition et comparison) sont sautés.

Macro foreach_line

La macro foreach_line est une macro simple qui procède à l'itération sur leslignes du template de saisie spécifié comme premier argument pour la macro.Le template spécifié dans le bloc est converti pour chaque ligne de l'entrée.Cette macro crée une nouvelle portée avec la variable locale CurrentLine.Cette dernière est définie dans le bloc comme étant la i-ème ligne du templateen entrée dans l'itération i.

.foreach_line '(' <entrée> [',' <en-tête> [',' <fin>]]')' <template-complexe>

.next ['(( <séparateur> ')']

Paramètre Type Description

<entrée> Template simple Texte en entrée, sur lequel l'itération esteffectuée

<en-tête>(facultatif)

Texte Généré avant le résultat, s'il y en a un

<fin>(facultatif)

Texte Ajouté au résultat, s'il y en a un

<séparateur>(facultatif)

Texte Généré entre évaluations non vides de<template-complexe>

Le résultat est composé des évaluations concaténées de <template-complexe>pour chaque ligne du template <entrée> converti.

Exemple :

.foreach_line(%Comment%)

// %CurrentLine%

.next(\n)

Remarque

Paramètres

Résultat

Page 408: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

398 PowerAMC

Macro foreach_part

La macro .foreach_part procède à l'itération sur la partie du template enentrée spécifiée comme premier argument de la macro. Le template spécifiédans le bloc est converti pour chaque partie de l'entrée.

Une partie est délimitée avec un motif de séparation. Il existe deux types deséparateurs :

♦ Séparateur de caractères : pour chaque séparateur de caractères, leséparateur spécifié dans la prochaine instruction de la macro est renvoyé(même pour des séparateurs consécutifs)

♦ Séparateur de mots : ils sont spécifiés en tant qu'intervalles, par exemple[A-Z] spécifie que toutes les lettres majuscules sont des séparateurs.Pour un séparateur de mots, aucun séparateur (spécifié dans la prochaineinstruction) n'est renvoyé

.foreach_part '(' <entrée> [',' <séparateur-motif> [','<en-tête> [, <fin>]]] ')'

<template-simple>

.next['(' <séparateur> ')']

Cette macro crée une nouvelle portée dans laquelle la variable localeCurrentPart est définie comme la i-ème partie du template en entrée àl'itération i. La variable locale Separator contient le séparateur suivant.

Cette macro est particulièrement utile lorsque vous travaillez sur lesconventions de dénomination.

Pour plus d'informations les conventions de dénomination, reportez-vous à la section Définition des conventions de dénomination, dans lechapitre Gestion des modèles du manuel Guide des fonctionnalités générales.

Le <séparateur-motif> est défini dans une chaîne entre guillemets et secomporte comme suit :

♦ Tout caractère spécifié dans le motif peut être utilisé comme séparateur

♦ [<c1> - <c2>] spécifie un caractère au sein de la plage définie entreles caractères <c1> et <c2>

Par exemple, le motif suivant “ -_,[A-Z]” spécifie que chaque partie peutêtre séparée par un espace, un tiret, un trait de soulignement, une virgule ouun caractère compris entre A et Z (majuscule).

Par défaut, le <séparateur-motif> est initialisé avec le motif (“ -_,\t”). Sile motif spécifié est vide, le motif est initialisé à l'aide de la valeur par défaut.

Séparateur-motif

Page 409: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 399

Un séparateur <séparateur> peut être concaténé entre chaque partie. Lesexpressions <en-tête> et <fin> peuvent être ajoutées respectivement au débutou à la fin de l'expression générée.

Paramètre Type Description

<entrée> Templatesimple

Texte en entrée sur lequel l'itération esteffectuée

<séparateur-motif> Texte Liste de séparateurs

<en-tête> (facultatif) Texte Généré avant le résultat, s'il y en a un

<fin> (facultatif) Texte Ajouté au résultat, s'il y en a un

<séparateur>(facultatif)

Texte Généré entre évaluations non vides de<template-complexe>

Le résultat est composé des évaluations concaténées de <template-complexe>pour chaque partie du template <entrée> converti.

Exemples :

Convertit un nom en code de classe (conventions de dénomination Java).Dans l'exemple suivant, la variable %Name% équivaut à 'Employeeshareholder', et est convertie en 'EmployeeShareholder' :

.foreach_part (%Name%, " _-'")

%.FU:CurrentPart%

.next

Convertit un nom en code d'attribut de classe (conventions de dénominationJava). Dans l'exemple suivant, la variable %Name% équivaut à 'Employeeshareholder', et est convertie en 'employeeShareholder':

.set_value(_First, true, new)

.foreach_part(%Name%,"' _-'")

.if (%_First%)

%.L:CurrentPart%

.set_value(_First, false, update)

.else

%.FU:CurrentPart%

.endif

.next

Paramètres

Résultat

Page 410: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

400 PowerAMC

Macro bool

Cette macro renvoie 'true' or 'false' en fonction de la valeur de la conditionspécifiée.

.bool '(' <condition> ')'

Paramètre Type Description

<condition> Condition Condition à évaluer

Exemple :

.bool(%.3:Code%= =ejb)

Macro set_object

Cette macro est utilisée pour définir une variable locale de type objet (objetlocal).

.set_object '(' <nom-var-locale> [',' <object-ref>[',' <new> ]] ')'

Paramètre Type Description

<nom-var-locale>

Template simple Nom de la variable

<object-ref>(facultatif)

[<portée>.]<portée-objet>]

Décrit une référence d'objet. S'il n'est passpécifié ou s'il s'agit d'une chaîne vide, lavariable est une référence à l'objet actif dansla portée de conversion courante

<new>(facultatif)

new ou update (lavaleur par défautest update)

Si le paramètre est 'new', crée une nouvellevariable et ce, même s'il en existe déjà unedans la portée courante, tandis que leparamètre 'update' modifie la valeur de lavariable dans la portée courante, ou crée unenouvelle variable s'il n'en existe aucune

La variable est une référence à l'objet spécifié à l'aide du second argument.

Exemple :

.set_object(Attribute1, Attributes.First)

Paramètres

Paramètres

Page 411: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 401

RemarqueLorsque vous spécifiez une nouvelle variable, il est recommandé despécifier 'new' comme troisième argument pour vous assurer qu'unenouvelle variable soit créée dans la portée courante.

Macro set_value

Cette macro est utilisée pour définir une variable locale ou un type de valeur.

.set_value '(' <nom-var-locale> ')' <value>[',' <new> ')'

Paramètre Type Description

<nom-var-locale>

Template simple Nom de variable

<value> Template simple(séquencesd'échappementignorées)

Valeur

<new>(facultatif)

New ou update (lavaleur par défautest update)

Si la valeur est new, (re)définit la variabledans la portée courante.Si la valeur est update, met à jour la variableexistante. Dans le cas contraire, définit unenouvelle variable

La valeur de la variable est définie pour être la valeur du template convertispécifiée comme second argument.

Exemple :

.set_value(FirstAttributeCode, %Attributes.First.Code%)

RemarqueLorsque vous spécifiez une nouvelle variable, il est recommandé despécifier 'new' comme troisième argument pour vous assurer qu'unenouvelle variable soit créée dans la portée courante.

Paramètres

Page 412: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

402 PowerAMC

Macro execute_vbscript

Cette macro est utilisée pour exécuter un script VB spécifié dans un fichierséparé.

.execute_vbscript '(' <fichier-vbs> [',' <script-parameter>] ')'

Paramètre Type Description

<fichier-vbs> Template simple(séquencesd'échappementignorées)

Chemin d'accès du fichier VB script

<paramètre-script>(facultatif)

Template simple Paramètre passé au script via la propriétéglobale ScriptInputParameters

Le résultat est la propriété globale ScriptResult.

Exemple :

.execute_vbscript(C:\samples\vbs\login.vbs, %username%)

Remarque : l'objet actif de la portée de conversion courante est accessible viala collection ActiveSelection en tant que ActiveSelection.Item(0).

Pour plus d'informations sur ActiveSelection, reportez-vous à la sectionPropriétés globales, dans le chapitre Manipulation des objets via VBScript dumanuel Guide des fonctionnalités générales.

Macro execute_command

Cette macro est utilisée pour lancer des exécutables sous forme de processusséparés. Elle est disponible pour exécuter des commandes de générationuniquement, et peut être combinée aux macros standard du langage degénération par template lorsque vous définissez des commandes.

.execute_command '(' <cmd> [',' <args> [',' <mode>]] ')'

Paramètre Type Description

<cmd> Template simple(séquencesd'échappementignorées)

Chemin d'accès d'exécutables

Paramètres

Résultat

Paramètres

Page 413: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 403

Paramètre Type Description

<args>(facultatif)

Template simple(séquencesd'échappementignorées)

Arguments pour l'exécutable

<mode>(facultatif)

cmd_ShellExecuteorcmd_PipeOutput

cmd_ShellExecute est exécuté commeprocessus indépendantcmd_PipeOutput bloque jusqu'à la fin del'exécution, puis montre le résultat del'exécutable dans la fenêtre Résultats

Remarquez que si une commande .execute_command échoue pour une raisonquelconque (exécutables non trouvés, ou bien résultat envoyé vers stderr),l'exécution de la commande est interrompue.

Exemple :

.execute_command(notepad, file1.txt, cmd_ShellExecute)

Macro abort_command

Cette macro stoppe l'exécution de la commande. Elle est disponible pourexécuter des commandes de génération uniquement, et peut être combinéeaux macros standard du langage de génération par template lorsque vousdéfinissez des commandes.

Exemple :

.if %_JAVAC%

.execute (%_JAVAC%,%FileName%)

.else

.abort_command

.endif

Macro change_dir

Cette macro change le répertoire courant. Elle est disponible pour exécuterdes commandes de génération uniquement, et peut être combinée aux macrosstandard du langage de génération par template lorsque vous définissez descommandes.

.change_dir '(' <chemin> ')'

Page 414: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

404 PowerAMC

Paramètre Type Description

<chemin> Template simple(séquencesd'échappementignorées)

Nouveau répertoire courant

Exemple :

.change_dir(C:\temp)

Macro create_path

Cette macro créé un chemin spécifié si ce dernier n'existe pas.

.create_path '(' <chemin> ')'

Paramètre Type Description

<chemin> Template simple(séquencesd'échappementignorées)

Chemin à créer

Exemple :

.create_path(C:\temp)

Macro log

Cette macro consigne un message dans la page Génération de la fenêtreRésultats, située dans la partie inférieure de la fenêtre principale. Elle estdisponible pour exécuter des commandes de génération uniquement, et peutêtre combinée aux macros standard du langage de génération par templatelorsque vous définissez des commandes.

.log <message>

Paramètre Type Description

<message> Template simple Message à consigner

Exemple :

.log undefined environment variable: JAVAC

Paramètre

Paramètre

Paramètre

Page 415: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 405

Macro warning

La macro warning est utilisée pour produire un avertissement lors de laconversion. Elle peut être utile pour afficher un message lorsqu'uneincohérence est détectée pendant que vous appliquez le template à un objetparticulier. Les avertissements n'interrompent pas la génération, etn'apparaissent pas non plus dans le fichier généré. Le contenu du messaged'avertissement est le template simple évalué, passé par paramètre.

Il apparaît dans la fenêtre Résultats (située dans la partie inférieure de lafenêtre principale) lors de la génération, est affichée dans le code dans lapage Aperçu de la feuille de propriétés de l'objet, si au moins une erreur a étérencontrée.

.warning <message>

Paramètre Type Description

<message> Template simple Message d'avertissement

Exemple :

.warning Les associations bidirectionnelles entreclasses internes ne sont pas prises en charge

Macro error

La macro error est similaire à la macro warning en ceci qu'elle n'apparaît pasdans le fichier généré. En revanche error stoppe la génération. Le messaged'erreur est le template spécifié converti pour l'objet actif. Il est affiché à lafois dans la page Aperçu de la feuille de propriétés de l'objet et dans lafenêtre Résultats.

.error <message>

Paramètre Type Description

<message> Template simple Message d'erreur

Exemple :

.error aucune valeur initiale fournie pour l'attribut%Code% de la classe %Parent.Code%

Paramètre

Paramètre

Page 416: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

406 PowerAMC

Commentaire et macro //

Le commentaire et la macro // sont utiles pour insérer des commentaires dansun template. Les lignes qui commencent par .// ou par .comment sontignorées lors de la génération.

Exemple :

.// Ceci est un commentaire utilisateur

Définition de blocs conditionnels

Les blocs conditionnels peuvent être utilisés pour spécifier différentstemplates en fonction de la valeur d'une variable.

{syntax 1}: '[' <variable> '?' <template-simple> [':'<template-simple>] ']'

{syntax 2}: '[' <texte> <variable> <texte> ']'

Syntaxe 1 est similaire à C et aux expressions ternaires Java. Si la valeur dela variable est false, null, ou la chaîne null, le second template, s'il estspécifié, est évalué. Dans le cas contraire, c'est le premier template qui estévalué.

Syntax 2 a une signification légèrement différente. Le template simple<texte><variable><texte> est converti si et uniquement si la valeur de lavariable n'est pas la chaîne null.

Exemple : déclaration d'attribut dans Java :

%Visibility% %DataType% %Code% [= %InitialValue%]

Définition de messages d'erreur

Les messages d'erreur interrompent la génération du fichier dans lequel deserreurs ont été trouvées. Ces erreurs sont affichées dans la page Aperçu de lafeuille de propriétés de l'objet correspondant.

Les messages d'erreur ont le format suivant :

Page 417: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 407

Vous pouvez rencontrer les types d'erreur suivants :

♦ Erreurs de syntaxe

♦ Erreurs de conversion

Erreurs de syntaxe

Vous pouvez rencontrer les erreurs de syntaxe suivantes :

Message d'erreur Description et correction

Erreur de syntaxe dans la condition Erreur de syntaxe dans une expressionbooléenne

.endif attendu Ajoutez un .endif

.else sans .if correspondant Ajoutez un .if au .else

.endif sans .if correspondant Ajoutez un .if au .endif

.next attendu Ajoutez un .next

.end%s attendu Ajoutez un .end%s (par exemple, .endunique,.endreplace, …)

.end%s sans .%s correspondant Ajoutez un .<macro> au .end<macro>

.next sans .foreach correspondant Ajoutez un .foreach au .next

Parenthèses manquantes ou nonappariées

Corrigez les éventuelles accolades nonappariées

Paramètre inattendus : <params-supplémentaires>

Supprimez les paramètres nécessaires

Macro inconnue La macro n'est pas valide

.execute_command [syntaxeincorrecte]

La syntaxe appropriée s'affiche dans la pageAperçu, ou bien dans la fenêtre Résultats :.execute_command(<exécutable>[,<arguments>[,{cmd_ShellExec|cmd_PipeOutput}]])

Change_dir [syntaxe incorrecte] La syntaxe doit être : .change_dir(<chemin>)

convert_name [syntaxe incorrecte] La syntaxe doit être : .convert_name(<nom>)

convert_code [syntaxe incorrecte] La syntaxe doit être : .convert_code(<code>)

set_object [syntaxe incorrecte] La syntaxe doit être :.set_object(<nom-var-locale>[,[<portée>.]<portée-objet>[,{new|update}]])

set_value [syntaxe incorrecte] La syntaxe doit être : .set_value(<nom-var-locale>,<template-simple>[,{new|update}])

Page 418: advanfr.pdf

Définition des concepts utilisés dans le langage de génération par template

408 PowerAMC

Message d'erreur Description et correction

execute_vbscript [syntaxeincorrecte]

La syntaxe doit être :.execute_vbscript(<fichier-script>[,<script-input_params>])

Erreurs de conversion

Les erreurs de conversion sont des erreurs d'évaluation sur une variablelorsque vous évaluez un template.

Vous pouvez rencontrer les erreurs de conversion suivantes :

Message d'erreur de conversion Description et correction

collection non résolue : <collection> Collection inconnue

membre non résolu : <membre> Membre inconnu

aucune portée externe Utilisation incorrecte du mot clé

objet null Se produit lors d'une tentative d'accès àun membre d'un objet null

variable objet attendue : <object> Se produit lorsqu'une chaîne est utiliséeà la place d'un objet

Erreur d'exécution VBScript Erreur de script VB

Blocage détecté Blocage dû à une boucle infinie

Page 419: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 409

Conseils et techniques de génération

Cette section fournit des informations supplémentaires relatives aumécanisme du langage de génération par template.

Partage de templates

Dans le mécanisme du langage de génération par template, vous pouvezpartager des conditions, des templates et des sous-templates afin de faciliterla maintenance du langage et le rendre plus lisible.

Partage de conditions

Un template peut contenir une expression de condition. Vous avez égalementla possibilité de créer des templates pour partager des expressions decondition longues et fastidieuses :

Nom de template Valeur de template

%ConditionVariable% .bool (condition)

Au lieu de répéter la condition dans d'autres templates, vous utilisezsimplement %ConditionVariable% dans la macro conditionnelle :

.if (%ConditionVariable%)

Le template %isInner% contient une condition qui renvoie true si leclassificateur est interne à un autre classificateur.

.bool (%ContainerClassifier%!=null)

Ce template est utilisé dans le template %QualifiedCode% utilisé pour définirle code qualifié du classificateur :

.if (%isInner%)

%ContainerClassifier.QualifiedCode%::%Code%

.else

%Code%

.endif

Exemple

Page 420: advanfr.pdf

Conseils et techniques de génération

410 PowerAMC

Utilisation des templates récursifs

Un template récursif est template qui est défini par rapport à lui-même.

Considérons trois X, Y et Z. X est interne à Y, et Y est interne à Z.

La variable %topContainerCode% est définie pour extraire la valeur duconteneur parent d'une classe.

La valeur du template est la suivante :

.if (%isInner%)

%ContainerClassifier.topContainerCode%

.else

%Code%

.endif

Si la classe est interne pour une autre classe, %topContainerCode% estappliqué à la classe conteneur de la classe courante(%ContainerClassifier.topContainerCode%).

Si la classe n'est pas une classe interne, le code de la classe est généré.

Utilisation des variables d'environnement

Dans le langage de génération par template, vous pouvez accéder auxvariables situées dans la boîte de dialogue Options générales (SélectionnezOutils→Options générales). Si la variable n'a pas été définie, une chaîne nullest renvoyée.

Utilisation de nouvelles lignes dans la chaîne d'en-tête et de fin

Les chaînes d'en-tête et de fin sont utiles car elles ne sont générées quelorsque nécessaire, cela est particulièrement utile lorsque vous utilisez denouvelles lignes '\n'. Elles sont ajoutées respectivement au début et à la fin ducode généré, la chaîne d'en-tête et la chaîne de fin n'apparaissant pas dans lecode généré.

Exemple

Page 421: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 411

Vous souhaitez générer le nom d'une classe et ses attributs sous le formatsuivant (une ligne vide entre les attributs et la classe) :

Attribute 1 attr1Attribute 2 attr2

Class

Vous pouvez insérer le séparateur "\n" après l'instruction .foreach pour vousassurer que chaque attribut s'affiche dans une ligne séparée. Vous pouvezégalement ajouter "\n\n " après l'instruction .endfor pour insérer une lignevide après la liste d'attributs et avant le mot "Class".

.foreach (Attribute) ("\n")Attribute %Code%.endfor ("\n\n")Class

Considérons une classe nommée Nurse, ayant pour code de classe Nurse, etdotée de deux attributs :

Attribut Type de données Valeur initiale

NurseName String __

NurseGender Char 'F'

Les templates suivants sont fournis à titre d'exemple, avec le texte générépour chacune d'entre eux, ainsi qu'une description de chaque résultat :

class "%Code%" { // Attributes .foreach_item(Attributes) %DataType% %Code% .if (%InitialValue%) = %InitialValue% .endif .next // Operations .foreach_item(Operations) %ReturnType% %Code%(...) .next}

class "Nurse" {

// Attributes String nurseName char nurseGender = 'F' // Operations}

Au-dessous du code de classe, le code est généré sur une ligne. Il s'agit d'unexemple d'une macro de bloc (.if, .endif macro).

Exemple

Exemplesupplémentaire

Template 1

Texte généré 1

Description 1

Page 422: advanfr.pdf

Conseils et techniques de génération

412 PowerAMC

class "%Code%" { // Attributes .foreach_item(Attributes) %DataType% %Code% .if (%InitialValue%) = %InitialValue% .endif .next(\n) // Operations .foreach_item(Operations) %ReturnType% %Code%(...) .next(\n)}

class "Nurse" {

// Attributes String nurseName

char nurseGender = 'F' // Operations}

String nurseName et char nurseGender se trouvent sur deux lignes distinctes

Dans Template 1, String nurseName et char nurseGender se trouvaient sur lamême ligne, alors que dans Template 2, l'ajout de \n à la fin de .next(\n) placeString nurseName et char nurseGender sur deux lignes distinctes.

En outre, // Operations est affichée dans le résultat et ce, même en l'absenced'opération (voir Description 3).

class "%Code%" { .foreach_item(Attributes, // Attributes\n,\n) %DataType% %Code% .if (%InitialValue%) = %InitialValue% .endif .next(\n) .foreach_item(Operations, // Operations\n,\n) %ReturnType% %Code%(...) .next(\n)}

class "Nurse" {// Attributes

String nurseName

char nurseGender = 'F'

}

L'espace entre .foreach_item(Attributes, et // Attributes\n,\n)n'est pas généré, comme indiqué dans le résultat suivant : class "Nurse" {//Attributes au lieu de …. { // Attributes

// Operations n'est pas affiché dans le résultat car il est placé dans la macro.foreach_item. Il est placé dans l'en-tête de la macro à cet effet.

Template 2(nouvelle ligne)

Texte généré 2

Description 2

Template 3 (blanc)

Texte généré 3

Description 3

Page 423: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 413

class "%Code%" {\n .foreach_item(Attributes," // Attributes\n",\n) %DataType% %Code%[ = %InitialValue%] .next(\n) .foreach_item(Operations," // Operations\n",\n) %ReturnType% %Code%(...) .next(\n)}

class "Nurse" {

// Attributes

String nurseName

char nurseGender = 'F'

}

Le caractères guillemet ("") dans " // Attributes\n" permet d'insérer un espacecomme indiqué dans le résultat : // Attributes

Nouvelle ligne précédant la macroLa nouvelle ligne qui précède immédiatement une macro est ignorée, demême que celle qui la suit, comme dans l'exemple suivant :

Jack.set_value(v, John)Paul

yields: JackPaul

instead of:Jack

Paul

Template 4 (blanc)

Texte généré 4

Description 4

Page 424: advanfr.pdf

Conseils et techniques de génération

414 PowerAMC

Utilisation du passage de paramètres

Vous pouvez passer des paramètres dans, hors ou dans/hors un template viades variables locales en tirant parti des portées de traduction. Vous pouvezaccéder à des paramètres avec la variable %@<number>%.

Templates de classe :

<show> template<<<Class "%Code%" attributes :// Public%publicAttributes%

// Protected%protectedAttributes%

// Private%privateAttributes%>>>

<publicAttributes> template<<<.foreach_item(Attributes) .if (%Visibility% == +) %DataType %Code% .endif.next(\n)>>>

<protectedAttributes> template<<<.foreach_item(Attributes) .if (%Visibility% == #) %DataType %Code% .endif.next(\n)>>>

<privateAttributes> template<<<.foreach_item(Attributes) .if (%Visibility% == -) %DataType %Code% .endif.next(\n)>>>

Exemple

Template 1

Template 2

Template 3

Template 4

Page 425: advanfr.pdf

Chapitre 7 Guide de référence de la génération

Documentation utilisateur avancée 415

Pour améliorer la lisibilité et rendre le code encore plus réutilisable, cesquatre templates peuvent être écrits dans deux templates à l'aide deparamètres:

<show> template<<<Class "%Code%" attributes :// Public%attributes(+)%

// Protected%attributes(#)%

// Private%attributes(-)%>>>

<attributs> template<<<.foreach_item(Attributes) .if (%Visibility% == %@1%) %DataType %Code% .endif.next(\n)>>>

Le premier paramètre dans cet exemple %attributes(+, ou #, ou -)% peut êtreaccessible via la variable %@1%, le second, s'il existe, est accessible via lavariable %@2% variable, etc.

Premier template

Second template

Description

Page 426: advanfr.pdf

Conseils et techniques de génération

416 PowerAMC

Page 427: advanfr.pdf

Documentation utilisateur avancée 417

C H A P I T R E 8

Métamodèle public PowerAMC

Ce chapitre décrit le contenu et l'utilisation du métamodèle publicPowerAMC.

Section Page

Qu'est-ce que le métamodèle public PowerAMC ? 418

Concepts relatifs au métamodèle 419

Notions de base relatives à la structure du métamodèle 422

Utilisation du métamodèle avec VBS 426

Utilisation du métamodèle à l'aide du langage de génération partemplate (GTL) 428

Utilisation du métamodèle pour comprendre le format de fichierXML de PowerAMC 432

Sujet

Sommaire

Page 428: advanfr.pdf

Qu'est-ce que le métamodèle public PowerAMC ?

418 PowerAMC

Qu'est-ce que le métamodèle publicPowerAMC ?

L'emploi d'un métamodèle est une extension logique du processusd'abstraction utilisé pour créer des objets de modèle. Un modèle objet est uneabstraction des données, et peut être décrit à l'aide de métadonnées. Unmétamodèle est une abstraction des métadonnées.

Les métamodèles décrivent de façon formelle les éléments du modèle, ainsique la syntaxe et la sémantique de la notation qui permet leur manipulation.Leur utilisation permet de rendre plus puissant, plus souple et plus versatileun logiciel car ils isolent l'application des changements intervenant dans lemodèle d'application. Par exemple, vous pouvez utiliser le métamodèle pourreprésenter le modèle objet d'un modèle objet, le modèle objet d'un modèledynamique, ou la grammaire d'une grammaire.

Le métamodèle public de PowerAMC est une abstraction des métadonnées dePowerAMC représentées dans un Modèle Orienté Objet (MOO).

Le métamodèle public de PowerAMC est divisé en packages contenant desclasses liées entre elles via des associations et des généralisations. Chaqueclasse est dotée d'un nom (nom public) et peut être décrite par des attributs ;elle peut assumer plusieurs rôles dans les associations avec d'autres classes.

Le métamodèle public de PowerAMC a pour but de :

♦ Faire en sorte que tout changement dans le codage et la conception soitreprésenté pleinement dans l'architecture du métamodèle et éviter desincohérences de codage

♦ Permettre aux utilisateurs d'avoir à la fois une vue d'ensemble et uneconnaissance approfondie des métadonnées PowerAMC

♦ Compléter le fichier d'aide Visual Basic afin de permettre auxutilisateurs de créer leurs propres scripts VB

♦ Aider les utilisateurs à utiliser le langage de génération par template(GTL)

♦ Permettre une meilleure compréhension et simplifier la modification desfichiers PowerAMC enregistrés au format XML

Définition dumétamodèle

MétamodèlePowerAMC

Pourquoi publier unmétamodèle ?

Page 429: advanfr.pdf

Chapitre 8 Métamodèle public PowerAMC

Documentation utilisateur avancée 419

Concepts relatifs au métamodèle

Le métamodèle public de PowerAMC prend en charge pleinement laméthode et le formalisme d'UML. Les sections suivantes récapitulentbrièvement les termes et concepts employés dans le cadre du métamodèle.

Noms publics

Chaque objet du métamodèle PowerAMC a un nom et un code quicorrespondent au nom public de l'objet. Le nom public d'un objet estidentificateur unique de cet objet dans la bibliothèque du modèle. Unebibliothèque de modèle correspond à un package visible dans le diagrammeModules du métamodèle, par exemple PdCommon. Le nom public necorrespond pas toujours au nom de l'objet dans l'interface de PowerAMC.

Les noms publics sont également utilisés dans les fichiers XML ainsi quedans le langage de génération par template (GTL) de PowerAMC.

Pour plus d'informations sur les fichiers XML, reportez-vous auchapitre Spécification du format de fichier PowerAMC.

Pour plus d'informations sur la génération de texte, reportez-vous auchapitre Guide de référence de la génération.

Classes

Les classes sont utilisées pour représenter les métadonnées de la façonsuivante :

♦ Classes abstraites : elles sont utilisées pour partager des attributs etcomportements. Elles ne sont pas visibles dans l'interface PowerAMC.Les classes pouvant être instanciées héritent des classes abstraites via desliens de généralisation. Par exemple, NamedObject est une classeabstraite, elle stocke les attributs standard tels que name, code, comment,annotation et description hérités par la plupart des objets de conceptionPowerAMC

♦ Classes instanciables/concrètes : elles correspondent aux objetsaffichés dans l'interface, elles sont dotées de leurs propres attributs telsque type ou persistance, et héritent des attributs et comportements desclasses abstraites via les liens de généralisation

Page 430: advanfr.pdf

Concepts relatifs au métamodèle

420 PowerAMC

Le métamodèle PowerAMC met en exergue les liens d'héritage entremétadonnées.

Les attributs sont des propriétés de classe qui peuvent être dérivés ou non.Les classes liées à d'autres classes via des liens de généralisation contiennentle plus souvent des attributs dérivés qui sont calculés à partir des attributs oudes collections de la classe parent. Les attributs non dérivés sont les attributspropres de la classe. Ces attributs sont stockés dans le modèle et enregistrésdans le fichier du modèle.

Ni les attributs dérivés, ni les attributs par le biais des associations navigablesne sont stockés dans le fichier du modèle.

Associations et collections

Les associations sont utilisées pour exprimer les connexions sémantiquesentre des classes appelées collections. Dans la feuille de propriétés d'uneassociation, les rôles transportent l'information relative à l'objet d'extrémitéde l'association. Dans le métamodèle PowerAMC, ce rôle a le même nomqu'une collection pour l'objet courant. Les objets PowerAMC sont liés àd'autres objets via des collections.

En règle générale, les associations n'ont qu'un seul rôle, ce rôle se trouve àl'opposé de la classe qui représente une collection. Dans l'exemple suivant,Identifier a une collection appelée Attributes :

Lorsque les associations ont deux rôles, les deux collections ne peuvent pasêtre enregistrées dans le fichier XML, seule la collection ayant un rôlenavigable sera enregistrée.

Pour plus d'informations sur les rôles navigables, reportez-vous à lasection XML et le métamodèle PowerAMC dans le chapitre Spécification duformat de fichier PowerAMC.

Parmi les associations, les compositions expriment une forte propriété desclasses enfant par les classes parent ; les enfant vivent et meurent avec lesparents. Si le parent est copié, l'enfant l'est également.

Attributs de classe

Composition

Page 431: advanfr.pdf

Chapitre 8 Métamodèle public PowerAMC

Documentation utilisateur avancée 421

Par exemple, dans le package PdCommon, diagramme Option Lists, la classeNamingConvention est associée avec la classe BaseModelOptions via troisassociations de composition : NameNamingConventions,CodeNamingConventions et NamingConventionsTemplate. Ces associationsde composition expriment le fait que la classe NamingConvention n'existeraitpas sans la classe BaseModelOptions.

Généralisations

Le métamodèle PowerAMC utilise des généralisations pour montrer les liensd'héritage entre une classe plus générale (le plus souvent une classeabstraite) et une classe plus spécifique (le plus souvent une classeinstanciable). La classe la plus spécifique hérite des attributs de la classe plusgénérique, ces attributs étant appelés attributs dérivés.

En partageant les attributs et comportements, les héritages améliorent lalisibilité du métamodèle.

Commentaires et notes sur les objets

La plupart des classes, des diagrammes et des packages sont dotés d'uncommentaire qui explique leur rôle dans le métamodèle.

Certains détails de mise en oeuvre interne sont également disponibles dans lapage Notes→Annotation de la feuille de propriétés des classes.

Page 432: advanfr.pdf

Notions de base relatives à la structure du métamodèle

422 PowerAMC

Notions de base relatives à la structure dumétamodèle

Le métamodèle PowerAMC est publié dans un Modèle Orienté Objet. Ilutilise le formalisme du diagramme de classes UML pour représenter lesmétadonnées PowerAMC.

Organisation générale

Lorsque vous ouvrez le métamodèle PowerAMC, le diagramme Moduless'affiche, et vous pouvez voir une série de packages liés à PdCommon. Cespackages représentent les différentes bibliothèques de PowerAMC, chaquebibliothèque (en dehors de PdCommon) équivaut à un type de modèle :

Nom du package Modèle correspondant

PdCDM Modèle Conceptuel de Données (MCD)

PdPDM Modèle Physique de Données (MPD)

PdOOM Modèle Orienté Objet( MOO)

PdBPM Modèle de Processus Métiers (MPM)

PdXSM Modèle XML

PdMTM Modèle de Traitements Merise (MTM)

PdFRM Modèle libre (MLB)

PdRMG Référentiel

PdWSP Espace de travail

Le package PdCommon ne correspond pas à un modèle particulier, ilrassemble tous les objets partagés entre modèles. Les règles de gestion, parexemple, sont définies dans ce package.

Il définit également les classes abstraites du modèle, par exemple BaseObjectest défini dans le diagramme Common Abstract Objects dans le packageObjects de PdCommon.

Pour plus d'informations sur les classes abstraites, reportez-vous à lasection Classes.

Les packages de bibliothèques sont liées à PdCommon par des liens degénéralisation indiquant que chaque modèle hérite des objets communs de labibliothèque PdCommon.

Page 433: advanfr.pdf

Chapitre 8 Métamodèle public PowerAMC

Documentation utilisateur avancée 423

Contenu de PdCommon

La bibliothèque PdCommon est organisée en sous-packages contenantdifférents diagrammes qui illustrent un certain aspect de la bibliothèque.

Sous-package Description

Features Toutes les fonctionnalités mises en oeuvre par les classesdans PdCommon. Par exemple, Report appartient àPdCommon car cette fonctionnalité est partagée par tous lesmodèles

Objects Les objets de conception partagés par plusieurs modèles

Symbols Représentation graphique d'objets de conception partagés

Contenu des autres packages de bibliothèque

Tous les autres packages de bibliothèque affichent des diagrammescorrespondant aux différents aspects du modèle.

Diagramme Description

Features Toutes les fonctionnalités mises en oeuvre par des classes dans labibliothèque courante. Par exemple, AbstractDataType est unefonctionnalité de PdPDM

Objects Objets de conception de la bibliothèque courante

Symbols Représentation graphique des objets de conception

Dans les packages PdOOM et PdPDM, les différents types de diagrammepris en charge dans PowerAMC s'affichent sous la forme de diagrammesdifférents dans le package.

Navigation dans le métamodèle

Vous pouvez utiliser l'interface graphique du MOO pour naviguer dans lastructure du métamodèle.

Les classes en vert sont des classes dont le comportement est expliqué dansle diagramme courant.

Les classes en mauve sont visibles pour vous aider à comprendre le contexte,mais ne sont pas expliquées dans le diagramme courant.

Code de couleurs

Page 434: advanfr.pdf

Notions de base relatives à la structure du métamodèle

424 PowerAMC

Dans l'exemple courant issu de Common Instantiable Objects dans le packageObjects de PdCommon, BusinessRule (couleur verte) est développé tandisque NamedObject et BaseModel sont utilisés pour exprimer les liensd'héritage et de composition à l'aide de classes abstraites.

Navigation à l'aide de l'interface

Vous pouvez utiliser l'Explorateur d'objets pour développer ou réduire lescatégories afin de comprendre la structure globale du métamodèle à partird'une arborescence. Vous pouvez également afficher des diagrammes etobserver la représentation graphique des métadonnées.

Les classes en mauve sont le plus souvent des raccourcis d'une classe existantdans un autre package. Le raccourci facilite la lecture du diagramme et lacompréhension des liens de généralisation entre les classes. Si vous souhaitezobtenir une explication relative à une classe mauve dans un diagramme,pointez sur cette classe, cliquez le bouton droit de la souris et sélectionnezOuvrir un diagramme associé pour afficher le diagramme dans lequel laclasse est définie.

Le diagramme affiche également la plupart des associations avec leurs rôlesce qui permet d'identifier des collections d'objets.

Pour plus d'informations sur les rôles d'association, reportez-vous à lasection Associations et collections.

Rôles d'association

Page 435: advanfr.pdf

Chapitre 8 Métamodèle public PowerAMC

Documentation utilisateur avancée 425

Navigation à l'aide de feuilles de propriétés d'objets

Vous pouvez utiliser l'onglet Dépendances dans la feuille de propriétés desclasses du métamodèle pour consulter les pages suivantes :

♦ Associations : vous pouvez personnaliser le filtre afin d'afficher le rôledes associations, vous obtenez ainsi la liste des collections de l'objetcourant

♦ Généralise : affiche une liste des liens de généralisation dans lesquellesl'objet courant est le parent. Cette liste permet d'afficher les enfants de laclasse courante. Les classes enfant héritent des attributs de la classeparent et n'affichent pas d'attribut dérivé

♦ Spécialise : affiche le parent de l'objet courant. La classe courante héritedes attributs de ce parent

♦ Raccourcis : affiche la liste des raccourcis créés pour l'objet courant

Vous pouvez utiliser l'onglet Associations dans les feuilles de propriétés desclasses de métamodèle pour obtenir la liste des associations migrées pour laclasse courante.

Page 436: advanfr.pdf

Utilisation du métamodèle avec VBS

426 PowerAMC

Utilisation du métamodèle avec VBSVous pouvez accéder aux objets internes de PowerAMC et les manipuler àl'aide de Visual Basic Scripting. Les scripts permettent d'accéder auxpropriétés, collections et méthodes d'objet et de les modifier en utilisant lenom public de ces objets.

Le métamodèle PowerAMC fournit des informations utiles relatives à cesobjets :

Information Description Exemple

Nom public Le nom et le code desobjets du métamodèlesont les noms publicsdes objets internes dePowerAMC

AssociationLinkSymbolClassMappingCubeDimensionAssociation

Collections d'objets Vous pouvez identifierles collections d'uneclasse en observant lesassociations liées à cetteclasse dans lediagramme. Le rôle dechaque association estle nom de la collection

Dans PdBPM, il existe uneassociation entre les classesMessageFormat etMessageFlow. Le nom publicde cette association est Format.Le rôle de cette association estUsedby, qui correspond à lacollection de messages de laclasse MessageFormat

Attributs d'objet Vous pouvez afficherles attributs d'une classeavec les attributs quecette classe hérite d'uneautre classe via desliens de généralisation

Dans PdCommon, dans lediagramme CommonInstantiable Objects, vouspouvez afficher les objetsBusinessRule,ExtendedDependency etFileObject avec leurs propresattributs, ainsi que les classesabstraites dont ils héritent lesattributs via des liens degénéralisation

Opérations d'objet Les opérations dans desclasses d'unmétamodèlecorrespondent auxméthodes objet utiliséesdans VBS

BaseModel contient l'opérationCompare qui peut être utiliséedans VBS

Page 437: advanfr.pdf

Chapitre 8 Métamodèle public PowerAMC

Documentation utilisateur avancée 427

Information Description Exemple

<<notScriptable>>stereotype

Objets qui ne prennentpas en charge les scriptsVB qui ont lestéréotype<<notScriptable>>

RepositoryGroup

Pour plus d'informations sur les noms publics, reportez-vous à lasection Noms publics.

Pour plus d'informations sur les généralisations, reportez-vous à lasection Généralisations.

Si vous avez besoin d'un supplément d'informations relatives à VBS, vouspouvez utiliser le fichier d'aide accessible via la boîte de dialogueEdition/Exécution d'un script. Ce fichier d'aide HTML est une autrereprésentation du métamodèle, conçue pour aider les utilisateurs VBS àidentifier les collections et attributs d'objets.

Pour plus d'informations sur VB Scripting, reportez-vous à la sectionAccès aux objets à l'aide de VBScript dans le manuel Guide desfonctionnalités générales.

Fichier d'aide surVBS

Page 438: advanfr.pdf

Utilisation du métamodèle à l'aide du langage de génération par template (GTL)

428 PowerAMC

Utilisation du métamodèle à l'aide du langage degénération par template (GTL)

Le GTL utilise des templates pour générer des fichiers. Un template est unélément de code défini sur une métaclasse PowerAMC définie qui hérite decette classe. Il peut être utilisé dans différents contextes pour la génération detexte et, éventuellement, de code.

Ces templates peuvent être considérés comme des extensions du métamodèlecar ils définissent les classes de métamodèle, ils constituent des typesd'attributs de métamodèle particuliers. L'utilisateur peut définir autant detemplates qu'il le souhaite pour une métaclasse donnée en utilisant la syntaxesuivante :

<metamodel-classname> / <template-name>

Les templates sont hérités par tous les descendants de la métaclasse pourlaquelle ils sont définis. Ce mécanisme est utile pour partager le code detemplate entre les métaclasses ayant un ancêtre commun. Par exemple, sivous définissez un template pour une classe abstraite telle que BaseObjects,toutes les classes liées via des liens de généralisation à cette classe héritent dece template.

Le GTL utilise des macros telles que foreach_item, pour permettre l'itérationdes collections d'objets. Ce template spécifié dans le bloc est converti surtous les objets contenus dans la collection spécifiée. Le métamodèle fournitdes informations très utiles concernant les collections de métaclasses surlesquelles vous définissez un template contenant une macro d'itération.

Héritage

Collections

Page 439: advanfr.pdf

Chapitre 8 Métamodèle public PowerAMC

Documentation utilisateur avancée 429

Attributs calculés

Les attributs calculés suivants sont des extensions de métamodèle spécifiquesau GTL :

Nom demétaclasse Nom d'attribut Type Description

PdCommon.BaseObject

isSelected boolean True si l'objetcorrespondant fait partiede la sélection dans laboîte de dialogue degénération, false dans lecas contraire

isShortcut boolean True si l'objet étaitaccessible via unraccourci, false dans le cascontraire

PdCommon.BaseModel

GenOptions struct Permet d'accéder auxoptions de générationdéfinies par l'utilisateur

PdOOM.Class

MinCardinality string

MaxCardinality string

SimpleTypeAttribute(XML-specific)

@<tag> (Java-specific) string Attribut étenduJavadoc@<tag> avecformatage supplémentaire

PdOOM.Interface

@<tag> (Java-specific) string Attribut étenduJavadoc@<tag> avecformatage supplémentaire

PdOOM.Attribute

MinMultiplicity string

MaxMultiplicity string

Overridden boolean

DataTypeModifierPrefix

string

DataTypeModifierSuffix

string

Page 440: advanfr.pdf

Utilisation du métamodèle à l'aide du langage de génération par template (GTL)

430 PowerAMC

Nom demétaclasse Nom d'attribut Type Description

@<tag> (Java-specific) string Attribut étenduJavadoc@<tag> avecformatage supplémentaire

PdOOM.Operation

DeclaringInterface object

GetSetAttribute object

Overridden boolean

ReturnTypeModifierPrefix

string

ReturnTypeModifierSuffix

string

@<tag> (Java-specific) string Attribut étenduJavadoc@<tag> formatagesupplémentaire

(particulièrement pour@throws, @exception,@params)

PdOOM.Parameter

DataTypeModifierPrefix

string

DataTypeModifierSuffix

string

PdOOM.Association

RoleAMinMultiplicity string

RoleAMaxMultiplicity string

RoleBMinMultiplicity string

RoleBMaxMultiplicity string

PdOOM.* ActualComment string Commentaire supprimé(avec /**, /*, */ et //retirés)

Page 441: advanfr.pdf

Chapitre 8 Métamodèle public PowerAMC

Documentation utilisateur avancée 431

Collections calculées

Les collections calculées sont des extensions de métamodèle spécifiques auGTL :

Nom de métaclasse Nom de collection Description

PdCommon.BaseModel Generated<metaclass-name>List

Collection de tous lesobjets du type<metaclass-name> quifont partie de lasélection dans la boîtede dialogue degénération

PdCommon.BaseClassifierMapping

SourceLinks

PdCommon.BaseAssociationMapping

SourceLinks

Page 442: advanfr.pdf

Utilisation du métamodèle pour comprendre le format de fichier XML de PowerAMC

432 PowerAMC

Utilisation du métamodèle pour comprendre leformat de fichier XML de PowerAMC

Les modèles PowerAMC sont composés d'objets dont les propriétés etinteractions sont expliquées dans le métamodèle public. Vous pouvez utiliserle métamodèle public pour mieux comprendre :

♦ Les noms d'objet dans les fichiers XML, ces noms correspondent auxnoms publics disponibles dans le métamodèle

♦ Les collections d'objets qui s'affichent sous la forme de rôlesd'association dans le métamodèle

Vous pouvez utiliser le métamodèle pour visualiser les éléments qui nes'affichent pas dans les fichiers XML :

♦ Les attributs dérivés peuvent être déduits du métamodèle lorsqu'il existeun lien de généralisation entre une classe parent et une classe enfant. Cesattributs ne s'affichent pas dans le code XML

♦ Les objets ayant le stéréotype <<internal>> correspondent auxfonctionnalités temporaires telles que CheckModelControler, qui nes'affiche pas dans le fichier XML

Pour plus d'informations sur l'utilisation du métamodèle public afin decomprendre le format de fichier XML, reportez-vous à la section XML et lemétamodèle PowerAMC dans le chapitre Spécification du format de fichierPowerAMC.

Page 443: advanfr.pdf

Documentation utilisateur avancée 433

C H A P I T R E 9

Spécification du format de fichierPowerAMC

Ce chapitre décrit le format de fichier utilisé pour enregistrer les modèlesPowerAMC.

Section

Format de fichier XML 434

Modification d'un fichier XML 442

Sujet

Sommaire

Page 444: advanfr.pdf

Format de fichier XML

434 PowerAMC

Format de fichier XMLTous les fichiers de modèle dans PowerAMC sont dotés d'un suffixe quicorrespond au module dans lequel ils sont enregistrées. Par exemple, unmodèle enregistré dans le module orienté objet a comme suffixe MOO. Outrele suffixe de nom de fichier, vous pouvez décider du format de sauvegarde devos modèles :

Format de fichier Permet de…

BIN (Binary) Disposer de fichiers moins volumineux et donc moinsgourmands en espace-disque, permettant également uneouverture et un enregistrement plus rapides dansPowerAMC

XML (ExtensibleMarkup Language)

Visualiser et modifier la structure et le contenu des objetsde modèle dans un éditeur de texte ou un éditeur XML

XML signifie Extensible Markup Language. Il s'agit d'un langage permettantde simplifier l'utilisation de documents au format SGML, ainsi que latransmission et le partage de ces documents sur le Web.

En outre, les fichiers XML de PowerAMC prennent en charge un DTD(Document Type Definition) pour chaque type de modèle. Le DTD permetd'utiliser un éditeur XML pour parcourir la structure hiérarchique des objetsdans le modèle. Les différents DTD sont disponibles dans le dossier \DTD durépertoire d'installation de PowerAMC.

Vous pouvez trouver plus d'informations concernant XML sur le sitesuivant :

http://www.xml.com

Structure et contenu des fichiers XML

Les sections suivantes décrivent la syntaxe et la structure XML dans lefichiers PowerAMC.

Balises XML

Les fichiers XML contiennent des objets, attributs et collections, le plussouvent déclarés à l'aide de balises begin et end ; les objets référencés n'ontqu'une seule balise pour le début et la fin, comme indiqué dans le tableau ci-après.

Editeurs de DTD etXML

Page 445: advanfr.pdf

Chapitre 9 Spécification du format de fichier PowerAMC

Documentation utilisateur avancée 435

La différence entre une balise de début (begin) et une balise de fin (end)réside dans le fait que la balise de fin comporte une barre oblique (/) après lecaractère <.

Les balises suivantes sont utilisées dans les fichiers XML de PowerAMC :

Balise dedébut Balise de fin Objet Description

<c:collection> </c:collection> Collection Collection d'objets liés à unautre objet. Vous pouvezutiliser le métamodèlePowerAMC pour visualiserles collections d'un objet.Par exemple, <c:Children>

<o:object> </o:object> Object Un objet que vous pouvezcréer dans PowerAMC. Parexemple, <o:Model>

<o:object/> — Referencedobject

Lorsqu'un objet est déjàdéfini dans le fichier, uneréférence est créée laprochaine fois que ce fichierest lu dans le fichier XML.Par exemple, <o:Class Ref="xyz"/>

<a:attribute> </a:attribute> Attribute Un objet est constitué d'unnombre d'attributs dontchacun peut être modifiéindépendamment. Parexemple, <a:ObjectID>

XML et le métamodèle PowerAMC

Les modèles PowerAMC sont composés d'objets dont les propriétés etinteractions sont expliquées dans le métamodèle public. Le métamodèleutilise le formalisme du MOO pour documenter les métadonnées PowerAMC(sous la forme de classes) et leurs liens (sous la forme d'associations et degénéralisations).

Vous pouvez utiliser le métamodèle public PowerAMC pour mieuxcomprendre le format des fichiers XML de PowerAMC.

En premier lieu, les noms d'objet, qui sont déclarés dans les balises <o:nomde l'objet> correspondent aux noms publics dans le métamodèle. Vouspouvez chercher un objet dans le métamodèle à l'aide du nom d'objet trouvédans le fichier XML.

Page 446: advanfr.pdf

Format de fichier XML

436 PowerAMC

Une fois vous que vous avez trouvé et localisé l'objet dans le métamodèle,vous pouvez lire les informations suivantes :

♦ Chaque objet PowerAMC peut comporter plusieurs collectionscorrespondant aux autres objets avec lesquels il doit interagir. Cescollections sont représentées par les associations existant entre objets.Les rôles des associations (agrégations et compositions incluses)correspondent aux collections d'un objet. Par exemple, chaque modèlePowerAMC contient une collection de domaines appelée Domains.

En règle générale, les associations n'ont qu'un seul rôle, le rôle s'affiche àl'opposé de la classe pour lequel il représente une collection. Toutefois,le métamodèle contient également des associations ayant deux rôles,auquel cas, les deux collections ne peuvent pas être enregistrées dans lefichier XML. Vous pouvez identifier la collection qui sera enregistrée àpartir de la feuille de propriétés de l'association : il s'agit du rôle pourlequel la case Navigable est cochée.

Dans l'exemple suivant, les association ont deux rôles qui signifient queClassifier a une collection Actors, et que Actor2 a une collectionImplementationClasses :

Page 447: advanfr.pdf

Chapitre 9 Spécification du format de fichier PowerAMC

Documentation utilisateur avancée 437

Si vous affichez la feuille de propriétés de l'association, vous pouvezvoir que la case Navigable est cochée pour le rôle ImplementationClass,ce qui signifie que seule la collection ImplementationClass seraenregistrée dans le fichier.

♦ Les attributs ayant le type de données IOBJECT sont des attributs dansle métamodèle alors qu'ils apparaissent sous forme de collectionscontenant un seul objet dans le fichier XML. Ce n'est pas le cas pourParent et Folder qui ne contiennent pas de collection.

Le métamodèle public PowerAMC est disponible dans le répertoire\Exemples.

Pour plus d'informations sur le métamodèle PowerAMC, reportez-vousau chapitre Métamodèle public PowerAMC.

Vous pouvez également utiliser le fichier d'aide doté du suffixe .chm fourniavec PowerAMC. Ce fichier est destiné à aider les utilisateurs qui souhaitentcréer des scripts Visual Basic car il fournit des informations utiles sur lespropriétés, collections et méthodes d'objets.

Page 448: advanfr.pdf

Format de fichier XML

438 PowerAMC

Pour plus d'informations sur la création de scripts Visual Basic pour lesobjets PowerAMC, reportez-vous au chapitre Manipulation des objets viaVBScript du manuel Guide des fonctionnalités générales.

Notions de base relatives aux format XML

Le format des fichiers XML reflète la façon dont les informations du modèlesont enregistrées : PowerAMC parcourt chaque objet pour enregistrer sadéfinition.

La définition d'un objet implique la définition de ses attributs et de sescollections. Ceci justifie le fait que PowerAMC vérifie chaque objet etanalyse les collections de cet objet pour définir chaque nouvel objet etcollection dans ces collections, et ainsi de suite, jusqu'à ce que le processustrouve les objets terminaux qui ne nécessitent pas d'être analysés plus avant.

Compte tenu du chevauchement des collections, le format des fichiers demodèle PowerAMC peut être comparé à une arborescence : il part d'un noeudracine (l'objet racine contenant toutes les collections de modèle) et cascadeau travers des collections. Cette analogie est utilisée par la plupart deséditeurs XML pour afficher la structure des fichiers XML.

Lorsqu'un objet est mentionné dans une collection, PowerAMC définit cetobjet à l'aide de la syntaxe <o:object Id="XYZ"> ou fait référence àcet objet à l'aide de la syntaxe <o:object Ref="XYZ"/>. Lesdéfinitions d'objet ne sont utilisées que dans les collections de composition(l'objet parent possède l'enfant dans l'association).

Dans ces deux cas, XYZ est un identificateur unique affecté automatiquementà un objet lorsqu'il est rencontré pour la première fois.

Etude de cas

Le modèle suivant contient deux classes et une association. Nous allonsexplorer le fichier XML correspondant à ce modèle.

Chevauchementdes collections

Définition d'objetou référence

Page 449: advanfr.pdf

Chapitre 9 Spécification du format de fichier PowerAMC

Documentation utilisateur avancée 439

Le fichier commence par plusieurs lignes qui spécifient des détails relatifs àXML et au modèle.

Le premier objet qui apparaît est la racine du modèle <o:RootObjectId="01">. RootObject est un conteneur de modèle qui est défini par défautlorsque vous créez et enregistrez un modèle. RootObject contient unecollection appelée Children qui est composée de modèles.

Dans notre exemple, Children ne contient qu'un objet de modèle qui estdéfini comme suit :

<o:Model Id="o2"> <a:ObjectID>3CEC45F3-A77D-11D5-BB88-

0008C7EA916D</a:ObjectID> <a:Name>ObjectOrientedModel_1</a:Name> <a:Code>OBJECTORIENTEDMODEL_1</a:Code> <a:CreationDate>1000309357</a:CreationDate> <a:Creator>arthur</a:Creator> <a:ModificationDate>1000312265</a:ModificationDate> <a:Modifier>arthur</a:Modifier> <a:ModelOptionsText>[ModelOptions]…

Sous la définition de l'objet modèle, vous pouvez voir la série d'attributsModelOptions. Remarquez que ModelOptions n'est pas limité aux optionsdéfinies dans la boîte de dialogue Options du modèle d'un modèle, maisrassemble toutes les propriétés enregistrées dans un modèle, notamment lesoptions relatives à la génération intermodèle.

Après ModelOptions, vous pouvez identifier la collection<c:ObjectLanguage>. Il s'agit du langage objet lié au modèle. La secondecollection du modèle est <c:ClassDiagrams>. Il s'agit de la collection desdiagrammes liés au modèle. Dans notre exemple, un seul diagramme estdéfini dans le paragraphe suivant :

<o:ClassDiagram Id="o4"> <a:ObjectID>3CEC45F6-A77D-11D5-BB88-

0008C7EA916D</a:ObjectID> <a:Name>ClassDiagram_1</a:Name> <a:Code>CLASSDIAGRAM_1</a:Code> <a:CreationDate>1000309357</a:CreationDate> <a:Creator>arthur</a:Creator> <a:ModificationDate>1000312265</a:ModificationDate> <a:Modifier>arthur</a:Modifier> <a:DisplayPreferences>…

Tout comme dans le cas des options de modèle, la définition ClassDiagramest suivie d'une série d'attributs de préférences d'affichage.

Page 450: advanfr.pdf

Format de fichier XML

440 PowerAMC

Dans la collection ClassDiagram se trouve une nouvelle collection appelée<c:Symbols>. Cette collection rassemble tous les symboles contenus dans lediagramme du modèle. Le premier objet à être défini dans la collectionSymbols est AssociationSymbol :

<o:AssociationSymbol Id="o5"> <a:CenterTextOffset>(1, 1)</a:CenterTextOffset> <a:SourceTextOffset>(-1615, 244)</a:SourceTextOffset> <a:DestinationTextOffset>(974, -2)</a:DestinationTextOffset> <a:Rect>((-6637,-4350), (7988,1950))</a:Rect> <a:ListOfPoints>((-6637,1950),(7988,-4350))</a:ListOfPoints> <a:ArrowStyle>8</a:ArrowStyle> <a:ShadowColor>13158600</a:ShadowColor> <a:FontList>DISPNAME 0 Arial,8,N

AssociationSymbol contient les collections <c:SourceSymbol> et<c:DestinationSymbol>. Dans ces deux collections, les symboles font l'objetde références mais ne sont pas définis, car ClassSymbol n'appartient pas auxcollections SourceSymbol et DestinationSymbol.

<c:SourceSymbol> <o:ClassSymbol Ref="o6"/> </c:SourceSymbol> <c:DestinationSymbol> <o:ClassSymbol Ref="o7"/> </c:DestinationSymbol>

La collection des symboles d'association est suivie par la collection<c:Symbols>. Cette collection contient la définition des deux symboles declasse.

<o:ClassSymbol Id="o6"> <a:CreationDate>1012204025</a:CreationDate> <a:ModificationDate>1012204025</a:ModificationDate> <a:Rect>((-18621,6601), (-11229,12675))</a:Rect> <a:FillColor>16777215</a:FillColor> <a:ShadowColor>12632256</a:ShadowColor> <a:FontList>ClassStereotype 0 arial,8,N

La collection <c:Classes> suit la collection <c:Symbols>. Dans cettecollection, les deux classes sont définies avec leurs collections d'attributs.

<o:Class Id="o10"> <a:ObjectID>10929C96-8204-4CEE-911#-

E6F7190D823C</a:ObjectID> <a:Name>Order</a:Name> <a:Code>Order</a:Code> <a:CreationDate>1012204026</a:CreationDate> <a:Creator>arthur</a:Creator> <a:ModificationDate>1012204064</a:ModificationDate> <a:Modifier>arthur</a:Modifier> <c:Attributes> <o:Attribute Id="o14">

Page 451: advanfr.pdf

Chapitre 9 Spécification du format de fichier PowerAMC

Documentation utilisateur avancée 441

L'attribut est un objet terminal : aucune ramification supplémentaire n'estnécessaire pour en détailler la définition.

Chaque collection appartenant à un objet analysé est développée et analysée,y compris les collections contenues dans d'autres collections.

Une fois tous les objets et toutes les collections parcourus, les balisessuivantes s'affichent :

</o:RootObject></Model>

Page 452: advanfr.pdf

Modification d'un fichier XML

442 PowerAMC

Modification d'un fichier XMLLorsque vous devez modifier un modèle à l'aide de son fichier XML, vousdevez y ajouter ou supprimer des objets qu'avec précautions. En raison de lastructure du fichier qui comporte des chevauchements, une seule erreur desyntaxe mineure peut rendre le fichier inutilisable.

Si vous créez un objet dans un fichier XML en copiant un objet existant dumême type, assurez-vous de supprimer l'OID dupliqué. Il est préférable desupprimer un OID que d'essayer d'en créer un nouveau car ce nouvel IDrisque de ne pas être unique dans le modèle. PowerAMC va automatiquementaffecter un OID au nouvel objet dès que vous ouvrirez le modèle.

Vous pouvez modifier un fichier XML à l'aide de :

♦ Un éditeur de texte standard

♦ Un éditeur XML

Vous pouvez visualiser un fichier XML à l'aide d'une visionneuse XML.

Modification d'un fichier XML à l'aide d'un éditeur standard

Si vous utilisez un éditeur standard, vous pouvez personnaliser la mise enforme XML comme défini dans la section Modification d'un fichier XML.

Pour modifier le contenu d'un fichier XML :

1 Ouvrez le fichier dans un éditeur de texte.

OID

Page 453: advanfr.pdf

Chapitre 9 Spécification du format de fichier PowerAMC

Documentation utilisateur avancée 443

Le contenu du fichier XML s'affiche. Les objets sont triés en fonctiondes collections auxquelles ils appartiennent.

2 Parcourez le fichier ou utilisez l'outil de recherche pour trouver un nomd'objet dans le modèle.

3 Vous pouvez modifier directement les propriétés d'un objet en prenantsoin de ne pas modifier les balises de début et de fin de la définition del'objet (informations contenues entre les symboles < >).

Page 454: advanfr.pdf

Modification d'un fichier XML

444 PowerAMC

4 Enregistrez et fermez le fichier.

Si vous ouvrez le fichier dans PowerAMC, l'objet s'affiche avec lenouveau nom.

Modification d'un fichier XML à l'aide d'un éditeur XML

Vous pouvez modifier le fichier dans un éditeur XML. Dans cette section,l'éditeur XML utilisé est Microsoft Bloc-notes XML.

Pour visualiser le contenu d'un fichier XML dans un éditeur XML :

1 Ouvrez le fichier dans un éditeur XML.

Le fichier XML s'affiche. Les objets sont affichés en fonction de lahiérarchie qui reflète la façon dont ils sont organisés dans le modèle.

2 Développez ou réduisez les noeuds situés à gauche des objets.

3 Vous pouvez modifier une valeur en saisissant directement dans lechamp correspondant du volet Valeurs.

Page 455: advanfr.pdf

Chapitre 9 Spécification du format de fichier PowerAMC

Documentation utilisateur avancée 445

Dans l'exemple suivant, les propriétés de modèle ont été modifiées enajoutant NEW au nom du modèle :

4 Une fois les modifications terminées, enregistrez puis fermez le fichier.

Visualisation d'un fichier XML à l'aide d'une visionneuse XML

Vous pouvez visualiser un fichier XML avec une visionneuse XML, parexemple à l'aide d'un explorateur Internet compatible XML.

Vous ne pouvez pas modifier le fichier dans une visionneuse XML, maisseulement consulter son contenu.

Pour visualiser le contenu d'un fichier XML à l'aide d'unevisionneuse XML :

1 Ouvrez le fichier dans l'explorateur.

Page 456: advanfr.pdf

Modification d'un fichier XML

446 PowerAMC

Le contenu du fichier XML s'affiche. Les objets sont affichés en fonctionde la hiérarchie qui reflète la façon dont ils sont organisés dans lemodèle.

2 Développez ou réduisez les noeuds situés à gauche des objets pourparcourir la hiérarchie des objets.

3 Refermez l'explorateur une fois que vous avez terminé.

Page 457: advanfr.pdf

Index

Documentation utilisateur avancée 447

.

.EXA fichier 349

.syntaxe de format Z 38

Aabort_command (macro) 403Abstract Data Type 136Abstract Data Type Attribute 138activer la sélection pour la génération

de fichiers 203activer le suivi 286, 315, 332Add 76AddColIndex 105AddColnChck 95, 98AdditionalDataTypes 288AddJoin 163AddQuote 65AddTableCheck 83ADTComment 138AfterCreate 76, 170AfterDrop 76AfterModify 76AKeyComment 116AllowedADT 86, 138, 139, 181AllowNullableColn 114AltEnableAddColnChk 90AlterFooter 72AlterHeader 72AlterTableFooter 83AlterTableHeader 83AmcdDataType 177apostrophe variable par défaut 81association 420attribut dérivé 419attribut étendu 13, 201, 218

créer 219importer depuis des versions antérieures 348type 218, 219

BBasicDataTypes 288BeforeCreate 76BeforeCreateDatabase 131BeforeDrop 76BeforeModify 76Bind 95, 134, 154, 156BindDefault 135bitmap join index 163bloc 372bloc (macro) 385bloc conditionnel 406block (macro) 392BlockComment 63bool (macro) 400boucle (macro) 384, 385

CCanCreate gestionnaire d'événement 248caractère de fin 61caractère de fin de bloc 61caractères illégaux (langage objet) 289CaseSensitivityUsingQuote 64catégorie 3

ODBC 6Script 6

catégorie de script 5, 60catégorie Generation

(définition étendue de modèle) 359change_dir (macro) 403CharFunc 73CheckNull 90CheckOnCommit 120Choreography

catégorie (langage de processus) 327cible de génération 355classe

abstraite 419attribute 419concrète 419métamodèle 419

Page 458: advanfr.pdf

448 PowerAMC

CloseDatabase 131Cluster 105codage 303collection 420

chevauchement 438composition 420membre 372, 375navigable 420portée 377

collection étendue 234créer 235nom inverse 234propriétés 234stéréotype cible 234type de cible 234

ColnDefaultName 143ColnRuleName 143colonne variable par défaut 81Column 87ColumnComment 96commande 361Commands

catégorie (langage de processus) 317catégorie (langage objet) 291catégorie (langage XML) 333

commentaire & // (macro) 406Commit 74composition 420ConceptualDataTypes 288conseils et techniques 409Constants catégorie (langage objet) 289ConstName 82, 95, 111, 115, 120convention de dénomination de code 202convert_code (macro) 394convert_name (macro) 393ConvertFunc 74CopyObject 245correction automatique 222, 225Count 375Create 75create_path (macro) 404CreateBeforeKey 108CreateBody 170CreateDefault 135CreateFunc 147critère 201, 213

ajouter un attribut étendu 219Criteria catégorie (langage objet) 301CustomFunc 148CustomProc 147

DData type (catégorie) 11, 177

AllowedADT 181AmcdDataType 177HostDataType 181LogPhysADTType 180OdbcPhysDataType 179PhysDataType 178PhysDttpSize 178PhysLogADTType 180PhysOdbcDataType 180

Data types catégorie (langage objet) 288Database 130Datahandling catégorie

(langage de processus) 327DateFunc 73DB Package 168DB Package Cursor 172DB Package Exception 173DB Package Parameter 173DB Package Pragma 174DB Package Procedure 170DB Package Type 172DB Package Variable 171DBProcedureBody 171DclDelIntegrity 121DclUpdIntegrity 120Default 159DefaultDataType 288DefaultTriggerName 151DefIndexColumn 106DefIndexType 106DefineColnCheck 96DefineJoin 121DefineTableCheck 83définition étendue de modèle 341, 342

catégorie 343, 354catégorie Generation 359cibles de génération 355commande 360compléter la génération de langage 356compléter la génération principale 366créer 343créer une commande 361créer une tâche 362éditeur 353entrée 343exporter 351famille 354

Page 459: advanfr.pdf

Documentation utilisateur avancée 449

définition étendue de modèle (suite)génération de langage 354générer 366générer pour une cible séparée 366générique 343, 344importer 346, 350mode de suivi 354modifier 342options 363paramètres de génération 342profil 342propriétés 354rattachement automatique 354sous-famille 354spécifique 343, 346tâche 360

DefOptions 77delete (macro) 391délimiteur 62dépendance 425Domain 132Drop 76DropColnChck 96DropColnComp 97DropFunc 148DropTableCheck 84

Eélément de template de trigger 4Enable 75EnableAdtOnColn 137EnableAdtOnDomn 137EnableAlias 167EnableAscDesc 103EnableBindRule 91, 133EnableChangeJoinOrder 118EnableCheck 57, 134EnableCluster 103EnableComputedColn 91EnableConstname 58EnableDefault 91, 133EnableDtbsPrefix 65EnablefKeyName 118EnableFunc 146EnableFunction 104EnableIdentity 92EnableIntegrity 57EnableManyDatabases 132

EnableMultiCheck 58EnableMultiFile 68EnableMultiTrigger 150EnableNotNullWithDflt 95EnableNull 94EnableOption 175EnableOwner 104, 134, 147, 151, 166EnableOwnerPrefix 65en-tête chaîne 410entrée 3erreur de script (VB) 228error (macro) 405étiquette 245Event 153EventDelimiter 153Events catégorie (langage objet) 290exclure une métaclasse 205execute_command (macro) 402execute_vbscript (macro) 402exporter définition étendue de modèle 351Extended attributes

(catégorie de langage objet) 302extension 21, 29

Ffamille 5, 286, 315, 332, 354fichier généré 201, 229, 370

créer 231File (catégorie)

AlterFooter 72AlterHeader 72EnableMultiFile 68Footer 67Header 67ScriptExt 68StartCommand 69TableExt 69TrgFooter 72TrgHeader 71TrgUsage1 70TrgUsage2 70TriggerExt 70Usage1 69Usage2 69

fin chaîne 410First 375FKAutoIndex 119FKeyComment 122

Page 460: advanfr.pdf

450 PowerAMC

Footer 67foreach_item (macro) 395foreach_line (macro) 397foreach_part (macro) 398Format (catégorie de SGBD) 63format de date 66format de fichier 432, 433

balises XML 434bin 434collections superposée 438définition d'objet 438DTD 434éditeur XML 434étude de cas 438métamodèle 435modification à l'aide de la

visionneuse XML 445modifier 442modifier dans un éditeur standard 442modifier dans un éditeur XML 444OID 442référence d'objet 438structure 434XML 434

format d'heure 66FunctionComment 149

GGeneral 6General (catégorie) 5, 57

EnableCheck 57EnableConstname 58EnableIntegrity 57EnableMultiCheck 58SqlSupport 58UniqConstName 59

généralisation 421Generated Files (catégorie de langage objet) 303Generation

catégorie (langage de processus) 316catégorie (langage XML) 333

Generation (catégorie de langage objet) 291générer 18

post-génération 358pré-génération 358

générer pour une définition étendue de modèle 366

gestionnaire d'événement 247ajouter à un stéréotype 250ajouter à une métaclasse 250CanCreate 248Initialize 249propriétés 247script 247variable globale 247

GetSource 245GetTarget 245global script 222, 227GrantOption 158, 159Group 153GroupFunc 73GTL 21, 291, 316, 333, 367, 428

attributs calculés 429bloc conditionnel 406chaîne de fin 410chaîne d'en-tête 410collections calculées 431conseils et techniques 409conversion des raccourcis 380définition 368héritage 369, 381message d'erreur 406partager des templates 409passage de paramètre 414polymorphisme 369, 382portée de la conversion 379redéfinir un template 381séquences d'échappement 383surcharge de template 383template 370templates récursifs 410variables 372variables d'environnement 410

GTL (macro)s 384

HHeader 67héritage 369, 381, 421HostDataType 181

Iicône

attacher à un stéréotype 209

Page 461: advanfr.pdf

Documentation utilisateur avancée 451

if (macro) 386IllegalChar 63Implementation catégorie

(langage de processus) 325importer

attributs étendus 348définition étendue de modèle 350fichier .EXA 349

Index (catégorie) 101Footer 106Header 106

index basé sur une fonction 33IndexComment 107IndexType 106Initialize gestionnaire d'événement 249Install 137instruction SQL 36

format de variable 41mots réservés 36template de nom de contrainte 43variables 38

IsEmpty 375

Jjoin index

EnableJidxColn 163EnableOwner 163

Join Index (catégorie) 161Footer 163Header 163

JoinIndexComment 163

KKey 112

Llangage de génération par template (GTL) 367langage de processus 311, 312

activer le suivi 315catégorie 312catégorie Choreography 327catégorie Commands 317catégorie Datahandling 327catégorie Generation 316

langage de processus (suite)catégorie Implementation 325catégorie Options 322catégorie Profile 328, 339Catégorie Settings 325catégorie Tasks 318éditeur 314entrée 312famille 315modifier 312propriétés 315sous-famille 315

langage objet 283, 284activer le suivi 286catégorie 284catégorie Commands 291catégorie Constants 289catégorie Criteria 301catégorie Data types 288catégorie Events 290catégorie Extended attributes 302catégorie Generated Files 303catégorie Generation 291catégorie Namings 289catégorie Options 297catégorie Profile 300Catégorie Settings 288catégorie Stereotype 301catégorie Tasks 293catégorie Templates 308éditeur 285entrée 284famille 286modifier 284propriétés 286rôle d'association 310sous-famille 286

langage XML 329, 330tasks category 335activer le suivi 332catégorie 330catégorie Commands 333catégorie Generation 333catégorie Options 336Catégorie Settings 339éditeur 331entrée 330famille 332modifier 330propriétés 332

Page 462: advanfr.pdf

452 PowerAMC

langage XML (suite)sous-famille 332types de données 339

LineComment 63ListOperators 74log (macro) 404LogPhysADTType 180lowercase (macro) 389LowerCaseOnly 64

Mmacro 384

abort_command 403bloc 384, 385block 392bool 400boucle 384, 385change_dir 403commentaire & // 406convert_code 394convert_name 393create_path 404delete 391error 405execute_command 402execute_vbscript 402foreach_item 395foreach_line 397foreach_part 398if 386log 404lowercase 389replace 390set_object 400set_value 401simple 384, 385unique 388uppercase 389vbscript 387warning 405

MandIndexType 105MaxColIndex 105MaxConstLen 86, 99, 115, 119, 175MaxDefaultLen 143MaxFuncLen 147Maxlen 75, 161, 167MaxScriptLen 65

menu 252contextuel 252créer un menu contextuel 254créer un menu principal 254emplacement 253menu page 253outil Ajouter un séparateur 253outil Ajouter un sous-menu 253outil Ajouter une commande 253outil Créer une commande 253principal 252propriétés 253xml page 253

message d'erreur 406erreur de conversion 408syntaxe 407

métaclasse 202activer la sélection pour la génération de

fichiers 203ajouter un attribut étendu 219convention de dénomination de code 202exclure d'un modèle 205utiliser un stéréotype comme métaclasse 208

métamodèle 417association 420attributs calculés 429classes 419code de couleur 423collection 420collections calculées 431concepts 419définition 418fonctionnalités 423format de fichier XML 432naviguer 423noms publics 419objets 423packages 422PdCommon 422, 423PowerAMC 418structure 422symboles 423utilisation avec VBS 426utiliser avec GTL 428

méthode 237créer 238propriétés 237script 237type 237variables globale 237

Page 463: advanfr.pdf

Documentation utilisateur avancée 453

méthode (suite)VBS 238

ModifiableAttributes 79modifier

définition étendue de modèle 342langage XML 330SGBD 2

Modify instruction 20ModifyColnComp 99ModifyColnDflt 97ModifyColnNull 99ModifyColumn 97mot clé 72mot réservé 36

NNamings catégorie (langage objet) 289nom par défaut 211nom public 419NumberFunc 73

OObjects (catégorie de SGBD) Default 159Objects (catégorie) 9, 75

Abstract Data Type 136Abstract Data Type Attribute 138Add 76Column 87Create 75Database 130DB Package 168DB Package Cursor 172DB Package Exception 173DB Package Parameter 173DB Package Pragma 174DB Package Procedure 170DB Package Type 172DB Package Variable 171DefOptions 77Domain 132Drop 76Enable 75Group 153index 101Join Index 161Key 112

Objects (catégorie) (suite)Maxlen 75ModifiableAttributes 79permission 158Pkey 109Privilege 157Procedure 145Qualifier 164Reference 117ReversedStatements 79Role 155Rule 142Sequence 164SqlAttrQuery 78SqlFragQuery 78SqlListQuery 77SqlOptsQuery 78Storage 128Synonym 166Table 79Tablespace 126trigger 149User 140View 123

objetdéfinition 438membre 372, 374portée 372, 377référence 438

objet transformation interne 243ODBC

génération 25requête 20requête de reverse engineering étendue 29reverse engineering 25reverse engineering à l'aide des qualifiants 35reverse engineering d'index basés sur une

fonction 33reverse engineering d'options physiques 31SqlAttrQuery 25SqlChckQuery 25SqlListChildrenQuery 25SqlListQuery 25SqlOptsQuery 25SqlPermQuery 25SqlSysIndexQuery 25

ODBC (catégorie) 5, 60OdbcPhysDataType 179OID 442OpenDatabase 131

Page 464: advanfr.pdf

454 PowerAMC

opérateur 374, 375, 376option physique 47

attributs étendus 48composite 53liste de valeurs 52répéter 55sans nom 51spécifiée par une valeur 49storage 52tablespace 52valeur par défaut 51variable 48

Optionscatégorie (langage de processus) 322catégorie (langage objet) 297catégorie (langage XML) 336

OtherFunc 74outil personnalisé par stéréotype 210ouvrir d'un diagramme associé 424

PParameterTypes 171, 172paramètre passer 414partager un template 409PdCommon 423Permission 82, 89, 124, 146permission (object) 158PhysDataType 178PhysDttpSize 178PhysLogADTType 180PhysOdbcDataType 180PkAutoIndex 110Pkey 109PKeyComment 111polymorphisme 369, 382portée 376portée de la conversion 379portée externe 376post-génération 358pré-génération 358Privilege 157Procedure 145ProcedureComment 149profil 198

ajouter une métaclasse 202attribut étendu 201, 218Category (langage de processus) 328, 339collection étendue 234

profil (suite)créer 358créer un fichier généré 231créer un template 229critères 201, 213étude de cas 256extension de métaclasse 201fichier généré 229fichiers générés & templates 201gestionnaire d'événement 247héritage 199menu 252méthode 237niveau d'extension 199stéréotype 201, 206symbole et outil personnalisés 201symbole personnalisé 215template 229transformation 11, 241, 300, 357vérification personnalisée 201, 221

profile transformation 328, 339Profile

catégorie (langage objet) 300catégorie (SGBD) 5, 12

Qqualifiant 35Qualifier 164Quote 62

Rraccourci conversion dans le GTL 380rattachement automatique 354redéfinir 381Reference 117Remove 138Rename 83, 99replace (macro) 390requête étendue 29ReservedDefault 72ReservedWord 72reverse engineering 18

index basés sur une fonction 33options physiques 31qualifiants 35

ReversedStatements 24, 79

Page 465: advanfr.pdf

Documentation utilisateur avancée 455

RevokeOption 158, 159Role 155rôle d'association 310Rule 142RuleComment 145

Sscript variables globales 227Script (catégorie) 6script (reverse engineering) 24script de vérification 222script helper methods 245ScriptExt 68Sequence 164séquence d'échappement 383SequenceComment 166set_object (macro) 400set_value (macro) 401SetSource 245Settings

catégorie (langage de processus) 325catégorie (langage XML) 339

Settings (catégorie de langage objet) 288SGBD 1

attributs étendus 13catégorie 3, 5catégorie Data type 11catégorie General 6, 57catégorie Objects 9, 75catégorie ODBC 6, 60catégorie Profile 12catégorie Script 6, 60catégorie SQL 8, 61éditeur 4entrée 3famille 5génération 18instruction 18, 19modifier 2nom de fichier 5présentation 2propriétés 5requête 18, 19reverse engineering 18

simple (macro) 384, 385sous-famille 286, 315, 332, 354SQL (catégorie) 8, 61

BlockComment 63

SQL (catégorie) (suite)caractère de fin 61caractère de fin de bloc 61délimiteur 62Format 63LineComment 63Quote 62SqlContinue 63

SqlAkeyIndex 116SqlAttrQuery 25, 78SqlChckQuery 25, 84, 100SqlContinue 63SqlFragQuery 78SqlListChildrenQuery 25, 122, 155, 157SqlListDefaultQuery 135SqlListQuery 25, 77SqlListRefrTables 85SqlOptsQuery 25, 78SqlPermQuery 25, 84, 100, 125, 141, 148, 155,

157SqlSupport 58SqlSysIndexQuery 25, 107StartCommand 69Stereotype catégorie (langage objet) 301stéréotype 206

affecter un outil 210ajouter un attribut étendu 219attacher une icône 209créer 207nom par défaut 211propriétés 206utiliser comme métaclasse 208

storage 128option physique 52

StorageComment 129suppression d'une commande 291, 317, 333surcharge 383symbole personnalisé 201, 215

créer 216format 215

Synonym 166syntaxe 36System 158

Ttable

Footer 86Header 86

Page 466: advanfr.pdf

456 PowerAMC

Table 79TableComment 82TableExt 69tablespace option physique 52Tablespace 126TablespaceComment 128tâche 362Tasks

catégorie (langage de processus) 318catégorie (langage objet) 293

tasks category (langage XML) 335template 201, 229, 370

attribut étendu 219convertir les raccourcis 380créer 229nom de contrainte 43partager 409partager des conditions 409portée de la conversion 379récursif 410redéfinir 381surcharger 383trigger 4

Templates (catégorie de langage objet) 308Time 153transformation 241

contrôles de script 243créer 243créer un profil 358étiquette permettant d'identifier l'origine 245objet transformation interne 243post-génération 358pré-génération 358profil 357profile 11, 300, 328, 339propriétés 241propriétés d'un profil 357script 241script helper methods 245variable 241VBS 243

TrgFooter 72TrgHeader 71TrgUsage1 70TrgUsage2 70Trigger 149TriggerComment 153TriggerExt 70types de données 339

UUddtComment 135UddtDefaultName 144UddtRuleName 144UML profil 198Unbind 101, 135, 154, 156, 161UniqConstaintName 85UniqConstAutoIndex 114UniqConstName 59UniqInTable 115UniqName 108unique (macro) 388uppercase (macro) 389UpperCaseOnly 64Usage1 69Usage2 69UseBlockTerm 62UseErrorMsgTable 151UseErrorMsgText 152User 140UserTypeName 134UseSpFornKey 122UseSpPrimKey 110utiliser comme métaclasse 208

Vvariable 3, 38, 182

globale 227variable (GTL) 372

bloc 372environnement 410format 377globale 376locale 375membre de collection 375membre d'objet 374membre-collection 372membre-objet 372portée de la collection 377portée de l'objet 377portée externe 376portée-objet 372variable-globale 372variable-locale 372

variable (SGBD)ASE & SQL Server 190attribut de type de données abstrait 189clé 193

Page 467: advanfr.pdf

Documentation utilisateur avancée 457

variable (SGBD) (suite)colonne 188colonne de référence 193colonne d'index 191domaine 189format 41génération 182Index 190Join Index 191métadonnées 185options physiques 48procédure 182, 195référence 191règles 189reverse engineering 183sécurité de base de données 184Sequence 190synchronisation de base de données 184table 186trigger 182triggers 194type de données abstraits 188vérifications sur les domaines et sur les

colonnes 187vues 194

variable locale 375variable par défaut apostrophes 81variables de format 377VBS 426vbscript (macro) 387vérification personnalisée 201, 221

définir le script global 227définir un script 223définir une correction automatique 225dépannage 228exécuter 228propriétés 222variables globales 227

View 123View (catégorie)

Footer 124Header 124

ViewCheck 126ViewComment 125ViewStyle 126

Wwarning (macro) 405

XXML

balises 434format de fichier 432, 433

Page 468: advanfr.pdf

458 PowerAMC