18.4.7.4 Oracle Cloud SaaS AppsのRESTデータ・ソース実行時機能
Oracle Cloud SaaS アプリケーションの実行時機能について説明します。
実行時に、RESTエンドポイントに基づくRESTデータ・ソースは、ページ区切り、データのフィルタリング、順序付けおよびバッチ損失更新保護をサポートします。合計結果数の計算の有効化と、バッチDMLの必要に応じた無効化をサポートします。
ページ区切りと合計結果数の計算
ユーザー・インタフェースの目的とREST同期の両方について、RESTデータ・ソースはエンドポイントから返された行のページングをサポートします。
エンド・ユーザーへのページ区切り表示(1-20 of 200など)の表示をサポートするには、「設定」タブに移動し、「合計結果の使用」を「はい」に設定します。この設定により、アプリケーションは、すべての結果を取得することなく結果の合計数を表示します。ページ区切りをサポートしていない特定のRESTエンドポイントを使用している場合は、それに対応するデータ・ソースの「ページ区切りの使用」を「いいえ」に構成します。
データのフィルタリング
APEXエンジンは、エンド・ユーザーがアプリケーションで実行できるほぼすべてのデータ・フィルタリング操作を、サーバー側で実行するためにRESTエンドポイントに委任します。これには、大/小文字を区別しないトークン化された行検索も含まれます。また、必要に応じて、リージョンを定義するときにサービスのフィルタ式を使用することでExternal Filter
を指定できます。これは、RESTペイロードの大/小文字を区別するビジネス・オブジェクトの属性名を使用するSQLのような述語です。参考までに、属性名は各データ・プロファイル列の定義の「セレクタ」フィールドに表示されているものです。このフィルタ言語では、AND
とOR
の結合、カッコを使用したグループ化と演算がサポートされます。たとえば、フィルタは次のようになります:
(category like 'SALES%' or (purchaseDate between '2023-07-15' and '2023-07-31'))
大/小文字を区別しない検索は、upper()
で属性名をラップすることで実行できます。たとえば:
upper(lastName) = 'STAR'
外部フィルタではバインド変数はサポートされませんが、APEXの置換パラメータ(&P3_NAME.
など)はサポートされます。こうした変数は、フィルタ述語の右側として使用する必要があり、実行時に置換された値に置き換えられるときに、その値はAPEXエンジンによって自動的に一重引用符で囲まれます。たとえば、外部のwhere句は次のようになります:
upper(lastName) = &P3_NAME.
P3_NAME
ページ・アイテムに値CHIP
が含まれているとすると、RESTサービスは次の外部WHERE句を認識します:
upper(lastName) = 'CHIP'
データの順序付け
APEXエンジンは、エンド・ユーザーが実行できるデータの順序付けを、サーバー側で実行するためにRESTエンドポイントに委任します。また、必要に応じて、RESTデータ・ソースに基づいてリージョンを定義するときに、外部並べ替え基準句を指定できます。その構文は、1つ以上の属性名のカンマ区切りリストで、大/小文字が区別され、それぞれに昇順の場合は:asc
、降順の場合は:desc
の接尾辞を付けます。たとえば、次の外部並替え基準の式は、部門番号の基準で昇順にソートし、採用日の基準で降順にソートします。
departmentNumber:asc,dateHired:desc
バッチの失われた更新保護
エンド・ユーザーがRESTデータ・ソースから1つ以上のデータ行を変更すると、APEXは効率的なバッチ操作として、失われた更新保護を適用します。たとえば、ユーザーが対話グリッド・リージョンで4つの新しい行を挿入し、3つの行を変更し、2つの行を削除したときに、「保存」をクリックすると、APEXエンジンは、RESTエンドポイントへの1回のラウンドトリップで9行すべてに対して失われた更新保護のチェックを実行します。
バッチDML
エンド・ユーザーがRESTデータ・ソースの1つ以上のデータ行を変更すると、APEXエンジンは、デフォルトで変更されたすべての行を単一の効率的なバッチ操作に保存します。たとえば、ユーザーが対話グリッド・リージョンで4つの新しい行を挿入し、3つの行を変更し、2つの行を削除して、「保存」をクリックするとします。前述の失われた更新保護のチェックを通過すると、APEXエンジンは1回のラウンドトリップで9行すべてをRESTエンドポイントに送信します。つまり、すべての行の変更が一単位として成功するか、それらすべてが一単位として失敗することを意味します。これにより、部分的に成功したトランザクションを元に戻すカスタムのビジネス・ロジックが不要になり、アプリケーション開発が簡略化されます。
RESTエンドポイントの操作中にバッチDMLを使用すると、そのエンドポイントが予期したとおりに動作しないことに気付いた場合は、これを「設定」タブで無効にできます。「バッチDMLの使用」を「いいえ」に設定します。RESTデータ・ソースに対してバッチDMLが無効になっている場合、それぞれの削除、挿入および更新は、RESTエンドポイントへの個別のコールを使用して実行されます。
自動的にAPEXエラーとして表示する検証エラー
エンド・ユーザーがページへの変更内容を保存すると、RESTデータ・ソースに基づくリージョンでは、自動的に検証エラーがAPEXエラーとしてレポートされます。それにより、ユーザーは、サーバー側のビジネス・オブジェクト検証ルールまたはトリガーによって発生した検証の失敗を、APEXアプリケーション自体の内部で定義されたエラー・メッセージと同じ見慣れた方法で確認できます。複数のエラー・メッセージは、それぞれAPEXエラー・メッセージの新しい行に表示されます。プログラムでエラー・メッセージを操作する場合は、エラー・メッセージ間のデリミタとして4文字の文字列"<br>
"を使用して、1つのメッセージを複数の個別のエラー・メッセージに分割します。