Oracle Formsとサーバー・イベント
タイマーを除いて、Oracle Formsのイベントのほとんどは、ユーザーの操作介入により発生します。
11gより以前のバージョンのOracle Formsでは、フォームのグラフィカル・ユーザー・インタフェースにバインドできない場合に、外部イベントを簡単に受信できませんでした。開始していなかった外部イベントを処理するには、Formsクライアントでポーリングなどの手法を使用して、これらのイベントに応答するためのコードを記述する必要がありました。
Oracle Forms 11g以降およびOracle Databaseでは、データベース・キューを使用して、非同期イベントなど、外部イベントを処理できます。非同期のキューイング機能であるOracle Streamsアドバンスト・キューイング(AQ)は、メッセージを異なるプログラム間で交換できるようにします。AQ機能は、PL/SQLパッケージであるDBMS_AQ、DBMS_AQADM、DBMS_AQELMなどのインタフェースを使用して実装されます。アドバンスト・キューイングの詳細は、トランザクション・イベント・キューおよびアドバンスト・キューイング・ユーザーズ・ガイドを参照してください。
通常、イベントとデータベース・キューの統合に必要なステップは次のとおりです。
データベース
- キュー表の作成: アドバンスト・キューイングを設定するユーザーの管理権限とアクセス権限(AQ_ADMINISTRATOR_ROLE、AQ_USER_ROLE)を定義します。ペイロードのオブジェクト・タイプと、そのオブジェクト・タイプを使用するメッセージのペイロードを定義します。ペイロードを使用して、キュー表を定義します。
- キューの作成: キュー表のキューを定義します。キュー表には、同じペイロード・タイプを持つ複数のキューを保持できます。
- キューの開始: キューに対するエンキュー/デキューを有効化します。
- メッセージのエンキュー: DBMS_AQ.ENQUEUEプロシージャを使用して、キューにメッセージを記述します。
ノート:
Autonomous Databaseでは、Formsとアドバンスト・キューイングの統合はサポートされていません。Form Builder
- イベント・オブジェクトの作成: Form Builderのオブジェクト・ナビゲータで、「イベント」ノードに新しいイベントを作成します。
- キューへのイベント・オブジェクトのサブスクライブ: キューの名前は、「サブスクリプション名」プロパティに指定します。
- 必要な通知のコード化: Formsによって実行されるためにキューに入れられ、クライアントからのリクエストをサーバーが受信したときに実行されるイベント処理ファンクションを記述します。「イベント」ノードに接続されるイベント発生処理トリガーのトリガー・コードを記述します。
Forms Services
- フォームを実行して、サブスクリプションを登録します。
- イベント通知を受信したら、イベント発生処理トリガーを起動します。
以前のリリースのFormsでは、外部イベントを処理するには、カスタムのプログラムを作成する方法でのみ可能でした。これは一般的に、FormsのJava Beanサポート機能を使用してJavaで実現していました。Oracle Forms 11g以降、アドバンスト・キューイング(AQ)と対話的に処理できる手法(Java Messaging (JMS)など)からFormsにコールすることが可能です。
次の図に、アプリケーションと連携する各種コンポーネントの統合の向上を活用したイベントのフローを示します。図の左側に示されているOracle Formsは、Oracle DatabaseのAQ機能と双方向で通信します。図の中央に示されているOracle DatabaseのAQ機能は、Forms内部イベントをトリガーできる外部イベントとも双方向で通信します。図の右側に示されている外部イベントには、動的コンテンツを含むファイル、Webサービス、メール、JMS、データベース・コンテンツなどのテクノロジがあり、これらの外部イベントはBPELプロセスと対話し、BPELプロセスはAQと対話します。ただし、BPELは必ずしも必要ではありません。たとえば、JMSはBPELを経由しなくても、AQと直接対話できます。
ノート:
ウイルス対策ソフトウェアやセキュリティ・ソフトウェアなどのサード・パーティ・ツールが稼働していると、Oracle Formsではアドバンスト・キューイングが正しく機能しないことがあります。対策として、サード・パーティのセキュリティ・ツールをすべて停止します。図-24 Oracle Databaseのアドバンスト・キューイングによるOracle Formsの外部イベント処理

「図-24 Oracle Databaseのアドバンスト・キューイングによるOracle Formsの外部イベント処理」の説明