intra-mart Accel Platform IM-共通マスタ 拡張プログラミングガイド 第2版 2015-08-01

5.1. 動作の概要

共通検索画面の基盤とプラグインのインタフェースを中心に、実装の構成と動作の概要を説明します。

5.1.1. 共通検索画面 タブの動作概要

共通検索画面は、検索画面のウィンドウを作成し、タブ拡張の呼び出しや、検索結果の受け渡しを行う基盤部分と、実際に検索処理を行い、基盤に対してユーザの選択値を渡すタブのプラグインという構成で成り立っています。
マスタメンテナンス画面のタブとは異なり、プラグインはUIとDBアクセス処理に分断されてはいません。初期表示から検索条件の受付、検索、結果の表示までを全てプラグインの処理として実装します。
基盤部分では、基本となる条件(検索基準日、ロケール、削除情報を含めるか否か等)の管理と、検索結果の受け渡しや取りまとめを行います。
共通検索画面の構成の概要を【図:共通検索タブの動作概要】に示します。
../../_images/common_search_actions_summary.png

【図:共通検索タブの動作概要】

5.1.1.1. 単一選択モードと複数選択モード

画面基盤は起動時のパラメータにより、検索画面で結果を複数選択するか、単一で選択するか処理を切り変えることが出来ます。
単一選択の場合、タブ内で選択された物が選択結果として使用されますが、複数選択の場合、タブ欄の右側に選択中の項目一覧が表示され、そこに選択項目を貯めておくことができるようになります。
../../_images/selection_mode.png

【図:単一選択モードと複数選択モード】

この単一選択か複数選択かによってユーザのインタラクションが異なっており、タブ側では双方の要求に答えられる必要があります。

  • 単一選択の場合は一つしか選択出来ない。画面基盤から結果を要求された場合に単一の値を返す必要がある。

  • 複数選択の場合は個別選択のボタンと全選択のボタンがあるため、複数の結果を返せる必要がある。
    個別選択ボタンは単一選択ではなく、タブ内で複数の値が同時に選択されていた場合、複数の値を返して良い。
これらの要求に答えるためにいくつか規定の処理を実装する必要があります。
以降で詳細に説明します。

5.1.1.2. 画面起動時から結果選択までのシーケンス

共通検索画面の動作シーケンスを 【図:共通検索画面の動作シーケンス】 に示します。
クライアントサイドでinitの呼び出しがありますが、基本的にはプラグイン側で初期表示から検索処理、結果の表示を行う必要があり、画面基盤側は関与しません。
基盤側では検索基準日やロケールの設定等を管理しており、これはユーザにより変更されることがありますが、基本条件が変更された場合にはタブのプラグインは初期表示と同じシーケンスで再読み込みされます。
../../_images/common_search_actions_sequence.png

【図:共通検索画面の動作シーケンス】

5.1.1.3. 基盤部分から発生するイベントのハンドリング

【図:共通検索画面の動作シーケンス】 の後半、クライアントサイドで画面基盤側からonSelect()が呼び出されていますが、これはユーザが検索結果から値を選択するアクションを起こした際に発生します。
この他にもいくつかのイベントが規定されており、プラグインではそれぞれの要求に応えられる必要があります。
画面基盤側がプラグインへ処理を要求するイベントは下記の通りです。
  1. タブの初期化時(init)
    タブの読み込みが完了した時点で呼び出されます。
  2. 個別選択ボタン押下時(onSelect)
    複数選択モードの場合は個別の選択ボタン、単一選択モードの場合は決定ボタン押下時に呼び出されます。
  3. 全選択ボタン押下時(onSelectAll)
    画面が複数選択モードで起動されている場合にのみ発生する要求です。
    全選択ボタンが押下された際に呼び出されます。
  4. 個別解除ボタン押下時(onDeselect)
    画面が複数選択モードで起動されている場合にのみ発生する要求です。
    既に選択項目の一覧に入っている項目を解除する場合に呼び出されます。項目自体は基盤によって削除されます。
  5. 全解除ボタン押下時(onDeselectAll)
    画面が複数選択モードで起動されている場合にのみ発生する要求です。
    選択項目の一覧に入っている項目すべてを解除する場合に呼び出されます。項目自体は基盤によって削除されます。
  6. 決定ボタン押下時(onDecide)
    画面下側の決定ボタンを押下した際に呼び出されます。
  7. ウィンドウクローズ時(onClose)
    画面右上の閉じるボタンを押下した際に呼び出されます。

これらの処理をクライアントサイドのjsとして実装し、適切にハンドリングしなければなりません。