Transformator Framework Generator

Beginnen Sie bei der Codegeneratorentwicklung nicht bei Null sondern greifen Sie auf ein Transformator Framework zurück, das sich schon in vielen Codegeneratoren bewährt hat.

Wie bereits in der Einführung unter Transformator Framework erläutert, ist bei der Codegeneratorentwicklung eine durchdachte Software-Architektur absolut entscheidend. Mit Meta Genius müssen Sie sich diese Software-Architektur aber nicht selbst überlegen, sondern können auf das Know How zurückgreifen, das mit der Entwicklung unzähliger Codegeneratoren gesammelt wurde.

Mit dem Transformator Framework Generator können Sie von Meta Genius ein voll funktionales C# Framework generieren lassen, das Sie dann selbst nur mehr mit den gewünschten Transformationsfunktionen ergänzen müssen.

Zur Erinnerung: Um einen Codegenerator mit möglichst geringen Aufwand implementieren zu können, greift man am besten auf eine passende Generator Engine zurück. Dadurch reduziert sich der Aufwand einer vollständigen Generatorentwicklung auf die Entwicklung eines viel einfacheren Modell-Transformators. Und für diesen stellt das Transformator Framework die Vorlage dar.

Ein Transformer besteht zuerst mal aus zwei Metamodel APIs. Einem Input MetaModel API, mit dem üblicherweise ein Model aus Meta Genius ausgelesen wird. Und dem Output MetaModel API, als Schnittstelle zur Generator Engine. Das hierfür erforderliche MetaModel wird übrigens als Bestandteil jeder Generator Engine mitgeliefert.

Der Transformer Framework Generator bietet eine schöne Übersicht über alle beteiligten APIs, die Input Metamodel APIs auf der linken Seite, die Output Metamodel APIs auf der rechten Seite:

Neben den Metamodel APIs wird von Meta Genius dann auch noch das eigentliche Transformer Framework generiert. Dieses besteht im Wesentlichen aus einer Transformer Klasse und einer frei wählbaren Anzahl von Visitor-Klassen (siehe Visitor Pattern). Diese Visitor-Klassen beinhalten bereits alle verfügbaren visit(...) und leave(...) Funktionen, die nur mehr mit den gewünschten Transformationscode gefüllt werden müssen.

Ausgeführt wird der Transformer durch den Aufruf der generierten Transform(...) Funktion. In dieser werden dann alle Visitor-Klassen der Reihe nach auf das selektierte Input Model angewendet.