Modélisation UML & SysML

Expertise et articles Blog sur UML, SysML, et Enterprise Architect de Sparx Systems

mardi, 08 septembre 2015 00:00

Importer le schéma de BD EA en classes d'énumérations avec le Database Builder

Écrit par
Évaluer cet article
(0 Votes)

sparx enterprise architect 12 database builder

Importer le schéma de base de données d'un projet Sparx Enterprise Architect en classes d'énumérations avec le Database Builder, générer les classes .net C# avec la transformation de modèles (MDA) et la génération de code.

Dans le cadre de la réalisation d'un add'in EA, il a été demandé de fournir des classes d'énumération permettant un accès aux noms des tables et colonnes d'une base de données d'un projet Enterprise Architect. En raison du nombre important de tables, il a été nécessaire d'automatiser cet import.

Disposant d'un accès à la base de données d'un projet Sparx Systems Enterprise Architect (par exemple sous MySQL, SQL Server, ou même dans un fichier EAP via ODBC), il existe différentes façons de générer des classes d'énumération avec les valeurs attendues via une simple application C#. L'alternative choisie a été d'utiliser le Database Builder d'Enterprise Architect 12, outil intégré permettant de gérer les schémas relationnels de base de données. Comparé à l'utilisation d'une application d'import C#, le Database Builder permet d'obtenir les classes d'énumération dans le référentiel de modélisation, puis d'utiliser les fonctions de transformation de modèle (MDA) et de génération de code pour générer les classes d'énumération C# dans la solution Visual Studio.

Cet article n'aborde qu'une très faible partie des fonctionnalités du Database Builder de Sparx EA. Son objectif est d'illustrer l'import des noms de tables à partir de la base de données d'un projet Enterprise Architect en valeurs (constantes) dans la classe d'énumération EADBTableType, et les noms de colonnes sous des classes d'énumération séparées, ex : t_diagramColumnType, t_objectColumnType...

Importer le schéma de base de données dans Enterprise Architect

  • Ouvrir le menu EA Tools > Database Builder
  • Lancer un clic droit et sélectionner New Data Model:

 

  • Sélectionner le serveur de BD utilisé, par exemple MySQL et confirmer Ok
  • Lancer un clic droit sur MySQL > Load
  • Lancer un clic droit sur Connections > Add new DB connection
  • Ouvrir la nouvelle "DB connection" et sélectionner "ODBC based datatype"
  • Sélectionner la source DSN ODBC vers la BD du projet Enterprise Architect dont le schéma relationnel doit être importé
  • Lancer un clic droit sur MySQL > Import DB Schema from ODBC
  • Cliquer sur Import et sélectionner toutes les tables :

  • L'ensemble des tables, colonnes, clés primaires, clés étrangères, indexes, etc. ont été importées.
  • Afficher le Database builder et ouvrir l'onglet Tables. La sélection de l'une des tables permet de consulter le détail des colonnes.

Générer les classes d'énumération à partir du schéma de BD

Le Database Builder m'a permis d'obtenir très facilement l'ensemble des tables et colonnes de la base de données. Un script VB sous EA a été réalisé afin d'effectuer les traitements suivants :

  • Créer un paquetage "enums"
  • Créer la classe d'énumération EADBTableType
  • Pour chaque table :
    • créer une valeur "enum" dans la classe EADBTableType dont le nom correspond à la table, par exemple t_attribute
    • créer une classe d'énumération nommée selon le format suivant : <nom table>ColumnType, par exemple t_attributeColumnType
    • pour chaque colonne de la table :
      • créer une valeur, constante avec le nom de la colonne dans la classe d'énumération créée précédemment, ex : Classifier sous t_attributeColumnType.

Une fois le script exécuté, les classes suivantes ont été obtenues :

Transformer les classes d'énumération en classes dotNet C#

La fonction MDA "model transformation" a été utilisée pour générer des classes d'énumération C# :

  • Lancer un clic droit sur le paquetage qui contient les classes générées par le script > Advanced > Transform Package
  • Sélectionner C# comme langage cible, sélectionner le paquetage destination, et cliquer sur Do Transform

  •  Les classes C# créées, les espaces de nommages doivent être vérifiés (ex : créer des paquetages pour obtenir le namespace myaddin.common.enums.easchema).

Générer le code C# des classes d'énumération

  • La génération du code C# doit être lancée via un clic droit sur le paquetage > Code Engineering > Generate Source Code.
  • Cocher Auto Generate Files et sélectionner le répertoire cible dans la projet C# de l'add'in.

  • Le code dot net C# généré peut être utilisé dans la solution Visual Studio de l'add'in EA, comme illustré ci-dessous :