SlideShare a Scribd company logo
1 of 45
Download to read offline
Oracle Application Express と
Oracle BI Publisher の連携例
日本オラクル株式会社
2018年2月22日
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、
情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以
下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものでは
ないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載
されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。
文中の社名、商品名等は各社の商標または登録商標である場合があります。
2
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
Program Agenda
APEXの「レポート問い合わせ」を使用したレポート作成
BI Publisherの提供するRESTful APIを使用したレポート作成
1
2
3
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
試した環境
• Oracle Application Express 5.1.4
• BI Publisher 12.2.1.3.0
– バージョン 12.2 よりRESTful APIを提供
• VirtualBox上に作成した環境
4
http://www.oracle.com/technetwork/middleware/bi-publisher/new-features-guide-for-12-2-1-1-3074557.pdf?ssSourceSiteId=otnjp/
Copyright © 2017 Oracle and/or its affiliates. All rights reserved. |
APEXの「レポート問い合わせ」を使用したレポート作成
5
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
作成したい画面
6
リストから製品名を選択し、「作成」ボタンを押すと、ドキュメントがダウンロードされる
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
APEXにログインした直後
7
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「アプリケーション・ビルダー」を選択
8
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「共有コンポーネント」を選択
9
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
下方へスクロール
10
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」を選択
11
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
新規作成のため、「作成」ボタンをクリック
12
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(1)
13
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(2)
14
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(3)
15
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(4)
16
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(5)
17
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(6)
18
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
MS-Word によるレポートのテンプレート作成(1)
19
RTFのファイルとして作成
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
MS-Word によるレポートのテンプレート作成(2)
20
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
MS-Word によるレポートのテンプレート作成(3)
21
← カーソルをここにおいて、「表ウィザード」ボタンをクリック
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「表ウィザード」の流れ
22
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
MS-Word によるレポートのテンプレート作成(4)
23
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
MS-Word によるレポートのテンプレート作成(5)
24
ドラッグ&ドロップ
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
MS-Word によるレポートのテンプレート作成(6)
25
Wordのフォーマットを微調整
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(7)
26
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(8)
27
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(9)
28
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
「レポート問い合わせ」の定義(10)
29
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
画面側の設定(1) - P10_PRODUCT_NAME
30
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
画面側の設定(2) - goボタン
31
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
画面側の設定(3) - ブランチの設定
32
Copyright © 2017 Oracle and/or its affiliates. All rights reserved. |
BI Publisherの提供するRESTful APIを使用したレポート作成
33
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
BI Publisher の Rest API を実行するAPEX画面
34
リストから製品名を選択し、「作成」ボタンを押すと、ドキュメントがダウンロード可能となる
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
BI Publisher の Rest API を実行するAPEX画面
35
ボタン押下時に実行されるプロセス
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
BI Publisher 側で定義したレポート
36
外部からパラメータで「prod_id」を受け渡される
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
BI Publisher 側で定義したレポート
37
パラメータをもとに条件絞り込みをおこなう
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
BI PublisherのレポートへのRest APIからの実行
38
ヘッダーの設定
multipart/form-data を利用
Response情報
レポート本体
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
BI PublisherのレポートへのRest APIからの実行
39
パラメータの受け渡し設定
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
参考情報
40
http://www.redstk.com/bi-publisher-12c-
running-reports-via-the-rest-api/
http://www.ateam-oracle.com/extracting-data-from-oracle-
business-intelligence-12c-using-the-bi-publisher-rest-api/
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
create_bip_rep プロシージャ で利用しているテーブル等
41
CREATE TABLE bip_reports
(
id NUMBER,
exec_date DATE,
ret_image BLOB,
ret_filename VARCHAR2(1000),
ret_mimetype VARCHAR2(128),
ret_last_update DATE,
ret_charset VARCHAR2(128),
CONSTRAINT bip_reports_pk
primary key (id)
using index enable
)
;
create sequence bip_rep_seq start with 1 increment by 1;
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
create_bip_rep プロシージャの内容
42
CREATE OR REPLACE PROCEDURE create_bip_rep (
prod_id_in IN NUMBER
)
IS
r_blob BLOB;
t_base_url VARCHAR2(256);
t_rep_name VARCHAR2(256);
t_url VARCHAR2(1000);
t_method VARCHAR2(256);
t_username VARCHAR2(256);
t_password VARCHAR2(256);
t_scheme VARCHAR2(256);
t_header_name01 VARCHAR2(1000);
t_header_value01 VARCHAR2(1000);
t_body CLOB;
t_body_templ CLOB :=
'--Boundary_1_1153447573_1465550731355
Content-Type: application/json
Content-Disposition: form-data; name="ReportRequest"
{
"byPassCache":true,
"parameterNameValues": { "listOfParamNameValues": [
{
"name": "prod_id_in",
"values": "###PARAM###"
}
]
}
}
--Boundary_1_1153447573_1465550731355--
';
bip_id NUMBER;
BEGIN
t_base_url :=
'http://192.168.56.20:9502/xmlpserver/services/rest/v1/reports';
t_rep_name := 'rep_sales03';
t_url := t_base_url ||'/'|| t_rep_name ||'/run';
t_method := 'POST';
t_username := 'weblogic';
t_password := 'Welcome01';
t_scheme := 'Basic';
t_header_name01 := 'Content-Type';
t_header_value01 := 'multipart/form-data;
boundary="Boundary_1_1153447573_1465550731355"';
apex_web_service.g_request_headers(1).name := t_header_name01;
apex_web_service.g_request_headers(1).value := t_header_value01;
t_body :=
REPLACE(t_body_templ,'###PARAM###',TO_CHAR(prod_id_in));
r_blob :=
apex_web_service.make_rest_request_b(
p_url => t_url,
p_http_method => t_method,
p_username => t_username,
p_password => t_password,
p_scheme => t_scheme,
p_body => t_body
);
bip_id := bip_rep_seq.nextval;
insert into bip_reports (
id,
exec_date,
ret_image
)values(
bip_id,
sysdate,
r_blob
);
update_bip_rep(bip_id);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
apex_web_service.make_rest_request_b
実行した戻り値のBLOBには
Response情報とレポートの情報が混在
update_bip_repにてBLOBからResponse情報を
削除
Response情報
レポート本体
Rest API実行
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. |
update_bip_rep プロシージャの内容
43
CREATE OR REPLACE PROCEDURE update_bip_rep (
id_in IN NUMBER
)
IS
tmp_BLOB BLOB;
store_BLOB BLOB;
str VARCHAR2(1000);
FILE_NOT_OPEN INTEGER := 0;
FILE_OPENED INTEGER := 1;
len NUMBER;
total_len NUMBER;
offset NUMBER;
read_offset NUMBER;
nth NUMBER;
pos NUMBER;
pattern RAW(2) := HEXTORAW('0D0A'); -- CRLF
pattern_len NUMBER := 2;
buffer RAW(32767);
buffer_v VARCHAR2(32767);
amount NUMBER;
content_type VARCHAR2(1000);
BEGIN
DBMS_LOB.CREATETEMPORARY(store_BLOB,FALSE,DBMS_LOB.
SESSION);
select ret_image into tmp_BLOB
from bip_reports
where id = id_in;
total_len := DBMS_LOB.GETLENGTH(tmp_BLOB);
DBMS_LOB.OPEN(tmp_BLOB, DBMS_LOB.LOB_READONLY);
DBMS_LOB.OPEN(store_BLOB, DBMS_LOB.LOB_READWRITE);
offset := 1;
LOOP
IF offset >= total_len THEN
EXIT;
END IF;
pos := DBMS_LOB.INSTR (tmp_BLOB,pattern,offset,1);
amount := pos - offset;
IF amount > 0 THEN
DBMS_LOB.READ(tmp_BLOB,amount,offset,buffer);
buffer_v := UTL_RAW.CAST_TO_VARCHAR2(buffer);
END IF;
offset := pos + pattern_len;
IF regexp_instr(buffer_v,'^--Boundary') = 1 THEN -- match
CONTINUE; -- 次のLOOPへ
END IF;
IF regexp_instr(buffer_v,'^{"reportContentType":') = 1 THEN -- match
content_type :=
regexp_replace(buffer_v,'{"reportContentType":"(¥S+)"}','¥1');
CONTINUE; -- 次のLOOPへ
END IF;
IF regexp_instr(buffer_v,'^Content-') = 1 THEN
CONTINUE; -- 次のLOOPへ
END IF;
-- dbms_output.put_line('amount: '||to_char(amount,'999,999'));
-- dbms_output.put_line(buffer_v);
IF amount > 0 THEN
DBMS_LOB.WRITEAPPEND(store_BLOB,amount,buffer);
DBMS_LOB.WRITEAPPEND(store_BLOB,pattern_len,pattern);
END IF;
END LOOP;
DBMS_LOB.CLOSE(tmp_BLOB);
DBMS_LOB.CLOSE(store_BLOB);
update bip_reports
set ret_image = store_BLOB,
ret_filename = 'download.rtf',
ret_mimetype = content_type
where id = id_in;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE(SQLERRM);
IF DBMS_LOB.ISOPEN(tmp_BLOB) = FILE_OPENED THEN
DBMS_LOB.CLOSE(tmp_BLOB);
END IF;
IF DBMS_LOB.ISOPEN(store_BLOB) = FILE_OPENED THEN
DBMS_LOB.CLOSE(store_BLOB);
END IF;
END;
/
Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 44
Oracle Application Expressと Oracle BI Publisherの連携例

More Related Content

What's hot

Oracle APEXユーザー会の紹介
Oracle APEXユーザー会の紹介Oracle APEXユーザー会の紹介
Oracle APEXユーザー会の紹介Nakakoshi Yuji
 
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 はじめの一歩Miyuki Ishiwata
 
APEX Workshop II 日本語版
APEX Workshop II 日本語版APEX Workshop II 日本語版
APEX Workshop II 日本語版Nakakoshi Yuji
 
【2016年3月時点】Data Visualization Cloud Service ハンズオン資料
【2016年3月時点】Data Visualization Cloud Service ハンズオン資料【2016年3月時点】Data Visualization Cloud Service ハンズオン資料
【2016年3月時点】Data Visualization Cloud Service ハンズオン資料オラクルエンジニア通信
 
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発
Oracle Cloud Platform - クラクドにおける新たなデータベース開発Oracle Cloud Platform - クラクドにおける新たなデータベース開発
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発オラクルエンジニア通信
 
APEX Workshop III 日本語版
APEX Workshop III 日本語版APEX Workshop III 日本語版
APEX Workshop III 日本語版Nakakoshi Yuji
 
事例から探る Oracle APEX 成功パターン
事例から探る Oracle APEX 成功パターン事例から探る Oracle APEX 成功パターン
事例から探る Oracle APEX 成功パターン良 亀井
 
Autonomous DatabaseでのOracle APEX初期設定手順 - 2019年8月6日版
Autonomous DatabaseでのOracle APEX初期設定手順 - 2019年8月6日版Autonomous DatabaseでのOracle APEX初期設定手順 - 2019年8月6日版
Autonomous DatabaseでのOracle APEX初期設定手順 - 2019年8月6日版Nakakoshi Yuji
 
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 Database Cloud Serviceを活用した ビジネスに役立つデータ利活用のススメ
Oracle Database Cloud Serviceを活用したビジネスに役立つデータ利活用のススメOracle Database Cloud Serviceを活用したビジネスに役立つデータ利活用のススメ
Oracle Database Cloud Serviceを活用した ビジネスに役立つデータ利活用のススメオラクルエンジニア通信
 
Waterfall cafeで働くBot
Waterfall cafeで働くBotWaterfall cafeで働くBot
Waterfall cafeで働くBotKazuki Nakajima
 
畑と会話するニュータイプなIo tアプリで加熱中の技術トレンドを鷲掴みにする45分
畑と会話するニュータイプなIo tアプリで加熱中の技術トレンドを鷲掴みにする45分畑と会話するニュータイプなIo tアプリで加熱中の技術トレンドを鷲掴みにする45分
畑と会話するニュータイプなIo tアプリで加熱中の技術トレンドを鷲掴みにする45分Kazuki Nakajima
 
【2016年3月時点】クラウド型 BI だからできる新たな情報活用方法
【2016年3月時点】クラウド型 BI だからできる新たな情報活用方法【2016年3月時点】クラウド型 BI だからできる新たな情報活用方法
【2016年3月時点】クラウド型 BI だからできる新たな情報活用方法オラクルエンジニア通信
 
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法Kazuki Nakajima
 

What's hot (20)

Oracle APEX概要
Oracle APEX概要Oracle APEX概要
Oracle APEX概要
 
Oracle APEXユーザー会の紹介
Oracle APEXユーザー会の紹介Oracle APEXユーザー会の紹介
Oracle APEXユーザー会の紹介
 
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 はじめの一歩
 
APEX Workshop II 日本語版
APEX Workshop II 日本語版APEX Workshop II 日本語版
APEX Workshop II 日本語版
 
【2016年3月時点】Data Visualization Cloud Service ハンズオン資料
【2016年3月時点】Data Visualization Cloud Service ハンズオン資料【2016年3月時点】Data Visualization Cloud Service ハンズオン資料
【2016年3月時点】Data Visualization Cloud Service ハンズオン資料
 
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発
Oracle Cloud Platform - クラクドにおける新たなデータベース開発Oracle Cloud Platform - クラクドにおける新たなデータベース開発
Oracle Cloud Platform - クラクドにおける 新たなデータベース開発
 
APEX Workshop III 日本語版
APEX Workshop III 日本語版APEX Workshop III 日本語版
APEX Workshop III 日本語版
 
事例から探る Oracle APEX 成功パターン
事例から探る Oracle APEX 成功パターン事例から探る Oracle APEX 成功パターン
事例から探る Oracle APEX 成功パターン
 
Autonomous DatabaseでのOracle APEX初期設定手順 - 2019年8月6日版
Autonomous DatabaseでのOracle APEX初期設定手順 - 2019年8月6日版Autonomous DatabaseでのOracle APEX初期設定手順 - 2019年8月6日版
Autonomous DatabaseでのOracle APEX初期設定手順 - 2019年8月6日版
 
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 Database Cloud Serviceを活用した ビジネスに役立つデータ利活用のススメ
Oracle Database Cloud Serviceを活用したビジネスに役立つデータ利活用のススメOracle Database Cloud Serviceを活用したビジネスに役立つデータ利活用のススメ
Oracle Database Cloud Serviceを活用した ビジネスに役立つデータ利活用のススメ
 
Oracle R Enterprise の使い方
Oracle R Enterprise の使い方Oracle R Enterprise の使い方
Oracle R Enterprise の使い方
 
Waterfall cafeで働くBot
Waterfall cafeで働くBotWaterfall cafeで働くBot
Waterfall cafeで働くBot
 
Oracle R Enterprise のセットアップ
Oracle R Enterprise のセットアップOracle R Enterprise のセットアップ
Oracle R Enterprise のセットアップ
 
畑と会話するニュータイプなIo tアプリで加熱中の技術トレンドを鷲掴みにする45分
畑と会話するニュータイプなIo tアプリで加熱中の技術トレンドを鷲掴みにする45分畑と会話するニュータイプなIo tアプリで加熱中の技術トレンドを鷲掴みにする45分
畑と会話するニュータイプなIo tアプリで加熱中の技術トレンドを鷲掴みにする45分
 
Oracle R Advanced Analytics for Hadoop利用方法
Oracle R Advanced Analytics for Hadoop利用方法Oracle R Advanced Analytics for Hadoop利用方法
Oracle R Advanced Analytics for Hadoop利用方法
 
【2016年3月時点】クラウド型 BI だからできる新たな情報活用方法
【2016年3月時点】クラウド型 BI だからできる新たな情報活用方法【2016年3月時点】クラウド型 BI だからできる新たな情報活用方法
【2016年3月時点】クラウド型 BI だからできる新たな情報活用方法
 
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法
AIを組み込んだ近未来のアプリケーションで感じる新しいサービスの新しい開発手法
 
はじめてのOracle Cloud Platform
はじめてのOracle Cloud PlatformはじめてのOracle Cloud Platform
はじめてのOracle Cloud Platform
 
データベースで始める機械学習
データベースで始める機械学習データベースで始める機械学習
データベースで始める機械学習
 

Similar to Oracle Application Expressと Oracle BI Publisherの連携例

Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデートオラクルエンジニア通信
 
Oracle Cloudでエンタープライズシステムを!
Oracle Cloudでエンタープライズシステムを!Oracle Cloudでエンタープライズシステムを!
Oracle Cloudでエンタープライズシステムを!oracle_consultant
 
MySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEMySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEyoyamasaki
 
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデートオラクルエンジニア通信
 
Oracle Cloud PaaS & IaaS:2018年12月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年12月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年12月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年12月度サービス情報アップデートオラクルエンジニア通信
 
Oracle Cloud PaaS & IaaS:2018年11月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年11月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年11月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年11月度サービス情報アップデートオラクルエンジニア通信
 
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年9月2日)
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年9月2日)はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年9月2日)
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年9月2日)オラクルエンジニア通信
 
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...オラクルエンジニア通信
 
20190620 multicloud share
20190620 multicloud share20190620 multicloud share
20190620 multicloud shareMai Nagahisa
 
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデートオラクルエンジニア通信
 
20190825_MySQL ServerだけじゃないMySQL Shellもあるんです
20190825_MySQL ServerだけじゃないMySQL Shellもあるんです20190825_MySQL ServerだけじゃないMySQL Shellもあるんです
20190825_MySQL ServerだけじゃないMySQL ShellもあるんですMachiko Ikoma
 
[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...
[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...
[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...オラクルエンジニア通信
 
Oracle Cloud PaaS & IaaS:2018年9月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年9月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年9月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年9月度サービス情報アップデートオラクルエンジニア通信
 

Similar to Oracle Application Expressと Oracle BI Publisherの連携例 (20)

Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年5月度サービス情報アップデート
 
Oracle Cloudでエンタープライズシステムを!
Oracle Cloudでエンタープライズシステムを!Oracle Cloudでエンタープライズシステムを!
Oracle Cloudでエンタープライズシステムを!
 
MySQLドキュメントストアとCTE
MySQLドキュメントストアとCTEMySQLドキュメントストアとCTE
MySQLドキュメントストアとCTE
 
Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要Oracle GoldenGate Veridata概要
Oracle GoldenGate Veridata概要
 
Oracle Advanced Security Data Redactionのご紹介
Oracle Advanced Security Data Redactionのご紹介Oracle Advanced Security Data Redactionのご紹介
Oracle Advanced Security Data Redactionのご紹介
 
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年8月度サービス情報アップデート
 
Oracle Cloud PaaS & IaaS:2018年12月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年12月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年12月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年12月度サービス情報アップデート
 
Oracle Cloud PaaS & IaaS:2018年11月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年11月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年11月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年11月度サービス情報アップデート
 
[旧版]Big Data Service Overview 2020年4月版
[旧版]Big Data Service Overview 2020年4月版[旧版]Big Data Service Overview 2020年4月版
[旧版]Big Data Service Overview 2020年4月版
 
Big Data Service Overview 2020年7月版
Big Data Service Overview 2020年7月版Big Data Service Overview 2020年7月版
Big Data Service Overview 2020年7月版
 
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年9月2日)
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年9月2日)はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年9月2日)
はじめてのOracle Cloud Infrastructure(Oracle Cloudウェビナーシリーズ: 2020年9月2日)
 
【2018年3月時点】Oracle BI 12c 新機能
【2018年3月時点】Oracle BI 12c 新機能【2018年3月時点】Oracle BI 12c 新機能
【2018年3月時点】Oracle BI 12c 新機能
 
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
Developers Summit 2018: ストリームとバッチを融合したBigData Analytics ~事例とデモから見えてくる、これからのデー...
 
20190620 multicloud share
20190620 multicloud share20190620 multicloud share
20190620 multicloud share
 
[旧版]OCI Data Integration Overview 2020年6月版
[旧版]OCI Data Integration Overview 2020年6月版[旧版]OCI Data Integration Overview 2020年6月版
[旧版]OCI Data Integration Overview 2020年6月版
 
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年4月度サービス情報アップデート
 
[旧版]OCI Data Integration Overview 2020年7月版
[旧版]OCI Data Integration Overview 2020年7月版[旧版]OCI Data Integration Overview 2020年7月版
[旧版]OCI Data Integration Overview 2020年7月版
 
20190825_MySQL ServerだけじゃないMySQL Shellもあるんです
20190825_MySQL ServerだけじゃないMySQL Shellもあるんです20190825_MySQL ServerだけじゃないMySQL Shellもあるんです
20190825_MySQL ServerだけじゃないMySQL Shellもあるんです
 
[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...
[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...
[Oracle Innovation Summit Tokyo 2018] 水環境の持続を支えるクラウド型ICTプラットフォーム「Water Busine...
 
Oracle Cloud PaaS & IaaS:2018年9月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年9月度サービス情報アップデートOracle Cloud PaaS & IaaS:2018年9月度サービス情報アップデート
Oracle Cloud PaaS & IaaS:2018年9月度サービス情報アップデート
 

Oracle Application Expressと Oracle BI Publisherの連携例

  • 1. Oracle Application Express と Oracle BI Publisher の連携例 日本オラクル株式会社 2018年2月22日
  • 2. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、 情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以 下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものでは ないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載 されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。 OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。 文中の社名、商品名等は各社の商標または登録商標である場合があります。 2
  • 3. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | Program Agenda APEXの「レポート問い合わせ」を使用したレポート作成 BI Publisherの提供するRESTful APIを使用したレポート作成 1 2 3
  • 4. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 試した環境 • Oracle Application Express 5.1.4 • BI Publisher 12.2.1.3.0 – バージョン 12.2 よりRESTful APIを提供 • VirtualBox上に作成した環境 4 http://www.oracle.com/technetwork/middleware/bi-publisher/new-features-guide-for-12-2-1-1-3074557.pdf?ssSourceSiteId=otnjp/
  • 5. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. | APEXの「レポート問い合わせ」を使用したレポート作成 5
  • 6. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 作成したい画面 6 リストから製品名を選択し、「作成」ボタンを押すと、ドキュメントがダウンロードされる
  • 7. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | APEXにログインした直後 7
  • 8. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「アプリケーション・ビルダー」を選択 8
  • 9. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「共有コンポーネント」を選択 9
  • 10. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 下方へスクロール 10
  • 11. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」を選択 11
  • 12. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 新規作成のため、「作成」ボタンをクリック 12
  • 13. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(1) 13
  • 14. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(2) 14
  • 15. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(3) 15
  • 16. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(4) 16
  • 17. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(5) 17
  • 18. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(6) 18
  • 19. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | MS-Word によるレポートのテンプレート作成(1) 19 RTFのファイルとして作成
  • 20. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | MS-Word によるレポートのテンプレート作成(2) 20
  • 21. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | MS-Word によるレポートのテンプレート作成(3) 21 ← カーソルをここにおいて、「表ウィザード」ボタンをクリック
  • 22. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「表ウィザード」の流れ 22
  • 23. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | MS-Word によるレポートのテンプレート作成(4) 23
  • 24. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | MS-Word によるレポートのテンプレート作成(5) 24 ドラッグ&ドロップ
  • 25. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | MS-Word によるレポートのテンプレート作成(6) 25 Wordのフォーマットを微調整
  • 26. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(7) 26
  • 27. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(8) 27
  • 28. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(9) 28
  • 29. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 「レポート問い合わせ」の定義(10) 29
  • 30. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 画面側の設定(1) - P10_PRODUCT_NAME 30
  • 31. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 画面側の設定(2) - goボタン 31
  • 32. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 画面側の設定(3) - ブランチの設定 32
  • 33. Copyright © 2017 Oracle and/or its affiliates. All rights reserved. | BI Publisherの提供するRESTful APIを使用したレポート作成 33
  • 34. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | BI Publisher の Rest API を実行するAPEX画面 34 リストから製品名を選択し、「作成」ボタンを押すと、ドキュメントがダウンロード可能となる
  • 35. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | BI Publisher の Rest API を実行するAPEX画面 35 ボタン押下時に実行されるプロセス
  • 36. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | BI Publisher 側で定義したレポート 36 外部からパラメータで「prod_id」を受け渡される
  • 37. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | BI Publisher 側で定義したレポート 37 パラメータをもとに条件絞り込みをおこなう
  • 38. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | BI PublisherのレポートへのRest APIからの実行 38 ヘッダーの設定 multipart/form-data を利用 Response情報 レポート本体
  • 39. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | BI PublisherのレポートへのRest APIからの実行 39 パラメータの受け渡し設定
  • 40. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 参考情報 40 http://www.redstk.com/bi-publisher-12c- running-reports-via-the-rest-api/ http://www.ateam-oracle.com/extracting-data-from-oracle- business-intelligence-12c-using-the-bi-publisher-rest-api/
  • 41. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | create_bip_rep プロシージャ で利用しているテーブル等 41 CREATE TABLE bip_reports ( id NUMBER, exec_date DATE, ret_image BLOB, ret_filename VARCHAR2(1000), ret_mimetype VARCHAR2(128), ret_last_update DATE, ret_charset VARCHAR2(128), CONSTRAINT bip_reports_pk primary key (id) using index enable ) ; create sequence bip_rep_seq start with 1 increment by 1;
  • 42. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | create_bip_rep プロシージャの内容 42 CREATE OR REPLACE PROCEDURE create_bip_rep ( prod_id_in IN NUMBER ) IS r_blob BLOB; t_base_url VARCHAR2(256); t_rep_name VARCHAR2(256); t_url VARCHAR2(1000); t_method VARCHAR2(256); t_username VARCHAR2(256); t_password VARCHAR2(256); t_scheme VARCHAR2(256); t_header_name01 VARCHAR2(1000); t_header_value01 VARCHAR2(1000); t_body CLOB; t_body_templ CLOB := '--Boundary_1_1153447573_1465550731355 Content-Type: application/json Content-Disposition: form-data; name="ReportRequest" { "byPassCache":true, "parameterNameValues": { "listOfParamNameValues": [ { "name": "prod_id_in", "values": "###PARAM###" } ] } } --Boundary_1_1153447573_1465550731355-- '; bip_id NUMBER; BEGIN t_base_url := 'http://192.168.56.20:9502/xmlpserver/services/rest/v1/reports'; t_rep_name := 'rep_sales03'; t_url := t_base_url ||'/'|| t_rep_name ||'/run'; t_method := 'POST'; t_username := 'weblogic'; t_password := 'Welcome01'; t_scheme := 'Basic'; t_header_name01 := 'Content-Type'; t_header_value01 := 'multipart/form-data; boundary="Boundary_1_1153447573_1465550731355"'; apex_web_service.g_request_headers(1).name := t_header_name01; apex_web_service.g_request_headers(1).value := t_header_value01; t_body := REPLACE(t_body_templ,'###PARAM###',TO_CHAR(prod_id_in)); r_blob := apex_web_service.make_rest_request_b( p_url => t_url, p_http_method => t_method, p_username => t_username, p_password => t_password, p_scheme => t_scheme, p_body => t_body ); bip_id := bip_rep_seq.nextval; insert into bip_reports ( id, exec_date, ret_image )values( bip_id, sysdate, r_blob ); update_bip_rep(bip_id); EXCEPTION WHEN OTHERS THEN RAISE; END; apex_web_service.make_rest_request_b 実行した戻り値のBLOBには Response情報とレポートの情報が混在 update_bip_repにてBLOBからResponse情報を 削除 Response情報 レポート本体 Rest API実行
  • 43. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | update_bip_rep プロシージャの内容 43 CREATE OR REPLACE PROCEDURE update_bip_rep ( id_in IN NUMBER ) IS tmp_BLOB BLOB; store_BLOB BLOB; str VARCHAR2(1000); FILE_NOT_OPEN INTEGER := 0; FILE_OPENED INTEGER := 1; len NUMBER; total_len NUMBER; offset NUMBER; read_offset NUMBER; nth NUMBER; pos NUMBER; pattern RAW(2) := HEXTORAW('0D0A'); -- CRLF pattern_len NUMBER := 2; buffer RAW(32767); buffer_v VARCHAR2(32767); amount NUMBER; content_type VARCHAR2(1000); BEGIN DBMS_LOB.CREATETEMPORARY(store_BLOB,FALSE,DBMS_LOB. SESSION); select ret_image into tmp_BLOB from bip_reports where id = id_in; total_len := DBMS_LOB.GETLENGTH(tmp_BLOB); DBMS_LOB.OPEN(tmp_BLOB, DBMS_LOB.LOB_READONLY); DBMS_LOB.OPEN(store_BLOB, DBMS_LOB.LOB_READWRITE); offset := 1; LOOP IF offset >= total_len THEN EXIT; END IF; pos := DBMS_LOB.INSTR (tmp_BLOB,pattern,offset,1); amount := pos - offset; IF amount > 0 THEN DBMS_LOB.READ(tmp_BLOB,amount,offset,buffer); buffer_v := UTL_RAW.CAST_TO_VARCHAR2(buffer); END IF; offset := pos + pattern_len; IF regexp_instr(buffer_v,'^--Boundary') = 1 THEN -- match CONTINUE; -- 次のLOOPへ END IF; IF regexp_instr(buffer_v,'^{"reportContentType":') = 1 THEN -- match content_type := regexp_replace(buffer_v,'{"reportContentType":"(¥S+)"}','¥1'); CONTINUE; -- 次のLOOPへ END IF; IF regexp_instr(buffer_v,'^Content-') = 1 THEN CONTINUE; -- 次のLOOPへ END IF; -- dbms_output.put_line('amount: '||to_char(amount,'999,999')); -- dbms_output.put_line(buffer_v); IF amount > 0 THEN DBMS_LOB.WRITEAPPEND(store_BLOB,amount,buffer); DBMS_LOB.WRITEAPPEND(store_BLOB,pattern_len,pattern); END IF; END LOOP; DBMS_LOB.CLOSE(tmp_BLOB); DBMS_LOB.CLOSE(store_BLOB); update bip_reports set ret_image = store_BLOB, ret_filename = 'download.rtf', ret_mimetype = content_type where id = id_in; EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE(SQLERRM); IF DBMS_LOB.ISOPEN(tmp_BLOB) = FILE_OPENED THEN DBMS_LOB.CLOSE(tmp_BLOB); END IF; IF DBMS_LOB.ISOPEN(store_BLOB) = FILE_OPENED THEN DBMS_LOB.CLOSE(store_BLOB); END IF; END; /
  • 44. Copyright © 2018 Oracle and/or its affiliates. All rights reserved. | 44