Oracle Formsによる外部イベントのコールについて

以前のリリースのOracle Formsでは、Forms外部の限られた数のイベント型と対話するためにOLEおよびDDEを実装する必要がありました。その後のバージョンのFormsで、外部アプリケーション・ソースとのインタフェースを実現するためにweb.show_documentおよびJavaの統合が提供されました。

ただし、Formsが表示されるWebページへのコールに関しては、簡単なソリューションがありませんでした。また、HTMLフォームから取得した値を更新する場合などに、WebページからFormsをコールすることもできませんでした。

JavaScriptの統合により、JavaScriptイベントからのFormsのコールやFormsによるJavaScriptイベントの実行が可能になっています。次の図は、JavaScriptとOracle Formsが連携する仕組みを示しています。図の左側で、FormsアプレットがホストされているページでJavaScriptが実行されます。Oracle Formsには、ネイティブのビルトインを使用してJavaScript機能をコールできる機能が加わりました。また、JavaScript機能は、提供されている新しいAPIを使用してOracle Formsトリガーを起動できるようになりました。

図-23 Oracle FormsとJavaScript

図-23の説明が続きます
「図-23 Oracle FormsとJavaScript」の説明

web組込みパッケージには、次の2つの新しいコールが提供されています。

  • web.javascript_eval_expr
  • web.javascript_eval_function

最初のコールweb.javascript_eval_exprは、式とターゲットの2つの引数を使用するプロシージャです。引数のデータ型はどちらもvarchar2です。この有効なJavaScript式は、Formsアプレットが埋め込まれているWebページで解釈されます。この式は、ターゲット・ページで定義されている関数のコール、またはターゲット・ページで実行できる有効なJavaScript式(たとえばdocument.bgColor='red'.)です。この式は、ターゲット引数で指定されるページまたはフレームのコンテキストで、LiveConnectのJSObject.eval()メソッドを使用して実行されます。ターゲット引数がNullの場合は、Formsアプレットが埋め込まれているページまたはフレームで式が実行されます。

2番目のコールweb.javascript_eval_functionは関数であり、varchar2値を返します。web.javascript_eval_exprweb.javascript_eval_functionの機能は、javascript_eval_exprがFormsクライアントからForms Servicesに戻り値を送信しない点を除いて同じです。アプリケーションが戻り値を必要としない場合は、web.javascript_eval_exprを使用してください。FormsクライアントからForms Servicesに戻り値を渡す場合に必要となる余分なネットワーク送信を省くことができます。

IDがoutside_field_idであるHTMLテキスト項目の値を、insideというFormsフィールドの値に設定するには、次のPL/SQLコードを記述します。

web.javascript_eval_expr('
document.getElementById("outside_field_id").value='
||:inside
);

JavaScriptでは一重引用符と二重引用符を自由に使用できますが、PL/SQL文字列には一重引用符を使用する必要があるので注意してください。式の内部で二重引用符を使用する場合は、エスケープ・シーケンスを使用する必要はありません。Webページ内で関数を記述することもできます。

<SCRIPT>
    function set_field(field_id, myvalue){
        document.getElementById(field_id).value=myvalue;
    };
</SCRIPT>

outsideフィールドの値を取得してinsideフィールドに割り当てるには、次のPL/SQLコードを記述します。

:inside:=web.javascript_eval_function('
     document.getElementById("outside_field_id").value
     ');

Oracle Formsの外部でイベントをコールする理由

JavaScript機能によって、FormsとHTMLベースのアプリケーション・テクノロジをWebブラウザで統合できます。たとえば、HTMLフロントエンドに基づく新しい機能を備えたページ上でFormsベースのアプリケーションを統合する必要がある場合に、JavaScript統合を使用できます。