AssertCondition ポリシー

このページの内容は ApigeeApigee ハイブリッドに該当します。

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
ポリシーエラーの詳細については、ポリシーエラーについて知っておくべきことをご覧ください。