IM共通マスタの期間化を利用してみよう

ご挨拶

みなさま初めまして、G.Mと申します。
理系出身のSE・プログラマでありながら、小説を書くのが好きだという変な技術者です。

今年から株式会社グローバル・ソリューション(以下GSOL)に中途入社致しまして、このたび本ブログの投稿を任せていただきました。

今回のテーマ

さて、今回の記事のテーマですが、intra-martが持つIM共通マスタの『期間化』についてご紹介していきます。
intra-martを導入したら、どんなことができるんだろう? とご検討中の方々の一助になれたらと思います。

Tips
intra-martってなんだろう? という方もまだまだ大勢いらっしゃるかと思われますが、気になった方はぜひ検索してみてください。
機会があれば、このブログでもあらためてご紹介するかもしれません。

マスタの期間化

1.IM共通マスタ

intra-martは、そのシステムを円滑に動かすため、『IM共通マスタ』という情報をデータベースに持っています。
マスタとは、ユーザ(社員)情報、会社・組織情報、品目(商品)情報など、システムを稼働させるにあたって欠かせない、基本的な情報のことです。

Tips
マスタについてもっとよく知りたいという方は、マスタデータやトランザクションデータをキーワードとして、調べてみてくださいね。

例えば、intra-martを使って構築した勤怠管理システムであれば、
ひとつの会社の中にいくつもの組織があり、さらにその組織それぞれに大勢の社員が所属している……という情報が、このIM共通マスタに保存されています。

マスタ情報のイメージ図
マスタ情報のイメージ図

ところで、会社ではしばしば組織の統廃合が行われます。となればもちろん、それにあわせてマスタも更新する必要があります。
廃止される組織の情報はどうすればよいでしょうか? 思い切って、データベース上からその組織の情報を物理削除してしまいましょうか?
ですがその場合、後から廃止された組織のことを調べようにも、データはもう存在しませんので、確認が難しくなってしまいます。

そんなときは、IM共通マスタが持つ『期間の分割』と『構成からの除外』という機能を活用しましょう。

2.期間の分割

IM共通マスタ上で、組織情報は期間情報を持っています。つまり、この組織は1970年1月1日から2099年12月31日まで有効ですよ、というような情報を保持しています。
期間の分割とは文字通り、その期間情報を二つに分けます。

組織分割のイメージ図
組織分割のイメージ図

『この組織は1970年1月1日から2018年7月31日で有効であり、さらに2018年8月1日から2099年12月31日まで有効である』というように、期間を分けてしまうのです。
このとき、前者を期間A、後者を期間Bとしましょう。

同じ組織でも、ある日を境に状況が変わったときなどに、この分割は役に立ちます。
この組織が2018年7月31日まで存在し、それ以降は廃止されたとするならば、期間Aをそのままにして、期間Bの情報のみ更新すればいいのです。

組織廃止のイメージ図
組織廃止のイメージ図

これなら廃止後も情報は残っていますので、将来必要になってから情報を取得することも可能です。便利ですね。

3.構成からの除外

組織を廃止する日付で期間を分割したら、廃止される期間の組織情報を修正しなくてはなりません。
通常、不必要な期間は『無効化(論理削除)』してしまえば大丈夫です。
これならば、あとから廃止組織の情報を調べることもできますし、さらに分割した別の期間で廃止組織を復活させることも容易です。組織に所属しているユーザもそのままですので、誰が所属していたかも保持しておけます。

ただし組織に関しては、『構成からの除外(論理削除)』をオススメします。
つまり、組織は有効な状態のままで、階層構造から外してしまうのです。

構成からの除外イメージ図
構成からの除外イメージ図

構成に残したまま無効化すると、組織マスタの操作画面上で組織名が赤字のまま残ってしまいます。

組織を無効化した場合
組織を無効化した場合

ですが構成から除外すれば、画面上からも組織名が消えますので、きれいに整理できますね。

組織を構成から除外した場合
組織を構成から除外した場合

構成から除外した組織は、一般ユーザの目には映らなくなります。
しかしデータとしては有効なままですので、そのまま別の組織の下部組織として配置換えするなどが可能となります。
また、退職した社員データをまとめておくための仮組織として、構成から除外した組織を利用するという手法も考えられます。

4.プログラムからの操作

期間についての操作は、IM共通マスタの各種画面から実行できますが、APIでも同じことができます。
例えば組織であれば、CompanyManagerというAPIを使います。
以下にメソッドを例示します。

メソッド名 役割 利用にあたり必要な情報
getDepartmentTerm 機関の検索 会社・組織検索条件、有効日付
separateTermDepartment 期間の分割 会社・組織検索条件、期間コード、分割日付
moveTermDepartment 期間の変更 会社・組織検索条件、期間情報

これらのメソッドを用いれば、マスタメンテナンス画面上でできるほとんどのことが、Javaプログラムでも実行できます。

Javaプログラムで操作できるということは、例えば休職申請ワークフローの案件終了時に自動で休職期間をマスタ登録したり、IM-FormaDesignerやTERASOLUNAを使って独自に作った画面上で期間の操作を行ったりもできます。
夢が広がりますね!

夢が広がっている図

Tips
APIの詳しい機能については、公式リファレンスをご覧ください。
https://www.intra-mart.jp/apidoc/iap/javadoc/im_master_apidocs/jp/co/intra_mart/foundation/master/company/CompanyManager.html

まとめ

それでは、今回のまとめです。

  • intra-martの持つマスタ情報は期間化できる!
  • 期間を分割して、過去の情報を保持できる!
  • 廃止組織は『構成から除外』しよう!

いかがでしたでしょうか?
今後は、intra-martの紹介や小ネタの共有、最新技術やITニュースにちょっと触れてみたり、弊社GSOLのお話もしていけたらと思います。

私もまだまだ勉強中の身ではございますが、これからもどうぞよろしくお願いいたします。

Final Tips
intra-martは日々進化しておりますので、今後のアップデートで仕様が変わる可能性があります。