検索画面でコントロール内に値を設定したいのですが、レスポンスを考慮した実装方法ってありますか?

2024年3月23日テクニカルメモ

WebFOCUSバージョン
9.0.2

検索画面で動的リストを使っている場合は注意が必要なんだ!
検索画面でコントロール内に値を設定したいのですが、レスポンスを考慮した実装方法ってありますか?

実装方法の種類

WebFOCUSでコントロール内に値を設定する場合は、以下2つの方法があります

①静的リスト
HTML内に固定値を埋め込み、コントロール内に表示します

②動的リスト
データソース内の値を検索し、検索結果の値をコントロール内に表示します
コントロール内に設定する値が更新される場合は動的リストを使用します

動的リストを使う際の注意点

動的リストを使用している場合、動的リストの表示処理が完了した後に検索画面を表示するため、動的リストを設定したコントロールの数や、コントロール内に設定するリスト値の量が多いほど、検索画面の初期描画に時間がかかる傾向があります

そのため、コントロール内に表示するリスト値を、トランザクションテーブルなどデータ量の多いテーブルから取得する際は、注意が必要です

注意点と対応策
①検索するトランザクションテーブルのデータ件数が多い場合、検索処理に時間がかかります
対応策として、バッチ処理などで、事前にトランザクションテーブルからマスターテーブルを作成するなど、データソース側での事前準備が必要になります

②取得するリスト値の量が多い場合は、リスト値の取得に時間がかかります
対応策として、コントロール内に表示するリスト値の取得設定にて、マスターファイルか外部プロシジャを指定します

また、外部プロシジャの場合、グルーピングしたリスト値の取得や、フィルタ条件を設定し取得する値を制限するなど、WebFOCUS側での実装方法の検討が必要になります

ここでは、外部プロシジャの作成方法について見ていきましょう!

外部プロシジャの作成方法

①App Studioを起動し、新規にレポートを作成します

②リスト内に表示したい値の項目を指定します
必要に応じて、コントロール内に表示するリスト値のソートやフィルタ条件の設定も実施します

③出力形式をXMLに変更します
[フォーマット]タブ > [出力フォーマット] > [スタイルなしフォーマット] より、 標準XML を指定します

④ [フォーマット]タブ > [ターゲット]より、出力先のターゲットを変更します

 変更前:一時ファイル
 変更後:Webブラウザ

⑤名前を付けて保存します

⑥HTMLを開き、[リクエストとデータソース]パネルより、新規の▼アイコンを押下し、[外部リクエスト] > [WebFOCUS プロシジャ] より、手順⑤で保存した外部プロシジャを読み込みます

⑦コントロールに対して外部プロシジャを設定します
外部プロシジャを設定したいコントロールを選択した状態で[設定]パネルを開き、以下の設定を実施します

  データタイプ:動的、外部プロシジャ
  リクエスト :外部プロシジャの名前を選択
  値フィールド:条件値として渡したい値の項目を選択します
  表示フィールド:コントロール上に表示したい値の項目を選択します

補足:
コントロール内に表示するリスト値が重複する場合は、[重複する値を確認]にチェックを入れることでリスト値を一意にすることが可能です。ただし、 リスト値の量が多い場合は検索画面の初期描画に時間がかかる可能性があるため、外部プロシジャ側でグルーピングやフィルタ条件を設定し、取得する値を制限することをご検討ください

⑧HTMLを保存します

作成時の注意点
レスポンスの観点より、1つのコントロールに対し、1つの外部プロシジャを作成することを推奨します

関連してよくいただくご質問

Q:外部プロシジャはどこで管理するのが良いですか?
A:外部プロシジャのみを管理する共通フォルダを作成し、そのフォルダ配下で管理することを推奨します

Q:外部プロシジャの管理は、物理フォルダ内とWebFOCUSリポジトリ内のどちらが良いでしょうか?
A:WebFOCUSリポジトリ内での管理を推奨します。WebFOCUSリポジトリ内での管理の場合、
  セキュリティルールを設定して、コントロール内の値を見せる・見せないの設定をかけることが 可能です

Q:作成した外部プロシジャを複数のHTMLで指定することは可能ですか?
A:可能です

リストの数と取得するリスト値の数、どちらもできるだけ数を減らすことが大事なんだね。