3 新機能
Oracle APEXリリース22.2には、多数の新機能が含まれています。次の新機能は、APEXリリース22.1およびそれ以前のリリースには存在しません。
- アプリケーション検索
- 「APIの呼出し」プロセス・タイプ
- 新しい「動的コンテンツ」リージョン
- 更新された承認機能
- ページ・アイテムのセッション・ステートのデータ型: CLOB
- 日付ピッカー
- クラシック・レポートと対話モード・レポートでのテンプレート・ディレクティブのサポート
- 「数値」ページ・アイテムの機能拡張
- ベクターベースのマップのサポート
- プログレッシブWebアプリケーションの機能拡張
- 動的アクションのアクションのネーミング
- リージョンのランドマーク・サポート
- 「デバウンス」および「スロットル」動的アクション
- 更新されたリッチ・テキスト・エディタ
- 「ドロワー」モーダル・ダイアログ・テンプレート
- 更新された「グローバル検索」(「スポットライト検索」)
- JavaScript APIの更新
- PL/SQL APIの更新
- JavaScriptライブラリのアップグレード
3.1 アプリケーション検索
- 検索可能なデータ・ソース、検索機能および表示テンプレートを定義することで、複数の検索構成を作成します
- ローカル・データベース内の表を検索するか、REST対応SQLまたは外部RESTデータ・ソースを使用します
- 言語分析検索機能とファジー検索機能にOracleテキストを活用します
- 単一のアプリケーションに複数の検索ウィジェットを追加することで、エンド・ユーザーに検索機能を提供します
- 次のオプションを構成できます:
- ページ区切り
- 逐次検索
- カスタム・レイアウト
- ページ・サイズ制限
- 結果表示件数
- 遅延ロード
- ソート
- 問合せが入力されなかった場合と結果が見つからなかった場合のカスタム・メッセージ
3.2 「APIの呼出し」プロセス・タイプ
- ページ・デザイナでは、自動的にパラメータが事前設定され、一致するページ・アイテムまたは対話グリッド列(使用可能な場合)にそれらがマップされます。
- 「パラメータの同期」を使用してパラメータ定義をリフレッシュします。
- 「APIの呼出し」は、PL/SQLデータ型(
NUMBER
、DATE
、TIMESTAMP
、BOOLEAN
、CLOB
、BLOB
など)に十分に対応しています。 - PL/SQLレコードなどの複合データ型がサポートされています。
- パラメータ値に静的値、SQL問合せ、ページ・アイテム、式、およびファンクションの結果が移入されます。
- パラメータまたはファンクションの出力がページ・アイテムに格納されます。
- 型変換でページ・アイテムの書式マスクが自動的に使用されます。
BOOLEAN
変換で「切替え」および「チェックボックス」アイテム・タイプの構成が自動的に使用されます。
制限事項
Oracleデータベース12r1では、BOOLEAN
パラメータがある場合は「APIの呼出し」を使用できません。
3.3 新しい「動的コンテンツ」リージョン
- リージョン・ソースによってHTML値がCLOBとして返される必要があります。この値は、HTPパッケージを介して出力されなくなります。
- このリージョンはリフレッシュ可能です。
- このリージョンでは遅延ロードがサポートされています。
- このリージョンでは、PL/SQLおよびJavaScript (MLE)がサポートされています。
select application_id, page_id, region_name
from apex_application_page_regions
where source_type = 'PL/SQL';
3.4 更新された承認機能
新機能
承認コンポーネントに新しい機能があります。
タスク定義のコピー: 開発者が、同じアプリケーション内で、またはあるアプリケーションから別のアプリケーションに、既存のタスク定義をコピーできるようになりました。「参加者」、「アクション」および「パラメータ」がコピーされます。タスク定義で使用されている共有コンポーネント(電子メール・テンプレートやRESTデータ・ソースなど)は、ターゲット・アプリケーションにコピーされます(まだ存在しない場合)。
「情報のリクエスト」と「情報の発行」:タスク所有者が、タスクの完了前にさらに情報をリクエストできるようになりました。これにより、タスクがタスク・イニシエータに送り返されます。タスク・イニシエータは、不足している情報を入力した後、承認を受けるためにそれを所有者に返します。
アクションのロギング: アクションをタスク履歴ログに記録できるようになりました。タスク定義アクション・エディタでロギングを構成します。成功したアクション、失敗したアクション、またはすべてのアクションをログに記録するか、アクションをログに記録しないかを選択できます。成功メッセージまたはエラー・メッセージを定義すると、タスク履歴の「メッセージ」列にそれが追加されます。
期日の更新: ビジネス管理者が、進行中のタスクの期日を更新できるようになりました。期日の変更は、現在のタスク・インスタンスにのみ影響します。タスク定義で設定された期日は変更されません。
- 「期日タイプ」。これは、
INTERVAL
、SQL QUERY
、EXPRESSION
、FUNCTION BODY
またはSCHEDULER_EXPRESSION
として設定できます。 - 期日言語。これは、「期日タイプ」が
SQL QUERY
、EXPRESSION
またはFUNCTION BODY
である場合に使用されます。それ以外の場合、これはNull
になります。 - 期日間隔。「期日タイプ」が
INTERVAL
である場合、この値は、ISOまたはSQL形式での間隔となります。それ以外の場合は、このフィールド内の問合せまたは式を使用してその日付が評価されます。
詳細日付構成: 「期日タイプ」がSCHEDULER_EXPRESSION
である場合は、式フィールドに、有効なDBMS_SCHEDULER
フィルタリング式が含まれている必要があります。APEXでは、実行時に、DBMS_SCHEDULER.EVALUATE_CALENDAR_STRING()
を使用してその式が評価されます。
ISOまたはSQL間隔形式を選択した場合、22.2で作成された新しいタスク定義は、「期日タイプ」がINTERVAL
になります。
- 承認または却下が可能な状態である
- 期限切れになっている。つまり、もう承認も却下もできない
- 同じタスク定義から新しい期日で新規タスクとして更新されている
- 期限切れ前: タスク期日前に発生するアクションの場合。
- 失効: タスク期日より後に発生するアクションの場合。
新しいAPI
apex_approval
パッケージには、次の新しいAPIがあります。
apex_approval.request_more_information()
: タスクの実際の所有者が、タスク・イニシエータからさらに情報を入手するために使用します。apex_approval.submit_information()
: タスク・イニシエータが、タスクの実際の所有者にさらに情報を送信するために使用します。apex_approval.set_due()
: タスク・イニシエータまたはビジネス管理者が、タスクの期日を設定または更新するために使用します。apex_approval.add_to_history()
: アクションの実行時にタスク履歴にカスタム・メッセージを記録するために、タスク定義のPL/SQLコードで使用します。apex_approval.renew_task()
: ビジネス管理者が、期限切れのタスクを更新するために使用します。apex_approval.handle_task_deadlines()
: 22.2では、バックグラウンド・ジョブで、この作業が1時間ごとに実行されます。開発者は、このAPIを使用して、タスク有効期限ポリシーや、「期限切れ前」および「失効」タスク・アクションをテストできます。
3.5 ページ・アイテムのセッション・ステートのデータ型: CLOB
このリリースより前は、ページ・アイテムでのセッション・ステートの暗黙的データ型はVARCHAR2
でした。つまり、画面にレンダリングされ、送信、計算および検証される値は文字列であり、データベース構成に応じて長さが4kまたは32kバイトに制限されていました。APEX 22.2では、ページ・アイテムとセッション・ステートの内部インフラストラクチャは、様々なデータ型をサポートするように作り替えられています。追加でサポートされるようになった1つ目のデータ型はCLOB
です。
データ型の設定
- テキスト領域
- 表示のみ
- 非表示
- リッチ・テキスト・エディタ
- Markdownエディタ
VARCHAR2
(デフォルト)およびCLOB
が移入されるようになりました。データ型をCLOB
に設定するということは、次のことを意味します。
- そのアイテムのソースおよび計算により、CLOB値の評価を処理できます。
- そのアイテムでCLOB値を表示、送信および検証できます。
- PL/SQLコードにおいて使用される、そのアイテムのバインド変数のデータ型はCLOBです。
V
ファンクションの制限事項により、アイテムの値をプログラムで読み取るには、apex_session_state.get_clob(<item name>)
を使用する必要があります。
対話グリッドの互換性
セッション・ステートでCLOBデータ型がサポートされている5つのアイテム・タイプを、対話グリッド列として使用することもできます。なお、この組合せが許可されないエッジ・ケースがいくつかあります(「主キー」列または「マスター・ディテール」列に対するCLOBの設定など)。1ページに多数の大きいCLOB値をレンダリングすることはお薦めしません。それにより、ブラウザでパフォーマンスの問題が発生する可能性があるためです。複数のCLOB列の使用や、ページタイプのページ区切りの使用は避けることをお薦めします。
APEX_SESSION_STATE
新しいAPEX_SESSION_STATE
パブリック・パッケージは、セッション・ステートに関連する操作を扱う中心的パッケージです。詳細は、Oracle APEX APIリファレンスのAPEX_SESSION_STATEを参照してください。
プラグインのサポート
アイテムタイプのプラグインでも、この新しいインフラストラクチャを選択できます。ページ・デザイナで「データ型」属性を表示するには、開発者が、そのアイテムに対して、新しい「セッション・ステートはCLOBをサポートします」標準属性を選択する必要があります。また、レンダリングおよび検証のコールバック・コードが、CLOB値をサポートするように構成されている必要があります。次のAPIの変更点により、これが容易になりました。
APEX_PLUGIN
:type t_item is record (
...
data_type varchar2(32767), -- DEPRECATED
source_data_type apex_exec.t_data_type, -- NEW
session_state_data_type apex_session_state.t_data_type, -- NEW
...
);
type t_item_render_param is record (
...
value varchar2(32767), -- LEGACY
session_state_value apex_session_state.t_value, -- NEW
...
);
type t_item_validation_param is record (
value varchar2(32767), -- LEGACY
session_state_value apex_session_state.t_value -- NEW
);
パッケージAPEX_PLUGIN_UTIL
:-- NEW: Overloaded version of print_escaped_value
procedure print_escaped_value (
p_value in apex_session_state.t_value );
-- NEW: Overloaded version of print_hidden
procedure print_hidden (
p_item_name in varchar2,
p_value in apex_session_state.t_value,
p_id_postfix in varchar2 defaultnull,
p_classes in varchar2 defaultnull );
-- NEW: Overloaded version of print_display_only
procedure print_display_only (
p_item in apex_session_state.t_item,
p_display_value in apex_session_state.t_value,
p_show_line_breaks in boolean,
p_escape in booleandefaultnull,
p_id_postfix in varchar2 default'_DISPLAY',
p_show_icon in booleandefaulttrue );
従来のt_item_render_param.value
ではなくt_item_render_param.session_state_value
を参照し、APEX_PLUGIN_UTIL
内の新しいユーティリティ(様々なデータ型に対応している)を使用することをお薦めします。
移行
既存のすべてのアイテムは、セッション・ステートのデータ型がVARCHAR2
に移行されます。既存のアイテムはデフォルトではCLOBに設定されていないため、既存のアイテムを手動で切り替える必要があります。対話グリッドまたはフォーム・リージョンの一部である新規作成したアイテムは、ページ・デザイナで作成した場合でも「ページの作成」ウィザードで作成した場合でも、ソース・データ型がCLOB
ならCLOB
に設定されます。
その他の注意事項と制限事項
- この機能は、アプリケーション・アイテムではなくページ・アイテムにのみ適用されます。アプリケーション・アイテムは、引き続き
VARCHAR2
のみとなります。 - 対話グリッド列またはフォーム・リージョン・アイテムでセッション・ステートのデータ型としてCLOBを使用する場合は、ソース・データ型もCLOBである必要があります。
- セッション・ステートのデータ型がCLOBであるアイテムは、サーバーでの標準的な置換文字列構文である
(&ITEM_NAME.)
を介して参照できません。これにより、ランタイム・エラーが発生します。CLOBアイテムを表示するには、各ページ・アイテムを読取り専用モードで使用するか表示専用アイテムを使用します。「動的コンテンツ」リージョンでプログラムによってアイテムをレンダリングすることもできます。クライアントでは(たとえば、テンプレート・ディレクティブで)、CLOBデータ型に関する標準的な置換文字列構文を使用できます。 - 「値の設定」動的アクション内では、「タイプの設定」の「PL/SQL式」および「PL/SQLファンクション本体」を使用してCLOBを返すことはできません。回避策は、「タイプの設定」の「SQL文」の使用、または新しい値をアイテムに直接割り当てて「戻すアイテム」でそのアイテムを指定することによる「サーバー側のコードを実行」動的アクションの使用です。
- 対話グリッドでは、CLOB値はダウンロードできません。
3.6 日付ピッカー
新しい日付ピッカーはAPEX用にゼロから構築されており、そのユーザー・エクスペリエンスは合理化され、より速く、使いやすく、軽量になっています。
今日ボタン
「今日」ボタンを使用すると、今日の日付を簡単に選択できます。このボタンは、「コンポーネント設定」または「アイテム属性」から簡単に有効にできます。
動作を簡単に制御
HTML属性を使用して、複雑なJavaScriptコールを使用する必要なくクライアント側での日付ピッカーの動作を変更します。
高速で使いやすい
新しい日付ピッカーは、ロードがより速くなり、ユーザーの操作に対する応答がより速くなっています。また、アクセシビリティのガイドラインに合わせて構築されています。
3.7 クラシック・レポートと対話モード・レポートでのテンプレート・ディレクティブのサポート
APEXでは、クラシック・レポート内と対話モード・レポート内のHTML式がある列でテンプレート・ディレクティブがサポートされるようになりました。
3.8 「数値」ページ・アイテムの機能拡張
- テキスト: 通常の英数字キーボード。
- 数値: 数値のみのキーボード。このオプションは、金額、PIN、郵便番号、CC番号などを入力する際に役立ちます。
- 小数: 小数キーがさらに追加されている、数値のみのキーボード。
3.9 ベクターベースのマップのサポート
- OpenStreetMapポジトロン
- OpenStreetMapダーク
- OpenStreetMapブライト
3.10 プログレッシブWebアプリケーションの機能拡張
プログレッシブWebアプリケーション(PWA)機能に新しい機能があります。
PWA機能の検出
APEXでは、機能検出の使用によって、PWAがユーザーのブラウザまたはデバイスでサポートされているかどうかが自動的に判定されるようになり、PWAがサポートされている場合のみ「アプリケーションのインストール」ボタンが表示されるようになりました。これにより、APEXで、ブラウザやデバイスでPWAをサポートしないことを選択した場合にPWAがプッシュされなくなります。
PWAのスクリーンショット
アプリケーションのスクリーンショットを追加できるようになりました。APEXで、プログレッシブWebアプリケーションのインストールをユーザーに求めるときにそれらのスクリーンショットが使用されます。こつは、すべてのスクリーンショットの縦横比を同じにすることです。
PWAのショートカット
- タッチ対応デバイスの場合: ホーム画面上でそのアプリケーションのアイコンを長押しします
- その他のデバイスの場合: タスク・バーでそのアプリケーションのアイコンを右クリックします。
新しい動的アクション
- 現在の位置の取得: デバイスでその現在位置が返されるようにします。次の3つのオプションから選択します。
- GeoJSONを文字列としてページ・アイテムに返します。
- 緯度と経度を2つの異なるページ・アイテムに返します。
- JavaScript関数で使用する、完全なジオロケーション位置オブジェクトを取得します。
- 共有: そのアプリケーションの現在のページ、URLまたはファイルを他のアプリケーションと共有します。
- 1つのファイルまたは複数のファイルを、静的に定義するかSQL問合せを実行することで共有できます。
宣言型メタ・タグ
公開されているAPEXページのメタ・タグをページ・デザイナから直接定義できるようになりました。これを新しい「共有」動的アクションと組み合せてソーシャル・メディアにページ・プレビューを表示します。メタ・タグを使用すると、WebアプリケーションのSEOスコアを向上させることもできます。
新しいパブリック・ビュー
APEX_APPL_PWA_SHORTCUTS
APEX_APPL_PWA_SCREENSHOTS
APEX_APPL_PAGE_META_TAGS
3.12 リージョンのランドマーク・サポート
ランドマークにより、スクリーン・リーダーのユーザーがWebページの構造を把握できるようにする方法を再定義します。APEXでの以前のサポートを基に、リージョンで、それらをどのようにランドマークとして表示するかをすべて制御できるようになりました。リージョンでは、テンプレートのデフォルトが使用されるか、ページ・レベルでそのランドマークが上書きされます。
開発者ツールバーに、「ランドマークの表示」と「見出しの表示」のオプションが含まれるようになりました。
3.13 「デバウンス」および「スロットル」動的アクション
- デバウンス: イベントが最後に発生した時点から、指定された遅延時間が経過した後に1回実行される、遅延ありのアクションです。
- スロットル: すぐに実行されるアクションであり、その後、そのイベントが発生し続ける場合は、指定された間隔で実行されます。
デバウンスされたアクションをすぐに実行することも、スロットルされたアクションを遅延ありで実行することもできます。
3.14 更新されたリッチ・テキスト・エディタ
- 「ツールバー・スタイル」では、「オーバーフロー・メニュー」か「複数行」を選択できます。
- オーバーフロー・メニュー: このツールバーでは、1行で複数のアイテムが表示されます。ツールバーの幅に収まらないアイテムはあふれてポップアップ・メニューに表示されます。
- 複数行: このツールバーでは、CKEditor4での動作と同様に、複数行でアイテムが表示されます。
- カスタムHTMLの許可: 一般的HTMLサポートとソース編集のCKEditor5プラグインが有効になります。これらのプラグインを併用すると、インラインで編集できるカスタムHTMLが許可されることで、CKEditor4とCKEditor5との差をなくすのに役立ちます。
ノート:
CKEditor4で生成されたコンテンツとの高度な併用および互換性のためには、この属性を無効のままにすることをお薦めします。
3.15 「ドロワー」モーダル・ダイアログ・テンプレート
最新の「ユニバーサル・テーマ」には、「ドロワー」ダイアログ・テンプレートが含まれています。このテンプレートは、ページ・モードが「モーダル・ダイアログ」である場合に選択できます。
ドロワーとは、画面の側面から引き出すオーバーレイ・ウィンドウです。ドロワーは、ユーザーがそれを使用し終えて閉じるまで、アクティブであり、フォーカスが設定されたままになります。ドロワーがアクティブである間は、ドロワーを閉じるまで、ユーザーが残りのページを使用できません。
「アプリケーションの作成」ウィザードで、デフォルトで「フォーム」ページが「ドロワー」として作成されるようになりました。アプリケーション・テーマに「ドロワー」ページ・テンプレートが含まれている場合は、「ページの作成」ウィザードで、デフォルトで「フォーム・ページ・モード」が「ドロワー」になります。
3.16 更新された「グローバル検索」(「スポットライト検索」)
- ページ名およびページ別名での検索
- アプリケーション別名でのアプリケーション内検索。アプリケーション内検索では、アプリケーションのIDまたは別名、およびページのID、名前または別名の間にコロン(
:
)かダッシュ(–
)を使用します。
3.17 JavaScript APIの更新
新規または変更されたファンクション、メソッドおよびイベント
- 新しいファンクション
apex.util.throttle
- 新しいパラメータ
pImmediate
がapex.util.debounce
に追加されました - 新しいパラメータ
pIgnoreUnsavedChanges
がapex.navigation.redirect
に追加されました - 新しいモデル・イベント
destroy
およびinstanceRename
- メソッド
model.clearData
でブールが返されるようになりました - 新しい
mapRegion
プロパティであるuseVectorTileLayers
- 一部の
mapRegion
メソッドで、パラメータ名pFeatId
がpFeatureId
に、pFeat
がpFeature
に変更されました
その他の変更点
- 「JavaScript初期化コード」という属性名が「初期化JavaScriptファンクション」に変更されています
- 次のことについての説明が改善されました:
apex.locale.toNumber
でどのように精度損失が処理されるかapex.message.showPageSuccess
- 多数の
apex.pwa
ファンクション - 多数の
mapRegion
メソッド item
インタフェースapex.pwa.isInstallable
apex.pwa.openInstallDialog
- JavaScript APIドキュメントに、他にも様々な軽度の修正や改善があります
3.18 PL/SQL APIの更新
APEX_ESCAPEの新機能
APEX_ESCAPE
には次の新機能があります。
csv
では、CSVファイルで出力するために、VARCHAR2内またはCLOB内の特殊文字がエスケープされます。striphtml
では、VARCHAR2またはCLOBからHTMLタグが削除されます。- CLOBは、次のすべてにわたり十分にサポートされています。
html_clob
html_allowlist_clob
html_attribute_clob
is_literal_clob
json_clob
APEX_LDAPでの資格証明ストアのサポート
APEX_LDAP
APIで、ユーザー名とパスワードのかわりに、新しいp_credential_static_id
パラメータがサポートされるようになりました。資格証明をパッケージ内でハードコーディングすることや、それらを他の安全でない方法で格納することを避けるために、このパラメータを使用します。これで、資格証明をアプリケーション・ビルダーの「ワークスペース・ユーティリティ」の下の「Web資格証明」に格納できるようになりました。
その他の更新
APEX_THEME
APIには、disable_user_style
とenable_user_style
の新しい例があります。