A propos de la fonction Native XML Project Transfer
La fonction Native XML Project Transfer est une alternative au Project Transfer EA ; disponible à partir d’Enterprise Architect 15.1, elle permet de transférer l’intégralité des données entre deux référentiels EA (source vers cible), gérés dans un fichier local (EAP ou EAPx) ou une base de données centralisée (SQL Server, MySQL, Postgres, etc.).
La fonction Enterprise Architect Native XML se déroule en deux temps :
- Export du projet EA source : les fichiers XML sont générés dans le dossier cible avec les données correspondant à chacune des tables de la base de données EA (t_attribute, t_object, etc.).
- Import des fichiers XML pour réinitialiser les données du projet EA cible. A l’issue de cette étape, le projet EA est identique au projet source.
Important : contrairement à l’import/export XMI, la fonction Native XML permet de transférer l’intégralité des données d’un référentiel EA. XMI se limite au contenu des modèles (paquetages, éléments, diagrammes) entre projets EA ou avec d‘autres outils de modélisation.
Avantages de la fonction Native XML :
- Contrairement au Project Transfer EA, il n’est plus nécessaire d’avoir un accès simultané aux projets EA source et cible. Cela permet par exemple de transférer l’intégralité d’un projet "on premises" vers un projet hébergé dans le Cloud (AWS, Azure…).
- Compatible avec une connexion http/https via le Pro Cloud Server.
- Permet de réaliser des sauvegardes intégrales du référentiel EA.
- Des données peuvent être facilement supprimées lorsqu’elles concernent une table EA en supprimant les fichiers correspondants (exemple : t_document.xml).
Description
EAPostgresImportfromNativeXML est une solution spécifique à l’outil de modélisation Sparx Systems Enterprise Architect.
- Objectif : lancer l’import Native XML dans une base de données EA PostgreSQL depuis une ligne de commande ou via un fichier batch/cmd (remarque : l’import Native XML n’est pas disponible via l’API EA).
- Le deuxième objectif est de réduire le temps d’exécution par rapport à l'import sous Enterprise Architect.
Cette solution peut être utile dans le cadre d'un processus de publication lorsque la base de données EA de travail doit être transférée fréquemment sur une base de publication (configurée avec Prolaborate pour les utilisateurs finaux par exemple) ; un fichier batch (cmd) peut être mis en place et configuré avec le planificateur de tâches Windows pour lancer le transfert tous les jours.
Contacter-moi si guillaume [at] umlchannel.com pour obtenir une copie de l’outil EAPostgresImportfromNativeXML.
Remarques :
- Pré requis : .NET Core 3.1 et versions ultérieures.
- S’il n’est pas déjà installé, utiliser le lien suivant pour télécharger Microsoft NET Core Runtime Windows x64 Installer : dotnet.microsoft.com/download
- Ce projet utilise la librairie C# Npgsql (www.npgsql.org).
- La base de données PostgreSQL doit avoir été initialisée avec un projet EA : les scripts SQL fournis par Sparx Systems ont été exécutés, un projet EA a été chargé.
Procédure d’initialisation
- Extraire le fichier zip dans un répertoire, par exemple sous C:\EAProjectTransfer.
- Ouvrir le projet EA source et lancer l’export Native XML (menu Configure > Transfer) dans le répertoire cible.
- Exemple avec C:\EAProjectTransfer\nativeXML :
- Résultat pour le projet "EA Example" de Sparx Systems :
- Créer un fichier texte avec les détails de la base de données Postgres cible.
- Cette base de données doit contenir un référentiel EA (tables + données).
- ATTENTION : TOUTES LES DONNEES SERONT SUPPRIMEES DE LA BASE DE DONNEES CIBLE AVANT DE LANCER LE TRANSFERT.
- Le fichier doit contenir les informations suivantes, séparées par points-virgules :
- Adresse IP ou nom du serveur de base de données ;
- Numéro de port du serveur Postgres ;
- Nom de la base de données ;
- Compte utilisateur ;
- Mot de passe ;
- Exemple :
- Créer le fichier dbdetails.txt sous C:\EAProjectTransfer avec le contenu suivant : localhost;5432;test_db;postgres;admin
Lancer le transfert depuis un export Native XML vers une base de données Postgres EA
- Ouvrir l’invite de commandes (cmd).
- Accéder au répertoire dans lequel EAPostgresImportfromNativeXML a été copié (ex : cd C:\EAProjectTransfer).
- Exécuter “dotnet –version” ; le résultat suivant permet de vérifier la version installée de .NET Core.
- Exécuter dotnet EAPostgresImportfromNativeXML.dll pour afficher les instructions.
- EAPostgresImportfromNativeXML accepte 2 ou 3 paramètres :
- Paramètre 1 : chemin complet vers le fichier créé avec le détail de la base de données (cf. instructions précédentes).
- Exemple : C:\EAProjectTransfer\dbdetails.txt.
- Paramètre 2 : chemin vers le répertoire utilisé sous Enterprise Architect pour l’export Native XML.
- Exemple : "C:\EAProjectTransfer\nativeXML".
- Paramètre 3 (optionnel) : si la valeur skipwarning est fournie, la demande de confirmation avant de supprimer toutes les données de la base de données EA ne sera pas affichée.
- Paramètre 1 : chemin complet vers le fichier créé avec le détail de la base de données (cf. instructions précédentes).
- Dans l’exemple suivant, l’import doit être réalisé avec les fichiers Native XML présents sous C:\EAProjectTransfer\nativeXML, vers la base de données dont les informations sont disponibles dans le fichier dbdetails.txt :
- dotnet EAPostgresImportfromNativeXML.dll C:\EAProjectTransfer\dbdetails.txt C:\EAProjectTransfer\nativeXML
- Il est également possible d’utiliser le fichier exécutable :
- EAPostgresImportfromNativeXML.exe C:\EAProjectTransfer\dbdetails.txt "C:\EAProjectTransfer\nativeXML"
- L’exemple ci-dessous permet d’illustrer les principales étapes de contrôle ou d’exécution réalisées par l’outil EAPostgresImportfromNativeXML.
- Contrôle sur les paramètres et contenu du fichier dbdetails.
- Ouverture d’une connexion avec la base de données Postgres.
- Si la base de données ne contient pas toutes les tables EA (exemple : t_object), un message d’erreur affiche les tables manquantes.
- Lorsque tous les fichiers présents dans le répertoire Native XML ont été analysés, le nombre de requêtes INSERT préparées pour charger les données est affiché (aucune requête n’a été exécutée à ce stade sur la BD cible).
- Appuyer sur la touche “Entrée” pour confirmer la SUPPRESSION DE TOUTES LES DONNEES sur les tables EA de la base de données cible.
- Remarque : cette étape n'est pas affichée sur le troisième paramètre skipwarning est fourni.
- Les données de chaque table EA sont supprimées (exemple : DELETE from t_object).
- Les requêtes INSERT sont exécutées pour charger l’intégralité des données.
- Une fois terminé, le temps d’exécution est affiché en millisecondes. Le projet EA disponible sur la base Postgres peut alors être ouvert avec Enterprise Architect.
- Le transfert de la base EA Example vers une base de données locale Postgres DB s’est déroulé sous 40 secondes (cela prend en compte le temps à valider l’alerte avant d’effacer les données).
Contact: guillaume [at] umlchannel.com.