Für Einfügeplätze und Erweiterungspunkte kann eine Auswahlformel angegeben werden (siehe folgende Abbildung), durch die beim Instanziieren bzw. Aktualisieren ermittelt wird, welche der sichtbaren Bibliothekskomponenten instanziiert werden soll. Bei der manuellen Konfiguration kann die Auswahl auf eine Untermenge der Bibliothekskomponenten des Erweiterungspunkts eingeschränkt werden.
Für die Berechnung der Auswahlformel gelten folgende Regeln:
- Die Auswahlformel liefert einen booleschen Wert oder eine Ganzzahl:
- true bedeutet, dass jede mögliche Komponente genau einmal instanziiert wird bzw. die Instanz erhalten bleibt.
- false bedeutet, dass keine Komponente instanziiert bzw. die Instanz gelöscht wird.
- Eine Ganzzahl gibt die Anzahl der zu instanziierenden Komponenten an, die dem angegebenen Typ entsprechen. Ist ein Typ angegeben, von dem mehrere andere Typen abgeleitet wurden, so wird von jedem abgeleiteten Typ die angegebene Anzahl von Komponenten instanziiert.
Hinweis:
Manuelles Aktualisieren der Erweiterungspunkte:
Ist die Anzahl der zu instanziierenden Komponenten größer als es die Angabe für die Multiplizität zulässt, wird die Instanziierung nicht durchgeführt. Es wird eine entsprechende Fehlermeldung ausgegeben.
Aktualisieren der Erweiterungspunkte beim Erstellen eines Projekts:
Ist die Anzahl der zu instanziierenden Komponenten größer als es die Angabe für die Multiplizität zulässt, wird die Instanziierung durchgeführt. Es wird empfohlen das Modell über den Menüpunkt Modell > Modell validieren auf seine Gültigkeit hin zu prüfen.
- Die Formel wird im Kontext der zu instanziierenden Komponente ausgewertet, d.h. genau so, als ob die Instanz am Erweiterungspunkt eingebaut wäre. Es kann auf alle Parameter der Instanz zugegriffen werden, und natürlich auch auf die umhüllende Komponente (mc). Es ist allerdings nicht möglich, auf enthaltene Komponenten der Instanz zuzugreifen (als z.B. mos oder rmos auf die Instanz selbst).
- Bei eingeschaltetem Formel-Cache (Engineering.StartFormulaCacheCommand) darf das Ergebnis der in der Auswahlformel verwendeten Ausdrücke rmos und mos keine auf Erweiterungspunkte eingefügten Objekte enthalten. Kann dies nicht vermieden werden, muss gegebenenfalls das Engineering.UpdateExtensionsCommand mehrfach ausgeführt werden oder der Formel-Cache ausgeschaltet sein (Engineering.StopFormulaCacheCommand).
- Debugging/Fehlersuche:
Liefert die Auswahlformel keinen booleschen Wert, oder tritt ein Formelfehler auf, wird dies nach Aktualisierung der Erweiterungspunkte angezeigt: Die betroffenen Bibliothekskomponenten werden instanziiert und es wird - analog zum Disabler - auf der Parameterseite das Ergebnis der Auswahlformel für diese Projektkomponente angezeigt. Das Ergebnis ist mit dem Formel-Inspektor analysierbar.
Hinweis:
Kann die Auswahlformel keinen Wert ermitteln, verhält sich der Einfügeplatz, bzw. Erweiterungspunkt so als ob keine Auswahlformel angegeben ist.
Die Modellvariable Maximale Anzahl der Klassen, die für die Auswahlformel eines Einfügeplatzes auszuwerten sind definiert einen Grenzwert, ab dem eine Warnung ausgegeben wird. Die Warnung weist den Benutzer darauf hin, dass die Auswertung der Auswahlformel eine längere Zeit in Anspruch nehmen wird. Dieser Fall tritt ein, wenn zahlreiche Bibliothekskomponenten dem Typ des Erweiterungspunkts entsprechen (wenn z.B. Engineering.Component als Typ gewählt wird). Die Auswahlformel muss dann für jede in Frage kommende Bibliothekskomponente berechnet werden.
Beispiel:
Auswahlformel:
=mc.$SelectionConditionAndType.name.startsWith('A')
Hier wird die Instanziierung von einer Bedingung in der umhüllenden, mechatronischen Komponente, kombiniert mit einer Namenskonvention der Klasse abhängig gemacht.
Hinweis:
Beim Instanziieren per Drag & Drop wird die Auswahlformel für den Einfügeplatz oder Erweiterungspunkt während des Drag-Vorgangs nicht berechnet, sodass die Instanziierung nicht ausgeschlossen werden kann. Sind in der instanziierten Komponente weitere Erweiterungspunkte mit Auswahlformeln enthalten, werden diese ausgewertet.