5.3. インポート¶
本項では、インポート機能の機能詳細を説明します。
5.3.1. インポート機能¶
5.3.1.1. 概要¶
MasterBuilderのインポート機能は、次の5つのインポート方法を提供します。ただし、非期間化マスタのインポートは、「単一期間(差分)」のみ使用可能です。
名称 モード 期間 開始日・終了日 処理方式 単一期間(差分) 1 単一期間 パラメータから取得 差分 単一期間(一新) 2 単一期間 パラメータから取得 一新 単一期間(入替) 3 単一期間 パラメータから取得 入替 複数期間(差分) 4 複数期間 各レコードから取得 差分 複数期間(入替) 5 複数期間 各レコードから取得 入替
(インポート)モードジョブパラメータに設定します。(未設定の場合は「1」が設定されたものとします。) 処理方式差分 : インポートファイルのデータと期間重複する対象マスタデータの期間を編集し、インポートファイルのデータを登録します。一新 : インポートデータの開始日以降のデータを論理削除(会社指定時は指定会社のレコードを論理削除)後、差分処理を実行します。入替 : 対象マスタの全レコードを物理削除(会社指定時は指定会社の全レコードを物理削除)し、インポートファイルのデータを登録/更新します。
5.3.1.2. ジョブパラメータ¶
インポート機能では、MasterBuilder定義やインポートジョブ(ジョブネット)に指定したパラメータによって処理を行います。詳細は「MasterBuilder定義」「インポートジョブで指定可能なパラメータ」を参照してください。
5.3.1.3. インポートファイル¶
インポートに使用するデータファイル(以降、インポートファイル)には、CSV(TSV)のフォーマットのみが使用可能です。インポートファイルの「文字コード」、「区切り文字」、「囲み文字」はどのような設定も可能ですが、動作を保障する設定値は次の値のみです。
設定 設定値 文字コード UTF-8、SHIFT-JIS 区切り文字 ,(カンマ)、\t(タブ) 囲み文字 none(囲み文字なし),”(ダブルクォーテーション)
5.3.1.4. バリデーション¶
MasterBuilderのインポート機能ではインポートデータのバリデーションを実施しています。インポートファイル中にバリデーションエラーとなるレコードが1件でも存在する場合、処理結果が「異常」となりインポート処理は行われません。ただし、インポートファイルの途中にバリデーションエラーとなるレコードが存在した場合でも、インポートファイルの全レコードのバリデーションを実行します次の様なレコードはバリデーションエラーにはなりません。
複数期間インポート時に期間重複するレコードがある場合インポートファイルの出現順で処理を行うため、重複があった場合でもそのまま処理されます。
5.3.1.5. 国際化、期間化情報¶
インポート機能での国際化情報や期間化情報の処理概要は次の通りです。
国際化情報インポートファイルには複数ロケールの国際化情報を記述することができます。(1行に1ロケールのデータを記述します。)複数ロケールをインポートする場合、1つのデータに対して複数行記述することになりますが、非国際化情報はすべて同じ内容を記載してください。異なる非国際化情報を設定した場合、特定のレコードが一定して選択されることを保証していません。(異なる非国際化情報を設定した場合でも、特定レコードに合わせる等の処理は実装していません。)インポートファイルに記載した国際化情報において、システム設定ロケールのレコードが不足している場合は処理結果は「異常」となります。また、システム設定ロケール外のレコードが存在する場合も処理結果は「異常」となります。運用開始後にシステム設定ロケールを減らした場合、システム設定ロケール外となったロケールデータの自動削除は実施しません。インポートモード(入替等)により、削除する場合があります。
システム設定ロケール「en、ja」に、「ja」ロケールのデータのみをインポートした場合「en」ロケールが不足しているため、処理結果は「エラー」となります。 システム設定ロケール「en、ja」に、「zh_CN」ロケールのデータをインポートした場合システム設定ロケールに「zh_CN」ロケールが設定されていないため、処理結果は「エラー」となります。 システム設定ロケール「en、ja」、各ロケールの非国際化項目が異なる場合そのままのデータが登録されますが、メンテナンス機能や検索機能ではログインユーザロケールのデータを取得するため、ユーザによって検索結果が異なる様な事象が発生します。 期間化情報インポートの期間がシステム開始日からシステム終了日までに満たない場合、複数期間を作成する場合があります。この場合、インポート対象の期間以外のデータは自動で補完されるものであり、任意のデータを指定することはできません。また、自動補完される期間は論理削除されたデータとなります。
5.3.2. サーバーサイド¶
5.3.2.1. Logic¶
Logicクラスは、「拡張設定」の「Logicクラス」に設定したクラスを使用します。(未設定の場合は「jp.co.slcs.kaiden.v2.base.feature.logic.kaiden.generic.impl.MasterLogic」を使用します。)Logicクラスでは、インポート処理に必要な各処理を行います。Logicクラスのメソッドと主な処理内容次の通りです。
処理名 メソッド インポートモード判定 importModeCheck(GenericMasterSettings settings, String mode) インポートカラムリスト返却 getImportColumnList(GenericMasterSettings settings, String mode) プライマリーカラムリスト返却 getImportPrimaryColumnList(GenericMasterSettings settings) インポートバリデート validateImport(GenericMasterSettings settings, Map<String, Object> record) データ一新 importRenewal(GenericMasterSettings settings, Map<String, Object> request) データ入替 importReplace(GenericMasterSettings settings, Map<String, Object> request) データインポート importData(GenericMasterSettings settings, List<Map<String, Object>> recordList)
5.3.2.2. Manager¶
Managerクラスは、「拡張設定」の「Managerクラス」に設定したコンポーネントを使用します。(未設定の場合は「masterManager」を使用します。)Managerクラスでは、SQLを利用した検索処理を行います。基本的に拡張の必要はありませんが、標準のManagerクラスでは単一のテーブルに対して処理を実装しているため、複数のテーブルに跨る処理を実装する場合に拡張を行います。(検索時のJoinなどは複数テーブルに跨りますが、SQLで実現可能なため、拡張の必要はありません。)
処理名 メソッド インポートモード判定 インポートカラムリスト返却 プライマリーカラムリスト返却 インポートバリデート データ一新
select(GenerateService<? extends GenerateEntity> service, Class<? extends GenerateEntity> entityClass, List<Where> criteria, List<OrderByItem> order) 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) delete(GenerateService<? extends GenerateEntity> service, GenerateEntity entity)データインポート
select(GenerateService<? extends GenerateEntity> service, Class<? extends GenerateEntity> entityClass, List<Where> criteria, List<OrderByItem> order) insert(GenerateService<? extends GenerateEntity> service, GenerateEntity entity) update(GenerateService<? extends GenerateEntity> service, GenerateEntity entity, String... includes) delete(GenerateService<? extends GenerateEntity> service, GenerateEntity entity)
5.3.2.3. Converter¶
Converterクラスは、「拡張設定」の「Converterクラス」に設定したクラスを使用します。(未設定の場合はConverterクラスを使用しません。)Converterクラスでは、Logicクラスへのリクエストパラメータ、Logicクラスからのレスポンスパラメータに対し、補完や成型が行えます。設定を行わない場合は、補完や成型は行われません。
画面表示は%表記だが、データ上は数値として保持(80%→0.8) 固定値の補完注意
Converterクラスの処理は各データに対して行われるため、データベースの特定データを補完する場合はLogicクラスで実装を行ってください。
5.3.2.4. シーケンス¶
サーバーサイドの処理シーケンス(概要)は次の通りです。コラム
シーケンスに記載の「各Jobクラス」「Logic」「Manager」の実際のクラスは次の通りです。シーケンスの各処理は基底クラスで実装しています。
MasterImportJobjp.co.slcs.kaiden.v2.base.feature.job.generic.MasterImportJob AbstractMasterImportJobjp.co.slcs.kaiden.v2.base.feature.job.generic.AbstractMasterImportJob AbstractGenericImportJobjp.co.slcs.kaiden.v2.base.foundation.job.AbstractGenericImportJob AbstractGenericJobjp.co.slcs.kaiden.v2.base.foundation.job.AbstractGenericJob 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クラス」に設定していない場合は実行されません。シーケンス上では省略しています。