ファセット検索で使用しているクラシック・レポートの結果を、Oracle APEX 20.2で追加されたAPEX_DATA_EXPORTのAPIを使用して、CSV形式で出力してみます。クラシック・レポートの標準機能でCSVダウンロードは可能ですので、この通りに実装するケースは少ないとは思います。API自体は、XLSX、PDF、HTML、CSV、XMLおよびJSON形式の出力をサポートしています。
CSVダウンロードの実装は、以下の記事で作成したAPEXアプリケーションに追加します。ファセット検索にチャートを追加する
ダウンロードは以下のように動作します。
ダウンロードの処理を行うプロシージャff_csv_downloadを作成します。コードは以下になります。
APEX_EXEC.OPEN_QUERY_CONTEXT、APEX_DATA_EXPORT.EXPORT、APEX_EXEC.CLOSE、APEX_DATA_EXPORT.DOWNLOADの4つのAPIを呼び出しているだけのシンプルなコードです。
ページ・デザイナにてページ番号3のファセット検索のページを開きます。
左ペインでプロセス・ビューを開き、Ajaxコールバックとして新規にプロセスを作成します。
識別の名前をCSVDOWNLOADとし、タイプとしてコードを実行を選択します。AjaxコールバックのプロセスではAPIの呼出しが使えません(APEX 22.2時点)
ソースのPL/SQLコードとして作成したプロシージャを呼び出すコードを記述します。
ff_csv_download(
p_app_page_id => :APP_PAGE_ID
,p_region_static_id => 'FC_EMP'
,p_file_name => 'employees'
);
左ペインでレンダリング・ビューを開きます。
ブレッドクラムのリージョンにボタンを作成します。
識別のボタン名はB_CSVDOWNLOAD、ラベルはCSVダウンロードとします。レイアウトの位置にNextを指定します。
動作のアクションとしてこのアプリケーションのページにリダイレクトを選択します。ターゲットとなるページに&APP_PAGE_ID.を指定します。&APP_PAGE_ID.は現在のページ番号に置き換えられます。詳細のリクエストとして以下を指定します。
APPLICATION_PROCESS=CSVDOWNLOAD
リクエストとしてAPPLICATION_PROCESSにCSVDOWNLOADを渡すことにより、Ajaxコールバックとして作成したプロセスCSVDOWNLOADが実行されます。
以上でアプリケーションは完成です。アプリケーションを実行すると、記事の先頭にあるGIF動画のように動作します。
更新したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/faceted-search-with-chart-csvdownload.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完