SlideShare una empresa de Scribd logo
1 de 30
Descargar para leer sin conexión
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Oracle Application Express による
デモ作成事例のご紹介
日本オラクル株式会社
2019年2月12日
宇多津 真彦
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
Program Agenda
アプリケーション作成の流れ
某自動車販売会社向けデモアプリのご紹介
その他のデモアプリ作成で対処したこと
最後に: 潜在的なAPEX開発者?
1
2
3
2
4
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
アプリケーション作成の流れ
3
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
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
パイプライン・テーブル・
ファンクションの例
表関数の例
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
某自動車販売会社向けデモアプリのご紹介
6
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
アプリ
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
• 店舗の販売員
– 認証、パスワード変更
– 在庫表のiPhoneからのアクセス
– 在庫のリスト表示、車種による絞り込み
– 排他制御
• 予約、予約キャンセル、成約
• 本部社員
– 在庫表のメンテナンス
– 各種マスターのメンテナンス
– 在庫の予約状況の可視化
• 予約、予約キャンセル、成約等のイベントのログ
を取得
8
必要な機能
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
おおまかなテーブル構成
9
イベントの種類
• 予約時間切れ
• 予約
• 予約キャンセル
• 成約
• 成約キャンセル
マスター表のデータは
履歴を管理するカラムを持つ
(実削除をおこなわない)
現在利用しているExcel
の情報を元にテーブルを
作成
アプリケーション用に追加
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
参考)モバイル環境用のレポート
• ユニバーサル・テーマで最適化された
レポート
– リストビュー(今回のデモで使用)
– 列切替えレポート
– リフローレポート
• 最適化されていないレポート
– 対話モード・レポート
– 対話グリッド
10
参考)
Oracle® Application Expressアプリケーション・ビルダー・ユーザーズ・ガイド
リリース18.1
6.7 モバイル・デバイス用のアプリケーションの作成
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
iPhone からのアクセス(1)
11
車種の絞り込み
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
iPhone からのアクセス(2)
12
2時間予約
予約中
成約済み
別の担当者からはボダンは表示されない
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
ボタンの表示・非表示
13
ボタンの Server-side Conditionで 不要なボタンを非表示
「成約キャンセル」ボタンを表示する条件
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
予約の解除(timeout)
14
誰かが画面にアクセスした時に、時間切れの予約は解除
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
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
その他のデモアプリ作成で対処したこと
Oracle Database が提供する機能を利用
16
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カラムへのデータ・ローディングは可能
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上のファイル情報
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 19
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 20
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 21
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
接続確認「SVF Cloudとの連携」
22
SVF Cloud: ウイングアーク1st株式会社様の提供するクラウドの帳票出力環境
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ベアラートークンの作成と利用の為に
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 24
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 25
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 26
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
最後に: 潜在的なAPEX開発者?
Oracle Forms / E-Business Suite の元開発者
27
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. |
デモの「引継ぎ」で考えたこと
• Oracle Forms / Oracle Designer (ERモデリング・ツール)利用経験者
• E-Business Suiteのアドオン開発経験者
であれば、APEXの概要理解は「すぐ」でした。
• 身近な上記経験者を誘ってみてください。
– データ・モデリングができる
– データ・モデルを元に画面を作成できる
– (40代 ー 60 代くらい??)
28
Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 29
20190212 apex demo

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

APEX Workshop III 日本語版
APEX Workshop III 日本語版APEX Workshop III 日本語版
APEX Workshop III 日本語版
 
Oracle APEX概要
Oracle APEX概要Oracle APEX概要
Oracle APEX概要
 
Oracle APEX 19.2 新機能紹介
Oracle APEX 19.2 新機能紹介Oracle APEX 19.2 新機能紹介
Oracle APEX 19.2 新機能紹介
 
2018/4/24 APEX MeetUp #2 APEX はじめの一歩
2018/4/24 APEX MeetUp #2 APEX はじめの一歩2018/4/24 APEX MeetUp #2 APEX はじめの一歩
2018/4/24 APEX MeetUp #2 APEX はじめの一歩
 
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発
Oracle Cloud Platform - クラクドにおける新たなデータベース開発Oracle Cloud Platform - クラクドにおける新たなデータベース開発
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発
 
20190620 multicloud share
20190620 multicloud share20190620 multicloud share
20190620 multicloud share
 
Oracle Database Cloud と無料の純正開発ツールで開発効率を改善しよう!(db tech showcase 2016 Oracle セッ...
Oracle Database Cloud と無料の純正開発ツールで開発効率を改善しよう!(db tech showcase 2016 Oracle セッ...Oracle Database Cloud と無料の純正開発ツールで開発効率を改善しよう!(db tech showcase 2016 Oracle セッ...
Oracle Database Cloud と無料の純正開発ツールで開発効率を改善しよう!(db tech showcase 2016 Oracle セッ...
 
はじめてのOracle Cloud Platform
はじめてのOracle Cloud PlatformはじめてのOracle Cloud Platform
はじめてのOracle Cloud Platform
 
Oracle Application Express:概要のご紹介
Oracle Application Express:概要のご紹介Oracle Application Express:概要のご紹介
Oracle Application Express:概要のご紹介
 
Waterfall cafeで働くBot
Waterfall cafeで働くBotWaterfall cafeで働くBot
Waterfall cafeで働くBot
 
Oracle Integration Cloud Process Automation概要資料(20200507版)
Oracle Integration Cloud Process Automation概要資料(20200507版)Oracle Integration Cloud Process Automation概要資料(20200507版)
Oracle Integration Cloud Process Automation概要資料(20200507版)
 
[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ[Oracle big data jam session #1] Apache Spark ことはじめ
[Oracle big data jam session #1] Apache Spark ことはじめ
 
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法
 
20200424 Oracle Big Data Jam Session #2 登壇資料(Data Flow)
20200424 Oracle Big Data Jam Session #2 登壇資料(Data Flow)20200424 Oracle Big Data Jam Session #2 登壇資料(Data Flow)
20200424 Oracle Big Data Jam Session #2 登壇資料(Data Flow)
 
JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説JDK: 新しいリリースモデル解説
JDK: 新しいリリースモデル解説
 
[旧版]OCI Data Integration Overview 2020年7月版
[旧版]OCI Data Integration Overview 2020年7月版[旧版]OCI Data Integration Overview 2020年7月版
[旧版]OCI Data Integration Overview 2020年7月版
 
APEX UG Japan meetup 2018#3 - APEX18.1大特集
APEX UG Japan meetup 2018#3 - APEX18.1大特集APEX UG Japan meetup 2018#3 - APEX18.1大特集
APEX UG Japan meetup 2018#3 - APEX18.1大特集
 
[Modern Cloud Day Tokyo 2019] 基調講演(Day1):次世代クラウドが変える日本のエンタープライズ・ビジネス
[Modern Cloud Day Tokyo 2019] 基調講演(Day1):次世代クラウドが変える日本のエンタープライズ・ビジネス[Modern Cloud Day Tokyo 2019] 基調講演(Day1):次世代クラウドが変える日本のエンタープライズ・ビジネス
[Modern Cloud Day Tokyo 2019] 基調講演(Day1):次世代クラウドが変える日本のエンタープライズ・ビジネス
 
3年間の情報漏洩事件からみるデータ保護対策の勘所 ~ データ・セキュリティ、考え方とその仕組み
3年間の情報漏洩事件からみるデータ保護対策の勘所 ~ データ・セキュリティ、考え方とその仕組み3年間の情報漏洩事件からみるデータ保護対策の勘所 ~ データ・セキュリティ、考え方とその仕組み
3年間の情報漏洩事件からみるデータ保護対策の勘所 ~ データ・セキュリティ、考え方とその仕組み
 
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうかWebアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
 

Similar a 20190212 apex demo

Aws seminar-tokyo dan-jp-final-publish
Aws seminar-tokyo dan-jp-final-publishAws seminar-tokyo dan-jp-final-publish
Aws seminar-tokyo dan-jp-final-publish
awsadovantageseminar
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウド
Hirotada Watanabe
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説
kumo2010
 

Similar a 20190212 apex demo (20)

[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力![DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
[DevSumi2019]Cloud Native アプリケーションに最適!Oracle Cloud Infrastructureの魅力!
 
BPStudy20121221
BPStudy20121221BPStudy20121221
BPStudy20121221
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
【2018年3月時点】Oracle Data Visualizaion ご紹介
【2018年3月時点】Oracle Data Visualizaion ご紹介【2018年3月時点】Oracle Data Visualizaion ご紹介
【2018年3月時点】Oracle Data Visualizaion ご紹介
 
OpenSpan_PreMarketing
OpenSpan_PreMarketingOpenSpan_PreMarketing
OpenSpan_PreMarketing
 
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
[Modern Cloud Day Tokyo 2019] Oracle Functions = サーバーレス × Dockerコンテナ:AWS Lamb...
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
Force.com開発基礎
Force.com開発基礎Force.com開発基礎
Force.com開発基礎
 
エンタープライズ・クラウドのシステム・デザイン・パターン [Oracle Cloud Days Tokyo 2016]
エンタープライズ・クラウドのシステム・デザイン・パターン [Oracle Cloud Days Tokyo 2016]エンタープライズ・クラウドのシステム・デザイン・パターン [Oracle Cloud Days Tokyo 2016]
エンタープライズ・クラウドのシステム・デザイン・パターン [Oracle Cloud Days Tokyo 2016]
 
20191015 beyondstudy oracle_nagahisa
20191015 beyondstudy oracle_nagahisa20191015 beyondstudy oracle_nagahisa
20191015 beyondstudy oracle_nagahisa
 
Oracle Cloud PaaS & IaaS:2019年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2019年4月度サービス情報アップデートOracle Cloud PaaS & IaaS:2019年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2019年4月度サービス情報アップデート
 
Aws dan jp-final-publish
Aws dan jp-final-publishAws dan jp-final-publish
Aws dan jp-final-publish
 
Aws seminar-tokyo dan-jp-final-publish
Aws seminar-tokyo dan-jp-final-publishAws seminar-tokyo dan-jp-final-publish
Aws seminar-tokyo dan-jp-final-publish
 
Apps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウドApps for office オンプレミスとクラウド
Apps for office オンプレミスとクラウド
 
【旧版】Oracle Autonomous Database Cloud サービス紹介資料 [2020年/3月版]
【旧版】Oracle Autonomous Database Cloud サービス紹介資料 [2020年/3月版]【旧版】Oracle Autonomous Database Cloud サービス紹介資料 [2020年/3月版]
【旧版】Oracle Autonomous Database Cloud サービス紹介資料 [2020年/3月版]
 
20180424 Oracle APEX Overview - はじめの一歩
20180424 Oracle APEX Overview - はじめの一歩20180424 Oracle APEX Overview - はじめの一歩
20180424 Oracle APEX Overview - はじめの一歩
 
「あの企業は実際どうやってるの?」顧客実例で語るデータ・ドリブンの実像とは (Oracle Cloudウェビナーシリーズ: 2021年9月1日)
「あの企業は実際どうやってるの?」顧客実例で語るデータ・ドリブンの実像とは (Oracle Cloudウェビナーシリーズ: 2021年9月1日)「あの企業は実際どうやってるの?」顧客実例で語るデータ・ドリブンの実像とは (Oracle Cloudウェビナーシリーズ: 2021年9月1日)
「あの企業は実際どうやってるの?」顧客実例で語るデータ・ドリブンの実像とは (Oracle Cloudウェビナーシリーズ: 2021年9月1日)
 
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
オラクル・インフラストラクチャー・サービス(IaaS)最新情報(Oracle Cloud Days Tokyo 2015)
 
Oracle APEX 概要
Oracle APEX 概要Oracle APEX 概要
Oracle APEX 概要
 
次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説次期Office製品群の新しい開発モデルの解説
次期Office製品群の新しい開発モデルの解説
 

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上のファイル情報
  • 19. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 19
  • 20. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 20
  • 21. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 21
  • 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ベアラートークンの作成と利用の為に
  • 24. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 24
  • 25. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 25
  • 26. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 26
  • 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
  • 29. Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 29