Oracle9i Forms
クライアント/サーバーから Web への
移行
オラクル・ホワイト・ペーパー
2002 年 4 月
Oracle9i Forms 2
Oracle9i Forms
クライアント/サーバーから Web への移行
はじめに ... 4
このガイドの内容... 4
Web への移行の必要性... 5
1 Oracle9iAS Forms Services のアーキテクチャ ... 6
1.1 Oracle9i Forms のコンポーネント ... 6
1.2 多階層アーキテクチャ... 6
1.2.1 2 層クライアント/サーバー・アーキテクチャ ... 6
1.2.2 3 層 Web アーキテクチャ ... 7
1.2.3 仕組み ... 8
1.2.4 クライアント層 ... 8
1.2.5 アプリケーション層 ... 8
1.2.6 データベース層 ... 8
2 アップグレード・プロセス... 9
2.1 Forms Builder を使用したアップグレード(インタラクティブ) 9
2.2 Forms Compiler を使用したアップグレード(バッチ) ... 9
2.3 Forms JDAPI を使用したアップグレード(プログラム/バッチ)10
2.4 Migration Assistant の使用(オプション)... 10
3 Web 用の Forms の構築 ... 11
3.1 異なる動作をする機能... 11
3.1.1
HOST
および
ORA_FFI
ビルトイン、ユーザー・イグジット、
Java Importer(
ORA_JAVA
) ... 11
3.1.2 ローカル(クライアント)ファイル・システムとの対話 ... 11
3.2 パフォーマンスに影響がある機能 ... 12
3.2.1
SYNCHRONIZE
ビルトイン ... 12
3.2.2 タイマー ... 12
3.2.3 タブ付きキャンバス ... 12
3.3 Web 環境では機能しない機能... 12
3.3.1 マウス・イベント ... 13
3.3.2 オペレーティング・システム固有の形式のアイコン... 13
3.3.3 VBX コントロール... 13
3.3.4 ACTIVEX(OCX)コントロール ... 14
3.3.5 OLE コンテナ ... 14
3.3.6 サウンド項目 ... 14
3.3.7 イメージ・コントロール・パレット ... 14
3.3.8
GET_FILE_NAME
ビルトイン ... 14
3.4 プラットフォーム固有の機能 ... 14
3.4.1
HOST
ビルトイン... 14
3.4.2 大/小文字の区別 ... 15
3.4.3 フォント ... 15
3.4.4 OLE コンテナ ... 15
4 Forms Services の構成および配置... 16
4.1 formsweb.cfg... 16
Oracle9i Forms 3
4.2 default.env... 17
4.3 Registry.dat... 18
4.4 Forms の Web への配置 ... 18
5 Web の活用 ... 20
5.1 拡張可能 Java クライアント... 20
5.1.1 Pluggable Java コンポーネント(PJC) ... 20
5.1.2 JavaBeans... 21
5.2 シングル・サインオン... 21
5.3 Web ページの起動... 21
6 結論 ... 22
付録 A - 参考資料 ... 23
付録 B - Forms セッションの構造 ... 24
Forms サーブレットおよび Forms リスナー・サーブレット... 26
サーブレットとは... 26
付録 C - バッチ・コンパイル... 27
Oracle9i Forms 4
Oracle9i Forms
クライアント/サーバーから Web への移行
はじめに
このホワイト・ペーパーでは、Oracle Forms のクライアント/サーバー・アプリケー ションから Forms の Web アプリケーションへ移行する方法を説明します。 新規リリースである Oracle9i Forms は、Forms の Web 専用のリリースになりまし た。Oracle Forms 6i は、クライアント/サーバーおよびキャラクタ・モードをサポー トする最後の Forms のバージョンとなりますので注意してください。このため、 Oracle Forms 6i クライアント/サーバーおよびキャラクタ・モード・アプリケー ションは、2004 年までサポートされ、またアシスタンス・サポートでは 2007 年 まで提供されます。このガイドの内容
第 1 章では、Oracle9iAS Forms Services のアーキテクチャについてと、どのように Forms アプリケーションが Web 上で実行されるかを説明します。一般的にクライ アント/サーバー・アプリケーションが変更なしで、Web でいかにして実行が可能 になるかを説明します。
第 2 章では、Oracle9i Forms Services の構成方法およびクライアント/サーバーForms とは異なる Forms アプリケーションの配置方法について説明します。
さらに、Forms 6i アプリケーションから Oracle9i Forms への移行方法、すなわちアッ プグレード・プロセスの概要についても説明します。 第 3 章では、Web 用に構築する場合に、Forms の開発者が直面する影響について 説明します。 多くの Forms クライアント/サーバー・アプリケーションは変更なしで Web 上で 実行されますが、開発者が注意すべき点もあります。 第 4 章では、クライアント/サーバーでは提供されなかった Web 専用の機能につい て説明します。開発者は、Web 上で Forms アプリケーションを構築するときに、 これらの機能を活用できます。 付録 A には、このホワイト・ペーパーに記す参考資料および他の情報ソースを記 載します。付録 B では、Forms セッションで発生する動作を分析し説明します。 付録 C には、Windows バッチのコンパイル・スクリプトのサンプルを記します。
注意: Forms の以前のリリースは、Oracle Forms 6i と呼ばれ、今回のリリースは Oracle9i Forms と呼ばれています。Oracle9i Forms への移行では、Oracle Forms 6i から Oracle9i Forms への移行のみサポートされます。Forms の以前のバージョンか
このドキュメントは、Oracle Forms 6i ク ライアント/サーバーから Web 上での Oracle9i Forms への移行について説明し ますが、ここに示す概念は、移行する Forms のクライアント・サーバーおよび Web 上での Forms のそれぞれいずれの バージョンにも該当します。
Oracle9i Forms 5
ら移行する場合、まず Oracle Forms 6i へ移行し、次に Oracle9i Forms へ移行する 必要があります。
Web への移行の必要性
Form アプリケーションの Web への配置は、次のような利点があります。 • メンテナンスの容易さ • アクセス可能性 • プラットフォーム非依存クライアント • コスト効率 • インターネット上での実行 • シングル・サインオン • 他のテクノロジへのアクセス • ネットワークの通信量の削減 クライアント/サーバー・アプリケーションには、各クライアント・マシンのイン ストールおよびメンテナンスが必要です。Oracle9iAS および Forms Services の多階 層アーキテクチャによって、アプリケーションのインストールおよび構成を集中 的に管理できます。 ソフトウェアのアップグレードまたはパッチの適用は、中心となるサーバーでの み行うことで、すべてのユーザーに反映されます。このため、アップグレードま たはパッチの適用、または構成変更が必要な場合に、クライアント/サーバー実行 では発生していた各ユーザー・マシン毎の保守が不要になります。 プラットフォームの種類を問わず、ブラウザが使用できるユーザーは Forms アプ リケーションを実行できます。クライアント/サーバーの場合、アプリケーション が実行される前に各クライアント・マシンにインストールおよび構成を行う必要 があります。 Web であれば、アプリケーションのメンテナンスを行う管理者の数を削減できる うえに、より多くのユーザーが使用できるため、コスト効率が向上します。Web アプリケーションは、プロキシおよびファイアウォールを介して操作します。そ のためより多くのユーザーが、アプリケーションを使用できます。 Forms アプリケーションでは、シングル・サインオンを採用しているため、ユー ザーは 1 つのユーザー名およびパスワードを使用し、ログオンは 1 回のみです。 また、Web 上での Forms アプリケーションでは、Java などのテクノロジを使用し て(Web サービスなどの)他のシステムとの統合や Forms の機能の拡張を行えま す。これらのトピックは第 4 章で説明します。 Web 上で Forms を実行する最大の利点の 1 つは、クライアント/サーバー・アーキ テクチャと比較して、クライアントと中間層間のネットワーク通信量が削減され ることです。このことは、特に低帯域およびレスポンスの悪い(またはその両方) ネットワークを使用する企業にとって大きなメリットとなります。Oracle9i Forms 6
1 Oracle9iAS Forms Services のアーキテクチャ
解説されている注意事項の一部を除いて、いずれのクライアント/サーバーの Forms アプリケーションも Web 上で実行できます。多くの場合、これらはアプリ ケーションの変更なしに行えます。
このことは、Web 上での Forms の新規の利用者にとっては意外なことかもしれま せん。この章では、Web 上で Oracle Forms クライアント/サーバー・アプリケーショ ンを実行する方法について説明します。
1.1 Oracle9i Forms のコンポーネント
Oracle9i Forms は、2 部構成となっています。• Oracle9i Forms Builder
Oracle9i Developer Suite(Oracle9iDS)のコンポーネントであり、Forms ア プリケーションの設計および構築に使用します。
• Oracle9i Forms Services
Oracle9i Application Server(Oracle9iAS)のコンポーネントであり、Forms アプリケーションの配置に使用します。
この章では Forms Services およびランタイム・アーキテクチャについて説明します。
1.2 多階層アーキテクチャ
Web 上での Oracle Forms は、3 層アーキテクチャを使用して配置されます。
• クライアント層 • 中間層またはアプリケーション層 • データベース層 クライアント/サーバー・アプリケーションは、クライアント層およびデータベー ス層から成る 2 層構造となっています。 3 層アプリケーションの機能の詳細を説明する前に、2 層構造のクライアント/サー バーの動作についてと、なぜ Web で実行されるように変更する必要があるかを説 明します。
1.2.1 2 層クライアント/サーバー・アーキテクチャ
7 ページの図 1 に、クライアント/サーバー・アーキテクチャの 2 つの層を示しま す。クライアント層は、Oracle Forms Runtime であり、次の機能を持ちます。• FMX ファイル(および PLX や MMX ファイルなどの該当する Forms ファ イル)をロードします。
• データベースに接続し対話します
Oracle9i Forms 7
図 1: クライアント/サーバーの 2 層アーキテクチャ
Oracle Forms では、ユーザー・インタフェース(UI)プレゼンテーションを除い て、すべてのコンポーネント(PL/SQL エンジン、データ・マネージャなど)がプ ラットフォームと独立して設計されています。それが、多くのプラットフォーム で実行できる Oracle Forms の長所です。この長所によって Oracle Forms は、次の 革新的なステップと Web での実行を可能にしました。
1.2.2 3 層 Web アーキテクチャ
図 2 に示すとおり、UI プレゼンテーション・レイヤーのみが変更されています。
Oracle9i Forms 8
1.2.3 仕組み
このテクノロジの最重要点は、ロジックと UI の分離です。UI の表示方法を除い て、Forms ランタイムは、2 層および 3 層ともに同一のアーキテクチャを持ちます。 3 層 Web 環境の場合、Forms ランタイム・プロセスは、クライアント/サーバーの Forms ランタイムと同じ方法で FMX ファイル(および他の Forms モジュール)を ロードし、データベースに接続してアプリケーション・ロジックを実行します。 ロジックあるいは Forms FMX ファイルの処理は、中間層で行われます。 クライアントへ送信された情報のみが画面に表示されます。1.2.4 クライアント層
Forms Client は、ユーザーのブラウザで実行される Java Applet です。Java が使用 できるいずれのブラウザでもインターネット、イントラネットまたはエクストラ ネットのいずれかのネットワークを介して Forms アプリケーションを実行できま す。Forms Client は、表示する内容についてのメッセージをサーバーから受け取り、 ユーザーが行ったアクションをサーバーに通知し、処理を行います。
Forms Client はサイズにかかわらず、すべての Forms で実行される共通の Applet であり、ダウンロードは 1 度のみ行われます。クライアントでは、ビジネス・ロ ジックは実行されません。画面のレンダリングのみが行われます。すべてのロジッ クは、アプリケーション層で処理されます。
Web での Oracle Forms アプリケーションの実行に伴う動作の詳細は、付録 B を参 照してください。
1.2.5 アプリケーション層
Forms Client は、Forms ランタイム・プロセスと直接ではなく Oracle9iAS 内の HTTP リスナーを介して通信します。デフォルトでは HTTP 通信が使用されますが、セ キュア・ネットワークのために SSL(HTTPS)を使用するよう Oracle9iAS を構成 できます。
アプリケーション層は、複数のコンポーネントから構成されています。中間層の 動作の詳細は、付録 B を参照してください。
注意: Oracle9i Forms は、Oracle9iAS Release 2 のみでサポートされています。他の アプリケーション・サーバーで Forms を実行するように構成できますが、認定も サポートもされていません。
1.2.6 データベース層
データベースは一般的に専用マシンまたは、マシンのクラスタで稼動します。 Forms アプリケーションは、通常 1 つのデータベースに接続されます。しかし、 1 つのアプリケーション・サーバーで、異なるデータベースにそれぞれが接続し ている複数の異なる Forms アプリケーションが稼動している場合もあります。Oracle9i Forms 9
2 アップグレード・プロセス
Forms 6i から Oracle9i Forms に Forms モジュールをアップグレードする方法は 3 通りあります。
• Forms Builder を使用したアップグレード(インタラクティブ) • Forms Compiler を使用したアップグレード(バッチ)
• JDAPI を使用したアップグレード(プログラム/バッチ)
さらに、Oracle9i Forms Migration Assistant を使用して廃止された、あるいは Oracle9i Forms で変更された機能を検索するオプション方法もあります。
Forms アプリケーションの移行方法の詳細は、製品に添付されているドキュメン ト CD またはOTN1でダウンロードできる、Oracle9i Forms アプリケーションの Forms6i からの移行のドキュメントを参照してください。
2.1 Forms Builder を使用したアップグレード(インタラクティブ)
これは最も簡単ですが、最も時間のかかる方法です。各 FMB、PLL、および MMB モジュールに対して次の手順を行います。 • Forms Builder 内のモジュールを開きます。 • モジュールをコンパイルします。 • モジュールを保存します。 この方法のメリットは、モジュールをコンパイルしたときに発生するアップグ レード・エラーに対するフィードバックが、すぐに得られる点にあります。デメ リットは、多数のモジュールが存在する場合、各モジュールに対して処理を行う 手間がかかることです。2.2 および 2.3 項に、バッチ・プロセスを使用したアップ グレード方法を示します。2.2 Forms Compiler を使用したアップグレード(バッチ)
バッチ・モードで Form モジュールをアップグレードするには、 <OracleHome>¥bin¥ifcmp90.exeを使用します。各 Forms モジュールでifcmp90.exeが実行されるスクリプト(Windows の DOS バッチ・スクリプトや
Unix の Shell スクリプトなど)は、容易に作成できます。付録 C に Windows 用の バッチ・コンパイルのスクリプト例を示します。
デフォルトでは、ifcmp90.exeはランタイム・ファイルのみ作成し、たとえば
FMB の FMX ファイルなどのソースは変更されません。upgrade=yesを
ifcmp90.exeのパラメータとして指定することによって、ソース・ファイルも
Oracle9i Forms にアップグレードされます。これは、Forms Builder 内で FMB を開 き、コンパイルし、保存する作業にあたります。モジュールにアップグレード・ エラーが発生した場合は、モジュールと同じベース名を持つ ERR ファイルが ifcmp90.exeによって作成され、すべてのエラーがリストされます。 この方法のデメリットは、問題を解消するために ERR ファイルを確認しなければ ならないことです。(Migration Assistant を以前に実行した場合を除く。2.4 項を参 照)。 1 http://otn.oracle.com/ (英語) http://otn.oracle.co.jp/ (日本語)
Oracle9i Forms 10
2.3 Forms JDAPI を使用したアップグレード(プログラム/バッチ)
Forms Java Development API(JDAPI)を使用して Java プログラムを記述し、Forms アプリケーションを移行することも可能です。この方法は Forms Builder のすべて の機能にプログラム・インタフェースを提供します。モジュールを開きコンパイ ルして保存する、Java プログラムを作成できます。またオプションとして、通常 Builder で手動で行うアクションを、プログラムによるモジュール操作で行うこと ができます。このオプションを使用するには、Java についての知識があり、JDAPIに習熟している必要があります。JDAPI についてのドキュメントは、OTN の Forms
のサイト2にあります。
2.4 Migration Assistant の使用(オプション)
Oracle9i Forms Migration Assistant は、Forms 6i から移行するために使用できるオプ ションのツールです。いずれの Forms モジュールでインタラクティブ・モードで もバッチ・モードでも実行でき、変更が必要な、または廃止されたコードについ て修正または通知を行います。 いずれかのモジュールが無効な場合にコンパイルを続行しようとすると通知が行 われるため、Migration Assistant はオプションとなっています。このツールは、事 前に変更を行う、または問題の可能性について警告するため便利です。
Migration Assistant は、OTN の Forms のセクションからダウンロードできるように なる予定です。廃止された機能については、OTN でダウンロード可能な『Oracle9i Forms 廃止される機能』ホワイト・ペーパーを参照してください。
2 http://otn.oracle.com/products/forms/content.html (英語)
Oracle9i Forms 11
3 Web 用の Forms の構築
この章では、クライアント/サーバー・アプリケーションの構築との比較しての、 Forms Web アプリケーションの開発における問題または変化について説明します。 各問題または機能は、次のいずれかに該当します。 • 異なる動作をする • 同じように動作するが、パフォーマンスに影響がある • Web 環境では動作しない • プラットフォーム固有である3.1 異なる動作をする機能
この項では、Web 環境でも存在し、動作するが、クライアント/サーバー環境とは 異なった動作をする Forms 機能について説明します。3.1.1
HOST
および
ORA_FFI
ビルトイン、ユーザー・イグジット、Java
Importer(
ORA_JAVA
)
Forms アプリケーションは、Forms が実行されているマシンの Forms 外部の機能に アクセスします。Web 環境では、Forms は中間層で実行されます。そのため、コ マンドはクライアント/サーバーの場合のクライアントではなく、中間層で実行さ れます。これは、通常の操作では問題はありませんが、その機能がクライアント で実行される必要がある場合には別の方法を使用する必要があります。 代替の方法は、目的によって異なります。PJC または JavaBeans を使用して、Java でコマンドを実行することもできます。Forms での PJC または JavaBeans の使用に ついては、付録 A に記載するドキュメントまたは例を参照してください。
3.1.2 ローカル(クライアント)ファイル・システムとの対話
3.1.1 項と同様に、ファイル・システムと対話するビルトインは、クライアントで はなく中間層で実行されます。 • READ_IMAGE_FILE • TEXT_IO • TOOL_RES クライアントでこれを行いたい場合、JavaBeans をクライアントで使用して、クラ イアント・ファイル・システムにアクセスできます。ただし、Java セキュリティ・ モデルでは、Java に署名がない限り、ローカル・ファイル・システムに Java Applet でアクセスできません。自分で作成した証明書を使用して Java に署名する、ある いは認証局から購入したものを使用します。 アプリケーションを内部で使用する場合は、自分または自社の信用で作成した証 明書を使用して、コードに署名する必要があります。システムを公開する場合に は、本当に誰のものであるか証明できる、正しく認証された証明書を使用する方 が望ましいでしょう。Oracle9i Forms 12
3.2 パフォーマンスに影響がある機能
この項では、クライアント・サーバー環境での動作と同様でありながら、他の影響 のある機能について説明します。3.2.1
SYNCHRONIZE
ビルトイン
SYNCHRONIZEビルトインを使用すると、クライアントからサーバーへのラウン ドトリップが発生します。多くの開発者はこのコマンドを使用しすぎるため、ネッ トワークの通信量が過多になることがあります。各SYNCHRONIZEを使用する場 合は、本当に必要であるかを判断してください。3.2.2 タイマー
Forms クライアントでは、タイマーの保持および異常終了した場合のサーバーへ の警告が行われます。この結果、クライアントからサーバーへのラウンドトリッ プが発生します。毎秒ごとに実行されるタイマーを使用している場合は、毎秒ご とにサーバーへメッセージが送信されます。また、同時ユーザーが同様のことを 行っているため、ネットワークの通信量が過多になる場合があります。3.2.3 タブ付きキャンバス
フォームにタブ付きのキャンバスがある場合は、すべてのタブのすべての項目の 情報がクライアントにダウンロードされます。このため、特にタブ付きキャンバ スに多くの項目があり、ネットワークの速度が遅い場合、初期ダウンロードに時 間がかかることがあります。 タブ付きキャンバスの初期表示時には、1 つのタブのみが表示されます。開発者 によっては、ユーザーが実際にナビゲートするまで非表示タブの項目のダウン ロードを遅延させればいいと考えることがありますが、それでは起動時間は早く なりますが、ユーザーが新規のタブにナビゲートしたとき、項目がダウンロード されるまで待つ必要があるため、結果として遅くなります。 表示されないタブ付きキャンバスの項目の、遅延ダウンロードを実装したい場合 は、スタック・キャンバスを使用します。各タブに対してスタック・キャンバス を作成し、非表示であることを確認します(「Visible」を「No」に設定します)。 各タブの項目を該当するスタック・キャンバスに置きます。 WHEN-TAB-PAGE-CHANGEDトリガー内で、該当するスタック・キャンバスの項 目に対してGO_ITEMを行うか、SHOW_VIEWを使用して明示的にキャンバスを表 示させます。 アプリケーションの動作によっては、最初のタブの項目を表示させるために最初 のスタック・キャンバスを明示的に表示させる必要がある場合もあります。 この方法を使用すると、スタック・キャンバスが最初に表示されたときのみ、項 目がクライアントへダウンロードされます。3.3 Web 環境では機能しない機能
この項で説明する機能は、Web 環境では使用できません。廃止された機能全体にOracle9i Forms 13 ついては、『Oracle9i Forms 廃止された機能』ホワイト・ペーパーを参照してく ださい。
3.3.1 マウス・イベント
次のマウス・イベントは、発生するネットワークの通信量の問題で、Web での Forms では有効ではありません。 WHEN-MOUSE-MOVE WHEN-MOUSE-ENTER WHEN-MOUSE-LEAVE その他のマウス・イベントは通常通り機能します。3.3.2 オペレーティング・システム固有の形式のアイコン
ブラウザ内のイメージは、JPG や GIF 形式です。Web 上の Forms アプリケーショ ンで使用する、アイコン・ボタンなどのアイコンも同様です。Forms クライアン ト・サーバーの実行環境では、アイコンは Windows の場合は ICO 形式であり、 Unix では XPM 形式です。そのため、Web 上の Forms でクライアント/サーバーForms アプリケーションのアイコンを使用するには、JPG または GIF 形式に変換する必 要があります。
Oracle9i Forms Builder では、レイアウト・エディタでアイコンを表示するために、 ICO/XPM 形式を使用しています。今後のパッチ・セットでは、Builder 内でも JPG および GIF 形式の表示が可能になる予定です。しかし、現時点ではアイコンに対 して 2 種類のファイルが必要です。Builder 内で表示させる場合には、ICO/XPM 形 式を、実行時には JPG また GIF 形式を使用します。 Forms Builder では常に拡張子なしでアイコンを指定するため、開発者は拡張子を つけずに、ただアイコン名を指定しさえすればよく、Forms は適切なファイルを ロードします。
設計時には Builder では、環境変数UI_ICONで指定されたパス内の ICO/XPM ファ
イルを検索します。(Windows プラットフォームでは通常 Windows レジストリに あります)。
Web 上での Forms の実行時には、Forms は registry.dat ファイルの変数によって指 定されたパスを検索します。詳細は、第 4 章で説明します。 ICO/XPM ファイルは、JPG および GIF ファイルとは別のディレクトリに置くこと も、同じディレクトリに置くことも可能です。ディレクトリに対して推奨も規則 もありません。 構築時のUI_ICON変数が、実行時に registry.dat ファイル内に指定されたものと は異なるパスである場合もあります。
3.3.3 VBX コントロール
VBX 項目は、16 ビット・ウィンドウのみに適用されます。また、これは廃止され たテクノロジであるため、Oracle9i Forms ではサポートされていません。Oracle9i Forms 14
3.3.4 ACTIVEX(OCX)コントロール
ActiveX コントロール(または OCX)コントロールは、Windows プラットフォー ムのみで適用されます。Oracle では、Web で ActiveX をサポートする予定はあり ません。かわりに同様の組み込み技術である JavaBeans が使用できます。 一般的な ActiveX コントロールと同じ機能を提供する、多くの JavaBeans が存在し ています(例: プログレス・バー)。自分で作成した ActiveX コントロールの機能 を置き換えるには、自分で JavaBeans を記述する必要がある場合もあります。
3.3.5 OLE コンテナ
Oracle では、Web で OLE コンテナをサポートする予定はありません。クライアン トで他のアプリケーションと対話するために OLE は使用できません(例: クライ アントの Forms に Excel スプレッドシートを埋め込むなど)。しかし、プログラ ムによる OLE との相互作用は、中間層の外部 OLE サーバーでサポートされます (Windows プラットフォームのみ)。詳細は、3.4.4 項を参照してください。
3.3.6 サウンド項目
サウンド項目は、クライアント/サーバーの配置でのみ機能し、Oracle9i Forms で はサポートされません。3.3.7 イメージ・コントロール・パレット
イメージ項目の Show Palette プロパティを使用して表示できるコントロール・パ ネルは、Web で配置された場合には表示されません。3.3.8
GET_FILE_NAME
ビルトイン
この機能は、クライアント層で JavaBean を使用して置き換えなければ使用できま せん。3.4 プラットフォーム固有の機能
Web 上での Forms では、1 つのプラットフォームで開発され、複数の異なるプラッ トフォームにデプロイすることが多く行われます。また、実行時に中間層は 1 つ のプラットフォームにあり、クライアントでは複数の異なるプラットフォームが 使用される場合もあります。プラットフォーム固有の留意事項には注意する必要 があります。3.4.1
HOST
ビルトイン
HOST ビルトインは、プラットフォーム固有のコマンドを実行します。たとえば 次のコマンドは、Windows プラットフォームに中間層がある場合のみ機能します。 BEGIN host('dir > dirlist.txt'); END; これは Unix では正常に実行されません。代わりに Unix でディレクトリ・リスト に対して使用するlsコマンドを用いる必要があります。Oracle9i Forms 15
3.4.2 大/小文字の区別
また、開発者は、大/子文字の区別に注意する必要があります。Unix には大/子文 字の区別がありますが、Windows にはありません。たとえば、Windows で開発を 行い、ライブラリを添付し Unix の中間層に配置する際、両方のプラットフォーム でファイル名に同じように大/子文字を使用しなかった場合、ライブラリを見つけ ることができなくなります。3.4.3 フォント
Forms アプリケーションは、Java Applet 内でレンダリングされるため、Java のフォ ントのみがサポートされています。したがってアプリケーションを開発するとき には、サポートされているフォントを使用する必要があります。Forms では次の フォントが使用されています。 MonoSpaced Dialog DialogInput Serif SansSerif
Forms で使用されるフォントは、REGISTRY.DAT ファイル内の Java フォントに マッピングされています。
使用しているフォントが Forms で認識されないフォントである場合は、デフォル ト指定の Java フォントを指定します。
3.4.4 OLE コンテナ
プログラムによる OLE との相互作用は、中間層の外部 OLE サーバーでサポート されます(Windows プラットフォームのみ)。Forms 内で OLE ビルトインを使用 して、中間層で実行される外部のアクティブな OLE サーバーをコールすることが 可能です。
Oracle9i Forms 16
4 Forms Services の構成および配置
Oracle9iAS は、Forms Services を標準で使用出来るよう、あらかじめインストール 時に自動的に構成されています。構成作業が必要なのは使用する実アプリケー ションのみです。
クライアント/サーバー・ランタイムでの Forms の構成は、Web 上での Forms の構 成とは異なります。クライアント/サーバーの場合、適切な環境変数のみを設定(ま たは Windows プラットフォームの Windows レジストリを使用)する必要がありま す。Web 上の Forms では、Oracle9i Application Server にインストールされた Forms を集中的に管理します。
Web での Forms Services のランタイム配置を構成するためには、3 つのファイルが 使用されます。これらファイルは、サーバーに集中的に存在しているため、各マ シンで構成作業が必要になるクライアント/サーバーとは異なり、1 箇所でのみ構 成作業を行えば結構です。 • <OracleHome>/forms90/server/formsweb.cfg • <OracleHome>/forms90/server/default.env • <OracleHome>/forms90/java/oracle/forms/registry/Registry.dat 名前も変更できますが、上記がデフォルトです。これら 3 つのファイルの組合せ によって、1 回のインストールで複数の異なるランタイム環境が使用可能になり ます。 この章はあくまでガイドです。クライアント/サーバーは熟知しているが、Web 上 での Forms の構成および配置の開始方法が分からないユーザーを対象としていま す。ファイルの詳細は、各ファイルにあるコメントでも知ることができます。詳 細は、Forms のドキュメントを参照してください。
4.1 formsweb.cfg
Oracle Forms クライアント/サーバー・ランタイムでは、Forms アプリケーション を起動する際にコマンドラインで複数のオプションを指定できます。Web 上の Oracle Forms では、formsweb.cfgファイル内でランタイム・パラメータを指定
できます。 ファイルは、各 Forms アプリケーションの設定を制御します。デフォルト設定を オーバーライドするためのデフォルト・セクションおよび各アプリケーションの オプション・セクションがあります。formsweb.cfgファイル内の、一部のエン トリの断片を次に示します。 userid= form=test.fmx background= width=640 height=480 [summit] userid=summit/summit@forms1-pc form=customers background=summit.jpg
Oracle9i Forms 17 width=994 height=582 最初の設定はデフォルトの設定です。オーバーライドされて指定されない限り、 すべての Forms アプリケーションで使用されます。 [summit]は、アプリケーション固有の設定を表し、デフォルトをオーバーライ ドします。この場合は Summit アプリケーションです。たとえばデフォルトでは、 フォームにはバックグラウンドがありません。Summit アプリケーションが実行さ れた場合、バックグラウンドはイメージsummit.jpgとなります。 (ここでの background は、Forms 自体のバックグラウンド・キャンバスではなく、 Forms Client Java Applet 内のバックグラウンドを指します。またwidthおよび
heightパラメータは Java Applet の幅および高さを表し、Forms ウィンドウの幅
および高さではありません。 Forms アプリケーションを実行するときに、config パラメータでこのファイルから 使用するセクションを指定できます。例: http://myserver.com/forms90/f90servlet?config=summit 4.4 項、「Forms の Web への配置」に詳細を説明します。 formsweb.cfg内のアプリケーション・セクション([summit])にアプリケー ション(Summit)と同じ名前を付けることは必ずしも必要ではありませんが、同 じ名前を付けると便利な場合もあります。 たとえば、複数のアプリケーションで同じアプリケーション・セクションを使用 する場合などです。
4.2 default.env
環境変数の指定を行います。クライアント/サーバーでは、Windows プラット フォームの Windows レジストリで環境変数を指定し、Unix ではコマンドラインで 指定しました。 設定を行う一般的な変数は次のとおりです。 • ORACLE_HOME • FORMS90_PATH • CLASSPATH(Java 使用の場合) デフォルトでは、ユーザーが Forms アプリケーションを起動する度に default.envファイルが指定されます。しかし、envFile設定を使用して、独 自の ENV ファイルを各アプリケーションで使用することも可能です。 userid= form=test.fmx background= width=640 height=480 envFile=default.env [summit]Oracle9i Forms 18 userid=summit/summit@forms1-pc form=customers background=summit.jpg width=994 height=582 envFile=summit.env
4.3 Registry.dat
このファイルでは、実行時の Forms 内のアイコンを制御するための設定を指定し ます。(また、実行時のフォントも制御します。詳細は 15 ページの 3.4.3 項を参 照してください)。クライアント/サーバーのUI_ICON環境変数に該当します。 Forms でdefault.icons.iconpath設定を持つアイコンを検索する場所を指定 します。 default.icons.iconpath=C:¥MyApp¥icons;C:¥MyOtherApp¥icons serverApp設定を使用して、独自のレジストリ・ファイルを各アプリケーション で使用することも可能です。 userid= form=test.fmx background= width=640 height=480 envFile=default.env [summit] userid=summit/summit@forms1-pc form=customers background=summit.jpg width=994 height=582 envFile=summit.env serverApp=/summitapp/summit_registry ServerAppは、URL を使用して拡張子なしでレジストリ・ファイルを指定します。この例では相対 URL が使用されており、/summitapp/は Web サーバー上の
仮想ディレクトリとして定義されています。
4.4 Forms の Web への配置
Forms モジュールをアップグレードし、Forms Services を構成したら、アプリケー ションを実行します。実行するには、アプリケーションの URL をブラウザに入力 します。URL は、次のとおりです。
http://myserver.com/forms90/f90servlet?config=summit
Oracle9i Application Server は、これらの要求を Forms サーブレットにルーティング するよう構成されています。「config=summit」は、Forms サーブレットが
formsweb.cfg内の[summit]セクションを検索するよう指示するパラメータで
Oracle9i Forms 19
用するかなどが識別されます。
configパラメータはオプションです。省略された場合、Forms Services では、
formsweb.cfgファイルのデフォルト設定のパラメータが使用されます。たとえ ば 4.3 項の例に示すように、configパラメータが存在しない場合、フォーム test.fmxが実行されます。 また URL のformsweb.cfgの多くの設定もオーバーライドできます。 たとえば、次の URL が有効です。 • (http://myserver.com/forms90/f90servlet?form=myform.fmx デフォルト設定が使用されますが、モジュールはデフォルトではなくmyform.fmxが実行されます。 • (http://myserver.com/forms90/f90servlet?config=summit&form=summitTest.fmx
[summit]セクションで指定された設定が使用されますが、form のみ、別のsummitTest.fmxというフォーム
が使用されます。 • (http://myserver.com/forms90/f90servlet?config=summit&form=summitTest.fmx&usreid=scott/tiger@test 前述の例と同じですが、異なるデータベースに接続されます。 formsweb.cfgファイルには、URL でユーザーによってオーバーライドできるパ ラメータを記すコメントがあります。その他のパラメータは管理者によってのみ 設定可能であり、URL 上ではオーバーライドできません。
useridがformsweb.cfgファイルまたは URL で指定されていない場合、ユー
Oracle9i Forms 20
5 Web の活用
Forms アプリケーションを Web にデプロイすることによって、クライアント/サー バーでは提供されない機能が活用できます。 • 拡張可能 Java クライアント • シングル・サインオン • Web ページの起動5.1 拡張可能 Java クライアント
Java を使用して Forms Client の機能を 2 通りの方法で拡張できます。 • Pluggable Java コンポーネント(PJC)
• JavaBeans
5.1.1 Pluggable Java コンポーネント(PJC)
Forms Client は Java Applet です。Java の強力な継承および拡張性モデルを活用す ることによって、Forms Client の機能を拡張できます。Oracle は、開発者による動 作の変更を可能にするために、Forms Client に特定のフックを公開しました。 Forms 内の多くの GUI 要素の機能は、Java を使用して変更できます。変更例を次 に示します。 • ボタンをロールオーバー・ボタンに変更できます。Web ページの多くがそ うであるように、マウスでボタンの上に移動したときに、ボタンのイメー ジが変化します。 この変更は、マウスでボタンの上に移動したことを認識し、ボタンのイ メージを変化させる Java を記述することによって行われます。これらは すべてクライアント側で行われ、最初にイメージをダウンロードするとき 以外は、中間層へのラウンドトリップは発生しません。 • キー・ストロークを監視するテキスト・フィールドの確認を行い、それに 反応するよう変更できます。Forms ではシステム固有の機能として即時に 確認が行われますが、これはユーザーがフィールドから外にナビゲートし た場合のみ行われます。しかし、Java ではユーザー・タイプとしてキー・ ストローク毎の確認も可能です。 Java はクライアント上で実行されるため、サーバーへのラウンドトリップ はありません。 • Forms にネイティブで提供されているものより高度なテキスト項目の フィルタを使用することが可能です。前述の例と同様に、ユーザーのタイ ピングに対して即座に反応します。たとえば、ユーザーのタイピングに対 してフィルタリングを行い、スペル・チェックや修正を行うことが可能で す。 これらのサンプルや、その他の機能のサンプルを、OTN(http://otn.oracle.com/ (英 語))からダウンロードできます。詳細は、付録 A を参照してください。
Oracle9i Forms 21
5.1.2 JavaBeans
JavaBeans を容易に使用できるように、Oracle9i Forms では JavaBeans に対するサ ポートが改善されました。
JavaBeans は、特定のコーディング仕様に準拠する Java クラスです。これらは、 通常特定の機能を提供するためのコンポーネントであり、アプリケーションを構 築したりアプリケーションに埋め込むために組み合わせることができます。コン セプトは Windows の ActiveX(OCX)コントロールに似ています。
Forms に機能を追加するために Forms Client に JavaBeans を含めることができます。 性質的に、プログレス・バーなどの視覚効果によく使用されますが、必ずしもそ うである必要はありません。次に例を示します。 • カレンダ JavaBeans を使用して、クライアントでカレンダを表示させます。 Forms を使用して実装するカレンダとは異なり、JavaBeans のカレンダは、 クライアント上で実行されるので、サーバーへのラウンドトリップが発生 しません。 • クライアントで秒刻みの時計を表示させます。 • マシン名、IP アドレスおよびローカル・オペレーティング・システム・ ユーザー名などのクライアント情報を取得します。 これらのサンプルやその他機能のサンプルを、OTN(http://otn.oracle.com/ (英語))か らダウンロードできます。詳細は、付録 A を参照してください。
5.2 シングル・サインオン
Forms Services は、Oracle9iAS の Single Sign-On(SSO)機能と統合されます。SSO を使用することによって、ユーザーが使用するユーザー名およびパスワードは 1 つのみになります。また、SSO をサポートするアプリケーションのいずれかに 1 度ログオンするのみで、再度ログオンを行わずに SSO をサポートする他のアプリ ケーションを実行できます。
既存の Forms アプリケーションでは、変更を行わずに SSO を活用できます。SSO を使用可能にするための Forms の構成は、Forms モジュール外で行われるため、 どのアプリケーションに対しても透過的に使用できます。
Single Sign-On の参考資料については、付録 A を参照してください。
5.3 Web ページの起動
WEB.SHOW_DOCUMENTビルトインを使用して、Forms 内からブラウザを起動し、
任意の Web ページを表示できます。URL は動的に構築できるため、Forms 内のデー タまたはユーザーの行動に従って Web ページを起動できます。 例: • アプリケーションに製品をリストする複数行にわたるブロックが存在す る場合、各行の横にボタンを配置し、各製品の情報を含む Web ページを 起動するようにできます。 • 画面のカーソルの位置に従って特定の Web ページが起動されるインタラ クティブなヘルプを起動することができます。
Oracle9i Forms 22 • Java をクライアントで使用し、ユーザーがクリックするとブラウザが起動 するハイパー・テキストを Forms アプリケーション内に作成することがで きます。ブラウザと同様、マウスによってリンクの上に移動すると、ハイ パーリンクのハンド・アイコンが表示されるようにすることも可能です。 OTN には、ダウンロード可能なデモンストレーションがあります。詳細 は、付録 A を参照してください。 利用できるのは、HTTP URL だけではありません。ブラウザを起動して、FTP や Java スクリプトなどのブラウザがサポートするいずれの URL も使用できます。
6 結論
このホワイト・ペーパーで述べられているように、Oracle Forms アプリケーショ ンをクライアント/サーバーから Web へ移行するプロセスは容易なものです。多く の場合、移行作業というより新規の配置オプションというべきでしょう。ビジネ ス・ロジックおよび機能は、完全に保たれ、これによってアプリケーションの Web 配置する事の多くの利点を活用できます。Oracle9i Forms 23
付録 A - 参考資料
この付録には、このドキュメント内で参照された文書または情報を記載します。 次のリファレンスおよびリソースは、Oracle Technology Network (OTN):
http://otn.oracle.comにあります。このうちいくつかは日本語でも
http://otn.oracle.co.jp/ にて公開されています。
• 『Migration Book』は、Oracle9iAS ドキュメント・セット3にあります。
• Oracle9iAS ドキュメント・セットには、Single Sign-On についての情報が含
まれています。OTN には、Oracle Internet Directory4の情報についてのセク
ションがあります。
OTN の Forms のサイト5には、次の項目があります。
• ホワイト・ペーパー『Customer Testimonial: Retek - A Benchmark Comparison of Client/Server and Web Deployment』
• 『Forms Best Practices Guide』
• 10 ページの 2.4 項に説明する Oracle9i Forms Migration Assistant
• Oracle9i Forms で廃止された機能の詳細は、ホワイト・ペーパー『Oracle9i Forms Feature Obsolescence』を参照してください。
• ホワイト・ペーパー『Oracle9i Forms Architecture』
• ホワイト・ペーパー『Forms and Desktop Integration on the Web』には、PJC や JavaBeans など、Forms Client およびデスクトップ間の統合点についての 詳細情報が記載されています。概要の一部は第 3 章に記載されています。 • OTN のサンプル・コードのサイト6には、数多くの例が挙げられています。 トピックは、交換可能 Java コンポーネント(PJC)や JavaBeans の例など 多数です。 • JDAPI ドキュメント 3 http://otn.oracle.com/docs/products/ias/content.html 4 http://otn.oracle.com/products/oid/content.html 5 http://otn.oracle.com/products/forms/content.html 6 http://otn.oracle.com/sample_code/products/forms/content.html
Oracle9i Forms 24
付録 B - Forms セッションの構造
クライアント/サーバーから移行する場合、Forms アプリケーションの使用を容易 にするために、インターネットまたはイントラネットでの動作についての理解が 必要です。 図 3 に、Forms アプリケーションの配置のアーキテクチャを示します。クライア ント層、データベース層および 2 つの個別のマシンから構成される HTTP サーバー および Forms Services で構成されるアプリケーション層の 3 層構造を持ちます。 (中間層は、必ずしも単一のマシンであるとは限りません)。 図 3 に示すアーキテクチャは、ほんの 1 例です。他の組合せとしては、Forms Services および HTTP サーバーが同一のマシンである、または Forms Services が搭載された 複数のマシンがあり、それらがロード・バランスされる場合などもあります。い ずれの場合にせよ、コンポーネント(HTTP Server、サーブレット・エンジン、Forms サーブレットおよび Forms ランタイム・プロセス)はすべて同じであり、存在し ている必要があります。違いは、個数およびどのマシンで実行されるかにありま す。 図 3 ではユーザーが中間層と同じイントラネット・ネットワーク上に存在する、 またはファイアウォールおよびプロキシを介してインターネットで Forms にアク セスしています。Forms では、クライアントの中間層へのアクセス方法は問いま せん。 図 3: Oracle9i Forms の配置アーキテクチャOracle9i Forms 25 大まかに説明すると、Web で実行されると次のようになります(これらの手順を 参照しながら図 3 も参照してください)。
1.
ユーザーは、ブラウザを起動し、どの URL の場合でも同じように、リン クをクリックする、お気に入りリストから選択する、手動で入力するなど して Forms アプリケーションの公開 URL へナビゲートします。2.
アプリケーション・サーバー(中間層)は、Java Applet が含まれた HTML ページを返します。これが Forms Client です。大きさにかかわらずすべて の Forms で、動作する Applet は 1 つのみです。また、Applet は、クライアントにキャッシュされるため、ダウンロードは初回の 1 回のみ行われます。
3.
Forms Client が起動し、アプリケーション・サーバーを介してサーバーに 接続されます。すべての Forms の通信は、その他の Web アプリケーショ ンと同様にアプリケーション・サーバーを介して行われます。Forms は、 インターネットでプロキシおよびファイアウォールを介して動作します。4.
サーバーは、ユーザーがアプリケーションを起動したと見なし、「サーブ レット・セッション」を作成し、Forms ランタイム・プロセスを開始しま す。5.
Forms ランタイム・プロセスは、アプリケーションを実際に実行するエン ジンです。各ユーザーには個別の Forms ランタイム・プロセスが存在し、 セッションが終了すると停止します。 Forms リスナー・サーブレットは、クライアントからの各リクエストが正 しいランタイム・プロセスにルーティングされることを確認し、ランタイ ム・プロセスからのレスポンスが正しいクライアントに送信されることを 確認します。6.
すべての Forms のロジックは、サーバーの Forms ランタイム・プロセスに よって実行されます。Forms ランタイム・プロセスによって適切な FMX ファイルが開かれ、データベースへの接続が行われ、フォームが起動する ために必要な作業がすべて行われます。また、カーソルが最初のフィール ドに配置され、クライアントへ通知されます。クライアントに送信される 情報は、画面のレイアウトおよびカーソルの位置です。7.
UI 情報のみがクライアントへ送信されます。これは Web での Forms の動 作の重要なポイントです。ロジックはクライアントでは実行されません。 クライアントでは、カーソルが最初のフィールドに配置された画面が表示 され、ユーザーのフォームとの対話が可能になります。8.
ユーザーが値を入力し、次のフィールドへナビゲートしたとします。クラ イアントは、その値およびユーザーの行動についてのメッセージをサー バーへ送信します。 サーバーはこれを処理し、次に表示されるものについてのレスポンスを送 信します。 たとえば、正常に実行されなかった WHEN-VALIDATE-ITEM トリガーが 最初のフィールドに存在する場合、カーソルに再びリダイレクトします。 Forms ランタイム・プロセスはこの情報をリレーし、メッセージをクライOracle9i Forms 26 アントに送信します。クライアントでは Forms のロジックは一切実行され ないことに注意してください。画面の適切な箇所の更新のみが行われ、指 示通りにカーソルがフィールドに配置されます。これによって、ユーザー は作業を続行できます。 フィールド間のナビゲートやリストからの項目の選択など、クライアントの主要 なアクションによって、Forms ランタイム・プロセスが処理するサーバーへのラ ウンドトリップが発生します。
Forms サーブレットおよび Forms リスナー・サーブレット
名前が類似しているため、Forms によって提供されている 2 つのサーブレットを 混同しがちですが、異なるサーブレットであることに注意してください。 Forms サーブレットは、ユーザーが Forms アプリケーションを起動した最初の接 続のみに使用されます。Forms Client である Applet を含む HTML ファイルをクラ イアントに返します。一度 Java Applet が起動しセッションが作成されると、すべての通信は Forms リス ナー・サーブレットを介して行われます。
サーブレットとは
サーブレットとは、Java コードのモジュールであり、クライアントのリクエスト にレスポンスするためにアプリケーション・サーバー内で実行されます。移植性 の高い Java 言語で記述され、標準のフレームワークに準拠しているため、サーバー およびオペレーティング・システムとは独立した高度なサーバー拡張機能を作成 する機能を提供します。Java スクリプトが HTML ページに機能を追加するように、 サーブレットもアプリケーションに機能を追加します。 HTTP サーブレットの使用例は、次のとおりです。 • HTML 形式で提出されたデータを処理および格納します。 • クライアントへデータベースの問合せ結果を返すなどの動的コンテンツ を提供します。 たとえば、多数の同時アクセス顧客のショッピング・カートを管理し、正しい顧 客にリクエストをマッピングするオンライン・ショッピング・カート・システム など、ステートレス HTTP 上の状態に関する情報を管理します。Oracle9i Forms 27
付録 C - バッチ・コンパイル
次に、Windows 用のバッチ・コンパイルのスクリプト例を示します。Forms 6i モ ジュールが存在する、トップレベル・ディレクトリにこのテキストをコピーして BAT ファイルを作成します。 @echo off if "%1" == "" goto ERROR REM Formsfor /R %%F in (*.fmb) do start /w ifcmp90.exe userid=%1 batch=y module=%%F
REM Menus
for /R %%F in (*.mmb) do start /w ifcmp90.exe userid=%1 batch=y module=%%F module_type=menu
REM Libraries
for /R %%F in (*.mmb) do start /w ifcmp90.exe userid=%1 batch=y module=%%F module_type=library
goto exit
:ERROR
echo Userid/password must be supplied pause
Oracle9i Forms クライアント/サーバーから Web への移行 2002 年 4 月
著者: Robin Zimmermann
共同執筆者: Grant Ronald、Buncan Mills
Oracle Corporation 発行の「Oracle9i Forms Migrating Client/Server To the Web」の翻訳版です。
この文書はあくまでも参考資料であり、掲載されている情報は予告なしに変更されることがあります。 万一、誤植などにお気づきの場合は、オラクル社までお知らせください。オラクル社は本書の内容に関していかなる保証もしません。また、本書の内容に 関連したいかなる損害についても責任を負いかねます。 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 © 2000 Oracle Corporation All rights reserved.