advanfr.pdf
TRANSCRIPT
Sybase®
PowerAMC™
Documentation utilisateuravancée
Version 10.0DC20013-01-1000-01
Dernière révision : Janvier 2004
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.
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
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
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
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
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
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
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
x PowerAMC
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
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 ?
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
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
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
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
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
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
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
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
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
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
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
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.
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é.
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.
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
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
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
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
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)
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
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
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.
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.
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.
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.
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
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
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
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
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
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.
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.
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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).
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
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
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
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
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
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.
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
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
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
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.
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.
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
—
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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.
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
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
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 —
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.
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
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
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
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
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
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
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
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
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='%SCHEMA%' ANDCOL1.TABLE_NAME='%TABLE%' AND COL2.OWNER='%POWNER%' ANDCOL2.TABLE_NAME='%PARENT%' AND COL1.CONSTRAINT_NAME='%FKCONSTRAINT%' ANDCOL2.CONSTRAINT_NAME='%PKCONSTRAINT%'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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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.
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
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
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
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.
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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%
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
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
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
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]
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.
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
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
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
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%
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%)
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
Commandes pour tous les objets
176 PowerAMC
EnableOption = YESExemple
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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
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
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
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
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)
Variables de MPD
196 PowerAMC
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
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
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
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
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
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
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
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.
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.
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
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.
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.
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 :
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.
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é.
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:
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
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.
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.
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.
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.
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.
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".
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.
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.
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.
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
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.
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
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.
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
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.
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?
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)
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é
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
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.
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
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.
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.
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.
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
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.
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.
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.
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
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
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.
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
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
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.
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
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
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.
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.
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
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
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
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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
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
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
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
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.
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 ?
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.
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%)
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éé.
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.
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.
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.
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.
Utilisation de profils : une étude de cas
282 PowerAMC
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
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
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.
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
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
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
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
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
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.
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.
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
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.
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
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é.
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.
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
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
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.
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
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.
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
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
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
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é
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é
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
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 ?
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
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
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 ?
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
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.
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
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
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.
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.
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.
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
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é.
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.
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
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
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
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
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
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.
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
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
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.
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
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
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.
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.
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.
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
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.
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.
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.
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
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?
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 ?
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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
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
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.
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.
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
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é.
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
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
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
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 :
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.
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
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
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
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
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
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
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
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.
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
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
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
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%
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.
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.
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
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
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
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
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>
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
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> '"'
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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> ')'
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
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
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 :
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}])
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
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
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
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
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
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
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
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
Conseils et techniques de génération
416 PowerAMC
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
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 ?
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
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
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.
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.
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
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
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.
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
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
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
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
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)
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
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.
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
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
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.
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 :
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.
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
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.
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">
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>
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
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 < >).
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.
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.
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é.
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
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
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
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
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
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
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
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
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
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
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
458 PowerAMC