AssertCondition 政策

本页面适用于 ApigeeApigee Hybrid

查看 Apigee Edge 文档。

政策图标

概览

AssertCondition 政策在运行时在请求或响应流中评估条件语句。您可以根据流变量定义条件,并使用此政策来声明条件。条件的计算结果始终为布尔值(true 或 false)。如需详细了解如何编写条件语句,请参阅条件参考文档

评估条件后,AssertCondition 政策会将评估结果存储在 assertcondition.policy-name.truthValue 流变量中。您可以在后续的调出或编排逻辑中使用生成的流变量。如果条件计算结果为 true,则变量的值设置为 true,否则为 false。如果您已定义多个 AssertCondition 政策,则变量名称中的 policy-name 可帮助您唯一标识变量。

此政策为标准政策,可部署到任何环境类型。如需了解政策类型以及在每种环境类型中的可用性,请参阅政策类型

<AssertCondition>

定义 <AssertCondition> 政策。 使用此政策,您可以评估条件语句,其中包含一个或多个由逻辑运算符连接的条件。如需了解条件中所有受支持的运算符,请参阅运算符

条件语句的结果是布尔值,可以是 truefalse
默认值 不适用
是否必需? 必需
类型 复杂类型
父元素 不适用
子元素 <Condition>
<DisplayName>

下表提供了 <AssertCondition> 的子元素的简要说明:

子元素 是否必需? 说明
<Condition> 指定要评估的条件。
<DisplayName> 可选 政策的自定义名称。

<AssertCondition> 元素使用以下语法:

语法

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssertCondition">
    <!-- Display name for this policy -->
    <DisplayName>DISPLAY_NAME</DisplayName>
    <!-- Assertion's condition where operators are defined -->
    <Condition>CONDITIONAL_STATEMENT</Condition>
</AssertCondition>

示例

以下示例将检查 google.dialogflow.my-prefix.claimAmount 变量是否大于 0 且小于 1000。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssertCondition continueOnError="false" enabled="true"
        name="MyAssertCondition">
    <DisplayName>Assert My Condition</DisplayName>
    <Condition>(google.dialogflow.my-prefix.claimAmount > 0)
                and
               (google.dialogflow.my-prefix.claimAmount LesserThan 1000)</Condition>
</AssertCondition>

在此示例中:

  • 如果 google.dialogflow.my-prefix.claimAmount 变量的值为 500,则条件的计算结果为 true,因此 assertcondition.MyAssertCondition.truthValue 变量会设置为 true
  • 不过,如果 google.dialogflow.my-prefix.claimAmount 变量的值为 1200,则 assertcondition.MyAssertCondition.truthValue 变量会设置为 false

此元素具有所有政策中常见的以下属性:

属性 默认 是否必需? 说明
name 必需

政策的内部名称。name 属性的值可以包含字母、数字、空格、连字符、下划线和英文句点。此值不能超过 255 个字符。

(可选)使用 <DisplayName> 元素在管理界面代理编辑器中给政策添加不同的自然语言名称标签。

continueOnError 可选 设置为 false 可在政策失败时返回错误。这是大多数政策的预期行为。设置为 true,即使在政策失败后,仍可以继续执行流。另请参阅:
enabled true 可选 设置为 true 可实施政策。 设为 false 可关闭政策。即使政策仍附加到某个流,也不会强制执行该政策。
async   已弃用 此属性已弃用。

子元素参考

本部分介绍 <AssertCondition> 的子元素。

<Condition>

指定要评估的条件。如需详细了解如何在 Apigee 中编写条件语句,请参阅条件参考文档

默认值 不适用
是否必需? 必需
类型 字符串
父元素 <AssertCondition>
子元素

<DisplayName>

除了用于 name 属性之外,还可用于在管理界面代理编辑器中使用其他更加自然的名称标记政策。

<DisplayName> 元素适用于所有政策。

默认值 不适用
是否必需? 可选。如果省略 <DisplayName>,则会使用政策的 name 属性的值
类型 字符串
父元素 <PolicyElement>
子元素

<DisplayName> 元素使用以下语法:

语法

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

示例

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

<DisplayName> 元素没有属性或子元素。

错误代码

本部分介绍当此政策触发错误时返回的故障代码和错误消息,以及由 Apigee 设置的故障变量。在开发故障规则以处理故障时,请务必了解此信息。如需了解详情,请参阅您需要了解的有关政策错误的信息处理故障

运行时错误

政策执行时可能会发生这些错误。

故障代码 HTTP 状态 原因
steps.assertcondition.ConditionEvaluationFailed 500 未能评估条件语句。导致此错误的原因有很多,包括运行时变量中的值不正确。

部署错误

在您部署包含此政策的代理时,可能会发生这些错误。

错误名称 原因
InvalidCondition 政策无法验证条件语句。导致此错误的原因有很多,包括格式错误或使用不受支持的运算符。

故障变量

只要政策中存在执行错误,Apigee 就会生成错误消息。您可以在错误响应中查看这些错误消息。很多时候,系统生成的错误消息可能与您的产品上下文无关。您可能希望根据错误类型自定义错误消息,以使消息更有意义。

如需自定义错误消息,可以使用故障规则或 RaiseFault 政策。如需了解故障规则与 RaiseFault 政策之间的差异,请参阅 FaultRule 与 RaiseFault 政策。您必须使用故障规则和 RaiseFault 政策中的 Condition 元素来检查条件。Apigee 提供每个政策独有的故障变量,并在政策触发运行时错误时设置故障变量的值。通过使用这些变量,您可以检查特定的错误情况并采取适当的操作。如需详细了解如何检查错误条件,请参阅构建条件

下表介绍了特定于此政策的故障变量。

变量 地点 示例
fault.name="FAULT_NAME" FAULT_NAME 是故障名称,如运行时错误表中所列。故障名称是故障代码的最后一部分。 fault.name Matches "ConditionEvaluationFailed"
AssertCondition.POLICY_NAME.failed POLICY_NAME 是抛出故障的政策的用户指定名称。 AssertCondition.My-AssertCondition.failed = true
如需详细了解政策错误,请参阅您需要了解的政策错误相关信息