次に、必須の作業ではないのですが、テストをしやすくするため、カスタムの認証スキームを設定します。作成したアプリケーションの共有コンポーネントに含まれる認証スキームを開きます。
認証スキームの一覧から作成をクリックし、以下の認証スキームを新たに定義します。ユーザー名とパスワードが一致していれば、アプリケーションの利用を許可します。名前は任意ですが、ここではユーザー名とパスワードが同じ、としています。スキーム・タイプはカスタムを選びます。認証ファンクション名として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のアプリケーションはこの例のように作られているでしょう。通常、特に言語については意識せずに、直接アプリケーションに日本語を埋め込んでいると思います。
このように、ひとつの言語だけを考えて作られているアプリケーションを、これから多言語に対応させていきます。