wir haben es getan: MetaModels als Beta erschienen.

von Christian

Es ist wieder einmal einiges an Zeit verstrichen in der ich nichts hier geschrieben habe. Das diesjährige Contao Camp ist vorüber, auf welchem Andreas Isaak und ich die neue MetaModels Extension kurz vorgestellt haben.

MetaModels? Was sind denn bitte MetaModels.

Wikipedia definiert ein Metamodell als:

Der Begriff Metamodell setzt sich zusammen aus dem Präfix Meta- (in diesem Zusammenhang griechisch für „über“, bzw. „neben“), welches die mit diesem Modell getroffenen Aussagen auf einer inhaltlich höher gestellten Ebene indiziert, und dem Modellbegriff der (Wirtschafts-) Informatik.
[...]
Das Metamodell beschreibt modellhaft einen bestimmten Aspekt der Erstellung von konzeptuellen oder formalen Beschreibungsmodellen.

Das klingt somit ganz nach der Catalog Extension, welche ich die vergangenen Jahre entwickelt habe. Man hat Kategorisierbare Daten, bzw. Daten die alle nach einem bestimmten Schema aufgebaut sind und (Meta-) Attribute besitzen.

Genau das sind die MetaModels, ein Ersatz für die in die Jahre gekommene Catalog Extension. Die Motivation hierbei entstand aus der Tatsache, dass die Catalog Extension nur durch ein massives Refactoring, welches einem de facto rewrite gleich kommen würde, in punkto Erweiterbarkeit und Anpassbarkeit an den Punkt kommen würde, der mir persönlich recht wäre und den sich viele Entwickler schon lange wünschen. Der Wunsch, MetaModels zu entwickeln gärte schon länger in mir, wurde jedoch erst durch die Finanzierung der Men At Work Agenturgruppe ermöglicht.

Fokus lag von Anbeginn auf:

  • Keine Attribute (Catalog sprech: "Felder") im Core.
    Was ein Attribut kann, kann potentiell jedes, von Drittentwicklern entwickelte, Attribut ebenfalls. Hierdurch entfällt die Notwendigkeit von Core hacks und das beantragen von HOOKs, weil der core intern irgendwas bastelt.
  • Variantenfähigkeit.
    MetaModels können variantenfähig sein, d.h. man kann von jedem Eintrag Varianten erstellen. In der Attributsdefinition kann festgelegt werden, bei welchen Attributen man in Varianten abweichende Werte definieren kann. Dies erlaubt z.B. dass sich Varianten nur in Farbe und Preis unterscheiden können.
  • Native Mehrsprachigkeit.
    Jedes MetaModel kann mehrsprachige Attribute beinhalten (sofern Mehrsprachigkeit aktiviert wurde). Hiermit kann man direkt im Backend Daten in vielen Sprachen komfortabel erfassen.
  • Rechtemanagement und Workflow.
    Welcher Backend oder Frontenduser welche Attribute und Einträge zu Gesicht bekommt kann man komfortabel im Backend konfigurieren. Dies geht sogar soweit, dass man Benutzergruppen spezifische Paletten im Backend definieren kann, wodurch auch die Eingabemasken auf die jeweils gewünschte Ansicht zurecht geschrumpft werden kann.

Viele weitere Features gibt es sonst noch, die diesen Blogpost sprengen würden. Schaut euch einfach den Code an.

Für Ungeduldige auch noch ein Bash snippet, welches euch alle Repositories der MetaModels gleichzeitig cloned:

for i in `wget -qO- https://api.github.com/orgs/MetaModels/repos | \
grep clone_url | \
cut -d \" -f4`; do \
git clone $i; \
done;

Einen Kommentar schreiben

Was ist die Summe aus 2 und 1?