Más contenido relacionado
La actualidad más candente (20)
Similar a 20190212 apex demo (20)
20190212 apex demo
- 1. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Oracle Application Express による
デモ作成事例のご紹介
日本オラクル株式会社
2019年2月12日
宇多津 真彦
- 2. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
アプリケーション作成の流れ
某自動車販売会社向けデモアプリのご紹介
その他のデモアプリ作成で対処したこと
最後に: 潜在的なAPEX開発者?
1
2
3
2
4
- 3. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
アプリケーション作成の流れ
3
- 4. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
アプリケーション
アプリケーション作成の流れ
1. アプリケーション(の枠組み)を作成
2. アプリケーション内で共通に利用するものを「共有コンポーネント」で作成
1. 認証 (アプリケーションへのログイン)
2. 認可 (アクセス制限)
3. LOV (List of Value: プルダウンリスト等で利用)
3. アプリケーション機能をページ単位で作成
1. ウィザードでページを作成する
2. ウィザードでできたページを調整
4. アプリケーション全体を「共有コンポーネント」の機能で整える
1. ユーザー・インターフェース属性の調整
2. ナビゲーション・メニューに画面を登録
3. ページおよびメニュー項目毎に、必要に応じた認可設定
アプリケーション
共有コンポーネント
認証
LOV 認可
ユーザー・
インターフェース
属性
ナビゲーション・
メニュー
ページ ページ ページ
4
- 5. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
• マスター表などデータが削除されると困るテーブルは
実削除をおこなわないようにする(論理削除)
また、データを変更を管理するカラムを持たせる
• APEX側のロジックはAPEX側で実現
– DBのトリガーは使わない
– ボタン押下時に実行される「プロセス」はPL/SQLで記述
• 各テーブルは基本的にIDを持ち、IDを主キーとする
また、IDと関連したSEQUENCEを作成する
– 主キーがIDでないものもある
(ユーザ表の主キーとしてE-Mailアドレスを利用する、など)
• LOVは基本的に動的LOV (SELECT文)で定義
– マスター表から名称を取得するLOVはあらかじめ作成する
– コード用のテーブルを用意
– 年、年月などは日付管理用のテーブルを用意するのではなく、
表関数、パイプライン・テーブル・ファンクションを利用
5
個人的に気をつけていること
CREATE OR REPLACE PACKAGE common
AS
TYPE yyyymm_type IS RECORD (
yyyymm_str VARCHAR2(7), -- 'YYYY/MM'
yyyymmdd_dt DATE
);
TYPE rec_yyyymm IS TABLE OF yyyymm_type;
FUNCTION ret_yyyymm (
dt_in IN DATE,
cnt_in IN NUMBER DEFAULT 12
)RETURN rec_yyyymm PIPELINED;
END common;
/
CREATE OR REPLACE PACKAGE BODY common
AS
FUNCTION ret_yyyymm (
dt_in IN DATE,
cnt_in IN NUMBER DEFAULT 12
)RETURN rec_yyyymm PIPELINED
AS
rec yyyymm_type;
BEGIN
FOR i IN 1..cnt_in LOOP
rec.yyyymmdd_dt := ADD_MONTHS(dt_in, i);
rec.yyyymm_str := TO_CHAR(rec.yyyymmdd_dt,'YYYY/MM');
PIPE ROW(rec);
END LOOP;
RETURN;
EXCEPTION
WHEN OTHERS THEN
RAISE;
END ret_yyyymm;
END common;
/
select yyyymm_str d,
TO_CHAR(TRUNC(yyyymmdd_dt,'MM'),'YYYY/MM/DD') r
from table (common.ret_yyyymm(CURRENT_DATE, 3))
order by 1 ;
D R
------- ----------
2019/03 2019/03/01
2019/04 2019/04/01
2019/05 2019/05/01
パイプライン・テーブル・
ファンクションの例
表関数の例
- 6. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
某自動車販売会社向けデモアプリのご紹介
6
- 7. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
某自動車販売会社向けデモ
7
Excelの在庫管理 + FAXでの在庫リストのやりとりをWeb化したい
APEX
• 提案内容
– 在庫リストのDB化 およびWeb化
(Oracle Database Cloud Service利用)
– 店舗スタッフからiPhoneからの予約 (APEXによるアプリケーション)
• 現状の課題
– 在庫として持っている販売用の車を「提案する為に一時予約する」仕組
みをWeb化したい
– 1-2時間間隔で、Excelで管理している在庫リストを店舗にFAX
– 随時店舗の店長から、在庫車種の予約に関する電話が本社に
– やりとりにかかるコストが馬鹿にならない
在庫リスト
(Excel)
本社
店舗A
店舗B
在庫リスト
(紙)
在庫リスト
(紙)
電話で車種を予約
電話で車種を予約
定期的に在庫リストをFAX
(xx店xxさん在庫No.x番のセダン予約中)
Database Cloud
Service
在庫
リスト
店舗A 店舗B
本社
メンテナンス
予約・成約
受注状況
確認
在庫リスト
(Excel)
APEX
アプリ
- 8. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
• 店舗の販売員
– 認証、パスワード変更
– 在庫表のiPhoneからのアクセス
– 在庫のリスト表示、車種による絞り込み
– 排他制御
• 予約、予約キャンセル、成約
• 本部社員
– 在庫表のメンテナンス
– 各種マスターのメンテナンス
– 在庫の予約状況の可視化
• 予約、予約キャンセル、成約等のイベントのログ
を取得
8
必要な機能
- 9. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
おおまかなテーブル構成
9
イベントの種類
• 予約時間切れ
• 予約
• 予約キャンセル
• 成約
• 成約キャンセル
マスター表のデータは
履歴を管理するカラムを持つ
(実削除をおこなわない)
現在利用しているExcel
の情報を元にテーブルを
作成
アプリケーション用に追加
- 10. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
参考)モバイル環境用のレポート
• ユニバーサル・テーマで最適化された
レポート
– リストビュー(今回のデモで使用)
– 列切替えレポート
– リフローレポート
• 最適化されていないレポート
– 対話モード・レポート
– 対話グリッド
10
参考)
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース18.1
6.7 モバイル・デバイス用のアプリケーションの作成
- 11. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
iPhone からのアクセス(1)
11
車種の絞り込み
- 12. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
iPhone からのアクセス(2)
12
2時間予約
予約中
成約済み
別の担当者からはボダンは表示されない
- 13. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
ボタンの表示・非表示
13
ボタンの Server-side Conditionで 不要なボタンを非表示
「成約キャンセル」ボタンを表示する条件
- 14. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
予約の解除(timeout)
14
誰かが画面にアクセスした時に、時間切れの予約は解除
- 15. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
iPhoneからのアクセスとPCからのアクセスを振り分ける
15
owa_util.get_cgi_env('HTTP_USER_AGENT') を使い、アクセスしてきた端末を判断
←Page 6 (iPhone用画面)
1. ログイン
2. Page 1 (ホーム) へ
3. Page 1 で端末の種類を判断
1. 端末が iPhone の場合は Page 6 へ
2. そうでなければ Page 7 へ
←Page 7
- 16. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
その他のデモアプリ作成で対処したこと
Oracle Database が提供する機能を利用
16
- 17. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
デモ・アプリケーション「商品のWebカタログ」
大量の画像ファイルのアップロード(1)
• やりたいこと
– 商品情報として画像(jpegファイル)を扱う
– APEXで扱うテーブルにおける画像カラム属性はBLOB
• 懸念点
– 商品点数は500以上
• 個別の商品メンテナンス画面でいちいちアップロードするのは手間
– メンテナンス担当者はLinuxのスキルも、Oracle Databaseの
スキルも無い
• LinuxのShellによるオペレーションは難しい
• SQL*Loader によるローディング作業も難しい
17
APEXでメンテナンス用
画面を作成
※ SQL*LoaderでBLOBカラムへのデータ・ローディングは可能
- 18. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
デモ・アプリケーション「商品のWebカタログ」
• OS上で特定のディレクトリのファイル
情報の確認
– 外部表を利用
– 外部表を直接APEXから利用すると動作が
不安定だったため、削除用ページの作成用
にテーブルを用意
• OS上で特定のディレクトリ下へZipファ
イルの内容を解凍
– PL/SQLから呼び出せる、C言語による
外部プロシージャ作成
18
大量の画像ファイルのアップロード(2)
← PL/SQL
← PL/SQL
← 削除用ページ+ PL/SQL
← ???
OS上のファイル情報
- 22. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
接続確認「SVF Cloudとの連携」
22
SVF Cloud: ウイングアーク1st株式会社様の提供するクラウドの帳票出力環境
- 23. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
接続確認「SVF Cloudとの連携」
• SVF Cloud との認証において、
JWT(Json Web Token) Bearer Token
を利用
• JWT Bearer Token では RSA SHA256
を使用した署名が必要
– RSA SHA256 はOracle Database機能では
提供していないが Java は利用可能
– Java でRSA SHA256を使用した署名の
仕組みを作成し、Oracle Database へ
Javaストアド・プロシージャとして登録
※ SVF Cloudとの連携は提供される
Javaのサンプルを元にPL/SQLで
記述するのみ
23
JWTベアラートークンの作成と利用の為に
- 27. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
最後に: 潜在的なAPEX開発者?
Oracle Forms / E-Business Suite の元開発者
27
- 28. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
デモの「引継ぎ」で考えたこと
• Oracle Forms / Oracle Designer (ERモデリング・ツール)利用経験者
• E-Business Suiteのアドオン開発経験者
であれば、APEXの概要理解は「すぐ」でした。
• 身近な上記経験者を誘ってみてください。
– データ・モデリングができる
– データ・モデルを元に画面を作成できる
– (40代 ー 60 代くらい??)
28