...

Oracle Reports

by user

on
Category: Documents
277

views

Report

Comments

Transcript

Oracle Reports
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
オラクル・ホワイト・ペーパー
内容
- Oracle9iAS Release 2 および Oracle9iDS Release 2 内の Oracle9i Forms
および Oracle9i Reports
- Oracle9iAS Forms および Reports Single Sign-On
2002 年 12 月
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
はじめに...............................................................................................................4
対象読者 .........................................................................................................4
Oracle9iAS Forms Services 内で統合的に Reports を実行するための
チェックリスト .............................................................................................5
Oracle9i Forms......................................................................................................5
Oracle9i Forms Developer について..............................................................6
Oracle9iAS Forms Services について............................................................6
formsweb.cfg 構成ファイル.....................................................................6
default.env 環境ファイル.........................................................................7
Forms Servlet .............................................................................................8
Forms Listener Servlet ...............................................................................8
OC4J と mod_OC4J ..................................................................................8
Oracle9iDS 内の Oracle9iAS Forms Services の設定 ...................................9
Oracle9iAS 内の Oracle9iAS Forms Services の設定 ...................................9
Oracle9i Reports....................................................................................................9
Oracle9i Reports Developer について............................................................9
ペーパー・レイアウトによる Reports ................................................10
Web レイアウトによる Reports ............................................................10
Oracle9iAS Reports Services について........................................................10
Reports Servlet.........................................................................................10
Reports CGI ............................................................................................. 11
Reports Server.......................................................................................... 11
rwservlet.properties 構成ファイル......................................................... 11
<Reports Server>.conf 構成ファイル ....................................................12
cgicmd.dat ファイル ...............................................................................12
Oracle9iDS 内の Oracle9iAS Reports Services の設定...............................12
Oracle9iAS 内の Oracle9iAS Reports Services の設定...............................13
Single Sign-On 統合(Oracle9iAS で使用可能)............................................13
mod_osso.......................................................................................................13
Forms 内の Single Sign-On ..........................................................................14
Forms 内でシングル・サインオンを有効にするには.......................15
Reports 内の Single Sign-On ........................................................................15
Reports 内でシングル・サインオンを有効にするには.....................17
Reports Services 用にアクセス制御を有効にするには ......................17
Reports 内でシングル・サインオンを無効にするには.....................17
Oracle Reports アクセス制御を無効にするには.................................18
シングル・サインオンと Forms に統合された Reports との関係 .........18
Forms/Reports 統合シングル・サインオン・マトリックス ...................18
Web 上の Forms から Oracle Reports を呼び出すには...................................19
RUN_REPORT_OBJECT ビルトインについて ........................................19
RUN_REPORT_OBJECT 内でのパラメータ・リストの使用方法 ...21
RUN_REPORT_OBJECT ビルトインの使用 ............................................22
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
2
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
RUN_REPORT_OBJECT の例 ..............................................................22
RUN_REPORT_OBJECT 内での Forms パラメータ・リストの引き渡
し .............................................................................................................24
パラメータ・フォームを表示する Reports の呼び出し....................25
解決策 .....................................................................................................26
WEB.SHOW_DOCUMENT ビルトインの使用 ........................................29
構文 ...............................................................................................................29
例: WEB.SHOW_DOCUMENT()...........................................................30
例: WEB.SHOW_DOCUMENT()と相対アドレス ...............................30
例: URL 内のユーザー資格証明の 16 進表現.....................................30
例: Reports SSO と WEB.SHOW_DOCUMENT() ................................32
Web 上での Reports 出力の印刷.................................................................32
Forms Migration Assistant(FMA)..................................................................33
rp2rro.pll の既知の問題と回避方法 ...........................................................33
まとめ.................................................................................................................34
付録 A: 可用性マトリックス ....................................................................35
付録 B: Forms パラメータ・リストの引き渡し.......................................35
Forms パラメータ・リスト例 ..............................................................36
付録 C: トラブルシューティング.............................................................37
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
3
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
はじめに
Oracle Forms Services 6i への Oracle
Reports6i の統合についての技術資料は、
otn.oracle.com/products/forms から入手
できます。
Oracle9i Application Server Release 2(Oracle9iAS)と Oracle9i Developer Suite Release
2(Oracle9iDS)には、Oracle9i Forms と Oracle9i Reports が含まれています。両製
品とも今回のリリースからは、クライアント/サーバー実行時環境が使用できない
ため、Forms アプリケーションと Reports アプリケーションは Web 上で実行しま
す。
この文書では、Oracle9iAS Forms Services 内の Oracle9i Reports に焦点を合わせ、
Oracle9i Forms に組み込まれている Oracle9i Reports を呼び出す方法について詳し
く説明します。この文書の全体を通じて、Oracle9i Application Server Release 2 は
Oracle9iAS、Oracle9i Developer Suite Release 2 は Oracle9iDS と呼びます。Oracle
Forms と Oracle Reports のリリース番号がはっきりと表記されていない場合は、暗
黙的に Oracle9i Forms と Oracle9i Reports のバージョンを意味します。このホワイ
ト・ペーパーを読むと、次のことができるようになります。
•
•
必要な構成ファイルとその扱い方
RUN_PRODUCT()の代わりに Forms RUN_REPORT_OBJECT()ビルトイン
を使用し、統合された Oracle Reports を呼び出す方法
•
WEB.SHOW_DOCUMENT()ビルトインを使用し、中間層から Reports 出力
をダウンロードする方法
•
Oracle9iAS Reports Services および Oracle9iAS Forms Services に対するシン
グル・サインオン
•
既存の問題とその回避方法
対象読者
この文書の対象読者は、クライアント/サーバー環境の Forms/Reports 統合につい
ての知識があり、Oracle9iAS Release 2 と Oracle9iDS Release 2 の Oracle9i Forms と
Oracle9i Reports を使用し、アプリケーションの Web への移行を計画している顧客
および技術コンサルタントです。
Forms アプリケーションをすでに Web 上で実行している顧客は、Forms6i での統
合 Reports の実行と Oracle9i Forms での統合 Reports の実行の違いがわかるでしょ
う。
既存の Forms6i Web アプリケーションと Oracle9i Reports への統合呼び出しが、
Oracle9iAS と Oracle9iDS 内で動作を継続することを保証する Oracle9i Reports
「getjobid」パラメータのフォーマットの変更についても説明します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
4
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Oracle9iAS Forms Services 内で統合的に Reports を実行するための
チェックリスト
Web 上の Forms から統合的に Oracle Reports を首尾よく実行するために、どのよ
うなことをするべきか次のリストに示します。
•
デフォルトでは、Oracle9iAS Forms は非シングル・サインオン・モードで、
Oracle9iAS Reports はシングル・サインオン・モードで実行されます。ど
ちらか一方のモードに合わせる必要があります。
•
Oracle9iAS Forms Services は、アクセス制御されている Oracle9iAS Reports
を実行できません。
•
統合された Oracle Reports への呼び出しを実行する RUN_PRODUCT()は、
Forms 内ではもはやサポートされていません。代わりに、
RUN_REPORT_OBJECT()を使用してください。
•
Oracle9iAS Reports Services の「getjobid」パラメータは、値として Reports
Server 名をとらなくなりました。また、パラメータ名と値の間に区切り記
号として等号(=)は使用できません。
•
Reports の destypes パラメータに対する「screen」および「preview」は廃止
されました。
Reports 出力は印刷する前に destype = cache および desformat =
htmlcss または desformat = pdf を使用し、Web 上でプレビューします。
•
ローカル・プリンタ・サポートはありません1。Oracle9iAS Reports Services
で使用できるプリンタは、今では Web 上で一般的になったネットワーク・
プリンタのみです。
•
レコード・グループは、パラメータ・リスト内のデータ・パラメータとし
て Oracle Reports には引き渡されません。代わりに Reports 定義ファイル内
のクエリーを使用します。
•
表示されている独自のパラメータ・フォームでレポートを呼び出しても、
out-of-the box(そのまますぐ)には動作しません。この文書には、このよ
うなレポートを呼び出すことを回避する方法が記載されています。
これらのことが、この文書の以降のセクションで網羅されています。
Oracle9i Forms
Oracle9i Forms は、Oracle9i Forms Developer 開発コンポーネントおよび Oracle9iAS
Forms Services Web デプロイメント・コンポーネントという 2 つのコンポーネント
から構成されます。Oracle9iAS Forms Services は、Oracle9i Application Server Release
2 製品の一部であり、Oracle9i Forms Developer は Oracle9iDS の一部です。
クライアント/サーバーの枠組みから生じたため、ほとんどの Forms アプリケー
ションは Reports クライアント・ランタイム・エンジンを使ってレポートを作成す
るのに次の 2 つのビルトインのいずれかを使用します。
1
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
•
RUN_PRODUCT ビルトイン
•
RUN_REPORT_OBJECT ビルトイン
レポートをクライアント・ブラウザにダウンロードして、ブラウザの印刷機能を使うことができます。
5
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Oracle9i Forms と Oracle9i Reports では、クライアント・ランタイム・エンジンは
廃止されました。Web 内の Forms から Oracle Reports へのすべての統合呼び出し
には、Reports Services を使用します2。Web 上で Reports を実行するため、次の 2
つの Oracle9i Forms ビルトインがサポートされています。
•
RUN_REPORT_OBJECT ビルトイン
•
WEB.SHOW_DOUCUMET ビルトイン
この 2 つのビルトインについて、また Forms 内から統合的に Oracle Reports を呼び
出すときのそれぞれの使用方法については、このホワイト・ペーパーで説明しま
す。
Oracle9i Forms Developer について
Oracle9i Forms Developer は、Oracle9i Developer Suite と一緒に出荷される Forms ア
プリケーション開発環境の名前です。
Oracle9iAS Forms Services について
Forms Services アーキテクチャの詳細は、
otn.oracle.co.jp/products/forms にあるホ
ワイト・ペーパー『Oracle9iAS
Forms Services R9.0.2』を参照してく
ださい。
Oracle9iAS Forms Services は、Oracle9iAS では運用目的に、Oracle9iDS ではテスト
用に使用できます。Oracle9iDS 内の Forms Services コンポーネントおよび構成ファ
イルは、Oracle9iAS 内のものと同じであるため、Forms Developer 内で開発された
アプリケーションはテスト環境と同じように、本番環境で動作します。
Web 上で Forms を実行するときは、次の主要コンポーネントおよび構成ファイル
が使用されます。
•
formsweb.cfg 構成ファイル
•
default.env 環境ファイル
•
Forms Servlet
•
Forms Listener Servlet
•
Oracle Containers for J2EE(OC4J)
formsweb.cfg 構成ファイル
各 Oracle9iDS または Oracle9iAS 環境の forms90/server ディレクトリにある
formsweb.cfg 構成ファイルは Forms Servlet によって読み取られ、Forms Applet 開始
HTML ページが構築されます。この構成ファイル内の情報は、3 つのカテゴリに
分類されます。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
2
この規則の例外は、印刷専用の Reports バックグラウンド・エンジンを使うアプリケーションの場合で
す。Reports バックグラウンド・エンジンは、Forms の default.env ファイルの Reports_Path 変数を設定する
ことで、サーバー上の Forms から直接アクセス可能です。オラクル社は、Forms 内の統合レポーティング
には Oracle9iAS Reports Services を使用することをお薦めします。
6
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
•
システム・パラメータ: システム・パラメータは、実際のアプリケーショ
ン URL 内には指定できないパラメータです。同じ構成ファイル内に後で
特に指定されない限り、これらのパラメータは、使用される Applet HTML
テンプレート・ファイル、デフォルトの作業ディレクトリ、および環境ファ
イルを決定します。
•
ユーザー・パラメータ: ユーザー・パラメータは'form'、'userid'、Applet の
'width'、および Applet の 'height'など、アプリケーション URL 内でまたは
同じ構成ファイル内で上書き可能なデフォルトのパラメータ設定です。ア
プリケーション用のリクエスト URL 内でパラメータが指定されていない
場合は、デフォルト設定値が使用されます。
•
カスタム・アプリケーション定義: ある特定のアプリケーションに使用さ
れるシステムおよびユーザー・パラメータの論理グループである、名前付
き構成。構成の名前は、構成パラメータの値(config=<named
configuration>)としてリクエスト URL に示されます。名前付き構成に
含まれていないパラメータまたは URL に指定されていないパラメータに
は、デフォルト設定値が使用されます。
[reptest]
form=reptest90
userid=scott/tiger@orcl
look&feel=oracle
width=700
height=500
例 1: formsweb.cfg 内のカスタム・アプリケーション定義
次の URL を発行することで、Web から「reptest」アプリケーションを呼び出すこ
とができます。
http://<hostname>:<port>/forms90/f90ervlet?config=reptest
追加のパラメータを引き渡す必要があれば、名前付きコンフィギュレーションに
追加するか、次のように URL に付加します。
http://<hostname>:<port>/forms90/f90ervlet?config=reptest&separateF
rame=true
Forms/Reports 統合の場合は、Forms Web アプリケーションを起動するときに、
formsweb.cfg ファイル内の「otherparams」パラメータによっても、追加情報(使
用する Reports Server 名など)を引き渡すことができます。
default.env 環境ファイル
クライアント/サーバー構成の場合と異
な り Forms Services 環 境 用 に 、
Reports_Path 環境変数を指定する必要
はありません。
デフォルト環境ファイルは、formsweb.cfg ファイルのシステム・パラメータ・セ
クション内の「envFile」パラメータで指定されます。default.env ファイルは、Forms・
ランタイム・エンジンが起動される FORMS90_PATH などの環境設定を決定しま
す。アプリケーションの名前付きコンフィギュレーション・セクション内の
「envFile」パラメータを上書きすることで、異なる環境変数設定で異なるアプリ
ケーションを起動できます。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
7
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
[reptest]
form=reptest90
…
envFile=myRep.env
例 2: formsweb.cfg 内のカスタム環境ファイルの参照
Forms Services が Reports Server にアクセスできる場合は Oracle9i Forms/Oracle9i
Reports 統合のためにアプリケーションに対して REPORTS_PATH を指定する必要
はありません。Oracle9iDS または Oracle9iAS でインストールされたアプリケー
ションにとってはデフォルトのコンフィギュレーションとなっています。
Forms Servlet
Forms Services Web Interface として動作する Forms Servlet にはデフォルト時、
http://<hostname>:<port>/forms90/f90servlet 経由でアクセスすることができます。
Forms Servlet URL を呼び出し Web 上で Forms アプリケーションを起動するとき、
formsweb.cfg ファイル内の指定されたカスタム・コンフィギュレーション・セク
ションを引き渡すか、Forms 実行時パラメータの完全なリストを引き渡す必要が
あります。
次の URL はどれも有効です:
http://<hostname>:<port>/forms90/f90servlet?config=reptest
http://<hostname>:<port>/forms90/f90servlet?config=reptest&form=rep
test
http://<hostname>:<port>/forms90/f90servlet?form=reptest&userid=sco
tt/tiger@orcl&lookandfeel=oracle
Forms Servlet は formsweb.cfg ファイルを使用しアプリケーション起動 HTML ファ
イルを生成します。アプリケーション起動 HTML ファイルは Forms Java Applet の
クライアントへのダウンロードを初期化します。カスタム・アプリケーション・
セクション内で上書きされていなければ、default.env ファイルによって指定され
ている環境内で Forms Web ランタイム・プロセスが起動されます。
Forms Listener Servlet
Forms Listener Servlet は、サーバー上の Forms ユーザー実行時プロセスと Forms ク
ライアント間のやりとりをディスパッチします。Forms Listener Servlet は、
serverURL パラメータによって formsweb.cfg ファイル内に定義されています。デ
フォルト値は「/forms90/l90servlet」です。
OC4J と mod_OC4J
Oracle9iAS および Oracle9iDS でのデフォルト・サーブレット・コンテナである
Oracle Containers for J2EE(OC4J)は、Forms Servlet および Forms Listener Servlet
コンポーネント用の実行時環境です。
mod_OC4J は、Oracle9iAS 内の Oracle HTTP Server モジュールです。Oracle9iAS 上
で Forms Services を実行する際、
このモジュールは HTTP Servlet リクエストを OC4J
エンジンに転送します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
8
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Oracle9iDS 内の Oracle9iAS Forms Services の設定
Oracle9iDS の詳細は、otn.oracle.com に
ある Oracle9iDS Release 2Data Sheet を
参照してください。
ディスク領域を節約するため、Oracle9iDS には Oracle HTTP Listener およびそのコ
ンポーネントは含まれていません。その代わりに OC4J 内の統合 HTTP リスナー
を使用して、Forms および Reports Web アプリケーションの実行時テストを行いま
す。すべての Web 通信は、OC4J 統合 HTTP Server によって扱われます。Forms
実行時環境の設定は、Oracle9iDS では mod_oc4j もシングル・サインオン機能も使
用できないことを除けば、Oracle9i Application Server の場合と同じです。
Forms Web 実行時環境は、
Oracle9iDS のインストール時に自動的に設定されます。
Forms アプリケーションからの Reports の呼び出しには、手作業による追加設定な
どは不要です。
Oracle9iAS 内の Oracle9iAS Forms Services の設定
Oracle9iAS の詳細は、otn.oracle.com に
ある Oracle9iAS Release 2Data Sheet を
参照してください。
Oracle9iAS 内でアプリケーションを実行しているとき、OC4J 内で実行中の Forms
Servlet と Forms Listener Servlet には、Oracle Apache モジュールの mod_oc4j 経由で
アクセスできます。mod_oc4j は、/forms90/f90servlet と /forms90/ l90servlet へのす
べての呼び出しを OC4J に転送しますが、Forms アプリケーション内で使用される
Java アーカイブ・ファイルとイメージのダウンロードは Oracle HTTP Server によっ
て行われます。
必要な構成はすべて、Oracle9i Application Server のインストール時に自動的に実施
されます。Oracle9iDS の場合と同様、Forms アプリケーションからの Reports の呼
び出しには、手作業による追加設定などは不要です。
Oracle9i Reports
Forms 同様、Oracle9i Reports も別々の 2 つのコンポーネント、Oracle9i Reports
Developer 開発環境と Oracle9iAS Reports Services 配布環境のブランド名です。
Oracle9i Reports Developer は Oracle9iDS 製品の一部であり、Oracle9iDS と同じプ
ラットフォーム上で使用できます。
Oracle9iAS Reports Services は、Oracle9i Application Server Release 2 に含まれます。
Oracle9i Reports Developer について
Oracle9i Reports の詳細は、
otn.oracle.co.jp/products/reports に あ る
ホワイト・ペーパー『Oracle9i Reports
の新機能』を参照してください。
新規および既存の Reports アプリケーション・モジュールの開発環境である
Oracle9i Reports Developer には、Web レイアウト用の追加サポートなど、多数の新
機能があります。Web レイアウトを使用すると、Reports アプリケーション開発者
は、rdf ファイル・フォーマットを使用する代わりに、Reports コンテンツを既存
の JSP ページに入れるまたは完全な Reports 定義をスタンドアロン型 JSP ファイル
内に作成することができます。
旧バージョンの Oracle Reports で構築された既存の Reports は、Forms アプリケー
ションに統合された Reports 用レイアウト・タイプの中で、最も一般的なペー
パー・レイアウトを使用しています。
Oracle9i Reports Developer には、Reports ペーパーおよび Web レイアウト用の組込
みプレビュー機能があります。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
9
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
ペーパー・レイアウトによる Reports
Reports ペーパー・レイアウトは、旧レポート・レイアウトの名称です。Oracle9i
Reports より前の Reports リリースでは、このレイアウトだけが使用可能でした。
ペーパー・レイアウトの Reports の寸法は、レポート・コンテンツを印刷する紙の
大きさによって定義されます。旧 Reports リリースでも、HTML 出力と HTMLCSS
出力はともに Web ブラウザでの表示がサポートされていましたが、使用される寸
法はいつも一枚の紙の大きさでした。
Web レイアウトによる Reports
Oracle Reports の Web レイアウトの詳細
は、otn.oracle.com/products/reports にあ
る Oracle9i リンクから入手できるチュー
トリアル『Getting started with Oracle9i
Reports』を参照してください。
Oracle9i Reports より前のリリースでは、Reports からの出力を既存の Web ページ
に転送すること、または一枚の紙のマージン(余白)より広い幅の Reports Web
出力を作成することは不可能でした。新しい Web レイアウトを使用すると、
Reports デサイナは制約なしでレポートのページ・サイズを自由に設計できます。
Web レイアウトは Java Server Pages(JSP)ファイル内に定義されます。JSP ファ
イルは、
手作業による JSP コーディングなしに Reports Developer 内または Oracle9i
Reports タグ・ライブラリを持つ Oracle9i JDeveloper 内に作成できます。
Reports Web レイアウトは、Run_Report_Object が組み込まれた Forms からは
呼び出すことはできません。Forms から Reports Web レイアウトを呼び出す必要が
ある場合は、Reports 定義が入った jsp ページを指している URL を Forms から
WEB.SHOW_DOCUMENT()を使用して呼び出してください。
Oracle9iAS Reports Services について
Oracle Reports モジュール用の Web 配布環境である Oracle Reports Services は、
Oracle9i Application Server Release 2 の一部です。Oracle9iAS Reports Services は
Reports Server とも呼ばれます。この文書の全体に渡って、両方の名称が同じ意味
で使用されています。Web 上で Reports を実行する場合は、次の主要コンポーネ
ントおよび構成ファイルが使用されます。
•
Reports Servlet(ペーパー・レイアウト用の rwservlet)
•
Reports CGI(下位互換性を維持するため)
•
Reports Server プロセス
•
Rwservlet.properties 構成ファイル
•
<Reports Server>.conf 構成ファイル
•
cgicmd.dat ファイル
Reports Servlet
デフォルトの Oracle9iAS Reports Services Web インターフェイスは、rwservlet とい
うサーブレットです。このサーブレットは到達した Reports HTTP リクエストを
Report Server エンジンへディスパッチし、必要な場合はシングル・サインオン認
証を実施します。
Forms 内の Oracle Reports への統合呼び出しはレポートを要求するため、あるいは
結果の Reports 出力を Forms クライアント・ブラウザへダウンロードするために
サーブレットを使用します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
10
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Reports CGI
Oracle9i Reports Common Gateway Interface(CGI)は Reports Servlet と同じ作業を
行いますが、下位互換性を維持するために提供されています。CGI インターフェ
イスを使う Oracle Reports Server への統合呼び出しを持つ既存の Forms Web アプリ
ケーションを使用している場合は、今後のリリースで CGI がなくなることをご承
知ください。
オラクル社は、Reports Servlet の使用をお薦めします。シングル・サインオンが
必要な業務の場合は、Reports Servlet が必須です。
Reports Server
Reports Server プロセスは、複数の Reports ランタイム・エンジン用の管理インス
タンスです。Oracle9i Reports では、Reports インプロセス・サーバーとアウト(エ
クストラ)プロセスで実行する Reports サーバーという 2 種類の Reports サーバー
が使用可能です。
Reports インプロセス3・サーバーは、レポートが初めて要求されたときに、Reports
Servlet rwservlet 経由で起動されます。インプロセス・サーバーは、リクエストの
サーバー・パラメータ内に Reports Server 名が提供されていないときに使用されま
す。
Reports インプロセス・サーバーは、Reports Servlet rwservlet 経由でのみ起動およ
びアクセスが可能です。rwservlet はサーブレットと同じプロセス内で実行されま
す。インプロセス・サーバーの名前は rep_<hostname>であり、起動後の構成ファ
イル名および場所は reports/conf/rep_<hostname>です。
2 種類目の Reports Server は、Reports6i の Reports Server プロセス同様、独自のプ
ロセス内で実行します。Reports Server は、Oracle9iDS または Oracle9iAS インスト
レーションの/bin ディレクトリからアクセス可能な次のコマンドで起動できます。
Forms RUN_REPORT_OBJECT()ビルト
インから Reports Services にアクセスす
る場合は、Reports Server 名にアンダー
スコア(下線)を使用できません。
rwserver server=<server_name> (Windows)
または
rwserver.sh server=<server_name> batch=yes & (Unix)
選択された名前がアクセス可能なネットワーク内で固有であれば、<server_name>
には任意の値が使用できます。Forms 内で RUN_REPORT_OBJECT()を扱う場合は、
Reports Server 名にアンダースコアを使用しないでください。この文書の全体に
渡って、この値には「Repsrv4」が使用されます。インプロセス・サーバーの場合
と同様、Reports Server 用の Reports 設定可能ファイルは外部プロセスとして起動
されます。設定可能なこのファイルは reports/conf ディレクトリ内に存在し、名前
は<server_name>.conf で、
Reports Server が最初に起動されたときに作成されます。
rwservlet.properties 構成ファイル
rwservlet.properties ファイルは、reports/conf ディレクトリ内にある Reports サーブ
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
3
Reports インプロセス・サーバーは Forms 内の RUN_REPORT_OBJECT()とは一緒に使用できませんが、
代わりに WEB.SHOW_DOCUMENT()ビルトインとともに使用できます。
4
Repsrv は固有な名前ではありませんが、「RepsrvFnimphiu-lap」のように、ホスト名を追加することで固
有の名前にできます。なお短い Reports Server 名にすることによるデメリットはありません。
11
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
レット構成ファイルです。サーブレット・プロパティ・ファイルには、コンフィ
ギュレーションの設定、シングル・サインオンに関する設定、cookie 有効期限に
関する設定、および要求された URL 内にサーバー・パラメータが入っていないと
きにインプロセス・サーバーを起動すべきかどうかに関する設定などが入ってい
ます。
Forms/Reports 統合の場合は、デフォルトで有効に設定されているシングル・サイ
ンオンを無効にする場合にのみサーブレット・プロパティ・ファイルを修正する必要
があります。
<Reports Server>.conf 構成ファイル
<Reports Server>.conf は、Reports Server が初めて起動されたときに作成されます。
<Reports Server>.conf ファイルは、Reports6i 内の<Reports Server>.ora ファイルに保
存されていた全情報が入った XML ファイルです。たとえば、キャッシュ・サイ
ズ、キャッシュ・ディレクトリ、使用された Reports 実行時エンジンの最小数、使
用された Reports 実行時エンジンの最大数、およびジョブ通知設定などがあります。
cgicmd.dat ファイル
cgicmd.dat ファイルとともに使用される
パラメータの完全なリストは、ファイル
本体に含まれています。
この情報を読む場合は、テキスト・エディ
タでファイルを開きます。
reports/conf ディレクトリにある cgicmd.dat ファイルは、Web から Reports を実行
する、または Forms WEB.SHOW_DOCUMENT()ビルトインを使用する場合にいつ
でも、Reports リクエスト URL を短くするために使用できます。cgicmd.dat ファイ
ルはキー名/値ペアの定義に使用できます。この値は、1 つまたは多数の Reports
ファイルで使用される複数の Reports コマンドライン引数を定義するものであり、
それぞれが名前付き識別子にマップされます。cgicmd.dat ファイル内の次のエント
リは、userid、destype、および desformat コマンドライン引数用にキー名「reptest」
を定義しています。「%*」は、URL に指定されているすべての追加パラメータを
このコマンドラインに追加しなければならないことを示しています。
reptest: userid=scott/tiger@orcl desype=cache desformat=htmlcss%*
Forms 内で WEB.SHOW_DOCUMENT()ビルトインを使ってレポートを実行するに
は、このキー名エントリを使用します。
Web.show_documet
(‘/reports/rwservlet?reptest&server=Repsrv&paramform=no&module=
reptest.rdf,’_blank’);
例 3: WEB.SHOW_DOCUMENT()への Forms コール内での cgicmd.dat キーの参照
Oracle9iDS 内の Oracle9iAS Reports Services の設定
Oracle9i Reports は、OC4J の HTTP Server を使用して Web 上で Reports モジュール
を実行するように設定されます。これは、Oracle9iDS インストール時のデフォル
トの設定です。この設定は、Forms 内の Reports 統合のテストにも使用できます。
この文書で説明している Reports 構成ファイルは、Oracle9iDS インストレーショ
ン・ディレクトリの reports/conf ノードの下にあります。
Oracle9iDS のインストールには、Oracle Single Sign-On Server と Oracle9iAS Portal
は含まれません。これはシングル・サインオン統合および Oracle Portal が提供し
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
12
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
ている Reports アクセス制御の実行およびテストはできないことを意味します。
シングル・サインオン環境で Forms と Reports の統合をテストするには、
Oracle9iAS をインストールしておく必要があります。
Oracle9iAS 内の Oracle9iAS Reports Services の設定
Oracle9iAS とともにインストールした場合、
Reports Services は mod_OC4J と Oracle
HTTP Server を使用して Web リクエストを処理します。Reports Servlet は実行環境
として OC4J を使用します。
Reports ソフトウェアは、<Oracle9iAS_Home>/bin ディレクトリと
<Oracle9iAS_Home>/reports ディレクトリにインストールされます。Reports Server
構成ファイルは、<Oracle9iAS_Home>/reports/conf ディレクトリ内に配置されます。
Reports Services は、Oracle Single Sign-On Server パートナー・アプリケーションの
Apache モジュール、mod_osso により、シングル・サインオンが有効になっていま
す。既存の Oracle Reports モジュールは、コードを変更しなくても、シングル・サ
インオン・モードで実行できます。
Single Sign-On 統合(Oracle9iAS で使用可能)
クライアント/サーバー環境では、シングル・サインオンはサポートされていな
かったため、Forms/Reports 統合でもシングル・サインオンは対象外でした。
シングル・サインオンが Oracle9iAS Release 2 製品の不可欠な部分になり、
Oracle9iAS Forms Services および Oracle9iAS Reports Services の両方で使用できる
ようになったため、それは Forms/ Reports 統合で扱う機能としても興味深い機能に
なりました。Oracle9iAS 1.0.2.x のシングル・サインオン機能に組み込まれていた
Forms/Reports の以前のバージョンは今では、さらに完全かつスムーズに統合でき
るようになっています。
Oracle9iAS Forms Services および Reports Services では、Oracle9iAS Single Sign-On
Server(SSO Server)および認証/許可用の Oracle Internet Directory(OID)によって
シングル・サインオンが有効になります。
なお既存の Forms/Reports アプリケーションはすべて、アプリケーション・コード
を変更せずに、シングル・サインオンに参加できることに注意してください。
下位互換性維持のために、Oracle9iAS Single Sign-On Server と直接連携する
代わりに、mod_osso が使用されています。
mod_osso
HTTP モジュール、mod_osso は、Single Sign-On サーバーの唯一のパートナー・ア
プリケーションとしてサービスを提供することで、Release 2 の Oracle9iAS アプリ
ケーション用に認証トランスペアレントを提供し、認証プロセスを簡素化します。
Oracle9iAS Forms Services および Oracle9iAS Reports Services は、Oracle Single
Sign-On Server にパートナー・アプリケーションとして登録するため mod_osso を
使用します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
13
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Forms 内の Single Sign-On
Forms がシングル・サインオン・モードで実行中であっても、データベースとの
接続は Oracle Net によって確立されるため、物理データベース・アカウントのユー
ザー名とパスワードが必要になります。シングル・サインオンをサポートするた
め、Forms Servlet は Oracle Internet Directory(OID)内のユーザーのデータベース・
アカウント情報を使用できるようになりました。回線経由で Forms クライアント
に送信されるユーザー資格証明がないため、Forms 内のシングル・サインオンは
安全です。このようなやりとりはすべて、中間層サーバー上で扱われます。
図 1: Forms Services Single Sing-On アーキテクチャ
Forms 内のシングル・サインオンは次のように進められます。
1.
ユーザーが、シングル・サインオン・モードで実行中の Forms Services ア
プリケーションを要求します。
シングル・サインオン・モードは、Forms Services URL ルート、
「forms90/f90servlet」を mod_osso5に登録することによって有効になります。
mod_osso は、
ユーザーがこの URL に関して認証済みかどうかを調べます。
認証済みでない場合は、リクエストを Oracle9iAS Single Sign-On Server に
リダイレクトします。ユーザー・リクエスト内に有効な認証 cookie が見つ
からない場合は、Single Sign-On サーバーは、ユーザーが各自の簡易ユー
ザー・アカウントの資格証明を提供できるよう、ログオン・ダイアログを
表示します。
2.
Oracle9iAS Single Sign-On Server は、OID と照らし合わせてユーザーを認
証します。
3.
mod_osso は、リクエストを Forms Servlet にリダイレクトします。Forms
Servlet はユーザーのシングル・サインオン資格証明を受け取り、要求され
たアプリケーション用に物理データベース・ユーザー・アカウントを
5
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
Forms 用のシングル・サインオンは、forms90/server/forms90.conf 構成ファイル内に設定されています。
14
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Oracle Internet Directory から検索します。
4.
Forms Servlet は OID からユーザー資格証明を入手するため、Forms URL
の「config」パラメータ経由で引き渡された、Forms アプリケーション名
と認証済みユーザー名から構築された固有なキーを検索します。
5.
この時点以降、Forms は非 sso モードで起動された時と同じように実行さ
れます。
Forms 内でシングル・サインオンを有効にするには
Oracle9iAS Forms Services は、シングル・サインオンが無効な状態でインストー
ルされます。
Forms 内でシングル・サインオンを有効にするには、forms90/server ディレクトリ
内にある forms90.conf ファイルを編集します。以下のエントリ6を検索し、各行か
らコメント記号(#)を取り除きます。
#<IfModule mod_osso.c>
#<Location /forms90/f90servlet>
#require valid-user
#AuthType Basic
#</Location>
#</IfModule>
forms90.conf ファイル内の mod_osso 定義からコメント記号が取り除かれると、シ
ングル・サインオン定義は次のようになります。
<IfModule mod_osso.c>
<Location /forms90/f90servlet>
require valid-user
AuthType Basic
</Location>
</IfModule>
Oracle9iAS HTTP Server を再起動し、これらの変更を反映させます。次に Forms
Web アプリケーションを要求したとき、シングル・サインオン用のユーザー名と
パスワードを入力するようにプロンプトされます7。
Reports 内の Single Sign-On
Oracle9iAS Reports Services セキュリ
ティは複雑なテーマですが、この文書で
は簡単に説明するにとどめます。Reports
セキュリティの詳細は、otn.oracle.co.jp
から入手できるホワイト・ペーパー
『Oracle9i Reports による保護』を参照し
てください。
Oracle Forms の場合と同様に Reports データベースとの接続は、SQL*Net および物
理データベース・アカウント・ユーザー名/パスワードによって確立されます。
Oracle9iAS Reports Services は、Forms 同様に mod_osso を認証用に活用します。
ユーザーがシングル・サインオン保護された Reports Server からレポートを要求す
る場合、次の手順を行います。
Reports 内のシングル・サインオンは、次のように進められます。
1.
ユーザーが Reports サーブレット(http://.../reports/rwservlet?..)への呼び出
しで、Reports Services からレポートを要求します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
6
Oracle9iAS 9.0.2 の場合、これらのエントリは 1 行に書き込まれています。シングル・サインオンを有効
にするには、このホワイト・ペーパーに示されているように、個々の行に分ける必要があります。
7
パブリック・リクエストとシングル・サインオン・リクエストを同時に処理するための Forms Services
のセットアップ方法については、Forms Services のドキュメントを参照してください。
15
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
シングル・サインオンを有効にするため、rwservlet.properties ファイル内の
SINGLESIGNON パラメータを「Yes」にセットするか、またはコメント・
アウトする必要があります。
デフォルトでは、Oracle9iAS Reports Services はシングル・サインオンが有効
な設定になっています。リクエストは Reports Servlet から mod_osso に引き渡
されます。mod_osso は Oracle9iAS Single Sign-On Server を調べ、その
Reports URL に関してユーザーが認証済みかどうかを確認します。ユーザーがまだ
認証されていない場合、Single Sign-on Server はユーザーが各自のシングル・
サインオン用ユーザー名およびパスワードを入力できるよう、ログオン画面を表示し
ます。
2.
Oracle9iAS Single Sign-On Server は OID を使用して、提供されたユーザー
資格証明が有効かどうかを確認します。
3.
次にリクエストは mod_osso に戻されます。さらに mod_osso はリクエスト
を Reports Servlet(rwservlet)に戻します。Reports URL 内では、リソース
(1 つ∼多数)の指定に「ssoconn8」パラメータが使用されます。各リソー
スは、Reports データソースに関する接続情報が入っている OID 内の名前
付き識別子です。資格証明ユーザー接続情報をプレーン・テキストを使っ
て、Web 経由で引き渡す必要はもうありません。
4.
Reports Server は、Reports Services サーブレットを実行中のプロセスと同
じプロセスを使用して、インプロセス・サーバー9の形にするか、Reports 6i
でも使用可能なモデルであるアウトプロセスとして実行することができ
ます。Reports サーブレットは Reports Server を呼び出し、実行対象レポー
ト用に実行時引数を引き渡します。
ユーザーのレポート実行許可の妥当性をチェックする Reports 機能は、図
2 には示されていませんが、許可のソースは、<Reports Server name>.conf
ファイル内の<security></security>タグによって設定されます。デフォルト
時、アクセス制御は Oracle9iAS Portal によって実施されるように設定され
ていますが、カスタム許可メカニズムも使用できます。
8
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
Forms WEB.SHOW_DOUCMENT()ビルトインを使用して Oracle Reports を呼び出す場合は、SSOCONN
を使用できますが、RUN_REPORT_OBJECT()を使用して呼び出す場合は、SSOCONN を使用することが
できません。
9
Forms web.show_document()ビルトインから起動された Reports リクエストの場合、インプロセス・サー
バーの使用は可能ですが、RUN_REPORT_OBJECT()ビルトインではインプロセス・サーバーは使用でき
ません。それは、RUN_REPORT_OBJECT()ビルトインでは使用されていない「rwservlet」への最初のリク
エストによってインプロセス・サーバーが暗黙的に起動されるからです。
16
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
図 2: Reports Services Single Sing-On アーキテクチャ
Reports 内でシングル・サインオンを有効にするには
Oracle9iAS Reports Services は、シングル・サインオンが有効な状態でインストー
ルされます。
Reports Services 用にアクセス制御を有効にするには
シングル・サインオンと同様、アクセス制御も Oracle9iAS のインストール後にデ
フォルトで有効になります。
Reports 内でシングル・サインオンを無効にするには
次の構成ファイルを編集し、
Reports Server シングル・サインオンを無効にします。
•
reports/conf/rwservlet.properties
•
reports/conf/<Reports server name>.conf
rwservlet.properties ファイルから SINGLESIGNON パラメータを見つけ出し、コメ
ント記号(#)を取り除き、値を No にセットします。
#SINGLESIGNON=YES
このエントリを次のように変更します。
SINGLESIGNON=NO
Oracle HTTP Server(OHS)を再起動し変更を反映させます。10
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
10
Oracle9iAS 内で Oracle HTTP Server を再起動するには、Service パネル(Windows)を使用するか、コマ
ンドラインに「dcmctl stop -ct ohs -v -d」と入力するかのどちらかの方法で、Oracle9iAS Process Manager
(OPM)を停止します。同様に、立ち上げる場合は dcmctl start -ct ohs(Unix)を使用します。
17
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Oracle Reports アクセス制御を無効にするには
Oracle9iAS Portal によるアクセス制御の解除は、“securityId”=”rwSec”属
性を reports/conf/<Reports server name>.conf ファイル11から取り除くか、次のように
<job../>タグ値を変更します。
<job jobType="report" engineId="rwEng" securityId="rwSec"/>
を次のように変更します。
<job jobType="report" engineId="rwEng" />
Reports Services を再起動し変更を反映させます。
シングル・サインオンと Forms に統合された Reports との関係
この文書で説明したように、Web 上の Oracle Forms への Reports 統合は、Forms 内
の RUN_REPORT_OBJECT()ビルトインを使用し、サーバー側から Oracle9iAS
Reports Services を呼び出して実施する必要があります。
シングル・サインオン保護された Forms Services からレポートをリクエストすると
き、認証済みユーザーのシングル・サインオン ID は、RUN_REPORT_OBJECT()
ビルトインへの各呼び出しで、Reports Server に暗黙的に引き渡されます。シング
ル・サインオン ID は、必要な場合、今後の許可チェックのために Reports Server
に対するユーザー認証に使用されます。
非 sso モードで実行中の Forms アプリケーションは、シングル・サインオン保護
された Reports Server 上でレポートを実行できますが、Reports Server が許可を必要
とした場合は失敗します。エンド・ユーザーも Web 上で Reports 出力を取得する
とき、各自のシングル・サインオン資格証明を提供する必要があります。
Forms/Reports 統合シングル・サインオン・マトリックス
Reports Services は、シングル・サインオン・モードで実行しなくてもよく、Forms
Services だけをシングル・サインオン・モードで実行しなければならないときはど
うなるでしょう。または、両方の製品に対してシングル・サインオンが無効のと
き、Reports Services をアクセス制御モードで実行するときはどうなるでしょう。
次のマトリックスは、シングル・サインオンとアクセス制御を有効にする、可能
なすべての組み合わせを示しています。この場合のアクセス制御は、Oracle Portal
でデフォルトの設定情報を使用して実施されます。また、Oracle Reports への呼び
出しを統合した Forms アプリケーションと連動する特定の組み合わせも示されて
います。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
11
<security></security>タグは簡単に削除できますが、このような削除は conf ファイルに定義されている
すべての<job>型に影響を及ぼします。これはこの Reports Server が実行するすべてのレポートに対して、
アクセス制御が無効になることを意味します。アクセス制御を有効にするには、後でファイルを復元でき
るように、セキュリティ・エントリを削除する前に構成ファイルのコピーを作成しておくか、構成ファイ
ルを削除してから Reports Server の再起動時に新しいものを取得します。
18
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Oracle9iAS Forms/Reports SSO 構成マトリックス
構成マトリックス
Forms ビルトイン
シングル・サインオン・モード
Forms
緑のチェックマークは、左側の構成設定とビルトイン
が連動することを示しています。
Reports
SSO
SSO
アクセス
制御
RUN_REPORT_
OBJECT
WEB.SHOW_
DOCUMENT
NO
NO
NO
ü
ü
NO
NO
YES
NO
ü12
NO
YES
YES
NO
ü13
YES
YES
YES
YES
YES
NO
ü
ü
YES
NO
NO
ü
ü
14
ü15
Web 上の Forms から Oracle Reports を呼び出すには
Web 上の Forms から Oracle Reports を呼び出すことは、Oracle9iDS で実行中か
Oracle9iAS で実行中かに関係なく、アプリケーションにとっては同じことです。
Forms/Reports 統合に関するデプロイについての記述はすべて、どちらの環境にも
適用されます。
RUN_REPORT_OBJECT ビルトインについて
Oracle9i Forms Developer 内で、RUN_REPORT_OBJECT ビルトインを使用する場
合は、Object Navigator 内の Reports ノードの下に新しい Reports オブジェクトを作
成する必要があります。各 Reports オブジェクトには、PL/SQL からレポートを呼
び出すために Forms 内で使用される論理名があります。各物理 Reports ファイルご
とに、新しい Reports オブジェクトを作成できます。1 つの Reports オブジェクト
は、多数の物理 Reports ファイルで使用できます。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
12
このレポートの実行に対するシステム認証を要求するログイン・ダイアログが表示されます。Oracle
Portal に登録されている Reports の実行は、Oracle Portal へのアクセス権限を付与されているユーザーに限
られています。
13
ユーザーが(たとえば Oracle9iAS Portal に接続することによって)認証されていない場合は、シングル・
サインオン・ログオン画面が表示されます。Portal への登録によって、レポートがアクセス制御されてい
る場合、レポートの実行を許可されるのは、Portal でのアクセス許可を所有するユーザーだけです。
14
アクセス制御されている Reports による RUN_REPORT_OBJECT()のサポートは、Forms9i の今後のパッ
チ・セットに予定されている機能です。クライアント/サーバー上の Forms 内で統合 Reports を実行するす
べてのアプリケーションは、Reports に対するアクセス制御を使用しないため、Forms9i へのアップグレー
ド時または Forms クライアント/サーバーから Web への移行時にアップグレード問題が生じることはあり
ません。
15
Oracle9iAS Portal への登録によって、レポートがアクセス制御される場合は、アクセス許可を所有する
ユーザーのみが゙レポートの実行を許可されます。この場合は、レポートの実行中に Forms がエラーを報
告します。
19
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
図 3: Reports ノードの下に「MYREPORT1」、「REPTEST」、および「RP2RRO」という Reports
オブジェクトがある Forms Object Navigator 「MYREPORT1」オブジェクトによって参照さ
れる物理 Reports ファイルは、reptest.rdf として定義されています。プロパティ・パレット内
の「Reports」見出しの下にある Reports 実行時設定は、set_report_object_property()ビルトイン
を使用して、実行時に上書きできます。
RUN_REPORT_OBJECT の一般的な使用方法
Forms Navigator 内で は Reports オ ブ
ジェクトの名前はすべて大文字で表示さ
れますが、PL/SQL から呼び出されたと
きは大/小文字混合で表示できます。
次の例は、RUN_REPORT_OBJECT ビルトインを使用しレポートを実行します。
Forms Developer 内に定義されているレポート・オブジェクト・ノードは
「MyReport1」という名前です。ユーザー定義の Reports パラメータ、p_deptno は、
「dept.deptno」フィールド内の値を使用して、Forms によって引き渡されます。パ
ラメータ・フォームはここでは、省略されています。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
20
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
report_id Report_Object;
ReportServerJob VARCHAR2(100);
BEGIN
report_id:= find_report_object(‘MyReport1’);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_COMM_MODE,
SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESTYPE,CACHE);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_SERVER,’Repsrv’);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,'p_deptno='
||:Dept.Deptno|| ’ paramform=no');
ReportServerJob:=run_report_object(report_id);
END;
例 4: RUN_REPORT_OBJECT()の一般的な使用方法
RUN_REPORT_OBJECT ビルトインについては、Oracle Forms Services リファレン
ス・マニュアルおよびオンライン・ヘルプで詳しく説明されています。
RUN_REPORT_OBJECT 内でのパラメータ・リストの使用方法
RUN_PRODUCT ビルトインを使用すると、Reports システム・パラメータおよび
ユーザー定義パラメータはパラメータ・リストの形で引き渡されます。
RUN_REPORT_OBJECT でも同じパラメータ・リストを使用できます。ただし、
SET_REPORT_OBJECT_PROPERTY()ビルトインによって設定しなければならな
いシステム・パラメータは例外です。次のリストは、必要なときにセットされる
Reports System パラメータです。
RUN_REPORT_OBJECT 内 の System
Parameters のリスト
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
REPORT_EXECUTION_MODE
BATCH または RUNTIME16
REPORT_COMM_MODE
SYNCHRONOUS
ASYNCHRONOUS
REPORT_DESTYPE
FILE, PRINTER, MAIL, CACHE17
REPORT_FILENAME
レポート・ファイル名
REPORT_DESNAME
レポート定義名
REPORT_DESFORMAT
レポート宛先フォーマット
REPORT_SERVER
Report Server 名
16
Report_Execution_Mode は、クライアント/サーバーの機能であり、Forms9i では使用されません。必須
フィールドとして BATCH または RUNTIME のどちらかに値をセットします。
17
destype 'file'および'preview'は、もはや Oracle9i Reports のオプションではありません。印刷する前にレ
ポートをプレビューする場合は、htmlcss の desformat で destype 'cache'を使用します。レポート・パラメー
タ・フォームが必要な場合は、コマンドとともに paramform=yes を発行してください。
21
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
なおパラメータ・リストと
既存のパラメータ・リストにシステム・パラメータの定義がすでに含まれている
SET_REPORT_OBJECT_PROPERTIES
の両方に DESTYPE を定義しても、プロ
グラムのコンパイルは防止できませんが、
実行は防止できます。
場合は、エラーが発生することがあります。DESNAME および DESTYPE エント
リを取り除くことで、または SET_REPORT_OBJECT_PROPERTIES()を使う前に次
の行をコードに追加することで、パラメータ・リスト自体を修正し、問題の発生
を防ぐことができます。
delete_parameter(<parameter list>,’<name>’);
RUN_REPORT_OBJECT ビルトインの使用18
Web 上の Forms から Reports を呼び出すもっとも安全な方法は、
RUN_REPORT_OBJECT と組み合わせて Reports Multi-tier Server を使用する方法で
す。ユーザーのデータベース接続はサーバー上の Forms から Reports へ暗黙的に引
き渡されるため、URL で引き渡されるときのような妨害/傍受の危険はありません。
RUN_REPORT_OBJECT を使用してリモート Reports Server にアクセスするには、
Forms 内の Report オブジェクトによって Oracle9i Reports Server が認識される必要
があります。これは、SET_REPORT_OBJECT_PROPERTY ビルトインを使用して
動的に、または Reports Server 名の文字列を Report オブジェクトのプロパティ・パ
レットに入力することで静的にできます。
RUN_REPORT_OBJECT の例
この例では、RUN_REPORT_OBJECT への同期呼び出しを使用して、Reports を実
行します。Report オブジェクト名、Reports Server 名、および所望の出力フォーマッ
ト(PDF、HTML、HTMLCSS)が、パラメータとして引き渡されるものとします。
PROCEDURE RUN_REPORT_OBJECT_PROC (vc_reportoj Varchar2,
vc_reportserver
varchar2, vc_runformat varchar2) IS
v_report_id
Report_Object;
vc_ReportServerJob VARCHAR2(100); /* unique id for each Report
request */
vc_rep_status
VARCHAR2(100); /* status of the Report job */
vjob_id
VARCHAR2(100); /* job_id as number only string*
BEGIN
/* Get a handle to the Report Object itself. */
v_report_id:= FIND_REPORT_OBJECT(vc_reportoj);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_COMM_MODE,
SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_DESTYPE,
CACHE);
18
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
なお Oracle9iDS 9.0.2 では、RUN_REPORT_OBJECT()をデバッグ・モードで実行中の Forms とともに使
用した場合、問題があることがわかっています。この問題に対しては処置が施され、まもなく解決されま
す。Forms をデバッグ・モードで実行中でなければ、すべて正常に動作します。
22
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Forms/Reports 6i か ら Oracle9iAS リ
リース 2 にアプリケーションをアップグ
レードする場合は、
web.show_document()の使用時に
Reports Server 名が含まれないよう、
RUN_REPORT_OBJECT()ビルトインに
よって検索される Reports job_id を修正
します。
/* Define the report output format and the name of the Reports Server
as well as a user-defined parameter, passing the department number
from Forms to the Report. There’s no need for a parameter form to
be displayed, so paramform is set to “no”. */
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_DESFORMAT,
vc_runformat);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_SERVER,
vc_reportserver);
SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_OTHER,
'p_deptno='||:dept.deptno||'paramform=no');
vc_ReportServerJob:=RUN_REPORT_OBJECT(report_id);
vjob_id :=
substr(vr_ReportServerJob,length(reportserver)+2,
length(vc_ReportServerJob));
/* If finished, check the report status . */
vc_rep_status := REPORT_OBJECT_STATUS(vc_ReportServerJob);
IF vc_rep_status='FINISHED' THEN
/* Call the Reports output to be displayed in a separate browser
window. The URL for relative addressing is valid only when the Reports
Server resides on the same host as the Forms Server. For accessing
a remote Reports, you must use the prefix http://hostname:port/ */
WEB.SHOW_DOCUMENT ('/reports/rwservlet/getjobid19'||
vjob_id ||'?server=’vc_reportserver,'_blank');
ELSE
message (‘Report failed with error message ‘||vc_rep_status);
END IF;
END;
例 5: Oracle Reports への統合呼び出しに RUN_REPORT_OBJECT を使用する方法
Forms/Reports 6i から Oracle9iAS リリース 2 にアプリケーションをアップグレード
する場合は、WEB.SHOW_DOCUMENT()の呼び出し時に Reports Server 名が含ま
れないよう、RUN_REPORT_OBJECT() ビルトインによって検索される Reports
job_id を修正します。上で説明した手順を使用するには、「When-Button-Pressed
Trigger」内の次の情報を引き渡す必要があります。
RUN_REPORT_OBJECT_PROC(<’REPORT_OBJECT’>,<’REPORT_SERVER_NAME’>’,
<’FORMAT’>)
Report_Object
Report 用の rdf ファイル名が入った Forms Report オブジェクト名
Report_Server_Name
Reports Server の名前
Format
次のいずれかのフォーマット:
html|htmlcss|pdf|xml|delimited|rtf
レポートを同期的に呼び出す Forms アプリケーションは、サーバー上でレポート
が処理される間、ユーザーを待たせます。長時間実行の Reports の場合は、
19
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
Reports Server リリース 6i と Oracle9i Reports Server とでは、getjobid の使用方法が違います。
Reports Server 6i では、getjobid パラメータのパラメータ名と値の間には、等号が使用されていました(例:
getjobid=Repsrv_32)。Oracle9i Reports では等号が省略され、パラメータ値はパラメータ名の直後にきます
(例: getjobid32)。また、getjobid 内の job id(ジョブ ID)にはサーバー名が含まれなくなりました。
23
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
REPORT_COMM_MODE プロパティを asynchronous(非同期)、および
REPORT_EXECUTION_MODE を batch(バッチ)にセットすることで、レポート
を非同期実行するのが最前の方法です。
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_EXECUTION_MODE,BATCH);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_COMM_MODE,ASYNCHRONOUS);
RUN_REPORT_OBJECT ビルトインを呼び出した後は、タイマーを作成し、
When-Timer-Expired トリガー内の現在の Report_Object_Status を頻繁にチェックし
ます。パフォーマンスの向上のため、タイマーの起動は 1 分間に 4 回までにする
ことをお薦めします。レポートの生成後、「When-Timer-Expired trigger」は
WEB.SHOW_DOCUMENT ビルトインを呼び出し、固有な job_id で識別されてい
る Reports 出力ファイルをクライアントのブラウザにロードします。
次に Report_Object_Staturs をチェックする「When-Timer-Expired trigger」について
説明します。
(...)
/* :global.vc_ReportServerJob needs to be global because the
information about the Report job_id is shared between the trigger
code that starts the report and the trigger code (When-Timer-Expired
that checks the current Report status. */
vc_rep_status:=
REPORT_OBJECT_STATUS(:global.vc_ReportServerJob);
IF vc_rep_status='FINISHED' THEN
vjob_id :=substr(:global.vc_RcportServerJob,
length(reportserver)+2,length(:global.vc_ReportServerJob));
WEB.SHOW_DOCUMENT (’/reports/rwservlet/getjobid’||: vjob_id
||'?server=’vc_reportserver,'_blank');
ELSIF vc_rep_status not in
('RUNNING','OPENING_REPORT','ENQUEUED') THEN
message (vc_rep_status||' Report output aborted');
END IF;
例 6: RUN_REPORT_OBJECT()を使用した非同期レポーティングの実行
注: タイマーは不要になったとき、忘れずに削除してください。
RUN_REPORT_OBJECT 内での Forms パラメータ・リストの引き渡し
コーディング例については、付録 B を参
照してください。
Web 上の Forms 内で Reports Services を呼び出し統合レポーティングを実行すると
き、Reports Server クライアント/サーバー環境内の RUN_PRODUCT で使用したも
のと同じパラメータ・リストを、RUN_REPORT_OBJECT でも使用できます。な
おシステム・パラメータは、SET_REPORT_OBJECT_PROPERTY ビルトインでセッ
トします。RUN_REPORT_OBJECT 内でパラメータ・リストを使用するときの構
文は次のとおりです。
ReportServerJob:=run_report_object(report_id,paramlist_id);
この paramlist_id は、RUN_PRODUCT20で使用されるのと同じ ID です。
20
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
RUN_PRODUCT を使用した Reports 出力生成は、Oracle9i Forms ではサポートされていません。
RUN_PRODUCT ビルトインを使用する Reports への統合呼び出しが入った Forms モジュールはコンパイ
ルされません。
24
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
21
パラメータ・フォーム を表示する Reports の呼び出し
RUN_REPORT_OBJECT ビルトインを使用して、Forms 内で Reports 出力を作成す
る場合は、Web からではなく、サーバー側で Reports Server が直接呼び出されます。
RUN_REPORT_OBJECT 呼び出しでは、マシンへの Web アクセス・パスは引き渡
されないため Reports Server は、Reports Server Web インターフェイスをホストし
ているマシンへの Web アクセス・パスを意識しません。
サーバー側の呼び出しを使用し、パラメータ・フォームが入ったレポートを実行
すると、Web 内の Reports パラメータ・フォームが表示されますが、ユーザーが
「Submit」ボタンをクリックしたときは機能しません。その理由は、Oracle9i Reports
Server によって生成されたパラメータ・フォーム HTML ソース・コードを分析す
ることで識別できます。
(...) <form method=post action=””> (...)
なお HTML フォームの「アクション」
タグには、
空の文字列が入っています。
フォー
ムが最終的な Reports 出力を正しく生成するために、次のような有効なアクショ
ン・エントリが必要です。
<form method=post action=”http://<hostname>/reports/rwservlet?”>
同様に、後続の各 Reports 呼び出しで暗黙的に引き渡されるパラメータ値を保存す
るために使用される、hidden_run_parameters 文字列もまた空白の値を持っています。
<input name="hidden_run_parameters" type=hidden value="">
hidden_run_parameters の有効な文字列は次のとおりです。
<input name="hidden_run_parameters" type=hidden
value="report %3Dreptest+destype%3Dcache+desformat%3Dhtmlcss+use
rid%3Dscott%2Ftiger%40fnimphiu+server% 3DRepsrv">
問題の原因がわかれば、Forms Developer および Reports Developer の中で問題を修
正できますが、Reports モジュールを修正しないかぎり、この問題は解決できませ
ん。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
21
シングル・サインオン・モードでの実行時、Reports9i のパラメータ・フォームには問題があることが
わかっています。この問題はすでに解決済みで、Reports9 の次のパッチに含まれます。それまでは、この
セクションで説明したコードが有効になるのは、非シングル・サインオン・デプロイメント向けだけです。
25
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
解決策
前述の問題の解決策は、Reports と Forms の両方である程度のプログラミングを伴
います。
Forms 内
正しく動作するため、パラメータが Forms から RUN_REPORT_OBJECT によって
呼び出されたとき、Reports 内で検索できない 3 つの情報がパラメータ・フォーム
には必要になります。
•
username/password@connect_string
•
Reports Server 名
•
使用されている Reports Server への Web アクセス・パス
従って、その他すべての Reports 実行時パラメータのほか、この情報が
RUN_REPORT_OBJECT ビルトイン内の「その他」のパラメータとともに引き渡
される必要があります。
この例では、Forms 内でプロシージャを使用して RUN_REPORT_OBJECT を呼び
出します。このプロシージャは、report_id 用に引き渡された値、Reports Server 名、
および出力フォーマット(runformat)を得ます。
パラメータ
値
report_id
Report Object の識別子
reportserver
使用する Reports Server の名前
Runformat
html, htmlcss, pdf, xml ...
Forms のコード例
PROCEDURE RUN_REPORT_OBJECT_PROC(report_id REPORT_OBJECT,
reportserver varchar2, runformat varchar2) IS
ReportServerJob
VARCHAR2(100);
rep_status
VARCHAR2(100);
vjob_id
VARCHAR2(100);
vc_user_name
VARCHAR2(100); /* used for creating parameter form*/
vc_user_password
VARCHAR2(100); /* used for creating parameter form*/
vc_user_connect
VARCHAR2(100); /* used for creating parameter form*/
vc_connect
VARCHAR2(300); /* used for creating parameter form*/
BEGIN
/* get user connect string */
vc_user_name:=get_application_property(username);
vc_user_password:=get_application_property(password);
vc_user_connect:=get_application_property(connect_string);
/* creating complete connect string */
vc_connect:=vc_user_name||’/’||vc_user_password||’@’
||vc_user_connect;
/*set Reports properties for run_report_object*/
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_COMM_MODE,
SYNCHRONOUS);
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
26
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESTYPE,CACHE);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESFORMAT,
runformat);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_SERVER,
reportserver);
/* P_USER_CONNECT and P_SERVERNAME are custom parameters in
the Reports module
P_ACTION is also a user-defined variable in Reports and takes
the Web access path to the Report ( it doesn’t need to be
hard-coded as in this sample ) */
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,'p_deptno='||
:Dept.Deptno||'paramform=yes P_USER_CONNECT=’||vc_connect||
’P_SERVERNAME=’||reportserver||’P_ACTION=http://myserver’||
’.mydomain.com:7779/reports/rwsevlet?);
report_job_id:=run_report_object(report_id);
rep_status := report_object_status(ReportServerJob);
IF rep_status='FINISHED' THEN
vjob_id:=substr(ReportServerJob,length(reportserver)+2,
length(ReportServerJob));
WEB.SHOW_DOCUMENT('/reports/rwservlet/getjobid'||vjob_id||
'?server=Repsrv',' _blank');
ELSE
message (rep_status||' Report output aborted');
END IF;
END;
例 7: RUN_REPORT_OBJECT と共に Reports パラメータ・フォームを使用する Forms コード
Reports 内
Reports 内には、次のユーザー定義変数を作成します。
すべてのユーザー・パラメータは、文字
列型です。「Restrict list to predetermined
values」チェック・ボックスは忘れずに
チェックをはずしてください。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
P_ACTIONS
空の「アクション」パラメータの値
P_USER_CONNECT
隠しパラメータとして username/password@database が使用される
P_SERVER_NAME
Reports Server Name
Report "before form"トリガー内に次のコードを使用して、Reports モジュール属性
内に示されているデフォルトのフォーム値を、ユーザー独自の文字列で置き換え
ます。
27
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Reports のコード例
P_ACTIONS の初期値は_action_です。
これを省略すると、rwservlet 経由のアク
セスにより、Web URL から直接呼び出さ
れたとき、レポートは中断されます。
function BeforePForm return boolean is
vc_parameter_form
varchar2(4000);
vc_hidden_runtime_values
varchar2(1000);
vc_report_name
varchar2(100);
begin
/* If Reports is called from the URL and not from Forms, then
p_action is set to its default value. In this case,
the hidden_value has to retain the default value too */
If (:p_action=’_action_’) then
vc_hidden_runtime_values:=’_hidden_’;
else
/* The Report is started from Run_Report_Object and
the hidden parameter has to be set */
/* 1. get the report module name */
22
srw.get_report_name(vc_report_name);
/* 2. the name needs to be cut off blanks up to the length
that it has in characters */
vc_report_name:=substr(vc_report_name,1,
instr(vc_report_name,’ ’)-1);
/* Note that I’m not using any custom defined parameters except
for :p_action,:p_user_connect, :p_servername. If you have
additional user-defined parameters in your Report output, then
this parameter needs to be added to the "vc_hidden_runtime
_values" string */
vc_hidden_runtime_values:=’report=’||vc_report_name||
’&destype=’||:destype||’&desformat=’||:desformat||
’&userid=’||:p_user_connect||’&server=’||:p_servername;
end if;
/* build the parameter forms HTML code */
vc_parameter_form:=’<html><body bgcolor="#ffffff">
<form method=post action="’||:P_ACTION||’">
<input name="hidden_run_parameters" type=hidden
value="’||vc_hidden_runtime_values||’"><p>
<table border=0 cellspacing=0 cellpadding=0>
<tr> <td><input type=submit></td>
<td><input type=reset></td> </tr>
</table><p><hr><p>’;
/* set the modified before form value, to overwrite the default */
srw.set_before_form_html (srw.text_escape, vc_parameter_form);
return (TRUE);
end;
例 8: Forms 内で RUN_REPORT_OBJECT によって呼び出されたとき Reports パラメータを有
効にする Reports コード
22
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
SRW.GET_REPORT_NAME(...)ビルトインは Reports 9.0.2 内では正しく動作しません。この問題が解決
されるまでは、ユーザー・パラメータとして Forms 内の set_report_obect_property (...,report_other,...)ビルト
イン内で引き渡すこと、または Reports ソース・ファイル名をハードコードすることをお薦めします。
28
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
次回 RUN_REPORT_OBJECT から統合パラメータ・フォームで Report を実行する
と、HTML ソース内の空白値が置き換えられます。つぎに例を示します。
<form method=post
action=”http://myserver.mydomain.com:7779/reports/rwservlet?”>
および
<input name=”hidden_run_parameters” type=hidden value=
”report=Reptest&destype=Cache&desformat=HTMLCSS&
userid=Scott/Tiger@fnimphiu&server=Repsrv”>
上の例で使用されているように、Reports HTML フォームの構築用に HTML テン
プレート・コードを Reports の「レポート前値」プロパティからコピーできます。
WEB.SHOW_DOCUMENT ビルトインの使用
WEB.SHOW_DOCUMENT ビルトイン・プロシージャを使用して、Web 上の Forms
アプリケーションから任意の Web サイトにアクセスします。
構文
次の表で、
WEB.SHOW_DOCUMENT の構文と関連する引数について説明します。
WEB.SHOW_DOCUMENT(URL, DESTINATION);
URL
URL は、文字列(http://www.oracle.com)として、変数内に入れ、または
両方の組み合わせで引き渡されます。アドレス指定された Web ページが、
Forms Server と同じホスト上にある場合は、相対アドレスが使用できます。
(/virtual_path/page.HTML)
DESTINATION
アドレス指定された Web ページが表示されるターゲットの定義。値は単
一引用符で囲む必要があります。
_blank
Web ページを新しいブラウザ・ウィンドウに表示します。
_parent
Web ページを現在のページの親フレーム内に表示します。
<target_name>
target_name によって指定されたフレーム内に Web ページを表示します。
Reports Server は Web 上で、Reports サーブレット(rwservlet)経由でアクセス
できます。
http://<hostname>:<port>/reports/rwservlet?server=<reportserver
_tns>&report=<report>.rdf&de sformat=[htmlcss|pdf|xml|delimited
|]&destype=cache&userid=<user/pw@database>&paramfor m=[no|yes]
例 9:Web URL からの Reports 呼び出し
次の例は、Web 上の Forms からこの Reports を呼び出します。ブロック「dept」内
の Forms アイテム「deptno」からユーザー・パラメータ「p_deptno」が読み込まれ
るとします。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
29
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
例: WEB.SHOW_DOCUMENT()
/* WHEN-BUTTON-PRESSED */
DECLARE
vc_url varchar2(100);
BEGIN
vc_url:=‘http://<hostname><port>/reports/rwservlet?server='
|| ‘Repsrv&report=reptest.rdf&desformat=htmlcss&destype=cache ’
|| '&userid=user/pw@database&p_deptno='||:dept.deptno
|| '&paramform=no’;
WEB.SHOW_DOCUMENT(vc_url,’_blank’);
END;
例 10: WEB.SHOW_DOCUMENT()の一般的な使用方法
例: WEB.SHOW_DOCUMENT()と相対アドレス
Reports Server が Forms Server と同じホストにインストールされている場合は、相
対アドレスを使用します。
/* WHEN-BUTTON-PRESSED */
DECLARE
vc_url varchar2(100);
BEGIN
vc_url:=‘/reports/rwservlet?server=Repsrv&report=reptest.rdf
&desformat=htmlcss’ ||
‘&destype=cache&userid=user/pw@database&p_deptno=’||
:dept.deptno || '&paramform=no’;
WEB.SHOW_DOCUMENT(vc_url,’_blank’);
END;
例 11: WEB.SHOW_DOCUMENT()での相対 Web アドレスの使用方法
例: URL 内のユーザー資格証明の 16 進表現
Web 内の Forms から
WEB.SHOW_DOCUMENT() ビ ル ト イ ン
を使用して Reports を安全に実行するに
は、シングル・サインオン・モードで
Oracle9iAS Reports Services を実行する
ことをお薦めします。シングル・サイン
オン・モードでの Reports の実行につい
ては、Reports のドキュメントを参照し
てください。
WEB.SHOW_DOCUMENT()を使用し、誰もが読める形式でユーザー名とパスワー
ドを URL に渡すことを不快に感じるユーザーもいます。
Forms から Reports を呼び出すとき、WEB.SHOW_DOCUMENT()によって引き渡さ
れた URL 内の接続文字列を 16 進データで表現することで、簡単に読むことがで
きないようにします。
このプロシージャは、「runformat」として引き渡されるレポート出力フォーマッ
ト[html、htmlcss、pdf、rtf、xml、delimited]および Reports 定義ファイルの名前を
期待します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
30
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
PROCEDURE WEB_SHOW_DOCUMENT_PROC (runformat varchar2,reportname
varchar2)
IS
vc_user_name VARCHAR2(30) := get_application_property(username);
vc_user_pw
VARCHAR2(30) := get_application_property(password);
vc_url
VARCHAR2(200);
vc_url_temp VARCHAR2(300);
v_a
VARCHAR2(10);
v_b
VARCHAR2(10);
i
NUMBER(10);
vc_user_connect
VARCHAR2(30):=get_application_property(connect_string);
BEGIN
/* Create the user’s database connect string. */
vc_url := 'userid='||vc_user_name||'/'||vc_user_pw||'@'||
vc_user_connect;
/* Convert the connect string into a hexadecimal character
string. */
FOR i IN 1..LENGTH(vc_url) LOOP
v_a := ltrim(to_char(trunc(ascii(substr(vc_url,i,1))/16)));
if v_a = '10' THEN v_a := 'A';
elsif v_a = '11' THEN v_a := 'B';
elsif v_a = '12' THEN v_a := 'C';
elsif v_a = '13' THEN v_a := 'D';
elsif v_a = '14' THEN v_a := 'E';
elsif v_a = '15' THEN v_a := 'F';
end if;
v_b := ltrim(to_char(mod(ascii(substr(vc_url,i,1)),16)));
if v_b = '10' THEN v_b := 'A';
elsif v_b = '11' THEN v_b := 'B';
elsif v_b = '12' THEN v_b := 'C';
elsif v_b = '13' THEN v_b := 'D';
elsif v_b = '14' THEN v_b := 'E';
elsif v_b = '15' THEN v_b := 'F';
end if;
vc_url_temp := vc_url_temp||’%’||v_a||v_b;
END LOOP;
/* Create the Reports URL. */
vc_url:=’/reports/rwservlet?server=Repsrv+report=’||
reportname||’+destype=Cache+desformat=’||runformat||
’+’ ||vc_url_temp ||’+p_deptno=’||:dept.deptno;
/* Call the Report in a new browser window using
WEB.SHOW_DOCUMENT(). */
WEB.SHOW_DOCUMENT(vc_url, ’_blank’);
END;
例 12: WEB.SHOW_DOCUMENT()で使用される 16 進表現の URL
上の例では、Reports Server 名は「Repsrv」にハードコードされますが、それは Forms
内でパラメータを使用することで回避できます。また URL は相対的です。これは、
Reports Services インストレーションは同じ Oracle9iAS インストレーション上にあ
ることを意味します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
31
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
例: Reports SSO と WEB.SHOW_DOCUMENT()
リソースの作成方法およびシングル・サ
インオン・ユーザー・アカウントへのリ
ソースの割り当て方法については、
Forms および Reports のドキュメントを
参照してください。
Oracle9iAS Reports Services と Oracle9iAS Forms Services により、ユーザーのアプリ
ケーション接続情報を、Oracle Internet Directory(OID)内に安全に保存するオプ
ションが可能になりました。接続情報は、Forms URL または Reports URL で指定
された名前付き識別子からアクセスされます。
たとえば、データベース・アカウント情報が scott/tiger@orcl であり、この情報が
OID 内の名前付き識別子「myApp」の下に登録されたとします。sso モードで実行
中の Forms および Reports からこのデータソースを見るには、アプリケーションを
要求するときに、Forms の「config」URL パラメータおよび Reports の「ssoconn」
URL に「myApp」という名前を指定するだけです。シングル・サインオン・ユー
ザー名と名前付き識別子の組み合わせは、ユーザーごとに固有なため、Forms お
よび Reports サーブレットはスタートアップ時に OID 内のユーザー接続情報を見
つけることができます。WEB.SHOW_DOCUMENT()への次の呼び出しは、sso モー
ドで開始された Forms アプリケーションからくると想定されます。この時、シン
グル・サインオン・ユーザーは認証され、ユーザー名がブラウザ・セッションに
知らされます。
/* WHEN-BUTTON-PRESSED */
DECLARE
vc_url varchar2(100);
BEGIN
vc_url:=‘/reports/rwservlet?server=Repsrv&report=reptest.
rdf &desformat=htmlcss’
|| ‘&destype=cache&VVRFRQQ P¥$SS&p_deptno=’|| :dept.deptno
|| '&paramform=no’;
WEB.SHOW_DOCUMENT(vc_url,’_blank’);
END;
例 13: WEB.SHOW_DOCUMENT()での Reports シングル・サインオン認証の使用
Reports Servlet は ssoconn パラメータに指定されている値を使用して、接続済み
ユーザーの OID に保存されているデータソース接続情報を検索します。
レポートが実行される前に、ユーザーがまだ認証されていない場合(たとえば、
Forms がシングル・サインオン・モードで実行されていないとき)、ユーザー認
証用にシングル・サインオン・ログオン・ダイアログが表示されます。
Web 上での Reports 出力の印刷
Reports Server で作成された Reports 出力は、destype=printer および
desname=//network_access/printer_name 引数を使用して、
プリンタに送信されます。
Reports 出力は中間層サーバーで作成されるため、ローカル・プリンタはサポート
されていません。レポートをローカルへ送信するには、Reports Server をホストし
ている中間層サーバー上で、プリンタがネットワーク・プリンタとして設定され
ていることを確認してください。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
32
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Forms Migration Assistant(FMA)23
Oracle9i Forms とともに提供される Forms Migration Assistant(FMA)には、統合呼
び出しを Oracle Reports に移行するユーティリティが含まれています。当初は、
RUN_REPORT_OBJECT を使用するために RUN_PRODUCT ビルトインが使用さ
れていました。FMA は自動化されたツールであるため、手作業の移行によって
RUN_REPORT_OBJECT が提供していたような柔軟性は提供できません。ただし、
Forms 内での RUN_REPORT_OBJECT の使用方法がわからない場合、
または Forms
アプリケーションを Web へ移行するときに長いメンテナンス期間が許されない業
務の場合、FMA が RUN_REPORT_OBJECT24ビルトインの実用的な実装を提供し
ます。
rp2rro.pll の既知の問題と回避方法
Oracle9iAS Release2 のベース・リリースとともに出荷された FMA バージョン内の
RUN_PRODUCT()から RUN_REPORT_OBJECT()への移行ユーティリティには問
題があることが判明しています。問題は、移行後に変換済みの RUN_PRODUCT()
呼び出しを扱う Forms ライブラリの rp2rro.pll にあります。この問題を修正するに
は、Oracle9i Forms Developer から rp2rro.pll ファイルを開き、パッケージ本体をダ
ブルクリックします。
次のコード・セグメントを見つけるために、"getjobid="文字列を検索します。
WEB.SHOW_DOCUMENT(rp2rroVirtualDir||rp2rroReportsInterface||
’/getjobid=’||rp2rro_jobidFull||’?server=’||rp2rroReportServer,
’_blank’);
このコード行を次のように変更します。
WEB.SHOW_DOCUMENT(rp2rroVirtualDir||rp2rroReportsInterface
||’/getjobid’
||rp2rro_jobidPartial|’?server=’||rp2rroReportServer,’_blank’);
これを変更しないと、Reports Server は数値フォーマット例外を意味するエラー・
メッセージを表示します。
インストール済みの rw_server_queue 表にアクセスできるデータベース・アカウン
トがない場合は、rp2rro.pll をコンパイルするため、同じパッケージ内で
"rp2rro_getQueueTableErrors"を検索します。
太字で強調表示されている要素を反映するように、rp2rro_getQueueTableErrors 関
数を編集します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
23
オラクル社は、Forms9i の最初のパッチ・セットに添付されている FMA の使用を薦めています。
このセクションで説明した問題はすべて、パッチで解決されます。
24
FMA の使用方法および RUN_REPORT_OBJECT の移行によるメリットについては、Forms Migration
Assistant のドキュメントを参照してください。
33
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
FUNCTION rp2rro_getQueueTableErrors (jobID varchar2) RETURN
Varchar2 IS
vErrors varchar2 (4000):= ’ ’;
-- CURSOR getErrorsFromQueueTable IS select status_code ||’ - ’
||status_message from rw_server_queue where job_id =
to_number(jobID);
BEGIN
-- open getErrorsFromQueueTable;
-- fetch getErrorsFromQueueTable into vErrors;
-- close getErrorsFromQueueTable;
-- return vErrors;
null
EXCEPTION
WHEN OTHERS THEN
return ’rp2rro error: Reports Queue table not available’;
END;
例 14: rw_server_queue 表のインストール要件を無効にし rp2rro.pll を再コンパイルする
これで rp2rro.pll ファイルをコンパイルし、変換済み Reports を実行できるはずで
す。すでに述べたように、この問題は既知であり、Oracle9i Forms の今後のパッチ・
セットで修正されることになっています。
まとめ
このホワイト・ペーパーでは、Oracle9i Reports への呼び出しを Web 上の Oracle9iAS
Forms Services に統合する場合に使用できるオプションを中心に説明しました。
Oracle9i Reports を呼び出す RUN_PRODUCT()ビルトインは、Forms からはもう使
用できませんが、その代わりに、この作業には、Oracle Forms 5.0 で最初に採用さ
れた RUN_REPORT_OBJECT()ビルトインまたは WEB.SHOW_DOCUMENT()のど
ちらかが使用できます。
Oracle9i Forms および Oracle9i Reports の新機能は、シングル・サインオンの統合
です。Forms および Reports では、Oracle HTTP Server および Oracle9iAS Single
Sign-On Server 内の mod_osso でシングル・サインオンが実施されます。Forms へ
の Reports 統合を成功させるため、Forms と Reports は同じモード、つまりシング
ル・サインオン・モードか非シングル・サインオン・モードのどちらかで実行す
ることをお薦めします。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
34
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
付録 A: 可用性マトリックス
この機能マトリックスは、このホワイト・ペーパーで説明した、Web 上の Forms
から Reports を実行する様々なオプションを比較したものです。
Oracle9iAS Forms Services への Oracle9iAS Reports の統合
機能
RUN_REPORT_
OBJECT
WEB.SHOW_
DOCUMENT
マルチユーザー対応
ü
ü
パラレル Reports 処理
ü
ü
スケーラブル
ü
ü
非同期レポーティング
ü
ü
Reports パラメータ・フォーム・サポート
ü25
ü
Forms パラメータ・リストの使用
ü
ü
ユーザー名/パスワードの保護
ü
ü26
レポート・ステータス通知
ü
ü
ユーザー定義パラメータ
ü
ü
Forms Services 以外のホスト上での
Reports の実行
ü
ü
複数の出力フォーマット
ü
ü
推奨
ü
ü
付録 B: Forms パラメータ・リストの引き渡し
RUN_REPORT_OBJECT を使ってレポートにパラメータを引き渡すことと、
RUN_PRODUCT を使って引き渡すことは異なります。ただし、RUN_PRODUCT
での実行用に作成されたパラメータ・リストを RUN_REPORT_OBJECT と組み合
わせて使用することは可能です。
次のコードは、Reports を Reports Multi-tier Server にサブミットする
RUN_REPORT_OBJECT への呼び出しにパラメータ・リストを挿入します。
25
26
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
この文書で説明されているように、追加コーディングが必要です。
シングル・サインオンの場合に限ります。
35
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Forms パラメータ・リスト例
PROCEDURE RUN_REPORT_OBJECT_LIST(report_id REPORT_OBJECT,
reportserver varchar2,
runformat varchar2) IS
ReportServerJob
VARCHAR2(100);
vc_rep_status
VARCHAR2(20);
paramlist_id
ParamList;
paramlist_name
VARCHAR2(10):=’tmplist’;
BEGIN
/* The Reports_Object Properties needs to be set for using
the Reports Server .*/
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_COMM_MODE,
SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_SERVER,
reportserver);
/* Check for and delete parameterlist. */
paramlist_id:= get_parameter_list(paramlist_name);
IF NOT id_null(paramlist_id) THEN
destroy_parameter_list(paramlist_id);
END IF;
paramlist_id:=create_parameter_list(paramlist_name);
/* The parameterlist determines the destype, the Reports output
format, and the user defined variable read from a Forms
file’s :dept.deptno. */
add_parameter(paramlist_id,'DESTYPE',TEXT_PARAMETER,'CACHE');
add_parameter(paramlist_id,'PARAMFORM',TEXT_PARAMETER,'NO');
add_parameter(paramlist_id,'p_DEPTNO',TEXT_PARAMETER,
:DEPT.DEPTNO);
add_parameter(paramlist_id,'desformat',TEXT_PARAMETER,
runformat );
ReportServerJob:=RUN_REPORT_OBJECT(report_id,paramlist_id );
END;
例 15: RUN_REPORT_OBJECT()での Forms パラメータ・リストの使用方法
重要:
重要 すでに既存のパラメータ・リストにシステム・パラメータ定義が入ってい
る場合は、このリストが SET_REPORT_OBJECT_PROPERTY()内のコンフィギュ
レーションを上書きします。混乱や必要のない動作を避けるため、パラメータ・
リスト自体を修正することをお薦めします。
SET_REPORT_OBJECT_PROPERTIES()を使う前に、DESNAME と DESTYPE から
エントリを取り除く、または次のコードを自分のコードに追加します。
delete_parameter(<parameter list>,’<name>’);
なおパラメータ・リストと SET_REPORT_OBJECT_PROPERTIES の両方に
DESTYPE を定義しても、プログラムのコンパイルは防止できませんが、実行は防
止できます。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
36
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
付録 C: トラブルシューティング
次の表に、Oracle Reports への呼び出しを統合した Web 上の Forms 実行時に発生
する可能性がある問題のいくつかを示します。
問題
解決策
rwserver server=<servet_name>
batch=yes で起動された
Reports Server は開始します
が、Reports サーブレット Web
インターフェイスからアクセ
スできません。
Reports Servers は CORBA ベースであり、起動された
Reports Server 名が既存かどうか、ネットワークを調べま
す。同じ名前の Reports Server が存在する場合、2 番目の
Reports Server は自動的にシャットダウンします。
Windows 上では、Reports Server プロセスの起動時に
batch=yes を使用しない場合、エラー・メッセージが表示
されます。安全のために、Reports Server の名前の中には
いつもホスト名を指定してください。「Repsrv」より
「RepsrvFnimphiu-lap」の方が確実です。
Forms6i から Oracle9i Forms へ
のアップグレードの後、
RUN_REPORT_OBJECT()への
呼び出しは、サーバー上に
Reports 出力を作成しますが、
出力は getjobid を使用してア
クセスできません。
Oracle9iAS Reports Services では、getjobid で使用される
値のフォーマットが変更されています。
Reports6i では、フォーマットは
getjobid=<report_server_name>_<job number>でした。
Oracle9i Reports では、これは Getjobid<job number>になっ
ています。
問題解決のための RUN_REPORT_OBJECT()呼び出しを
含んでいるトリガーに、次の行を追加します。
vjob_id := substr (report_message, length
(reportserver) +2, length
(report_message));
WEB.SHOW_DOCUMENT()への呼び出しの中に
"...getjobid"||vjob_id||" ...を使用します。
Oracle9iAS Forms Services と
Oracle9iAS Reports の統合
Oracle9iAS Forms Services では
統合された Reports は実行で
きません。エラー・メッセー
ジ: ジョブ・ステータスが取得
できないが表示されジョブは
失敗します。
Reports Server が、アクセス制御に関して間違って設定さ
れています。
Oracle9iAS_Home/reports/conf/<Report_Server_Name>.conf
構成ファイルを開き、内容とともに
<security>...</security>タグを取り除きます。
プロセス・サーバー内の
Reports では、Forms 内での
RUN_REPORT_OBJECT()の使
用はできません。
Forms の場合、Reports Server は別のプロセスで実行する
必要があります。Oracle Reports への呼び出しが、Reports
Servlet 経由ではなくサーバー側で実施されるためです。
インプロセス・サーバーを使用する場合は、
WEB.SHOW_DOCUMENT()ビルトインを使用し Reports
統合を起動します。
37
Oracle Corporation 発行「Integrating Oracle9iAS Reports Services in Oracle9iAS Forms Services」の翻訳版です。
Oracle9iAS Forms Services と Oracle9iAS Reports の統合
2002 年 12 月
著者: Frank Nimphius
Oracle Corporation
World Headquarters
500 Oracle Parkway
Redwood Shores, CA 94065
U.S.A.
海外からのお問合せ窓口:
電話: +1.650.506.7000
ファックス: +1.650.506.7200
www.oracle.com
オラクル社は、インターネット上での活動を強化するソフトウェアを提供します。
Oracle はオラクル社の登録商標です。
このガイドで使用されているさまざまな製品名およびサービス名には、オラクル社の商標が含まれています。
その他のすべての製品名およびサービス名は、各社の商標です。
Copyright © 2002 Oracle Corporation
All rights reserved.
Fly UP