ASTERIA MDM One MH Online Help
トップページ製品サイトインフォテリア

## 同期処理時の設定

### 同期処理時の設定とは

同期処理時の設定ではシステム間で同期するときの細かい処理の制御をおこなうことができます。

### 同期処理時の設定の表示

「同期処理時の設定」を表示するには、マッピング一覧を表示した状態で「同期処理時の設定」タブをクリックします。
同期処理時の設定の編集
「同期処理時の設定」の編集は次の手順で行います。

1. 「同期処理時の設定」を表示している状態で「編集」をクリックします。
2. 同期処理時の設定の編集画面が表示されます。
3. 変更したい内容を修正して、「保存」をクリックします。

### 同期処理時の設定で変更できる項目

同期処理時の設定で変更できる項目は次のとおりです。

基準日 | MDM One MIのマスターがソースとして使用される場合に設定します。 本日 実行時点で有効な最新データを取得します。 前日 実行時刻の日付の前日から実行日の間で有効な最新データを取得します。 前月 実行時刻の日付の前月1日から前月末の間で有効だった最新データを取得します。
フィルター | 同期時にデータを取得するためのフィルター(検索条件)を指定します。SQLのWHERE句で指定します。 選択式 フィールドと演算子を選択して値を入力します。 検索条件は複数指定することができます。 検索条件を追加したい場合は「条件追加」ボタンをクリックします。 複数の検索条件を指定した場合、すべての条件に合致するデータのみが取得されます。 保存時にSQLのWHERE句が自動生成されて設定されます。 手入力 SQLのWHERE句で指定することができます。 例：WHERE AREA='関東' 変数を使用することができます。 入力側システムがCSVの場合、フィルターを使用することはできません。 入力側システムがMDM One MIの場合、フィルターを'手入力'で設定することはできません。 入力側システムがRDBでSQLを使用してデータを取得する場合、フィルターを使用することはできません。
差分検出の処理方式 | ソースシステムの差分検出時にデータをメモリ上に展開して差分検出の処理を実行するかを指定します。 メモリ ソースマスターコピーテーブル(前回分)のすべてのデータをメモリ上に展開して差分検出の処理を実行します。 データベース 一件ずつデータベースに問い合わせながら差分検出の処理を実行します。 入力側システムがソースシステムとなる場合に設定できます。 処理方式を"メモリ"に設定すると処理速度は速いですが、ソースマスターコピーテーブル(前回分)のすべてのデータをメモリに展開しますので、十分なメモリを確保したうえで実行するようにしてください。
削除マッピングの処理方式 | 削除時に出力側システムのデータベースのレコードを物理削除するか、論理削除するかを指定します。 物理削除 DELETE文で物理的にレコードを削除します。 論理削除 UPDATE文で削除フラグ等をマッピングしてレコードを更新します。 ただし、入力側のシステムが論理削除の場合、必ず更新扱いになるのでこの項目は無効となります。
マッピングのエラー処理 | マッピング処理でエラーが発生した場合、そのレコードの処理をどうするかを指定します。たとえば、関数でエラーになったような場合です。 エラーとする マッピングでエラーになったレコードがあった場合、同期処理をエラーで中止します。出力側システムのデータは更新されません。 無視する マッピングがエラーになったレコードをスキップし、同期処理を行います。正常にマッピング処理が行えたレコードのみが出力側システムに反映されます。無視されたレコードの情報はログで確認できます。
同期処理時のエラー処理 | 出力側システムにデータを書き込むときにエラーが発生した場合、そのレコードをどう処理するかを指定します。 エラーとする 書き込み処理がエラーになったレコードがあった場合、同期処理をエラーで中止します。出力側システムのデータは更新されません。 強制的に更新する 追加の場合にレコードが既に存在する場合は既存のレコードを更新します。 更新の場合に該当するレコードが存在しない場合はレコードを追加します。 削除の場合に該当するレコードが存在しない場合は物理削除/論理削除の設定にかかわらず無視します。 無視する 書き込み処理がエラーになったレコードをスキップし、同期処理を行います。正常に書き込めたレコードのみが出力側システムに反映されます。無視されたレコードの情報はログで確認できます。

### 強制的に更新する場合のマッピング

同期処理時のエラー処理で「強制的に更新する」を指定した場合、既存のレコードの有無にかかわらず更新が行われます。
例えば、入力側のシステムで追加されたレコードに対して、出力側ですでにレコードが存在する場合は更新レコードとして処理します。このとき、マッピングアクティビティは追加アクティビティではなく、更新アクティビティが実行されます。
センターリポジトリを初期化した後に同期を実行したような場合、あるいは、全く初回の同期時のような場合、ソースシステムに存在するレコードはすべて追加扱いとなりセンターリポジトリに追加されます。しかし、ターゲットシステムでは運用上すでにマニュアル操作などでそれらのレコードが登録されていることがあります。このような場合、既存のレコードに対して、マッピングしたデータを書き込むことができます。
逆に、入力側のシステムで更新されたレコードに対して、出力側にレコードがない場合は追加レコードとして処理します。このとき、マッピングアクティビティは更新アクティビティではなく、追加アクティビティが実行されます。
何らかの理由でターゲットシステムにはないレコードがソースシステムには存在するような場合、ソースシステムから更新レコードとして検出されたレコードがセンターリポジトリに登録されますが、ターゲットには追加しなければならないようなケースで利用できます。

### PostgreSQL利用時の注意

PostgreSQLを利用する場合、PostgreSQLの仕様で一度エラーになったJDBCコネクションに対して処理を続行することができません。このため、出力側システムにPostgreSQLを利用する場合、同期処理時のエラー処理に「無視する」を指定することはできません。

### フィルターの入力方式が選択式で設定できる演算子

指定できる演算子は以下のとおりです。

演算子 | 説明
--- | ---
= | 対象のカラムの値が指定した値と等しい
> | 対象のカラムの値が指定した値より大きい
< | 対象のカラムの値が指定した値より小さい
>= | 対象のカラムの値が指定した値より大きい、もしくは等しい
<= | 対象のカラムの値が指定した値より小さい、もしくは等しい
<> | 対象のカラムの値が指定した値と等しくない
IN | 対象のカラムの値が指定した値に含まれる。値はカンマで区切って指定します。
NOT IN | 対象のカラムの値が指定した値に含まれない。値はカンマで区切って指定します。
IS NULL | 対象のカラムの値がNULL
IS NOT NULL | 対象のカラムの値がNULLではない
LIKE | 対象のカラムの値に指定した単語パターンに一致
次の単語が含まれる | 対象のカラムの値に指定した単語が含まれる