intra-mart Accel Platform 互換ガイド 第11版 2023-10-31

8. 共通マスタ同期仕様

IM-共通マスタとアプリケーション共通マスタの同期処理の仕様を説明します。

同期処理とは IM-共通マスタに対して行われるデータ更新処理(追加、更新、削除)に応じてアプリケーション共通マスタに対してデータ更新処理を行うことでIM-共通マスタとアプリケーション共通マスタのデータ構造を可能な限り同一にすることを目的とした処理を指します。

8.1. 基本仕様

8.1.1. 概要

当項目では、同期処理を行う上で対象となるエンティティおよびテーブル、また各エンティティにおいて共通する同期処理の仕様についての説明を行います。

8.1.2. 同期対象

同期対象となるエンティティは以下の通りです。
  • ユーザ
  • 会社・組織
  • パブリックグループ
  • プライベートグループ

8.1.2.1. 同期対象 - ユーザ

ユーザエンティティに関して同期対象となるテーブルを以下に示します。

同期対象テーブル

IM-共通マスタ アプリケーション共通マスタ
imm_user
b_m_user_b
b_m_user_t
b_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_b
b_m_company_post _t
b_m_company_post _t_i
imm_department
b_m_department_b
b_m_department_t
b_m_department_t_i
imm_department_ath
(imm_department_post_ath)
b_m_department_attach_b
b_m_department_attach_t
b_m_department_main_b
b_m_department_main_t
imm_department_inc_ath
b_m_company_version_b
b_m_department_inclusion_b
imm_department_ctg_ath
(imm_department)
b_m_company_category_b
b_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_b
b_m_public_group_t
b_m_public_group_t_i
imm_public_grp_set
b_m_public_group_set_b
imm_public_grp_ath
b_m_public_group_attach_b
b_m_public_group_attach_t
imm_public_grp_inc_ath
b_m_public_group_version_b
b_m_public_group_inclusion_b
imm_public_grp_ctg_ath
(imm_public_grp)
b_m_public_group_category_b
b_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-共通マスタで論理削除(無効化)された場合にアプリケーション共通マスタの該当する期間データの物理削除を行います。
また、論理削除の結果すべての期間が無効化された場合、アプリケーション共通マスタでは期間データおよび基本データの物理削除を行います。
../../_images/sync_2_1.png

無効化された場合の新旧データ構造の変化

論理削除からの復帰時(有効化)にはアプリケーション共通マスタの対応する期間データを作成します。
また、すべての期間が無効化されていたデータに対してある一期間が有効化された場合、アプリケーション共通マスタでは対象の期間データおよび基本データの作成を行います。
../../_images/sync_2_2.png

有効化された場合の新旧データ構造の変化

前述の通り、IM-共通マスタにおいて論理削除は論理削除対象に関連するデータ(例:組織と組織所属)が有効な状態(非論理削除)のまま、論理削除を行うことが可能です。
この点に関してアプリケーション共通マスタへの同期処理時には、整合性の制約から関連するデータも同時に削除されることになります。
逆に、そのようなデータが有効化された場合には同時に削除されたデータの復帰処理が行われます。
../../_images/sync_2_3.png

関連データを含む論理削除

上記の場合であれば、他にも内包構成、組織所属役職、分類所属といったものも有効な期間が存在している場合には削除・復帰処理が行われることになります。

8.1.3.2. 所属

アプリケーション共通マスタでは、所属させる期間は所属対象および被所属対象の有効期間が重なる期間にのみ設定を行えるという制限がありました。
これに関して、IM-共通マスタでは所属に関して従来に比べて制限が緩和され、所属対象および被所属対象の有効期間に縛られず所属期間が設定でき、自由度が増す形となっています。

この点に関して同期処理では、IM-共通マスタの所属データを上記の制限からそのまま作成することは出来ません。
そこで、所属対象および被所属対象の有効期間を考慮した所属期間を算出し、その期間を元にアプリケーション共通マスタに対してデータの作成を行います。
../../_images/sync_2_4.png

所属期間の決定方法(例:ユーザの組織所属)

また、所属期間そのものでなく所属対象および被所属対象の期間変更が行われ、結果的に所属期間に変化が起きた場合もその都度変更を反映させます。
../../_images/sync_2_5.png

所属期間の間接的な変更(例:ユーザの有効期間更新)

8.1.3.3. 内包

アプリケーション共通マスタでは、ある構成期間(バージョン)に対して内包させる被内包データはその構成期間内に連続して有効な期間を持たなくてはならない、という制限がありました。
これに関して、IM-共通マスタでは内包に関して従来に比べて制限が緩和され、被内包データの期間は内包構成期間に縛られず設定でき、自由度が増す形となっています。

この点に関して同期処理では、IM-共通マスタの内包データを上記の制限からそのまま作成することは出来ません。
内包する構成期間および被内包対象の有効期間を考慮したうえで、アプリケーション共通マスタの制限に沿うように構成期間を調整・分割し、データ作成を行います。
../../_images/sync_2_6.png

内包期間の基本概念の例(組織内包)

また、所属の場合と同様に被内包対象の期間変更が行われ、結果的にその内包期間に変化が起きた場合もその都度変更を反映し、必要に応じてバージョンの分割等の調整を行います。
../../_images/sync_2_7.png

内包期間の被内包対象の期間更新

上記仕様により、内包や被内包対象の期間操作は、その操作によって非常に多くのバージョン分割が行われる可能性があることを示唆しています。

8.1.3.4. 分類

IM-共通マスタとアプリケーション共通マスタでは分類とその所属情報の考え方が異なります。具体的には以下の通りです。
  • アプリケーション共通マスタでは、共通の分類区分・分類区分詳細を特定のエンティティ(会社組織、パブリックグループの二つ)が紐付けて所属させる形を取る。
  • IM-共通マスタでは、各エンティティにそれぞれの分類・分類項目を持ち、それらに対して紐付けて所属させる形を取る。
両共通マスタの分類の構成を以下の図に示す。
../../_images/sync_2_8.png

分類の構成の相違点

これら構成の違いから、分類に関する同期処理は以下の条件の下に行われます。
  • 同期処理は原則として、両アプリケーション共通マスタに存在する分類・分類項目(分類詳細)にのみ適応されます。
  • これより、実際の同期処理は会社組織・パブリックグループの分類に関してのみ行われます。
  • 同期対象は分類の所属情報のみとする。分類、分類項目の追加、更新、削除に関しては同期処理を行わない。
  • ただし、分類、分類項目の削除(論理・物理)処理によって、それに関する所属情報が消える場合にはその所属情報の変更のみ同期処理を行うものとする。

8.2. 詳細仕様

8.2.1. 概要

IM-共通マスタとアプリケーション共通マスタとでは内容によっては決定的に仕様が異なり、完全な同期を行うことが不可能な場合があります。

当項目ではそれらの同期を行う際の代替的な仕様・動作についての詳細説明を行います。

8.2.2. 会社組織 – 会社組織セット

IM-共通マスタの会社組織エンティティには新しく会社組織セットテーブルが追加されました。
これにより、従来の[会社]-[組織]という関係は、[会社]-[組織セット]-[組織]という関係に変更されました。
../../_images/sync_3_1.png

会社と組織の関係

この会社と組織の関係の相違により、IM-共通マスタの会社組織データをそのまま全て同期することは不可能です。

以上の関係を考慮し、同期処理では会社組織の同期対象を会社のデフォルト組織セット(会社作成時、同時に作成される会社コードと同一の組織セットコードを持つ組織セット)に限定しています。
これは組織セットに紐付く組織、役職、所属、内包といったもの全てにおいて限定されています。
../../_images/sync_3_2.png

同期の対象範囲

この対応関係から、IM-共通マスタのデフォルト組織セット自体や会社期間が全て無効化(または削除された場合、アプリケーション共通マスタでは会社自体の削除が行われます。
../../_images/sync_3_3.png

会社が削除される場合

8.2.3. 会社組織 – 役職・組織所属役職

IM-共通マスタでは一人のユーザに対してある所属期間に複数の役職を設定できるようになりました。
しかし、アプリケーション共通マスタではユーザに設定できる役職は所属期間に唯一つのみとなっています。

この組織所属役職に関しての仕様の相違に関して、同期処理では設定されている役職のうち最もランクの高いものを同期対象として処理を行います(同じランクの場合、始めにつけたほうが優先されます)。
../../_images/sync_3_4.png

組織所属役職の同期

この組織所属役職のランクによる紐付けは、IM-共通マスタにおいて役職のランクの更新が起きた場合にも逐次反映されます。
../../_images/sync_3_5.png

役職のランクの更新した場合

また、所属である為に「所属」で記述されている制限が適応されます。
../../_images/sync_3_6.png

組織所属役職と役職の有効期間

以上から、組織所属役職はIM-共通マスタの「所属」制限と「ランク」による優先度によって最終的に決定されることになります。
../../_images/sync_3_7.png

役職の有効期間とランクによる組織所属役職の更新例

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) 以降で利用できます。

注意

プラグインの仕様については、「 プラグイン仕様書 」を参照してください。