以下、図面により、本発明の実施の形態にかかる分析プログラム、分析方法及び分析装置について、図1〜図36を参照しながら説明する。
本実施形態にかかる分析装置は、業務プロセスを実現するために複数のプログラムが実行されるトランザクションにおける、プログラムの呼び出し関係情報を含む業務に関するトランザクションログデータを分析するトランザクションログデータ分析装置である。
なお、トランザクションログデータ分析装置を、ログデータ分析装置又は業務トランザクションログデータ分析装置ともいう。また、トランザクションを業務トランザクションともいう。また、トランザクションログデータを業務トランザクションログデータともいう。
例えば図1に示すように、トランザクションログデータ分析装置1は、業務システム2に接続され、業務システム2によって実現される業務プロセスを分析し、分析結果を利用者に提供するために用いられる。
例えば、このトランザクションログデータ分析装置1を備える情報処理システム3は、業務端末4、業務システム2、トランザクションログデータ収集装置5、トランザクションログデータ格納データベース(DB)6、トランザクションログデータ分析装置1及び利用者端末7を備える。
この場合、トランザクションログデータ分析装置1は、トランザクションログデータ格納データベース(DB)6、及び、利用者端末7に接続される。そして、業務プロセスを改善すべく、その分析結果を必要とする利用者は、利用者端末7を操作することで、トランザクションログデータ分析装置1による分析結果を得ることができる。
また、トランザクションログデータ格納DB6は、業務に関するトランザクションログデータ、即ち、業務に関するプログラムが出力したトランザクションログデータが格納されたものである。つまり、トランザクションログデータ格納DB6は、例えばITシステムのインフラやミドルウェアなどが出力したトランザクションログデータなどの業務に関するトランザクションログデータ以外のトランザクションログデータが含まれていないものとする。このトランザクションログデータ格納DB6は、業務プロセスを実現するために複数のプログラムが実行されるトランザクションにおける、プログラムの呼び出し関係情報を含む業務に関するトランザクションログデータを格納するトランザクションログデータ格納部である。このため、後述するように、トランザクションにおける複数のプログラムの実行順序を示す情報を生成した場合に、分析結果の冗長性を低減することができる。
この場合、トランザクションログデータ収集装置5が、業務に関するトランザクションログデータのみをトランザクションログデータ格納DB6に格納するようにする。例えば、業務システム2に接続されたトランザクションログデータ収集装置5が、業務システム2からトランザクションログデータを収集する。そして、トランザクションログデータ収集装置5が、図5に示すように、収集したトランザクションログデータをフィルタリングして、業務に関するトランザクションログデータのみをトランザクションログデータ格納DB6に格納するようにする。
また、業務システム2には、業務端末4が接続されており、業務システム2の利用者(業務利用者)は、業務端末4を操作することで、業務システム2を利用することができるようになっている。
ここで、業務システム2は、業務プロセスを実現するITシステム(例えば複数のサーバやアプリケーションによって構築されたシステム)であり、例えば、複数のコンピュータ(情報処理装置)が通信ネットワークを介して通信可能に接続されたシステムである。
なお、業務システム2を、トランザクションログデータ収集装置5を含むものとして構成しても良い。また、業務システム2を、トランザクションログデータ収集装置5、及び、トランザクションログデータ格納DB6を含むものとして構成しても良い。また、トランザクションログデータ分析装置1及びトランザクションログデータ格納DB6を備えるものとして、トランザクションログデータ分析システムを構成しても良い。また、トランザクションログデータ分析装置1、トランザクションログデータ格納DB6及びトランザクションログデータ収集装置5を備えるものとして、トランザクションログデータ分析システムを構成しても良い。
また、業務端末4と業務システム2(ここではトランザクションログデータ収集装置5を含む)とは、図2中、符号Aで示すように、ネットワーク8を介して接続されていても良いし、図2中、符号B、Cで示すように、ネットワークを介さずに接続されていても良い。つまり、業務システム2を利用する利用者は、ネットワーク8を介して業務システム2を利用するようになっていても良いし、ネットワークを介さずに業務システム2を利用するようになっていても良い。また、図2中、符号Dで示すように、業務システム2(ここではトランザクションログデータ収集装置5を含む)に接続されたトランザクションログデータ格納DB6と、トランザクションログデータ分析装置1とを、ネットワーク9を介して接続しても良い。つまり、トランザクションログデータ分析装置1と、業務システム2及びこれに接続されたトランザクションログデータ格納DB6とを別の場所に設置し、トランザクションログデータ分析装置1が、ネットワーク9を介してトランザクションログデータ格納DB6を参照するようにしても良い。また、図2中、符号Eで示すように、トランザクションログデータ分析装置1と、業務システム2(ここではトランザクションログデータ収集装置5を含む)に接続されたトランザクションログデータ格納DB6とを別の場所に設置し、ネットワーク9を介して、トランザクションログデータ格納DB6に格納されているトランザクションログデータを、例えばFTP(File Transfer Protocol)などを利用して、トランザクションログデータ分析装置1に接続されたトランザクションログデータ格納DB6へ転送しておくようにしても良い。また、図2中、符号Fで示すように、トランザクションログデータ分析装置1と、業務システム2(ここではトランザクションログデータ収集装置5を含む)及びこれに接続されたトランザクションログデータ格納DB6とを同一の場所に設置し、業務システム2に接続されたトランザクションログデータ格納DB6に格納されているトランザクションログデータを、トランザクションログデータ分析装置1に接続されたトランザクションログデータ格納DB6へコピーして格納しておくようにしても良い。また、トランザクションログデータ分析装置1と、業務システム2(ここではトランザクションログデータ収集装置5を含む)及びこれに接続されたトランザクションログデータ格納DB6とを同一の場所に設置し、トランザクションログデータ分析装置1が、トランザクションログデータ格納DB6を参照するようにしても良い。また、トランザクションログデータ分析装置1と利用者端末7とは、図2中、符号Gで示すように、ネットワーク10を介して接続されていても良いし、図2中、符号Hで示すように、ネットワークを介さずに接続されていても良い。つまり、トランザクションログデータ分析装置1による分析結果を利用する利用者は、ネットワーク10を介してこれを利用するようになっていても良いし、ネットワークを介さずにこれを利用するようになっていても良い。
ところで、業務プロセスは、複数のアクティビティ(プロセス)によって構成されている。例えば図3、図4に示すように、生産業務プロセスは、受注、製造指示、調達、製造、出荷という複数のアクティビティによって構成されている。
このような業務プロセスを構成する各アクティビティは、例えば注文システム、見積書システム、製造システムなどの業務システム2を構成するコンピュータで実行される一連の処理によって実現される。このコンピュータによって実行される一連の処理をトランザクションという。
なお、トランザクションは、人の操作(例えば画面や端末での操作)によって開始される場合もあるし、コンピュータ(例えば決まった時間に実行されるバッチプログラム)によって自動的に開始される場合もある。また、トランザクションの完了は、例えばメールの送信や帳票の出力等によって人に対して通知される場合もあるし、コンピュータによる次のプログラムの実行に連動する場合もある。
トランザクションでは、各アクティビティに対応した複数のプログラムが順番に呼び出されて、業務システム2を構成するコンピュータによって実行されることになる。つまり、トランザクションでは、複数のプログラム間で情報が伝達されて、一連の処理が実行されることになる。なお、同じ業務プロセスであったとしても、トランザクションにおいて、常に同じ複数のプログラム間で情報が伝達されて、一連の処理が実行されるとは限らない。そして、複数のプログラムが順番に呼び出されてコンピュータによって実行される際に、プログラムの呼び出し関係情報を含むトランザクションログデータが出力されるようになっている。なお、トランザクションログデータは、業務システム2を構成する各コンピュータに記憶されているものとする。
そして、複数のプログラムが順番に呼び出されてコンピュータによって実行される際に出力されるトランザクションログデータは、業務システム2に接続されたトランザクションログデータ収集装置5によって収集され、トランザクションログデータ格納DB6に格納されるようになっている。
ここで、トランザクションにおいて実行される複数のプログラムを、コンポーネントソフトウェア又は単にコンポーネントともいう。また、コンピュータがコンポーネントソフトウェアを実行することによって得られる機能をコンポーネントという場合もある。また、コンポーネント間で伝達される情報を、コンポーネント情報という。また、コンポーネントAからコンポーネントBに伝達される情報を、コンポーネントAのコンポーネント情報という。また、プログラムの呼び出し関係情報は、コンポーネントの呼び出し関係情報(ここではコンポーネント名、前のコンポーネント名、次のコンポーネント名というトランザクションにおけるコンポーネントの順序を特定しうる情報)であり、コンポーネント情報に含まれる。このため、トランザクションログデータは、コンポーネント情報を含むことになる。つまり、コンポーネント情報は、トランザクションログデータに記録されている。ここでは、トランザクションログデータは、少なくとも、業務プロセス名、アクティビティ名、トランザクション識別情報(ID)、コンポーネント名、前のコンポーネント名、次のコンポーネント名、属性情報(ここでは担当者、取消済など)を含む。このうち、トランザクションID及び属性情報は、コンポーネント情報に含まれる。このため、コンポーネント情報は、コンポーネント名、前のコンポーネント名、次のコンポーネント名、トランザクションID及び属性情報を含む。なお、業務プロセス名は、業務プロセスを特定しうる情報であれば良い。また、トランザクションIDは、トランザクションを特定しうる情報であれば良い。また、コンポーネント名は、コンポーネントを特定しうる情報であれば良い。また、属性情報としては、種々の項目(属性値)を持たせることができ、例えば、担当者、取消済のほかに、承認者、商品名、商品個数などとすることもできる。なお、ここでは、一の業務プロセスにおける一のコンポーネントのコンポーネント情報は、どのトランザクションにおいても同一の属性を持つ。例えば生産業務プロセスにおける注文受付コンポーネントは、どのトランザクションにおいても同一の属性を持つ。また、例えば生産業務プロセスにおける注文更新コンポーネントも、どのトランザクションにおいても同一の属性を持つ。一方、注文受付コンポーネントと注文更新コンポーネントは同一の属性を持たなくても良い。また、生産業務プロセスにおける注文更新コンポーネントと、販売業務プロセスにおける注文更新コンポーネントも同じ属性を持たなくても良い。
ここで、図3は、生産業務プロセスを例に挙げて、業務プロセスの各アクティビティを実現するトランザクションにおいて行なわれる一連の処理を示したものである。また、図4は、業務システム2のインフラやミドルウェア(例えばデータベース)を取り除いて、業務プロセスの各アクティビティを実現するトランザクションにおいて行なわれる一連の処理を示したものである。
例えば図3に示すように、生産業務プロセスの受注アクティビティを実現するために、業務システム2(ここでは注文システム及び見積書システム)は、注文作成コンポーネント11、注文確認コンポーネント12、注文受付コンポーネント13、注文DB14、見積書新規作成コンポーネント15、見積書確認コンポーネント16、見積書修正コンポーネント17、見積書DB18及び注文更新コンポーネント19を備える。
そして、受注アクティビティを実現するために、トランザクションでは、まず、注文作成コンポーネント11による処理をコンピュータが実行して注文作成処理を行ない、その結果を注文DB14に格納する。次に、注文確認コンポーネント12による処理をコンピュータが実行して注文確認処理を行なう。次に、注文受付コンポーネント13による処理をコンピュータが実行して注文受付処理を行ない、その結果を注文DB14に格納する。次に、見積書新規作成コンポーネント15による処理をコンピュータが実行して見積書新規作成処理を行ない、その結果を見積書DB18に格納する。次に、見積書確認コンポーネント16による処理をコンピュータが実行して見積書確認処理を行なう。次に、見積書修正コンポーネント17による処理をコンピュータが実行して見積書修正処理を行ない、その結果を見積書DB18に格納する。次に、注文更新コンポーネント19による処理をコンピュータが実行して注文更新処理を行なう。このようにして、受注アクティビティを実現するために、トランザクションでは、注文作成コンポーネント11、注文確認コンポーネント12、注文受付コンポーネント13、見積書新規作成コンポーネント15、見積書確認コンポーネント16、見積書修正コンポーネント17、注文更新コンポーネント19が順番に呼び出されて、受注アクティビティを実現するための一連の処理が実行されることになる。
また、生産業務プロセスの調達アクティビティを実現するために、業務システム2は、調達Webサービスコンポーネント20及び承認コンポーネント21を備える。
そして、調達アクティビティを実現するために、トランザクションでは、まず、調達Webサービスコンポーネント20による処理をコンピュータが実行して調達Webサービス処理を行なう。次に、承認コンポーネント21による処理をコンピュータが実行して承認処理を行なう。このように、調達アクティビティを実現するために、トランザクションでは、調達Webサービスコンポーネント20、承認コンポーネント21が順番に呼び出されて、調達アクティビティを実現するための一連の処理が実行されることになる。
また、生産業務プロセスの製造アクティビティを実行するために、業務システム2(ここでは製造システム)は、製造DB22、製造DBコンポーネント23及び受注登録コンポーネント24を備える。
そして、製造アクティビティを実現するために、トランザクションでは、まず、製造DBコンポーネント23による処理をコンピュータが実行して承認コンポーネント21による処理の結果を製造DB22に格納する。次に、受注登録コンポーネント24による処理をコンピュータが実行して受注登録処理を行なう。このように、製造アクティビティを実現するために、トランザクションでは、製造DBコンポーネント23、受注登録コンポーネント24が順番に呼び出されて、製造アクティビティを実現するための一連の処理が実行されることになる。
ところで、図4に示すように、注文作成コンポーネント11による処理が終了し、注文確認コンポーネント12が呼び出される際に、注文作成コンポーネント11から注文確認コンポーネント12へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。ここでは、トランザクションログデータは、トランザクション毎のユニークな識別子であるトランザクションIDとして「0001」、業務プロセス名として「生産業務」、アクティビティ名として「受注」、受注アクティビティを実現するトランザクションにおいて実行される順番として「1」、そのコンポーネント名として「注文作成」、次のコンポーネント名として「注文確認」などを含む。なお、そのコンポーネント名は、送信元のコンポーネント名であり、次のコンポーネント名は、送信先のコンポーネント名である。
同様に、注文確認コンポーネント12による処理が終了し、注文受付コンポーネント13が呼び出される際に、注文確認コンポーネント12から注文受付コンポーネント13へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
また、注文受付コンポーネント13による処理が終了し、見積書新規作成コンポーネント15が呼び出される際に、注文受付コンポーネント13から見積書新規作成コンポーネント15へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
また、見積書新規作成コンポーネント15による処理が終了し、見積書確認コンポーネント16が呼び出される際に、見積書新規作成コンポーネント15から見積書確認コンポーネント16へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
また、見積書確認コンポーネント16による処理が終了し、見積書修正コンポーネント17が呼び出される際に、見積書確認コンポーネント16から見積書修正コンポーネント17へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
また、見積書修正コンポーネント17による処理が終了し、注文更新コンポーネント19が呼び出される際に、見積書修正コンポーネント17から注文更新コンポーネント19へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
また、注文更新コンポーネント19による処理が終了し、調達Webサービスコンポーネント20が呼び出される際に、注文更新コンポーネント19から調達Webサービスコンポーネント20へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
また、調達Webサービスコンポーネント20による処理が終了し、承認コンポーネント21が呼び出される際に、調達Webサービスコンポーネント20から承認コンポーネント21へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
また、承認コンポーネント21による処理が終了し、製造DBコンポーネント23が呼び出される際に、承認コンポーネント21から製造DBコンポーネント23へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
また、製造DBコンポーネント23による処理が終了し、受注登録コンポーネント24が呼び出される際に、製造DBコンポーネント23から受注登録コンポーネント24へ情報が送信され、トランザクションログデータが出力される。そして、このトランザクションログデータは、業務システム2を構成するコンピュータの記憶装置に記憶される。
ところで、本実施形態のトランザクションログデータ分析装置1は、収集されたトランザクションログデータを分析し、業務プロセスを実現するためのトランザクションにおける複数のコンポーネントの実行順序を示す情報を生成するようになっている。つまり、本実施形態のトランザクションログデータ分析装置1は、ITシステム上で実行される業務プロセスを分析し、可視化するようになっている。なお、トランザクションログデータ分析装置1を、トランザクションによって実行された業務プロセスを可視化するものであるため、業務プロセス可視化装置ともいう。
特に、本実施形態のトランザクションログデータ分析装置1は、分析結果の冗長性を低減すべく、複数のコンポーネントの実行順序を示す情報を生成して業務プロセスを可視化する際に、業務プロセスとして重要なコンポーネントを残し、この重要なコンポーネントに関連する重要度の低いコンポーネントを取り除くようになっている。つまり、トランザクションログデータ分析装置1は、業務プロセスを可視化する際に、コンポーネント間の関連性を考慮し、重要度に応じて不要なコンポーネントを取り除くようになっている。これにより、可視化対象となるコンポーネントを減らすことができる。
また、本実施形態では、トランザクションログデータ分析装置1は、業務プロセスを可視化する際に、可視化対象とならなかったコンポーネントと、それが関連する可視化対象のコンポーネントとをグループ化するようになっている。つまり、トランザクションログデータ分析装置1は、業務プロセスを可視化する際に、業務プロセスとして意味を持った単位で自動的にグルーピングするようになっている。これにより、可視化対象となるコンポーネントを減らしながら、必要に応じて、可視化対象とならなかったコンポーネントも表示させることが可能となる。
つまり、本実施形態では、トランザクションログデータ分析装置1は、自動的に収集されたトランザクションログデータを分析し、以下の(1)〜(3)の場合に該当するか否かを自動的に判断して、業務プロセスを可視化する際に、自動的にグルーピングして、重要度の低いコンポーネントを自動的に可視化対象から除外するようになっている。
(1)業務プロセスを実現するために複数のコンポーネントが実行されるトランザクションの経路上で経路が分岐するが、分岐した経路が再び1つの経路に集約する場合、分岐点から集約点までの間の全部又は一部のコンポーネントを1つの業務手順としてグループ化する。
これは、次の理由による。つまり、業務プロセスにおける手順は、場合によって異なり、分岐することがある。しかし、いくつかの細かい手順に分かれるものの、その業務手順が達成する目的が同じ場合には、その先の手順が同じとなることが多い。そこで、分岐した手順がその先でまた同一の手順に集約される場合、その間の手順は1つの意味のある業務手順であったとみなしてグルーピングする。
これは、業務プロセスを可視化した場合に例えば図6に示すようになるとき、図7に示すように、分岐がなく、逐次処理だけが行なわれている部分のコンポーネント3、6、7、9、10、13〜15、17〜21は取り除き、それ以外のコンポーネント1、2、4、5、8、11、12、16は残す。そして、図8に示すように、コンポーネント2にコンポーネント3をグルーピングし、コンポーネント4にコンポーネント18をグルーピングし、コンポーネント5にコンポーネント6、7、13〜15をグルーピングし、コンポーネント8にコンポーネント9、10をグルーピングし、コンポーネント11にコンポーネント17をグルーピングすることを意味する。なお、図6〜図8では、各コンポーネントを略して「コンポ」と表記している。
(2)トランザクションの経路上の前後のコンポーネントで属性情報に変化がない場合、即ち、同一の属性情報が使われ続けている場合、1つの業務手順としてグループ化する。逆に言うと、属性情報が変化した場合、そのコンポーネントは残す。
これは、次の理由による。つまり、業務プロセスでは、業務の手順を進めるにつれて参照・保持する属性情報が変化することが想定される。これは、業務はなんらかの目的を達成するためにあり、目的を達成すると、達成前と属性情報が変わるからである。この属性情報に変化がないということは、業務の目的が達成されていないということである。そこで、属性情報に変化が起こるまでの間の手順は、その目的を達成するための1つの意味のある業務手順であったとみなしてグルーピングする。
これは、業務プロセスを可視化した場合に例えば図6に示すようになるとき、図7に示すように、コンポーネント20は残し、コンポーネント8にコンポーネント19をグルーピングすることを意味する。
(3)トランザクションの経路上で、その経路における唯一のコンポーネントである場合は残す。
これは、トランザクションの経路における唯一のコンポーネントである場合には、業務手順として意味があるからである。
これは、業務プロセスを可視化した場合に例えば図6に示すようになるとき、図7、図8に示すように、コンポーネント21は残すことを意味する。
このようにして、業務プロセスを可視化した場合、業務プロセスを実現するためのトランザクションにおける複数のコンポーネントの実行順序を示す情報は、例えば図8に示すように、コンポーネント3はコンポーネント2にグルーピングされて可視化対象から除外され、コンポーネント18はコンポーネント4にグルーピングされて可視化対象から除外され、コンポーネント17はコンポーネント11にグルーピングされて可視化対象から除外され、コンポーネント6、7、13〜15はコンポーネント5にグルーピングされて可視化対象から除外され、コンポーネント9、10、19はコンポーネント8にグルーピングされて可視化対象から除外されることになる。
これにより、業務システム2から自動収集されたトランザクションログデータを用いて自動的に業務プロセスを推測し、業務プロセスの可視化を、簡単かつ正確に行なえるようになり、低コストで多くの業務プロセスの分析・可視化を行なうことが可能となる。そして、業務システム2で実際にどのような業務プロセスが実行されているかを容易に把握することが可能となる。また、複数のコンポーネントの実行順序を示す情報によって業務プロセスが可視化されるため、業務プロセスを構成する各手順と各コンポーネントとの対応を取ることが同時に行なえる。このため、業務システム2においていずれかのコンポーネントに障害が発生した場合、業務プロセスへの影響範囲の推測にも有用である。また、業務プロセスにおいて同一の手順と思われる部分をグルーピングすることで、コンポーネントを削減して、業務プロセスを可視化するため、冗長性を低減した、より有用な分析結果を提供できることになる。また、可視化対象から除外されたコンポーネント(非表示コンポーネント)は、可視化対象のコンポーネント(表示コンポーネント)とグループとして関連付けられているため、より詳細に表示する必要がある場合には、グループ単位で非表示コンポーネントを表示させることも可能である。また、非表示コンポーネントを表示させるグループを選択できるようにすれば、業務プロセスにおいて注目した部分に絞って詳細に可視化することも可能である。
具体的には、本実施形態のトランザクションログデータ分析装置1は、以下のように構成される。
まず、本トランザクションログデータ分析装置1のハードウェア構成について、図9を参照しながら説明する。
本トランザクションログデータ分析装置1は、例えばサーバなどのコンピュータを用いて実現することができ、そのハードウェア構成は、例えば図9に示すように、CPU(Central Processing Unit)102、メモリ101、通信制御部109、入力装置106、表示制御部103、表示装置104、記憶装置105、可搬型記録媒体108のドライブ装置107を備え、これらがバス110によって相互に接続された構成になっている。なお、本装置のハードウェア構成はこれに限られるものではない。
ここで、CPU102は、コンピュータ全体を制御するものであり、プログラムをメモリ101に読み出して実行し、トランザクションログデータ分析装置1に必要な処理を行なうものである。
メモリ101は、例えばRAMであり、プログラムの実行、データの書き換え等を行なう際に、プログラム又はデータを一時的に格納するものである。
通信制御部109(通信インターフェース)は、例えばLANやインターネットなどのネットワークを介して、他の装置と通信するために用いられるものである。この通信制御部109は、コンピュータに元から組み込まれていても良いし、後からコンピュータに取り付けられたNIC(Network Interface Card)でも良い。
入力装置106は、例えばマウスなどのポインティングデバイスやキーボードである。
表示装置104は、例えば液晶ディスプレイなどの表示装置である。
表示制御部103は、例えば分析結果などを表示装置104に表示させるための制御を行なうものである。
なお、これらの入力装置106や表示装置104は、ネットワークに接続された別のコンピュータに備えられている入力装置や出力装置であっても良い。
記憶装置105は、例えばハードディスクドライブ(HDD)であり、各種のプログラム及び各種のデータが格納されている。本実施形態では、記憶装置105には、後述のトランザクションログデータ分析プログラム(分析プログラム)が格納されており、また、後述のコンポーネント情報格納DB31が格納されている。なお、メモリ101として、例えばROM(Read Only Memory)を備え、これに各種のプログラムや各種のデータを格納しておいても良い。
ドライブ装置107は、例えば光ディスクや光磁気ディスク等の可搬型記録媒体108の記憶内容にアクセスするためのものである。
このようなハードウェア構成を備えるコンピュータにおいて、CPU102が、例えば記憶装置105に格納されているトランザクションログデータ分析プログラムをメモリ101に読み出して実行することで、本トランザクションログデータ分析装置1、即ち、後述のトランザクションログデータ分析エンジン30及びトランザクションログデータ可視化エンジン32という各機能が実現される。
本実施形態では、トランザクションログデータ分析装置1は、図1に示すように、トランザクションログデータ分析エンジン30、コンポーネント情報格納DB31及びトランザクションログデータ可視化エンジン32を備える。なお、トランザクションログデータ分析エンジン30を、分析部ともいう。また、トランザクションログデータ可視化エンジン32を、生成部ともいう。
ここで、トランザクションログデータ分析エンジン30は、トランザクションログデータ格納DB31からトランザクションログデータを読み出し、トランザクションログデータに含まれているコンポーネント情報を分析し、即ち、どのコンポーネントを可視化対象から除外するかを判断し、その結果を含むコンポーネント情報をコンポーネント情報格納DB31に格納する機能を有する。
ここでは、トランザクションログデータ分析エンジン30は、以下の2つの基準(1)、(2)に基づいて、どのコンポーネントを可視化対象から除外するか否かを判断する。
(1)そのコンポーネントの前のコンポーネントと次のコンポーネントがそれぞれ一つずつしか存在しない、分岐のないコンポーネントであるか。
(2)そのコンポーネントの属性情報が前のコンポーネントの属性情報と同じであるか。
なお、トランザクションログデータ分析エンジン30による処理は、例えば、スケジュールされた間隔(例えば1日に1回、1週間に1回など)で実行するようにしても良いし、トランザクションログデータ格納DB6が更新されるたびに実行するようしても良いし、利用者が業務プロセスを可視化するたびに実行するようにしても良いし、利用者が明示的に指示した場合に実行するようにしても良い。
また、コンポーネント情報格納DB31は、トランザクションログデータ分析エンジン30による分析結果が反映されたコンポーネント情報、即ち、可視化対象から除外するか否かの判断結果(可視化の有無)を含むコンポーネント情報を格納するものである。ここでは、分析されたコンポーネント情報は、コンポーネント名、トランザクションID、前のコンポーネント名、次のコンポーネント名、属性情報(ここでは担当者及び取消済)、除外フラグ、親コンポーネント名、グループの次のコンポーネント名を含む。なお、コンポーネント情報格納DB31を、コンポーネント情報格納部ともいう。
また、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から、トランザクションログデータ分析エンジン30による分析結果を含むコンポーネント情報を読み出し、このコンポーネント情報を用いて、業務プロセスを実現するためのトランザクションにおける複数のコンポーネントの実行順序を示す情報を生成して、業務プロセスを可視化する機能を有する。
ここでは、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出したコンポーネント情報に基づいて、可視化対象から除外するかどうかを判断し、可視化しないコンポーネントを可視化対象から除外してトランザクションにおける複数のコンポーネントの実行順序を示す情報を生成して、業務プロセスを可視化する機能を有する。
なお、トランザクションログデータ可視化エンジン32による処理は、利用者端末7からの指示に基づいて行なわれる。そして、トランザクションログデータ可視化エンジン32による処理によって可視化された情報は、利用者端末7へ送られ、利用者端末7の表示装置の画面上に表示されるようになっている。
このため、本トランザクションログデータ分析装置1は、上述のトランザクションログデータ格納DB6から読み出したログデータを分析する分析部(トランザクションログデータ分析エンジン)30と、分析部30によって分析された情報(コンポーネント情報;プログラム情報)に基づいて、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムを除いて、トランザクションにおける複数のプログラムの実行順序を示す情報を生成する生成部(トランザクションログデータ可視化エンジン)32とを備えることになる。また、分析部30によって分析された情報は、属性情報を含み、生成部32は、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムのうち、直前に実行されたプログラムと属性情報が変わっているプログラムは残して、実行順序を示す情報を生成することになる。また、生成部32は、トランザクションの最初に実行されたプログラム、及び、直前に実行されたプログラムがなく、かつ、直後に実行されたプログラムがないプログラムを残して、実行順序を示す情報を生成することになる。
この場合、本実施形態にかかる分析方法、即ち、トランザクションログデータ分析方法では、コンピュータが、業務プロセスを実現するために複数のプログラムが実行されるトランザクションにおける、プログラムの呼び出し関係情報を含む業務に関するログデータを分析し、分析された情報に基づいて、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムを除いて、トランザクションにおける複数のプログラムの実行順序を示す情報を生成する、処理を実行することになる。また、分析された情報は、属性情報を含み、実行順序を示す情報を生成する処理において、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムのうち、直前に実行されたプログラムと属性情報が変わっているプログラムは残して、実行順序を示す情報を生成する処理をコンピュータが実行することになる。また、実行順序を示す情報を生成する処理において、トランザクションの最初に実行されたプログラム、及び、直前に実行されたプログラムがなく、かつ、直後に実行されたプログラムがないプログラムを残して、実行順序を示す情報を生成する処理をコンピュータが実行することになる。
次に、本トランザクションログデータ分析装置1においてCPU102がメモリ101に読み込まれたトランザクションログデータ分析プログラムに従って実行する処理(トランザクションログデータ分析方法)について、図10〜図36を参照しながら、より具体的に説明する。
まず、本トランザクションログデータ分析装置1に備えられるトランザクションログデータ分析エンジン30による処理について、図10〜図30を参照しながら、より具体的に説明する。
ここでは、分析対象とする業務プロセスを生産業務プロセスとし、生産業務プロセスを実現するためのトランザクションとして4つのトランザクション(トランザクションID「0001」〜「0004」)を含む場合を例に挙げて説明する。そして、上述の本実施形態のトランザクションログデータ分析装置1による処理を行なわずに、この生産業務プロセスを実現するための各トランザクションを別々に可視化した場合、各トランザクションにおける複数のコンポーネントの実行順序を示す情報は、図11(A)〜(D)に示すようになるものとする。また、上述の本実施形態のトランザクションログデータ分析装置1による処理を行なわずに、この生産業務プロセスを実現するための全てのトランザクションをまとめて可視化した場合、全てのトランザクションにおける複数のコンポーネントの実行順序を示す情報は、図12に示すようになるものとする。また、トランザクションログデータ格納DB6には、図13に示すようなトランザクションログデータが格納されているものとする。なお、生産業務プロセスは、上述のように複数のアクティビティによって構成されるが、ここでは、説明を簡略化するために、各トランザクションにおいて実行されるコンポーネントとしては、受注アクティビティに含まれるもののみを示し、それ以外のアクティビティに含まれるものは省略している。
まず、図10に示すように、トランザクションログデータ分析エンジン30は、分析対象とする業務プロセスを特定できる業務プロセス名を用いて、トランザクションログデータ格納DB6からトランザクションログデータを読み出し、図14に示すようにコンポーネント情報を抽出する(ステップS10)。
ここでは、業務プロセス名「生産業務」を用いて、トランザクションログデータ格納DB6からトランザクションログデータを読み出し、図14に示すように、コンポーネント名、トランザクションID、前のコンポーネント名、次のコンポーネント名、属性情報としての属性1(担当者)及び属性2(取消済)を含むコンポーネント情報を抽出する。
次に、トランザクションログデータ分析エンジン30は、抽出したコンポーネント情報に含まれている各コンポーネントについて、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。ここで、コンポーネント情報の「前のコンポーネント名」がないものが最初のコンポーネントであると判定する。
この判定の結果、最初のコンポーネントであると判定した場合、YESルートへ進み、トランザクションログデータ分析エンジン30は、そのコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納する(ステップS60)。
一方、最初のコンポーネントではないと判定した場合、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、そのコンポーネントが、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。つまり、そのコンポーネントの前のコンポーネントと次のコンポーネントがそれぞれ一つずつしか存在しないコンポーネントであるか、即ち、分岐のないコンポーネントであるかを判定する。
この判定の結果、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一でないと判定した場合、NOルートへ進み、トランザクションログデータ分析エンジン30は、そのコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納する(ステップS60)。
一方、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定した場合、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、各トランザクションにおいて、そのコンポーネントの属性情報と前のコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクション毎に、そのコンポーネントの「属性1」、「属性2」の各属性値と、前のコンポーネントの「属性1」、「属性2」の各属性値とが、それぞれ、同一であるか否かを判定する。
この判定の結果、各トランザクションにおいて、そのコンポーネントの属性情報と前のコンポーネントの属性情報が同一であると判定した場合、YESルートへ進み、トランザクションログデータ分析エンジン30は、そのコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納するとともに、そのコンポーネントのコンポーネント情報に除外フラグを設定し、さらに、「親コンポーネント名」に「前のコンポーネント名」を設定する(ステップS50)。
これにより、後述のようにしてトランザクションにおける実行順序を示す情報を生成する際に、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムは除かれることになる。また、後述のようにしてトランザクションにおける実行順序を示す情報を生成する際に、いずれかのトランザクションにおける最初のコンポーネント、即ち、トランザクションの最初に実行されたプログラムは残されることになる。このように、いずれかのトランザクションにおける最初のコンポーネントは、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムには含まれない。
一方、各トランザクションにおいて、そのコンポーネントの属性情報と前のコンポーネントの属性情報が同一でないと判定した場合、NOルートへ進み、トランザクションログデータ分析エンジン30は、そのコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納する(ステップS60)。
このようなステップS20〜60の処理は、抽出したコンポーネント情報(図14参照)に含まれている各コンポーネントについて順番に行なわれる。ここでは、ステップS70で全てのコンポーネントについて処理を行なったと判定するまで、上述の処理を繰り返す。
具体的には、まず、トランザクションログデータ分析エンジン30は、コンポーネント名「注文作成」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」がないため、コンポーネント名「注文作成」というコンポーネントは、最初のコンポーネントであると判定する。このため、YESルートへ進み、トランザクションログデータ分析エンジン30は、図15に示すように、コンポーネント名「注文作成」というコンポーネントのコンポーネント情報を、コンポーネント情報格納DB31に格納し(ステップS60)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「注文確認」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「注文確認」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文確認」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションID「0001」、「0002」の「次のコンポーネント名」は「注文受付」であるのに対し、トランザクションID「0004」の「次のコンポーネント名」は「注文差戻」であり、これらは異なるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一でないと判定する。このため、NOルートへ進み、トランザクションログデータ分析エンジン30は、図16に示すように、コンポーネント名「注文確認」というコンポーネントのコンポーネント情報を、コンポーネント情報格納DB31に格納し(ステップS60)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「注文受付」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「注文受付」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文受付」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションID「0001」、「0002」において、「前のコンポーネント名」はいずれも「注文確認」であり、「次のコンポーネント名」はいずれも「見積書新規作成」であり、いずれも同一であるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定する。このため、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、トランザクションID「0001」、「0002」において、コンポーネント名「注文受付」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文確認」というコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクションID「0001」において、コンポーネント名「注文受付」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「注文確認」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。また、トランザクションID「0002」において、コンポーネント名「注文受付」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「注文確認」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。この結果、トランザクションID「0001」のコンポーネント名「注文受付」、「注文確認」において、「属性1」の属性値はいずれも「ユーザA」であり、「属性2」の属性値はいずれも「なし」であり、いずれも同一であるため、トランザクションID「0001」において、コンポーネント名「注文受付」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文確認」というコンポーネントの属性情報が同一であると判定する。また、トランザクションID「0002」のコンポーネント名「注文受付」、「注文確認」において、「属性1」の属性値はいずれも「ユーザD」であり、「属性2」の属性値はいずれも「なし」であり、いずれも同一であるため、トランザクションID「0002」において、コンポーネント名「注文受付」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文確認」というコンポーネントの属性情報が同一であると判定する。このため、YESルートへ進み、トランザクションログデータ分析エンジン30は、図17に示すように、コンポーネント名「注文受付」というコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納するとともに、コンポーネント名「注文受付」というコンポーネントのコンポーネント情報に除外フラグとして「Y」を設定し、さらに、「親コンポーネント名」に「前のコンポーネント名」である「注文確認」を設定し(ステップS50)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「見積書新規作成」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「見積書新規作成」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「見積書新規作成」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションID「0001」、「0002」において、「前のコンポーネント名」はいずれも「注文受付」であり、「次のコンポーネント名」はいずれも「見積書確認」であり、いずれも同一であるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定する。このため、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、トランザクションID「0001」、「0002」において、コンポーネント名「見積書新規作成」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文受付」というコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクションID「0001」において、コンポーネント名「見積書新規作成」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「注文受付」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。また、トランザクションID「0002」において、コンポーネント名「見積書新規作成」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「注文受付」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。この結果、トランザクションID「0001」のコンポーネント名「見積書新規作成」、「注文受付」において、「属性1」の属性値は、それぞれ、「ユーザB」、「ユーザA」であり、これらは異なるため、トランザクションID「0001」において、コンポーネント名「見積書新規作成」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文受付」というコンポーネントの属性情報が同一でないと判定する。また、トランザクションID「0002」のコンポーネント名「見積書新規作成」、「注文受付」において、「属性1」の属性値は、それぞれ、「ユーザB」、「ユーザD」であり、これらは異なるため、トランザクションID「0002」において、コンポーネント名「見積書新規作成」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文受付」というコンポーネントの属性情報が同一でないと判定する。このため、NOルートへ進み、トランザクションログデータ分析エンジン30は、図18に示すように、コンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報を、コンポーネント情報格納DB31に格納し(ステップS60)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「見積書確認」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「見積書確認」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジンは、コンポーネント名「見積書確認」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションID「0001」、「0003」の「次のコンポーネント名」は「見積書修正」であるのに対し、トランザクションID「0002」の「次のコンポーネント名」はなく、これらは異なるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一でないと判定する。このため、NOルートへ進み、トランザクションログデータ分析エンジン30は、図19に示すように、コンポーネント名「見積書確認」というコンポーネントのコンポーネント情報を、コンポーネント情報格納DB31に格納し(ステップS60)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「見積書修正」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「見積書修正」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「見積書修正」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションID「0001」、「0003」において、「前のコンポーネント名」はいずれも「見積書確認」であり、「次のコンポーネント名」はいずれも「注文更新」であり、いずれも同一であるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定する。このため、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、トランザクションID「0001」、「0003」において、コンポーネント名「見積書修正」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「見積書確認」というコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクションID「0001」において、コンポーネント名「見積書修正」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「見積書確認」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。また、トランザクションID「0003」において、コンポーネント名「見積書修正」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「見積書確認」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。この結果、トランザクションID「0001」のコンポーネント名「見積書修正」、「見積書確認」において、「属性1」の属性値はいずれも「ユーザC」であり、「属性2」の属性値はいずれも「なし」であり、いずれも同一であるため、トランザクションID「0001」において、コンポーネント名「見積書修正」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「見積書確認」というコンポーネントの属性情報が同一であると判定する。また、トランザクションID「0003」のコンポーネント名「見積書修正」、「見積書確認」において、「属性1」の属性値はいずれも「ユーザC」であり、「属性2」の属性値はいずれも「済」であり、いずれも同一であるため、トランザクションID「0003」において、コンポーネント名「見積書修正」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「見積書確認」というコンポーネントの属性情報が同一であると判定する。このため、YESルートへ進み、トランザクションログデータ分析エンジン30は、図20に示すように、コンポーネント名「見積書修正」というコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納するとともに、コンポーネント名「見積書修正」というコンポーネントのコンポーネント情報に除外フラグとして「Y」を設定し、さらに、「親コンポーネント名」に「前のコンポーネント名」である「見積書確認」を設定し(ステップS50)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「注文更新」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「注文更新」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文更新」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションID「0001」、「0003」において、「前のコンポーネント名」はいずれも「見積書修正」であり、「次のコンポーネント名」はいずれもなしであり、いずれも同一であるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定する。このため、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、トランザクションID「0001」、「0003」において、コンポーネント名「注文更新」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「見積書修正」というコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクションID「0001」において、コンポーネント名「注文更新」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「見積書修正」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。また、トランザクションID「0003」において、コンポーネント名「注文更新」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「見積書修正」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。この結果、トランザクションID「0001」のコンポーネント名「注文更新」、「見積書修正」において、「属性1」の属性値はいずれも「ユーザC」であり、「属性2」の属性値はいずれも「なし」であり、いずれも同一であるため、トランザクションID「0001」において、コンポーネント名「注文更新」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「見積書修正」というコンポーネントの属性情報が同一であると判定する。また、トランザクションID「0003」のコンポーネント名「注文更新」、「見積書修正」において、「属性1」の属性値はいずれも「ユーザC」であり、「属性2」の属性値はいずれも「済」であり、いずれも同一であるため、トランザクションID「0003」において、コンポーネント名「注文更新」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「見積書修正」というコンポーネントの属性情報が同一であると判定する。このため、YESルートへ進み、トランザクションログデータ分析エンジン30は、図21に示すように、コンポーネント名「注文更新」というコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納するとともに、コンポーネント名「注文更新」というコンポーネントのコンポーネント情報に除外フラグとして「Y」を設定し、さらに、「親コンポーネント名」に「前のコンポーネント名」である「見積書修正」を設定し(ステップS50)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「注文照会」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」がないため、コンポーネント名「注文作成」というコンポーネントは、最初のコンポーネントであると判定する。このため、YESルートへ進み、トランザクションログデータ分析エンジン30は、図22に示すように、コンポーネント名「注文照会」というコンポーネントのコンポーネント情報を、コンポーネント情報格納DB31に格納し(ステップS60)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「注文検索」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「注文検索」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文検索」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションはトランザクションID「0003」だけであり、「前のコンポーネント名」は「注文照会」だけであり、「次のコンポーネント名」は「見積書流用作成」だけであるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定する。このため、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、トランザクションID「0003」において、コンポーネント名「注文検索」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文照会」というコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクションID「0003」において、コンポーネント名「注文検索」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「注文照会」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。この結果、トランザクションID「0003」のコンポーネント名「注文検索」、「注文照会」において、「属性1」の属性値はいずれも「ユーザE」であり、「属性2」の属性値はいずれも「なし」であり、いずれも同一であるため、トランザクションID「0003」において、コンポーネント名「注文検索」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文照会」というコンポーネントの属性情報が同一であると判定する。このため、YESルートへ進み、トランザクションログデータ分析エンジン30は、図23に示すように、コンポーネント名「注文検索」というコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納するとともに、コンポーネント名「注文検索」というコンポーネントのコンポーネント情報に除外フラグとして「Y」を設定し、さらに、「親コンポーネント名」に「前のコンポーネント名」である「注文照会」を設定し(ステップS50)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「見積書流用作成」というコンポーネント(図14参照)について、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「見積書流用作成」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「見積書流用作成」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションはトランザクションID「0003」だけであり、「前のコンポーネント名」は「注文検索」だけであり、「次のコンポーネント名」は「見積書確認」だけであるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定する。このため、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、トランザクションID「0003」において、コンポーネント名「見積書流用作成」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文検索」というコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクションID「0003」において、コンポーネント名「見積書流用作成」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「注文検索」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。この結果、トランザクションID「0003」のコンポーネント名「見積書流用作成」、「注文検索」において、「属性2」の属性値は、いずれも「ユーザE」であって同一であるが、「属性2」の属性値は、それぞれ、「済」、「なし」であって異なるため、トランザクションID「0003」において、コンポーネント名「見積書流用作成」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文検索」というコンポーネントの属性情報が同一でないと判定する。このため、NOルートへ進み、トランザクションログデータ分析エンジン30は、図24に示すように、コンポーネント名「見積書流用作成」というコンポーネントのコンポーネント情報を、コンポーネント情報格納DB31に格納し(ステップS60)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「注文差戻」というコンポーネントについて、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「注文差戻」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文差戻」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションはトランザクションID「0004」だけであり、「前のコンポーネント名」は「注文確認」だけであり、「次のコンポーネント名」は「注文元連絡」だけであるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定する。このため、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、トランザクションID「0004」において、コンポーネント名「注文差戻」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文確認」というコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクションID「0004」において、コンポーネント名「注文差戻」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「注文確認」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。この結果、トランザクションID「0004」のコンポーネント名「注文差戻」、「注文確認」において、「属性1」の属性値はいずれも「ユーザA」であり、「属性2」の属性値はいずれも「なし」であり、いずれも同一であるため、トランザクションID「0004」において、コンポーネント名「注文差戻」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文確認」というコンポーネントの属性情報が同一であると判定する。このため、YESルートへ進み、トランザクションログデータ分析エンジン30は、図25に示すように、コンポーネント名「注文差戻」というコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納するとともに、コンポーネント名「注文差戻」というコンポーネントのコンポーネント情報に除外フラグとして「Y」を設定し、さらに、「親コンポーネント名」に「前のコンポーネント名」である「注文確認」を設定し(ステップS50)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
次に、トランザクションログデータ分析エンジン30は、コンポーネント名「注文元連絡」というコンポーネントについて、いずれかのトランザクションにおいて最初のコンポーネントとなっているか否かを判定する(ステップS20)。この結果、いずれのトランザクションにおいてもコンポーネント情報の「前のコンポーネント名」があるため、コンポーネント名「注文元連絡」というコンポーネントは、最初のコンポーネントではないと判定する。このため、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文元連絡」というコンポーネントについて、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であるか否かを判定する(ステップS30)。この結果、トランザクションはトランザクションID「0004」だけであり、「前のコンポーネント名」は「注文差戻」だけであり、「次のコンポーネント名」はなしだけであるため、全てのトランザクションにおいて「前のコンポーネント名」と「次のコンポーネント名」が同一であると判定する。このため、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、トランザクションID「0004」において、コンポーネント名「注文元連絡」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文差戻」というコンポーネントの属性情報が同一であるか否かを判定する(ステップS40)。ここでは、トランザクションID「0004」において、コンポーネント名「注文元連絡」というコンポーネントの「属性1」、「属性2」という各属性値と、前のコンポーネントであるコンポーネント名「注文差戻」というコンポーネントの「属性1」、「属性2」という各属性値とが、それぞれ、同一であるか否かを判定する。この結果、トランザクションID「0004」のコンポーネント名「注文元連絡」、「注文差戻」において、「属性1」の属性値はいずれも「ユーザA」であり、「属性2」の属性値はいずれも「なし」であり、いずれも同一であるため、トランザクションID「0004」において、コンポーネント名「注文元連絡」というコンポーネントの属性情報と、前のコンポーネントであるコンポーネント名「注文差戻」というコンポーネントの属性情報が同一であると判定する。このため、YESルートへ進み、トランザクションログデータ分析エンジン30は、図26に示すように、コンポーネント名「注文元連絡」というコンポーネントのコンポーネント情報をコンポーネント情報格納DB31に格納するとともに、コンポーネント名「注文元連絡」というコンポーネントのコンポーネント情報に除外フラグとして「Y」を設定し、さらに、「親コンポーネント名」に「前のコンポーネント名」である「注文差戻」を設定し(ステップS50)、ステップS70で全てのコンポーネントについて処理を行なっていないと判定し、ステップS20へ戻る。
このようにして、抽出したコンポーネント情報(図14参照)に含まれている各コンポーネントについて、上述のステップS20〜60の処理を行なう。
そして、ステップS70で全てのコンポーネントについて処理を行なったと判定した場合、ステップS80へ進み、トランザクションログデータ分析エンジン30は、コンポーネント情報格納DB31に格納した各コンポーネントのコンポーネント情報に除外フラグが設定されているか否かを判定する。ここでは、全てのコンポーネントのコンポーネント情報について順番に除外フラグが設定されているか否かを判定する。つまり、全てのコンポーネントのコンポーネント情報について順番に除外フラグが設定されているか否かの判定を繰り返し行なう。そして、あるコンポーネントのコンポーネント情報に除外フラグが設定されていないと判定した場合は、NOルートへ進み、再度、次のコンポーネントのコンポーネント情報に除外フラグが設定されているか否かを判定する。一方、あるコンポーネント情報に除外フラグが設定されていると判定した場合は、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント情報に除外フラグが設定されているコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントであるか否かを判定する(ステップS90)。ここでは、コンポーネント情報に除外フラグが設定されているコンポーネントのコンポーネント情報において、「前のコンポーネント名」及び「次のコンポーネント名」がない場合に、いずれかのトランザクションにおける唯一のコンポーネントであると判定する。
この判定の結果、コンポーネント情報に除外フラグが設定されているコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントであると判定した場合、YESルートへ進み、当該コンポーネントのコンポーネント情報の除外フラグの設定を解除する(ステップS130)。
これにより、後述のようにしてトランザクションにおける実行順序を示す情報を生成する際に、いずれかのトランザクションにおける唯一のコンポーネント、即ち、直前に実行されたプログラムがなく、かつ、直後に実行されたプログラムがないプログラムは残されることになる。このように、いずれかのトランザクションにおける唯一のコンポーネントは、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムには含まれない。
一方、コンポーネント情報に除外フラグが設定されているコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントではないと判定した場合、NOルートへ進み、トランザクションログデータ分析エンジン30は、当該コンポーネントの親コンポーネントのコンポーネント情報に除外フラグが設定されているか否かを判定する(ステップS100)。
この判定の結果、当該コンポーネントの親コンポーネントのコンポーネント情報に除外フラグが設定されていないと判定した場合、NOルートへ進み、当該コンポーネントの親コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に、当該コンポーネントのコンポーネント情報の「次のコンポーネント名」を設定する(ステップS120)。
一方、当該コンポーネントの親コンポーネントのコンポーネント情報に除外フラグが設定されていると判定した場合、YESルートへ進み、当該コンポーネントの親コンポーネントの親コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に、当該コンポーネントのコンポーネント情報の「次のコンポーネント名」を設定するとともに、当該コンポーネントのコンポーネント情報の「親コンポーネント名」に、当該コンポーネントの親コンポーネントのコンポーネント情報の「親コンポーネント名」を設定(上書き設定)する(ステップS110)。なお、既に当該コンポーネントの親コンポーネントの親コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」にコンポーネント名が設定されている場合には、これを、当該コンポーネントのコンポーネント情報の「次のコンポーネント名」で上書きすることになる。
このようなステップS80〜130の処理は、コンポーネント情報格納DB31に格納した各コンポーネントについて順番に行なわれる。ここでは、ステップS140で全てのコンポーネントについて処理を行なったと判定するまで、上述の処理を繰り返す。
具体的には、まず、トランザクションログデータ分析エンジン30は、コンポーネント情報格納DB31に格納されている各コンポーネントのコンポーネント情報について順番に除外フラグが設定されているか否かを判定する(ステップS80)。この結果、まず、コンポーネント名「注文作成」、「注文確認」というコンポーネントについていずれもコンポーネント情報に除外フラグが設定されていないと判定した後、コンポーネント名「注文受付」というコンポーネントについてコンポーネント情報に除外フラグが設定されていると判定する(ステップS80)。この場合、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文受付」というコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントであるか否かを判定する(ステップS90)。ここでは、コンポーネント名「注文受付」というコンポーネントのコンポーネント情報において、「前のコンポーネント名」及び「次のコンポーネント名」があるため、いずれかのトランザクションにおける唯一のコンポーネントではないと判定する。この場合、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、当該コンポーネントであるコンポーネント名「注文受付」というコンポーネントの親コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されているか否かを判定する(ステップS100)。ここでは、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定する。この場合、NOルートへ進み、図27に示すように、当該コンポーネントであるコンポーネント名「注文受付」というコンポーネントの親コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に、当該コンポーネントであるコンポーネント名「注文受付」というコンポーネントのコンポーネント情報の「次のコンポーネント名」である「見積書新規作成」を設定し(ステップS120)、ステップS140で全てのコンポーネントについて処理を行なっていないと判定し、ステップS80へ戻る。
続いて、コンポーネント名「見積書新規作成」、「見積書確認」というコンポーネントについていずれもコンポーネント情報に除外フラグが設定されていないと判定した後、コンポーネント名「見積書修正」というコンポーネントについてコンポーネント情報に除外フラグが設定されていると判定する(ステップS80)。この場合、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「見積書修正」というコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントであるか否かを判定する(ステップS90)。ここでは、コンポーネント名「見積書修正」というコンポーネントのコンポーネント情報において、「前のコンポーネント名」及び「次のコンポーネント名」があるため、いずれかのトランザクションにおける唯一のコンポーネントではないと判定する。この場合、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、当該コンポーネントであるコンポーネント名「見積書修正」というコンポーネントの親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されているか否かを判定する(ステップS100)。ここでは、親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定する。この場合、NOルートへ進み、図27に示すように、当該コンポーネントであるコンポーネント名「見積書修正」というコンポーネントの親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に、当該コンポーネントであるコンポーネント名「見積書修正」というコンポーネントのコンポーネント情報の「次のコンポーネント名」である「注文更新」を設定し(ステップS120)、ステップS140で全てのコンポーネントについて処理を行なっていないと判定し、ステップS80へ戻る。
次に、ステップS80で、コンポーネント名「注文更新」というコンポーネントについてコンポーネント情報に除外フラグが設定されていると判定する。この場合、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文更新」というコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントであるか否かを判定する(ステップS90)。ここでは、コンポーネント名「注文更新」というコンポーネントのコンポーネント情報において、「前のコンポーネント名」及び「次のコンポーネント名」があるため、いずれかのトランザクションにおける唯一のコンポーネントではないと判定する。この場合、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、当該コンポーネントであるコンポーネント名「注文更新」というコンポーネントの親コンポーネントであるコンポーネント名「見積書修正」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されているか否かを判定する(ステップS100)。ここでは、親コンポーネントであるコンポーネント名「見積書修正」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていると判定する。この場合、YESルートへ進み、図27、図28に示すように、当該コンポーネントであるコンポーネント名「注文更新」の親コンポーネントであるコンポーネント名「見積書修正」の親コンポーネントであるコンポーネント名「見積書確認」のコンポーネント情報の「グループの次のコンポーネント名」(ここでは「注文更新」になっている)に、当該コンポーネントであるコンポーネント名「注文更新」のコンポーネント情報の「次のコンポーネント名」である「−(なし)」を上書き設定するとともに、当該コンポーネントであるコンポーネント名「注文更新」のコンポーネント情報の「親コンポーネント名」(ここでは「見積書修正」になっている)に、当該コンポーネントであるコンポーネント名「注文更新」の親コンポーネントである「見積書修正」のコンポーネント情報の「親コンポーネント名」である「見積書確認」を上書き設定し(ステップS110)、ステップS140で全てのコンポーネントについて処理を行なっていないと判定し、ステップS80へ戻る。
次に、コンポーネント名「注文照会」というコンポーネントについてコンポーネント情報に除外フラグが設定されていないと判定した後、コンポーネント名「注文検索」というコンポーネントについてコンポーネント情報に除外フラグが設定されていると判定する(ステップS80)。この場合、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文検索」というコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントであるか否かを判定する(ステップS90)。ここでは、コンポーネント名「注文検索」というコンポーネントのコンポーネント情報において、「前のコンポーネント名」及び「次のコンポーネント名」があるため、いずれかのトランザクションにおける唯一のコンポーネントではないと判定する。この場合、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、当該コンポーネントであるコンポーネント名「注文検索」というコンポーネントの親コンポーネントであるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されているか否かを判定する(ステップS100)。ここでは、親コンポーネントであるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定する。この場合、NOルートへ進み、図29に示すように、当該コンポーネントであるコンポーネント名「注文検索」というコンポーネントの親コンポーネントであるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に、当該コンポーネントであるコンポーネント名「注文検索」というコンポーネントのコンポーネント情報の「次のコンポーネント名」である「見積書流用作成」を設定し(ステップS120)、ステップS140で全てのコンポーネントについて処理を行なっていないと判定し、ステップS80へ戻る。
次に、コンポーネント名「見積書流用作成」というコンポーネントについてコンポーネント情報に除外フラグが設定されていないと判定した後、コンポーネント名「注文差戻」というコンポーネントについてコンポーネント情報に除外フラグが設定されていると判定する(ステップS80)。この場合、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文差戻」というコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントであるか否かを判定する(ステップS90)。ここでは、コンポーネント名「注文差戻」というコンポーネントのコンポーネント情報において、「前のコンポーネント名」及び「次のコンポーネント名」があるため、いずれかのトランザクションにおける唯一のコンポーネントではないと判定する。この場合、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、当該コンポーネントであるコンポーネント名「注文差戻」というコンポーネントの親コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されているか否かを判定する(ステップS100)。ここでは、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定する。この場合、NOルートへ進み、図29に示すように、当該コンポーネントであるコンポーネント名「注文差戻」というコンポーネントの親コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に、当該コンポーネントであるコンポーネント名「注文差戻」というコンポーネントのコンポーネント情報の「次のコンポーネント名」である「注文元連絡」を設定し(ステップS120)、ステップS140で全てのコンポーネントについて処理を行なっていないと判定し、ステップS80へ戻る。
次に、コンポーネント名「注文元連絡」というコンポーネントについてコンポーネント情報に除外フラグが設定されていると判定する(ステップS80)。この場合、YESルートへ進み、さらに、トランザクションログデータ分析エンジン30は、コンポーネント名「注文元連絡」というコンポーネントが、いずれかのトランザクションにおける唯一のコンポーネントであるか否かを判定する(ステップS90)。ここでは、コンポーネント名「注文元連絡」というコンポーネントのコンポーネント情報において、「前のコンポーネント名」及び「次のコンポーネント名」があるため、いずれかのトランザクションにおける唯一のコンポーネントではないと判定する。この場合、NOルートへ進み、さらに、トランザクションログデータ分析エンジン30は、当該コンポーネントであるコンポーネント名「注文元連絡」というコンポーネントの親コンポーネントであるコンポーネント名「注文差戻」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されているか否かを判定する(ステップS100)。ここでは、親コンポーネントであるコンポーネント名「注文差戻」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていると判定する。この場合、YESルートへ進み、図29、図30に示すように、当該コンポーネントであるコンポーネント名「注文元連絡」の親コンポーネントであるコンポーネント名「注文差戻」の親コンポーネントであるコンポーネント名「注文確認」のコンポーネント情報の「グループの次のコンポーネント名」(ここでは「注文元連絡」になっている)に、当該コンポーネントであるコンポーネント名「注文元連絡」のコンポーネント情報の「次のコンポーネント名」である「−(なし)」を上書き設定するとともに、当該コンポーネントであるコンポーネント名「注文元連絡」のコンポーネント情報の「親コンポーネント名」(ここでは「注文差戻」になっている)に、当該コンポーネントであるコンポーネント名「注文元連絡」の親コンポーネントである「注文差戻」のコンポーネント情報の「親コンポーネント名」である「注文確認」を上書き設定し(ステップS110)、ステップS140で全てのコンポーネントについて処理を行なったと判定して、処理を終了する。
なお、上述のトランザクションログデータ分析エンジン30による処理、即ち、図10のフローチャートに示す処理は適宜変更することもできる。例えば、ステップS40を削除しても良い。また、例えば、ステップS80〜S140を削除しても良い。また、例えば、ステップS40、S80〜S140を削除しても良い。なお、ステップS80、S100〜S120を削除する場合、コンポーネント情報格納DB31に格納するコンポーネント情報は「グループの次のコンポーネント名」を含まないものとしても良い。この場合、トランザクションログデータ可視化エンジンによる処理は後述の図36のフローチャートに示すような処理を行なうようにすれば良い。また、例えば、ステップS20〜S40は順番を変更しても良い。また、例えば、ステップS90及びS130を削除し、ステップS90と同じステップをステップS50及びステップS60の前に挿入し、唯一のコンポーネントとなっている場合はステップS60へ進み、唯一のコンポーネントとなっていない場合はステップS50へ進むようにしても良い。つまり、ステップS90を除外フラグの設定を解除するか否かの判定に用いる代わりに、これをステップS50及びステップS60の前に挿入して、除外フラグを設定するか否かの判定に用いるようにしても良い。また、例えば、ステップS70を削除し、ステップS140のNOルートがステップS20へ戻るようにしても良い。つまり、上述のトランザクションログデータ分析エンジン30による処理では、ステップS20〜S70の処理とステップS80〜S140の処理とを分けているが、これらの処理を分けずに一連の処理として行なうようにしても良い。
次に、本トランザクションログデータ分析装置1に備えられるトランザクションログデータ可視化エンジン32による処理について、図31〜図36を参照しながら、より具体的に説明する。
ここでは、利用者端末7から生産業務プロセスを可視化した情報を要求する指示があった場合における処理を例に挙げて説明する。また、コンポーネント情報格納DB31には、図32に示すように、上述のトランザクションログデータ分析エンジン30による処理結果を含むコンポーネント情報が格納されているものとする。なお、生産業務プロセスは、上述のように複数のアクティビティによって構成されるが、ここでは、説明を簡略化するために、各トランザクションにおいて実行されるコンポーネントとしては、受注アクティビティに含まれるもののみを示し、それ以外のアクティビティに含まれるものは省略している。
まず、利用者端末7から生産業務プロセスを可視化した情報を要求する指示があった場合に、トランザクションログデータ可視化エンジン32は、可視化対象とする業務プロセスを特定できる業務プロセス名を用いて、コンポーネント情報格納DB31からコンポーネント情報を読み出す。次に、コンポーネント情報に除外フラグが設定されていないコンポーネントを表示対象(可視化対象)とし、コンポーネント情報に除外フラグが設定されているコンポーネントを非表示対象(非可視化対象)としてこれを表示対象の親コンポーネントに関連づけてグループ化して、業務プロセスを実現するためのトランザクションにおける複数のコンポーネントの実行順序を示す情報(実行順序情報)を生成する。そして、この実行順序情報を、生産業務プロセスを可視化した情報を要求する指示を送ってきた利用者端末7へ送り、利用者端末7の表示装置の画面上に表示させる。
本実施形態では、トランザクションログデータ可視化エンジン32は、図31に示すように、まず、業務プロセス名「生産業務」を用いて、コンポーネント情報格納DB31から、上述のトランザクションログデータ分析エンジン30による処理結果を含むコンポーネント情報を読み出す(ステップA10)。なお、コンポーネント情報の読み出しはトランザクション毎に行なうようにしても良い。この場合、トランザクションID「0001」〜「0004」の各コンポーネント情報を順番に読み出すようにすれば良い。
次に、トランザクションログデータ可視化エンジン32は、「開始」を描画する(ステップA20)。
次に、トランザクションログデータ可視化エンジン32は、当該コンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、当該コンポーネントが既に描画されていると判定した場合、YESルートへ進み、さらに、トランザクションログデータ可視化エンジン32は、矢印が既に描画されているか否かを判定する(ステップA40)。ここでは、トランザクションログデータ可視化エンジン32は、既に描画されているコンポーネントのコンポーネント情報と当該コンポーネントのコンポーネント情報の「前のコンポーネント名」及び「次のコンポーネント名」が一致する場合に、矢印が既に描画されていると判定し、一致しない場合に、矢印が描画されていないと判定する。この判定の結果、矢印が既に描画されていると判定した場合は、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。一方、矢印が描画されていないと判定した場合は、NOルート、即ち、ステップA60へ進む。
一方、ステップA30で当該コンポーネントが描画されていないと判定した場合、NOルートへ進み、当該コンポーネントを描画し(ステップA50)、さらに、トランザクションログデータ可視化エンジン32は、当該コンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されているか否かを判定する(ステップA60)。この結果、当該コンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていないと判定した場合、NOルートへ進み、「開始」から当該コンポーネントへの矢印を描画し(ステップA70)、ステップA80へ進む。一方、当該コンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定した場合、そのままステップA80へ進む。
次に、ステップA80で、トランザクションログデータ可視化エンジン32は、当該コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が設定されているか否かを判定する。この結果、当該コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が設定されていないと判定した場合、NOルートへ進み、さらに、トランザクションログデータ可視化エンジン32は、当該コンポーネントのコンポーネント情報の「次のコンポーネント名」が設定されているか否かを判定する(ステップA120)。この結果、当該コンポーネントのコンポーネント情報の「次のコンポーネント名」が設定されていると判定した場合、YESルートへ進み、次のコンポーネント、及び、当該コンポーネントから次のコンポーネントへの矢印を描画し(ステップA140)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。一方、当該コンポーネントのコンポーネント情報の「次のコンポーネント名」が設定されていないと判定した場合、NOルートへ進み、「終了」、及び、当該コンポーネントから「終了」への矢印を描画し(ステップA130)、ステップA150で、全てのコンポーネントについて処理を行なっていないと判定した場合は、ステップA30へ戻り、全てのコンポーネントについて処理を行なったと判定した場合は、処理を終了する。
ところで、ステップA80で、当該コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が設定されていると判定した場合、YESルートへ進み、トランザクションログデータ可視化エンジン32は、当該コンポーネントが親コンポーネントとして強調表示されるようにするとともに、当該コンポーネントを親コンポーネントとしてグループ化されるコンポーネントを関連づける(ステップA90)。ここでは、後述するように、利用者端末7を操作することで、親コンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネントを展開して表示するように、親コンポーネントとグループ化されるコンポーネントとを関連づけておく。なお、グループ化されて非表示とされるコンポーネントについては、この段階で描画しておいても良いし、親コンポーネントが選択された段階で描画するようにしても良い。
次に、トランザクションログデータ可視化エンジン32は、当該コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が「−(なし)」であるか否かを判定する(ステップA100)。この結果、当該コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が「−(なし)」であると判定した場合、YESルートへ進み、「終了」、及び、当該コンポーネントから「終了」への矢印を描画し(ステップA130)、ステップA150で、全てのコンポーネントについて処理を行なっていないと判定した場合は、ステップA30へ戻り、全てのコンポーネントについて処理を行なったと判定した場合は、処理を終了する。
ところで、ステップA100で、当該コンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が「−(なし)」ではないと判定した場合、NOルートへ進み、トランザクションログデータ可視化エンジン32は、グループの次のコンポーネント、及び、当該コンポーネントからグループの次のコンポーネントへの矢印を描画し(ステップA110)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
具体的には、まず、トランザクションログデータ可視化エンジン32は、業務プロセス名「生産業務」を用いて、コンポーネント情報格納DB31から、上述のトランザクションログデータ分析エンジン30による処理結果を含むコンポーネント情報(図32参照)を読み出す(ステップA10)。
次に、トランザクションログデータ可視化エンジン32は、「開始」を描画する(ステップA20;図33参照)。
次に、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出されたコンポーネント情報(図32参照)のうち、トランザクションID「0001」に含まれるコンポーネント名「注文作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文作成」というコンポーネントは描画されていないと判定し、NOルートへ進み、コンポーネント名「注文作成」というコンポーネントを描画し(ステップA50;図33参照)、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていないと判定し、NOルートへ進み、「開始」から当該コンポーネントであるコンポーネント名「注文作成」というコンポーネントへの矢印を描画し(ステップA70;図33参照)、ステップA80へ進む。次に、ステップA80で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文作成」のコンポーネント情報の「次のコンポーネント名」として「注文確認」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「注文確認」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文作成」から次のコンポーネントであるコンポーネント名「注文確認」への矢印を描画し(図33参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA80へ進む。次に、ステップA80で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」として「見積書新規作成」が設定されていると判定して、YESルート、即ち、ステップA90へ進む。そして、ステップA90で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントが親コンポーネントとして強調表示されるようにするとともに、当該コンポーネントであるコンポーネント名「注文確認」を親コンポーネントとしてグループ化されるコンポーネント(ここではコンポーネント名「注文受付」)を関連づける。ここでは、後述するように、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「注文受付」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「注文受付」というコンポーネントとを関連づけておく。次に、ステップA100で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が「−(なし)」ではないと判定し、NOルート、即ち、ステップA110へ進む。そして、ステップA110で、トランザクションログデータ可視化エンジン32は、「グループの次のコンポーネント名」として設定されている「見積書新規作成」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文確認」からグループの次のコンポーネントである「見積書新規作成」への矢印を描画し(図33参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に設定されているコンポーネント名「見積書新規作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書新規作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA80へ進む。次に、ステップA80で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書新規作成」のコンポーネント情報の「次のコンポーネント名」として「見積書確認」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「見積書確認」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「見積書新規作成」から次のコンポーネントであるコンポーネント名「見積書確認」への矢印を描画し(図33参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA80へ進む。次に、ステップA80で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」として「−(なし)」が設定されていると判定して、YESルート、即ち、ステップA90へ進む。そして、ステップA90で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書確認」というコンポーネントが親コンポーネントとして強調表示されるようにするとともに、当該コンポーネントであるコンポーネント名「見積書確認」を親コンポーネントとしてグループ化されるコンポーネント(ここではコンポーネント名「見積書修正」、「注文更新」)を関連づける。ここでは、後述するように、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「見積書修正」、「注文更新」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「見積書修正」、「注文更新」というコンポーネントとを関連づけておく。次に、ステップA100で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が「−(なし)」であると判定し、YESルート、即ち、ステップA130へ進む。そして、ステップA130で、トランザクションログデータ可視化エンジン32は、「終了」、及び、当該コンポーネントであるコンポーネント名「見積書確認」から「終了」への矢印を描画し(図33参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。この段階で、トランザクションID「0001」というトランザクションにおける各コンポーネントの実行順序を示す情報として、図33に示すような情報が生成される。
次に、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出されたコンポーネント情報(図32参照)のうち、トランザクションID「0002」に含まれるコンポーネント名「注文作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0002」に含まれるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0002」に含まれるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に設定されているコンポーネント名「見積書新規作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書新規作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0002」に含まれるコンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出されたコンポーネント情報(図32参照)のうち、トランザクションID「0003」に含まれるコンポーネント名「注文照会」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文照会」というコンポーネントは描画されていないと判定し、NOルートへ進み、コンポーネント名「注文照会」というコンポーネントを描画し(ステップA50;図34参照)、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていないと判定し、NOルートへ進み、「開始」から当該コンポーネントであるコンポーネント名「注文照会」というコンポーネントへの矢印を描画し(ステップA70;図34参照)、ステップA80へ進む。次に、ステップA80で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」として「見積書流用作成」が設定されていると判定して、YESルート、即ち、ステップA90へ進む。そして、ステップA90で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文照会」というコンポーネントが親コンポーネントとして強調表示されるようにするとともに、当該コンポーネントであるコンポーネント名「注文照会」を親コンポーネントとしてグループ化されるコンポーネント(ここではコンポーネント名「注文検索」)を関連づける。ここでは、後述するように、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「注文照会」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「注文検索」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「注文照会」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「注文検索」というコンポーネントとを関連づけておく。次に、ステップA100で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が「−(なし)」ではないと判定し、NOルート、即ち、ステップA110へ進む。そして、ステップA110で、トランザクションログデータ可視化エンジン32は、「グループの次のコンポーネント名」として設定されている「見積書流用作成」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文照会」からグループの次のコンポーネントである「見積書流用作成」への矢印を描画し(図34参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0003」に含まれるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」に設定されているコンポーネント名「見積書流用作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書流用作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書流用作成」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA80へ進む。次に、ステップA80で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書流用作成」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書流用作成」のコンポーネント情報の「次のコンポーネント名」として「見積書確認」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書流用作成」から次のコンポーネントであるコンポーネント名「見積書確認」への矢印を描画し(図34参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0003」に含まれるコンポーネント名「見積書流用作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出されたコンポーネント情報(図32参照)のうち、トランザクションID「0004」に含まれるコンポーネント名「注文作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0004」に含まれるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA80へ進む。次に、ステップA80で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」として「−(なし)」が設定されていると判定して、YESルート、即ち、ステップA90へ進む。そして、ステップA90で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントが親コンポーネントとして強調表示されるようにするとともに、当該コンポーネントであるコンポーネント名「注文確認」を親コンポーネントとしてグループ化されるコンポーネント(ここではコンポーネント名「注文差戻」、「注文元連絡」)を関連づける。ここでは、後述するように、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「注文差戻」、「注文元連絡」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「注文差戻」、「注文元連絡」というコンポーネントとを関連づけておく。次に、ステップA100で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「グループの次のコンポーネント名」が「−(なし)」であると判定し、YESルート、即ち、ステップA130へ進む。そして、ステップA130で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」から「終了」への矢印を描画し(図34参照)、ステップA150で全てのコンポーネントについて処理を行なったと判定して、処理を終了する。これにより、トランザクションID「0001」〜「0004」の全トランザクション、即ち、生産業務プロセスを実現するためのトランザクションにおける複数のコンポーネントの実行順序を示す情報として、図34に示すような情報が生成される。このようにして生成された実行順序情報は、利用者端末7へ送られ、利用者端末7の表示装置の画面上に表示される。
ところで、利用者端末7を操作することで、親コンポーネントが選択された場合、即ち、非表示となっているコンポーネント、即ち、親コンポーネントに関連づけてグループ化されているコンポーネントを表示させる指示があった場合、図35に示すように、トランザクションログデータ可視化エンジン32は、グループ化されて非表示となっているコンポーネントを親コンポーネントから展開して表示した実行順序情報を利用者端末7の表示装置の画面上に表示させる。
ここでは、利用者端末7を操作して、コンポーネント名「注文確認」という親コンポーネントが選択されると、トランザクションログデータ可視化エンジン32は、このコンポーネント名「注文確認」という親コンポーネントに関連づけてグループ化されているコンポーネント名「注文受付」、「注文差戻」、「注文元連絡」というコンポーネントを展開して表示させる。
また、利用者端末7を操作して、コンポーネント名「見積書確認」という親コンポーネントが選択されると、トランザクションログデータ可視化エンジン32は、このコンポーネント名「見積書確認」という親コンポーネントに関連づけてグループ化されているコンポーネント名「見積書修正」、「注文更新」というコンポーネントを展開して表示させる。
また、利用者端末7を操作して、コンポーネント名「注文照会」という親コンポーネントが選択されると、トランザクションログデータ可視化エンジン32は、このコンポーネント名「注文照会」というコンポーネントに関連づけてグループ化されているコンポーネント名「注文検索」というコンポーネントを展開して表示させる。
なお、上述のトランザクションログデータ可視化エンジン32による処理、即ち、図31のフローチャートに示す処理は適宜変更することもできる。例えば、上述のトランザクションログデータ可視化エンジン32による処理におけるステップA90は削除しても良い。つまり、親コンポーネントを強調表示し、これにグループ化されるコンポーネントを関連づける処理は行なわなくても良い。
また、本実施形態では、上述のように、トランザクションログデータ分析エンジン30によって、コンポーネント情報に「グループの次のコンポーネント名」を設定しておき、トランザクションログデータ可視化エンジン32によってこれを利用して可視化を行なうことで、コンポーネント情報格納DB31に格納されている全てのコンポーネントについて可視化の有無を判定しなくても良くしているが、これに限られるものではない。例えば、トランザクションログデータ分析エンジン30によって、コンポーネント情報に「グループの次のコンポーネント名」を設定せずに、トランザクションログデータ可視化エンジン32によって、コンポーネント情報格納DB31に格納されている全てのコンポーネントについて可視化の有無を判定するようにしても良い。
この場合、トランザクションログデータ可視化エンジン32による処理は、図36に示すように、上述の図31のフローチャートにおけるステップA80〜A110に代えて、ステップA200、A210を加えれば良い。つまり、以下のような処理を行なうようにすれば良い。
まず、図36に示すように、上述の図31のフローチャートにおける処理と同様に、ステップA10〜A70の処理を行ない、上述の図31のフローチャートにおけるステップA80に代えて、ステップA200を加え、トランザクションログデータ可視化エンジン32が、当該コンポーネントのコンポーネント情報に除外フラグが設定されているか否かを判定する。この判定の結果、当該コンポーネントのコンポーネント情報に除外フラグが設定されていると判定した場合、YESルート、即ち、ステップA210へ進む。そして、ステップA210で、トランザクションログデータ可視化エンジン32は、当該コンポーネントのコンポーネント情報の「親コンポーネント名」に設定されているコンポーネントを親コンポーネントとして強調表示されるようにするとともに、当該コンポーネントを親コンポーネントに関連づけてグループ化して非表示とし、ステップA120へ進む。ここでは、利用者端末7を操作することで、親コンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネントを展開して表示するように、親コンポーネントとグループ化されるコンポーネントとを関連づけておく。一方、当該コンポーネントのコンポーネント情報に除外フラグが設定されていないと判定した場合、NOルート、即ち、ステップA120へ進む。そして、上述の図31のフローチャートにおける処理と同様に、ステップA120〜A150の処理を行なう。
具体的には、まず、図36に示すように、トランザクションログデータ可視化エンジン32は、業務プロセス名「生産業務」を用いて、コンポーネント情報格納DB31から、上述のトランザクションログデータ分析エンジン30による処理結果を含むコンポーネント情報(図32参照)を読み出す(ステップA10)。
次に、トランザクションログデータ可視化エンジン32は、「開始」を描画する(ステップA20;図33参照)。
次に、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出されたコンポーネント情報(図32参照)のうち、トランザクションID「0001」に含まれるコンポーネント名「注文作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文作成」というコンポーネントは描画されていないと判定し、NOルートへ進み、コンポーネント名「注文作成」というコンポーネントを描画し(ステップA50;図33参照)、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていないと判定し、NOルートへ進み、「開始」から当該コンポーネントであるコンポーネント名「注文作成」というコンポーネントへの矢印を描画し(ステップA70;図33参照)、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文作成」のコンポーネント情報の「次のコンポーネント名」として「注文確認」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「注文確認」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文作成」から次のコンポーネントであるコンポーネント名「注文確認」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」のコンポーネント情報の「次のコンポーネント名」として「注文受付」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「注文受付」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文確認」から次のコンポーネントであるコンポーネント名「注文受付」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文受付」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文受付」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文受付」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文受付」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていると判定し、YESルート、即ち、ステップA210へ進む。そして、ステップA210で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文受付」というコンポーネントのコンポーネント情報の「親コンポーネント名」に設定されているコンポーネント名「注文確認」というコンポーネントを親コンポーネントとして強調表示されるようにするとともに、当該コンポーネントであるコンポーネント名「注文受付」というコンポーネントを、親コンポーネントであるコンポーネント名「注文確認」に関連づけてグループ化して非表示とする。ここでは、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「注文受付」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「注文受付」というコンポーネントとを関連づけておく。例えば、描画されているコンポーネント名「注文受付」というコンポーネントを、他のメモリ領域に退避させて非表示とし、これを親コンポーネントであるコンポーネント名「注文確認」というコンポーネントに関連づけておけば良い。次に、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文受付」のコンポーネント情報の「次のコンポーネント名」として「見積書新規作成」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「見積書新規作成」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文受付」から次のコンポーネントであるコンポーネント名「見積書新規作成」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「注文受付」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書新規作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書新規作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書新規作成」のコンポーネント情報の「次のコンポーネント名」として「見積書確認」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「見積書確認」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「見積書新規作成」から次のコンポーネントであるコンポーネント名「見積書確認」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書確認」のコンポーネント情報の「次のコンポーネント名」として「見積書修正」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「見積書修正」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「見積書確認」から次のコンポーネントであるコンポーネント名「見積書修正」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「見積書確認」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書修正」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書修正」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書修正」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書修正」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていると判定し、YESルート、即ち、ステップA210へ進む。そして、ステップA210で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書修正」というコンポーネントのコンポーネント情報の「親コンポーネント名」に設定されているコンポーネント名「見積書確認」というコンポーネントを親コンポーネントとして強調表示されるようにするとともに、当該コンポーネントであるコンポーネント名「見積書修正」というコンポーネントを、親コンポーネントであるコンポーネント名「見積書確認」に関連づけてグループ化して非表示とする。ここでは、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「見積書修正」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「見積書修正」というコンポーネントとを関連づけておく。例えば、描画されているコンポーネント名「見積書修正」というコンポーネントを、他のメモリ領域に退避させて非表示とし、これを親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントに関連づけておけば良い。次に、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書修正」のコンポーネント情報の「次のコンポーネント名」として「注文更新」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「注文更新」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「見積書修正」から次のコンポーネントであるコンポーネント名「注文更新」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「見積書修正」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文更新」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文更新」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文更新」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文更新」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていると判定し、YESルート、即ち、ステップA210へ進む。そして、ステップA210で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文更新」というコンポーネントを、親コンポーネントであるコンポーネント名「見積書確認」に関連づけてグループ化して非表示とする。ここでは、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「注文更新」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「注文更新」というコンポーネントとを関連づけておく。例えば、描画されているコンポーネント名「注文更新」というコンポーネントを、他のメモリ領域に退避させて非表示とし、これを親コンポーネントであるコンポーネント名「見積書確認」というコンポーネントに関連づけておけば良い。次に、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文更新」のコンポーネント情報の「次のコンポーネント名」が設定されていないと判定して、NOルート、即ち、ステップA130へ進む。そして、ステップA130で、トランザクションログデータ可視化エンジン32は、「終了」、及び、当該コンポーネントであるコンポーネント名「注文更新」から「終了」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出されたコンポーネント情報(図32参照)のうち、トランザクションID「0002」に含まれるコンポーネント名「注文作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0002」に含まれるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0002」に含まれるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文受付」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文受付」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0002」に含まれるコンポーネント名「注文受付」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書新規作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書新規作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0002」に含まれるコンポーネント名「見積書新規作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出されたコンポーネント情報(図32参照)のうち、トランザクションID「0003」に含まれるコンポーネント名「注文照会」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文照会」というコンポーネントは描画されていないと判定し、NOルートへ進み、コンポーネント名「注文照会」というコンポーネントを描画し(ステップA50;図35参照)、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていないと判定し、NOルートへ進み、「開始」から当該コンポーネントであるコンポーネント名「注文照会」というコンポーネントへの矢印を描画し(ステップA70;図35参照)、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文照会」のコンポーネント情報の「次のコンポーネント名」として「注文検索」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「注文検索」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文照会」から次のコンポーネントであるコンポーネント名「注文検索」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0001」に含まれるコンポーネント名「注文照会」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文検索」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文検索」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文検索」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文検索」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていると判定し、YESルート、即ち、ステップA210へ進む。そして、ステップA210で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文検索」というコンポーネントを、親コンポーネントであるコンポーネント名「注文照会」に関連づけてグループ化して非表示とする。ここでは、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「注文照会」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「注文検索」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「注文照会」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「注文検索」というコンポーネントとを関連づけておく。例えば、描画されているコンポーネント名「注文検索」というコンポーネントを、他のメモリ領域に退避させて非表示とし、これを親コンポーネントであるコンポーネント名「注文照会」というコンポーネントに関連づけておけば良い。次に、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文検索」のコンポーネント情報の「次のコンポーネント名」として「見積書流用作成」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「見積書流用作成」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文検索」から次のコンポーネントであるコンポーネント名「見積書流用作成」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0003」に含まれるコンポーネント名「注文検索」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書流用作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書流用作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書流用作成」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書流用作成」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書流用作成」のコンポーネント情報の「次のコンポーネント名」として「見積書確認」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「見積書流用作成」から次のコンポーネントであるコンポーネント名「見積書確認」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0003」に含まれるコンポーネント名「見積書流用作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「見積書確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「見積書確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、コンポーネント情報格納DB31から読み出されたコンポーネント情報(図32参照)のうち、トランザクションID「0004」に含まれるコンポーネント名「注文作成」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文作成」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていると判定して、YESルートへ進み、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0004」に含まれるコンポーネント名「注文作成」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文確認」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文確認」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていないと判定し、NOルート、即ち、ステップA120へ進む。そして、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文確認」のコンポーネント情報の「次のコンポーネント名」として「注文差戻」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「注文差戻」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文確認」から次のコンポーネントであるコンポーネント名「注文差戻」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0004」に含まれるコンポーネント名「注文確認」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文差戻」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文差戻」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文差戻」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文差戻」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていると判定し、YESルート、即ち、ステップA210へ進む。そして、ステップA210で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文差戻」というコンポーネントを、親コンポーネントであるコンポーネント名「注文確認」に関連づけてグループ化して非表示とする。ここでは、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「注文差戻」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「注文差戻」というコンポーネントとを関連づけておく。例えば、描画されているコンポーネント名「注文差戻」というコンポーネントを、他のメモリ領域に退避させて非表示とし、これを親コンポーネントであるコンポーネント名「注文確認」というコンポーネントに関連づけておけば良い。次に、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文差戻」のコンポーネント情報の「次のコンポーネント名」として「注文元連絡」が設定されていると判定して、YESルート、即ち、ステップA140へ進む。そして、ステップA140で、トランザクションログデータ可視化エンジン32は、「次のコンポーネント名」として設定されている「注文元連絡」というコンポーネント、及び、当該コンポーネントであるコンポーネント名「注文差戻」から次のコンポーネントであるコンポーネント名「注文元連絡」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なっていないと判定し、ステップA30へ戻る。
次に、トランザクションログデータ可視化エンジン32は、トランザクションID「0004」に含まれるコンポーネント名「注文差戻」というコンポーネントのコンポーネント情報の「次のコンポーネント名」に設定されているコンポーネント名「注文元連絡」というコンポーネントが既に描画されているか否かを判定する(ステップA30)。この結果、コンポーネント名「注文元連絡」というコンポーネントは既に描画されていると判定し、YESルートへ進み、ステップA40で、矢印が描画されていないと判定して、NOルート、即ち、ステップA60へ進む。次に、ステップA60で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文元連絡」というコンポーネントのコンポーネント情報の「前のコンポーネント名」が設定されていると判定し、YESルート、即ち、ステップA200へ進む。次に、ステップA200で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文元連絡」というコンポーネントのコンポーネント情報に除外フラグとして「Y」が設定されていると判定し、YESルート、即ち、ステップA210へ進む。そして、ステップA210で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文元連絡」というコンポーネントを、親コンポーネントであるコンポーネント名「注文確認」に関連づけてグループ化して非表示とする。ここでは、利用者端末7を操作することで、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントが選択された場合に、トランザクションログデータ可視化エンジン32が、コンポーネント情報格納DB31に格納されているコンポーネント情報(図32参照)において、選択された親コンポーネントが「親コンポーネント名」として設定されており、グループ化されて非表示になっているコンポーネント名「注文元連絡」というコンポーネントを展開して表示するように、親コンポーネントであるコンポーネント名「注文確認」というコンポーネントとグループ化されるコンポーネントであるコンポーネント名「注文元連絡」というコンポーネントとを関連づけておく。例えば、描画されているコンポーネント名「注文元連絡」というコンポーネントを、他のメモリ領域に退避させて非表示とし、これを親コンポーネントであるコンポーネント名「注文確認」というコンポーネントに関連づけておけば良い。次に、ステップA120で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文元連絡」のコンポーネント情報の「次のコンポーネント名」が設定されていないと判定して、NOルート、即ち、ステップA130へ進む。そして、ステップA130で、トランザクションログデータ可視化エンジン32は、当該コンポーネントであるコンポーネント名「注文元連絡」から「終了」への矢印を描画し(図35参照)、ステップA150で全てのコンポーネントについて処理を行なったと判定して、処理を終了する。これにより、トランザクションID「0001」〜「0004」の全トランザクション、即ち、生産業務プロセスを実現するためのトランザクションにおける複数のコンポーネントの実行順序を示す情報として、図35に示すような情報が生成される。このようにして生成された実行順序情報は、利用者端末7へ送られ、利用者端末7の表示装置の画面上に表示される。
なお、上述のトランザクションログデータ可視化エンジン32による処理、即ち、図36のフローチャートに示す処理は適宜変更することもできる。例えば、上述のトランザクションログデータ可視化エンジン32による処理におけるステップA210の処理に代えて、除外フラグが設定されているコンポーネントを描画したものを消去することで非表示とする処理を行なうようにしても良い。また、図36のステップA140で、次のコンポーネントを描画する際に、次のコンポーネントのコンポーネント情報に除外フラグが設定されている場合には、次のコンポーネントを描画しないようにし、この場合、ステップA30でコンポーネントが描画されていないと判定した場合に、さらに、除外フラグが設定されているかを判定して、除外フラグが設定されている場合には、コンポーネントを描画しないようにし、さらに、ステップA210で、上述の図31のフローチャートのA90と同様の処理を行なうようにしても良い。また、図36のステップA200、A210を、ステップA60、A70の前に行なうようにしても良い。
したがって、本実施形態にかかる分析装置及び分析方法によれば、業務プロセスを実現するトランザクションにおける、プログラムの呼び出し関係情報を含む業務に関するログデータを分析し、分析結果の冗長性を低減した、より有用な分析結果を提供できるという利点がある。このため、業務システム2を含む情報処理システムにこの分析装置1を組み込むことで、より有用な分析結果を得ることが可能となり、これにより、対策をとるべきコンポーネントを絞り込み、業務プロセスの改善や最適化を容易に行なうことが可能となる。
なお、本発明は、上述した実施形態に記載した構成に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形することが可能である。
例えば、上述の実施形態及び変形例では、トランザクションログデータ分析装置1を、コンピュータにトランザクションログデータ分析プログラムをインストールしたものとして構成しているが、上述の実施形態及び変形例における処理をコンピュータに実行させるトランザクションログデータ分析プログラム(上述のような機能をコンピュータに実現させるためのトランザクションログデータ分析プログラム)は、コンピュータ読取可能な記録媒体に格納した状態で提供される場合もある。
ここで、記録媒体には、例えば半導体メモリなどのメモリ,磁気ディスク,光ディスク[例えばCD(Compact Disc)−ROM,DVD(Digital Versatile Disk),ブルーレイディスク等],光磁気ディスク(MO:Magneto optical Disc)等のプログラムを記録することができるものが含まれる。なお、磁気ディスク,光ディスク,光磁気ディスク等を可搬型記録媒体ともいう。
この場合、ドライブ装置を介して、可搬型記録媒体からトランザクションログデータ分析プログラムを読み出し、読み出されたトランザクションログデータ分析プログラムを記憶装置にインストールすることになる。これにより、上述の実施形態及び変形例で説明したトランザクションログデータ分析装置及びトランザクションログデータ分析方法が実現され、上述の実施形態及び変形例の場合と同様に、記憶装置にインストールされたトランザクションログデータ分析プログラムを、CPUがメモリ上に読み出して実行することで、上述の実施形態及び変形例の各処理が行なわれることになる。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
また、上述の実施形態及び変形例における処理をコンピュータに実行させるトランザクションログデータ分析プログラムは、例えば伝送媒体としてのネットワーク(例えばインターネット,公衆回線や専用回線等の通信回線等)を介して提供される場合もある。
例えば、プログラム提供者が例えばサーバなどの他のコンピュータ上で提供しているトランザクションログデータ分析プログラムを、例えばインターネットやLAN等のネットワーク及び通信インタフェースを介して、記憶装置にインストールしても良い。これにより、上述の実施形態及び変形例で説明したトランザクションログデータ分析装置及びトランザクションログデータ分析方法が実現され、上述の実施形態及び変形例の場合と同様に、記憶装置にインストールされたトランザクションログデータ分析プログラムを、CPUがメモリ上に読み出して実行することで、上述の実施形態及び変形例の各処理が行なわれることになる。なお、コンピュータは、例えばサーバなどの他のコンピュータからプログラムが転送されるごとに、逐次、受け取ったプログラムに従った処理を実行することもできる。
以下、上述の実施形態及び変形例に関し、更に、付記を開示する。
(付記1)
コンピュータに、
業務プロセスを実現するために複数のプログラムが実行されるトランザクションにおける、プログラムの呼び出し関係情報を含む業務に関するログデータを分析し、
分析された情報に基づいて、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムを除いて、前記トランザクションにおける前記複数のプログラムの実行順序を示す情報を生成する、
処理を実行させることを特徴とする分析プログラム。
(付記2)
前記分析された情報は、属性情報を含み、
前記実行順序を示す情報を生成する処理において、直前に実行されたプログラムと直後に実行されたプログラムが一つずつである前記プログラムのうち、直前に実行されたプログラムと属性情報が変わっているプログラムは残して、前記実行順序を示す情報を生成する処理を前記コンピュータに実行させることを特徴とする、付記1に記載の分析プログラム。
(付記3)
前記実行順序を示す情報を生成する処理において、前記トランザクションの最初に実行されたプログラム、及び、直前に実行されたプログラムがなく、かつ、直後に実行されたプログラムがないプログラムを残して、前記実行順序を示す情報を生成する処理を前記コンピュータに実行させることを特徴とする、付記1又は2に記載の分析プログラム。
(付記4)
コンピュータが、
業務プロセスを実現するために複数のプログラムが実行されるトランザクションにおける、プログラムの呼び出し関係情報を含む業務に関するログデータを分析し、
分析された情報に基づいて、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムを除いて、前記トランザクションにおける前記複数のプログラムの実行順序を示す情報を生成する、
処理を実行することを特徴とする分析方法。
(付記5)
前記分析された情報は、属性情報を含み、
前記実行順序を示す情報を生成する処理において、直前に実行されたプログラムと直後に実行されたプログラムが一つずつである前記プログラムのうち、直前に実行されたプログラムと属性情報が変わっているプログラムは残して、前記実行順序を示す情報を生成する処理を前記コンピュータが実行することを特徴とする、付記4に記載の分析方法。
(付記6)
前記実行順序を示す情報を生成する処理において、前記トランザクションの最初に実行されたプログラム、及び、直前に実行されたプログラムがなく、かつ、直後に実行されたプログラムがないプログラムを残して、前記実行順序を示す情報を生成する処理を前記コンピュータが実行することを特徴とする、付記4又は5に記載の分析方法。
(付記7)
業務プロセスを実現するために複数のプログラムが実行されるトランザクションにおける、プログラムの呼び出し関係情報を含む業務に関するログデータを分析する分析部と、
前記分析部によって分析された情報に基づいて、直前に実行されたプログラムと直後に実行されたプログラムが一つずつであるプログラムを除いて、前記トランザクションにおける前記複数のプログラムの実行順序を示す情報を生成する生成部とを備えることを特徴とする分析装置。
(付記8)
前記分析部によって分析された情報は、属性情報を含み、
前記生成部は、直前に実行されたプログラムと直後に実行されたプログラムが一つずつである前記プログラムのうち、直前に実行されたプログラムと属性情報が変わっているプログラムは残して、前記実行順序を示す情報を生成することを特徴とする、付記7に記載の分析装置。
(付記9)
前記生成部は、前記トランザクションの最初に実行されたプログラム、及び、直前に実行されたプログラムがなく、かつ、直後に実行されたプログラムがないプログラムを残して、前記実行順序を示す情報を生成することを特徴とする、付記7又は8に記載の分析装置。