参数条件

Last published : Oct 06, 2026
在 StyleBook 定义中,参数定义了 StyleBook 用户为创建配置包而提供的输入。有时,您可能希望修改参数的行为,如下所示:
  • 仅在满足条件时向用户显示某些参数。
  • 一个参数的允许值取决于另一个参数。
  • 仅在特定条件下将参数设置为强制。
在这些情况下,使用 parameters-conditions 部分定义参数条件。参数条件具有以下属性:
注意
目前,参数条件无法应用于列表对象中的参数。

“显示”或“隐藏”

当操作为 show 且指定条件返回 True 时,目标参数将显示在 GUI 上。
当操作为 hide 且指定条件返回 True 时,目标参数将从 GUI 上消失。
示例:
parameters-conditions:
  -
   target: $parameters.security-settings.cert-details
   action: show
   condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
最初,security-settings 参数的证书详细信息是隐藏的。当用户选择 SSL 或 SSL-Bridge 协议时,证书详细信息将显示。

“设置默认值”

当操作为 set-default 且指定条件返回 True 时,目标参数的值将设置为默认值。
示例 1:
parameters-conditions:
  -
   target: $parameters.port
   action: set-default
   condition: $parameters.protocol == "SSL"
   value: 443
  -
   target: $parameters.port
   action: set-default
   condition: $parameters.protocol != "SSL"
   value: 80
示例 2:
parameters-conditions:
  -
   target: $parameters.port
   action: set-default
   value: if-then-else($parameters.protocol == "SSL", 443, 80)
当用户选择 SSL 协议时,默认端口值设置为 443。对于其他协议,默认端口值设置为 80。示例 1 和 2 会得到相同的结果。

'设置必需'

当操作为 set-required 且指定条件返回 True 时,目标参数成为创建配置包的必填字段。
parameters-conditions:
  -
   target: $parameters.security-settings.cert-details
   action: set-required
   condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
最初,security-settings 参数可能不需要证书详细信息。当用户选择 SSL 或 SSL-Bridge 协议时,证书详细信息成为创建配置包的必填字段。

'设置允许值'

当操作为 set-allowed-values 且指定条件返回 True 时,目标参数允许您仅选择指定值。
示例-1:
parameters-conditions:
  -
   target: $parameters.app-name
   action: set-allowed-values
   value:
    - "SSL"
   condition: $parameters.lb-virtual-port ==  443
当用户将 443 指定为负载均衡器虚拟端口时,应用程序名称仅允许 SSL 选项。
示例-2;
parameters:
    -
      name: root-certificates
      label: "Root Certificates"
      type: object[]
      parameters:
        -
          name: certkey-name
          label: "SSL Root CertKey Name"
          type: string
          required: true
    -
      name: im-certificates
      label: "Intermediate Certificates"
      type: object[]
      parameters:
        -
          name: certkey-name
          label: "Name of Intermediate CertKey"
          type: string
          required: true
        -
          name: link-options
          label: "Link to Root or Intermediate CertKey?"
          type: string
          allowed-values:
            - Root
            - Intermediate
          default: Root
          required: true
        -
          name: link-certkey
          label: "Linked to Root/Intermediate CertKey Name"
          type: string
          required: true
parameters-conditions:
  -
    repeat: $parameters.im-certificates
    repeat-item: imcert
    parameters-conditions:
    -
      target: $imcert.link-certkey
      action: set-allowed-values
      condition: $imcert.link-options == "Root"
      value: $parameters.root-certificates[*].certkey-name
    -
      target: $imcert.link-certkey
      action: set-allowed-values
      condition: $imcert.link-options == "Intermediate"
      value: $parameters.im-certificates[*].certkey-name
此示例是关于为 SSL 证书设置值的。参数条件中的重复构造会遍历所有中间证书 (im-certificates),并检查每个证书的 link-options 参数。
如果 link-options 参数匹配某个值,则 link-certkey 参数中允许的值将添加到相应的证书列表中。
例如,如果 link-options 参数是 Root,则 link-certkey 参数中允许的值将添加到 root-certificate 列表中。
以下表示法用于将证书添加到列表中:
  • 对于根证书:
    $parameters.root-certificates[*].certkey-name
  • 对于中间证书:
    $parameters.im-certificates[*].certkey-name

'设置标签'

当操作为 set-label 且指定条件返回 True 时,目标参数的标签将更改为指定文本。
示例:
parameters-conditions:
  -
   target: $parameters.app-name
   action: set-label
   value: if-then-else($parameters.lb-service-type == "TCP", "TCPApp","UDPApp")
当用户选择负载均衡器协议为 TCP 时,应用程序的标签将更改为 TCPApp。如果用户选择其他选项,应用程序的标签将更改为 UDPApp。

'设置描述'

当操作为 set-description 且指定条件返回 True 时,目标参数的描述将更改为指定文本。此描述将显示在目标参数的工具提示中。
示例:
parameters-conditions:
  -
   target: $parameters.app-name
   action: set-description
   value: if-then-else($parameters.lb-service-type == "TCP", "Select a TCP application name","Select a UDP application name")
当用户选择负载均衡器协议为 TCP 时,应用程序的工具提示将显示文本:Select a TCP application name。如果用户选择其他选项,应用程序的描述将显示 Select a UDP application name。

'折叠窗格' 或 '展开窗格'

当操作为 collapse-pane 且指定条件返回 True 时,目标参数的窗格将在 GUI 中折叠。
当操作为 expand-pane 且指定条件返回 True 时,目标参数的窗格将在 GUI 中展开。
示例:
parameters-conditions:
  -
    target: $parameters.security-settings.cert-details
    action: expand-pane
    condition: $parameters.protocol in ["SSL", "SSL-BRIDGE"]
最初,security-settings 参数的证书详细信息窗格可能未展开。当用户选择 SSL 或 SSL-Bridge 协议时,证书详细信息窗格将在 GUI 上展开。

'设置模式'

当操作为 set-pattern 且指定条件返回 True 时,目标参数字段将设置为指定模式。
示例:
parameters-conditions:
  -
    target: $parameters.app-name
    action: set-pattern
    value: "[a-z]+"
在此示例中,应用程序的名称只允许小写字母字符。

嵌套参数条件

在 StyleBook 定义中,您可以在一个参数条件中指定另一个参数条件。这些条件称为嵌套参数条件,并使用重复构造来定义这些条件。当您想将一个参数的操作应用于另一个参数时,嵌套参数条件非常有用。
示例:
parameters-conditions:
  -
    repeat: $parameters.lbvservers
    repeat-item: lbvserver
    parameters-conditions:
      -
        target: $lbvserver.port
        action: set-allowed-values
        condition: $lbvserver.protocol == "HTTPS"
        value: $parameters.ssl-ports
在此示例中,当用户为负载均衡虚拟服务器选择 HTTPS 协议时,端口值会动态填充。并且,它适用于列表中的每个负载均衡虚拟服务器。