18.4.8.4.2 データのフィルタリング

データ・フィルタリング操作について学習します。

APEXエンジンでは、データ・フィルタリング操作(アプリケーションにおいてエンド・ユーザーが実行できる)のほぼすべてが、サーバー側での実行のためにBOSS RESTエンドポイントに委任されます。これには、大/小文字を区別しない、トークン化された行検索も含まれます。BOSS RESTデータ・ソースの「リソース・タイプ」が「ビジネス・オブジェクト/ビュー」または「抽出ビュー」である場合、この行検索は、大/小文字の区別なしのBOSS likeフィルタの適切な組合せに変換されます。一方、「リソース・タイプ」が「検索ビュー」である場合、この行検索は、全文検索の迅速化のために、適切なBOSSキーワード検索に変換されます。

また、リージョンを定義するときに、BOSS RESTサービスのフィルタ式を使用して外部フィルタを指定できます。これは、RESTペイロードからの大/小文字の区別ありのビジネス・オブジェクト属性名を使用する、SQLのような述語です。参考までに、これらの属性名は、各データ・プロファイル列の定義のSelectorフィールドで示されているものです。このフィルタ言語では、ANDORの結合、カッコを使用したグループ化と演算がサポートされます。

BOSS RESTデータ・ソースでadditionalExternalFilterという名前の「URLパターン」パラメータが定義されている場合は、このパラメータに実行時に値を割り当てて、より動的なフィルタリングのユースケースに対応できます。この値は、左カッコと右カッコのバランスが取れている、構文的に有効なBOSSフィルタ述語である必要があります。そうでないと、実行時にinvalid filterエラーが発生します。

フィルタの例を次に示します:

(category like 'SALES%' or (purchased >= '2023-07-15' and purchased <='2023-07-31'))

次のようなチルダで修飾された演算子を使用することで、大/小文字の区別なしで検索を実行できます:

  • lastName ~= 'STAR'
  • lastName ~like '%STAR%'

外部フィルタではバインド変数はサポートされていませんが、APEXの置換パラメータ(&P3_NAME.など)はサポートされています。置換パラメータは、フィルタ述語の右側として使用する必要があり、その値は、実行時に置換後の値に置き換えられるときに、APEXエンジンによって自動的に一重引用符で囲まれます。たとえば、外部WHERE句は次のようになります:

lastName ~= &P3_NAME.

この例では、P3_NAMEページ・アイテムに値CHIPが含まれていると仮定しており、BOSS RESTサービスでは次のような外部WHERE句が認識されます:

lastName ~= 'CHIP'

このことは数値の場合も有効です。BOSSサーバーのフィルタ処理では、次のようなフィルタ式の右側にある数値も引用符で囲むことができるためです:

numberOfDependents > &P3_NUM_DEPS.

この例では、ページ・アイテムの値が2であると想定しており、次のようになります:

numberOfDependents > '2'