2020年6月4日木曜日

Oracle APEXアプリケーションのグローバル化(2) - 初期アプリケーションの作成

Oracle APEXアプリケーションのグローバル化を説明するにあたり、まず最初に元となる日本語のアプリケーションを作成します。Oracle APEXのアプリケーション・ビルダーから作成を選んで、新規アプリケーションの作成を実行します。アプリケーション・ウィザードへの設定項目として、名前(なんでも良いですが、ここでは竹家のメニューとしています)、言語(これは日本語(ja)を選択します)を指定し、アプリケーションの実行を行います。


これでホームページだけの空のアプリケーションが作成されます。

次に、必須の作業ではないのですが、テストをしやすくするため、カスタムの認証スキームを設定します。作成したアプリケーションの共有コンポーネントに含まれる認証スキームを開きます。


認証スキームの一覧から作成をクリックし、以下の認証スキームを新たに定義します。ユーザー名とパスワードが一致していれば、アプリケーションの利用を許可します。名前は任意ですが、ここではユーザー名とパスワードが同じ、としています。スキーム・タイプカスタムを選びます。認証ファンクション名としてmy_authenticationソースにmy_authenticationのコードを記述します。
function my_authentication (
    p_username in varchar2,
    p_password in varchar2 )
    return boolean
is
begin
    return upper(p_username) = upper(p_password);
end;
すべて設定したのち、認証スキームの作成を実行します。新規に認証スキームが作成されると、その認証スキームが以降のアプリケーションの認証で使われるようにアクティブ化されます。


認証スキームを新規に作成したのち、アプリケーションを実行します。サインインをするためにユーザー名パスワードが聞かれますので、ユーザー名とパスワードに同じ値を入力して、アプリケーションにサインインします。この例ではdemo/demoと入力しています。


サインインすると空のホームページが表示されます。


これからは、このアプリケーションに機能を追加していきます。

最初にメニューを保持する表を定義します。
create table TKY_MENUS
(
    ID                number primary key,
    MENU_NAME varchar2(80) not null,
    VOLUME       varchar2(16)  not null,
    PRICE           number        not null
);
メニューそれぞれで、名前(MENU_NAME)、サイズまたは量(VOLUME)、そして値段(PRICE)の情報を持ちます。以下のスクリプトを実行して、データを投入します。SQLワークショップに含まれるSQLコマンドの画面にそのまま貼り付けて実行できるよう、begin/endで囲っています。
begin
insert into tky_menus(id, menu_name, volume, price) values(1,'プレミアム牛めし','ミニ盛',490);
insert into tky_menus(id, menu_name, volume, price) values(2,'ごろごろ創業ビーフカレー','並盛',790);
insert into tky_menus(id, menu_name, volume, price) values(3,'ビビン丼','大盛',600);
commit;
end;
データが投入されているかどうか、SELECT文を実行して確認します。
select * from tky_menus;

以上でデータの準備ができたので、アプリケーションにレポートを追加します。ページ・デザイナでページ番号1、ホームのページを開きます。開いたページにクラシック・レポートのリージョンを追加します。タイトル日本語メニュー、ソースの表名に先ほど作成した表TKY_MENUSを指定します。


追加したレポートを確認するために、アプリケーションを実行します。


表の列名からヘッダーが決まっているため、英語になっています。日本語のアプリケーションらしくするため、主キーのID非表示列に変更し、列のヘッダーであるMenu Nameメニュー名VolumeサイズPrice値段に変更します。


これらの変更を行った結果が以下です。単純ですが、日本語のみに対応しているOracle APEXのアプリケーションはこの例のように作られているでしょう。通常、特に言語については意識せずに、直接アプリケーションに日本語を埋め込んでいると思います。


このように、ひとつの言語だけを考えて作られているアプリケーションを、これから多言語に対応させていきます。