2025年4月24日木曜日

リッチ・テキスト・エディタで選択できるフォントを追加する

Oracle APEXのページ・アイテムのひとつであるリッチ・テキスト・エディタでは、テキストの表示に使用するフォント・ファミリを選択できます。

リッチ・テキスト・エディタの設定書式HTMLツールバー完全を選択すると、フォント・ファミリを選択できるようになります。


上記の設定を行ったページ・アイテムでは、以下のようにフォント・ファミリの選択ができます。


このフォント・ファミリの選択肢に、新たなフォント・ファミリを追加します。

追加したフォント・ファミリの確認がしやすいように、Google Fontsに含まれるPacificoを追加してみます。カテゴリのCuteに含まれるPacificoを選択します。



Get fontをクリックします。


Get embed codeをクリックします。


Webを選択し、<link>の方を表示します。

Embed code in the <head> of your htmlのコードを、Copy codeをクリックしてクリップ・ボードにコピーします。


APEXのページ・デザイナに戻ります。

ページ・プロパティHTMLヘッダーにコピーしたコードをペーストするか、または、CSSファイルURLlink href=で指定されているURLを記述します。

Pacificoフォントのlink href=で指定されているURLは以下です。

https://fonts.googleapis.com/css2?family=Pacifico&display=swap

この設定で、表示されるHTMLのページにPacificoフォントが読み込まれます。


リッチ・テキスト・エディタにフォント・ファミリを追加するために、詳細初期化JavaScriptファンクションに以下を記述します。
function(options){
    options.editorOptions.fontFamily = {
        options: [
         	'default',
 	        'Arial, Helvetica, sans-serif',
 	        'Courier New, Courier, monospace',
 	        'Georgia, serif',
 	        'Lucida Sans Unicode, Lucida Grande, sans-serif',
 	        'Tahoma, Geneva, sans-serif',
 	        'Times New Roman, Times, serif',
 	        'Trebuchet MS, Helvetica, sans-serif',
 	        'Verdana, Geneva, sans-serif',
            'Pacifico' // Pacificoフォントを追加。
        ],
        // supportAllValues: true
    };
    return options;
}

以上の設定によりリッチ・テキスト・エディタで、新たに追加したPacificoフォントを選択できるようになります。


文字を入力すると選択したフォント・ファミリで表示されます。


今回の記事は以上になります。

Oracle Rich Text LibraryはCKEditor5をフォークしていると聞いているので、ドキュメントについてはCKEditor5のものが参考になります。Fontに関する設定は以下で説明されています。
https://ckeditor.com/docs/ckeditor5/latest/features/font.html

簡単なアプリケーションですがエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/add-font-family-to-rich-text-editor-ortl.zip

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

2025年4月23日水曜日

Graph Visualization Plugin 24.2.0のリフレッシュ動作を確認する

Oracle Graphの開発チームは、Oracle APEX向けにプロパティ・グラフの問合せ結果を表示するプラグインをリリースしています。GitHubのApps and Plug-insのページからダウンロードできます。

https://oracle.github.io/apex/

このページの一番下にあります。


コード中に記述されているプラグインのバージョン情報は以下のようになっています。
-- Plugin built from Graph Visualization Toolkit (GVT) 25.1.3
 
prompt APPLICATION 12408 - test app
--
-- Application Export:
--   Application:     12408
--   Name:            test app
--   Date and Time:   02:04 Thursday February 13, 2025
--   Exported By:     RUIQI.J.JIANG@ORACLE.COM
--   Flashback:       0
--   Export Type:     Component Export
--   Manifest
--     PLUGIN: 113785544038980866050
--   Manifest End
--   Version:         24.2.2
--   Instance ID:     69413411569574
--
Sample Graph Visualizationsアプリケーションをインストールして、プラグインのリフレッシュ動作を確認してみます。Oracle APEXはOracle Database 23aiで動作していることを前提とします。

サンプル・アプリケーションのNetwork EvolutionのページにあるSalaryのグラフに、下限となるSalaryの値を指定するページ・アイテムを追加し、Salaryの値が変更されたときに動的アクションでグラフをリフレッシュしています。


以下より動作確認の手順を紹介します。

GitHubのGraph Visualization Plug-In(Preview)のページを開きます。現時点の最新のブランチは24.2です。



Oracle Database 23aiの場合、optional-23ai-only以下にあるgvt_sqlgraph_to_json.sqlをダウンロードしてデータベースで実行し、パッケージDBMS_GVTを作成します。

最初にGitHubからgvt_sqlgraph_to_json.sqlを手元にダウンロードします。


SQLワークショップSQLスクリプトを開きます。


SQLスクリプトのアップロードをクリックします。


ファイルgvt_sqlgraph_to_json.sqlを選択し、アップロードをクリックします。


ファイルgvt_sqlgraph_to_json.sqlがアップロードされたら、実行をクリックします。


即時実行します。


パッケージDBMS_GVTの定義部と本体が作成され、ファンクションORA_SQLGRAPH_TO_JSONが作成されます。


次にSample Graph Visualizationsアプリケーションをインストールします。

以下のページよりsample-graph-visualizations_23ai.sqlをダウンロードします。現時点での最新のブランチは24.2です。

https://github.com/oracle/apex/tree/24.2/sample-apps/sample-graph-visualizations


サンプル・アプリケーションのインストールは、アプリケーション・ビルダーインポートから行います。


ファイルにsample-graph-visualizations_23ai.sqlを選択し、へ進みます。


ファイルがアップロードされるので、アプリケーションのインストールを実行します。


Sample Graph Visualizationsアプリケーションには、サポート・オブジェクトとして表やサンプルのデータを含みます。

サポートするオブジェクトのインストールを実行します。


以上でSample Graph Visualizationsアプリケーションがインストールされました。

アプリケーションの編集をクリックします。


Sample Graph Visualizationsアプリケーションは認証スキームの設定に不備があります。そのため、必ずサインインに失敗します。

共有コンポーネントを開き、認証スキームを更新します。


認証スキームを開きます。


Application Express Accountsを開きます。


セッション共有のセクションを開き、タイプをカスタムからアプリケーション(非共有)に変更します。

変更の適用をクリックします。これでサインインで発生する問題は解消します。


共有コンポーネントプラグインを開き、Graph Visualization(Preview)バージョン24.2.0であることを確認します。


以下より、サンプル・アプリケーションの変更作業に入ります。

アプリケーションを実行し、Network Evolusionのページを開きます。

このページにあるSalaryのグラフに、ページ・アイテムを使った条件を加えます。

開発者ツールバーPage 14をクリックし、ページ・デザイナを開きます。


リージョンSalaryに、表示する従業員の下限となる給与を指定するページ・アイテムを作成します。

作成したページ・アイテムの識別名前P14_SALARYタイプ数値フィールドを選択します。ラベルSalaryとします。

ソースに含めたバインド変数がセッション・ステートを参照しないように、セッション・ステートストレージリクエストごと(メモリーのみ)を指定します。


作成したページ・アイテムP14_SALARYに、値の変更時にサブ・リージョンのSalaryリフレッシュする動的アクションを作成します。

作成した動的アクションの識別名前onChange Salaryとします。タイミングイベント変更選択タイプアイテムアイテムP14_SALARYになります。


TRUEアクションリフレッシュ影響を受ける要素選択タイプリージョンリージョン..Salary(先頭の..はサブ・リージョンの意味なのでリージョンSalaryのサブ・リージョンのSalaryが対象です)を指定します。


リージョンSalaryのサブリージョンSalaryを選択し、ソースSQL問合せを以下に変更します。ページ・アイテムP14_SALARYを検索条件に加えます。
SELECT employee,e, manager
FROM GRAPH_TABLE ( EBA_SAMPLE_GRAPH
  MATCH (m IS EMPLOYEE ) -[e IS WORKS_FOR ]-> (n)
  WHERE m.salary > :P14_SALARY
  COLUMNS (vertex_id(m) AS employee, edge_id(e) AS e, vertex_id(n) AS manager )
)
送信するページ・アイテムP14_SALARYを指定します。


以上で必要な変更は完了です。ページの保存と実行をクリックします。

Salaryに8000を入力しEnterを押すと、グラフの表示は以下になります。


Salaryに15000を入力すると表示は以下に変わります。リージョンはリフレッシュされますが、ページの送信は行なっていません。


今回の記事は以上になります。

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

2025年4月22日火曜日

ローカルのOracle APEXのSQLワークショップにSQL Developer Webを組み込む

Oracle REST Data Services 25.1のリリース・ノートのDeprecation Noticeに、以下が記載されています。Oracle APEXがSQLワークショップの機能のひとつとして提供しているRESTfulサービスが非推奨になり、SQL Developer Webが推奨ツールになります。

Oracle REST Data Services 25.1
Release Notes
Version 25.1.0.100.1652
Date: April 2025
Deprecation Notice 
The RESTful Services area of the SQL Workshop for building and managing ORDS REST APIs in APEX has been deprecated. The recommended web interface for managing your ORDS REST APIs is Database Actions, also known as, SQL Developer Web.

Oracle APEXのSQLワークショップの以下のメニューに当たります。


Autonomous DatabaseではデフォルトでSQLワークショップSQL Developer Webが含まれています。そのため、スキーマがREST有効化ずみであれば、そのままSQL Developer Webを開くことができます。


ローカルのデータベースにインストールしたOracle APEXでは、SQLワークショップにSQL Developer Webを含めるには追加の設定が必要です。

デフォルトではSQLワークショプSQL Developer Webのメニューはありません。


以下よりSQLワークショップSQL Developer Webを追加する手順を紹介します。

手順はドキュメントの以下に説明されています。

Oracle APEX SQLワークショップ・ガイド Release 24.1
7 RESTfulサービスを使用したデータ交換の有効化
7.9 APEXからSQL Developer Webへの直接アクセス

ドキュメントでは「メニュー・オプションを有効にするための要件」として、「Oracle REST Data Servicesリリース23.1.0 (HTTPSモードで実行)。」とありますが、HTTPでも構成できました。恐らく、ドキュメントに最近の設定が反映されていないと思われます。

設定はAPEXの管理サービスより行います。

管理サービスにサインインし、インスタンスの設定機能構成を開きます。


機能構成SQLワークショップのセクションにあるSQL Developer Webの有効化はいに変更します。

変更の適用をクリックします。


変更が保存されると、SQLワークショップのメニューにSQL Developer Webが含まれるようになります。


開発ツールに戻ってSQLワークショップを確認します。SQL Developer Webが含まれています。


SQL Developer Webを開こうとすると、ワークスペース・スキーマの選択を求められます。

ダイアログに記載されているように、SQLワークショップからSQL Developer Webを直接開くには、APEXのスキーマがあらかじめREST対応REST有効化ともいいます)になっている必要があります。


Oracle APEXではRESTfulサービスを開き、ORDSにスキーマを登録を実行することで、スキーマをREST対応にすることができました。


Oracle APEXのRESTfulサービスが非推奨ということは、この画面も非推奨になります。

Autonomous Databaseの場合は管理者ユーザーADMINでSQL Developer Webに接続し、ユーザーの編集画面から、REST有効化、無効化を設定できます。

以下のユーザー編集画面のWebアクセスオンに切り替えることで、そのスキーマでRESTサービスの呼び出しを受付ができるようになります。REST別名については、スキーマがAPEXで使用されていて名前がWKSP_で始まる場合は、WKSP_以降の文字列を小文字で設定します。


ローカルにインストールしたOracle APEXの場合、Autonomous Databaseとは異なり、SQL Developer Webに管理者ユーザーでサインインするには追加の設定が必要です。追加の設定については、以前の記事「ローカル環境のSQL Developer Webの管理者ユーザーを作成する」で紹介しています。SQL Developer Webに管理者ユーザーでアクセスできるように構成した後はAutonomous Databaseと同様に、SQL Developer WebよりRESTを有効にできます。

以下はユーザーPDBADMINにDBAロールを割り当て、SQL Developer Webにサインインしています。ORDS 25.1よりダーク・モードがサポートされています。


この他の方法として、管理者ユーザー(SYS)でORDS_ADMIN.ENABLE_SCEMAを呼び出す、または対象スキーマでORDS.ENABLE_SCHEMAを呼び出す方法があります。プロシージャの引数などは同じなので、今回は管理者ユーザーで実行してみます。
begin
ords_admin.enable_schema(
p_enabled => true,
p_schema => 'スキーマ名',
p_url_mapping_pattern => 'ORDS別名'
);
end;
/

SQL> begin

  2  ords_admin.enable_schema(

  3  p_enabled => true,

  4  p_schema => 'WKSP_APEXDEV',

  5  p_url_mapping_pattern => 'apexdev'

  6  );

  7  end;

  8* /


PL/SQLプロシージャが正常に完了しました。


SQL> commit;


コミットが完了しました。


SQL> 


以上の設定で、ローカルのOracle APEXのSQLワークショップよりSQL Developer Webを開いて、REST開発ツールを利用できるようになります。


必須ではありませんが、APEXの管理サービスのインスタンスの管理/機能構成RESTのセクションに含まれるRESTfulサービスを有効にするいいえにすると、SQLワークショップよりRESTfulサービスが除かれます。


以下のようにSQLワークショップからRESTfulサービスが除かれます。


Oracle APEXの管理サービスの代わりに、パッケージAPEX_INSTANCE_ADMINのSET_PARAMETERを呼び出してSQL Developer Webの有効化オンにするには、パラメータALLOW_SQL_DEVELOPER_WEBを設定します。

APIリファレンスのAvailable Parameter Valuesには、なぜか含まれていなかったので、ビューAPEX_INSTANCE_PARAMETERSを検索して確認しています。

SQL> select * from apex_instance_parameters where name like '%SQL%';


NAME                          VALUE     CREATED_ON    LAST_UPDATED_ON    

_____________________________ _________ _____________ __________________ 

ALLOW_SQL_DEVELOPER_WEB       Y         25-04-21      25-04-21           

ENABLE_TRANSACTIONAL_SQL      N         25-04-21      25-04-21           

PLSQL_EDITING                 Y         25-04-21      25-04-21           

SQL_SCRIPT_MAX_OUTPUT_SIZE    200000    25-04-21      25-04-21           

DG_ALLOW_SQL_DATA_SOURCES     Y         25-04-21      25-04-21           

SQL_COMMAND_MAX_INACTIVITY    60        25-04-21      25-04-21           


6行が選択されました。 


SQL> 


RESTfulサービスSQLワークショップから除くには、パラメータRESTFUL_SERVICES_ENABLEDNにします。

SQL> select * from apex_instance_parameters where name like '%REST%';


NAME                                                           VALUE     CREATED_ON    LAST_UPDATED_ON    

______________________________________________________________ _________ _____________ __________________ 

RESTFUL_SERVICES_ENABLED                                       N         25-04-21      25-04-22           

DG_MAXIMUM_NUMBER_OF_ROWS_TO_RETRIEVE_FROM_REST_DATA_SOURCE    500000    25-04-21      25-04-21           


SQL> 


Oracle REST Data Services 25.1より追加されたダーク・モードですが、ユーザーのプレファレンスより設定します。


テーマには(Light)、(Dark)、Same as browserの3つから選べます。


今回の記事は以上になります。