ヘッダーをスキップ
Oracle Fusion Middleware Oracle Application Development Framework Fusion開発者ガイド
11gリリース1 (11.1.1.7.0)
B52028-05
  目次へ移動
目次

前
 
次
 

D 一般的なOracle Formsのトリガーに相当するADFの機能

この付録では、Oracle Formsのよく使用されるトリガーを使って実行される基本タスクをOracle ADFを使用して実行する方法の概要を示します。

この付録には、次の項が含まれます。

D.1 検証とデフォルト設定(ビジネス・ロジック)

表D-1 Oracle Formsの検証およびデフォルト設定トリガーに相当するADFの機能

Formsのトリガー 相当するADFの機能

WHEN-VALIDATE-RECORD

レコード・レベルで検証コードを実行します。

エンティティ・オブジェクトのカスタムなEntityImplクラスで、validateXXXX()のようなメソッド名を持ち、boolean型を返すpublicメソッドを作成し、検証に成功するとtrue、検証に失敗するとfalseを返すようにします。その後、エンティティ・レベルで、この検証メソッドのメソッド・バリデータをエンティティ・オブジェクトに追加します。その実行時に、検証エラー・メッセージとルールを関連付けることができます。

WHEN-VALIDATE-ITEM

フィールド・レベルで検証コードを実行します。

エンティティ・オブジェクトのカスタムなEntityImplクラスで、booleanを返し、属性と同じデータ型の引数を1つ受け取る(validateXXXX()のようなメソッド名を持つ)publicメソッドを作成します。このメソッドで、検証に成功するとtrue、検証に失敗するとfalseを返すようにします。その後、適切な属性の属性レベルで、この検証メソッドのメソッド・バリデータをエンティティ・オブジェクトに追加します。その実行時に、検証エラー・メッセージとルールを関連付けることができます。

WHEN-DATABASE-RECORD

データ・ブロック内の行に挿入または更新のマークが付けられるとコードを実行します。

エンティティ・オブジェクトのaddToTransactionManager()メソッドをオーバーライドします。スーパー・メソッドをコールした後、コードを記述します。

WHEN-CREATE-RECORD

データ・ブロック内で新規レコードが作成されると、該当レコードの変更ステータスを変更することなくコードを実行し、複雑なデフォルト値を移入します。

エンティティ・オブジェクトのcreate()メソッドをオーバーライドし、スーパー・メソッドをコールした後、該当するsetAttrName()メソッドを使用して属性のデフォルト値を必要に応じて設定します。

主キー属性に順序値を即時に設定するには、SequenceImplヘルパー・クラスのインスタンスを作成し、そのgetSequenceNumber()メソッドをコールして次の順序番号を取得します。この値は、主キー属性に割り当てます。

新しいレコードが保存されるまで順序番号の割当てを待機するものの、データベース・トリガーは使用しない場合は、エンティティ・オブジェクト内のオーバーライドしたprepareForDML()メソッドの中でこの方法を使用できます。

また、独自のBEFOREINSERTFOREACHROWデータベース・トリガーを使用して順序値から主キーを割り当てるには、通常のNumber型ではなくDBSequenceという特殊なデータ型を主キー属性で使用します。

WHEN-REMOVE-RECORD

行がデータ・ブロックから削除されるとコードを実行します。

エンティティ・オブジェクトのremove()メソッドをオーバーライドし、スーパー・メソッドをコールする前またはコールした後でコードを記述します。


D.2 問合せ処理

表D-2 Oracle Formsの問合せ処理トリガーに相当するADFの機能

Formsのトリガー 相当するADFの機能

PRE-QUERY

データ・ブロック内で問合せが実行される前にロジックを実行します(通常は、「サンプル・レコード」内のQuery-By-Example基準の値を設定することが目的)。

ビュー・オブジェクト・クラスのexecuteQueryForCollection()メソッドをオーバーライドし、スーパー・メソッドをコールする前にコードを記述します。

ON-COUNT

データ・ブロックの問合せのヒット数をカウントするためのデフォルトの動作をオーバーライドします。

ビュー・オブジェクト内のgetQueryHitCount()メソッドをオーバーライドし、スーパー・メソッドをコールする以外の処理を実行します。

POST-QUERY

データ・ブロックのデータ・ソースから各行を取得した後、ロジックを実行します。

一般に、POST-QUERYスタイルの方法を使用して現在の行内の外部キー値に基づいて他の表から説明をフェッチするかわりに、ADFでは問合せ内で必要な全情報をメイン表および補助/検索値表から結合して、関与するエンティティ・オブジェクトが複数存在するビュー・オブジェクトを構築する方が効率的です。この方法では、データベースに対する1回のラウンドトリップで、必要な情報がすべて得られます。POST-QUERYのような、行がフェッチされるたびに実行されるトリガーが必要な場合は、ビュー・オブジェクト・クラス内のcreateInstanceFromResultSet()メソッドをオーバーライドします。

ON-LOCK

データ・ブロック内の現在の行でロックの取得を試行するためのデフォルトの動作をオーバーライドします。

エンティティ・オブジェクト・クラス内のlock()をオーバーライドし、スーパー・メソッドをコールする以外の処理を実行します。


D.3 データベース接続

表D-3 Oracle Formsのデータベース接続トリガーに相当するADFの機能

Formsのトリガー 相当するADFの機能

POST-LOGON

データベースにログオンした後にロジックを実行します。

カスタムなアプリケーション・モジュールのafterConnect()メソッドをオーバーライドします。アプリケーション・モジュール・インスタンスは接続されたままでも、他の論理クライアント・セッションにサービスを提供できるため、prepareSession()メソッドをオーバーライドできます。これは最初のログインの後、および最後にアクセスしたユーザーとは異なるユーザーがこのアプリケーション・モジュールにアクセスした後に起動されます。

PRE-LOGOUT

データベースからログアウトする前にロジックを実行します。

カスタムなアプリケーション・モジュール・クラスのbeforeDisconnect()メソッドをオーバーライドします。


D.4 トランザクション後の処理(レコード・キャッシュ)

表D-4 Oracle Formsのトランザクション・トリガーに相当するADFの機能

Formsのトリガー 相当するADFの機能

PRE-COMMIT

変更された行の処理がトランザクション内のすべてのデータ・ブロックで開始される前にコードを実行します。

カスタムなDBTransactionImplクラス内のcommit()メソッドをオーバーライドし、スーパー・メソッドをコールする前にコードを記述します。

注意:

カスタムのDBTransaction実装の作成と使用の概要は、37.7.5.1項「カスタム・データベース・トランザクション・フレームワーク拡張クラスの作成」を参照してください。

PRE-INSERT

後処理中にデータ・ブロック内の新しい行がデータベースに挿入される前にコードを実行します。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_INSERTに等しい場合は、スーパー・メソッドをコールする前にコードを記述します。

ON-INSERT

後処理中に新しい行がデータベースに挿入されるというデフォルト処理をオーバーライドします。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_INSERTに等しい場合は、スーパー・メソッドをコールするかわりにコードを記述します。

POST-INSERT

後処理中にデータ・ブロック内の新しい行がデータベースに挿入された後にコードを実行します。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_INSERTに等しい場合は、スーパー・メソッドをコールした後でコードを記述します。

PRE-DELETE

後処理中にデータ・ブロック内の行がデータベースから削除される前にコードを実行します。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_DELETEに等しい場合は、スーパー・メソッドをコールする前にコードを記述します。

ON-DELETE

後処理中にデータ・ブロック内の行がデータベースから削除されるというデフォルト処理をオーバーライドします。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_DELETEに等しい場合は、スーパー・メソッドをコールするかわりにコードを記述します。

POST-DELETE

後処理中にデータ・ブロック内の行がデータベースから削除された後にコードを実行します。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_DELETEに等しい場合は、スーパー・メソッドをコールした後でコードを記述します。

PRE-UPDATE

後処理中にデータ・ブロック内で変更された行がデータベース内で更新される前にコードを実行します。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_UPDATEに等しい場合は、スーパー・メソッドをコールする前にコードを記述します。

ON-UPDATE

後処理中にデータ・ブロック内で変更された行がデータベース内で更新されるというデフォルト処理をオーバーライドします。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_UPDATEに等しい場合は、スーパー・メソッドをコールするかわりにコードを記述します。

POST-UPDATE

後処理中にデータ・ブロック内で変更された行がデータベース内で更新された後にコードを実行します。

エンティティ・クラス内のdoDML()メソッドをオーバーライドします。もし、operationDML_UPDATEに等しい場合は、スーパー・メソッドをコールした後でコードを記述します。

POST-FORMS-COMMIT

Formsが必要な行をすべてデータベースにポストしてから、データ・コミットを発行してトランザクションを終了する前にコードを実行します。

トランザクション全体を単一のコード・ブロックにする場合は、カスタムなDBTransactionImplオブジェクト内のdoCommit()メソッドをオーバーライドし、スーパー・メソッドをコールする前にコードを記述します。

トランザクション内で影響を受けるエンティティごとにコミットを実行する前に、エンティティに固有なコードを実行するには、エンティティ・オブジェクトのbeforeCommit()メソッドをオーバーライドして、そこにコードを記述します。

POST-DATABASE-COMMIT

データベース・トランザクションがコミットされた後にコードを実行します。

カスタムなDBTransactionImplクラス内のcommit()メソッドをオーバーライドし、スーパー・メソッドをコールした後でコードを記述します。


D.5 エラー処理

表D-5 Oracle Formsのエラー処理トリガーに相当するADFの機能

Formsのトリガー 相当するADFの機能

ON-ERROR

エラーを処理するためのデフォルトの動作をオーバーライドします。

ADF BindingContextにカスタムなエラー・ハンドラ(DCErrorHandler)をインストールします。詳細は、28.10項「エラー処理のカスタマイズ」を参照してください。