(57)【特許請求の範囲】
【請求項１】
コンピュータに、
同一のマスタデータに基づいて処理を実行する複数のジョブフローのうち、ジョブフローの処理を実行した出力データが一致する複数のジョブフローのそれぞれにおけるデータ抽出処理により削除されるデータまたは該削除されるデータを特定する情報を保持し、
該削除されるデータまたは該削除されるデータを特定する情報に基づいて、出力データが一致する前記複数のジョブフローを集約するか否かを制御する、
処理を実行させることを特徴とする制御プログラム。
【請求項２】
前記削除されるデータが互いに同じであるジョブフローを集約し、また、前記削除されるデータが互いに異なるジョブフローを集約しないよう制御する、
処理を実行させることを特徴とする請求項１記載の制御プログラム。
【請求項３】
前記削除されるデータが同じであるか否かの判定を、出力データが一致する前記複数のジョブフローに対して複数回実行し、該判定の複数回の結果に基づいて、該複数のジョブフローを集約するか否かを制御する、
処理を実行させることを特徴とする請求項２記載の制御プログラム。
【請求項４】
前記削除されるデータの数に基づいて、出力データが一致する前記複数のジョブフローを集約するか否かを制御する、
処理を実行させることを特徴とする請求項１乃至３の何れか１項に記載の制御プログラム。
【請求項５】
前記削除されるデータは、前記マスタデータには含まれるが、前記データ抽出処理により前記マスタデータから抽出された抽出データには含まれない差分のデータである、
ことを特徴とする請求項１乃至４の何れか１項に記載の制御プログラム。
【請求項６】
前記複数のジョブフローのそれぞれに含まれるジョブが出力する中間データのデータ項目と前記マスタデータのデータ項目との比較に応じて、前記抽出データを特定する、
処理を実行させることを特徴とする請求項５記載の制御プログラム。
【請求項７】
同一のマスタデータに基づいて処理を実行する複数のジョブフローのうち、ジョブフローの処理を実行した出力データが一致する複数のジョブフローのそれぞれにおけるデータ抽出処理により削除されるデータまたは該削除されるデータを特定する情報を保持する記憶部と、
該削除されるデータまたは該削除されるデータを特定する情報に基づいて、出力データが一致する前記複数のジョブフローを集約するか否かを制御する演算部と、
を有することを特徴とする制御装置。
【請求項８】
コンピュータが、
同一のマスタデータに基づいて処理を実行する複数のジョブフローのうち、ジョブフローの処理を実行した出力データが一致する複数のジョブフローのそれぞれにおけるデータ抽出処理により削除されるデータまたは該削除されるデータを特定する情報を保持し、
該削除されるデータまたは該削除されるデータを特定する情報に基づいて、出力データが一致する前記複数のジョブフローを集約するか否かを制御する、
処理を実行させることを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は制御プログラム、制御装置および制御方法に関する。
【背景技術】
【０００２】
情報処理システムでは、実行対象の処理をジョブと呼ばれる単位で管理し、一連のジョブをジョブフローと呼ばれる単位で管理することがある。ジョブフローは、複数のジョブそれぞれの処理内容や各ジョブの実行順序の情報を含む。ジョブフローにより一連のジョブの実行を自動化することで、情報処理システムの運用を効率化し得る。
【０００３】
ところで、システムの運用管理では、導入済のジョブやジョブフローのメンテナンスを行うことがある。例えば、バッチ処理で運用されているジョブに新たなジョブを追加する際に、導入済または新たなジョブで実行するプログラムが、出力結果にいかに作用するかを予め把握する方法が提案されている。この提案では、本番ジョブの出力ファイルと、本番ジョブに新たなジョブを加えた仮想ジョブの出力ファイルとを比較し、中身が同一、または、差分が予定されていたものである場合に、仮想ジョブの本格導入を決定する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−２４５３８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
共通の処理を行う複数のジョブフローが別個に定義され、運用に用いられていることがある。例えば、複数の拠点それぞれに設けられていたシステムを単一拠点やデータセンタなどのシステムに統合する場合が考えられる。この場合、統合後にも、各拠点のシステムでそれぞれ作成し実行していたジョブフローを各拠点が行っていた業務に引き続き使用すると、統合後の単一システム内に共通の処理を行う複数のジョブフローが生じ得る。単一システムで共通の処理を行う複数のジョブフローが定義されていると、同システムにおけるジョブフローの管理で問題が生じ得る。例えば、ジョブフローのメンテナンスを行うとき、共通の処理を行うジョブフローが複数あると、各ジョブフローについてメンテナンスを行わねばならず、メンテナンスコストが増大するおそれがある。
【０００６】
１つの側面では、本発明は、集約可能なジョブフローを特定して集約する制御プログラム、制御装置および制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの態様では、制御プログラムが提供される。この制御プログラムは、コンピュータに、同一のマスタデータに基づいて処理を実行する複数のジョブフローのうち、ジョブフローの処理を実行した出力データが一致する複数のジョブフローのそれぞれにおけるデータ抽出処理により削除されるデータまたは該削除されるデータを特定する情報を保持し、該削除されるデータまたは該削除されるデータを特定する情報に基づいて、出力データが一致する複数のジョブフローを集約するか否かを制御する、処理を実行させる。
【発明の効果】
【０００８】
１つの側面では、集約可能なジョブフローを特定して集約できる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態の制御装置を示す図である。
【図２】第２の実施の形態の情報処理システムの例を示す図である。
【図３】解析サーバのハードウェア例を示す図である。
【図４】ジョブフローの例を示す図である。
【図５】解析サーバのテスト運用時の機能例を示す図である。
【図６】解析サーバの本番運用時の機能例を示す図である。
【図７】マスタデータの例を示す図である。
【図８】集約候補管理テーブルの例を示す図である。
【図９】削除レコード数テーブルの例を示す図である。
【図１０】削除データ管理情報の例を示す図である。
【図１１】処理同一判定管理テーブルの例を示す図である。
【図１２】解析サーバの処理例を示すフローチャートである。
【図１３】候補フロー判定処理の例を示すフローチャートである。
【図１４】候補フロー判定処理の具体例を示す図である。
【図１５】中間データ解析処理の例を示すフローチャートである。
【図１６】削除データ解析処理の例を示すフローチャートである。
【図１７】削除データの比較方法の例を示す図である。
【図１８】ジョブフロー集約処理の例を示すフローチャートである。
【図１９】ジョブフロー集約処理の具体例を示す図である。
【図２０】ジョブフローにおける抽出処理の例（その１）を示す図である。
【図２１】ジョブフローにおける抽出処理の例（その２）を示す図である。
【図２２】運用環境上で出力データを比較する際に問題となる例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の制御装置を示す図である。制御装置１は、ジョブフローの実行を制御する。ジョブフローは、複数のジョブの処理内容および各ジョブの実行順序の情報を含む。ジョブフローは、制御装置１により実行されてもよいし、制御装置１とネットワークを介して接続された他の装置（図１では図示を省略している）により実行されてもよい。
【００１１】
制御装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。演算部１ｂはプログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれ得る。制御装置１は「コンピュータ」と呼ばれるものでもよい。
【００１２】
記憶部１ａは、同一のマスタデータに基づいて処理を実行する複数のジョブフローのうち、ジョブフローの処理を実行した出力データが一致する複数のジョブフローのそれぞれにおけるデータ抽出処理により削除されるデータまたは該削除されるデータを特定する情報を保持する。演算部１ｂは、該削除されるデータまたは該削除されるデータを特定する情報を取得し、記憶部１ａに格納する。
【００１３】
例えば、ジョブフローＪ１，Ｊ２，Ｊ３は、同一のマスタデータ２に基づいて処理を実行するジョブフローである。一例として、マスタデータ２は、ＩＤ（IDentifier）および値の項目を含む関係データである。ＩＤの項目にはデータの識別情報が登録される。値の項目にはデータに含まれる設定値が登録される。例えば、マスタデータ２は次のデータを含む。第１のデータは、（ＩＤ，値）＝（１，１０）である。第２のデータは、（ＩＤ，値）＝（２，２０）である。第３のデータは、（ＩＤ，値）＝（３，２０）である。
【００１４】
ジョブフローＪ１は、データ抽出処理Ｅ１（図１では“抽出Ｅ１”と略記している。他のジョブフローも同様）および処理Ｘ１，Ｙ１をこの順番に実行するジョブフローである。ジョブフローＪ２は、データ抽出処理Ｅ２および処理Ｘ２，Ｙ２をこの順番に実行するジョブフローである。ジョブフローＪ３は、データ抽出処理Ｅ３および処理Ｘ３，Ｙ３をこの順番に実行するジョブフローである。また、データ抽出処理Ｅ１，Ｅ２，Ｅ３は、マスタデータ２からデータを抽出する処理である。
【００１５】
処理Ｘ１，Ｘ２，Ｘ３は、それぞれデータ抽出処理Ｅ１，Ｅ２，Ｅ３の次に実行される処理であり、例えば、後続の処理を行うために抽出されたデータを加工する処理である。処理Ｙ１，Ｙ２，Ｙ３は、それぞれ処理Ｘ１，Ｘ２，Ｘ３の次に実行される処理であり、例えば、加工されたデータを集計する処理である。
【００１６】
演算部１ｂは、同一のマスタデータに基づいて処理を実行する複数のジョブフローのうち出力データが一致する２以上のジョブフローを特定する。上記の例の場合、ジョブフローＪ１，Ｊ２，Ｊ３は、何れもマスタデータ２に基づいて処理を実行する。そして、ジョブフローＪ１の出力データＶ１はＶ１＝３０である。ジョブフローＪ２の出力データＶ２はＶ２＝３０である。ジョブフローＪ３の出力データＶ３はＶ３＝３０である。すなわち、Ｖ１＝Ｖ２＝Ｖ３であり、ジョブフローＪ１，Ｊ２，Ｊ３は、出力データが一致する。この場合、ジョブフローＪ１，Ｊ２，Ｊ３は、共通の処理を行うジョブフローである可能性が高い。このため、演算部１ｂは、同一のマスタデータに基づいて処理を実行する複数のジョブフローのうち出力データが一致する２以上のジョブフローとして、ジョブフローＪ１，Ｊ２，Ｊ３を特定する。
【００１７】
演算部１ｂは、ジョブフローＪ１のデータ抽出処理Ｅ１、ジョブフローＪ２のデータ抽出処理Ｅ２、および、ジョブフローＪ３のデータ抽出処理Ｅ３それぞれにより削除されるデータまたは該削除されるデータを特定する情報を取得する。データ抽出処理により「削除されるデータ」は、データ抽出処理により「抽出されないデータ」ともいえる。
【００１８】
具体的には、データ抽出処理Ｅ１によりマスタデータ２から抽出されるデータは、（ＩＤ，値）＝（１，１０），（２，２０）である。したがって、演算部１ｂは、マスタデータ２との比較から（ＩＤ，値）＝（３，２０）を、データ抽出処理Ｅ１により削除されるデータ（削除データ）として取得する。演算部１ｂは、データ抽出処理Ｅ１により削除されるデータを特定する情報として、ＩＤ“３”を取得してもよい。
【００１９】
また、データ抽出処理Ｅ２によりマスタデータ２から抽出されるデータは、（ＩＤ，値）＝（１，１０），（２，２０）である。したがって、演算部１ｂは、マスタデータ２との比較から（ＩＤ，値）＝（３，２０）を、データ抽出処理Ｅ２により削除されるデータとして取得する。演算部１ｂは、データ抽出処理Ｅ２により削除されるデータを特定する情報として、ＩＤ“３”を取得してもよい。
【００２０】
更に、データ抽出処理Ｅ３によりマスタデータ２から抽出されるデータは、（ＩＤ，値）＝（１，１０），（３，２０）である。したがって、演算部１ｂは、マスタデータ２との比較から（ＩＤ，値）＝（２，２０）を、データ抽出処理Ｅ３により削除されるデータとして取得する。演算部１ｂは、データ抽出処理Ｅ２により削除されるデータを特定する情報として、ＩＤ“２”を取得してもよい。
【００２１】
演算部１ｂは、該削除されるデータまたは該削除されるデータを特定する情報に基づいて、出力データが一致する複数のジョブフローを集約するか否かを制御する。例えば、演算部１ｂは、該削除されるデータまたは該削除されるデータを特定する情報が互いに一致するジョブフローを集約する。なぜなら、データ抽出処理において同じデータが削除されている場合、後続の処理に対して共通のデータが入力されていると考えられ、共通の入力により、同一の出力が得られるということは、ジョブフローの処理内容が共通していると考えられるからである。また、演算部１ｂは、該削除されるデータまたは該削除されるデータを特定する情報が何れのジョブフローとも一致しないジョブフローを、他のジョブフローと集約しない。なぜなら、データ抽出処理において異なるデータが削除されている場合、後続の処理に対して異なるデータが入力されていると考えられ、２つのジョブフローで異なる入力により同じ出力が得られたとしても、両ジョブフローの処理内容が共通しているとはいえないからである。
【００２２】
より具体的には、上記の例において、データ抽出処理Ｅ１，Ｅ２は、削除されるデータが（ＩＤ，値）＝（３，２０）で一致している。あるいは、データ抽出処理Ｅ１，Ｅ２は、削除されるデータを特定する情報がＩＤ“３”で一致している。したがって、演算部１ｂは、ジョブフローＪ１，Ｊ２を集約する。すなわち、個別に定義されたジョブフローＪ１，Ｊ２を１つの定義とする。例えば、演算部１ｂは、ジョブフローＪ２の定義を破棄し、ジョブフローＪ２を用いる既存の業務を、ジョブフローＪ１を用いて行うようジョブフローの実行スケジュールを変更してもよい。
【００２３】
一方、データ抽出処理Ｅ３は、削除されるデータが（ＩＤ，値）＝（２，２０）であり、データ抽出処理Ｅ１，Ｅ２で削除される（ＩＤ，値）＝（３，２０）のデータとは異なっている。あるいは、データ抽出処理Ｅ３は、削除されるデータを特定する情報がＩＤ“２”であり、データ抽出処理Ｅ１，Ｅ２で削除されるデータを特定する情報であるＩＤ“３”とは異なっている。したがって、演算部１ｂは、ジョブフローＪ３を、ジョブフローＪ１，Ｊ２と集約しない。
【００２４】
このようにして、制御装置１は、集約可能なジョブフローを特定して集約できる。ここで、共通する処理を行うジョブフローを特定する際に、入力データと出力データとの両方が一致するジョブフロー同士を、共通する処理を行うジョブフローであると特定することも考えられる。しかし、入力データと出力データとの一致だけでは、ジョブフローの同一性の判定には不十分である。なぜなら、ジョブフローＪ１とジョブフローＪ３（あるいは、ジョブフローＪ２とジョブフローＪ３）のように、入出力は同一であるが、入力データに対するフィルタ条件が異なるなど処理内容が異なるものも共通の処理を行うものと誤判定され得るからである。
【００２５】
そこで、制御装置１は、入出力データが同じ複数のジョブフローのうち、入力となったマスタデータ２に対してデータ抽出処理により削除されるデータまたは削除されるデータを特定する情報が一致するかの判定に応じて、集約対象のジョブフローを特定する。
【００２６】
当該判定において、削除データが一致すれば、該当のジョブフロー群を集約対象とする。なぜなら、他ジョブに先行するデータ抽出処理の削除データが同じ場合、後続の処理に対して共通のデータが入力されていることになり、共通の入力により、同一の出力が得られるということは、ジョブフローの処理内容が共通していると考えられるからである。
【００２７】
また、当該判定において、削除データが一致しなければ、該当のジョブフロー群を集約対象としない。なぜなら、２つのジョブフローで他ジョブに先行するデータ抽出処理の削除データが異なる場合は、データ抽出処理におけるフィルタ条件が異なることになるからである。この場合、２つのジョブフローでは、後続の処理に対して異なるデータが入力されていることになり、各ジョブフローで異なる入力で同じ出力が得られたとしても、必ずしも各ジョブフローの処理内容が共通しているとはいえない。入出力データの同一性に加え、データ抽出処理により削除されるデータの同一性も確認することで、ジョブフローの同一性の判定の精度を高められる。
【００２８】
特に、削除されるデータまたは削除されるデータを特定する情報をジョブフローの同一性の判定に用いることで、該判定を高速に実行し得る。例えば、削除されるデータは、マスタデータ２に含まれるエラーデータや当日の業務指示などで処理対象外になったデータなどのイレギュラーなデータであることがある。この場合、削除されるデータは、通常、抽出データの全体サイズに比べて小さいデータであることが多い。よって、削除されるデータを比較対象に用いることで、比較対象とするデータのサイズを小さく抑えることができ、ジョブフローの同一性の判定を高速化できる。また、抽出データ同士を比較するよりも、判定処理に用いられるハードウェアのリソース量を低減できる。また、こうして冗長的に管理されていた複数のジョブフローを集約して一本化することで、ジョブフローのメンテナンスコストを削減することができる。
【００２９】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムの例を示す図である。第２の実施の形態の情報処理システムは、解析サーバ１００および運用サーバ２００を含む。解析サーバ１００および運用サーバ２００は、ネットワーク１０に接続されている。ネットワーク１０は、例えば、ＬＡＮ（Local Area Network）である。ネットワーク１０は、ＷＡＮ（Wide Area Network）やインターネットでもよい。
【００３０】
解析サーバ１００は、運用サーバ２００のテスト環境を提供するサーバコンピュータである。具体的には、解析サーバ１００は、運用サーバ２００で実行される業務用のソフトウェアと同じソフトウェアを実行し、動作の確認を行える。
【００３１】
ここで、第２の実施の形態では、テスト対象となる業務用のソフトウェアとして、複数のジョブフローの実行を制御するジョブ管理ソフトウェアを考える。ジョブ管理ソフトウェアは、店舗における売上管理、銀行における勘定系業務、流通業における物流販売管理、製造業における生産管理など、種々の業務に用いられ得る。ジョブ管理ソフトウェアによって、これらの業務で実行されるバッチ処理をジョブフローとして自動化可能である。
【００３２】
解析サーバ１００は、運用サーバ２００において、同じ処理を実行する複数のジョブフローを特定し、特定した複数のジョブフローを集約する機能を提供する。なお、解析サーバ１００は、第１の実施の形態の制御装置１の一例である。
【００３３】
運用サーバ２００は、本番の業務に用いられるサーバコンピュータである。運用サーバ２００は、解析サーバ１００に対して、複数のジョブフローを集約するための処理に利用される情報を提供することもある。
【００３４】
図３は、解析サーバのハードウェア例を示す図である。解析サーバ１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。各ユニットは解析サーバ１００のバスに接続されている。運用サーバ２００も解析サーバ１００と同様のユニットを用いて実現できる。
【００３５】
プロセッサ１０１は、解析サーバ１００の情報処理を制御する。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせであってもよい。
【００３６】
ＲＡＭ１０２は、解析サーバ１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００３７】
ＨＤＤ１０３は、解析サーバ１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。解析サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００３８】
画像信号処理部１０４は、プロセッサ１０１からの命令に従って、解析サーバ１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００３９】
入力信号処理部１０５は、解析サーバ１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４０】
媒体リーダ１０６は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ１０６は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４１】
通信インタフェース１０７は、ネットワーク１０を介して他の装置と通信を行う。通信インタフェース１０７は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
【００４２】
図４は、ジョブフローの例を示す図である。前述のように、ジョブ管理ソフトウェアは、種々の業種（小売、銀行、物流および製造など）の業務に利用され得る。一方、各業務に用いられるバッチ処理自体は、主に次の３種類の処理で実現されることが多い。具体的には、「データ抽出処理」、「データ加工処理」および「データ集計処理」である（この順番に実行され、実行順が逆転することはない）。
【００４３】
「データ抽出処理」は、入力データから所定の条件によってデータを抽出する処理である。「データ加工処理」は、後段の「データ集計処理」を行うためにデータを所定の形式に加工する処理である。「データ集計処理」は、加工されたデータの集計であり、集計データを出力する。
【００４４】
ここで、以下の説明では、「データ抽出処理」を「抽出処理」と略記することがある。また、「データ加工処理」を「加工処理」と略記することがある。また、「データ集計処理」を「集計処理」と略記することがある。
【００４５】
例えば、ジョブ管理システムでは、ジョブフローＪＡ，ＪＢが定義されている。ジョブフローＪＡ，ＪＢの入力データは、マスタデータＭ１である。ジョブフローＪＡの出力データは、集計データＰ１である。ジョブフローＪＢの出力データは、集計データＰ２である。
【００４６】
ジョブフローＪＡは、ジョブＪＡ１，ＪＡ２，ＪＡ３を含む。ジョブＪＡ１，ＪＡ２，ＪＡ３は、この順番に実行される。ジョブＪＡ１は、マスタデータＭ１からのデータ抽出処理である。ジョブＪＡ２は、ジョブＪＡ１の結果に対するデータ加工処理である。ジョブＪＡ３は、ジョブＪＡ２の結果に対するデータ集計処理である。
【００４７】
ジョブフローＪＢは、ジョブＪＢ１，ＪＢ２，ＪＢ３を含む。ジョブＪＢ１，ＪＢ２，ＪＢ３は、この順番に実行される。ジョブＪＢ１は、マスタデータＭ１からのデータ抽出処理である。ジョブＪＢ２は、ジョブＪＢ１の結果に対するデータ加工処理である。ジョブＪＢ３は、ジョブＪＢ２の結果に対するデータ集計処理である。
【００４８】
このように、ジョブ管理ソフトウェアでは、定型の処理が複数のジョブフローにより実行される。この場合、複数のジョブフローで同一の処理を実行していることもある。同一の処理を実行する複数のジョブフローが定義され、業務に用いられていると、ジョブフローのメンテナンスのコストが増すおそれがある。そこで、解析サーバ１００は、同一の処理を実行するジョブフロー群を特定し、特定したジョブフロー群を集約する機能を提供する。
【００４９】
解析サーバ１００は、ジョブフローの集約を行うために、（１）テスト運用、（２）本番運用の２段階で、情報収集を行う。テスト運用および本番運用の各段階で、解析サーバ１００により発揮される機能が異なる。テスト運用の段階では、解析サーバ１００は、テスト対象のソフトウェアを試験的に実行することで、本番運用での監視対象とする複数のジョブフロー（候補フローと称することがある）を決定する。本番運用の段階では、解析サーバ１００は、運用サーバ２００により実行される複数の候補フローのデータ抽出処理の結果を監視し、集約対象とするジョブフロー群を決定する。次に、各段階で解析サーバ１００により発揮される機能を説明する。まずは、テスト運用の段階における解析サーバ１００の機能を説明する。
【００５０】
図５は、解析サーバのテスト運用時の機能例を示す図である。解析サーバ１００は、テスト情報記憶部１１０、管理情報記憶部１２０、ジョブフロー実行部１３０、アクセス解析部１４０および候補フロー判定部１５０を有する。
【００５１】
テスト情報記憶部１１０および管理情報記憶部１２０は、ＲＡＭ１０２やＨＤＤ１０３に確保された記憶領域として実現され得る。ジョブフロー実行部１３０、アクセス解析部１４０および候補フロー判定部１５０は、ＲＡＭ１０２に記憶されたプログラムを、プロセッサ１０１が実行することで実現される。
【００５２】
テスト情報記憶部１１０は、各ジョブフローに入力されるマスタデータのサンプルを記憶する。マスタデータのサンプルは、ある時点の本番のマスタデータの複製でもよい。また、テスト情報記憶部１１０は、本番運用で実行される複数のジョブフローの情報を記憶する。ジョブフローの情報を、ジョブフローの定義情報と称してもよい。ジョブフローの定義情報は、ジョブフローの識別情報、ジョブフローに含まれるジョブの識別情報、ジョブの処理内容、ジョブの実行順序、ジョブフローの実行時刻などの情報を含む。ジョブの処理内容は、ジョブフローに含まれる複数のジョブ（抽出処理、加工処理および集計処理）それぞれの処理内容である。また、ジョブフローの情報は、ジョブフローに入力される入力データの格納元や、ジョブフローが出力する出力データの格納先などの情報を含む。
【００５３】
管理情報記憶部１２０は、ジョブフロー毎の入力データおよび出力データを記憶する。ジョブフロー毎の入力データおよび出力データは、アクセス解析部１４０により作成される。ジョブフロー毎の入力データおよび出力データは、候補フロー判定部１５０による候補フローの判定に用いられる。管理情報記憶部１２０は、本番運用の段階で監視対象とする複数の候補フローを示す情報を記憶する。
【００５４】
ジョブフロー実行部１３０は、テスト情報記憶部１１０に記憶されたマスタデータのサンプルおよび複数のジョブフローの情報に基づいて、本番運用で実行される複数のジョブフローそれぞれを実行する。
【００５５】
アクセス解析部１４０は、ジョブフロー実行部１３０により実行される複数のジョブフローの入力データと出力データとを取得し、管理情報記憶部１２０に出力する。
候補フロー判定部１５０は、アクセス解析部１４０によって出力された各ジョブフローの入力データと出力データとに基づいて、候補フローを判定する。具体的には、候補フロー判定部１５０は、入力データおよび出力データの内容が一致するジョブフロー群を、集約対象の候補として、管理情報記憶部１２０に記録する。例えば、候補フロー判定部１５０は、２つのジョブフローの入力データが一致するか否かを、入力データの識別情報（例えば、入力データのテーブル名や入力データの格納場所を示すパスでもよい）が一致するか否かによって判定し得る。また、候補フロー判定部１５０は、２つのジョブフローの出力データが一致するか否かを、２つのジョブフローそれぞれの出力データの照合により両出力データが一致するか否かによって判定し得る。
【００５６】
次に、本番運用の段階における解析サーバ１００の機能を説明する。本番運用の段階では、解析サーバ１００は、運用サーバ２００から情報を取得するため、運用サーバ２００の機能も説明する。
【００５７】
図６は、解析サーバの本番運用時の機能例を示す図である。運用サーバ２００は、運用情報記憶部２１０およびジョブフロー実行部２２０を有する。運用情報記憶部２１０は、運用サーバ２００が備えるＲＡＭやＨＤＤなどに確保された記憶領域として実現される。ジョブフロー実行部２２０は、運用サーバ２００が備えるＲＡＭに記憶されたプログラムを、運用サーバ２００が備えるプロセッサが実行することで実現される。
【００５８】
運用情報記憶部２１０は、本番環境において、各ジョブフローに入力されるマスタデータを記憶する。また、本番環境において実行される各ジョブフローの情報を記憶する。前述のテスト情報記憶部１１０に記憶される情報は、運用情報記憶部２１０に記憶される情報の複製と考えてもよい。
【００５９】
ジョブフロー実行部２２０は、運用情報記憶部２１０に記憶されたマスタデータおよびジョブフローの定義情報に基づいて、本番の業務処理を実行する。ジョブフロー実行部２２０は、各ジョブフローにおけるジョブの処理結果を、解析サーバ１００に提供する。ここで、各ジョブの処理結果のうちジョブフローの最終的な出力データ以外のデータを「中間データ」と呼ぶこととする。中間データのうち、データ抽出処理の結果を「抽出データ」と呼ぶこととする。
【００６０】
解析サーバ１００は、管理情報記憶部１２０、中間データ解析部１６０、削除データ解析部１７０およびジョブフロー集約部１８０を有する。管理情報記憶部１２０は、図５で説明した同名の機能と同様である。中間データ解析部１６０、削除データ解析部１７０およびジョブフロー集約部１８０は、ＲＡＭ１０２に記憶されたプログラムを、プロセッサ１０１が実行することで実現される。
【００６１】
管理情報記憶部１２０は、図５で例示した情報に加えて、中間データに関する情報および複数の候補フローの処理の同一性を管理するための情報を記憶する。
中間データ解析部１６０は、候補フローに含まれる各ジョブの処理結果を運用サーバ２００から取得し、中間データを取得する。中間データ解析部１６０は、中間データから、ジョブフローのデータ抽出処理によって抽出された抽出データを取得し、管理情報記憶部１２０に抽出データを格納する。
【００６２】
中間データ解析部１６０は、取得した抽出データと、該当の抽出データの取得元のジョブフローに入力されたマスタデータとに基づいて、削除データを取得する。削除データとは、マスタデータと抽出データとの差分のデータである。削除データは、データ抽出処理により抽出されなかったデータであるともいえる。削除データ解析部１７０は、削除データを得るために、該当のジョブフローに入力されたマスタデータを運用サーバ２００に問い合わせてもよい。あるいは、テスト情報記憶部１１０のマスタデータのサンプルが、運用情報記憶部２１０のマスタデータと同じ内容であれば、削除データ解析部１７０は該当のマスタデータのサンプルをテスト情報記憶部１１０から取得して、削除データの取得に用いてもよい。
【００６３】
削除データ解析部１７０は、入力されたマスタデータと出力した集計データとが一致する複数のジョブフローのうち、削除データが一致するジョブフロー群を、集約対象のジョブフロー群として特定する。
【００６４】
ジョブフロー集約部１８０は、削除データ解析部１７０により特定された集約対象のジョブフロー群を集約する。具体的には、ジョブフロー集約部１８０は、運用情報記憶部２１０に記憶された該当のジョブフロー群の複数の定義情報のうち１つを残し、他を破棄する。ジョブフロー集約部１８０は、該当のジョブフロー群により実行されていた業務処理を残した１つのジョブフローによって実行するようジョブフローの実行スケジュールを変更し、運用情報記憶部２１０に記憶されたジョブフローの定義情報に変更結果を反映させる。ジョブフロー集約部１８０は、運用情報記憶部２１０に記憶されたジョブフローの定義情報を変更するとともに、テスト情報記憶部１１０に記憶されたジョブフローの定義情報も同じ内容になるように変更する。
【００６５】
次に、第２の実施の形態の処理に用いられる情報を例示する。以下では、主に、ジョブ管理ソフトウェアが小売業の業務に用いられる場合を想定した情報を例示する（ただし、他業種の業務に関する情報でもよい）。
【００６６】
図７は、マスタデータの例を示す図である。マスタデータＭ１は、運用情報記憶部２１０に記憶される。また、マスタデータＭ１のサンプル（複製でもよい）は、テスト情報記憶部１１０に記憶される。マスタデータＭ１は、関係データベース（ＲＤＢ：Relational DataBase）の形式で各種の情報を管理する。マスタデータＭ１は、店舗名、商品名および売上額の項目を含む。
【００６７】
店舗名の項目には、小売業者の店舗名が登録される。商品名の項目には、店舗で販売された商品名が登録される。売上額の項目には、商品の売上額が登録される。例えば、マスタデータＭ１には、店舗名が“Ｎ１”、商品名が“Ｒ１”、売上額が“１０００万”という情報が登録されている。これは、店舗名“Ｎ１”の店舗において、商品名“Ｒ１”の商品の売上額が１０００万円であることを示す。
【００６８】
マスタデータＭ１に含まれる店舗名、商品名および売上額の設定値の１セット（マスタデータＭ１の１行に相当）を１つのレコードと呼ぶことができる。
図８は、集約候補管理テーブルの例を示す図である。集約候補管理テーブル１２１は、管理情報記憶部１２０に記憶される。集約候補管理テーブル１２１は、ジョブフロー名およびグループ名の項目を含む。
【００６９】
ジョブフロー名の項目には、ジョブフローの名称が登録される。ジョブフロー名は、ジョブフローの識別情報であるともいえる。グループ名の項目には、ジョブフローが属するグループの名称が登録される。グループ名は、グループの識別情報であるともいえる。例えば、集約候補管理テーブル１２１には、ジョブフロー名が“ジョブフローＪＡ”、グループ名が“グループＧ１”という情報が登録される。これは、ジョブフローＪＡがグループＧ１に属することを示す。
【００７０】
図９は、削除レコード数テーブルの例を示す図である。削除レコード数テーブル１２２は、管理情報記憶部１２０に記憶される。削除レコード数テーブル１２２は、ジョブフロー名および削除レコード数の項目を含む。
【００７１】
ジョブフロー名の項目には、ジョブフローの名称が登録される。削除レコード数の項目には、削除レコード（マスタデータＭ１の１レコードに相当）の数が登録される。例えば、削除レコード数テーブル１２２には、ジョブフロー名が“ジョブフローＪＡ”、削除レコード数が“７０”という情報が登録される。これは、ジョブフローＪＡにおける削除レコード数が７０であったことを示す。
【００７２】
図１０は、削除データ管理情報の例を示す図である。削除データ管理情報１２３は、複数の候補フローそれぞれの削除データテーブルを含む。１つの削除データテーブルを削除データの一単位と考えることができる。例えば、削除データ管理情報１２３は、同一のグループ（グループＧ１）に属するジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤそれぞれの削除データテーブル１２３ａ，１２３ｂ，１２３ｃ，１２３ｄを含む。以下では、主に削除データテーブル１２３ａのデータ構造について説明するが、他の削除データテーブルに関しても同様のデータ構造となる。
【００７３】
削除データテーブル１２３ａは、マスタデータＭ１と同様の項目を含み得る。削除データテーブル１２３ａに含まれる項目は、マスタデータＭ１に含まれる項目のうちの一部であることもある。例えば、削除データテーブル１２３ａは、店舗名、商品名および売上額の項目を含む。また、後述するように、同一グループに属するジョブフローであっても、各削除データテーブルに含まれるデータ項目は、完全には一致しないこともある。
【００７４】
なお、解析サーバ１００が、削除データ管理情報１２３として、削除データそのものを保持する例を説明した。一方、解析サーバ１００は、削除データそのものに代えて、削除データ（例えば、削除データテーブル内の各レコード）を特定する情報を、削除データ管理情報１２３として保持してもよい。削除データを特定する情報としては、例えば、マスタデータＭ１に含まれる各レコードの識別情報が考えられる。より具体的には、各レコードの識別情報としてレコードを一意に特定するキー（主キー）が考えられる（図７のマスタデータＭ１の例では主キー（例えば、レコード番号など）に相当する項目の図示は省略されている）。この場合、解析サーバ１００は、各ジョブフローの削除データが同じであるか否かの判定を行う際、当該レコードの識別情報を比較することで、削除データが同じであるか否かの判定を行うこともできる。
【００７５】
図１１は、処理同一判定管理テーブルの例を示す図である。処理同一判定管理テーブル１２４は、管理情報記憶部１２０に格納される。処理同一判定管理テーブル１２４には、ジョブフローのグループ毎に、ジョブフローの処理の削除データ解析部１７０による同一性判定の結果が、判定時刻に対応付けて登録される。処理同一判定管理テーブル１２４では、グループＧ１（ジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤが属する）の情報を例示している。具体的には、各時刻において、同グループに属する他の何れかのジョブフローと削除データテーブルが同じであるジョブフローにフラグ“ＴＲＵＥ”が設定される。また、同グループに属する他の何れのジョブフローとも削除データテーブルが一致しないジョブフローにフラグ“ＦＡＬＳＥ”が登録される。他のグループも、同様のテーブルにより管理される。
【００７６】
ここで、以下の説明では、削除データ解析部１７０による削除データの解析処理は、日次で行われるものとする。グループＧ１に属するジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤは、それぞれ１日１回（１２時や１８時などのスケジュールされた時刻などに）実行される。すると、削除データ解析部１７０は、ジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤそれぞれの１日分の削除データの収集結果によりジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤの毎回の同一性判定を行える（同一性の判定に利用した削除データを破棄してよい）。
【００７７】
処理同一判定管理テーブル１２４によれば、時刻“２０１５／０８／１６  ０７：００”において、ジョブフローＪＡが“ＴＲＵＥ”、ジョブフローＪＢが“ＴＲＵＥ”、ジョブフローＪＣが“ＴＲＵＥ”、ジョブフローＪＤが“ＴＲＵＥ”という情報が登録される。これは、２０１５年８月１６日７時００分の判定では、グループＧ１に属するジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤのデータ抽出処理における削除データが全て同じであったことを示す。
【００７８】
また、処理同一判定管理テーブル１２４によれば、時刻“２０１５／０８／２５  ０７：００”において、ジョブフローＪＡが“ＴＲＵＥ”、ジョブフローＪＢが“ＦＡＬＳＥ”、ジョブフローＪＣが“ＴＲＵＥ”、ジョブフローＪＤが“ＦＡＬＳＥ”という情報が登録される。これは、２０１５年８月２５日７時００分の判定では、ジョブフローＪＡ，ＪＣのデータ抽出処理に対応する削除データテーブルが同じであったことを示す。また、同時刻の判定では、ジョブフローＪＢのデータ抽出処理に対応する削除データテーブルが、ジョブフローＪＡ，ＪＣ，ＪＤの何れの削除データテーブルとも一致しなかったことを示す。更に、同時刻の判定では、ジョブフローＪＤのデータ抽出処理に対応する削除データテーブルが、ジョブフローＪＡ，ＪＢ，ＪＣの何れの削除データテーブルとも一致しなかったことを示す。
【００７９】
また、処理同一判定管理テーブル１２４によれば、時刻“２０１５／０８／２７  ０７：００”において、ジョブフローＪＡが“ＴＲＵＥ”、ジョブフローＪＢが“ＦＡＬＳＥ”、ジョブフローＪＣが“ＴＲＵＥ”、ジョブフローＪＤが“ＴＲＵＥ”という情報が登録される。これは、２０１５年８月２７日７時００分の判定では、ジョブフローＪＡ，ＪＣ，ＪＤのデータ抽出処理に対応する削除データテーブルが同じであったことを示す。また、同時刻の判定では、ジョブフローＪＢのデータ抽出処理に対応する削除データテーブルが、ジョブフローＪＡ，ＪＣ，ＪＤの何れの削除データテーブルとも一致しなかったことを示す。
【００８０】
更に、処理同一判定管理テーブル１２４によれば、時刻“２０１５／０８／２８  ０７：００”において、ジョブフローＪＡが“ＴＲＵＥ”、ジョブフローＪＢが“ＴＲＵＥ”、ジョブフローＪＣが“ＴＲＵＥ”、ジョブフローＪＤが“ＦＡＬＳＥ”という情報が登録される。これは、２０１５年８月２８日７時００分の判定では、ジョブフローＪＡ，ＪＢ，ＪＣのデータ抽出処理に対応する削除データテーブルが同じであったことを示す。また、同時刻の判定では、ジョブフローＪＤのデータ抽出処理に対応する削除データテーブルが、ジョブフローＪＡ，ＪＢ，ＪＣの何れの削除データテーブルとも一致しなかったことを示す。
【００８１】
次に、解析サーバ１００による処理手順を説明する。
図１２は、解析サーバの処理例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【００８２】
（Ｓ１）候補フロー判定部１５０は、候補フロー判定処理を実行する。具体的には、テスト運用時のジョブフローの実行結果に基づいて、集約対象とする候補フローを判定する。候補フロー判定部１５０は、候補フローをグループ化する。処理の詳細は後述される。ここで、ステップＳ１は、テスト運用時の処理である。
【００８３】
（Ｓ２）中間データ解析部１６０は、中間データ解析処理を実行する。具体的には、中間データ解析部１６０は、本番運用時に実行されたジョブフロー（候補フロー）の各ジョブが生成した中間データを運用サーバ２００から取得し、データ抽出処理により生成された抽出データを取得する。中間データ解析部１６０は、取得した抽出データと、該当の抽出データを生成したジョブフローに入力されたマスタデータとに基づいて、削除データや削除レコードの数を取得する。処理の詳細は後述される。
【００８４】
（Ｓ３）削除データ解析部１７０は、削除データ解析処理を実行する。具体的には、削除データ解析部１７０は、中間データ解析部１６０により取得された削除データおよび削除レコードの数を同一グループに属する候補フロー同士で比較する。削除データ解析部１７０は、比較結果に応じて、集約対象とするジョブフローの組合せを決定する。処理の詳細は後述される。なお、削除データ解析部１７０は、スケジュールされた所定の時刻に、ステップＳ３の削除データ解析処理を実行する（例えば、処理同一判定管理テーブル１２４は毎日７時に実行するようスケジュールされているケースである）。
【００８５】
（Ｓ４）ジョブフロー集約部１８０は、ジョブフロー集約処理を実行する。具体的には、同じ処理を実行する複数のジョブフローそれぞれの業務処理を１つのジョブフローによって実行するよう業務処理の実行内容を変更する。処理の詳細は後述される。ここで、ステップＳ２，Ｓ３，Ｓ４は、本番運用時の処理である。
【００８６】
次に、図１２の各ステップの手順を詳細に説明する。
図１３は、候補フロー判定処理の例を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。以下に示す手順は、図１２のステップＳ１に相当する。
【００８７】
（Ｓ１１）ジョブフロー実行部１３０は、テスト情報記憶部１１０に記憶されたジョブフローの定義情報およびマスタデータのサンプルに基づいて、各ジョブフローを実行する。アクセス解析部１４０は、ジョブフローが実行される際に、当該ジョブフローの入力となったマスタデータおよび出力データを、当該ジョブフローの識別情報（ジョブフロー名）に対応付けたアクセス解析結果を、管理情報記憶部１２０に格納する。なお、アクセス解析部１４０が管理情報記憶部１２０に格納するマスタデータの情報は、マスタデータの識別情報のみでもよい。アクセス解析部１４０が管理情報記憶部１２０に格納する出力データの情報は、集計データの内容を含む。
【００８８】
（Ｓ１２）候補フロー判定部１５０は、管理情報記憶部１２０に記憶されたアクセス解析結果に基づいて、共通のマスタデータにアクセスする複数のジョブフローを特定する。
（Ｓ１３）候補フロー判定部１５０は、管理情報記憶部１２０に記憶されたアクセス解析結果に基づいて、共通のマスタデータにアクセスする各ジョブフローの出力データ（集計データ）を比較する。
【００８９】
（Ｓ１４）候補フロー判定部１５０は、共通のマスタデータにアクセスする各ジョブフローのうち、出力データ（集計データ）が一致するジョブフロー同士をグループ化する。候補フロー判定部１５０は、複数のグループを作成することもある。例えば、候補フロー判定部１５０は、ジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤが属するグループＧ１を作成する。
【００９０】
（Ｓ１５）候補フロー判定部１５０は、管理情報記憶部１２０に記憶された集約候補管理テーブル１２１にグループ化結果を登録する。こうして、集約候補管理テーブル１２１には、１以上のグループのグループ名とグループに属するジョブフロー名が登録される。
【００９１】
図１４は、候補フロー判定処理の具体例を示す図である。例えば、テスト情報記憶部１１０には、マスタデータＭ１，Ｍ２のサンプル（単に、マスタデータＭ１，Ｍ２と称する）が記憶されている。
【００９２】
例えば、マスタデータＭ１は、ジョブフローＪＡ，ＪＢ，ＪＭの入力となっている。ここで、ジョブフローＪＭは、ジョブＪＭ１（抽出処理）、ジョブＪＭ２（加工処理）およびジョブＪＭ３（集計処理）の３つのジョブを含む。ジョブフローＪＭの出力データは、集計データＰ３である。
【００９３】
また、例えば、マスタデータＭ２は、ジョブフローＪＮの入力となっている。ここで、ジョブフローＪＮは、ジョブＪＮ１（抽出処理）、ジョブＪＮ２（加工処理）およびジョブＪＮ３（集計処理）の３つのジョブを含む。ジョブフローＪＮの出力データは、集計データＰ４である。
【００９４】
この場合、ジョブフローＪＡ，ＪＢ，ＪＭの入力データはマスタデータＭ１であり、ジョブフローＪＮの入力データはマスタデータＭ２である。したがって、候補フロー判定部１５０は、ジョブフローＪＮを、ジョブフローＪＡ，ＪＢ，ＪＭが属するグループには所属させない。
【００９５】
また、ジョブフローＪＡの出力データである集計データＰ１の内容とジョブフローＪＢの出力データである集計データＰ２の内容とは一致する。ジョブフローＪＭの出力データである集計データＰ３の内容は、集計データＰ１，Ｐ２の内容と相違する。したがって、候補フロー判定部１５０は、ジョブフローＪＡ，ＪＢを同じグループ（グループＧ１）に所属させる。候補フロー判定部１５０は、ジョブフローＪＭを、ジョブフローＪＡ，ＪＢが属するグループには所属させない。
【００９６】
例えば、マスタデータＭ１を入力とし、集計データＰ３と同じ内容の出力データを出力する他のジョブフローがある場合、候補フロー判定部１５０は、当該他のジョブフローとジョブフローＪＭとをグループ化する（グループＧ１とは別グループとなる）。
【００９７】
また、例えば、マスタデータＭ２を入力とし、集計データＰ４と同じ内容の出力データを出力する他のジョブフローがある場合、候補フロー判定部１５０は、当該他のジョブフローとジョブフローＪＮとをグループ化する（グループＧ１とは別グループとなる）。
【００９８】
こうして、候補フロー判定部１５０は、本番運用時に集約の対象とする候補フローを判定し、グループにまとめる。中間データ解析部１６０は、運用サーバ２００による本番運用時に、運用サーバ２００で何れかのジョブフローが実行されるたびに、当該ジョブフローの中間データを運用サーバ２００から受信し、次の処理を実行する。
【００９９】
図１５は、中間データ解析処理の例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。以下に示す手順は、図１２のステップＳ２に相当する。ここで、中間データ解析部１６０は、集約候補管理テーブル１２１に記憶されたジョブフロー（候補フロー）に関して以下の手順を実行する。中間データ解析部１６０は、候補フロー以外のジョブフローに関しては以下の手順を実行しなくてもよい。
【０１００】
（Ｓ２１）中間データ解析部１６０は、実行されたジョブフローに入力されたマスタデータを読み込む。テスト情報記憶部１１０に記憶されているマスタデータのサンプルが、運用サーバ２００のマスタデータと同期していれば、中間データ解析部１６０は、該当のマスタデータをテスト情報記憶部１１０から取得できる。あるいは、中間データ解析部１６０は、該当のマスタデータを運用サーバ２００から取得してもよい。
【０１０１】
（Ｓ２２）中間データ解析部１６０は、運用サーバ２００から受信した中間データを読み込む。中間データはジョブ毎に存在し得る。中間データ解析部１６０は、ステップＳ２３，Ｓ２４の手順によって、ジョブ毎の中間データの中から、データ抽出処理に対応するジョブによって作成された抽出データを特定する。
【０１０２】
（Ｓ２３）中間データ解析部１６０は、中間データのレコード数がマスタデータのレコード数以下であるか否かを判定する。中間データのレコード数がマスタデータのレコード数以下である場合、処理をステップＳ２４に進める。中間データのレコード数がマスタデータのレコード数よりも大きい場合、処理をステップＳ２２に進める（同ジョブフローの別の中間データの読み込みを行う）。
【０１０３】
（Ｓ２４）中間データ解析部１６０は、中間データの各列の情報がマスタデータに全て含まれているか否かを判定する。中間データの各列の情報がマスタデータに全て含まれている場合、処理をステップＳ２５に進める（この場合、中間データは、データ抽出処理によって作成された抽出データである）。中間データの各列の情報の少なくとも一部がマスタデータに含まれていない場合、処理をステップＳ２２に進める（同ジョブフローの別の中間データの読み込みを行う）。
【０１０４】
（Ｓ２５）中間データ解析部１６０は、中間データ（データ抽出処理によって作成された抽出データ）と、ステップＳ２１で読み込んだマスタデータとを比較して、中間データ（抽出データ）とマスタデータとの差分を削除データとして取得する。中間データ解析部１６０は、取得した削除データを基に、削除レコード数を求め、着目するジョブフロー（今回実行されたジョブフロー）のジョブフロー名に対応付けて管理情報記憶部１２０に記憶された削除レコード数テーブル１２２に書き込む。
【０１０５】
（Ｓ２６）中間データ解析部１６０は、ステップＳ２５で取得した削除データの内容を、着目するジョブフローのジョブフロー名に対応付けて管理情報記憶部１２０に記憶された削除データ管理情報１２３に書き込む。
【０１０６】
なお、ステップＳ２３の判定を行う理由は、中間データのレコード数がマスタデータのレコード数以下であるか否かに応じて、中間データが、データ抽出処理による抽出データであるかを判断できるからである。すなわち、データ抽出処理では、データの抽出を行うため、抽出処理で作成される抽出データのレコード数は、抽出元であるマスタデータのレコード数以下になると考えられる。このため、中間データのレコード数がマスタデータのレコード数以下であれば、当該中間データは、抽出データである可能性がある。中間データのレコード数がマスタデータのレコード数よりも大きければ、当該中間データは、抽出データではない。
【０１０７】
また、ステップＳ２４の判定を行う理由は、マスタデータから抽出された抽出データの情報が、マスタデータの各列の情報（マスタデータＭ１の例では、店舗名、商品名および売上額の項目）の全部または一部分であるはずだからである。すなわち、中間データに含まれる項目が、マスタデータに含まれる項目の一部または全部であれば、該当の中間データは、データ抽出処理により抽出された抽出データであると考えられる。また、中間データに含まれる何れかの項目が、マスタデータに含まれる項目以外の項目であれば、該当の中間データは、データ抽出処理により抽出された抽出データではない。
【０１０８】
このように、中間データ解析部１６０は、ステップＳ２３，Ｓ２４の判定を行うことで、中間データのうち、データ抽出処理による抽出データを適切に特定できる。
中間データ解析部１６０は、図１５の手順を本番運用の間、運用サーバ２００が実行されるたびに繰り返し実行する。前述のように、中間データ解析部１６０は、集約候補管理テーブル１２１に登録された候補フローに関して図１５の手順を実行すればよく、候補フロー以外のジョブフローに関しては図１５の手順を実行しなくてもよい。
【０１０９】
図１６は、削除データ解析処理の例を示すフローチャートである。以下、図１６に示す手順をステップ番号に沿って説明する。以下に示す手順は、図１２のステップＳ３に相当する。
【０１１０】
（Ｓ３１）削除データ解析部１７０は、集約候補管理テーブル１２１を読み込む。
（Ｓ３２）削除データ解析部１７０は、集約候補管理テーブル１２１に基づいて、同一グループに属するジョブフロー（候補フロー）の一覧を取得する。例えば、削除データ解析部１７０は、集約候補管理テーブル１２１に基づいて、グループＧ１に属するジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤ（ジョブフローの一覧）を取得する。
【０１１１】
（Ｓ３３）削除データ解析部１７０は、削除レコード数テーブル１２２を読み込む。
（Ｓ３４）削除データ解析部１７０は、削除データ管理情報１２３を参照して、ステップＳ３２で取得した各ジョブフローの削除データテーブルを読み込む。例えば、削除データ解析部１７０は、ジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤに対して、削除データテーブル１２３ａ，１２３ｂ，１２３ｃ，１２３ｄを読み込む。削除データ解析部１７０は、ジョブフローのグループ毎に、以下に示すステップＳ３５〜Ｓ４０を実行する（処理対象のグループが複数であれば、グループ毎にステップＳ３５〜Ｓ４０を繰り返し実行する）。
【０１１２】
（Ｓ３５）削除データ解析部１７０は、削除レコード数テーブル１２２に基づいて、着目するグループに属する各ジョブフローの削除レコード数を比較する。
（Ｓ３６）削除データ解析部１７０は、着目するグループに属する各ジョブフローの削除レコード数が同一であるか否かを判定する。同一である場合、処理をステップＳ３７に進める。同一でない場合、処理をステップＳ４０に進める。ここで、削除データ解析部１７０は、着目するグループに属する全てのジョブフローの削除レコード数が同一である場合、または、着目するグループに属する一部のジョブフローの削除レコード数が同一である場合、処理をステップＳ３７に進める。削除レコード数テーブル１２２の例では、グループＧ１に属するジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤのうち、ジョブフローＪＡ，ＪＢ，ＪＣは、削除レコードが“７０”で同一である。この場合、削除データ解析部１７０は、処理をステップＳ３７に進める。
【０１１３】
（Ｓ３７）削除データ解析部１７０は、ステップＳ３４で読み込んだ削除データテーブルに基づいて、削除レコード数が同一であるジョブフロー（例えば、ジョブフローＪＡ，ＪＢ，ＪＣ）について、削除データの内容を比較する。
【０１１４】
（Ｓ３８）削除データ解析部１７０は、ステップＳ３７の比較において、削除データが同一であるか否かを判定する。削除データが同一である場合、処理をステップＳ３９に進める。削除データが同一でない場合、処理をステップＳ４０に進める。ここで、削除データ解析部１７０は、削除レコード数が同一である全てのジョブフローの削除データが同一である場合、または、削除レコード数が同一である一部のジョブフローの削除データが同一である場合に、処理をステップＳ３９に進める。削除データが同一であるか否かは、各ジョブフローの削除データテーブルの内容を比較することで判定できる。ただし、前述のように、削除データテーブルに含まれる項目がジョブフローによって異なることもある。この場合に削除データの内容が同一であるか否かを判定する方法の具体例については後述される。
【０１１５】
（Ｓ３９）削除データ解析部１７０は、削除レコードの数および削除データの内容の両方が同一であるジョブフロー群について、処理同一判定管理テーブル１２４に判定時刻と共に“ＴＲＵＥ”を書き込む。削除データ解析部１７０は、着目しているグループに属するジョブフローのうち、当該ジョブフロー群以外のジョブフローについては、“ＦＡＬＳＥ”を書き込む。そして、処理を終了する。
【０１１６】
（Ｓ４０）削除データ解析部１７０は、着目するグループに属するジョブフローについて、処理同一判定管理テーブル１２４に判定時刻と共に“ＦＡＬＳＥ”を書き込む。
なお、ステップＳ３６のように、削除データテーブル同士の中身を比較する前に、削除レコード数が同一であるか否かを判定することで、比較対象とする削除データテーブルを絞り込むことができる。これによって、ステップＳ３７では、削除レコード数が同じである削除データテーブル同士を比較すれば済み、削除レコード数が異なる削除データテーブル同士を比較しなくてよい。このため、余計な判定を行わずに済み、処理コストを抑えられる。
【０１１７】
第２の実施の形態の例では、前述のように、削除データ解析部１７０は、ジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤそれぞれの１日分の削除データの収集結果によりジョブフローＪＡ，ＪＢ，ＪＣ，ＪＤの毎回の同一性判定を行える。削除データ解析部１７０は、今回の同一性の判定に利用した削除データを破棄してよい。
【０１１８】
図１７は、削除データの比較方法の例を示す図である。図１７では、ジョブフローＡの削除データテーブル１２３ａと、ジョブフローＪＢの削除データテーブル１２３ｅとを比較する場合を例示している。削除データテーブル１２３ａは、店舗名、商品名および売上額の３つの項目を含むのに対し、削除データテーブル１２３ｅは、店舗名および商品名の２つの項目を含み、売上額の項目を含まない点が異なっている（図１７（Ａ））。この場合、削除データ解析部１７０は、項目数の少ない方のテーブル（この例では、削除データテーブル１２３ｅ）に含まれる項目の設定値によって、両テーブルの内容が一致するか否かを判定する。削除データテーブル１２３ａ，１２３ｅの例では、削除データテーブル１２３ｅの２つの項目は、削除データテーブル１２３ａの３つの項目に包含されているから、削除データテーブル１２３ｅの店舗名および商品名の項目により一致を判定する。削除データ解析部１７０は、削除データテーブル１２３ａ，１２３ｅから１レコードずつ抽出して比較を行う。
【０１１９】
例えば、図１７（Ｂ）は、削除データテーブル１２３ａのレコードＲ１１と、削除データテーブル１２３ｅのレコードＲ２１との比較である。レコードＲ１１の店舗名は“Ｂ”であり、商品名は“Ｙ”である。レコードＲ２１の店舗名は“Ｂ”であり、商品名は“Ｙ”である。したがって、削除データ解析部１７０は、レコードＲ１１，Ｒ２１を一致すると判定する。
【０１２０】
また、例えば、図１７（Ｃ）は、削除データテーブル１２３ａのレコードＲ１２と、削除データテーブル１２３ｅのレコードＲ２２との比較である。レコードＲ１２の店舗名は“Ｂ”であり、商品名は“Ｙ１”である。レコードＲ２２の店舗名は“Ｂ”であり、商品名は“Ｙ２”である。したがって、削除データ解析部１７０は、レコードＲ１２，Ｒ２２を相違する（一致しない）と判定する。
【０１２１】
こうした比較により、両方の削除データテーブルの全レコードが一致する場合に、削除データ解析部１７０は、両方の削除データテーブルが一致すると判定する。両方の削除データテーブルに一致しないレコードがある場合に、削除データ解析部１７０は、両方の削除データテーブルが一致しないと判定する。
【０１２２】
こうして、ジョブフローのグループ毎に、ジョブフローの処理の同一性の判定結果が蓄積されていく。例えば、１０回分、２０回分など所定数の判定結果が蓄積された段階で、ジョブフロー集約部１８０は、ジョブフロー集約処理を実行する。
【０１２３】
図１８は、ジョブフロー集約処理の例を示すフローチャートである。以下、図１８に示す手順をステップ番号に沿って説明する。以下に示す手順は、図１２のステップＳ４に相当する。ジョブフロー集約部１８０は、グループ毎に以下の手順を繰り返し実行する。
【０１２４】
（Ｓ４１）ジョブフロー集約部１８０は、管理情報記憶部１２０に記憶された処理同一判定管理テーブル１２４を参照して、同一判定結果が常に“ＴＲＵＥ”である（すなわち、同一と判定された）ジョブフロー群を集約対象と決定する。
【０１２５】
（Ｓ４２）ジョブフロー集約部１８０は、集約対象のジョブフロー群を１つのジョブフローに集約する。例えば、ジョブフロー集約部１８０は、ジョブフローＪＡ，ＪＣを集約する場合、ジョブフローＪＣの定義情報を用いて実行されていた業務処理をジョブフローＪＡの定義情報を用いて実行するようにジョブの実行スケジュールの設定を変更する。この場合、ジョブフロー集約部１８０は、ジョブフローＪＣの定義情報を破棄してよい。また、集約対象のジョブフローは２つの場合もあるし、３以上の場合もある。ジョブフロー集約部１８０は、ジョブフローの集約結果を、運用サーバ２００のジョブフローの定義情報に反映するよう運用サーバ２００に通知する。こうして、運用サーバ２００にもジョブフローの集約結果が反映される。
【０１２６】
図１９は、ジョブフロー集約処理の具体例を示す図である。例えば、グループＧ１の処理同一判定管理テーブル１２４によれば、ジョブフローＪＢ，ＪＤは、判定結果として“ＦＡＬＳＥ”（同一でない）の記録が存在するが、ジョブフローＪＡ，ＪＣは、判定結果として“ＴＲＵＥ”（同一である）の記録のみである。この場合、ジョブフロー集約部１８０は、ジョブフローＪＡ，ＪＣの処理が常に同一である旨を検出し、ジョブフローＪＡ，ＪＣを集約すると決定する。このように、削除データテーブルを用いた複数回の判定結果の蓄積を基に、同一とするジョブフロー群を得ることで、より適切に集約対象のジョブフロー群を決定できる。
【０１２７】
ところで、第１ジョブおよび第２ジョブで実行される処理の同一性を判定するために、第１ジョブの入力データおよび出力データ、第２ジョブの入力データおよび出力データを比較することが考えられる。具体的には、第１ジョブの入力データと第２ジョブの入力データとが一致し、かつ、第１ジョブの出力データと第２ジョブの出力データとが一致していれば、第１ジョブおよび第２ジョブの処理は同一であると判断する。また、第１ジョブの入力データと第２ジョブの入力データとが不一致、または、第１ジョブの出力データと第２ジョブの出力データとが不一致であれば、第１ジョブおよび第２ジョブの処理は同一でないと判断する。
【０１２８】
この考え方で、複数のジョブを含むジョブフローで実行される処理の同一性を判定することも考えられる。すなわち、第１ジョブフローおよび第２ジョブフローの同一性を判定するために、第１ジョブフローの入力データおよび出力データ、第２ジョブフローの入力データおよび出力データを比較する。具体的には、第１ジョブフローの入力データと第２ジョブフローの入力データとが一致し、かつ、第１ジョブフローの出力データと第２ジョブフローの出力データとが一致していれば、第１ジョブフローおよび第２ジョブフローの処理は同一であると判断し得る。また、第１ジョブフローの入力データと第２ジョブフローの入力データとが不一致、または、第１ジョブフローの出力データと第２ジョブフローの出力データとが不一致であれば、第１ジョブフローおよび第２ジョブフローの処理は同一でないと判断し得る。
【０１２９】
ところが、この方法を、バッチ処理を行うジョブフローに対して適用すると問題が生じ得る。前述のように、バッチ処理は、抽出処理、加工処理、集計処理の３つの種類の処理の組合せである。バッチ処理では、抽出処理、加工処理、集計処理の順に処理が進み、加工処理に進んだ後に抽出処理を実行するなど、処理順序が逆転することはない。また、加工処理、集計処理は、その処理の特性上、入力データと出力データとが対応しており、異なる入力データに対して、同じ出力データが作成されることがない。これを踏まえて上記問題を説明するために、下記のジョブフローＪＸ，ＪＹを考える。
【０１３０】
図２０は、ジョブフローにおける抽出処理の例（その１）を示す図である。図２０（Ａ）は、ジョブフローＪＸを例示している。図２０（Ｂ）は、ジョブフローＪＹを例示している。ジョブフローＪＸは、ジョブＪＸ１，ＪＸ２，ＪＸ３を含む。ジョブＪＸ１は抽出処理である。ジョブＪＸ２は加工処理である。ジョブＪＸ３は集計処理である。また、ジョブフローＪＹは、ジョブＪＹ１，ＪＹ２，ＪＹ３を含む。ジョブＪＹ１は抽出処理である。ジョブＪＹ２は加工処理である。ジョブＪＹ３は集計処理である。
【０１３１】
ジョブフローＪＸ，ＪＹに入力されるデータは、何れもマスタデータＭ３である。ジョブフローＪＸにより出力されるデータは、集計データＰ５である。ジョブフローＪＹにより出力されるデータは、集計データＰ６である。
【０１３２】
ここで、マスタデータＭ３は、データＤ１，Ｄ２，Ｄ３を含む。ジョブＪＸ１は、データＤ３を除外するフィルタ処理を行う。すなわち、ジョブＪＸ１は、マスタデータＭ３のデータＤ１，Ｄ２，Ｄ３をフィルタ処理して、データＤ３を削除したデータＤ１，Ｄ２を抽出する。ジョブＪＸ１により抽出される抽出データＭ３ａには、データＤ１，Ｄ２が含まれ、データＤ３が含まれない。
【０１３３】
一方、ジョブＪＹ１は、データＤ１を除外するフィルタ処理を行う。すなわち、ジョブＪＹ１は、マスタデータＭ３のデータＤ１，Ｄ２，Ｄ３をフィルタ処理して、データＤ１を削除したデータＤ２，Ｄ３を抽出する。ジョブＪＹ１により抽出される抽出データＭ３ｂには、データＤ２，Ｄ３が含まれ、データＤ１が含まれない。
【０１３４】
このようなバッチ処理のジョブフローＪＸ，ＪＹに対して、次のようにサンプルデータを与えることを考える。
図２１は、ジョブフローにおける抽出処理の例（その２）を示す図である。図２１（Ａ）は、ジョブフローＪＸ，ＪＹそれぞれにマスタデータＭ４を入力する例である。マスタデータＭ４は、データＤ４を含む（他のデータは含まれない）。この場合、データＤ４は、ジョブＪＸ１，ＪＹ１によりフィルタされないので、ジョブＪＸ１，ＪＹ１それぞれによる抽出データ（図２１（Ａ）では、まとめて抽出データＭ３ｃと表記している）は、何れもデータＤ４となる。
【０１３５】
このとき、ジョブフローＪＸ，ＪＹの同一性を、入力であるマスタデータＭ４および出力である集計データＰ７，Ｐ８によって判断することを考える。マスタデータＭ４が入力である点はジョブフローＪＸ，ＪＹで共通なので、集計データＰ７，Ｐ８が同一であれば、ジョブフローＪＸ，ＪＹは同一処理を行っていると判定されることになる。
【０１３６】
図２１（Ｂ）は、ジョブフローＪＸ，ＪＹそれぞれにマスタデータＭ５を入力する例である。マスタデータＭ５は、データＤ１を含む（他のデータは含まれない）。この場合、データＤ１は、ジョブＪＸ１によりフィルタされないので、ジョブＪＸ１による抽出データＭ３ｄは、データＤ１である。一方、データＤ１は、ジョブＪＹ１によりフィルタされるので、ジョブＪＹ１による抽出データは存在しないことになる（ジョブフローＪＹでは抽出処理であるジョブＪＹ１によりデータが抽出されない）。このため、後続のジョブＪＹ２，ＪＹ３が動作せず、集計データが作成されない。
【０１３７】
ジョブフローＪＸ，ＪＹの同一性を入力であるマスタデータＭ５および出力である集計データＰ９によって判断することを考える。マスタデータＭ５が入力である点はジョブフローＪＸ，ＪＹで共通である。しかし、ジョブフローＪＸでは集計データＰ９が作成されているが、ジョブフローＪＹでは集計データが作成されていないため、ジョブフローＪＸ，ＪＹは同一処理を行っていないと判定されることになる。
【０１３８】
このように、同じジョブフローでも、入力データに使用するサンプルデータが変わると、同一処理であるか否かの判定結果が異なる。すなわち、評価用の入力データに依存して正しくない評価結果を導出するおそれがあり、両ジョブフローが同一処理であるか否かを適切に判定することが難しくなる。このような問題に対して、ジョブフローの入力に使用するデータのサンプル数を増やすことも考えられる。しかし、サンプル数を増やすための作業コストが問題となる。本番環境に即した適切なサンプルを多数用意するのは業務に適合した様々な条件や制約を考慮せねばならず、容易ではないからである。これに対し、２つのジョブフローの入出力データの比較による同一性の判定を、運用環境上で行うことも考えられる。様々な入力データに対して出力データを得られるためである。ところがこの場合、次のような問題が生じる。
【０１３９】
図２２は、運用環境上で出力データを比較する際に問題となる例を示す図である。ある時刻において、ジョブフローＪＸは、マスタデータＭ６を入力として、出力データＰ１０を出力する。ジョブフローＪＺは、ジョブフローＪＸの終了直後に、出力データＰ１０を更新する。ジョブフローＪＹは、マスタデータＭ６を入力として、出力データＰ１１を出力する。出力データＰ１１は、他のジョブフローにより更新されない。この場合に、入出力データの比較によりジョブフローＪＸ，ＪＹの同一性の判定を行っても、適切な判定結果を得ることが難しくなる。なぜなら、出力データＰ１０は、ジョブフローＪＺにより直ちに更新されてしまうからである。ジョブフローＪＺにより更新された出力データＰ１０と出力データＰ１１とを比較しても、ジョブフローＪＺの影響が出力データＰ１０に及んでいるため、ジョブフローＪＸ，ＪＹの同一性の判定には不適切である。
【０１４０】
これに対し、集計処理により出力される集計データの場合、データサイズが比較的小さいため、更新される前に複写しておくことも考えられる。しかし、ジョブフローの出力データは、別の業務処理で活用するため、通常はＲＤＢＭＳ（RDB Management System）により管理されるＲＤＢ内に格納される。ＲＤＢは、業務データの記憶先として厳密に管理された情報格納領域であり、業務処理以外の目的でＲＤＢ内にテーブル複写などの操作を行えない制約がある。また、判定対象となるデータをＲＤＢ以外の記憶領域に複写することも考えられるが、該当のデータが別業務処理で更新されるタイミングを把握することは難しい。このため、正しい（更新前の）データをＲＤＢ外に確実に複写するには、該当のデータに対するロック処理を行うことになる。このようなロック処理は、業務処理に多大な影響を及ぼすリスク（例えば、業務停止など）があるため、業務処理以外の目的で行うことはできない。よって、ジョブフローの処理の同一判定処理では、本番環境でジョブフローの出力データを直接利用するのは現実的ではない。
【０１４１】
そこで、解析サーバ１００は、ジョブフローの途中で作成される中間データ（主に抽出データ）を用いる。中間データは、中間データを作成したジョブフロー内のジョブでしか使用されず、他のジョブフローが当該中間データを使用することがない。よって、解析サーバ１００は、あるジョブフローの組合せについて、上記のように他のジョブフローの影響を受けずに、また、本番環境で管理されるＲＤＢへの影響を抑えて、同一性の判定を適切に行える。
【０１４２】
特に、削除データをジョブフローの同一性の判定に用いることで、該判定を高速に実行し得る。削除データは、マスタ内に含まれるエラーデータや当時の業務指示などで処理対象外になったデータなどのイレギュラーなデータであることが多い。このため、例えば、削除データは通常抽出データの全体量の１％に満たない非常に小さなサイズのデータである。このようにマスタデータや抽出データよりも小さなデータを比較用のデータとして用いることで、判定処理を高速に行える。また、判定処理に用いる計算資源を節約できる。
【０１４３】
更に、第２の実施の形態の情報処理システムでは、解析サーバ１００の機能（図５，６で示した解析サーバ１００の各機能）を運用サーバ２００が有してもよい。この場合、ジョブフローの処理の同一判定処理を行うために少なからず業務資産である運用サーバ２００のハードウェアリソースを消費することになる。このため、当該同一判定処理が業務資産のリソースを過大に消費し、本番業務に支障を与えることがあってはならない。このことから、当該同一判定処理に利用する判断材料としてのデータ量は、比較的小さい方が好ましい。この場合にも削除データを用いることで、運用サーバ２００のリソース負荷が過大になることを防ぎ、本番業務への影響を抑えられる。
【０１４４】
以上のように、第２の実施の形態の情報処理システムによれば、集約可能なジョブフローを特定して集約することができる。このとき、ジョブフローのデータ抽出処理における削除データを比較して同一性の判定を行うことで、入出力データのみを比較してジョブフローの同一性判定を行うよりも同一性の判定精度を高められる。また、削除データを用いることで、処理対象のデータ量が過大となるのを抑え、判定処理のためのハードウェアのリソース負荷を抑えることができる。更に、比較対象のデータ量が過大となるのも抑えられるので、当該判定を高速に行える。
【０１４５】
ここで、共通の処理を行う複数のジョブフローが別個に定義され、本番業務の運用に用いられていることがある。例えば、複数の拠点それぞれに設けられていたシステムを単一拠点やデータセンタなどのシステムに統合する場合が考えられる。第２の実施の形態の情報処理システムを、複数のシステムが統合された結果として作成されたシステムと考えてもよい。この場合、統合後にも、各拠点のシステムでそれぞれ作成し実行していたジョブフローを各拠点が行っていた業務に引き続き使用すると、統合後の単一システム内に共通の処理を行う複数のジョブフローが生じ得る。単一システムで共通の処理を行う複数のジョブフローが定義されていると、同システムにおけるジョブフローの管理で問題が生じ得る。例えば、ジョブフローのメンテナンスを行うとき、共通の処理を行うジョブフローが複数あると、各ジョブフローについてメンテナンスを行わねばならず、メンテナンスコストが増大するおそれがある。
【０１４６】
そこで、共通の処理を行う複数のジョブフローを１つに集約することが考えられる。複数のジョブフローを１本化できれば、メンテナンスのコストを低減できる。集約後の１つのジョブフローをメンテナンスすればよく、集約前の複数のジョブフローそれぞれをメンテナンスせずに済むようになるからである。ただし、共通の処理を行う複数のジョブフローを適切に把握できなければ、正しく集約を行えないことになる。第２の実施の形態の情報処理システムでは、上記のように、共通の（同一の）処理を行う複数のジョブフローの判定精度を高められるので、判定結果を基にジョブフローの集約を適切に行える。また、こうしてジョブフローを集約することで、ジョブフローのメンテナンスのコストを低減できる。
【０１４７】
なお、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１４８】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【０１４９】
１  制御装置
１ａ  記憶部
１ｂ  演算部
２  マスタデータ
【図１】
0006551205.tif 000002
【図２】
0006551205.tif 000003
【図３】
0006551205.tif 000004
【図４】
0006551205.tif 000005
【図５】
0006551205.tif 000006
【図６】
0006551205.tif 000007
【図７】
0006551205.tif 000008
【図８】
0006551205.tif 000009
【図９】
0006551205.tif 000010
【図１０】
0006551205.tif 000011
【図１１】
0006551205.tif 000012
【図１２】
0006551205.tif 000013
【図１３】
0006551205.tif 000014
【図１４】
0006551205.tif 000015
【図１５】
0006551205.tif 000016
【図１６】
0006551205.tif 000017
【図１７】
0006551205.tif 000018
【図１８】
0006551205.tif 000019
【図１９】
0006551205.tif 000020
【図２０】
0006551205.tif 000021
【図２１】
0006551205.tif 000022
【図２２】
0006551205.tif 000023