Das ist neu in MPS 2018.1

SModel-Sprachverbesserungen

In manchen Fällen müssen Sie sich mit unformatierten Zeigern (wie SNodeReference oder SModelReference) befassen. Die Arbeit damit kann Kopfzerbrechen bereiten, da es schwierig ist, sie zu erstellen und zu benutzen. Um die Arbeit mit Zeigern zu vereinfachen, erweitern wir die SModel-Sprache um neue Typen und Operationen.

Knotenzeiger

Wir haben die Arbeit mit Knotenzeigern vereinfacht, indem wir einen neuen Typ „node-ptr<>“ eingeführt haben. Diese Zeiger können über die Operation „resolve“ auf die tatsächlichen Knoten aufgelöst werden. Der Ausdruck „node-ptr/ ... /“ ersetzt das alte Konstrukt „nodePointer / ... /“, das bereits als veraltet gekennzeichnet ist. Migrationsskripte werden erstellt, um die Konvertierung der Ausdrücke zu gewährleisten.

Verweise mit Zeigern

Wenn ein Ziel für eine Referenz festgelegt wird, braucht nicht auf den Zielknoten zugegriffen zu werden. Ein Zeiger auf das Ziel reicht aus. Die Operation „set ptr“, die auf Referenzlink-Zugriffsausdrücke anwendbar ist, legt das Referenzziel auf die angegebenen Zeiger fest. Um zu überprüfen, ob ein Knoten derjenige ist, der von einem Knotenzeiger angegeben wird, sollte die neue Operation „is“ verwendet werden.

Strikte Typregeln für Smodel-Typen

Die Typregeln für SModel-Typen sind jetzt strikter. Die SNodeReference-Interface-Methoden sind für „node-ptr“-Werte nicht mehr verfügbar. Der Downcast-Operator sollte verwendet werden, um explizit eine SNodeReference zu erhalten. Außerdem gibt die „pointer“-Operation für Knoteninstanzen jetzt „node-ptr“ anstelle der regulären SNodeReference zurück.

Node-ptr-Ausdrücke im Referenzmakro

Das Referenzmakro wurde geändert, um node-ptr-Ausdrücke zu akzeptieren. Wir überprüfen den vom Referenzmakro zurückgegebenen Zeigertyp entsprechend dem Typ der Referenz.

Knoten-ID zum Angeben eines Zeigers

Jetzt können Sie den Modellnamen und die Knoten-ID verwenden, um einen Zeiger auf eine nicht benannte Konzeptinstanz anzugeben oder eine Referenz als String fest zu codieren.

Modellzeiger

Der Typ „model-reference“wurde zu „model-ptr<>“ refaktoriert. Dieser Zeiger kann über die Operation „resolve“ auf das tatsächliche Modell aufgelöst werden.

Neue Migrationsskripte

Wir haben eine Reihe von Migrationsskripten eingeführt, mit denen Sie alte SModel-Sprachkonstrukte wie die node/.../`-Ausdrücke, unerwünschte Zitierungen oder Downcasts migrieren können. Zum Ausführen rufen Sie Tools -> Scripts -> Enhancements... auf und wählen Sie „SModel Language Enhancements (node-ptr<> and model-ptr)“. Für alte Konstruktionen in den Generatormakros ist im selben Fenster auch die Option „Use node pointers in reference macro queries“ verfügbar.

Verbessertes Scoping für SModel-Abfragen

SModel-Abfragen verhalten sich jetzt intuitiver in Bezug auf den Scope, auf den sie angewendet werden. Wenn ein Scope als Parameter für eine Abfrage deklariert wird, wird die Abfrage für den gesamten Scope ausgeführt, einschließlich aller schreibgeschützten Modelle und nicht wie bisher nur für bearbeitbare Modelle.

Editor

Reflektiven Editor für Unterstruktur anzeigen

Jetzt können Sie den reflektiven Editor für eine ganze Unterstruktur anzeigen. Wählen Sie dazu den Knoten aus und drücken Sie Cmd/Strg+Umschalt+[ oder wählen Sie im Kontextmenü „Show reflective editor for subtree“ aus. Wenn Sie zum regulären Editor zurückkehren möchten, drücken Sie Cmd/Strg+], Cmd/Strg+Umschalt+] oder wählen Sie per Rechtsklick die Option „Show regular editor for the Subtree“ aus dem Kontextmenü. Anzeigen des reflektiven Editors nur für den aktuellen Knoten ist weiterhin verfügbar, durch Drücken von Cmd/Strg+[ sowie über das Kontextmenü.

Transformationsmenü für Eigenschafts- und Referenzzellen

Die Transformationsmenü-Sprache wurde konsequent erweitert, um Eigenschafts- und Referenzzellen zu unterstützen. Mit den Menüteilen für die Eigenschafts- und Referenztransformation können Sie die Menüs für Eigenschafts- und Referenzzellen besser anpassen als mit den zuvor verwendeten Inline-Menüs.

Die beiden Hauptvorteile sind:

  • Sie können an jede Zelle gebunden werden. nicht nur an Eigenschafts- und Referenzzellen.
  • Sie können sowohl bei der Vervollständigung angewendet werden als auch an anderen Stellen – Kontextassistent, Kontextmenü und Seitentransformationen.