Citrix Application Delivery Management

Detección de dependencias

Los componentes de un StyleBook pueden hacer referencia a propiedades o secciones de otros componentes del mismo StyleBook. Los componentes son bloques completos por sí mismos y es posible que no se escriban en el mismo orden en que tienen que ejecutarse. El compilador StyleBook comprueba el orden en que se escriben los componentes y, a continuación, los ejecuta en un orden lógico.

Ejemplo:

components:

  -

    name: lbvserver-comp

    type: ns::lbvserver

    properties:

      name: mylb

      ipv46: 10.102.190.15

      port: 80

      servicetype: HTTP

 -
    name: lb-sg-binding-comp

    type: ns::lbvserver_servicegroup_binding

    condition: $parameters.create-binding

    properties:

      name: $components.lbvserver-comp.properties.name

      servicegroupname: $components.sg-comp.properties.servicegroupname

-
    name: sg-comp

    type: ns::servicegroup

    properties:

      servicegroupname: mysg

      servicetype: HTTP

En el ejemplo anterior, hay tres componentes definidos: Lbvserver-comp, lb-sg-binding-comp y sg-comp. Cuando ejecuta este StyleBook, lbvserver-comp se crea por primera vez. El lb-sg-binding-comp hace referencia a lbvserver-comp propiedades, pero no se puede crear a continuación, aunque es el segundo componente definido en el StyleBook. Esto se debe a que el lb-sg-binding-comp también tiene una dependencia de la sg-comp que aún no se ha creado. Como resultado, el compilador reordena los componentes para que las dependencias de un componente se resuelvan en el momento en que se crea un componente y ejecuta esta lista reordenada de componentes. El orden de ejecución del StyleBook anterior es: lbvserver-comp, sg-comp, y lb-sg-binding-comp.

Por lo tanto, el autor de un StyleBook no necesita preocuparse por el orden correcto de los componentes. Los componentes pueden aparecer en cualquier orden. El compilador calcula el orden correcto de ejecución de los componentes en función de cómo los componentes se refieren entre sí. Tenga en cuenta que esto también se aplica a las secciones de sustituciones y salidas.

Dependencias cíclicas

Dado que un componente puede referirse a otro componente, es posible que el ciclo de dependencias se introduzca en la definición del StyleBook. Por ejemplo, si el componente A hace referencia a una propiedad definida en el componente B, que de nuevo hace referencia a una propiedad definida en el componente A. Este tipo de dependencia se denomina dependencias cíclicas. Las dependencias cíclicas no se pueden resolver automáticamente. El autor del StyleBook corrige manualmente la definición de StyleBook para eliminar dichas dependencias cíclicas. El compilador podrá identificar dependencias cíclicas, si existen, e informarlo.

El siguiente ejemplo muestra una dependencia cíclica de componentes:

components:

  -

    name: lbvserver-comp

    type: ns::lbvserver

    properties:

      name: $components.lb-sg-binding-comp.properties.name

      ipv46: 10.102.190.15

      port: 80

      servicetype: HTTP

  -

    name: lb-sg-binding-comp

    type: ns::lbvserver_servicegroup_binding

    condition: $parameters.create-binding

    properties:

      name: mylb

      servicegroupname: $components.sg-comp.properties.servicegroupname

  -

    name: sg-comp

    type: ns::servicegroup

    properties:

      servicegroupname: mysg

      servicetype: $components.lbvserver-comp.properties.servicetype

En el ejemplo anterior, hay tres componentes: lbvserver-comp, lb-sg-binding-compy sg-comp. El lbvserver-comp componente depende de lb-sg-binding-comp, lb-sg-binding componentes. Y, estos componentes dependen de sg-comp. El sg-comp componente depende de lbvserver-comp. Aquí, se forma un ciclo de dependencias entre estos componentes y esto no se puede resolver automáticamente. Como resultado, este StyleBook no se puede ejecutar. El compilador de StyleBook detecta esto e impide que StyleBook se importe a Citrix ADM.

Detección de dependencias