Reverse engineering direct de base de données

PowerAMC peut procéder au reverse engineering dans un MPD à partir d'une connexion directe à une base de données . Les requêtes qui contrôlent le reverse engineering direct sont disponibles dans la catégorie Script/Objects.

Les requêtes suivantes sont utilisées dans le reverse engineering via une connexion directe :
Remarque : Vous pouvez également créer vos propres requêtes (voir Création de requêtes pour récupérer des attributs supplémentaires).

Chaque type de requête a la même structure de base constituée d'une liste de variables PowerAMC séparées par des virgules et encadrées d'accolades { } et suivie d'une instruction Select qui permet d'extraire les valeurs destinées à renseigner ces variables. Les valeurs des enregistrements renvoyés sont stockées dans ces variables, qui sont ensuite validées comme valeurs d'attributs d'objet.

Par exemple, SqlListQuery dans la catégorie View d'Oracle 11g R1 extrait des valeurs pour huit variables :
{OWNER, VIEW, VIEWSTYLE, ExtObjViewType, 
    ExtObjOIDList, ExtObjSuperView, XMLSCHEMA EX, XMLELEMENT EX}

select
   v.owner,
   v.view_name,
   decode (v.view_type, 'XMLTYPE', 'XML', 'View'),
   v.view_type,
   v.oid_text,
   v.superview_name,
   decode (v.view_type, 'XMLTYPE', '%SqlXMLView.'||v.owner||v.view_name||'1%', ''),
   decode (v.view_type, 'XMLTYPE', '%SqlXMLView.'||v.owner||v.view_name||'2%', '')
from sys.all_views v
[where v.owner = %.q:SCHEMA%]

Chaque partie de l'en-tête placé entre virgules est associée aux informations suivantes :

Exemple : Utilisation de ID pour définir l'identifiant

Dans ce script, l'identifiant est défini comme TABLE + ISKEY+ CONSTNAME via l'utilisation du mot clé ID :

{TABLE ID, ISPKEY ID, CONSTNAME ID, COLUMNS ...}
select
 t.table_name,
 1,
 null,
 c.column_name + ', ',
 c.column_id
from 
 systable t,
 syscolumn c
where
etc..

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

SQL Result set
Table1,1,null,' ,'
Table1,1,null,'col2,'
Table1,1,null,'col3,'
Table2,1,null,'col4,'
In PowerDesigner memory
Table1,1,null,'col1,col2,col3'
Table2,1,null,'col4'

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

Exemple : Conversions de paires de valeurs

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

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