AssertCondition ポリシー

このページは Apigee と Apigee ハイブリッドに適用されます。

Apigee Edge のドキュメントを表示する。

概要

AssertCondition ポリシーは、リクエスト フローまたはレスポンス フローのランタイムで条件文を評価します。フロー変数に基づいて条件を定義し、このポリシーを使用して条件を表明できます。条件は常にブール値(true または false)に評価されます。条件文を記述する方法の詳細については、条件のリファレンスをご覧ください。

条件を評価した後、AssertCondition ポリシーでは、評価の結果を assertcondition.policy-name.truthValue フロー変数に保存します。結果として生成されるフロー変数は、後続のコールアウトまたはオーケストレーションされたロジックで使用できます。条件が true と評価された場合、変数の値は true に設定されます。それ以外の場合は false に設定されます。複数の AssertCondition ポリシーを定義している場合は、変数名の policy-name が変数を一意に識別するために役立ちます。

このポリシーは、標準ポリシーであり、任意の環境タイプにデプロイできます。ポリシータイプと各環境タイプで使用可能かどうかは、ポリシータイプをご覧ください。

<AssertCondition>

<AssertCondition> ポリシーを定義します。このポリシーを使用すると、1 つまたは複数の条件が論理演算子で結合されている条件文を評価できます。条件でサポートされるすべての演算子については、演算子をご覧ください。

条件文の結果は、true または false のいずれかのブール値です。
デフォルト値 なし
必須かどうか 必須
型 複合型
親要素 なし
子要素 <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 より大きく 1,000 より小さいかどうかをチェックします。

<?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 変数の値が 1,200 の場合、assertcondition.MyAssertCondition.truthValue 変数は false に設定されます。

この要素には、すべてのポリシーに共通する次の属性があります。

属性 デフォルト 必須かどうか 説明
name なし 必須

ポリシーの内部名。name 属性の値には、英字、数字、スペース、ハイフン、アンダースコア、ピリオドを使用できます。この値は 255 文字を超えることはできません。

管理 UI プロキシ エディタで <DisplayName> 要素を追加して、ポリシーのラベルに使用する別の自然言語名を指定することもできます。

continueOnError false 省略可 ポリシーが失敗したときにエラーを返す場合は、false に設定します。これは、ほとんどのポリシーで想定される動作です。ポリシーが失敗した後もフローの実行を続行する場合は、true に設定します。関連情報:
enabled true 省略可 ポリシーを適用するには、true に設定します。ポリシーを無効にするには、false に設定します。ポリシーがフローに接続されている場合でも適用されません。
async   false 非推奨 この属性は非推奨となりました。

子要素のリファレンス

このセクションでは、<AssertCondition> の子要素について説明します。

<Condition>

評価する条件を指定します。Apigee で条件文を記述する方法の詳細については、条件のリファレンスをご覧ください。

デフォルト値 なし
必須かどうか 必須
型 文字列
親要素 <AssertCondition>
子要素 なし

<DisplayName>

name 属性に加えて、管理 UI プロキシ エディタでポリシーを別の、より自然な響きの名前でラベル付けするために使います。

<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
如需详细了解政策错误,请参阅您需要了解的政策错误相关信息。