このステップでは、部門を展開したときに社員をインスタンスリストにロードするリレーションシップ・ハンドラーを作成します。
非表示フィルター・コードを使用してすべての社員を部門と共にロードすることもできますが、リレーションシップ・ハンドラーを使用すると、最初にルート・オブジェクトまたは親オブジェクトをインスタンスリストに追加するだけで、その後は子オブジェクトを動的に追加できるようになるので、フィルターのパフォーマンスを改善できます。
1. Visual LANSA エディターで (例えばパネル・タイプなどの) 再利用可能パーツを作成し、これに iiiCOREL (iii は自分のイニシャル) と名前を付けて、記述にはリレーションシップ・ハンドラーと入力します。
2. [ソース] タブで Begin_Com ステートメントを変更して、祖先に #VF_AC023 を指定します。これはリレーションシップ・ビルターの祖先クラスです。
3. 次に以下のステートメントを追加して、uAddEntriesFor メソッドを再定義します。
Mthroutine Name(uAddEntriesFor) Options(*REDEFINE)
Endroutine
このメソッド・ルーチンは事前定義のパラメータを含みます。
4. 最後に、次のコードを追加して、インスタンスリストに社員データをロードします。
#xDepartmentCode := #AKey1
Select Fields(*ALL) From_File(xEmployeeByDepartment) With_Key(#xDepartmentCode)
Signal Event(uAddListItem) Akey1(#xDepartmentCode) Akey2(#xEmployeeIdentification) Visualid1(#xEmployeeGivenNames + " " + #xEmployeeSurname) Visualid2(#xEmployeeIdentification) Acolumn1(#xEmployeeStreet) Acolumn2(#xEmployeeCity) Acolumn3(#xEmployeeState) Acolumn4(#xEmployeePostalCode) Businessobjecttype(#TargetType)
Endselect
コードは次のようになります。
5. 再利用可能パーツをコンパイルします。
6. フレームワークを表示します。
7. "部門" ビジネス・オブジェクトのプロパティを表示します。
8. [リレーションシップ] タブで "社員" ビジネス・オブジェクトを選択します。
9. [リレーションシップ ハンドラ] のフィールドにリレーションシップ・ハンドラー名 iiiCOREL を入力し、[再利用可能パーツ使用] のチェックボックスにチェックマークをいれます。
10. "部門" の'プロパティを閉じます。
11. フレームワークを保存して再起動します。
12. iiiHR アプリケーションで "部門" ビジネス・オブジェクトを選択します。
13. インスタンスリストにある部門を展開し、部門内の社員を表示します。
展開した各部門の社員が動的にロードされます。
リストには、社員の名前と識別子のみが表示されます。次のステップでは、インスタンスリストを変更して社員の列をさらに表示します。