Cet article présente un retour sur l'import de fichiers OData metadata pour générer un modèle de classes UML sous Enterprise Architect. OData ou Open Data Protocol est un standard OASIS permettant le partage de données via des API RESTful. Dans le contexte actuel, OData est utilisé pour exposer des bases de données dont le schéma peut être obtenu via le fichier $metadata.
En complément des fichiers XML metadata à traiter et importer, j'ai analysé le contenu des fichiers disponibles publiquement :
- services.odata.org/OData/OData.svc/$metadata : définition d'entités Product.
- services.odata.org/V4/TripPinServiceRW/$metadata : définition de voyages (trip).
L'import XML Schema (XSD) d'EA ne peut pas être utilisé car celui-ci ne gère pas les fichiers XML, même s'ils contiennent une structure de données. Le fichier OData metadata utilise le schéma XML EDM disponible ici : docs.oasis-open.org/odata/odata-csdl-xml/v4.01/cs01/schemas/edm.xsd. Ces définitions permettent de comprendre le contenu du fichier XML.
Ayant besoin de manipuler du contenu XML via une solution simple et facile à utiliser, le langage de transformation XML (XSLT) a été retenu.
XSLT permet de convertir un fichier XML à partir d'un nombre de règles identifiées dans un modèle, le fichier XSL. L'objectif ici est de créer un fichier CSV (comma-separated values) avec la liste des classes et attributs. Ce contenu CSV peut être copié et utilisé dans une version améliorée du VBImporter Excel gratuit de Geert Bellekens afin d'importer les classes (entités) et attributs (propriétés) dans EA.
Etapes :
- Le fichier XML OData metadata est ouvert dans Notepad++.
- Le complément XML Tools permet de lancer la Transformation XSL.
- Le fichier XSL est sélectionné ; ce fichier contient les règles suivantes...
- Convertir les éléments EnumType en classes d'énumération.
- Convertir les éléments EntityType en classes stéréotypées "entityType".
- Convertir les éléments ComplexType en classes.
- Convertir les éléments EntityContainer en classes stéréotypées "entityContainer".
- Note : les propriétés sont converties en attributs.
- Le fonction XSLT de Notepad++ génère un fichier avec le contenu CSV correspondant au fichier OData metadata (remarque : la balise XML doit être supprimée avant d'enregistrer le fichier).
- Le fichier Excel VBImporter est ouvert (remarque : l'import CSV EA n'est pas utilisé car il est limité aux éléments i.e. les classes. Il ne gère pas les attributs).
- Le contenu du fichier CSV est importé dans l'Excel VBImporter.
- EA est ouvert et le paquetage cible sélectionné à partir du Project Browser.
- La macro VBImporter d'import des classes et attributs est exécutée et permet d'obtenir le résultat suivant sous EA.
Remarque : des alternatives à Notepad++ existent pour lancer une transformation XSL, par exemple Visual Studio, la ligne de commande xsltproc dans Linux ou cigwin, etc.
Le fichier XSL réalisé avec les règles de conversion OData - CSV n'est pas encore disponible en téléchargement. Me contacter sur guillaume [at] umlchannel.com pour obtenir une copie à tester, utiliser et améliorer.