2023年6月2日金曜日

APEX 23.1の新機能コンテキスト依存ヘルプの日本語対応

 Oracle APEX 23.1の新機能に、コンテキスト依存ヘルプというものがあります。

Oracle APEXのオンライン・ヘルプにドキュメントの表示というボタンが含まれている場合ががあります。このボタンをクリックすると、今までは製品ドキュメントのトップ・ページが開いたのですが、23.1からは関連するページが開かれるようになっています。

便利になりましたが、いかんせん英語のドキュメントが開きます。

仕組みを調べて、日本語のドキュメントが開くようにしてみました。

製品ドキュメントの位置は、管理サービスにサインインした後、インスタンスの設定より実施します。


インスタンスの設定ヘルプのセクションに、ヘルプのURLの指定が含まれます。


今までは、ボタンドキュメントの表示をクリックしたときに、このヘルプのURLとして設定されているURLを開いていました。23.1からは、製品ドキュメントを開く際に?context=コンテキストという引数が与えられています。

例えば、本記事の最初の画像にある製品ドキュメントは、以下のURLより呼び出されています。

https://apex.oracle.com/doc231?context=4000:510

このコンテキストの値と呼び出されるURLの対応は、以下のファイルに記述されています。

https://docs.oracle.com/en/database/oracle/apex/23.1/context-sensitive-help.js

コンテキストとURLの対応は英語のドキュメントが元になっています。とはいえ、URLやアンカーは日本語のドキュメントでも維持されているはずなので、この対応をそのまま使います。

一番最初に、コンテキストとURLの対応を保存する表CSH_CONTEXT_SENSITIVE_HELPを作成します。
create table csh_context_sensitive_help
(
    context varchar2(40) not null,
    url     varchar2(400) not null
);

context-sensive-help.jsを読み込んで、コンテキストとURLの対応を作成した表CSH_CONTEXT_SENSITIVE_HELPに書き込みます。JavaScriptのファイルの位置はAPEXのバージョンに依存して変更されます。また、内容に関してもAPEXがバージョン・アップされると変更される可能性はあります。

SQLワークショップSQLコマンドより実行します。


コンテキスト依存ヘルプのリクエストを受け付けて、適切な製品ドキュメントのURLを返すRESTサービスを作成します。

SQLワークショップRESTfulサービスを開き、モジュールの作成を実行します。


モジュール名Context Sensitive Helpベース・パス/help/とし、モジュールの作成をクリックします。


モジュールContext Sensitive Helpが作成されます。完全なURLにモジュール名が含まれているようですが、表示上の問題なので無視できます。

続けて、テンプレートの作成をクリックします。


URIテンプレートとしてpageを指定します。

テンプレートの作成をクリックします。


テンプレートpageが作成されます。

ハンドラの作成をクリックします。


作成するハンドラのメソッドとしてGETを選択します。ソース・タイプPL/SQLです。ソースとして、以下を記述します。Oracle APEX 23.1の製品ドキュメントはまだ日本語訳が無いため、代わりにOracle APEX 22.2の日本語ドキュメントのURLをC_BASE_URLに設定しています。

パラメータとしてcontextを受け付け、表CSH_CONTEXT_SENSITIVE_HELPよりリダイレクト先を見つけて、クライアントにリダイレクトを要求しています。


リダイレクト先をHTTPの応答ヘッダーのLocationとして返すため、パラメータを追加します。

行の追加をクリックし、パラメータをひとつ追加します。

追加したパラメータの名前Locationバインド変数locationアクセス・メソッドOUTソース・タイプとしてHTTP HEADERデータ型としてSTRINGを指定します。


以上でハンドラの作成を実行します。

作成されたハンドラの完全なURLをコピーします。


このURLをAPEXのインスタンスの設定ヘルプのURLとして設定します。

管理サービスにサインインし、ヘルプのURLを変更します。


以上の変更で、コンテキスト依存ヘルプとして日本語の製品ドキュメントが開くようになります。


本記事は以上になります。

Oracle APEXのアプリケーション作成の参考になれば幸いです。