StyleBook-Konfiguration

Eigenschaften-Default-Source-Konstrukt

Das Konstrukt properties-default-sources entspricht dem Konstrukt parameters-default-sources. Während das Parameter-Default-Sources-Konstrukt die Wiederverwendung vorhandener Parameter (aus anderen StyleBooks) in einem StyleBook ermöglicht, ermöglicht das Properties-Default-Sources-Konstrukt dem Benutzer, Eigenschaften einer Komponente basierend auf vorhandenen Quellen anzugeben.

Die Eigenschaften einer Komponente können auf verschiedene Abschnitte des StyleBook verteilt werden. Die Eigenschaften können beispielsweise aus 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 vorkommen, in der Definition der Komponente neu definieren. Dies ist eindeutig überflüssig und kann zu Fehlern führen. Um dieses Problem zu lösen, kann das Konstrukt properties-default-sources 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 eine lbvserver Konfiguration erstellt. Diese Komponente definiert die Eigenschaften von lbvserver 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
<!--NeedCopy-->

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 relevant lbvserver 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
<!--NeedCopy-->

Im obigen Beispiel führt die Verwendung des Konstrukt properties-default-sources zu einer Verringerung der Größe der Komponentendefinition, sodass Sie eine Komponente präzise definieren können. 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 wird persistencetype, wird diese Eigenschaft standardmäßig zur Konfiguration von lb-comp hinzugefügt, da sie eine Eigenschaft von persistencetype ist lbvserver. 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.

Eigenschaften-Default-Source-Konstrukt