エンティティ・オブジェクト・ウィザード - 「イベント受信」ページ

「イベント受信」ページを使用して、エンティティ・オブジェクトでリスニングするイベントを選択します。イベントが起動されると、エンティティ・オブジェクトが、指定されたメソッドをコールすることにより応答します。

イベントの配信方法を指定できます。イベントは、プログラム・ロジック(addListener)で受信されているエンティティ・オブジェクトのインスタンスに配信するか、選択されたAssociationを使用することにより、発行側に関連付けられているエンティティ・オブジェクトに配信できます。イベント配信にAssociationを使用するには、まずAssociationを作成し、AssociationウィザードまたはAssociationエディタの「Associationプロパティ」ページでアクセッサを生成する必要があります。また、エンティティ・オブジェクトを、1つのAssociationと直接関連付ける必要もあります。複数のAssociationを横断することはできません。

発行(Publish)されるイベント
プロジェクトで定義されたイベントのツリー・ビュー。イベントを受信するには、エンティティ・オブジェクトまたはイベントを選択し、右矢印(>)をクリックして「受信(Subscribe)するイベント」リストに移動します。「発行(Publish)されるイベント」リストが、「イベント発行」ページで定義したイベントにより移入されます。このページで定義したイベントを「イベント受信」ページに表示するには、変更を適用する必要があるので注意してください。直接コードに追加したイベントは、エディタでは認識されません。
受信(Subscribe)するイベント
(オプション)発行側、およびこのエンティティ・オブジェクトが現在受信しているイベントのツリー・ビュー。リストからイベントを削除するには、エンティティ・オブジェクトまたはイベントを選択して左矢印(<)をクリックします。
イベントの配信
「受信(Subscribe)するイベント」リストでイベントを選択し、「イベントの配信」グループを使用してイベント配信を指定します。
 
カスタム・ロジック
独自のカスタム・ロジックを追加し、受信しているエンティティ・オブジェクト・インスタンスと発行側のインスタンスをリンクする場合に選択します。
発行元と関連付け
エディタでコードを追加し、このエンティティ・オブジェクトのすべてのインスタンスが、選択したAssociationアクセッサ(「関連」フィールド)で定義された対応する発行側のエンティティ・オブジェクトに自動的にリンクされるようにする場合に選択します。関連付けられた発行側を選択しない場合は、addListenerを使用してプログラムで受信する必要があります。
関連
リストからAssociationアクセッサを選択します。使用可能なAssociationアクセッサが、発行側から受信しているエンティティ・オブジェクトの型を取得します。たとえば、Empエンティティ・オブジェクトがDeptエンティティ・オブジェクトのLocChangedを受信する場合、DeptとEmp間の、Empを返すすべてのAssociationがこのリストに表示されます。
イベント時に起動するメソッド
(オプション)イベントを受信した際に、このエンティティ・オブジェクトがコールするメソッドのリスト。これらのメソッドは、リストの上から順にコールされます。新規のメソッドを追加するには、「新規」をクリックします。メソッドを編集するには、そのメソッドを選択して「編集」をクリックします。メソッドを削除するには、そのメソッドを選択して「削除」をクリックします。メソッドの順序を変更するには、リストでメソッドを選択し、上矢印または下矢印ボタンをクリックして移動します。リストの同じメソッドを複数回指定できます。これは、メソッドを複数回コールすることに類似しています。

 

イベントを受信するには、次のようにします。

エンティティ・オブジェクトの「イベント発行」ページで定義したイベントを受信できます。イベントの受信時に実行するメソッドを指定します。エディタでメソッドのコールを追加する場合は、「イベント受信」ページを使用する前にメソッドを定義します。

  1. エンティティ・オブジェクトまたはイベントを選択して右矢印(>)をクリックし、1つ以上のイベントを「発行(Publish)されるイベント」リストから「受信(Subscribe)するイベント」リストに移動します。
  2. 「受信(Subscribe)するイベント」リストでイベントを選択し、エンティティ・オブジェクトがイベントを受信する方法を指定します。
  3. オプションで、イベントの受信時にコールするメソッドを1つ以上指定します。
  4. エンティティ・オブジェクトで受信するイベントごとに、ステップ2および3を実行します。

この例では、Deptエンティティ・オブジェクトが従業員給与の変更を受信および応答するようにする方法を示します。EmpおよびDeptがd2eというパッケージ内に定義されており、Empエンティティ・オブジェクトが、「エンティティ・オブジェクトのイベントの発行」で説明されているように、SalaryChangeイベントを発行すると想定します。まず、イベントの起動時に実行するメソッドを定義します。次に、イベントを受信します。

受信用のメソッドを実装するには、次のようにします。

Empエンティティ・オブジェクト・インスタンスがSalaryChangeイベントを起動した際に実行するメソッドを実装します。コード・エディタを使用し、calcDeptTotalメソッド(メソッド名は任意)をDeptエンティティ・オブジェクトの .javaファイルに追加します。oracle.jbo.domain.Numberをインポートし、次のコードをDeptImpl.javaDeptクラス定義に貼り付けます。

public Number calcDeptTotal(Number EMPNO, 
Number NewSalary,
Number DEPTNO) {
      Number total = new Number(0); 
RowIterator emps = this.getEmp();
EmpImpl empRow = null;
emps.reset();
while (emps.hasNext()) {
empRow = (EmpImpl)emps.next();
total = total.add(empRow.getSal());
}
      System.out.println("TOTAL ->"+total); 
return total;
  } 

新規のメソッドを受信するには、次のようにします。

  1. ナビゲータで、Deptエンティティ・オブジェクトをダブルクリックします。

  2. エンティティ・オブジェクト・エディタで、「イベント受信」タブをクリックします。

  3. 「発行(Publish)されるイベント」リストで「SalaryChange」を選択し、右矢印をクリックして「受信(Subscribe)するイベント」リストに移動します。

  4. 「受信(Subscribe)するイベント」リストで「SalaryChange」を選択し、「新規」をクリックします。

  5. 「新規メソッド」ダイアログで、「メソッド」ドロップダウン・リストから「calcDeptTotal」を選択します。

    エディタにより、Empno、SalおよびDeptno属性が「使用可能」リストに追加されます。

  6. 二重右矢印をクリックし、Empno、SalおよびDeptnoを「使用可能」リストから「選択済」リストに移動します。Empnoが「選択済」リストの先頭にない場合は、選択し、上矢印ボタンをクリックしてリストの一番上に移動します。

  7. 「OK」をクリックして「新規メソッド」ダイアログおよびエンティティ・オブジェクト・エディタを閉じます。

    ビジネス・コンポーネント・フレームワークにより、イベント受信用のJavaコードおよびXMLコードが生成されます。実行時、従業員給与が変更されると、Deptエンティティ・オブジェクトはcalcDeptTotalを実行することにより応答します。


関連項目
エンティティ・オブジェクトとは
エンティティ属性とは