Export Variables from Fragment アサーション

Export Variables from Fragment アサーションは、ポリシー フラグメント内で作成されたコンテキスト変数に、「使用中」であるというフラグを付けるために使用されます。これによって、そのフラグメントを含んでいるどのポリシーでもその変数を使用できるようになります。たとえば、 XPath ベースのアサーション(Evaluate Request XPath または Evaluate Response XPath)がフラグメント内で使用され、かつ含まれるポリシー内で XPath コンテキスト変数が参照されている場合、Export Variables from Fragment アサーション では、その変数が作成され使用可能であることが保証されます。
gateway90
Export Variables from Fragment アサーションは、ポリシー フラグメント内で作成されたコンテキスト変数に、「使用中」であるというフラグを付けるために使用されます。これによって、そのフラグメントを含んでいるどのポリシーでもその変数を使用できるようになります。たとえば、 XPath ベースのアサーション(Evaluate Request XPath または Evaluate Response XPath)がフラグメント内で使用され、かつ含まれるポリシー内で XPath コンテキスト変数が参照されている場合、Export Variables from Fragment アサーション では、その変数が作成され使用可能であることが保証されます。
コンテキスト変数を「使用可能にする」必要がある理由
性能を最大にするために、
Layer7 API Gateway
はカスタム コンテキスト変数を、その変数が別のアサーションで使用されることを検出した場合にのみ作成します。ポリシー フラグメントでは、そのフラグメント内の変数が、そのフラグメントが含まれるポリシーで使用されるかどうかは事前に判断できないため、その変数は作成されません。Export Variables from Fragment アサーションでは、ユーザが特定の変数に「使用中」であるというフラグを立てることができます。
コンテキスト変数を作成するアサーションの後に、ポリシー フラグメントに対してこのアサーションを追加します。
Export Variable from Fragment アサーションは、ポリシー フラグメントでのみ使用され、かつ、XPath ベースのアサーションも存在する場合にのみ使用されます。フラグメントの外部で使用された場合、XPath コンテキスト変数がそのシナリオ内で自動的に使用可能であるため、このアサーションは追加の機能を提供しません。
グローバル ポリシー フラグメント内での使用
Export Variables from Fragment アサーションは、グローバル ポリシー フラグメント内で使用される場合、指定されている変数の値を、「request.shared」のプレフィックスを付けてその親ポリシーに自動的にコピーします。これによって、その値を監査シンク ポリシーなどでより簡単に使用できるようになります。
下記の例では、このアサーションがグローバル ポリシー フラグメントで使用された場合、選択されている 2 つの変数の値が、以下の新しいコンテキスト変数にコピーされます。
$ {request.shared.requestXpath.element}
$ {request.shared.requestXpath.result}
例: 監査シンク ポリシー内のグローバル ポリシー フラグメントからの変数へのアクセス
以下の例では、監査シンク ポリシーから「message-received」変数にアクセスする方法を示します。
  1. 以下のアサーションを含む、「message-received」グローバル ポリシー フラグメントを作成します。
    Audit Messages in Policy
    (WARNING)
    Set Context Variable
    varMessageReceived as String to: Hello from message-received global policy
    Export Variables from Fragment: varMessageReceived
  2. このアサーションを使用して、カスタム監査シンク ポリシーを作成します。
    Add Audit Details: log, custom logger "audit": "varMessageReceived=${request.shared.varMessageReceived}"
  3. 任意のサービスを処理します。
  4. Layer7 API Gateway
    のログには以下の行が記録されます。
    varMessageReceived=Hello from message-received global policy
アサーションの使用
  1. 以下のいずれかを実行します。
    • アサーションを追加するには、ポリシー フラグメントを作成するかまたは既存のポリシー フラグメントを編集した後、ポリシー作成ウィンドウにそのアサーションを追加します。
    • 既存のアサーションの設定を変更するには、下記の手順 2 に進みます。
  2. ポリシー ウィンドウで[
    Export Variables from Fragment
    ]を右クリックし、[
    Export Variables from Fragment Properties
    ]を選択します。このアサーションのプロパティが表示されます。 
  3. フラグメントの外側のポリシーで使用可能にする各変数を選択します。
  4. 変数の詳細については、「Evaluate Request XPath アサーション」または 「Evaluate Response XPath アサーション」を参照してください。
    変数のプレフィックスが XPath アサーションで変更される場合、新しい名前がプロパティに反映されます。ただし、以前に選択されていた変数は、古い変数名の下に表示されたままです。これによって、未定義の変数に関する検証の警告が発生します。その場合は、[Export Variables from Fragment]に戻り、更新された正しい変数を再度選択します。
  5. 完了したら、[
    OK
    ]をクリックします。