ステップ4. 課をロードするリレーション・ハンドラーを作成する
このステップでは、部門を展開したときに課をインスタンス・リストにロードするリレーション・ハンドラーを作成します。
非表示フィルター・コードを使用してすべての課を部門と共にロードすることもできますが、リレーション・ハンドラーを使用すると、最初にルート・オブジェクトまたは親オブジェクトをインスタンス・リストに追加するだけで、その後は子オブジェクトを動的に追加できるようになるので、フィルターのパフォーマンスを改善できます。
1. Visual LANSAエディターで、プロセスiiiPROC2 – Framework Functions作成します。このプロセスに属するファンクションを作成します。ファンクション名をiiiFN04、説明にRelationship Handlerと指定します(ここでiiiは入力者のイニシャルです。Visual LANSAの非ライセンス版または試行版を使っている場合は、iiiの部分をDEMとする必要があります)。
2. ファンクション内の既存のコードを、このファンクションがリレーション・ハンドラーであることを示す次のコードに置き換えます。
FUNCTION OPTIONS(*DIRECT *LIGHTUSAGE) RCV_LIST(#VIS_LIST #PID_LIST #COL1_LIST #COL2_LIST #COL3_LIST #COL4_LIST #COL5_LIST #COL6_LIST #COL7_LIST #COL8_LIST #COL9_LIST #COLA_LIST)
INCLUDE PROCESS(*DIRECT) FUNCTION(VFREL1)
INCLUDE PROCESS(*DIRECT) FUNCTION(VFREL2)
作成したVFREL1ファンクションおよびVFREL2ファンクションには、リレーションの生成ファンクションの標準の定義が含まれています。
3. 次に、すべてのキーと追加のカラムをインスタンス・リストからクリアします。
EXECUTE SUBROUTINE(CLEARKEYS)
EXECUTE SUBROUTINE(CLEARCOLS)
リレーション・ハンドラーで呼び出すサブルーチンはVFREL2ファンクションに含まれています。
4. 選択した部門のキー値を取得します。
CHANGE FIELD(#DEPTMENT) TO(#SRC_AK1)
5. 現在の部門で課を選択し、インスタンス・リストのエントリー値を設定します。
SELECT FIELDS(*ALL) FROM_FILE(SECTAB) WITH_KEY(#DEPTMENT)
EXECUTE SUBROUTINE(SETAKEY) WITH_PARMS(1 #DEPTMENT)
EXECUTE SUBROUTINE(SETAKEY) WITH_PARMS(2 #SECTION)
EXECUTE SUBROUTINE(SETNCOL) WITH_PARMS(1 #SECPCODE)
EXECUTE SUBROUTINE(SETACOL) WITH_PARMS(1 #SECADDR1)
EXECUTE SUBROUTINE(SETACOL) WITH_PARMS(2 #SECADDR2)
EXECUTE SUBROUTINE(SETACOL) WITH_PARMS(3 #SECADDR3)
EXECUTE SUBROUTINE(SETACOL) WITH_PARMS(4 #SECPHBUS)
EXECUTE SUBROUTINE(ADDTOLIST) WITH_PARMS('DEPARTMENT_SECTIONS' #SECDESC #SECTION)
ENDSELECT
· SETAKEYサブルーチンは子インスタンス・リストのキー値を設定します。このサブルーチンの最初のパラメータはキーの位置で、2番目のパラメータはキー値です。数値キーを設定するSETNKEYサブルーチンもあります。
· SETNCOLサブルーチンとSETACOLサブルーチンは子インスタンス・リスト・エントリーにカラムを追加します。
· ADDTOLISTサブルーチンはエントリーをインスタンス・リストに追加します。サブルーチンの最初のパラメータは子ビジネス・オブジェクト名、2番目のパラメータはVisual ID 1カラム、3番目のパラメータはVisual ID 2カラムです。
コードは、次のようになります。
6. ファンクションをコンパイルします。
7. サーバーに対して変更をチェックインします。
a. WAMを右クリックして関連するポップアップ・メニューを開き、チェックインオプションを選択する。
b. Generate XSLオプションに[全てのWebroutine]オプションが選択されていることを確認する。
c. OKをクリックするとチェックインされる。
d. コンパイルには多少時間がかかる。
8. フレームワークを開いてください。
9. Company Departmentsビジネス・オブジェクトのプロパティを表示します。
10. [インスタンスリストの設定]タブで、Department Sectionsビジネス・オブジェクトを選択します。
11. [リレーション ハンドラー]フィールドに、リレーション・ハンドラーの名前を入力します。
12. Company Departmentsのプロパティを閉じます。
13. フレームワークを保存します。フレームワークをアップロードするかどうかのプロンプトが表示されるので了解し、完了するまでそのまま待っていてください。
14. (フレームワーク)メニューの[Webアプリケーションとして実行...]を選択してください。デフォルト値を受け入れて[OK]を押します。
15. Webフレームワークで、iii HRアプリケーション、次にCompany Departmentsビジネス・オブジェクトを選択してください。
16. インスタンス・リストにある部門を展開し、その下にある課を表示します。
展開した各部門の課が動的にロードされます。
リストには、セクション名と識別子のみが表示されます。次のステップで、インスタンス・リストを変更して課の追加カラムを表示します。
17. アプリケーションを終了します。