Der Common-Warehouse-Metamodel-Standard (CWM) wurde von der Object Management Group (OMG) festgelegt. CWM ist ein Standard für Metadaten in Data-Warehouse- und Business-Intelligence-Anwendungen. CWM benutzt die Meta-Object-Facility (MOF) als Grundlage. MOF wird auch in anderen Standards der OMG benutzt, wie z. B. UML.
Mein Ziel war es, CWM zu lernen. Es ist sehr schwierig CWM nur durch Lesen der Spezifikation zu erlernen. Hier ist ein interaktiver Editor am besten. Leider gab es zum Zeitpunkt dieses Artikels keinen Open-Source-Editor für CWM. Es gab eine MOF-Datenbank, das Metadata Repository (MDR). Diese hatte aber keine Editor-Möglichkeiten. Anmerkung 2011: MDR gibt es scheinbar nicht mehr als separates Paket.
Also entschloss ich mich, das CWM/MOF-Modell zu EMF zu transformieren und daraus wiederum mit den Bordmitteln des Eclipse Modelling Frameworks (EMF) einen interaktiven Editor für Eclipse zu generieren.
Der Editor ist in einem frühem Entwicklungsstadium, kann aber für Experimente und für das Erlernen von CWM benutzt werden.
In [1,2] wird eine Abbildung von MOF zu EMF beschrieben. Diese Artikel wollte ich als Grundlage benutzten, fand aber die in diesen Artikeln beschriebe E-MORF-Software nicht im Web. Daher schrieb ich eine XSLT-Transformation, die in der folgenden Tabelle beschrieben wird.
| MOF Element | EMF Element | EMF Tag |
|---|---|---|
| XMI.content | ecore:EPackage | ecore:EPackage |
| Model:Attribute | ecore:EReference or ecore:EAttribute | eStructuralFeatures |
| Model:Class | ecore:EClass | eClassifiers |
| Model:DataType | ecore:EEnum or ecore:EDataType | eClassifiers |
| Model:Package | eSubpackages | |
| Model:Reference | ecore:EReference | eStructuralFeatures |
Ich habe die CMW 1.1-XML-Specifikation zu Ecore/EMF transformiert.
Der folgende Screenshot zeigt einen kleinen Ausschnitt aus dem EMF-Ecore-Modell.
Aus dem Ecore-Model habe ich einen EMF-Editor generiert. Der folgende Screenshot zeigt den "New Wizard". Für jedes "Subpackage" von CWM gibt es ein Model zur Auswahl. Meistens ist das "CWM Model" die beste Auswahl.
Der nächste Screenshot zeigt die zur Verfügung stehenden "Subpackages" und durch die hohe Anzahl kann man auch schon einen ersten Eindruck von der Komplexität von CWM bekommen. In diesem Beispiel soll eine relationale Datenbank modelliert werden und der "relational container" wird ausgewählt.
Der nächste Screenshot zeigt eine Auswahl aus den für relationale Datenbanken zur verfügung stehenden Meta-Metadaten.
Der Editor ist auf Anfrage erhältlich.
Es gibt noch eine Reihe von offenen Punkten.
Model:Association gespeichert
("reifiziert").
Ecore hingegen speichert Referenzen als solche. Das Ecore/EMF-Modell sollte so einfach wie möglich sein.
Daher habe ich MOF-Assoziationen zu einfachen Ecore-Referenzen transformiert.
Core.ModelElement.
Bei Assoziationen sind bei den Endpunkten oft sehr allgemeine Oberklassen angegeben. Dieses
erschwert die Benutzung von CWM.
Copyright © 2007-2012 Jörn Dinkla. All rights reserved.