MID GmbH

              Leistungen          Kundenservice          Downloads            Unternehmen

Model Driven Transformation for Streaming Applications - Teil 9

Generator für die Abbildungsvorschrift von Datenstrukturen

Vorwort:

Was wir bisher zu dem Thema veröffentlicht haben finden Sie hier:

Teil 1 - Teil 2 - Teil 3 - Teil 4 -  Teil 5  - Teil 6 - Teil 7 - Teil 8   zu Model Driven Transformation for Streaming Applications

In diesem Blog-Beitrag beschäftigen wir uns mit der Generierung der Datentransformations-Regeln aus dem Innovator-Modell.

Die Challenge/Vision:

Die Herausforderung ist, die Datentransformations-Regeln so zu gestalten, dass der Stream Processor ohne Anpassung, sprich, allein anhand einer Abbildungsvorschrift unterschiedlichste Datentransformationen durchführen kann. Wichtig ist hierbei, dass das Innovator-Modell alle Informationen der Transformation beinhaltet und so eine vollständige Abbildungsvorschrift aus dem Innovator-Modell generiert und im Stream Processor verwendet werden kann.

Unsere Lösung:

Voraussetzung für die Lösung ist, dass die Transformation typfrei erfolgt. Andernfalls müssten dem Processor die Schemas der Quell- und Zielstrukturen im Detail mitgegeben und dort ausgewertet werden.

Folgende Informationen benötigt der Stream Processor:

  • Name des Quell Topics, aus dem die Quelldatenstrukturen gelesen werden
  • Name des Ziel Topics, in das die transformierten Datenstrukturen geschrieben werden
  • Abbildungsvorschrift, wie jedes Attribut der Quelldaten in die Attribute der Zieldaten umgesetzt werden.

Für diesen Zweck haben wir einen Generator entwickelt, der diese Informationen aus dem Innovator-Modell ermittelt, und in Form einer JSON Konfiguratonsdatei dem Stream Processor als Input dient.

Name des Quell Topics und Name des Ziel Topics definieren:

Im Innovator Modell wird eine Datentransformation in einem Diagramm modelliert (siehe [Blog 3).

Die Wurzel der Quelldatenstruktur wird über eine spezielle Beziehung mit der Wurzel der Zieldatenstruktur verbunden. Damit sind Quelle und Ziel eindeutig im Diagramm identifizierbar. Als Topic Name der Quellstruktur wird der Klassenname der Quelle verwendet. Analog dazu wird als Name des Ziel Topics der Name der Zielklasse verwendet. Diese Daten werden in der Konfigurationsdatei hinterlegt.

Datentransformations-Regeln generieren:

Die Transformation von Attributen der Quellstruktur zu Attributen der Zielstruktur wird im Innovator durch Beziehungen zwischen den Attributen modelliert. Dabei kann es passieren, dass ein Quellattribut auf mehrere Zielattribute abgebildet wird. Es können aber auch mehrere Quellattribute in das gleiche Zielattribut überführt werden. Dabei wird in einem Spezifikationstext an der Beziehung die Verknüpfungsregel definiert.

Der Generator durchwandert rekursiv Attribut für Attribut der Quellklassenstruktur und deren assoziierten Klassen und prüft, ob eine Abbildungsbeziehung vorhanden ist. Ist dies der Fall, wird die Datentransformations-Regel in die Liste der Datentransformations-Regeln übernommen.

Damit ergibt sich die Struktur einer Datentransformations-Regel, welche nachfolgende als Java Klasse dargestellt wird:

Teil_9_Generator_Codes_1Die Attribute werden eindeutig über ihren XPath anhand der Klassenassoziationen als String gespeichert. Die Ziele sind als Liste abgebildet, um alle oben beschriebenen Transformationen abzubilden.

Der conversionString enthält die Verknüpfungsregel, falls keine 1-zu-1 Zuordnung besteht oder sogar Typtransformationen nötig sind.

Somit ergibt sich für die vollständige Struktur der Konfigurationsdatei:

Teil_9_Generator_Codes_2 Die vom Generator gefüllte Konfiguratonsdatei wird dem Stream Processor in Form eines JSON Objekts als Aufrufparameter übergeben.

Beispiel einer Abbildungsvorschrift:

Teil 9  - Code3

Fazit:

Mit diesen generierten Informationen kann ein Stream Processor nun beliebige modellierte Transformationen durchführen. Von Vorteil ist, dass diese Abbildungsvorschriften wiederverwendet und zentral gepflegt werden können. Dies hat zudem den Scharm, dass an unterschiedlichen Datentransformationen gleichzeitig in verteilten Entwicklungsteams gearbeitet werden kann.

Klaus Weigand

geschrieben von Klaus Weigand

Klaus Weigand ist Senior Consultant bei der MID GmbH mit langjähriger Erfahrung als Berater in Industrie und öffentlichem Dienst. Er beschäftigt sich bei MID mit Modellarchitekturen für die Softwareentwicklung unter Einsatz von MDSD Ansätzen. Ein Schwerpunkt dabei liegt bei der engen Verknüpfung zwischen Modell und Realisierung. ____________________________________________________________________________________________________ Co-Autor: Johannes Mickel Beschäftigt sich seit 2011 mit Software Architekturen für Industrie und im öffentlichen Dienst. Seit 2015 ist er für die MID GmbH als Lead Consultant für den Bereich Software Architektur und Requirements Engineering tätig.

<< Zurück

Relevante Posts:

MID Blog

Hier bloggen Mitarbeiter der MID und eingeladene Gastautoren zu Themen rund um die Modellierung. Bleiben Sie auf dem Laufenden und lassen Sie sich per Email über neue Blogbeiträge informieren.

Neue Beiträge per Mail

Autoren

Interessieren Sie sich für ein Thema, dass wir bisher noch nicht behandelt haben? Oder haben Sie Fragen oder Anmerkungen zu einem bestimmten Beitrag?

Schreiben Sie uns gerne einen Kommentar, wir werden das Thema in der Zukunft aufgreifen.

Die neuesten Posts

MID Newsletter abonnieren