この付録では、変換処理でどのようにオブジェクトが生成されるか、また生成後に同じ機能を実装するもう1つの方法(必要な場合)を説明します。
この項の内容は次のとおりです。
このセクションでは、Oracle Formsの様々なコンポーネントについて説明し、これらをOracle Application Expressアプリケーション内の同様のオブジェクトへマップする方法または生成後に手動で実装する方法について説明します。
このセクションの構成は次のとおりです。
このセクションでは、Oracle Formsコンポーネントおよび対応するOracle Application Expressの生成機能または代替方法の概要について説明します。
アラート・メッセージは生成されません。アラート・メッセージをテキスト・メッセージとしてOracle Application Expressアプリケーションの「共有コンポーネント」に保存することができます。テキスト・メッセージは、PL/SQLパッケージ、プロシージャおよびファンクションからコールされる置換変数を使用して、翻訳可能なテキスト文字列を作成する際に使用できます。Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドの「共有コンポーネントでの作業」を参照してください。
単一ブロックをOracle Application Expressのリージョンにマッピングできます。FormsのXML
ファイルに指定されたブロック・タイプおよびデータ・ソース・タイプ(表またはビュー)に基づいて、いくつかのデフォルト・マッピングが定義されます。たとえばOracleのビューを基にしたレポート・ブロックは、Oracle Application Expressの対話モード・レポートにマップされます。表を基にしたフォーム・ブロックは、Oracle Application Expressの対話モード・レポートおよびフォームにマップされます。詳細は、「ブロックとページ・リージョンのマッピング」を参照してください。
Oracle Formsのキャンバスは、Graphical User Interface(GUI)が表示されるオブジェクトであり、フォームのバックグランドです。Oracle Application Expressでは、Application Expressエンジンによってテンプレートを使用してアプリケーションの各ページの外観が作成されます。テンプレートでは、ページ、ページ・コントロール、ページ・コンポーネントの表示方法を定義します。キャンバスは、Oracle Application Expressアプリケーションのページの生成時に無視されます。
Oracle Formsアプリケーションで使用される座標システムに応じて、座標は実際の単位(インチ、センチメートル、ピクセルなど)で示されます。座標の値は、生成されたアプリケーションに自動的には適用されません。Oracle Application Expressのアイテムの幅のある単位が、Oracle Formsアプリケーションの物理的な1ピクセルと一致しないことがあります。Oracle Formsでは、座標を指定することで、個々のフィールドに特定の配置が可能ですが、Oracle Application Expressでは、標準的なHTML表が使用されるため、すべてのアイテムは、HTML表内の他の要素および列に対して相対的に位置が決まります。
Oracle Formsのエディタには、標準的な編集機能(検索および置換、切り取り、コピーおよびテキスト・アイテムの貼付けなど)があります。選択したテキスト・アイテムについて、1つのエディタがOracle Application Expressの1つのHTMLエディタにマップされます。
値リスト(LOV)は、Oracle Application Expressの同等のLOVにマップされます。LOVをOracle Application Expressの変換に含めるように選択すると、関連付けられたレコード・グループが変換に含められます。詳細は、「値リストの実装」を参照してください。
Formsの変換プロセスの生成後のフェーズで、プログラム・ユニットをPL/SQLパッケージ、ページ・プロセス、計算または検証としてOracle Application Expressアプリケーションに組み込むことができます。詳細は、「ビジネス・ロジックの実装」を参照してください。
Oracle Formsのプロパティ・クラスは、プロパティ・リストと設定を含む、名前付きのオブジェクトです。プロパティ・クラスに基づくオブジェクトは、そのクラスのすべてのプロパティの設定を継承します。同様にOracle Application Expressのテーマは、アプリケーションのユーザー・インタフェースを定義するために使用されるテンプレートの名前付きコレクションです。Oracle Application Expressには、20のテーマを含むリポジトリがあり、独自にカスタマイズしたテーマを作成することもできます。プロパティ・クラスは、Oracle Application Expressアプリケーションの生成には使用されません。
Oracle FormsのLOV値は、レコード・グループから算出されます。レコード・グループを定義すると、SQL問合せに関連付けられます。Oracle Application ExpressでLOVを生成すると、関連付けられたレコード・グループを使用してそのLOVのSQL問合せが決まります。詳細は、「値リストの実装」を参照してください。
Oracle Formsトリガーとは、デフォルトの処理動作を強化するためにPL/SQLで記述されたイベント・ハンドラです。トリガー・ロジックは、生成後フェーズの計算、検証またはPL/SQLプロセスとしてOracle Application Expressアプリケーションに組み込むことができます。強化された問合せ生成の一環として、生成されたOracle Application ExpressアプリケーションにPOST-QUERY
ブロック・トリガー・ロジックを自動的に組み込むことができる場合もあります。詳細は、「ビジネス・ロジックの実装」を参照してください。
可視属性とは、Oracle Formsアプリケーションのインタフェースに表示されるフォーム・オブジェクトおよびメニュー・オブジェクトに対して設定可能なフォント、色、パターンのプロパティです。Oracle Application Expressとともにインストールされるデフォルトのカスケード・スタイル・シート(CSS)を使用するか、独自のCSSファイルをアップロードすると、Oracle Application Expressアプリケーションにスタイルを適用できます。詳細は、Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドの「カスタム・カスケード・スタイルシートの使用」を参照してください。
プロジェクトから生成されたOracle Application Expressアプリケーションは、すぐに使用できる標準アプリケーションの機能に準拠します。生成されたこれらのアプリケーションには、JavaScript、Advanced JavaScript、XML(AJAX)などの非標準機能は含まれていません。ユーザーとの対話を強化するためにJavaScriptおよびAJAXのような機能を含めるようにOracle Application Expressフレームワークを簡単に拡張することができます。ただし、このような機能強化は、生成後に手動で実装する必要があります。
レコードの挿入、更新または削除のための生成済フォームには、既存のレコードをロードするための自動行フェッチ処理と、Oracle Databaseの表に対する変更をコミットするための行の自動処理が含まれます。Formsには、必須列に対する生成済の検証、および数値または日付の列タイプも含まれます。
生成プロセスでは、Oracle表の主キーは、更新不可で、データベース・トリガーを使用してメンテナンスされ、最大2つのパートがあるとみなされます。
主キーが更新可能である場合は、生成済アプリケーションを生成後に変更する必要があります。主キーのアイテム属性を変更する必要があります。デフォルトでは、このような属性は生成されますが、非表示および保護として表示されます。レコードの挿入時に、主キーを自動的にフェッチするようにデータベース・トリガーが定義されていない場合は、レコードを挿入しようとするとアプリケーションが失敗します。このエラーを回避するには、データベース・トリガーを定義するか、または生成済アプリケーションを変更して、レコードが処理される前に主キー値を移入します。アプリケーションの主キー値を移入するには、アイテムのデフォルトを使用するか、計算を作成するか、またはプロセスを作成します。計算またはプロセスを作成する場合は、レコードの挿入時にのみ実行されるように(主キーのアイテムがNULL
の場合など)条件を含めることが重要です。
Oracle Application Expressでは、複数の部分キーのカスケード(子のキーが、親の主キーとして定義されており、その親キー内に各子のカウンタが含まれている)はサポートされていません。この場合は、主キーを移入する適切な方法で子表に個別の主キーを定義する必要があります。
Oracle FormをOracle Application Expressプロジェクトにロードすると、様々なブロックが分析され、生成方法が決められます。変換プロセスでは、ブロックのリレーション、表示されるレコード数および挿入または更新を許可するかどうかという情報が使用されます。Oracle FormsとOracle Application Expressには、生成される結果ページに直接影響する本質的な相違があります。
特定のマスター・ディテール関係を除き、各ブロックは、個別のOracle Application Expressページに生成されます。また、複数のブロックは、Oracle Application Express内の同じページの個別リージョンとして生成されないため、Oracle Formsに指定されたキャンバスは無視されます。次のセクションでは、Oracle Formsの様々なブロック・タイプおよびOracle Application Expressアプリケーションへのマップ方法を説明します。
Oracle Formsでは、データの問合せおよび戻されるレコードの更新の両方に単一のレコード・ブロックが使用されます。Oracle Application Expressでは、標準的な更新可能リージョンを問合せリージョンとしても使用することはできません。Oracle Formsのブロックが、挿入可能、更新可能として定義され、主キーを含む場合、生成マッピングでは、フォームを使用した対話モード・レポートが定義されます。対話モード・レポートでは、レコードを問い合せることができ、生成された「編集」リンクによって、個々の更新レコードまたは削除レコードへナビゲートできます。「レコードの作成」ボタンによってレコードを挿入することができます。
満たされていない条件があるときは、単一レコード・ブロックの対話モード・レポートのみが生成されます。そのため、次のいずれかの条件があると、対話モード・レポートのみが生成され、対応するフォームは生成されません。
表示されるレコード数が複数である
「挿入可能」
にfalseが設定されている
「更新可能」
にfalseが設定されている
基礎となる表に主キーが定義されていない
ブロックがビューに基づいている
対話モード・レポートでは、そのブロックのプロジェクト内に定義された、元の問合せ、強化された問合せ、カスタム問合せが使用されます。ただし、フォームは、基礎となる表のみが基になります。ラジオ・グループ、チェック・ボックス、日付ピッカー、エディタおよび値リストなどのアイテム属性は、可能な場合に生成されます。
Oracle Formsで定義された表形式フォームは、複数のレコード数が表示される場合、Oracle Application Expresssの表形式フォームとして生成されます。選択リストのようなアイテム属性の実装は、生成後に手動で実行する必要があります。Oracle Formsに指定されたデータベース以外のアイテムは、生成に含められている場合でも、Oracle Application Expressによって生成される表形式フォームには生成されません。データベース以外のアイテムを表形式フォームに実装するには、生成後に手動で実行する必要があります。詳細は、Oracle Application Expressアドバンスト・チュートリアルの「表形式フォームの作成方法」を参照してください。
現在、検証およびデータベース以外のアイテムの表形式フォームへの追加は、非宣言型であり、Oracle Application Express Advanced Workshopのコースで扱います。代替方法は、レポートおよびフォームを手動で作成し、生成後に表形式フォームを置き換えることです。この方法では、検証の追加やデータベースのソースがないアイテムの追加がはるかに容易になります。
Oracle Formsのマスター・ディテール・フォームは、ブロックのリレーションを使用して定義されます。Oracle Formsのマスター・ディテール・リレーションに対して生成されるものを決定するには、いくつかの追加条件を調べる必要があります。マスター・ブロックは、次のいずれかとして生成されます。
対話モード・レポートおよびマスター・ディテール・フォーム
対話モード・レポートおよびフォームのみ
対話モード・レポートのみ
ディテール・ブロックは、単一のレコード・ブロックまたは指定されたマッピングに基づく表形式フォームのいずれかとして、独立して生成されます。
対話モード・レポートおよびマスター・ディテール・フォームは、次の条件が満たされている場合にのみ生成されます。
マスター・ブロックおよびディテール・ブロックの両方は表に基づいている。ただし同じ表ではない。また、両方に主キーがある。
ディテール・ブロックは1つのみ存在する。
マスター・ブロックとディテール・ブロックとの間に有効な外部キー・リレーションシップがある。
ブロックのリレーションがOracle Formsファイルで適切に定義されている。
マスター・ディテール・フォームが生成されると、Oracle Application Expressにディテール・ページも作成されます。Oracle Application Expressアプリケーションを作成する前に、生成されるディテール・ページを確認するときに手動で削除したり、生成後に手動で削除することができます。
また、マスター・ブロックおよび単一のディテール・ブロックの両方が同じ表を基にしていて、その表に主キーがあるときは、ブロックごとに2つの対話モード・レポートおよびフォームが生成されます。生成された結果フォームの一方を手動で変更して機能を単一のフォームに統合した後、もう1つの対話モード・レポートおよびフォームを削除することをお薦めします。ただし、表に主キーがないか、またはビューに基づいている場合は、レポートのみが生成されます。
Oracle Application Expressでは、1つのページに複数の表形式フォームを含めることはできません。そのため、1つのマスター・ブロックと複数のディテール・ブロックを持つファイルがロードされると、そのリレーションは無視されます。マスター・ブロックと各ディテール・ブロックは、各ブロック・プロパティに基づく表形式フォームまたは単一レコード・ブロックのいずれかとして独立して処理されます。
有効な外部キー・リレーションシップがなく、表に主キーがある場合、そのマスター・ブロックは対話モード・レポートおよびフォームとして生成されます。それ以外の場合は、対話モード・レポートとして生成されます。
Oracle Application Expressの動的値リスト(LOV)を使用すると、1つの表示値と1つの戻り値をSQLの中で定義できます。アイテムに対してLOVを個々に指定するか、またはアプリケーション全体のどのアイテムでも使用できるように名前付きの共有コンポーネントとして定義することができます。
Oracle Formsのレコード・グループでは、値リストごとに問合せが定義されます。これらのレコード・グループは、対応するLOVが生成されるかどうかを判断するために分析されます。レコード・グループからの問合せを使用して、名前付きの共有コンポーネントLOVが作成され、対応するOracle Application Expressアイテムに指定されます。Oracle Formsで使用される実装スタイルによって、そのアイテムが選択リストまたはポップアップ値リストとして実装されるかが決まります。
レコード・グループに複数の表示列がある場合、結果のOracle Application ExpressのLOV問合せでは、1つのみ使用されます。レコード・グループでパラメータにバインド変数が使用されるとき、Oracle Application Expressアプリケーションのアイテムが定義され、結果のLOV問合せ内で参照されます。
Oracle Formsアプリケーションにおいて、ビジネス・ロジックは、Oracle Formsのユーザー・インタフェースの機能に組み込まれています。画面操作に使用されるOracle Formsユーザー・インタフェース機能(go_block
、go_item
、set_item_property
など)は、そのユーザー・インタフェースに根本的な違いがあるため、Oracle Application Expressには適さないことがあります。
ビジネス・ロジックは、Oracle Formsトリガーおよびプログラム・ユニット、PL/SQLライブラリに組み込まれています。ビジネス・ロジックは、オブジェクトにSQLまたはPL/SQLで直接記述できます。このコードで、データベース・パッケージ、プロシージャまたはファンクションを順番にコールすることができます。基礎となる表に、ビジネス・ロジックを実装するデータベース・トリガーを定義することもできます。
データベース・トリガーは、そのユーザー・インタフェースに関係なく、基礎となる表で動作するため、アプリケーションをOracle Application Expressに変換する際に変更する必要はありません。データベース・パッケージ、プロシージャまたはファンクションでもSQLとPL/SQLが使用されているため、これらはOracle Application Expressからコールすることができます。これらのデータベース・オブジェクトを、Oracle Application Express開発環境で使用する際に変更する必要ありません。
Oracle Formsに定義されたビジネス・ロジックを実装し直すには、トリガー、プログラム・ユニット、PL/SQLライブラリを分析し、対応するロジックをOracle Application Express内に手動で記述する必要があります。Oracle Formsトリガー、プログラム・ユニットおよびPL/SQLライブラリ・コードは、POST-QUERY
トリガーを除いて、自動では生成されません。POST-QUERY
トリガーは、ブロック定義の一部として強化された問合せに組み込まれた後、Oracle Application Expressアプリケーションに含められます。
Oracle Application Expressでは、このようなビジネス・ロジックを、プロセス、計算および検証を使用して実装します。ビジネス・ロジックを実装し直す生成後のタスクを実行する前に、様々なタイプのプロセス、計算および検証をいつどのように実行するかを理解しておくことが重要です。また、このようなタイプのコンポーネントに対して条件付きの処理を適用し、実行環境をカスタマイズする方法について理解することも重要です。詳細は、Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドを参照してください。
プロセスは、データ操作言語(DML)またはPL/SQLの実行に使用されるロジック・コントロールです。プロセスは、ページを表示または送信する際、指定した時点でアクションを実行します。たとえばロジックを作成したり、Application Expressエンジンへのコールを実行するプロセスを作成できます。プロセスは、ロジックの1つの単位であり、ページのロードや送信など、特定のイベントが発生すると実行されます。詳細は、Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドの「ページ・プロセスの理解」を参照してください。
プロセスは、アプリケーションレベルのプロセスまたはページレベルのプロセスのいずれかで定義できます。機能の点では、アプリケーションレベルのプロセスとページレベルのプロセスとの間に相違はありません。アプリケーションレベルのプロセスは、アプリケーションのどのページからもコール可能で、オン・デマンドと呼びます。これは、特に複数ページ間の異なる実行ポイントからPL/SQLロジックを実行したい場合に、特に便利です。ページレベルのプロセスは、定義されているページからのみコールできます。
計算は、ロジックの単位で、ページが送信または表示されるとき、指定したアイテムに値を割り当てるために使用します。
計算は、アプリケーションレベルの計算またはページレベルの計算のいずれかで定義できます。ほとんどのアプリケーションレベルの計算は、アプリケーションのすべてのページに対して実行されます。一方、ページレベルで作成された計算は、そのページが表示または処理される際にのみ実行されます。詳細は、Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドの「ページ計算の理解」および「アプリケーションの計算の理解」を参照してください。
検証では、ロジック・コントロールを作成し、ユーザー入力が有効かどうかを検証できます。たとえば検証によって、必須フィールドに値が入力されているかどうかをチェックできます。検証が失敗すると、エラー・メッセージが表示され、後続のページの処理と計算は実行されません。詳細は、Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドの「検証の理解」を参照してください。
検証には次の2つのタイプがあります。
アイテムレベルの検証。これは単一アイテムのみです。
ページレベルの検証。これは単一アイテムではなくページ全体に適用します。
検証には複数の方法があります。
SQL: アイテムの値をデータベース内のデータと比較します。
PL/SQL: 複雑なロジックを指定して、入力されたデータを検証できます。
アイテム・レベルNULL: セッション・ステートのアイテム値がNULL
かどうかをチェックします。
アイテム文字列の比較: アイテムの値を特定の文字列と比較します。
正規表現: テキストのパターンの記述方法です。
Oracle Reportの定義に使用された基礎となるSQL問合せは、Oracle Application Expressで対話モード・レポートを生成する際に使用されます。1つ以上のOracle Reportファイルがロードされると、Reportsページが新たに生成されて、生成済の対話モード・レポートの各ページへのリンクが付きます。Oracle Reportの生成後の処理で定義した追加ロジックは、手動で実装する必要があります。Oracle Application Expressでは、Oracle Bi Publisher、 Apache FOPまたはその他の標準XSL-FOレポート処理エンジンを使用して、印刷可能なレポートを作成することができます。詳細は次のURLを参照してください。
http://www.oracle.com/technology/products/database/application_express/html/configure_printing.html
PL/SQLライブラリには、リンク先の任意のFormsモジュールからコールできるロジックが格納されています。このようなライブラリは、主としてよく使用されるビジネス・ロジックの定義に使用され、これらは生成後に手動で実装し直す必要があります。詳細は、「ビジネス・ロジックの実装」を参照してください。一般的に、このようなロジックは、生成済のどのページからもコールできるように、アプリケーションレベルのプロセスとして実装する必要があります。
Oracle Formsのメニューは、Oracle Application Expressでは自動生成されません。Oracle Application Expressでは、リージョンに表示されるリストを使用してメニュー構造を再現します。デフォルトの生成プロセスでは、Oracle Application Expressアプリケーションの基本メニューとして、イメージが横一列に並んだホーム・ページが作成されます。このリストを生成後に手動で更新して、Formsメニューに定義したビジネス・ロジックを実装するように条件付きロジックを組み込むことができます。詳細は、Oracle Application Expressアプリケーション・ビルダー・ユーザーズ・ガイドの「リストの作成」を参照してください。