5.1. メンテナンス¶
本項では、メンテナンス機能の機能詳細を説明します。
5.1.1. クライアントサイド¶
マスタメンテナンス機能では、他の機能と同様にLogicやManagerの拡張に追加し、各JSPの拡張が可能です。各JSPの詳細や、イベントは次の通りです。
JSPの構成イメージメンテナンス機能では、一覧画面と登録・更新画面の2画面の構成となりますが、実際には単一のJSP(メイン)が各部品をインクルードする構成となっています。各部品の構成イメージは次の通りです。コラム
イメージには表記されていませんが、拡張部品もインクルードされています。 実行イベントインクルードされた各部品では、EventManagerを利用して部品間を跨いだイベントを実行しています。マスタメンテナンス機能で実行されるイベントは次の通りです。(○が設定されている部品で、各処理が実装されています。)
名称 ID 実行元 メイン 検索 一覧 期間 編集 ボタン 初期表示 initialize JSPロード時 ○ ○ 画面の切替有無設定 setTrans 期間検索、対象検索 ○ 一覧画面表示 showListArea 初期表示、登録、更新、削除、一覧に戻る ○ ○ 編集画面表示 showMainteArea 新規登録、一覧行、登録、更新 ○ ○ 新規登録画面遷移 trunsRegist 新規登録 ○ ○ ○ 更新画面遷移 trunsRenewal 一覧行、登録、更新 ○ ○ ○ 一覧画面遷移 trunsList 一覧に戻る、登録、更新、削除 一覧クリア clearList クリアボタン ○ 編集クリア clearMainte 一覧画面表示 ○ ○ 一覧検索 searchList 一覧画面表示、検索ボタン、タイトル行、ページャ ○ 名称 ID 実行元 メイン 検索 一覧 期間 編集 ボタン 一覧検索結果設定 setSearchListResult 一覧検索 ○ 期間検索 searchTerm 更新画面遷移、非対象カーソル ○ 期間検索結果設定 setSearchTermResult 期間検索、有効化、無効化、期間分割、期間変更 ○ 対象検索 searchTarget 期間検索結果設定、更新画面遷移 ○ 対象検索結果設定 setSearchTargetResult 対象検索 ○ 登録 entry 登録ボタン ○ 更新 renew 更新ボタン ○ 削除 remove 削除(ツールバー) ○ 検索基準日変更 setSearchCriteriaDate 初期表示、検索基準日変更、クリアボタン ○ ○ 検索基準会社変更 setSearchCriteriaCompany 初期表示、検索基準会社変更、クリアボタン ○ ○ 名称 ID 実行元 メイン 検索 一覧 期間 編集 ボタン 検索基準ロケール変更 setSearchCriteriaLocale 初期表示、検索基準ロケール変更、クリアボタン ○ ○ 検索条件保存 setSearchCriteria 一覧検索 ○ ソート条件保存 setSearchOrder タイトル行 ○ 期間有効化 enabledTerm 無効アイコン ○ 期間無効化 disabledTerm 有効アイコン ○ 期間分割 divideTerm 期間分割ダイアログ ○ 期間変更 moveTerm 期間変更ダイアログ ○
5.1.1.1. メイン¶
各部品のインクルード元のJSP(メイン)は、「拡張設定」の「マスタメンテナンス画面のJSPパス」に設定したJSPが表示されます。(未設定の場合は「/kaiden/v2/base/generic/master/maintenance.jsp」を使用します。)各部品のインクルード元のJSP(メイン)では、各部品のインクルードや一覧画面・登録/更新画面の切り替え、ツールバーなどを実装しています。一覧画面
新規登録アイコンクリックすると、登録画面に切り替えます。登録・更新画面
一覧に戻るアイコンクリックすると、一覧画面に切り替えます。 削除アイコンクリックすると、表示中のマスタデータを削除します。
5.1.1.2. 検索部品¶
検索部品は、「拡張設定」の「マスタメンテナンス画面(検索部品)のJSPパス」に設定したJSPが表示されます。(未設定の場合は「/WEB-INF/views/kaiden/v2/base/generic/master/maintenanceSearch.jsp」を使用します。)また、一覧検索時に使用されるSQLは、「拡張設定」の「一覧検索用SQL」に設定したSQLを使用します。(未設定の場合は「META-INF/sql/jp/co/slcs/kaiden/v2/generic/master/%マスタID%.sql」を使用します。)検索部品では、検索キーワード、検索基準日などの検索時に使用する検索条件と、一覧検索ボタン、および一覧のクリアボタンと各ボタンクリック時の処理を実装しています。
検索キーワードマスタデータ(コードや名称)に含まれるキーワードを入力します。未入力の場合は、検索キーワードを検索条件に含みません。 検索ボタンクリックすると、一覧検索処理を行い一覧部品に検索結果を表示します。 クリアボタンクリックすると、一覧部品に表示中の一覧検索結果をクリアし、検索条件を画面表示時の値に設定します。 検索条件表示/非表示アイコンクリックすると、検索条件の表示/非表示を切り替えます。 検索基準日一覧検索時の検索基準日を設定します。 検索基準会社一覧検索時の検索基準会社を設定します。 検索基準ロケール一覧検索時の検索基準ロケールを設定します。 無効データ検索有無一覧検索結果に無効のデータを含むか否かを設定します。検索キーワード以外の検索条件は、マスタの特性(会社化、期間化、国際化)に合わせて表示/非表示を切り替えます。また、各検索条件には、画面表示後すぐに検索可能となる様に初期値が設定されます。
検索条件 対象特性 初期値 検索キーワード なし 空欄 検索基準日 期間化 システム日付 検索基準会社 会社化 ログインユーザの選択会社 検索基準ロケール 国際化 ログインユーザのロケール 無効データの検索有無 期間化 OFF(無効なデータを検索しない) 各特性に応じた検索部品の表示内容は次の通りです。
特性なし 会社化 期間化 国際化 会社化、期間化 会社化、国際化 期間化、国際化 会社化、期間化、国際化
5.1.1.3. 一覧部品¶
一覧部品は、「拡張設定」の「マスタメンテナンス画面(一覧部品)のJSPパス」に設定したJSPが表示されます。(未設定の場合は「/WEB-INF/views/kaiden/v2/base/generic/master/maintenanceList.jsp」を使用します。)一覧部品では、一覧検索結果の表示や表示内容のソート、更新画面への遷移などを実装しています。表示される項目は、「メンテナンス設定」に設定された項目となります。
ヘッダー行クリックすると、一覧検索された検索結果のソート方法を変更します。 明細行クリックすると、対象のマスタデータを更新する画面に切り替えます。 ページャクリックすると、一覧表示の表示ページを切り替えます。コラム
一覧部品では、「メンテナンス設定」を使用して、項目の制御を行います。
5.1.1.4. 期間部品¶
期間部品は、「拡張設定」の「マスタメンテナンス画面(期間部品)のJSPパス」に設定したJSPが表示されます。(未設定の場合は「/WEB-INF/views/kaiden/v2/base/generic/master/maintenanceTerm.jsp」を使用します。)また、期間検索時に使用されるSQLは、「拡張設定」の「期間検索用SQL」に設定したSQLを使用します。(未設定の場合は「META-INF/sql/jp/co/slcs/kaiden/v2/generic/master/%マスタID%.sql」を使用します。)一覧部品では、対象のマスタデータの期間表示や期間の有効化/無効化処理、期間分割、期間変更等を実装しています。
有効化・無効化アイコンクリックすると、対象期間の有効/無効が切り替わります。緑丸:有効な期間を表します。白丸:無効な期間を表します。 期間対象期間の開始日、終了日を表示します。 対象・非対象アイコンクリックすると、編集部品に対象の期間のデータを表示します。 期間分割リンククリックすると、次の期間分割ダイアログを表示します。期間分割ダイアログで分割日を入力し、「実行」ボタンをクリックすることで対象の期間を分割します。 期間変更リンククリックすると、次の期間変更ダイアログを表示します。期間変更ダイアログで新開始日、新終了日を入力し、「実行」ボタンをクリックすることで対象の期間をコピーし新たな期間として登録します。この時、新開始日-新終了日と重複する期間が存在する場合は、期間変更や期間削除を行います。
5.1.1.5. 編集部品¶
編集部品は、「拡張設定」の「マスタメンテナンス画面(編集部品)のJSPパス」に設定したJSPが表示されます。(未設定の場合は「/WEB-INF/views/kaiden/v2/base/generic/master/maintenanceEdit.jsp」を使用します。)また、対象検索(更新データ検索)時に使用されるSQLは、「拡張設定」の「対象検索用SQL」に設定したSQLを使用します。(未設定の場合は「META-INF/sql/jp/co/slcs/kaiden/v2/generic/master/%マスタID%.sql」を使用します。)編集部品では、新規登録や更新用のマスタデータに対し、登録処理や更新処理、削除処理等を実装しています。表示される項目は、「メンテナンス設定」に設定された項目となります。会社、期間(開始日・終了日)項目は、「メンテナンス設定」の設定有無に関わらず各特性のマスタの場合に表示されます。
特性なし 会社化 期間化 会社化、期間化
5.1.1.6. ボタン部品¶
ボタン部品は、「拡張設定」の「マスタメンテナンス画面(ボタン部品)のJSPパス」に設定したJSPが表示されます。(未設定の場合は「/WEB-INF/views/kaiden/v2/base/generic/master/maintenanceButton.jsp」を使用します。)ボタン部品では、登録、更新、一覧に戻るボタンの処理等を実装しています。新規登録時更新時
登録ボタンクリックすると、登録処理を実行します。 更新ボタンクリックすると、更新処理を実行します。 一覧に戻るボタンクリックすると、一覧画面に切り替えます。
5.1.1.7. 拡張部品¶
拡張部品は、「拡張設定」の「マスタメンテナンス画面(拡張部品)のJSPパス」に設定したJSPが表示されます。(未設定の場合は「/WEB-INF/views/kaiden/v2/base/generic/master/maintenanceExtension.jsp」を使用します。)拡張部品は、次の様な修正を標準の各JSPを修正することなく実装するために用意しています。
各項目のクリックイベントやチェンジイベント追加 ツールバーへのアイコン追加 独自クライアントバリデーションの追加上記の様な拡張を行う際には、各JSPのガジェットIDなどが必要となります。他のJSPを操作するために次の値が連携されます。
連携パラメータ 詳細 ${param.main_gadget_id} メンテナンス画面のガジェットID ${param.search_gadget_id} 検索部品のガジェットID ${param.search_gadget_block_id} 検索部品のブロックID ${param.list_gadget_id} 一覧部品のガジェットID ${param.list_gadget_title_block_id} 一覧部品のヘッダーブロックID ${param.list_gadget_data_block_id} 一覧部品の明細ブロックID ${param.term_gadget_id} 期間部品のガジェットID ${param.term_gadget_title_block_id} 期間部品のヘッダーブロックID ${param.term_gadget_data_block_id} 期間部品の明細ブロックID ${param.term_gadget_divide_dialog_id} 期間部品の期間分割ダイアログID ${param.term_gadget_move_dialog_id} 期間部品の期間変更ダイアログID ${param.edit_gadget_id} 編集部品のガジェットID ${param.edit_gadget_block_id} 編集部品のブロックID ${param.button_gadget_id} ボタン部品のガジェットID ${param.button_gadget_block_id} ボタン部品のブロックID ${param.gadget_class} 拡張部品のガジェットクラス ${param.gadget_variation} 拡張部品のガジェットバリエーション ${param.gadget_instance} 拡張部品のガジェットインスタンス ${param.gadget_id} 拡張部品のガジェットID ${param.gadget_block_id} 拡張部品のブロックID
5.1.2. サーバーサイド¶
5.1.2.1. Controller¶
初期表示時のControllerクラスは、アクセスしたURLから自動判定されます。「http://<HOST>:<PORT>/<CONTEXT_PATH>/kaiden/v2/generic/master?masterId=%マスタID%」にアクセスした場合は、「jp.co.slcs.kaiden.v2.base.feature.controller.kaiden.generic.MasterController」が使用されます。その他の処理では、「拡張設定」の「マスタメンテナンス用の処理URL」に設定したURLから自動判定されます。(未設定の場合は「kaiden/v2/generic/master」を使用します。)Controllerクラスでは、認可判定とLogicクラスの対象メソッド起動を行います。Controllerクラスのメソッドと主な起動処理は次の通りです。
処理名 メソッド 主な起動処理 初期表示 index 初期表示時 一覧検索 search 検索部品の検索ボタンクリック時 対象検索 select 一覧部品のデータ行クリック時(更新対象の検索) 登録 entry ボタン部品の登録ボタンクリック時 更新 renew ボタン部品の更新ボタンクリック時 削除 remove ツールバーの削除リンククリック時 有効化 toEnabled 期間部品の無効アイコンクリック時 無効化 toDisabled 期間部品の有効アイコンクリック時 期間検索 selectTerm 一覧部品のデータ行クリック時(更新対象の検索) 期間分割 divideTerm 期間部品の期間分割実行時 期間変更 moveTerm 期間部品の期間変更実行時 バリデート(認可) authorize 一覧部品のデータ行クリック時、ツールバーの新規登録アイコンクリック時 コラム
追加のメソッドを作成する場合や、独自の認可判定を行う場合はControllerクラスの拡張を行います。メニューからの遷移URLは通常のSpringMVCの仕組みに合わせて実装してください。登録や更新などの処理ではAjaxのURLを使用しますが、このURLを変更する場合は「拡張設定」の「マスタメンテナンス用の処理URL」を変更してください。
5.1.2.2. Form¶
Controllerクラスへアクセスした際のリクエストパラメータは、Formクラス(jp.co.slcs.kaiden.v2.base.feature.form.kaiden.generic.MasterForm)に格納されます。Formクラスでは、マスタID、マスタ拡張ID、検索キーワードの他に、汎用的にデータを取得するためにJSON化したデータを保持しています。Controllerクラスの各メソッド呼出し時に格納されるJSONデータの内容は次の通りです。
初期表示(index)マスタメンテナンス画面への遷移時に引き渡したパラメータ(キーが「json」のパラメータ)が設定されます。 一覧検索(search)
パラメータ名 パラメータキー パラメータの取得元 補足 マスタID masterId 初期表示時のリクエストパラメータ マスタ拡張ID extensionId 初期表示時のリクエストパラメータ 検索キーワード searchKeyword 検索部品の検索キーワード 検索基準会社コード searchCriteriaCompany 検索部品の検索基準会社 会社化特性の場合のみ 検索基準日 searchCriteriaDate 検索部品の検索基準日 期間化特性の場合のみ 無効データ検索有無 searchWithDisabled 検索部品の無効データ検索有無
- チェックありの場合は「true」
- チェックなしの場合は「false」
期間化特性の場合のみ 検索基準ロケール searchCriteriaLocale 検索部品の検索基準ロケール 国際化特性の場合のみ ソート条件 orderBy MasterBuilder定義 一覧部品でソート順を変更した場合は、変更後のソート条件ページ番号 numberOfPage 表示中のページ番号 初回検索時は「1」 表示件数 limit MasterBuilder定義 表示開始レコード数 offset 「(ページ番号 - 1) x 表示件数」の計算結果 対象検索(select)更新画面遷移時は、対象行の一覧検索時のレスポンスパラメータ(キーが「json」のパラメータ)が設定されます。表示期間変更時は、対象行の期間検索時のレスポンスパラメータ(キーが「json」のパラメータ)が設定されます。 登録(entry)「KAIDEN.gadgetMan.getDataSet(“%編集部品のガジェットID%”)」の取得結果(編集部品への入力値)をJSON化して設定します。 更新(renew)「KAIDEN.gadgetMan.getDataSet(“%編集部品のガジェットID%”)」の取得結果(編集部品への入力値)をJSON化して設定します。 削除(remove)対象検索時のレスポンスパラメータ(キーが「json」のパラメータ)が設定されます。 有効化(toEnabled)対象行の期間検索時のレスポンスパラメータ(キーが「json」のパラメータ)が設定されます。 無効化(toDisabled)対象行の期間検索時のレスポンスパラメータ(キーが「json」のパラメータ)が設定されます。 期間検索(selectTerm)更新画面遷移時は、対象行の一覧検索時のレスポンスパラメータ(キーが「json」のパラメータ)が設定されます。表示期間変更時は、対象行の期間検索時のレスポンスパラメータ(キーが「json」のパラメータ)が設定されます。 期間分割(divideTerm)対象行の期間検索時のレスポンスパラメータ(キーが「json」のパラメータ)に次の値を追加した内容が設定されます。
パラメータ名 パラメータキー パラメータの取得元 補足 分割日 divideDate 期間分割ダイアログの分割日 期間変更(moveTerm)対象行の期間検索時のレスポンスパラメータ(キーが「json」のパラメータ)に次の値を追加した内容が設定されます。
パラメータ名 パラメータキー パラメータの取得元 補足 新開始日 newStartDate 期間変更ダイアログの新開始日 新終了日 newEndDate 期間変更ダイアログの新終了日 バリデート(認可)(authorize)JSONデータは設定されません。
5.1.2.3. Logic¶
Logicクラスは、「拡張設定」の「Logicクラス」に設定したクラスを使用します。(未設定の場合は「jp.co.slcs.kaiden.v2.base.feature.logic.kaiden.generic.impl.MasterLogic」を使用します。)Logicクラスでは、検索・登録・更新・削除などの処理を行います。Logicクラスのメソッドと主な処理内容次の通りです。
処理名 メソッド 主な処理 初期表示 index(GenericMasterSettings settings, AbstractGenericMasterForm form) メンテナンス画面の各項目設定の読み出し 一覧検索 search(GenericMasterSettings settings, AbstractGenericMasterForm form) 一覧表示用のデータ検索 対象検索 select(GenericMasterSettings settings, AbstractGenericMasterForm form) 更新用のデータ検索 登録 entry(GenericMasterSettings settings, AbstractGenericMasterForm form) 入力データの新規登録 更新 renew(GenericMasterSettings settings, AbstractGenericMasterForm form) 編集データの更新 削除 remove(GenericMasterSettings settings, AbstractGenericMasterForm form) 表示データの削除 有効化 toEnabled(GenericMasterSettings settings, AbstractGenericMasterForm form) 対象期間データの有効化 無効化 toDisabled(GenericMasterSettings settings, AbstractGenericMasterForm form) 対象期間データの無効化 期間検索 selectTerm(GenericMasterSettings settings, AbstractGenericMasterForm form) 期間一覧用のデータ検索 期間分割 divideTerm(GenericMasterSettings settings, AbstractGenericMasterForm form) 対象期間データの期間分割 期間変更 moveTerm(GenericMasterSettings settings, AbstractGenericMasterForm form) 対象期間データの期間変更 コラム
期間変更処理の変更点MasterBuilderの期間変更処理は、従来の期間変更処理と異なります。
従来の期間変更処理既に登録済みのデータの期間を変更し、空白となった期間がある場合は前後の期間を延長する。(空白となった期間は無効状態) MasterBuilderの期間変更処理既に登録済みのデータをコピーし、入力された新期間のデータとして追加する。(期間コードは新たに採番)コラム
APIを使用したメンテナンス機能を実現する場合や、独自のロジックを追加する場合はLogicクラスの拡張を行います。Controllerクラスからの起動を想定するメソッドを追加する場合はControllerクラスの拡張が必要です。データの補完や成型を行いたい場合は、後述のConverterクラスの拡張でも対応可能です。Logicクラスの各メソッドへのリクエストパラメータやレスポンスパラメータに対してデータ補完や成型が可能です。
5.1.2.4. Manager¶
Managerクラスは、「拡張設定」の「Managerクラス」に設定したコンポーネントを使用します。(未設定の場合は「masterManager」を使用します。)Managerクラスでは、SQLを利用した検索処理を行います。基本的に拡張の必要はありませんが、標準のManagerクラスでは単一のテーブルに対して処理を実装しているため、複数のテーブルに跨る処理を実装する場合に拡張を行います。(検索時のJoinなどは複数テーブルに跨りますが、SQLで実現可能なため、拡張の必要はありません。)
処理名 メソッド 一覧検索
select(GenerateService<? extends GenerateEntity> service, String sqlPath, Map<String, Object> criteria, int limit, int offset)対象検索
select(GenerateService<? extends GenerateEntity> service, String sqlPath, Map<String, Object> criteria)登録
insert(GenerateService<? extends GenerateEntity> service, List<? extends GenerateEntity> entityList)更新
update(GenerateService<? extends GenerateEntity> service, List<? extends GenerateEntity> entityList, String... includes)削除
delete(GenerateService<? extends GenerateEntity> service, Class<? extends GenerateEntity> entityClass, List<Where> criteria)有効化
select(GenerateService<? extends GenerateEntity> service, String sqlPath, Map<String, Object> criteria) update(GenerateService<? extends GenerateEntity> service, List<? extends GenerateEntity> entityList, String... includes)無効化
select(GenerateService<? extends GenerateEntity> service, String sqlPath, Map<String, Object> criteria) update(GenerateService<? extends GenerateEntity> service, List<? extends GenerateEntity> entityList, String... includes)期間検索
select(GenerateService<? extends GenerateEntity> service, String sqlPath, Map<String, Object> criteria)期間分割
select(GenerateService<? extends GenerateEntity> service, String sqlPath, Map<String, Object> criteria) insert(GenerateService<? extends GenerateEntity> service, GenerateEntity entity) update(GenerateService<? extends GenerateEntity> service, GenerateEntity entity, String... includes)期間変更
select(GenerateService<? extends GenerateEntity> service, Class<? extends GenerateEntity> entityClass, List<Where> criteria, List<OrderByItem> order) select(GenerateService<? extends GenerateEntity> service, String sqlPath, Map<String, Object> criteria) insert(GenerateService<? extends GenerateEntity> service, GenerateEntity entity) update(GenerateService<? extends GenerateEntity> service, GenerateEntity entity, String... includes) delete(GenerateService<? extends GenerateEntity> service, GenerateEntity entity)
5.1.2.5. Converter¶
Converterクラスは、「拡張設定」の「Converterクラス」に設定したクラスを使用します。(未設定の場合はConverterクラスを使用しません。)Converterクラスでは、Logicクラスへのリクエストパラメータ、Logicクラスからのレスポンスパラメータに対し、補完や成型が行えます。設定を行わない場合は、補完や成型は行われません。
画面表示は%表記だが、データ上は数値として保持(80%→0.8) 固定値の補完 カンマ区切りへの変換注意
Converterクラスの処理は各データに対して行われるため、データベースの特定データを補完する場合はLogicクラスで実装を行ってください。Converterクラスに実装した場合、一覧検索のレスポンスデータの補完などで一覧行の各行単位で処理が行われるため、SQLを実行する様な処理では、複数回SQLが実行されてしまい、レスポンス悪化が懸念されます。
5.1.2.6. シーケンス¶
サーバーサイドの処理シーケンス(概要)は次の通りです。コラム
シーケンスに記載の「Controller」「Logic」「Manager」の実際のクラスは次の通りです。シーケンスの各処理は基底クラスで実装しています。
Controller基底クラス:jp.co.slcs.kaiden.v2.base.feature.controller.kaiden.generic.AbstractMasterController実装クラス:jp.co.slcs.kaiden.v2.base.feature.controller.kaiden.generic.MasterController Logic基底クラス:jp.co.slcs.kaiden.v2.base.feature.logic.kaiden.generic.AbstractMasterLogicBase実装クラス:jp.co.slcs.kaiden.v2.base.feature.logic.kaiden.generic.impl.MasterLogic ManagerIFクラス:jp.co.slcs.kaiden.v2.base.foundation.manager.generic_master.MasterManager基底クラス:jp.co.slcs.kaiden.v2.base.foundation.manager.generic_master.AbstractMasterManager実装クラス:jp.co.slcs.kaiden.v2.base.foundation.manager.generic_master.impl.MasterManagerImpl「Converter」は、「拡張設定」の「Converterクラス」に設定していない場合は実行されません。
初期表示(index)
一覧検索(search)
対象検索(select)
登録(entry)
更新(renew)
削除(remove)
有効化(toEnabled)
無効化(toDisabled)
期間検索(selectTerm)
期間分割(divideTerm)
期間変更(moveTerm)