上述のように、第1〜第3技術においてサーバの集約化による重複した運用管理コストを削減する機能は、提供されていない。
先進的な顧客における業務集約においては、人力によるカレンダ定義の共通化を実施している。しかしながら、人手に多大なコストを要し、人的ミスによる問題も発生している。
そのため、人手を必要としない機械的なカレンダ定義の共通化によって管理対象数を削減することが、業務集約による運用管理コスト削減の実現に必要である。
業務システムや業務システム内の個々のサブシステムが、通常は業務目的の単位と対応する関係となる。入力に対して様々なデータを抽出・加工や集計処理を行って業務目的であるデータを得ることがバッチ処理の役割である。
バッチ処理をどの日に実行するのかを定義するカレンダ定義は、業務目的を基点に決定されるものである。例えば、販売した商品に対する対価をいつまでに確実に得るためには、入金チェックをいつ実施し、入金までの猶予期間を換算して請求日をいつにするのかという具合に、バッチ処理の実行日が決まっていく。つまり、関連する処理間では業務目的となる共通の基準日がある。
また、別の例では、工場での生産工程を管理する業務の場合、工場ごとに工程管理業務を行う必要がある。このようなケースでは物理的な拠点ごとに業務目的が設定され、拠点に依存したカレンダ定義が管理される。
このように、業務システムの設計を行う上では、最初に、ある目的を達成するための業務処理の単位(業務システム全体や業務システムに属する個々のサブシステム)や工場などの拠点の単位で目的となるデータをいつまでに得たいのかが決定される。
次に、その期限までに目的となるデータを取得することを実現するための一連の個々のバッチ処理をいつ実行するのかが決定される。そして、その決定に沿う形で、カレンダ定義が作成されていく。
本実施形態では、業務目的を達成するために構成される一連の業務処理(ジョブ群)の単位を見極め、その業務処理単位でカレンダを共通化するアプローチにより、業務の運用管理コストの削減をする。
例えば、個別に定義・管理されるカレンダ定義情報が同一のカレンダ定義である場合には共通利用を行うことで数の削減を行うことができ、管理コストが削減できる。
また、ある業務処理についてのカレンダ定義が、別の業務処理のカレンダ定義との間に、例えば常に3日の前後関係がある場合もカレンダ定義を共通利用することができる。例えば、一方の業務処理のカレンダ定義について、3日間のシフト定義を行って業務目的に沿ったカレンダ定義とすることができる。これにより、直感的で解り易くなり、かつ管理コストも削減できる。
本実施形態では、データベースにおいて管理されるテーブルの性質に基づいて、業務目的を達成するために構成される一連の業務処理(ジョブ群)の単位を判別する。例えば、ある業務システムでは、データベースのテーブルには、台帳情報に該当するマスタテーブルと、日々の業務処理で生成される伝票情報に該当するトランザクションテーブルがある。例えば、マスタテーブルとして、商品マスタテーブル(商品名、商品コード、分類コード、単価、・・・)、在庫マスターテーブル(商品名、数量、・・・)がある。また、トランザクションテーブルとして、生産実績トランザクションテーブル(商品名、ロット番号、製造日付、数量)、出荷予実トランザクションテーブル(商品名、出荷先、出荷予定日時、出荷日時、輸送手段、数量)がある。
同じ伝票情報、つまり同じトランザクションテーブルを介して接続関係にある業務処理は、業務目的を達成するための一連の業務処理の単位であるといえる。ただし、業務全体を俯瞰して業務システムの運用状態が正常であることを確認するためのジョブは、業務処理の単位をまたいでトランザクションテーブルにアクセスするため、運用監視ジョブを経由して接続関係にあっても、一連の業務処理の単位とはみなさない。
この点に着目し、本実施形態では、以下の方法でカレンダ定義の共通化ができるか否かを決定し、共通化できる場合にはマージを行う。
図1は、本実施形態におけるジョブ実行カレンダ管理装置の一例を示す。ジョブ実行カレンダ管理装置1は、取得部2と、特定部3と、グループ化部4を含む。
取得部2は、1以上の情報処理システムから、アクセステーブル情報と、複数のカレンダ情報と、種別情報とを取得する。ここで、処理を実行する複数のジョブを起動させるタイミングをそれぞれ示す複数のカレンダ情報に基づいて複数のジョブを動作させる情報処理システムである。アクセステーブル情報は、複数のジョブのそれぞれが複数のテーブルのいずれにアクセスしたかを示す。種別情報は、複数のジョブのアクセスにより複数のテーブルに対して行われたデータ操作それぞれの種別を示す。取得部2の一例として、後述するカレンダ管理装置31によるS1の処理または統合部52によるS21,S22,S23−1の処理が挙げられる。
特定部3は、種別情報に基づいて、複数のテーブルから、複数のジョブのいずれかにより追加された情報を格納するテーブルである、トランザクションテーブルを特定する。特定部3の一例として、後述するカレンダ管理装置31によるS2の処理または統合部52によるS23−4の処理が挙げられる。
グループ化部4は、アクセステーブル情報に基づいて、複数のカレンダ情報のうち、トランザクションテーブルのうち同じトランザクションテーブルへアクセスするジョブに対応するカレンダ情報を、グループ化する。グループ化部4の一例として、後述するカレンダ管理装置31によるS5の処理または統合部52によるS26の処理が挙げられる。
このように構成することにより、カレンダ情報に応じて実行するジョブが稼動するシステムにおいて、業務処理単位で用いられるカレンダを特定することができる。
また、特定部3は、種別情報がテーブルへのデータの追加を示す場合、テーブルをトランザクションテーブルと判定する。
このように構成することにより、ジョブがアクセスするテーブルがマスタテーブルか、トランザクションテーブルかの判別をすることができる。
ジョブ実行カレンダ管理装置1は、さらに、除去部5を含む。除去部5は、複数のジョブそれぞれの起動条件及び異常終了した場合の動作態様を定義するジョブ定義情報に基づいて、複数のジョブから、一定時間間隔で起動し、かつ異常終了した場合には再起動するジョブを除外する。除去部5の一例として、後述するカレンダ管理装置31によるS4の処理または統合部52によるS24の処理が挙げられる。
このように構成することにより、運用監視目的のジョブを除外して、業務目的のジョブを残すことができる。
グループ化部4は、グループ化の結果、統合するカレンダ情報の候補を抽出する。
このように構成することにより、カレンダ情報の共通化を図ることができる。
グループ化部4は、抽出した候補をさらにカレンダの周期に基づいてグループ化する。グループ化部4は、その周期に基づいて形成されたグループ毎に、いずれかの候補を基準カレンダ情報とし、他の候補に対応するジョブに、準カレンダ情報を関係付ける。それと共に、グループ化部4は、他の候補と基準カレンダ情報との日にちの差分を保持させる。
このように構成することにより、異なる内容のカレンダ情報であっても、共通化を図ることができる。
以下では、本実施形態についてさらに詳述する。
図2は、本実施形態を説明するための業務システムの一例である。図2には、工場Aシステム11を形成する1以上のサーバ(以下、「工場Aシステム」と称する。)と、本社システム21を形成する1以上のサーバ(以下、「本社システム」と称する。)がある。
本社システム21では、出荷指示ジョブ22が稼動する。出荷指示ジョブ22は、カレンダCAL201を使用している。出荷指示ジョブ22は、本社営業日(CAL201)を用いて、出荷予定情報を出荷予実テーブル19に書き込むように指示する。
工場Aシステム11は、製品テーブル16、生産実績テーブル17、在庫テーブル18、出荷予実テーブル19を含む。また、工場Aシステム11では、生産管理ジョブ12、運用管理ジョブ13、在庫登録ジョブ14、出荷ジョブ15が稼動する。
製品テーブル16は、製品を管理するテーブルであって、例えば、製品名、製品コード、分類コード、単価等の項目を含む。
生産実績テーブル17は、製品の生産の実績について管理するテーブルであって、例えば、製品名、ロット番号、製造日付、数量等の項目を含む。
在庫テーブル18は、製品の在庫を管理するテーブルであって、例えば、製品名、数量等の項目を含む。
出荷予実テーブル19は、製品の出荷意の予定と実績を管理するテーブルであって、例えば、商品名、出荷先、出荷予定日時、出荷日時、輸送手段、数量等を含む。
生産管理ジョブ12は、カレンダCAL101を使用している。生産管理ジョブ12は、工場Aの稼働日(CAL101)の一日の終わりに、製品テーブル16を参照し、その日工場Aで生産した製品の情報を生産実績テーブル17に書き込む。
在庫登録ジョブ14は、カレンダCAL102を使用している。在庫登録ジョブ14は、工場Aの稼働日(CAL102)の一日の終わりに、生産実績テーブルの情報を読み込み、その読み込んだ情報に基づいて在庫テーブル18を更新する。
出荷ジョブ15は、カレンダCAL103を使用している。出荷ジョブ15は、本社営業日(CAL103)の一日の終わりに、工場Aからの出荷実績情報を出荷予実テーブル19に書き込み、在庫テーブル18に登録される在庫情報を更新する。
運用監視ジョブ13は、カレンダCAL104を使用している。運用監視ジョブ13は、カレンダCAL104に基づいて各テーブルのデータ増減状態を監視する。監視の結果、異常が検出された場合、運用監視ジョブ13は、システム管理者へと通知を行う。
カレンダ管理装置31は、ジョブを実行させるタイミングが設定されたカレンダを管理する。カレンダ管理装置31は、本実施形態では具体的には、バッチシステムの集約後に、バッチ処理で使用するデータの流れから業務処理の単位を特定して、カレンダを統合するか否かを判別し、同一の業務目的のカレンダを統合する。
カレンダ管理装置31は、ジョブ名・テーブル名関係テーブル32、種別関係テーブル33、テーブルアクセス情報テーブル34、周期性テーブル35を含む。
ジョブ名・テーブル名関係テーブル32は、ジョブがどのテーブルにアクセスするかを管理するテーブルである。
種別関係テーブル33は、テーブル種別及び、ジョブの目的種別を管理するテーブルである。テーブル種別とは、そのテーブルがマスタテーブルか、トランザクションテーブルかを判定するための種別である。目的種別とは、そのジョブが業務目的か、運用監視目的かを判定するための種別である。
テーブルアクセス情報テーブル34は、ジョブ名・テーブル名関係テーブル32に登録されたテーブル毎に生成されるテーブルであり、対象のテーブルに対するアクセス履歴を管理する。
周期性テーブル35は、テーブルアクセス情報テーブル34から、対象テーブルに対するデータ操作の実施時期の周期性を抽出し、抽出した対象テーブルに対するデータ操作の実施時期の周期性を管理する。
図3は、本実施形態におけるジョブ名・テーブル名関係テーブルの一例を示す。ジョブ名・テーブル名関係テーブル32は、「ジョブ名」、「アクセス日時」、「テーブル名」の項目を含む。「ジョブ名」には、ジョブを識別する識別情報が格納される。「アクセス日時」にはそのジョブがそのテーブルにアクセスした日時がアクセスされる。「テーブル名」には、テーブルを識別する識別情報が格納される。
図4は、本実施形態における種別関係テーブルの一例を示す。種別関係テーブル33は、「ジョブ名」、「テーブル名」、「テーブル種別」、「目的種別」の項目を含む。「ジョブ名」には、ジョブを識別する識別情報が格納される。「テーブル名」には、テーブルを識別する識別情報が格納される。「テーブル種別」には、そのテーブルがマスタテーブルか、トランザクションテーブルかを示す種別情報が格納される。「目的種別」には、そのジョブが業務目的か、運用監視目的かを示す種別情報が格納される。
図5は、本実施形態における種別関係テーブル(テーブル種別:マスタテーブルを除外済み)の一例を示す。図5の種別関係テーブル33aは、図4の種別関係テーブル33から、テーブル種別「マスタテーブル」のエントリを除外したものである。
図6は、本実施形態におけるテーブルアクセス情報テーブルの一例を示す。テーブルアクセス情報テーブル34は、「テーブル名」、「アクセス元」、「ユーザ」、「データ操作種別」、「実施日」の項目を含む。
「テーブル名」には、テーブルを識別する識別情報が格納される。「アクセス元」には、そのテーブルへのアクセス元となる端末情報が格納される。「ユーザ」には、ユーザを特定する情報が格納される。「データ操作種別」には、そのテーブルに対するデータ操作の内容(更新または追加)が格納される。「実施日」には、そのテーブルへデータ操作を実施した日が格納される。
図7は、本実施形態におけるテーブルアクセス情報テーブル(グループ化済み)の一例を示す。テーブルアクセス情報テーブル34aは、項目「処理種別」が追加されたテーブルアクセス情報テーブル34に登録されたエントリを、テーブル名、アクセス元、ユーザ名、データ操作種別、処理種別、実施日の順でグループ化したものである。
図8は、本実施形態における周期性テーブルの一例を示す。周期性テーブル35は、「テーブル名」、「アクセス元」、「ユーザ」、「データ操作種別」、「処理種別」、「周期性」の項目を含む。
「テーブル名」には、テーブルを識別する識別情報が格納される。「アクセス元」には、そのテーブルへのアクセス元となる端末情報が格納される。「ユーザ」には、ユーザを特定する情報が格納される。「データ操作種別」には、そのテーブルに対するデータ操作の内容(更新または追加)が格納される。「処理種別」には、そのデータ操作がバッチ処理で行われたのか、またはオンライン処理で行われたのかが格納される。「周期性」には、そのデータ操作の実施タイミングの周期性が格納される。
図9は、本実施形態におけるカレンダ管理装置の処理フローを示す。カレンダ管理装置31は、業務システム毎に、カレンダ情報と、ログと、ジョブ定義情報を取得し、ジョブ名とテーブル名との関係表(ジョブ名・テーブル名関係テーブル32)を作成する(S1)。具体的には、カレンダ管理装置31は、業務システム毎のログから、ジョブのプロセスが発行しているSQLを抽出する。カレンダ管理装置31は、抽出したSQLから、ジョブがどのテーブルにアクセスするかを抽出する。カレンダ管理装置31は、ログおよびSQLより、ジョブと、そのジョブがアクセスするテーブルと、そのアクセス日時を抽出すると、ジョブと、そのテーブルと、アクセス日時を関係付けて、ジョブ名・テーブル名関係テーブル32に登録する。
なお、各業務システムが、ログから、ジョブのプロセスが発行しているSQLを抽出し、ログおよびSQLより、ジョブと、そのジョブがアクセスするテーブルと、そのアクセス日時を抽出し、ジョブ名・テーブル名関係テーブル32を生成してもよい。また、各業務システムが、そのSQLから、ジョブによりテーブルに対して行われたデータ操作種別を抽出してもよい。この場合、カレンダ管理装置31は、各業務システムから、ジョブ名・テーブル名関係テーブル32、データ操作種別を取得してもよい。
次に、カレンダ管理装置31は、ジョブ名・テーブル名関係テーブル32に登録したテーブル名のそれぞれについて、後述する方法によりテーブル種別(マスタテーブル/トランザクションテーブル)を判定し、種別関係テーブル33に登録する(S2)。S2の詳細な処理については、後述する。
次に、カレンダ管理装置31は、ジョブ名・テーブル名関係テーブル32に登録したジョブ名のそれぞれについて、後述する方法によりジョブの目的種別(業務処理目的/運用監視目的)を判定し、種別関係テーブル33に登録する(S3)。S3の詳細な処理については、後述する。
次に、カレンダ管理装置31は、図5に示すように、種別関係テーブル33から、テーブル種別が「マスタテーブル」であるエントリと、目的種別が「運用監視」であるエントリを取り除く(S4)。これにより、種別関係テーブル33aには、テーブル種別が「トランザクション」で、かつ目的種別が「業務」であるエントリが残る。
それから、カレンダ管理装置31は、種別関係テーブル33aから、テーブル種別が「トランザクションテーブル」であって、同一のテーブル名に関係するジョブ同士のカレンダは、共通化できると判定する(S5)。カレンダ管理装置31は、共通化できると判定したカレンダをグループ化する。
次に、S2におけるマスタテーブル/トランザクションテーブルの判定方法について説明する。マスタテーブルとトランザクションテーブルには、以下の性質がある。
マスタテーブルに対して、日々のバッチによる業務処理では、行の更新が行われる場合と行われない場合とがある。しかし、日々のバッチによる業務処理では、マスタテーブルに対して、行の追加は行われない。
たとえば、商品マスタテーブルのように、一度内容が決まったら変化しないタイプのマスタテーブルについては、日々のバッチによる業務処理で参照はされる。しかしながら、マスタテーブルについては、行の追加及び更新は行われない。
在庫マスタテーブルのように、日々変動する在庫数等の値を保持するタイプのマスタテーブルでは、在庫数が日々更新されることはある。しかしながら、マスタテーブルに対して、日々のレベルで行の追加(この場合の行の追加は商品ラインナップが増えることを意味する)が行われることはない。
また、マスタテーブルに対して、業務管理者によるマスタメンテナンス作業(バッチ/オンライン)により、不定期に行の追加が行われる。マスタデータは、業務処理を行うための、業務処理全体に影響を及ぼす基本情報であるため、日々のバッチで更新されるデータとは管理レベルが異なる。そのため、マスタテーブルに対する行の追加は日々のバッチによる更新とは別ユーザで行われる場合がある。
一方、トランザクションテーブルに対して、日々のバッチによる業務処理により、行の追加が行われる。トランザクションテーブルに対して、行の更新は行われる場合と行われない場合がある。
例えば、発行されたらそれ以降更新されないような伝票についての生産実績トランザクションテーブルでは、商品生産が行われるたびに行が増えていき、その内容が更新されることはない。発行された後何度か行の追加が行われるタイプのトランザクションテーブルでは、出荷予定が決まるたびに行が増えていき、出荷が実際に行われるたびに実績情報が更新される。
誤入力データ修正のため、トランザクションテーブルに対して、バッチ/オンラインにより不定期に行の更新が行われる。この更新は日々のバッチによる追加とは別ユーザで行われる。
カレンダ管理装置31は、マスタテーブルとトランザクションテーブルとの性質を利用し、以下の方法を用いて判断を行う。
(i)カレンダ管理装置31は、テーブルに対する行の追加・更新処理について、ログ及びログ内のSQLから、テーブル名、アクセス元、ユーザ、データ操作種別、実施日を抽出し、図6に示すように、テーブルアクセス情報テーブル34に登録する。データ操作種別は、SQLのデータ操作言語(Data Manipulation Language(DML))の内容(UPDATE/INSERT)に応じて判別できる。
(ii)カレンダ管理装置31は、図3のジョブ名・テーブル名関係テーブル32に基づいて、テーブルアクセス情報テーブル34に項目「処理種別」を追加する。
項目「処理種別」について、
カレンダ管理装置31は、テーブルアクセス情報テーブル34の対象テーブルと、図3のジョブ名・テーブル名関係テーブル32との照合を行う。その照合の結果、その対象テーブルに対するアクセスがバッチ処理の延長線上で行われた場合、カレンダ管理装置31は、「バッチ」処理と判定し、そうでない場合には「オンライン」処理と判定する。カレンダ管理装置31は、その判定結果を、テーブルアクセス情報テーブル34の項目「処理種別」に登録する。
カレンダ管理装置31は、テーブルアクセス情報テーブル34に格納されるエントリを、図7に示すように、テーブル名、アクセス元、ユーザ名、データ操作種別、処理種別、実施日の項目の順で、グループ化する。
カレンダ管理装置31は、グループ化したテーブルアクセス情報テーブル34aから、対象テーブルに対するデータ操作の実施日の周期を求める。カレンダ管理装置31は、求めた周期を、図8に示すように周期性テーブル35の項目「周期性」に登録する。これにより、カレンダ管理装置31は、実施日の周期性の有無を判別することができる。
(iii)カレンダ管理装置31は、周期性テーブル35から、対象テーブルに対して周期性があるアクセス情報(エントリ)が1件もないと判定した場合、対象テーブルは、マスタテーブルであると判断する。
カレンダ管理装置31は、周期性テーブル35から、対象テーブルに対するデータ操作種別「追加」を示すエントリが1件以上ある場合、その対象テーブルは、トランザクションテーブルであると判断する。カレンダ管理装置31は、周期性テーブル35から、対象テーブルに対するデータ操作種別「追加」を示すエントリが1件もなく、データ操作種別「更新」が1件以上ある場合、その対象テーブルはマスタテーブルであると判断する。
次に、S3における業務処理目的/運用監視目的のジョブの判定方法について説明する。
運用監視を目的とするジョブと業務処理を目的とするジョブとには、以下の性質がある。
運用監視を目的とするジョブは、システムの定常監視を目的としているため、一定時間間隔で動作する。また、運用監視を目的とするジョブは、情報を収集し続けることを目的としている。そのため、運用監視目的のジョブについては、想定外のエラーが発生した場合でも、次回以降の起動は継続する。
一方、業務処理を目的とするジョブは、業務データを正しく処理することを目的としている。そのため、業務処理目的のジョブについて、想定外のエラーが発生した場合、システム管理者がその問題に対処しその解決が確認できるまで、次回以降の起動は抑止される。
これらの性質を利用し、カレンダ管理装置31は、ジョブの「起動条件」が「一定時間間隔」かつ「異常終了時の扱い」が「次回起動する」であるジョブを、運用監視目的のジョブであると判定し、それ以外のジョブを業務処理目的のジョブと判定する。カレンダ管理装置31は、その判定結果を、種別関係テーブル33に登録する。
図10は、本実施形態における業務処理に応じて共通化できるカレンダを説明するための図である。カレンダ管理装置31は、種別関係テーブル33aから、トランザクションテーブル「生産実績テーブル」17にアクセスする生産管理ジョブ12及び在庫登録ジョブ14で用いられているカレンダCAL101,102は、共通化できると判定する。
また、カレンダ管理装置31は、種別関係テーブル33aから、トランザクションテーブル「出荷予実テーブル」19にアクセスする出荷指示ジョブ22及び出荷ジョブ15で用いられているカレンダCAL201,103は、共通化できると判定する。
以下では、上述した実施形態についての実施例を説明する。
図11は、本実施形態(実施例)における業務システムとカレンダ管理装置の一例を示す。業務システム41は、1以上存在する。各業務システム41は、仮想集約化する前の各業務システムを稼動する1以上のサーバである。業務システム41は、例えば、図2の工場Aシステム11、・・・・、本社システム21を含む。
業務システム41の制御部(不図示)は、ジョブスケジューラ42、業務プログラム(バッチ)43、業務プログラム(オンライン)44を実行する。業務システム41が有する記憶装置(不図示)は、業務DB46、ジョブ定義情報47、カレンダ定義情報48、ジョブ・DBアクセス情報49、業務DBアクセスログ45を格納する。
ジョブスケジューラ42は、ジョブのスケジュールを管理するプログラムである。ジョブスケジューラ42は、ジョブ定義情報47に定義されたジョブの起動条件の定義に従って、ジョブを自動起動したり、ジョブの操作、実行状況や実行結果の管理を行ったりする。
ジョブ定義情報47は、ジョブの定義データである。ジョブ定義情報47には、起動する業務プログラム名や起動条件(時刻到来やファイル待ち合わせなど)、起動日としてどのカレンダを利用するかという情報が定義され、保存される。
カレンダ定義情報48は、カレンダの定義データである。
業務プログラム(バッチ)43は、業務システムで用いられた業務データをバッチ処理する業務プログラムである。
業務プログラム(オンライン)44は、オンラインでリアルタイムで業務データの処理を行う業務プログラムである。
業務DB46は、業務プログラム(バッチ及びオンライン)が読み書きするデータベースである。
業務DBアクセスログ45は、業務DB46に含まれるテーブル(情報)へのアクセスに応じて出力されるアクセスログである。業務DBアクセスログ45には、アクセス元、テーブル名、ユーザ名、アクセス日、アクセス種別(更新/追加)が記録される。ここで、テーブル名、アクセス種別(更新/追加)は、ジョブが発行したSQLに基づくログである。
ジョブ・DBアクセス情報49は、ジョブスケジューラ42が、業務プログラム(バッチ)による業務DB46へのアクセス動作をトレースして、ジョブが読み書きしたテーブルに関する情報を保存する。
カレンダ管理装置51は、統合部52、メモリ53を含む。メモリ53には、ジョブ・テーブル・種別関係情報54、周期性情報55、業務処理単位情報56を含む。カレンダ管理装置51の記憶装置には、集約済ジョブ定義情報57、集約済カレンダ定義情報58が格納される。
統合部52は、業務システム41から、ジョブ定義情報47、カレンダ定義情報48、ジョブ・DBアクセス情報49、業務DBアクセスログ45を取得する。統合部52は、業務DBアクセスログ45に基づいて、業務DB46の各テーブルがマスタテーブルかトランザクションテーブルかを判定する。統合部52は、その判定結果とジョブのDBアクセス情報とを組み合わせ、ジョブ定義情報47内に定義されるカレンダのグループ化を行うことにより、カレンダの統合を行う。
集約済ジョブ定義情報57は、全システムのジョブ定義情報47の結果を集約した情報である。
集約済カレンダ定義情報58は、全システムのカレンダ定義情報48の結果を集約した情報である。
ジョブ・テーブル・種別関係情報54は、ジョブとテーブルの接続関係、テーブル種別、目的種別を含む情報である。
周期性情報55は、テーブルへのアクセスの周期性の情報を保持する情報である。
業務処理単位情報56は、業務処理単位と、業務処理単位を構成するジョブ群の情報である。
図12は、本実施形態(実施例)におけるジョブ定義情報の一例を示す。図12(A)は、工場Aシステム11で用いられるジョブ定義情報47aの一例を示す。図12(B)は、本社システム21で用いられるジョブ定義情報47bの一例を示す。
ジョブ定義情報47(47a,47b)は、「ジョブ名」、「カレンダ名」、「起動条件」、「異常終了時の扱い」、「シフト情報」のデータ項目を含む。「ジョブ名」には、ジョブを識別する識別情報が格納される。「カレンダ名」には、カレンダの名称が格納される。「起動条件」には、ジョブの起動するタイミングが格納される。「異常終了時の扱い」には、ジョブの異常終了時において、次回の起動を行うか、抑制するかが格納される。「シフト情報」には、カレンダに登録された日時から何日ずらすかの情報が格納される。
図13は、本実施形態(実施例)におけるカレンダ定義情報の一例を示す。図13(A)は、工場Aシステム11で用いられるカレンダ定義情報48aの一例を示す。図13(B)は、本社システム21で用いられるカレンダ定義情報47bの一例を示す。
カレンダ定義情報48(48a,48b)は、「カレンダ名」、「定義」の項目を含む。「カレンダ名」には、カレンダの名称が格納される。「定義」には、そのカレンダに対応する日時(例えば、工場の稼働日、営業日等)が格納される。
図14は、本実施形態(実施例)におけるジョブ・DBアクセス情報の一例を示す。ジョブ・DBアクセス情報49は、「ジョブ名」、「アクセス日時」、「テーブル名」のデータ項目を含む。
「ジョブ名」には、ジョブを識別する識別情報が格納される。「アクセス日時」にはそのジョブがそのテーブルにアクセスした日時がアクセスされる。「テーブル名」には、テーブルを識別する識別情報が格納される。
図15は、本実施形態(実施例)における業務DBアクセスログの一例を示す。業務DB46へのアクセスが発生した場合、業務DBアクセスログ45に、「アクセス元」、「テーブル名」、「ユーザ名」、「アクセス日時」、「データ操作種別」を含む情報が出力される。
「アクセス元」には、アクセス元のIP(Internet Protocol)が出力される。「テーブル名」には、アクセス対象のテーブル名が出力される。「ユーザ名」には、アクセス元の端末においてログインしているユーザ名が格納される。「アクセス日時」には、対象テーブルにアクセスした日時が格納される。「データ操作種別」には、対象テーブルに対して行ったデータ操作(更新/追加)が格納される。
図16は、本実施形態(実施例)における集約済ジョブ定義情報の一例を示す。集約済ジョブ定義情報57は、「ジョブ名」、「カレンダ名」、「シフト情報」の項目を含む。「ジョブ名」には、ジョブを識別する識別情報が格納される。「カレンダ名」には、そのジョブがアクセスするカレンダを識別する識別情報が格納される。「シフト情報」には、後述する基準カレンダからの、集約前に当該エントリのジョブが利用していたカレンダの日にちの差分が格納される。
図17は、本実施形態(実施例)における集約済カレンダ定義情報の一例を示す。集約済カレンダ定義情報58は、「カレンダ名」、「定義」の項目を含む。「カレンダ」には、カレンダを識別する識別情報が格納される。「定義」には、カレンダの定義(例えば、日にち、曜日等)が格納される。
図18は、本実施形態(実施例)におけるジョブ・テーブル・種別関係情報の一例を示す。ジョブ・テーブル・種別関係情報54は、「ジョブ名」、「テーブル名」、「テーブル種別」、「目的種別」の項目を含む。「ジョブ名」には、ジョブを識別する識別情報が格納される。「テーブル名」には、テーブルを識別する識別情報が格納される。「テーブル種別」には、そのテーブルがマスタテーブルか、トランザクションテーブルかを示す種別情報が格納される。「目的種別」には、そのジョブが業務目的か、運用監視目的かを示す種別情報が格納される。
図19は、本実施形態(実施例)における周期性情報の一例を示す。周期性情報55は、「テーブル名」、「アクセス元」、「ユーザ」、「データ操作種別」、「処理種別」、「実施日」、「周期性」の項目を含む。
「テーブル名」には、テーブルを識別する識別情報が格納される。「アクセス元」には、そのテーブルへのアクセス元となる端末情報が格納される。「ユーザ」には、ユーザを特定する情報が格納される。「データ操作種別」には、そのテーブルに対するデータ操作の内容(更新または追加)が格納される。「処理種別」には、そのデータ操作がバッチ処理で行われたのか、またはオンライン処理で行われたのかが格納される。「実施日」には、そのデータ操作を実施した日時が格納される。「周期性」には、そのデータ操作の実施タイミングの周期性が格納される。
図20は、本実施形態(実施例)における業務処理単位情報の一例を示す。業務処理単位情報は、「グループID」、「ジョブ名」の項目を含む。
「グループID」には、グループを識別する識別情報が格納される。「ジョブ名」には、グループ化されたジョブの名称が格納される。
次に、本実施形態における処理について説明する。以下では、業務システムの集約前段階と、仮想化集約段階とに分けて説明する。
図21は、本実施形態(実施例)における、業務システムの集約前でのジョブスケジューラによるバッチジョブの実行時の動作フローを示す。業務システムの集約を行う前の日々の運用の段階で、ジョブスケジューラ42は、以下を行う。
ジョブスケジューラ42は、ジョブ定義情報47に定義されたジョブの起動条件の定義に従って、起動条件(時刻到来やファイル待ち合わせなど)の成立を待ち合わせる(S11)。
ジョブスケジューラ42は、起動条件の成立を検知した場合、対象のジョブ、ここでは、業務プログラム(バッチ)を起動する(S12)。ジョブが起動すると、ジョブは、ジョブの動作条件に従って、業務DB46へアクセスする。
ジョブスケジューラ42は、業務DB46から、S12にて起動したジョブの動作トレースを採取する。ジョブスケジューラ42は、業務DB46への読み書き処理を検知した場合、ジョブ・DBアクセス情報49に、「ジョブ名」、「テーブル名」、「アクセス日時」を格納する(S13)。
なお、システム集約を行う前の日々の運用の段階で、業務プログラム(バッチ)または業務プログラム(オンライン)に基づくジョブが動作し、業務DB46へのアクセスが発生する。その場合、そのジョブは、図15で説明したように、業務DBアクセスログ45に、「アクセス元」、「テーブル名」、「ユーザ名」、「アクセス日時」、「アクセス種別(更新/追加)」を含む情報を出力する。
図22は、本実施形態(実施例)における、システム集約を行う段階での、統合部の処理フローを示す。
統合部52は、全業務システムから、ジョブ定義情報47およびカレンダ定義情報48を取得する。統合部52は、取得したジョブ定義情報47およびカレンダ定義情報48を集約し、それぞれ集約済みジョブ定義情報57および集約済みカレンダ定義情報58として格納する(S21)。
統合部52は、集約前の業務システムごとに存在しているジョブ・DBアクセス情報49から、エントリ毎に、ジョブ名とテーブル名の情報を取得する。統合部52は、エントリ毎にジョブ・DBアクセス情報49から取得したジョブ名とテーブル名を関係付けて、ジョブ・テーブル・種別関係情報54に格納する(S22)。なお、その段階では、ジョブ・テーブル・種別関係情報54内のテーブル種別情報は空のままである。
統合部52は、ジョブ・テーブル・種別関係情報54に登録される各テーブル名について、テーブル種別、すなわちマスタテーブルであるかトランザクションテーブルであるかの判定を行う(S23)。テーブル種別の判定処理の詳細は、図23にて詳述する。統合部52は、その判定結果をジョブ・テーブル・種別関係情報54のテーブル種別に追記する。
統合部52は、ジョブ・テーブル・種別関係情報54に登録される各ジョブを、ジョブ定義情報49と照合する。照合したジョブの起動条件が間隔起動であり、かつ、異常終了時の扱いが「次回起動する」である場合、統合部52は、そのジョブは運用監視目的のジョブと判定する。照合の結果、照合したジョブの起動条件が間隔起動でないか、または、異常終了時の扱いが「次回起動を抑止」である場合、統合部52は、そのジョブは業務目的のジョブであると判定する。統合部52は、その判定結果をジョブ・テーブル・種別関係情報54の目的種別(業務目的/運用監視目的)に追記する(S24)。
統合部52は、ジョブ・テーブル・種別関係情報54に登録されたエントリから、目的種別が「業務目的」で、テーブル種別が「トランザクションテーブル」であるエントリを抽出する。統合部52は、抽出されたエントリに含まれるジョブについて、同じテーブルを介して接続関係にあるジョブ同士を同一のグループに分類する。統合部52は、その分類結果を、業務処理単位情報56に格納する(S25)。
例えば、ジョブBとジョブCとがトランザクションテーブルであるタイムカードテーブルと接続関係にあり、ジョブCとジョブDとがトランザクションテーブルである出張情報テーブルと接続関係にあるとする。この場合、統合部52は、ジョブB、ジョブC、ジョブDを同じグループとし、業務処理単位情報56に格納する。
統合部52は、業務処理単位情報56のうち、同じグループに属しているジョブのカレンダについて、共通化が可能であれば共通化を行う(S26)。
図23は、本実施形態(実施例)における、テーブル種別判定フロー(S23)を示す。統合部52は、全システムから業務DBアクセスログ45を取得する。統合部52は、取得した全システムの業務DBアクセスログ45の各行から、「テーブル名」、「アクセス元」、「ユーザ名」、「データ操作種別」、「アクセス日時」を以下(1)〜(4)の流れで抽出して、周期性情報55に格納する(S23−1)。
(1) 統合部52は、ジョブ・DBアクセス情報49の各エントリの「テーブル名」及び「アクセス日時」をキーとして、業務DBアクセスログ45から、対応するエントリを抽出する。
このとき、統合部52は、業務DBアクセスログ45から抽出したエントリに含まれるユーザ名に基づいて、処理種別(バッチ/オンライン)を判定する。ユーザ名が所定の管理レベルの権限を有する者の名前である場合、統合部52は、処理種別はバッチであると判定する。一方、ユーザ名が所定の管理レベルの権限を有する者の名前でない場合、統合部52は、処理種別はオンラインであると判定する。
(2) 統合部52は、業務DBアクセスログ45のアクセス日時情報から、時刻情報を取り除くことにより、実施日情報へ変換する。
(3) 統合部52は、業務DBアクセスログ45から取り出した「テーブル名」、統合部52は、「アクセス元」、「ユーザ名」、「データ操作種別」を周期性情報55に格納する。また、上記(1)で判定された結果を、周期性情報55の「処理種別」に格納する。さらに、統合部52は、上記(2)で変換した実施日情報を、周期性情報55の「実施日」に格納する。
(4)統合部52は、周期性情報55において、「テーブル名」、「アクセス元」、「ユーザ名」、「データ操作種別」、「処理種別(バッチ/オンライン)」の順でグループ化を行う。
統合部52は、グループ化した周期性情報55に基づいて、テーブル、アクセス元、ユーザ名、データ操作種別、及び処理種別毎に、テーブルへのアクセスの実施日の周期性を算出する。統合部52は、算出した周期性を、アクセス周期性情報55の項目「周期性」に登録する。例えば、統合部52は、周期性が一定間隔(例:毎日、3日おき)、毎週特定曜日(例:毎週月曜日、毎週の土曜日と日曜日)、毎月特定日(例:毎月20日、毎月25日と26日)にあてはまるか順番に判定を行う。統合部52は、最初に当てはまった周期性のモデルをそのグループの周期性とみなす(S23−2)。
統合部52は、ジョブ・テーブル・種別関係情報54のそれぞれのテーブルについて.S23−4を行う(S23−3)。
統合部52は、グループ化された周期性情報55に登録された各テーブルについて、アクセスの実施日に周期性があるエントリのうち、データ操作種別が「追加」であるエントリが1件以上存在するか否かを判定する。アクセスの実施日に周期性があるエントリのうち、データ操作種別が「追加」であるエントリが1件以上存在する場合(S23−4で「YES」)、統合部52は、そのテーブルをトランザクションテーブルと判定する(S23−5)。そうでない場合(S23−4で「NO」)、統合部52は、そのテーブルをマスタテーブルと判定する(S23−6)。統合部52は、その判定結果をジョブ・テーブル・種別関係情報54の項目「テーブル種別」に追記する。
図24は、本実施形態(実施例)における、共通化可能なカレンダの共通化フロー(S26)を示す。図25は、本実施形態(実施例)における、業務処理単位でグループ化されたカレンダの共通化を説明するための図である。以下では、図25を参照しながら、図24を説明する。
統合部52は、業務処理単位情報56のグループ毎に、以下を行う(S26−1)。
統合部52は、集約済ジョブ定義情報57及び集約済カレンダ定義情報58を参照し、次の処理を行う。すなわち、統合部52は、図25(A)に示すように、業務処理単位情報56のグループ内の各ジョブ(集合X)が参照するカレンダを、同じサイクルを持つカレンダ同士でグループ化する。同じサイクルを持つ他のカレンダが存在しないカレンダについては、統合部52は、そのカレンダ1を含むグループを作る(S26−2)。
統合部52は、グループ化した同じサイクルを持つカレンダのうち、一番未来となるカレンダを基準カレンダと決定する(S26−3)。例えば、サイクルが毎週の場合は、統合部52は、日曜日を一番未来として扱う。
統合部52は、集合Xのうち、元々基準カレンダを参照していたジョブは継続して基準カレンダを参照し続けるようにする。図25(B)に示すように、集合Xのうち、基準カレンダを参照していなかったジョブは基準カレンダを参照するように、統合部52は、集約後ジョブ定義情報52のカレンダ名を更新する。統合部52は、元々基準カレンダと、元々参照していたカレンダとの日付差分を計算した上で、その差分をシフト情報として集約済みジョブ定義情報57に格納する(S26−4)。
図26は、本実施形態におけるプログラムを実行するコンピュータのハードウェア環境の構成ブロック図の一例である。コンピュータ60は、ジョブ実行カレンダ管理装置1、カレンダ管理装置31として機能する。コンピュータ60は、CPU62、ROM63、RAM66、通信I/F64、記憶装置67、出力I/F61、入力I/F65、読み取り装置68、バス69、出力機器71、入力機器72によって構成される。
ここで、CPUは、中央演算装置を示す。ROMは、リードオンリメモリを示す。RAMは、ランダムアクセスメモリを示す。I/Fは、インターフェースを示す。バス69には、CPU62、ROM63、RAM66、通信I/F64、記憶装置67、出力I/F61、入力I/F65、及び読み取り装置68が接続される。読み取り装置68は、可搬型記録媒体を読み出す装置である。出力機器71は、出力I/F61に接続される。入力機器72は、入力I/F65に接続にされる。
記憶装置67としては、ハードディスク、フラッシュメモリ、磁気ディスクなど様々な形式の記憶装置を使用することができる。記憶装置67またはROM63には、CPU62を取得部2と、特定部3と、グループ化部4、除去部5として実行させる本実施形態に係るプログラムが格納される。より具体的には、統合部52として機能させる本実施形態に係るプログラムが格納される。
また、記憶装置67は、集約済ジョブ定義情報57、集約済カレンダ定義情報58等を格納する。RAM66には、情報、例えば、ジョブ・テーブル・種別関係情報54、周期性情報55、業務処理単位情報56等が一時的に記憶される。
CPU62は、制御部22として、記憶装置67またはROM63から本実施形態に係るプログラムを読み出し、当該プログラムを実行する。
通信I/F64は、ネットワークと接続して他の機器と通信するためのポート等のインターフェースである。
上記実施形態で説明した処理を実現するプログラムは、プログラム提供者側から通信ネットワーク70、および通信I/F64を介して、例えば記憶装置67に格納されてもよい。また、上記実施形態で説明した処理を実現するプログラムは、市販され、流通している可搬型記憶媒体に格納されていてもよい。この場合、この可搬型記憶媒体は読み取り装置68にセットされて、CPU62によってそのプログラムが読み出されて、実行されてもよい。可搬型記憶媒体としてはCD−ROM、フレキシブルディスク、光ディスク、光磁気ディスク、ICカード、USBメモリ装置、半導体メモリカードなど様々な形式の記憶媒体を使用することができる。このような記憶媒体に格納されたプログラムが読み取り装置68によって読み取られる。
入力機器72には、キーボード、マウス、電子カメラ、ウェブカメラ、マイク、スキャナ、センサ、タブレット、タッチパネルなどを用いることが可能である。また、出力機器71には、ディスプレイ、プリンタ、スピーカなどを用いることが可能である。
ネットワーク70は、業務ネットワーク21と接続される。ネットワーク70は、インターネット、LAN、WAN、専用線、有線、無線等の通信網であってよい。
本実施形態によれば、バッチシステムの仮想集約後に、バッチ処理で使用するデータの流れから業務処理の単位を特定することにより、カレンダを統合すべきか否かを判定し、同一目的のカレンダを統合することができる。
また、バッチ処理で使用するデータをマスタテーブルおよびトランザクションテーブルに分類分けすることにより、トランザクションテーブルでつながる範囲を業務処理の単位と特定することができる。
その結果、カレンダ定義の共通化により管理対象数を削減できる。それにより、カレンダ定義の変更が必要になった際に、大量にあったカレンダをそれぞれ修正するのではなく、共通化されたカレンダのみを修正すれば良くなり、運用管理コストを削減できる。また、その際に人的ミスによる問題が発生する可能性も低減できる。
なお、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。