Eigenschaften-Default-Source-Konstrukt
Das Eigenschaften-default-sources-Konstrukt ist analog zum Konstrukt parameters-default-sources. Während das parameters-default-sources-Konstrukt die Wiederverwendung vorhandener Parameter (aus anderen StyleBooks) in einem StyleBook ermöglicht, Properties-default-sources-Konstrukt dem Benutzer Eigenschaften einer Komponente basierend auf vorhandenen Quellen angeben.
Die Eigenschaften einer Komponente können über verschiedene Abschnitte des StyleBook verteilt werden. Beispielsweise können die Eigenschaften von Objektparametern, Substitutionen, die ein Objekt zurückgeben, Eigenschaften anderer Komponenten oder Ausgaben anderer Komponenten stammen. In solchen Fällen müssen Sie die Eigenschaften, die in anderen Abschnitten des StyleBook in der Definition der Komponente auftreten, neu definieren. Offensichtlich ist dies redundant und kann zu Fehlern führen. Um dieses Problem zu lösen, können Eigenschaften-default-sources-Konstrukt verwendet werden. Das Eigenschaften-default-sources-Konstrukt ist eine Liste, in der jedes Element eine Quelle für einige Eigenschaften der Komponente identifiziert.
Betrachten Sie zum Beispiel eine Komponente, die einelbvserver
Konfiguration erstellt. Diese Komponente definiert die Eigenschaften vonlbvserver
wie folgt.
parameters: - name: lb type: ns::lbvserver components: - name: lb-comp type: ns::lbvserver properties: name: $parameters.lb.name ipv46: $parameters.lb.ipv46 port: $parameters.lb.port servicetype: $parameters.lb.servicetype lbmethod: $parameters.lb.lbmethod
Beachten Sie im obigen Beispiel, dass die Werte für alle Eigenschaften, die im Komponentenabschnitt definiert sind, aus $parameters.lb Objekt genommen werden. Obwohl sie aus einer einzigen Quelle stammen, werden die Eigenschaften im StyleBook erneut definiert. Wenn außerdem ein neuer Unterparameter für das Objekt $parameters.lb hinzugefügt wird, der für die Konfiguration des relevantlbvserver
ist, müssen Sie die lb-comp-Komponente aktualisieren, um die neue Eigenschaft hinzuzufügen, die dem neuen Unterparameter entspricht.
Um eine Neudefinition von Eigenschaften zu vermeiden und alle relevanten Eigenschaften einer Komponente abzurufen, ohne sie explizit im Eigenschaftenabschnitt aufzulisten, kann Eigenschaftendefault-sources-Konstrukt verwendet werden. Das obige Beispiel kann wie folgt geschrieben werden.
parameters: - name: lb type: ns::lbvserver components: - name: lb-comp type: ns::lbvserver properties-default-sources: - $parameters.lb
Im obigen Beispiel führt die Verwendung von Eigenschaften-default-Source-Konstrukt zu einer Verringerung der Größe der Komponentendefinition, und dies ermöglicht es Ihnen, eine Komponente prägnant zu definieren. Darüber hinaus werden jedes Mal, wenn sich die Quelle der Eigenschaften der Komponente ändert, die Änderungen automatisch reflektiert. Wenn beispielsweise eine neue Eigenschaft im $parameters.lb-Objekt hinzugefügt wirdpersistencetype
, wird diese Eigenschaft standardmäßig zur Konfiguration von lb-comp hinzugefügt, da sie eine Eigenschaft vonpersistencetype
istlbvserver
. Somit bietet Eigenschaften-default-sources-Konstrukt eine dynamische Schnittstelle, um die Komponenten zu definieren, ohne sich Gedanken über Änderungen an den Quellen der Eigenschaften der Komponente zu machen.
Berechnung der Eigenschaften der Komponente
In diesem Abschnitt wird erläutert, wie die Eigenschaften abgerufen werden, wenn Eigenschaften-default-sources-Konstrukt in einer Komponente verwendet wird. Zunächst identifiziert der StyleBooks-Compiler die Liste der Eigenschaften für eine Komponente basierend auf ihrem Typ (im obigen Beispiel)lbvserver
. Als Nächstes ruft der Compiler diese Eigenschaften aus den mehreren Quellen in der Reihenfolge ab, in der sie definiert sind (im Abschnitt Eigenschaften-Standardquellen der Komponente). Wenn eine Eigenschaft in mehreren Quellen vorhanden ist, hat die Eigenschaft, die in der letzten Quelle angezeigt wird, Vorrang vor anderen. Schließlich kann eine Eigenschaft, die mit Eigenschaften-default-sources-Konstrukt abgerufen wird, im Eigenschaftenabschnitt der Komponente außer Kraft gesetzt werden. Es ist wichtig zu beachten, dass die Definition eines Komponentenabschnitts mindestens einen Eigenschaften-Standard-Sources-Abschnitt oder einen Eigenschaftenbereich enthält. Es kann beides haben.