8. 共通マスタ同期仕様¶
IM-共通マスタとアプリケーション共通マスタの同期処理の仕様を説明します。同期処理とは IM-共通マスタに対して行われるデータ更新処理(追加、更新、削除)に応じてアプリケーション共通マスタに対してデータ更新処理を行うことでIM-共通マスタとアプリケーション共通マスタのデータ構造を可能な限り同一にすることを目的とした処理を指します。
8.1. 基本仕様¶
8.1.2. 同期対象¶
同期対象となるエンティティは以下の通りです。
- ユーザ
- 会社・組織
- パブリックグループ
- プライベートグループ
8.1.2.1. 同期対象 - ユーザ¶
ユーザエンティティに関して同期対象となるテーブルを以下に示します。同期対象テーブル
IM-共通マスタ アプリケーション共通マスタ imm_user b_m_user_bb_m_user_tb_m_user_t_i同期対象外のテーブル
対象外のテーブル imm_user_ctg imm_user_ctg_ath imm_user_ctg_itm
8.1.2.2. 同期対象 – 会社・組織¶
会社・組織エンティティに関して同期対象となるテーブルを以下に示します。対象となる組織、役職は、IM-共通マスタのデフォルトセットのみとなります。同期対象テーブル
IM-共通マスタ アプリケーション共通マスタ imm_company b_m_company_b imm_company_post b_m_company_post_bb_m_company_post _tb_m_company_post _t_i imm_department b_m_department_bb_m_department_tb_m_department_t_i imm_department_ath(imm_department_post_ath) b_m_department_attach_bb_m_department_attach_tb_m_department_main_bb_m_department_main_t imm_department_inc_ath b_m_company_version_bb_m_department_inclusion_b imm_department_ctg_ath(imm_department) b_m_company_category_bb_m_company_category_t同期対象外のテーブル
対象外のテーブル imm_department_ctg imm_department_ctg_itm imm_department_setimm_user_ctg
8.1.2.3. 同期対象 – パブリックグループ¶
パブリックグループエンティティに関して同期対象となるテーブルを以下に示します。同期対象テーブル
IM-共通マスタ アプリケーション共通マスタ imm_public_grp b_m_public_group_bb_m_public_group_tb_m_public_group_t_i imm_public_grp_set b_m_public_group_set_b imm_public_grp_ath b_m_public_group_attach_bb_m_public_group_attach_t imm_public_grp_inc_ath b_m_public_group_version_bb_m_public_group_inclusion_b imm_public_grp_ctg_ath(imm_public_grp) b_m_public_group_category_bb_m_public_group_category_t同期対象外のテーブル
対象外のテーブル imm_public_grp_ctg imm_public_grp_ctg_ath imm_public_grp_role imm_public_grp_role_ath
8.1.2.4. 同期対象 – プライベートグループ¶
プライベートグループエンティテイに関して同期対象となるテーブルを以下に示します。同期対象テーブル
IM-共通マスタ アプリケーション共通マスタ imm_private_grp bb_m_private_group_b imm_private_grp_ath b_m_private_group_attach_b
8.1.3. 基本共通動作¶
同期処理に関して共通的に存在する動作について、仕様を以下に示します。
8.1.3.1. 論理削除¶
IM-共通マスタから新しく導入された概念として、論理削除があります。しかし、アプリケーション共通マスタでは論理削除という概念はありません。この点に関して同期処理では、IM-共通マスタで論理削除(無効化)された場合にアプリケーション共通マスタの該当する期間データの物理削除を行います。また、論理削除の結果すべての期間が無効化された場合、アプリケーション共通マスタでは期間データおよび基本データの物理削除を行います。論理削除からの復帰時(有効化)にはアプリケーション共通マスタの対応する期間データを作成します。また、すべての期間が無効化されていたデータに対してある一期間が有効化された場合、アプリケーション共通マスタでは対象の期間データおよび基本データの作成を行います。前述の通り、IM-共通マスタにおいて論理削除は論理削除対象に関連するデータ(例:組織と組織所属)が有効な状態(非論理削除)のまま、論理削除を行うことが可能です。この点に関してアプリケーション共通マスタへの同期処理時には、整合性の制約から関連するデータも同時に削除されることになります。逆に、そのようなデータが有効化された場合には同時に削除されたデータの復帰処理が行われます。上記の場合であれば、他にも内包構成、組織所属役職、分類所属といったものも有効な期間が存在している場合には削除・復帰処理が行われることになります。
8.1.3.2. 所属¶
アプリケーション共通マスタでは、所属させる期間は所属対象および被所属対象の有効期間が重なる期間にのみ設定を行えるという制限がありました。これに関して、IM-共通マスタでは所属に関して従来に比べて制限が緩和され、所属対象および被所属対象の有効期間に縛られず所属期間が設定でき、自由度が増す形となっています。この点に関して同期処理では、IM-共通マスタの所属データを上記の制限からそのまま作成することは出来ません。そこで、所属対象および被所属対象の有効期間を考慮した所属期間を算出し、その期間を元にアプリケーション共通マスタに対してデータの作成を行います。また、所属期間そのものでなく所属対象および被所属対象の期間変更が行われ、結果的に所属期間に変化が起きた場合もその都度変更を反映させます。
8.1.3.3. 内包¶
アプリケーション共通マスタでは、ある構成期間(バージョン)に対して内包させる被内包データはその構成期間内に連続して有効な期間を持たなくてはならない、という制限がありました。これに関して、IM-共通マスタでは内包に関して従来に比べて制限が緩和され、被内包データの期間は内包構成期間に縛られず設定でき、自由度が増す形となっています。この点に関して同期処理では、IM-共通マスタの内包データを上記の制限からそのまま作成することは出来ません。内包する構成期間および被内包対象の有効期間を考慮したうえで、アプリケーション共通マスタの制限に沿うように構成期間を調整・分割し、データ作成を行います。また、所属の場合と同様に被内包対象の期間変更が行われ、結果的にその内包期間に変化が起きた場合もその都度変更を反映し、必要に応じてバージョンの分割等の調整を行います。上記仕様により、内包や被内包対象の期間操作は、その操作によって非常に多くのバージョン分割が行われる可能性があることを示唆しています。
8.1.3.4. 分類¶
IM-共通マスタとアプリケーション共通マスタでは分類とその所属情報の考え方が異なります。具体的には以下の通りです。
- アプリケーション共通マスタでは、共通の分類区分・分類区分詳細を特定のエンティティ(会社組織、パブリックグループの二つ)が紐付けて所属させる形を取る。
- IM-共通マスタでは、各エンティティにそれぞれの分類・分類項目を持ち、それらに対して紐付けて所属させる形を取る。
両共通マスタの分類の構成を以下の図に示す。これら構成の違いから、分類に関する同期処理は以下の条件の下に行われます。
- 同期処理は原則として、両アプリケーション共通マスタに存在する分類・分類項目(分類詳細)にのみ適応されます。
- これより、実際の同期処理は会社組織・パブリックグループの分類に関してのみ行われます。
- 同期対象は分類の所属情報のみとする。分類、分類項目の追加、更新、削除に関しては同期処理を行わない。
- ただし、分類、分類項目の削除(論理・物理)処理によって、それに関する所属情報が消える場合にはその所属情報の変更のみ同期処理を行うものとする。
8.2. 詳細仕様¶
8.2.1. 概要¶
IM-共通マスタとアプリケーション共通マスタとでは内容によっては決定的に仕様が異なり、完全な同期を行うことが不可能な場合があります。当項目ではそれらの同期を行う際の代替的な仕様・動作についての詳細説明を行います。
8.2.2. 会社組織 – 会社組織セット¶
IM-共通マスタの会社組織エンティティには新しく会社組織セットテーブルが追加されました。これにより、従来の[会社]-[組織]という関係は、[会社]-[組織セット]-[組織]という関係に変更されました。この会社と組織の関係の相違により、IM-共通マスタの会社組織データをそのまま全て同期することは不可能です。以上の関係を考慮し、同期処理では会社組織の同期対象を会社のデフォルト組織セット(会社作成時、同時に作成される会社コードと同一の組織セットコードを持つ組織セット)に限定しています。これは組織セットに紐付く組織、役職、所属、内包といったもの全てにおいて限定されています。この対応関係から、IM-共通マスタのデフォルト組織セット自体や会社期間が全て無効化(または削除された場合、アプリケーション共通マスタでは会社自体の削除が行われます。
8.2.3. 会社組織 – 役職・組織所属役職¶
IM-共通マスタでは一人のユーザに対してある所属期間に複数の役職を設定できるようになりました。しかし、アプリケーション共通マスタではユーザに設定できる役職は所属期間に唯一つのみとなっています。この組織所属役職に関しての仕様の相違に関して、同期処理では設定されている役職のうち最もランクの高いものを同期対象として処理を行います(同じランクの場合、始めにつけたほうが優先されます)。この組織所属役職のランクによる紐付けは、IM-共通マスタにおいて役職のランクの更新が起きた場合にも逐次反映されます。また、所属である為に「所属」で記述されている制限が適応されます。以上から、組織所属役職はIM-共通マスタの「所属」制限と「ランク」による優先度によって最終的に決定されることになります。
8.3. 同期処理を行わないようにする¶
「互換基本機能」(モジュール)を含めた場合、標準ですべてのテナントに対して同期処理が行われます。すべてのテナントに対して同期処理を行わないようにするためは、「共通マスタ同期無効化オプション」(モジュール)を含めて、デプロイしてください。
8.4. テナントごとに同期処理の実施有無を設定する¶
「互換基本機能」(モジュール)を含めた場合、標準ですべてのテナントに対して同期処理が行われます。同期処理の実施有無をテナントごとに設定するためは、IM-Juggling で次の設定を行いWARファイルを作成し、デプロイしてください。
IM-Juggling のプロジェクトに「plugin/jp.co.intra_mart.master.standard.sync_7.2.x.groups」フォルダを作成し、そのフォルダ内に以下のような plugin.xml を配置してください。各拡張ポイントの accessor の groups属性 には同期を行う対象のテナントをカンマ区切りで記載してください。以下は「default」テナントでのみ同期処理を行う場合の設定例です。<?xml version="1.0" encoding="utf-8"?> <plugin> <extension point="jp.co.intra_mart.foundation.master.accessor.company" > <accessor name="standard.sync" id="jp.co.intra_mart.standard.sync" version="7.2.1" enable="true" groups="default" rank="100" > <listener class="jp.co.intra_mart.system.master.sync.SynchronousCompanyListener" /> </accessor> </extension> <extension point="jp.co.intra_mart.foundation.master.accessor.public_group" > <accessor name="standard.sync" id="jp.co.intra_mart.standard.sync" version="7.2.1" enable="true" groups="default" rank="100" > <listener class="jp.co.intra_mart.system.master.sync.SynchronousPublicGroupListener" /> </accessor> </extension> <extension point="jp.co.intra_mart.foundation.master.accessor.user" > <accessor name="standard.sync" id="jp.co.intra_mart.standard.sync" version="7.2.1" enable="true" groups="default" rank="100" > <listener class="jp.co.intra_mart.system.master.sync.SynchronousUserListener" /> </accessor> </extension> <extension point="jp.co.intra_mart.foundation.master.accessor.private_group" > <accessor name="standard.sync" id="jp.co.intra_mart.standard.sync" version="7.2.1" enable="true" groups="default" rank="100" > <listener class="jp.co.intra_mart.system.master.sync.SynchronousPrivateGroupListener" /> </accessor> </extension> <extension point="jp.co.intra_mart.foundation.master.backup" > <accessor name="standard.sync" id="jp.co.intra_mart.standard.sync" version="7.2.1" enable="true" groups="default" rank="100" > <backuper category="standard" class="jp.co.intra_mart.system.datastore.common.backup.impl.StandardCompanyBackuperImpl" /> <backuper category="standard" class="jp.co.intra_mart.system.datastore.common.backup.impl.StandardPublicGroupBackuperImpl" /> <backuper category="standard" class="jp.co.intra_mart.system.datastore.common.backup.impl.StandardUserBackuperImpl" /> </accessor> </extension> </plugin>
注意
本機能は intra-mart Accel Platform 2015 Winter(Lydia) 以降で利用できます。
注意
プラグインの仕様については、「 プラグイン仕様書 」を参照してください。