以下、本発明を実施するための最良の形態を図面を参照して説明する。
図1は、本発明による分散アプリケーション管理システムと、管理対象となる分散アプリケーションシステムに含まれるアプリケーションサービス提供装置との関係を示すブロック図である。本実施の形態における分散アプリケーション管理システムは、図1に示すアプリケーションサービス管理装置105を含む。さらに、本実施の形態における分散アプリケーション管理システムに、動作モデル記憶装置115と、メッセージログ記憶装置104とを含めてもよい。
各アプリケーションサービス提供装置100は、分散アプリケーションシステムに含まれ、それぞれ個別のアプリケーションサービス処理を行う。1つのアプリケーションサービス提供装置100は、実行した処理に応じて、他のアプリケーションサービス提供装置100にメッセージを出力し、他のアプリケーションサービス提供装置に処理を実行させる。個々のアプリケーションサービス提供装置100が、それぞれ順次アプリケーションサービス処理を実行することで、一連のビジネスプロセス処理が完了する。例えば、あるアプリケーションサービス提供装置100が、顧客からの注文発注を受ける処理を行い、次のアプリケーションサービス提供装置100にメッセージを送信する。メッセージを受けたアプリケーションサービス提供装置100は、顧客の支払い能力の確認処理を行い、次のアプリケーションサービス提供装置100にメッセージを送信する。このような処理を繰り返し、例えば、発注を受けてから商品発送するまでの一連のビジネスプロセス処理を行う。
また、アプリケーションサービス提供装置100には、メッセージの入力インタフェース(具体的にはAPI(Application Programming Interface ))が1つあるいは複数定められ、メッセージおよびメッセージの入力インタフェース(以下、単にインタフェースと記す。)に応じた処理を行う。
各アプリケーションサービス監視装置101は、自身が監視対象とするアプリケーションサービス提供装置100の入出力をモニタリングし、メッセージログを収集してメッセージログ記憶装置104に記憶させる。各メッセージログ記憶装置104は、メッセージログを記憶する。
アプリケーションサービス監視装置101は、アプリケーションサービス提供装置100に入力されるメッセージ本文と、そのメッセージの入力時刻の情報、およびそのメッセージ処理後に新たに送信されるメッセージの送信時刻をメッセージログとして収集する。そして、それらの情報を含むメッセージログをメッセージログ記憶装置104に記憶させる。
アプリケーションサービス管理装置105は、各メッセージログ記憶装置104からメッセージログを収集し、後述する各種処理(メッセージシーケンスの構築、各メッセージシーケンスのシーケンスタイプの導出、シーケンス処理時間計算式の導出、動作モデルの導出等)を実行する。動作モデルとは、非同期な並列動作システムを記述した構造式であり、動作モデル実行環境にて模擬実行させることができる構造式である。また、動作モデルは、管理対象となる分散アプリケーションシステムにおけるメッセージの送受信タイミングを模擬的に再現可能な情報である。
動作モデル記憶装置115は、アプリケーションサービス管理装置105によって作成された動作モデルを記憶する。
図2は、アプリケーションサービス提供装置100、アプリケーションサービス監視装置101、メッセージログ記憶装置104、アプリケーションサービス管理装置105の接続状態を示す説明図である。これらの各装置は、図2に示すように通信ネットワーク1を介して接続される。各アプリケーションサービス提供装置100は、通信ネットワーク1を介してメッセージを送受信する。また、各アプリケーションサービス監視装置101は、通信ネットワーク1を介してメッセージを収集し、メッセージログを各メッセージログ記憶装置104に記憶させる。アプリケーションサービス管理装置105は、通信ネットワーク1を介して、各メッセージログ記憶装置104からそれぞれメッセージログの集合を読み込む。
なお、対応するアプリケーションサービス提供装置100とアプリケーションサービス監視装置101は、図1、図2に示すように別個の装置(計算機)として設けてもよい。あるいは、対応するアプリケーションサービス提供装置100とアプリケーションサービス監視装置101とを同一の装置として設けてもよい。また、図1、図2では、各アプリケーションサービス提供装置100と各アプリケーションサービス監視装置101とが1対1に対応する場合を示したが、n対1に対応するように設けられていてもよい。すなわち、n台のアプリケーションサービス提供装置100に対して1台のアプリケーションサービス監視装置101を対応させ、1台のアプリケーションサービス監視装置101が、n台のアプリケーションサービス提供装置100からメッセージを収集する構成であってもよい。
図3は、アプリケーションサービス監視装置101およびアプリケーションサービス管理装置105の構成例を示すブロック図である。
図3に示すように、アプリケーションサービス監視装置101は、メッセージログ取得手段102とメッセージログ蓄積手段103とを備える。メッセージログ取得手段102は、アプリケーションサービス提供装置100の入力メッセージおよび出力メッセージに基づいてメッセージログを生成する。メッセージログ取得手段102は、例えば、アプリケーションサービス提供装置100に直接アクセスして取得した情報に基づいてメッセージログを生成する。あるいは、アプリケーションサービス提供装置100がアプリケーションサービス監視装置101にメッセージログを配信する態様で、メッセージログ取得手段102がメッセージログを収集してもよい。メッセージログ蓄積手段103は、メッセージログをメッセージログ記憶装置104に格納する。
アプリケーションサービス管理装置105は、メッセージログ収集手段106と、メッセージシーケンス導出手段107と、シーケンスタイプ導出手段108と、シーケンス処理時間計算式導出手段109と、動作モデル導出手段110とを備える。また、アプリケーションサービス管理装置105には、ビジネスプロセス記憶装置111と、メッセージシーケンス記憶装置112と、シーケンスタイプ記憶装置113と、シーケンスタイプ構造記憶装置114とが接続される。アプリケーションサービス管理装置105が、ビジネスプロセス記憶装置111と、メッセージシーケンス記憶装置112と、シーケンスタイプ記憶装置113と、シーケンスタイプ構造記憶装置114とを備える構成であってもよい。
アプリケーションサービス管理装置105とアプリケーションサービス監視装置101とは1対nの対応を持つ。すなわち、1台のアプリケーションサービス管理装置105は、n台の各アプリケーションサービス監視装置101がそれぞれメッセージログ記憶装置104に記憶させたメッセージログを読み込んで処理を実行する。また、アプリケーションサービス管理装置105とアプリケーションサービス監視装置101は、図示するように別個の装置(計算機)として設けられてもよいし、あるいは、同一の装置としても設けられていてもよい。
ビジネスプロセス記憶装置111は、管理対象となる分散アプリケーションシステム(ビジネスプロセス処理システム)の構造情報を記憶する。具体的には、管理対象となるシステムにどのようなサービスが含まれていて、どのサービスからどのサービスに対してメッセージが流されるのかを示す情報を記憶する。換言すれば、ビジネスプロセス記憶装置111は、管理対象となるシステムにどのようなアプリケーションサービス提供装置100が含まれていて、どのアプリケーションサービス提供装置からどのアプリケーションサービス提供装置にメッセージが送られるのかを示す情報を記憶する。なお、ビジネスプロセス記憶装置111は、あるアプリケーションサービス提供装置から送られたメッセージが、他のアプリケーションサービス提供装置のどのインタフェースに入力されるかという情報までは記憶していなくてもよい。なお、各アプリケーションサービス監視装置101は、ビジネスプロセス記憶装置111が記憶する構造情報に適合するように設置される。
また、ビジネスプロセス記憶装置111は、1つのビジネスプロセス処理(ビジネスプロセス処理システム)に関する構造情報(どのようなアプリケーションサービス提供装置100が含まれていて、どのアプリケーションサービス提供装置からどのアプリケーションサービス提供装置にメッセージが送られるのかを示す情報)だけでなく、複数のビジネスプロセス処理(ビジネスプロセス処理システム)に関する構造情報を記憶していてもよい。
メッセージログ収集手段106は、複数のメッセージログ記憶装置106からメッセージログを収集し、収集したメッセージログをメッセージシーケンス導出手段107へ渡す。
メッセージシーケンス導出手段107は、ビジネスプロセス記憶装置111から取り出したビジネスプロセス情報を元にメッセージログを組み合わせてメッセージシーケンスを生成し、そのメッセージシーケンスをメッセージシーケンス記憶装置112に格納する。メッセージシーケンス導出手段107が、メッセージシーケンスを生成(導出)する処理については後述する。図4は、メッセージシーケンスの例を示す説明図である。図4に示すWSp,WSq,WSr,WSsは、それぞれアプリケーションサービス提供装置を表している。そして、アプリケーションサービス提供装置WSpが、メッセージiに基づいて処理を行い、メッセージj,k,lを出力し、アプリケーションサービス提供装置WSqが、メッセージj,k,lに基づいて処理を行い、メッセージmをアプリケーションサービス提供装置WSs出力している状況を示す。あるメッセージに基づく処理後に複数のメッセージがアプリケーションサービス提供装置から出力されることを「分岐」と呼ぶ。また、複数メッセージに基づく処理後に、その複数のメッセージより少ないメッセージ(例えば1つのメッセージ)がアプリケーションサービス提供装置から出力されることを「集約」と呼ぶ。図4に示す例では、メッセージiがメッセージj,k,lに分岐し、メッセージj,k,lがメッセージmに集約している。メッセージシーケンスとは、複数のアプリケーションサービス(具体的には、アプリケーションサービス提供装置)を経由する際のメッセージの連なりを意味する。図4に示す例では、メッセージi,j,mという連なり、メッセージi,k,mという連なり、およびメッセージi,l,mという連なりが、それぞれメッセージシーケンスに該当する。メッセージシーケンス導出手段107は、このようなメッセージシーケンスを導出する。
メッセージシーケンス記憶装置112は、メッセージシーケンス導出手段107によって導出されたメッセージシーケンスを記憶する。
シーケンスタイプ導出手段108は、メッセージシーケンス記憶装置112からメッセージシーケンスを読み出し、メッセージシーケンスが経由したアプリケーションサービス提供装置のインタフェースの経路を基にメッセージシーケンスを分類することによりシーケンスタイプを導出する。そして、導出したシーケンスタイプをシーケンスタイプ記憶装置113に格納する。
シーケンスタイプ記憶装置113は、シーケンスタイプ導出手段108によって導出された各種シーケンスタイプの情報(シーケンスタイプ構造)を記憶する。
シーケンス処理時間計算式導出手段109は、シーケンスタイプ記憶装置113からシーケンスタイプ構造を読み出し、各メッセージシーケンスのメッセージ多重度を基にメッセージシーケンス通過時のメッセージシーケンスの推定処理時間(メッセージシーケンスの処理時間)を算出するシーケンス処理時間計算式を導出する。そして、シーケンス処理時間計算式導出手段109は、その処理時間計算式をシーケンスタイプ構造に加え、シーケンスタイプ構造記憶装置114に格納する。なお、多重度や、シーケンス処理時間計算式の導出処理については後述する。
シーケンスタイプ構造記憶装置114は、シーケンス処理時間計算式が追加されたシーケンスタイプ構造を記憶する。なお、シーケンスタイプ記憶装置113が記憶するシーケンス構造には、シーケンス処理時間計算式が含まれていない。この点でシーケンスタイプ構造記憶装置114およびシーケンスタイプ記憶装置113が記憶するシーケンスタイプ構造は異なる。
動作モデル導出手段110は、シーケンスタイプ構造記憶装置114からシーケンスタイプ構造を読み出し、シーケンスタイプ構造を組み合わせることによりビジネスプロセス処理システムの振る舞いを示す動作モデルを導出し、動作モデル記憶装置115に格納する。
メッセージログ収集手段106、メッセージシーケンス導出手段107、シーケンスタイプ導出手段108、シーケンス処理時間計算式導出手段109、および動作モデル導出手段110は、例えば、プログラムに従って動作するCPUによって実現される。また、メッセージログ収集手段106、メッセージシーケンス導出手段、シーケンスタイプ導出手段108、シーケンス処理時間計算式導出手段109、および動作モデル導出手段110の全部または一部を、同一のCPUによって実現してもよい。例えば、メッセージログ収集手段106およびメッセージシーケンス導出手段107を同一のCPUで実現してもよい。さらに、そのCPUと同一のCPUで、シーケンスタイプ導出手段108を実現してもよい。さらに、そのCPUと同一のCPUで、シーケンス処理時間計算式導出手段109を実現してもよい。さらに、そのCPUと同一のCPUで、動作モデル導出手段110を実現してもよい。
また、本実施の形態における分散アプリケーション管理システムは、図5に示すビジネスプロセスシミュレート装置116も含む。図5は、分散アプリケーション管理システムに含まれるビジネスプロセスシミュレート装置の構成例を示すブロック図である。図5では、アプリケーションサービス管理装置105とビジネスプロセスシミュレート装置とを1台ずつ示しているが、ビジネスプロセスシミュレート装置116とアプリケーションサービス管理装置105はn対mの対応を持つ。すなわち、ビジネスプロセスシミュレート装置116およびアプリケーションサービス管理装置105は、それぞれ複数台設けられていてもよく、ビジネスプロセスシミュレート装置116およびアプリケーションサービス管理装置105の台数は異なっていてもよい。また、ビジネスプロセスシミュレート装置116とアプリケーションサービス管理装置105とを同一の装置(計算機)として設けてもよい。
ビジネスプロセスシミュレート装置116は、動作モデル読み出し手段117と、パラメータ設定手段118と、動作モデル実行手段119と、シミュレート結果取得手段120とを備える。また、ビジネスプロセスシミュレート装置116には、動作モデル記憶装置115と、シミュレート結果記憶装置122と、入力装置124と、出力装置123とが接続されている。ビジネスプロセスシミュレート装置116が、動作モデル記憶装置115と、シミュレート結果記憶装置122と、入力装置124と、出力装置123とを備える構成であってもよい。
動作モデル読み出し手段117は、模擬実行させる動作モデルを動作モデル記憶装置115から読み出す。
入力装置124は、例えば、キーボードやマウスによって実現される。入力装置124には、オペレータによって模擬的に定められたメッセージシーケンス到着間隔がシーケンスタイプ毎に入力される。
パラメータ設定手段118は、入力されたメッセージシーケンス到着間隔を入力装置124からシーケンスタイプ毎に受け取り、動作モデル読み出し手段117が読み出した動作モデルと共に動作モデル実行手段119に渡す。
動作モデル実行手段119は、各シーケンスタイプ毎に入力された到着間隔でメッセージシーケンスが到着するという状況のもとでのビジネスプロセス動作を、動作モデルに基づいて模擬実行する。具体的には、各アプリケーションサービス提供装置100に各シーケンスタイプのメッセージシーケンスに属するメッセージが入力された場合の各メッセージに対する処理の処理開始時刻(メッセージ受信時刻)および処理終了時刻(新メッセージ送信時刻)を算出する。
シミュレート結果取得手段120は、動作モデル実行手段119が出力する模擬実行結果を受け取り、その模擬実行結果をシミュレート結果記憶装置122に記憶させ、出力装置123に出力(例えば、表示出力)する。出力装置123は、例えば、ディスプレイ装置等によって実現される。また、シミュレート結果取得手段120は、各シーケンスタイプのインタフェース毎の到着間隔の変化、各シーケンスタイプのインタフェース毎の処理時間の変化、各シーケンスタイプの全体処理時間の変化などのビジネスプロセスのシミュレート状況を計測してもよい。シミュレート結果取得手段120は、この計測結果をシミュレート結果記憶装置122に記憶させ、出力装置123に出力してもよい。
図6は、ビジネスプロセスシミュレート装置の他の構成例を示すブロック図である。動作モデル読み出し手段117、パラメータ設定手段118、動作モデル実行手段119の動作は、図5に示す構成の場合と同様である。シミュレート結果取得手段120は、動作モデル実行手段119が出力した情報を、過負荷判定手段121に出力する。過負荷判定手段121は、シーケンス処理時間計算式毎にビジネスプロセス処理システムの診断を行う。具体的には、動作モデル実行手段119による模擬的なビジネスプロセス動作におけるメッセージシーケンスの平均到着頻度およびその模擬的な動作時間として計算された処理時間に基づいて、管理対象システムが、安定に動作するか、あるいは過負荷状態になるかの判断材料となる情報を生成する。過負荷判定手段121は、この情報をシミュレート結果記憶装置122に記憶させ、また、出力装置123に出力(例えば表示出力)し、オペレータに管理対象システムが安定に動作するか過負荷状態になるかの判断を促す。なお、過負荷状態は、過負荷状態とは大量のメッセージシーケンス処理によって処理性能、特性が急激に悪化する状態である。過負荷判定手段121の動作については、後述する。
図5または図6に示すビジネスプロセスシミュレート装置において、動作モデル読み出し手段117、パラメータ設定手段118、動作モデル実行手段119、シミュレート結果取得手段120、過負荷判定手段121は、例えば、プログラムに従って動作するCPUによって実現される。また、動作モデル読み出し手段117、パラメータ設定手段118、動作モデル実行手段119、シミュレート結果取得手段120、過負荷判定手段121の全部または一部を、同一のCPUによって実現してもよい。例えば、動作モデル読み出し手段117およびパラメータ設定手段118を同一のCPUによって実現してもよい。さらに、そのCPUと同一のCPUで、動作モデル実行手段119を実現してもよい。さらに、そのCPUと同一のCPUで、シミュレート結果取得手段120を実現してもよい。さらに、そのCPUと同一のCPUで、過負荷判定手段121を実現してもよい。
次に、本実施の形態による分散アプリケーション管理システムの動作について詳細に説明する。
まず、アプリケーションサービス提供装置100間で送受信されるメッセージについて説明する。既に説明したように、1つのアプリケーションサービス提供装置100は、実行した処理に応じて、他のアプリケーションサービス提供装置100にメッセージを出力し、他のアプリケーションサービス提供装置に処理を実行させる。そして、個々のアプリケーションサービス提供装置100が、それぞれ順次アプリケーションサービス処理を実行することで、一連のビジネスプロセス処理が完了する。図7は、アプリケーションサービス提供装置100間で送受信されるメッセージのデータ構造の例を示す説明図である。本例に示すメッセージのデータ構造は、ヘッダとボディとがエンベロープに収められたデータ構造になっている。メッセージのヘッダには、メッセージ送信元アプリケーションサービスのID、メッセージ送信先アプリケーションサービスのID、関連メッセージのID、および、そのメッセージ自身のIDが含まれる。なお、個々のアプリケーションサービスは、各アプリケーションサービス提供装置100によって実行される。よって、アプリケーションサービスのIDとは、アプリケーションサービス提供装置100のIDであるということもできる。また、メッセージのボディには、利用するアプリケーションサービス提供装置100のインタフェース(すなわち、そのメッセージが入力されるアプリケーションサービス提供装置100のインタフェース)、インタフェースへのパラメータを持つメッセージ内容が含まれる。
また、「関連メッセージ」とは、アプリケーションサービス提供装置100が出力メッセージを生成する原因となった1つ前のサービス(アプリケーションサービス提供装置100)から送信された受信メッセージを意味する。
アプリケーションサービス監視装置101のメッセージログ取得手段102(図3参照。)は、そのアプリケーションサービス監視装置101に対応するアプリケーションサービス提供装置100からメッセージと、そのメッセージが送信先アプリケーションサービス提供装置100に到着した時刻の情報と、そのアプリケーションサービス提供装置100が次のアプリケーションサービス提供装置100に向けて新たなメッセージを送信した時刻の情報の情報とを取得する。そして、メッセージログ取得手段102は、取得した情報に基づいてメッセージログを生成する。
図8は、メッセージログのデータ構造の例を示す説明図である。図8に例示するように、メッセージログは、例えば、メッセージログ取得手段102が収集したメッセージ自身のID(メッセージID)と、送信元アプリケーションサービスID(すなわち、そのメッセージの送信元アプリケーションサービスのID)と、アプリケーションサービスID(メッセージログ取得手段102が収集したメッセージを受信したアプリケーションサービスのID)と、関連メッセージIDと、利用インタフェースと、メッセージ内容と、メッセージの受信時刻と、新メッセージの送信時刻とを含む。図8に示す例では、時刻を「時、分、秒」で表すようにしているが、他の単位で時刻を表してもよい。例えば、「ミリ秒」等で時刻を表すようにしてもよい。他の図面等でも同様である。なお、利用インタフェースは、メッセージログ取得手段102が収集したメッセージを受信したアプリケーションサービスのインタフェースである。メッセージログ取得手段102が、取得した情報(メッセージ、そのメッセージの受信時刻、新メッセージの送信時刻)に基づいて、図8に例示するデータ構造のメッセージログを生成すると、メッセージログ蓄積手段103は、そのメッセージログを、対応するメッセージログ記憶装置104に記憶させる。メッセージログ取得手段102は、アプリケーションサービス提供手段100が受信するメッセージ毎にメッセージログを生成(あるいは収集)し、メッセージログ蓄積手段103は、各メッセージに応じたメッセージログをメッセージログ記憶装置104に記憶させる。従って、メッセージログ記憶装置104は、対応するアプリケーションサービス100が受信する各メッセージそれぞれに応じた各メッセージログを記憶する。よって、個々のメッセージログ記憶装置104は、メッセージログの集合(メッセージログ集合)を記憶する。
なお、あるメッセージが複数のメッセージから集約されている場合、メッセージログ取得手段102は、集約されたメッセージのメッセージログを、その複数のメッセージ数だけ作成する。このとき、関連メッセージの情報は、それぞれ異なるが、他の情報は同一になるように集約されたメッセージのメッセージログを作成する。
アプリケーションサービス管理装置105のメッセージログ収集手段106(図3参照。)は、複数のメッセージログ記憶装置104からメッセージログ集合を読み出す。よって、メッセージログ収集手段106は、メッセージログ集合の集合を収集する。メッセージログ収集手段106がメッセージログ集合の集合を収集すると、メッセージシーケンス導出手段107が、メッセージシーケンスを導出する。
図9は、メッセージシーケンス導出処理を示すフローチャートである。メッセージシーケンス導出手段107は、まず、ビジネスプロセス記憶装置111よりビジネスプロセス処理システムの構造情報を読み出す。既に説明したように、ビジネスプロセス記憶装置111は、複数のビジネスプロセス処理システムに関する構造情報を記憶していてもよい。メッセージシーケンス導出手段107は、アプリケーションサービス管理装置105が管理対象としているビジネスプロセス処理システムの構造情報を読み出す。そして、メッセージシーケンス導出手段107は、その構造情報に基づいて、メッセージシーケンス導出に用いるメッセージが送受信されるアプリケーションサービスの範囲(アプリケーションサービス提供装置100の範囲)を定める(ステップA1)。換言すれば、管理対象となるビジネスプロセス処理システムに属するアプリケーションサービス提供装置100の範囲を定める。なお、アプリケーションサービス管理装置105が管理対象としているビジネスプロセス処理システムが複数存在する場合には、そのうちの1つに対応する構造情報を選択して読み出す。
続いて、メッセージシーケンス導出手段107は、メッセージログ収集手段106が収集しているメッセージログ集合の集合の中から、ステップA1で定めた範囲内のアプリケーションサービス提供装置100で入力や出力されたメッセージに応じたメッセージログをメッセージログ収集手段106から受け取る(ステップA2)。このとき、メッセージログ106は、収集したメッセージログ集合の集合全体のうち、メッセージシーケンス導出手段107が指定した範囲内のアプリケーションサービス提供装置100で入力や出力されたメッセージに応じたメッセージログを、メッセージシーケンス導出手段107に渡せばよい。
次に、メッセージシーケンス導出手段107は、ステップA2で受け取ったメッセージログの中から、関連メッセージIDとして空の情報を有する(すなわち、関連メッセージIDが記述されていない)メッセージログを1つ特定する(ステップA3)。メッセージログが関連メッセージIDとして空の情報を有するということは、そのメッセージログが一番最初のアプリケーションサービス100に入力されたメッセージに対応するものであることを意味する。すなわち、そのメッセージログは、メッセージシーケンスにおける起点となるメッセージに対応するメッセージログであることを意味する。さらに、メッセージシーケンス導出手段107は、ステップA3で特定したメッセージログのメッセージIDを関連メッセージとして有するメッセージログを特定する(ステップA4)。ステップA4で特定されるメッセージログは、起点から数えて2番目のメッセージ(起点となるメッセージに基づく処理の結果出力されたメッセージ)に対応する。ステップA4の後、メッセージシーケンス導出手段107は、新規にメッセージシーケンスIDを割り当て、ステップA3,A4で特定した各メッセージログ(起点および2番目のメッセージに対応する各メッセージログ)にそのメッセージシーケンスIDを付加する(ステップA5)。
続いて、メッセージシーケンス導出手段107は、メッセージシーケンスIDが付加されたメッセージログのメッセージIDを関連メッセージIDとして有するメッセージログを特定する(ステップA6)。そして、メッセージシーケンス導出手段107は、ステップA6で特定したメッセージログに、そのメッセージログを特定するためにメッセージIDを参照したメッセージのメッセージシーケンスIDを付加する(ステップA7)。メッセージシーケンス導出手段107は、ステップA6,A7の処理(メッセージログ特定ループ)を、ステップA6でメッセージログの特定ができなくなるまで繰り返す。ステップA6,A7の処理を繰り返すことにより、3番目以降の各メッセージに対応するメッセージログを特定し、そのメッセージログにメッセージシーケンスIDを付加することになる。
以上の処理によって、メッセージシーケンスを構成する各メッセージログに共通のメッセージシーケンスIDを付加する。従って、複数のメッセージログに共通のメッセージシーケンスIDが付加されていれば、その複数のメッセージログは、同一のメッセージシーケンスを構成していることになる。また、以上の処理の後において、関連メッセージIDとして空の情報を有するメッセージログであって、メッセージシーケンスIDが付加されていないメッセージログが存在するならば、ステップA3以降の処理(メッセージシーケンス導出ループ)を繰り返す。
続いて、メッセージシーケンス導出手段107は、メッセージシーケンスIDを付加したメッセージログの集合をメッセージシーケンス集合としてメッセージシーケンス記憶手段112に記憶させる。メッセージシーケンスIDが付加されたメッセージログのデータ構造は、図10に示すように、メッセージログのデータ構造にメッセージシーケンスIDが追加されたデータ構造になる。
図4に示すようにメッセージシーケンスが分岐する場合がある。この場合であっても、分岐するメッセージシーケンスにそれぞれ個別にメッセージシーケンスIDを付加することができる。例えば、メッセージが分岐して、同一の関連メッセージIDを有するメッセージログが複数存在していることが、ステップA4やステップA9で明らかになった場合、メッセージシーケンス導出手段107は、分岐による入力メッセージに対する増加メッセージ数分だけ、ステップA3で特定したメッセージログのコピーを生成しておけばよい(このメッセージログのコピーは、メッセージシーケンスIDが付加されていない状態とする。)。そして、ステップA4やA9では、同一の関連メッセージIDを有するメッセージログのうち1つのみを特定すればよい。そのような処理により、メッセージシーケンスが分岐しても、同一のメッセージログを起点として途中のアプリケーションサービスで分岐するメッセージログに対して別個のメッセージシーケンスIDを付加することができる。例えば、図4に示す例において、メッセージi,jと連なるメッセージシーケンス、メッセージi,kと連なるメッセージシーケンス、メッセージi,lと連なるメッセージシーケンスに対し、それぞれ別個のメッセージシーケンスIDを付加することができる。
同様に、メッセージシーケンスが集約する場合であっても、集約される各メッセージシーケンスに対して異なるメッセージシーケンスIDが付加される。既に説明したように、あるメッセージが複数のメッセージから集約されている場合、メッセージログ取得手段102は、関連メッセージの情報がそれぞれ異なるが他の情報は同一になるようにして、集約されたメッセージのメッセージログを複数作成する。従って、ステップA6では、集約される各メッセージのメッセージログ毎にそれぞれ個別に集約後のメッセージログを特定して、集約後の各メッセージログ(関連メッセージIDのみが異なる各メッセージログ)それぞれに対して、異なるメッセージシーケンスIDを付加することができる。以上のような処理によって、図4に例示するような、メッセージi,j,mと連なるメッセージシーケンス、メッセージi,k,mと連なるメッセージシーケンス、およびメッセージi,l,mと連なるメッセージシーケンスそれぞれに異なるメッセージシーケンスIDを付加することができる。
メッセージシーケンス導出手段107が、メッセージシーケンスIDを付加したメッセージログの集合をメッセージシーケンス集合としてメッセージシーケンス記憶手段112に記憶させた後、シーケンスタイプ導出手段108は、メッセージシーケンスを分類する処理を実行する。
図11は、シーケンスタイプ導出手段108によるメッセージシーケンスの分類処理を示すフローチャートである。シーケンスタイプ導出手段108は、メッセージシーケンス記憶装置112からメッセージシーケンス集合を読み出す(ステップB1)。
メッセージは、メッセージのインタフェースによりアプリケーションサービス提供装置100に入力される。従って、図12に示すように、メッセージシーケンスは、メッセージが入力されたアプリケーションサービス提供装置100のインタフェースを経由する。シーケンスタイプ導出手段108は、メッセージシーケンスが経由するアプリケーションサービス提供装置100のインタフェースの組み合わせ(連なり)を導出し、その組み合わせ毎にメッセージシーケンスを分類する。そして、シーケンスタイプ導出手段108は、分類(シーケンスタイプ)毎にメッセージシーケンスの部分集合を作成する(ステップB2)。なお、メッセージシーケンスが同一のアプリケーションサービス提供装置100を経由していても、メッセージが入力されるインタフェースが異なっていれば、シーケンスタイプ導出手段108は、シーケンスタイプが異なるものとして分類する。
ステップB2に続いて、シーケンスタイプ導出手段108は、1つのシーケンスタイプを選択し、そのシーケンスタイプのメッセージシーケンスを取得する。そして、シーケンスタイプ導出手段108は、そのシーケンスタイプのメッセージシーケンスの経路情報(シーケンスタイプ構造)を記述する(ステップB3)。図13は、シーケンスタイプ構造のデータ構造の例を示す説明図である。シーケンスタイプ構造は、1つのシーケンスタイプに属するメッセージシーケンスが経由する各アプリケーションサービスの情報を含む。具体的には、アプリケーションサービスの情報として、例えば、アプリケーションサービスID、アプリケーションサービス名、メッセージが入力されるインタフェースのID(インタフェースID)、およびそのインタフェース名を含む。また、シーケンスタイプ構造は、経路情報として、そのシーケンスタイプに属するメッセージシーケンスを構成する各メッセージの送信元および送信先の情報を含む。シーケンスタイプ導出手段108は、ステップB3において、選択したシーケンスタイプのシーケンスタイプ構造を、図13に例示するようなデータ構造に従って生成する。
図4で示したように、メッセージシーケンス内ではメッセージの分岐や集約がありうる。シーケンスタイプ導出手段108は、選択したメッセージシーケンスが経由している各インタフェース毎に、分岐・集約確率分布関数Φ(x)を導出する(ステップB4)。分岐・集約確率分布関数は、あるアプリケーションサービスのインタフェースにメッセージが入力されて処理が行われた場合における分岐または集約により出力されるメッセージ数と、その数のメッセージが出力される確率との関係を表す関数である。シーケンスタイプ導出手段108は、例えば、予め記憶装置(図示せず。)に、ステップB4で導出される候補となる複数種類の分岐・集約確率分布関数を記憶しておく。このとき、正規分布、指数分布、ポアソン分布等の各種分布に応じた分布関数を分岐・集約確率分布関数として予め記憶しておけばよい。シーケンスタイプ導出手段108は、選択したメッセージシーケンスが経由している各インタフェース毎に、入力されたメッセージに基づく処理後の出力メッセージ数の分布が正規分布、指数分布、ポアソン分布等の各種分布のいずれに該当するのかを判定する。そして、判定した分布に応じた分布関数(分岐・集約確率分布関数Φ(x))を予め記憶していた関数の中から選択することにより、分岐・集約確率分布関数Φ(x)を導出する。なお、シーケンスタイプ導出手段108は、他の方法で分岐・集約確率分布関数Φ(x)を導出してもよい。ステップB4において、シーケンスタイプ導出手段108は、図14に示すように、メッセージシーケンスが経由している各インタフェース毎に分岐・集約確率分布関数を導出する。
また、シーケンスタイプ導出手段108は、ステップB4において、導出した分岐・集約確率分布関数の情報をシーケンスタイプ構造に追加する。分岐・集約確率分布関数の情報は、図15に示すように、メッセージシーケンスを構成する各メッセージの送信元および送信先とともに経路情報として含める。
シーケンスタイプ導出手段108は、全ての分類に対してステップB3,B4の処理を完了するまで、各シーケンスタイプを選択してステップB3,B4の処理(シーケンスタイプ構造作成ループ)を繰り返す。すなわち、シーケンスタイプ毎に、ステップB3,B4の処理を繰り返し、分岐・集約確率分布関数が追加されたシーケンスタイプ構造をシーケンスタイプ毎に作成する。シーケンスタイプ導出手段108は、全ての分類に対してステップB3,B4の処理を完了したならば、インタフェース毎に導出した分岐・集約確率分布関数を追加したシーケンスタイプ構造をシーケンスタイプ記憶装置113に記憶させる(ステップB5)。さらに、シーケンスタイプ導出手段108は、ステップB5において、シーケンスタイプログを生成して、シーケンスタイプログもシーケンスタイプ記憶装置113に記憶させる。図16は、シーケンスタイプログのデータ構造の例を示す説明図である。図16に示すように、シーケンスタイプログのデータ構造は、図10に示すテーブル(メッセージシーケンスIDが付加されたメッセージログのデータ構造)にシーケンスタイプの識別子(シーケンスタイプID)を追加したデータ構造になる。すなわち、シーケンスタイプログには、メッセージID、送信元アプリケーションサービスID、アプリケーションサービスID、関連メッセージID、利用インタフェース、メッセージ内容、受信時刻、新メッセージ送信時刻、メッセージシーケンスID、およびシーケンスタイプIDが含まれる。
シーケンスタイプ導出手段108が、シーケンスタイプ構造とシーケンスタイプログをシーケンスタイプ記憶装置113に記憶させた後、シーケンス処理時間計算式導出手段109は、アプリケーションサービスの処理時間の計算式(シーケンス処理時間計算式)を導出する。シーケンス処理時間計算式導出手段109は、各シーケンスタイプにおけるサービス(アプリケーションサービス提供装置100)のインタフェース毎にシーケンス処理時間計算式を導出する。
図17は、シーケンス処理時間計算式の導出処理を示すフローチャートである。シーケンス処理時間計算式導出手段109は、シーケンスタイプ記憶装置113よりシーケンスタイプログとシーケンスタイプ構造を読み出す(ステップC1)。そして、各シーケンスタイプのメッセージシーケンスがアプリケーションサービス(アプリケーションサービス提供装置100)にて処理される際の処理時間とメッセージ多重度の組を算出する(ステップC2)。このとき、シーケンス処理時間計算式導出手段109は、シーケンスタイプログに記述された受信時刻、新メッセージの送信時刻をそれぞれ処理開始時刻、処理終了時刻とみなし、両時刻の差をアプリケーションサービスの処理時間として算出すればよい。また、シーケンス処理時間計算式導出手段109は、各メッセージシーケンスが経由したアプリケーションサービス毎に処理時間を算出する。また、シーケンス処理時間計算式導出手段109は、ステップC2において、メッセージシーケンスに属するメッセージ毎、かつ、メッセージタイプ毎にメッセージ多重度を計算する。メッセージ多重度は、アプリケーションサービス(アプリケーションサービス提供装置)が個々のメッセージを処理した期間におけるそのアプリケーションサービス提供装置が処理を行ったメッセージの多寡を示す指標である。メッセージ多重度は、シーケンスタイプ毎に算出するので、あるメッセージ(Msaとする。)を選択して、Msaに関するメッセージ多重度を求める場合、Msaを含むメッセージシーケンスのシーケンスタイプについてメッセージ多重度を算出し、また、他のシーケンスタイプに属するメッセージシーケンスのメッセージがMsaと同一アプリケーションサービスで処理されていたなら、そのシーケンスタイプについてのメッセージ多重度も算出する。
以下に、メッセージ多重度の算出方法を説明する。シーケンス処理時間計算式導出手段109は、メッセージ多重度算出時に、まず、シーケンスタイプログからメッセージシーケンスを1つ取り出す。次に、シーケンス処理時間計算式導出手段109は、そのメッセージシーケンス内のメッセージを1つ選択する。シーケンス処理時間計算式導出手段109は、各メッセージの処理開始時刻(受信時刻)および処理終了時刻(新メッセージ送信時刻)を参照し、選択したメッセージを処理したアプリケーションサービスにおいて、選択したメッセージと重複した期間に処理中だったメッセージシーケンスを特定する。ここで、同一のメッセージタイプに属するメッセージシーケンスであって、同一アプリケーションサービスで同一の期間に処理されたメッセージの数を多重数と記すことにする。シーケンス処理時間計算式導出手段109は、各多重数毎に、以下の式の値を計算する。
(「多重数nの期間」/「取り出したメッセージシーケンスの処理時間」)×「メッセージシーケンスの多重数n」
ここで、「取り出したメッセージシーケンスの処理時間」とは、具体的には、そのメッセージシーケンスから選択したメッセージの処理時間である。シーケンス処理時間計算式導出手段109は、各多重数毎に上記の式の値を計算し、その和を、選択したメッセージのメッセージ多重度とする。また、他のシーケンスタイプに属するメッセージシーケンスのメッセージが選択したと同一アプリケーションサービスで処理されていたなら、そのシーケンスタイプについてのメッセージ多重度も同様に算出する。以上のメッセージ多重度算出処理を、各メッセージシーケンスの各メッセージ毎に行う。
図18は、メッセージ多重度の計算例を示す説明図である。図18に示すように、アプリケーションサービス(アプリケーションサービス提供装置)WSpを、メッセージシーケンスMSa,MSb,MSzが経由しているものとする。そして、メッセージシーケンスMSa,MSbは同じシーケンスタイプST1に属し、メッセージシーケンスMSzはST1とは異なるシーケンスタイプST2に属しているものとする。図18では、シーケンス処理時間計算式導出手段109がメッセージシーケンスMSaを取り出した場合の例を示している。シーケンス処理時間計算式導出手段109が、メッセージシーケンスMSaから、アプリケーションサービスWSpで処理されるメッセージを選択したとする。この選択したメッセージの処理開始時刻、処理終了時刻をそれぞれa,dとする。また、アプリケーションサービスWSpで処理されるメッセージシーケンスMSb内のメッセージの処理開始時刻をbとする。アプリケーションサービスWSpで処理されるメッセージシーケンスMSz内の処理終了時刻をcとする。この時刻を早い順に並べると、図18に示すように、a,b,c,dの順になる。
シーケンス処理時間計算式導出手段109は、選択したメッセージに着目して、メッセージを処理したアプリケーションサービスにおいて、選択したメッセージと重複した期間に処理中だったメッセージシーケンスを特定する。まず、シーケンスタイプST1に属するメッセージシーケンスMSbを特定し、シーケンスタイプST1についてメッセージ多重度を算出する。シーケンス処理時間計算式導出手段109は、選択したメッセージの処理時間(時刻dと時刻aとの差、すなわち、d−a)における多重数として、「1」,「2」を算出する。多重数1の期間は「b−a」であり、多重数2の期間は「d−b」である。なおここでは、シーケンスタイプST1についてメッセージ多重度を算出しているので、シーケンス処理時間計算式導出手段109は、MSzを多重数としてカウントしない。シーケンス処理時間計算式導出手段109は、多重数1,2それぞれについて、以下の式の値を計算し、その和を多重度とする。
(「多重数nの期間」/「MSaの処理時間」)×「メッセージシーケンスの多重数n」
よって、選択したメッセージのシーケンスタイプST1に関するメッセージ多重度は、((b−a)/(d−a))×1+((d−b)/(d−a))×2となる。
同様に、選択したメッセージのシーケンスタイプST2に関するメッセージ多重度は、((c−a)/(d−a))×1となる。なお、シーケンスタイプST2に関するメッセージ多重度を算出する場合には、シーケンス処理時間計算式導出手段109は、MSa,MSbを多重数としてカウントしない。
ステップC2のループ処理(メッセージ多重度算出ループ)は、各メッセージシーケンスの各メッセージ毎のメッセージ多重度の算出が完了するまで繰り返す。各メッセージシーケンスの各メッセージ毎にメッセージ多重度を算出したならば(メッセージ多重度算出ループが完了したならば)、シーケンス処理時間計算式導出手段109は、多重度テーブルに、メッセージID、シーケンスID(メッセージシーケンスID)、アプリケーションサービスID、利用インタフェース、処理時間、メッセージ多重度を格納する(ステップC3)。多重度テーブルは、処理時間とメッセージ多重度との対応を示す。図19は、多重度テーブルの構造の例を示す説明図である。図19に示すように、多重度テーブルには、上記のメッセージID等の各情報が格納される。シーケンス処理時間計算式導出手段109は、メッセージ多重度等を多重度テーブルに格納する処理を、個々のメッセージシーケンス内の全てのメッセージに対して行い、全てのメッセージシーケンスに対して繰り返す。
メッセージ多重度等を多重度テーブルに格納する処理(ステップC3)の後、シーケンス処理時間計算式導出手段109は、シーケンス処理時間計算式を導出し(ステップC4)、導出したシーケンス処理時間計算式をシーケンスタイプ構造に追加する(ステップC5)処理を行う。ステップC5において、シーケンス処理時間計算式導出手段109は、図20に示すように、メッセージシーケンスを構成する各メッセージの送信元および送信先や分岐・集約確率分布関数とともにシーケンス処理時間計算式を経路情報として追加する。時間計算式導出手段109は、シーケンス処理時間計算式導出(ステップC4)およびシーケンスタイプ構造への追加(ステップC5)の処理(シーケンス処理時間計算式導出ループ)を、各メッセージシーケンスが経由している各インタフェース毎に繰り返し行う。
以下、シーケンス処理時間計算式について説明する。入力されたメッセージの処理時間(Fと表すことにする。)と、メッセージ多重度(λと表すことにする。)との間には正の相関関係がある。従って、F=f(λ)という関係を定義することにより、メッセージ多重度λを基に処理時間Fを算出することができる。F=f(λ)という関係式は、多重度テーブルの情報に対して、統計的手法の重回帰分析を適用することにより導出することができる。重回帰分析は、ある変数(目的変数)と、目的変数に影響する変数(説明変数)の間の関係式を求めるための分析手法である。重回帰分析による関係式の導出は公知であるので、公知の重回帰分析による関係式の導出方法に従って、F=f(λ)を導出すればよい。本例では、処理時間Fが目的変数に相当し、メッセージ多重度λが説明変数に相当する。
重回帰分析により、例えば、シーケンスタイプST1のメッセージシーケンスがアプリケーションサービスWS2にて処理される際の処理時間(FWS2_s1とする。)を以下のようなシーケンス処理時間計算式として導出することができる。
FWS2_s1=fWS2_s1(λs1,λs2,λs3)=Dλs1+Eλs2+Fλs3+p
ただし、上記式において、λs1,λs2,λs3は、シーケンスタイプ毎のメッセージ多重度である。また、上記式におけるD,E,F,pは、統計的手法によって導出された係数と定数である。
なお、以上の説明では、統計的手法として重回帰分析を適用してメッセージ多重度λから処理時間Fを求めるシーケンス処理時間計算式を導出するものとして説明した。メッセージ多重度λから処理時間Fを求めるシーケンス処理時間計算式を導出する方法は、重回帰分析を適用する方法に限定されず、他の方法で導出してもよい。例えば、ニューラルネットワークを適用してシーケンス処理時間計算式を導出してもよい。ニューラルネットワークを適用して関係式を求める方法も公知である。
時間計算式導出手段109は、各メッセージシーケンスが経由している各インタフェース毎にステップC4,C5を繰り返し、シーケンス処理時間計算式導出およびシーケンスタイプ構造への追加を完了したならば、シーケンス処理時間計算式導出が追加されたシーケンスタイプ構造をシーケンスタイプ構造記憶装置114に記憶させる(ステップC6)。
続いて、動作モデル導出手段110が、動作モデル導出処理を実行する。図21は、動作モデル導出処理を示すフローチャートである。動作モデルを導出する際、動作モデル導出手段110は、シーケンスタイプ構造記憶装置114から、ステップC6で記憶されたシーケンスタイプ構造の集合を読み出す(ステップD1)。
次に、動作モデル導出手段110は、ステップD1で読み出した各シーケンスタイプ構造の情報に基づいて、動作モデルを導出する(ステップD2)。図22は、動作モデルのデータ構造の例を示す説明図である。動作モデルは、シーケンスタイプ構造と同様に、例えば、アプリケーションサービスID、アプリケーションサービス名、インタフェースID、インタフェース名を含むアプリケーションサービス情報を含む。また、動作モデルは、各シーケンスタイプ毎の経路情報の集合を含む。この経路情報は、送信元、送信先、分岐・集約確率分布関数を含む。動作モデルは、初期状態では、具体的なアプリケーションサービス情報や各シーケンスタイプ毎の経路情報の集合を有していない。動作モデル導出手段110は、読み出した各シーケンスタイプ構造をそれぞれ選択し、選択したシーケンスタイプ構造に含まれる各アプリケーションサービス情報(アプリケーションサービスID、アプリケーションサービス名、インタフェースID、インタフェース名)を動作モデルに追加し、選択したシーケンスタイプ構造に含まれる経路情報の集合を動作モデルに追加する処理(ステップD2)を繰り返し、動作モデルを導出する。動作モデル導出手段110は、全てのシーケンスタイプ構造について動作モデルへの情報追加が完了したならばステップD2の繰り返し処理(動作モデル作成ループ)を終了する。ただし、選択したシーケンスタイプ構造に含まれるアプリケーションサービス情報が、既に動作モデルに追加されている場合には、そのアプリケーションサービス情報の追加は行わない。従って、動作モデル内に、同一のアプリケーション情報が重複して記述されることはない。
各シーケンスタイプ構造に含まれる情報に基づいて動作モデルを作成した後、動作モデル導出手段110は、動作モデルを動作モデル記憶装置115に記憶させる(ステップD3)。
図23は、動作モデルをグラフとして示した模式図である。図23に例示したグラフでは、アプリケーションサービス(アプリケーションサービス提供装置100)を矩形で示し、アプリケーションサービスのインタフェースを丸で示している。また、矩形と丸を経由する曲線はシーケンスタイプの経路を示している。
次に、ビジネスプロセスシミュレート装置の動作について説明する。図24は、ビジネスプロセスシミュレート装置の動作を示すフローチャートである。ビジネスプロセスシミュレート装置116の動作モデル読み出し手段117(図5参照。)は、動作モデル記憶装置115から動作モデルを読み出し、パラメータ設定手段118に渡す(ステップE1)。パラメータ設定手段118は、入力装置124を介してメッセージシーケンス到着間隔を入力される(ステップE2)。ステップE2において、パラメータ設定手段118は、シーケンスタイプ毎にメッセージシーケンス到着間隔を入力される。すなわち、各シーケンスタイプ毎のメッセージシーケンス到着間隔の入力が完了するまで、ステップE2のループ(到着間隔設定ループ)が繰り返される。ここで、メッセージシーケンス到着時間間隔は、メッセージシーケンスに含まれるメッセージのうち、最初のメッセージが、そのメッセージを処理するアプリケーションサービス提供装置100に仮想的に到着するものと仮定した場合における到着間隔の設定値である。また、ステップE2において、パラメータ設定手段118は、入力されたメッセージシーケンス到着時間間隔と動作モデル読み出し手段117から渡された動作モデルとを動作モデル実行手段119に渡す。
動作モデル実行手段119は、動作モデルおよび各シーケンスタイプ毎のメッセージシーケンス到着時間間隔とに基づいて、管理対象システムのビジネスプロセス動作を模擬実行する(ステップE3)。既に説明したように、この模擬実行では、各アプリケーションサービス提供装置100に各シーケンスタイプのメッセージシーケンスに属するメッセージが入力された場合の各メッセージに対する処理開始時刻(メッセージ受信時刻)および処理終了時刻(新メッセージ送信時刻)を模擬的に算出する。
図25は、ビジネスプロセス動作の模擬実行処理(ステップE3の処理)の詳細を示すフローチャートである。動作モデル実行手段119は、模擬的な動作として、各アプリケーションサービス提供装置にメッセージが入力されたと判定した場合に、ステップE4以降の処理を実行し、そのメッセージが入力された時刻(模擬的な受信時刻)およびそのメッセージに応じた処理の終了時刻(模擬的な新メッセージ受信時刻)を算出する。例えば、模擬実行処理開始後に、最初のメッセージが、そのメッセージを処理する最上流のアプリケーションサービス提供装置100に仮想的に到着したと判定した場合、模擬的にそのメッセージの受信時刻を定め、ステップE4以降の処理を実行してそのメッセージに応じた処理の終了時刻(新メッセージ送信時刻)を計算する。そして、その新メッセージ送信時刻に新メッセージが次のアプリケーションサービス提供装置100に到着した(受信された)と判定し、ステップE4以降の処理を実行してそのメッセージに応じた処理の終了時刻(次の新メッセージ送信時刻)を計算する。この処理を繰り返し、各メッセージの処理開始時刻および処理終了時刻をそれぞれ計算する。また、最上流のアプリケーションサービス提供装置100では、各シーケンスタイプのメッセージシーケンス到着時間間隔毎に、各シーケンスタイプに属するメッセージシーケンスの最初のメッセージが到着するものとして、新たにメッセージが到着したと判定した場合に、ステップE4以降の処理を行う。この場合にも、新メッセージ送信時刻に、次のアプリケーションサービス提供装置100に新メッセージが入力されたと判定し、その新メッセージに応じた処理開始時刻や処理終了時刻を定めていくことを繰り返す。
メッセージシーケンス到着時間間隔毎に最上流のアプリケーションサービス提供装置100にメッセージが受信されたと判定し、そのメッセージについて動作モデル実行手段119は、ステップE4以降の処理を実行する。また、このとき、既に下流(処理順序が後)のプリケーションサービス提供装置100にもメッセージが到着していると判定して、そのメッセージについてもステップE4以降の処理を実行する。従って、動作モデル実行手段119は、ステップE4以降の処理を並列に実行することになる。
以下、あるメッセージがアプリケーションサービス提供装置100に到着したと判定される場合における動作モデル実行手段119の処理を図25を参照して説明する。動作モデル実行手段119は、あるアプリケーションサービス提供装置100が新メッセージを送信する新メッセージ送信時刻を算出した場合、その新メッセージ送信時刻を受信時刻として、そのメッセージが次のアプリケーションサービス提供装置100に到着したと判定する(ステップE4)。なお、最上流のアプリケーションサービス提供装置100に関しては、最初に定めたメッセージ受信時刻以降メッセージシーケンス到着時間間隔毎に、メッセージが到着したと判定する(ステップE4)。既に述べたように、動作モデル実行手段119は、これらのステップE4以降の処理をそれぞれ並列に実行する。
メッセージがアプリケーションサービス提供装置100に到着した(受信された)と判定した後(ステップE4の後)、動作モデル実行手段119は、パラメータ設定手段118から渡された動作モデルの中から、到着したと判定したメッセージが入力されるアプリケーションサービスに対応するシーケンス処理時間計算式を抽出する(ステップE5)。このとき、そのメッセージを含むメッセージシーケンスのシーケンスタイプとして記述された経路情報の集合(図22参照。)の中から、そのメッセージが入力されるアプリケーションサービスに対応するシーケンス処理時間計算式を抽出すればよい。
次に、動作モデル実行手段119は、ステップE4においてアプリケーションサービス提供装置に到着したと判定されたメッセージの処理開始時刻に、そのアプリケーションサービス提供装置によって処理中であると判断されるメッセージシーケンスの数をシーケンスタイプ毎にカウントし、そのカウント値を各シーケンスタイプのメッセージ多重度とする(ステップE6)。このとき、新たに到着したと判定されたメッセージもカウント対象に含める。
次に、動作モデル実行手段119は、ステップE6で求めた多重度が不変であるものとして、ステップE4においてアプリケーションサービス提供装置に到着したと判定されたメッセージに応じた処理の処理時間を算出する(ステップE7)。この処理時間は、ステップE5で抽出したシーケンス処理時間計算式に、ステップE6で求めたメッセージ多重度を代入することによって算出すればよい。ステップE7で求めた処理時間を、処理時間初期値と記すことにする。図26は、処理時間初期値を示す説明図である。図26に示すように、ステップE4において到着したと判定されたメッセージM0(シーケンスタイプST0に属するものとする。)の処理開始時刻t0において、シーケンスタイプST1のメッセージシーケンスのメッセージM1が処理中であったとする。メッセージM1の処理開始時刻は、メッセージM0の処理開始時刻よりも早い時刻として算出されているとする。また、メッセージM1の処理終了時刻は、メッセージM0の処理時間初期値における処理終了時刻よりも早い時刻として算出されているものとする。この場合、動作モデル実行手段119は、ステップE6でシーケンスタイプST0,ST1の多重度がそれぞれ1であると判定する。そして、動作モデル実行手段119は、ステップE7で、この多重度が変化しないことを前提にして(M0の処理終了時までM1の処理が続くものとして)メッセージM0の処理時間を算出する。しかし、実際には、例えば、図26に示す時刻t1でM1の処理は終了し、M0の処理はステップE7で求めた処理時間とは異なることになる。そして、後述するステップE8〜E11でM0の処理時間を算出し直す処理を繰り返す。そこで、ステップE7で求めた処理時間を、便宜的に処理時間初期値と記す。
動作モデル実行手段119は、処理時間初期値の期間内で、他のメッセージシーケンスの処理が開始されたり、他のメッセージシーケンスの処理が終了して、各シーケンスタイプの多重度が変化したかを判定する(ステップE8)。動作モデル実行手段119は、メッセージがアプリケーションサービス提供装置に到着したと判定する度に、ステップE4以降の処理を並列に実行する。よって、並列に実行している他のメッセージに関する処理の進行状況を確認することにより、新たなメッセージの処理が開始され多重度が増加したのか、他のメッセージの終了時刻が確定し多重度が減少したのかを確認することができる。
多重度の変化があった場合、動作モデル実行手段119は、ステップE4においてアプリケーションサービス提供装置に到着したと判定されたメッセージの処理開始時刻(図26の例では時刻t0)から、多重度が変化した時刻までの経過時間を求める(ステップE9)。続いて、動作モデル実行手段119は、変化後の多重度が不変であると仮定して、再度、メッセージの処理時間を算出する(ステップE10)。この処理時間は、ステップE5で抽出したシーケンス処理時間計算式に、変化後のメッセージ多重度を代入することによって算出すればよい。
続いて、動作モデル実行手段119は、部分処理時間を計算する(ステップE11)。部分処理時間は、多重度が変更した時刻(模擬動作における時刻)からメッセージの処理終了時刻までの時間である。図26に示す例において、例えば、メッセージの処理開始時刻t0から多重度変化時刻t1までの時間が処理時間初期値の70%であったとする。すると、多重度変化時刻までに処理の70%が完了しているとみなすことができる。よって、部分処理時間は、ステップE10で再計算した時間の30%であるとみなすことができる。よって、部分処理時間の算出式は、以下のように一般化することができる。
「部分処理時間」=「再計算した処理時間」×(1−(「既に経過した時間」/「元の処理時間」))
部分処理時間を計算したならば、動作モデル実行手段119は、部分処理時間が経過する間に多重度が変化するか否かを判定する(ステップE8)。
部分処理時間が経過する間に、再度、多重度が変化するならば、動作モデル実行手段119は、ステップE9以降の処理を繰り返す。すなわち、アプリケーションサービス提供装置に到着したと判定されたメッセージの処理開始時刻(図26の例では時刻t0)から、その多重度変化時刻までの経過時間を求め(ステップE9)、変化後の多重度が不変であると仮定して、メッセージの処理時間を再度算出する(ステップE10)。そして、上記の「部分処理時間」の算出式を用いて、部分処理時間を算出する(ステップE11)。
なお、上記の「部分処理時間」の算出式における「再計算した処理時間」は、ステップE10で求めた処理時間であり、「既に経過した時間」は、ステップE9で求めた経過時間である。また、最初にステップE11に移行した場合には、「部分処理時間」の算出式における「元の処理時間」として、処理時間初期値を用いる。ステップE11への移行が2回目以降である場合には、前回のループのステップE10で再計算した処理時間を「元の処理時間」とすればよい。また、ステップE11への移行が2回目以降である場合には、「既に経過した時間」は、以下のように計算すればよい。
「既に経過した時間」=「前回のループのステップE10で再計算した処理時間」−「前回のループのステップE11で計算した部分処理時間」+「前回の多重度変化時刻から新たな多重度変化時刻までの時間」
ここで、「前回のループのステップE10で再計算した処理時間」−「前回のループのステップE11で計算した部分処理時間」は、処理開始時刻から前回の多重度変化時刻(模擬動作上の時刻)までの経過時間を意味する。その経過時間に、「前回の多重度変化時刻から新たな多重度変化時刻までの時間」を加算することによって、処理開始時刻から新たな多重度変化時刻までの経過時間、すなわち「既に経過した時間」を求めることができる。例えば、「前回のループのステップE10で再計算した処理時間」が20秒であり、前回のループのステップE11で計算した部分処理時間」が8秒であったとする。この場合、20秒−8秒=12秒が、処理開始時刻から前回の多重度変化時刻までの時間である。また、「前回の多重度変化時刻から新たな多重度変化時刻までの時間」が4秒であったとすると、処理開始時刻から新たな多重度変化時刻までの時間(すなわち、「既に経過した時間」)は、12秒+4秒=16秒となる。よって、全体の“16/20(この20は、前回のループのステップE10で再計算した処理時間である)”だけ、処理が進んだことになる。従って、本例では、「再計算した処理時間」に(1−16/20)を乗じることによって、部分処理時間を算出できる。例えば、「再計算した処理時間」が30秒であるとすると、部分処理時間は、30×(1−16/20)=6秒と算出することができる。
部分処理時間が経過するまでの間に多重度が変化しなければ、動作モデル実行手段119は、ステップE8以降のループ(処理時間算出ループ)を終了し、部分処理時間の終了時刻を、ステップE4においてアプリケーションサービス提供装置に到着したと判定されたメッセージの処理終了時刻(新メッセージ送信時刻)とする。
また、ステップE10で再計算した処理時間が、ステップE9で計算した経過時間よりも短い場合が生じ得る。この場合、動作モデル実行手段119は、直前の多重度変化時刻を処理終了時刻(新メッセージ送信時刻)とする。
ステップE4においてアプリケーションサービス提供装置に到着したと判定されたメッセージの処理終了時刻が確定した後、動作モデル実行手段119は、処理終了時に分岐または集約によって送信されるメッセージ(新メッセージ)数を計算する(ステップE12)。ステップE12において、動作モデル実行手段119は、まず、ステップE4においてアプリケーションサービス提供装置に到着したと判定されたメッセージのシーケンスタイプを判定し、動作モデルから、そのシーケンスタイプに対応した分岐・集約確率分布関数(Φws1_s1(x)とする。)を読み出す。分岐・集約確率分布関数Φws1_s1(x)において、xは、分岐・集約数(分岐または集約により出力されるメッセージ数)を表す変数である。また、Φws1_s1(x)は、xだけメッセージが出力される確率を表す。以下の説明では、Φws1_s1(x)が、1−e−xという指数関数である場合を例に説明する。すなわち、Φws1_s1(x)=1−e−x=uであるものとして説明する。
動作モデル実行手段119は、Φws1_s1(x)を読み出したならば、Φws1_s1(x)=1−e−x=uの逆関数を導出する。本例では、分岐・集約確率分布関数Φws1_s1(x)の逆関数は、x=−log(1−u)である。ここで、“u”も“1−u”も一様乱数であるため、x=−log(u)とする。
動作モデル実行手段119は、例えば、非特許文献1に記載されている“メルセンヌ ツイスター(Mersenne Twister)法”等を用いた乱数発生器(図示せず。)により、乱数を発生させる。動作モデル実行手段119は、その乱数をx=−log(u)におけるuに代入してxを計算し、このxに基づいて分岐・集約数を求める。
xの値が1以上の場合、動作モデル実行手段119は、小数点以下を切り上げて整数とし、その整数だけメッセージを出力したものとする。切り上げた整数が2以上であれば、メッセージが分岐したことになる。
xの値が1未満の場合、1つのメッセージが出力される確率がxであるとして、動作モデル実行手段119は、1つのメッセージが出力されることになるか否かを判定する。例えば、動作モデル実行手段119は、乱数発生器(図示せず。)を用いて0以上1未満の乱数aを発生させる。そして、x≧aならば1つのメッセージが出力されると判定する。x<aならばメッセージが出力されないと判定する。実際の分散アプリケーションシステムにおいてメッセージが収束する場合、複数のメッセージが入力されて、その数よりも少ないメッセージ数が出力される。しかし、動作モデル実行手段119による模擬動作では、アプリケーションサービスに到着したと判定された個々のメッセージについてそれぞれステップE4以降の動作を行う。そのため、個々のメッセージそれぞれが、1つのメッセージを出力するか、あるいはメッセージを出力しないかを確率的に判定することにより、メッセージ数の減少(すなわち集約)を模擬している。
ステップE12で1つ以上のメッセージが出力されると判定した場合、ステップE13に移行する。ステップE13では、新たに出力されると判定されたメッセージの数だけ、新規にステップE4以降の動作を開始する。そして、動作モデル実行手段119は、模擬実行ログをシミュレート結果取得手段120(図5参照。)に渡す。シミュレート結果取得手段120は、模擬実行ログをシミュレート結果記憶装置122に記憶させるとともに、出力装置123に模擬実行ログを出力させる。
ステップE12でメッセージが出力されないと判定した場合、動作モデル実行手段119は、ステップE13に移行せず、ステップE14に移行する。すなわち、メッセージ出力がないので新規にステップE4以降の動作を開始せず、模擬実行ログをシミュレート結果取得手段120に渡す。シミュレート結果取得手段120は、模擬実行ログをシミュレート結果記憶装置122に記憶させるとともに、出力装置123に模擬実行ログを出力させる。
図27は、模擬実行ログのデータ構造の例を示す説明図である。図27に示すように、模擬実行ログには、メッセージシーケンスID、シーケンスタイプID、送信元アプリケーションサービスID、アプリケーションサービスID、利用インタフェース、受信時刻、新メッセージ送信時刻が含まれる。オペレータは、出力された模擬実行ログによって、シミュレーションによるビジネスプロセス処理システムの振る舞いを観測することができる。
また、ステップE2で入力するメッセージシーケンス到着間隔を変更して、再度模擬動作を実行させることにより、メッセージシーケンス到着間隔変更後の動作状態も観測することができる。よって、実際のビジネスプロセス処理システムにおいてメッセージシーケンス到着間隔が変更された場合の動作状態を予測することができる。また、メッセージシーケンス到着間隔を一定の定めたまま模擬動作を実行するのではなく、メッセージシーケンス到着間隔を確率分布などによって変化させたり、メッセージシーケンス到着間隔が突発的に変化するようなメッセージシーケンス到着間隔の設定をパラメータ設定手段118が行ってもよい。
また、ビジネスプロセスシミュレート装置116が、図6に示す構成の様に過負荷判定手段121を備えた構成である場合、過負荷判定手段121によってシーケンス処理時間計算式毎にビジネスプロセス処理システムの診断情報(安定状態または過負荷状態の判断材料となる情報)をオペレータに提供することができる。以下、過負荷判定手段121がこのような情報をオペレータに提供する動作について説明する。
図28は、過負荷判定手段121の動作を示すフローチャートである。シミュレート結果取得手段120は、動作モデル実行手段119から模擬実行ログを渡されると、その模擬実行ログを過負荷判定手段121に渡す。過負荷判定手段121は、模擬実行ログが入力される度に、模擬実行ログを、各シーケンスタイプのシーケンス処理時間計算式毎に分類した上で、図28に示すステップF1〜F3(またはステップF1〜F4)の処理を実行する。シーケンス処理時間計算式は、各シーケンスタイプにおける各サービスのインタフェース毎に導出されているので、共通のシーケンスタイプID、アプリケーションサービスID、インタフェースIDを有する模擬実行ログ毎に分類した上で、ステップF1〜F3(またはステップF1〜F4)の処理を実行すればよい。
過負荷判定処理手段121は、動作モデル実行手段119からシミュレート結果取得手段120を介して模擬実行ログを受け取ると、受信時刻および新メッセージ送信時刻の差を算出することにより、模擬的に求められたメッセージの処理時間を算出する(ステップF1)。また、過負荷判定処理手段121は、例えば、同一のシーケンス処理時間計算式に対応する取得済みの模擬実行ログおよび新たに取得した模擬実行ログの受信時刻の情報から、アプリケーションサービスに対するメッセージシーケンスの平均到着頻度を求める(ステップF2)。そして、過負荷判定処理手段121は、これまでの平均到着頻度が一定(あるいは、これまでの平均到着頻度の変化が所定の範囲内)であって、処理時間が所定値以上増加しているか否かを判定する(ステップF3)。これまでの平均到着頻度が一定(あるいは、これまでの平均到着頻度の変化が所定の範囲内)であって、処理時間が所定値以上増加しているならば、過負荷判定手段121は、入力された模擬実行ログに対応する過負荷判定フラグをオンに設定する。過負荷判定フラグは、オンが連続的に設定されることにより過負荷状態であることを示すフラグである。過負荷判定フラグをオンに設定した後、次の模擬実行ログが入力されたときに、ステップF1以降の処理(過負荷判定ループ)を繰り返す。これまでの平均到着頻度が一定(あるいは、これまでの平均到着頻度の変化が所定の範囲内)であって、処理時間が所定値以上増加していないならば、次の模擬実行ログが入力されたときに、ステップF1以降の処理(過負荷判定ループ)を繰り返す。
図29は、処理時間の増加を示す説明図である。例えばアプリケーションサービスWS1において、時刻t0に処理を開始したメッセージシーケンスms0(シーケンスタイプs0に属する)の処理時間がFws0_ms0であるとする。また、時刻t1に処理を開始したメッセージシーケンスms1(シーケンスタイプs1に属する)の処理時間がFws1_ms1であるとする。t0−t1間の平均到着頻度がδs1_ws1で一定の場合において、図29に示すように、処理時間がFws0_ms0からFws1_ms1まで増加したとする。平均到着頻度が一定であるにも関わらず、時間経過とともに処理時間が増加しているので、このような場合、過負荷判定手段121は、過負荷判定フラグをオンに設定する。
動作モデル実行手段119からの模擬実行ログの入力がなくなったならば、過負荷判定手段121は、過負荷判定ループを終了し、過負荷判定ログをシミュレート結果記憶装置122に記憶させる(ステップF5)。あるいは、過負荷判定手段121は、過負荷判定ログを出力装置123に出力(例えば表示出力)してもよい。
図30は、過負荷判定ログのデータ構造の例を示す説明図である。過負荷判定ログは、例えば、図30に示すように、メッセージシーケンスID、シーケンスタイプID、アプリケーションサービスID、利用インタフェース、受信時刻、新メッセージ送信時刻、平均到着頻度、過負荷判定の情報等を含む。「過負荷判定」の情報は、例えば、過負荷判定フラグがオン(TRUE)になっているか否かを示す情報である。なお、過負荷判定ログは、例えば、ステップF1から始まるループ処理を行いながら作成すればよい。
オペレータは、シミュレート結果記憶装置122に記憶された過負荷判定ログまたは出力装置123に表示された過負荷判定ログを参照して、アプリケーションサービス提供装置が過負荷状態になるか否かを判断することができる。オペレータは、過負荷判定フラグが連続的にオンになっているならば過負荷状態であると判断すればよい。また、過負荷フラグが単発的にオンになっている場合には安定状態と判断していよい。過負荷フラグがオンになっていなければ安定状態を示している。
ビジネスプロセスシミュレート装置116が過負荷判定手段121を備えた構成において、シミュレート結果取得手段120は、模擬実行ログをシミュレート結果記憶装置122に記憶させるとともに、出力装置123に模擬実行ログを出力させてもよい。
本発明によれば、シーケンスタイプ導出手段108が、メッセージシーケンス導出手段107によって導出されたメッセージシーケンスをシーケンスタイプ毎に分類する。従って、オペレータは、各シーケンスタイプに分類されるメッセージシーケンスを参照することができ、その結果、管理対象となる分散アプリケーションシステムの振舞いを把握しやすくなる。
また、シーケンス処理時間計算式導出手段109が、シーケンス処理時間計算式を導出する。従って、管理対象システムに含まれるアプリケーションサービス提供装置100における処理時間を計算できるようになる。
また、パラメータ設定手段118が、各シーケンスタイプ毎に、メッセージシーケンス到着間隔を設定し、動作モデル実行手段119が、設定されたメッセージシーケンス到着間隔および動作モデルに基づいて、メッセージの模擬的な送受信時間を計算する。従って、到着間隔が変化した場合において、その変化が管理対象の分散アプリケーションシステムにどのような影響を及ぼすのかを予測できる。
また、過負荷判定手段121は、平均到着頻度が一定、あるいは、平均到着頻度の変化が所定の範囲内であって、処理時間が所定値以上増加している場合に、過負荷判定フラグをオン(TRUE)とし、その情報を出力する。オペレータは、出力された情報を参照して、動作時の性能を保証する負荷範囲を見積もることができる。
なお、本実施の形態の変形例として、ビジネスプロセスシミュレート装置116を備えない構成であってもよい。そのような構成であっても、動作モデルを導出することができる。また、アプリケーションサービス管理装置110が、動作モデル導出手段110を備えない構成であてもよい。そのような構成であっても、シーケンス処理時間計算式を導出することができる。また、アプリケーションサービス管理装置110が、動作モデル導出手段110およびシーケンス処理時間計算式導出109を備えない構成であってもよい。そのような構成であっても、シーケンスタイプを導出することができる。
なお、特許請求の範囲に記載のメッセージ多重度算出手段、処理時間計算式導出手段は、シーケンス処理時間計算式導出手段109によって実現される。模擬実行手段は、動作モデル実行手段119によって実現される。負荷状態判定手段は、過負荷判定手段121によって実現される。
以下、本発明の実施例を示す。本実施例では、電子書籍オンラインショップでの受注・発送業務を行うビジネスプロセス処理システムを例にして説明する。また、ビジネスプロセス処理システムに含まれる各アプリケーションサービス提供装置は、SOAP(Simple Object Access Protocol )等のプロトコルを利用してXML形式のメッセージを送受信するものとする。
図31は、本発明の分散アプリケーションサービス管理システムが管理対象とするビジネスプロセス処理システムの例を示す説明図である。図31に例示するビジネスプロセス処理システムは、5つのアプリケーションサービス提供装置100を備えていて、各アプリケーションサービス提供装置をWS1〜WS5と表すことにする。また、WS1〜WS5に対応する各アプリケーションサービス監視装置101をそれぞれ、Observer1 〜Observer5 として図示している。メッセージログ収集手段106(図3参照。)は、Observer1 〜Observer5 およびメッセージログ記憶装置104(図31において図示せず。)を介して、5台のアプリケーションサービス提供装置WS1〜WS5のメッセージログを収集する。
各アプリケーションサービス提供装置が提供するサービスの名称と、各アプリケーションサービス提供装置のインタフェース名を以下に示す。
・受注サービス(WS1):顧客からの商品発注を受け取る
・setCashOrder 現金発注用インタフェース
・setCreditOrder クレジット発注用インタフェース
・資格審査サービス(WS2):注文内容の確認を行う
・qualify 決済能力確認用インタフェース
・口座管理サービス(WS3):発注の振込みを管理する
・transferCheck 振込み確認用インタフェース
・クレジット決済サービス(WS4):クレジット決済を管理する
・lumpSum 一括払い用インタフェース
・divided 分割払い用インタフェース
・revolving リボルビング払い用インタフェース
・発送サービス(WS5): 商品の発送を管理する
・shipping 商品発送用インタフェース
このビジネスプロセス処理システムは以下のように動作する。WS1はビジネスプロセス処理システムの利用者から、商品情報、利用者情報、決済情報、発送先情報を持つ電子書籍発注メッセージを受け取り、商品の在庫数などを確認する。WS2は、WS1より注文ID、商品情報、利用者情報、決済情報、発送先情報を持つメッセージを受け取り利用者情報、決済情報を基に利用者の支払能力を確認する。WS3は、WS2より注文ID、商品情報、利用者情報、決済情報、発送先情報、支払保証情報を持つメッセージを受け取り、口座への入金を確認する。WS4は、WS2より注文ID、商品情報、利用者情報、決済情報、発送先情報、支払保証情報を持つメッセージを受け取り、クレジットの決済処理を行う。WS5は、WS3またはWS4より注文ID、商品情報、利用者情報、決済情報、発送先情報、支払保証情報、決済証明情報を持つメッセージを受け取り、電子書籍をダウンロードするためのURLや認証用パスワードを持つメッセージを作成し、利用者に対して発送する。経路は、WS2からWS3およびWS4に分岐し、WS4およびWS3からWS5に集約する。
各アプリケーションサービス提供装置100(図31に示す例ではWS1〜WS5)はメッセージによって通信を行う。図32に、WS1からWS2へのメッセージの例を示す。アプリケーションサービス監視装置101のメッセージログ取得手段102は、図32に例示するメッセージ、WS2がこのメッセージを受信した時刻(受信時刻)、およびWS2がWS3に向けた新たなメッセージを送信した時刻(新メッセージ送信時刻)の情報を取得し、メッセージログを作成する。図33に、WS2におけるメッセージログの例を示す。メッセージログ取得手段102は、メッセージに含まれるメッセージID、送信元アプリケーションサービスID、アプリケーションサービスID、関連メッセージID、利用インタフェース、メッセージ内容に、受信時刻、新メッセージ送信時刻の情報を付加して図33に例示するメッセージログを作成する。なお、図33に示すメッセージログのデータ構造は、図8に示すデータ構造と同じである。図31に示すビジネスプロセス処理システムの例では、各Observer1 〜Observer5 が、5つのアプリケーションサービス提供装置100ごとに図33に示すようなメッセージログを作成する。そして、各Observer(アプリケーションサービス監視装置101)のメッセージログ蓄積手段103がメッセージログ記憶装置104(図31において図示せず。図3参照。)にメッセージログを記憶させる。アプリケーションサービス管理装置105のメッセージシーケンス収集手段106(図3参照。)は、各メッセージログ記憶装置104からメッセージログを収集する。
メッセージシーケンス導出手段107(図3参照。)は、WS1のメッセージログのメッセージIDとWS2のメッセージログの関連メッセージIDを基に結合することによりWS1からWS2までのメッセージシーケンスを作成し、図34に示すメッセージシーケンス集合を作成する。この動作は、ステップA3〜A5の動作である。例えば、メッセージID“MSG_WS2_1”のメッセージの関連メッセージIDが“MSG_WS1_1”であるので、メッセージID“MSG_WS1_1”,“MSG_WS2_1”に同一のメッセージシーケンスID“SQ_001”が付加されている(図34参照)。なお、本例における関連メッセージはWS2への入力メッセージを生成する元となったWS1への入力メッセージである。続いて、メッセージシーケンス集合内のWS2のメッセージIDとWS3のメッセージログの関連メッセージIDを結合することにより、WS1からWS3までのメッセージシーケンスを構築する。具体的には、WS2のメッセージIDを関連メッセージIDとするWS3のメッセージログに、WS2のメッセージログに付加済みのメッセージシーケンスIDを付加する。同様に、WS2のメッセージIDとWS4の関連メッセージID, WS3のメッセージIDとWS5の関連メッセージID,WS4のメッセージIDとWS5の関連メッセージIDをそれぞれ結合することにより、ビジネスプロセス処理システム全体のメッセージシーケンスを構築する。この結合順序はビジネスプロセス処理システムの構成順序である。本例においては、100個のメッセージシーケンスが導出されたとする。メッセージシーケンス導出手段107は、図34に例示するメッセージシーケンス集合を、メッセージシーケンス記憶手段112に記憶させる。
シーケンスタイプ導出手段108は、メッセージシーケンス記憶手段112からメッセージシーケンス集合を読み出し、メッセージシーケンスの経由したインタフェースの経路を基にメッセージシーケンスを分類する。本例では、導出された100個のメッセージシーケンスが、以下の3種類のシーケンスタイプのいずれかに属していたとする。
・setCashOrder(WS1)→ qualify(WS2)→ transferCheck(WS3)→ shipping(WS5)
・setCreditOrder(WS1)→ qualify(WS2)→ lumpSum(WS4) →shipping(WS5)
・setCreditOrder(WS1)→ qualify(WS2)→ divided(WS4) →shipping(WS5)
この3種類の経路(シーケンスタイプ)をそれぞれシーケンスタイプ1、シーケンスタイプ2、シーケンスタイプ3とする。シーケンスタイプ導出手段108が、100個のメッセージシーケンスを分類した結果、シーケンスタイプ1,2,3に適合するメッセージシーケンスの数がそれぞれ30個、40個、30個であったとする。
ここでシーケンスタイプ3に適合するメッセージシーケンスについて、WS1への入力メッセージ数とWS2への入力メッセージ数が、1対nの関係になり、また、WS5への入力メッセージ数とWS5からの出力メッセージ数が、m対1の関係になっているとする。これは、1つの発注メッセージ内に複数の発注情報が含まれていて、発注情報を別々に処理した後WS5にて1つの結果メッセージにまとめて送信するためにメッセージの分岐・集約が発生していることを意味する。
また、シーケンスタイプ導出手段108は、シーケンスタイプ1に属する30個のメッセージシーケンスについて、関連メッセージIDとメッセージIDの関連を基にWS2への分岐・集約確率分布関数、WS3への分岐・集約確率分布関数を導出する。シーケンスタイプ導出手段108は、分岐・集約確率分布関数とそのインタフェースの経路を基に図35に示すような、分岐・集約確率分布関数が追加されたシーケンスタイプ構造を作成する。図35に例示するシーケンスタイプ構造では、link要素が経路を示し、dist要素が分岐・集約確率分布関数を示す。ここでは、シーケンスタイプ1に関する分岐・集約確率分布関数の導出を例にして説明したが、シーケンスタイプ導出手段108は、各シーケンスタイプ毎に、図35と同様の分岐・集約確率分布関数が追加されたシーケンスタイプ構造を作成する。シーケンスタイプ導出手段108は、シーケンスタイプ毎に生成したシーケンスタイプ構造をシーケンスタイプ記憶装置113に記憶させる。
また、シーケンスタイプ導出手段108は、図34に例示するメッセージシーケンス集合にシーケンスタイプのID(シーケンスタイプID)を追加したシーケンスタイプログを作成する。図36にシーケンスタイプログの例を示す。同一のメッセージシーケンスIDが付加されたデータの集合が、個々のメッセージシーケンスを示す。シーケンスタイプ導出手段108は、その個々のメッセージシーケンスのデータそれぞれに、メッセージシーケンスが分類されるシーケンスタイプのIDを追加する。シーケンスタイプ導出手段108は、シーケンスタイプログもシーケンスタイプ構造とともにシーケンスタイプ記憶装置113に記憶させる。
続いて、シーケンス処理時間計算式導出手段109は、シーケンスタイプ構造およびシーケンスタイプログをシーケンスタイプ記憶装置113から読み出す。シーケンス処理時間計算式導出手段109は、シーケンスタイプログの受信時刻と新メッセージ送信時刻をそれぞれメッセージ処理の開始時間・終了時間とみなし、その処理時間と重複するメッセージを特定する。シーケンス処理時間計算式導出手段109は、その重複の度合いと重複数を基に、シーケンスタイプごとにメッセージ多重度を算出する。図37は、シーケンスタイプ記憶装置113から読み出したシーケンスタイプログの一部を示す。また、図38は、図37に例示するシーケンスタイプログが示す各メッセージシーケンスのWS2における処理時間の重複状況を示す説明図である。図37および図38に示すように、メッセージシーケンスID“SQ_001”のメッセージ“MSG_WS2_1”が資格審査サービス(WS2)のqualify インタフェースから入力され、そのメッセージの処理が行われている間に、メッセージIDが“MSG_WS2_5”,“MSG_WS2_43”,“MSG_WS2_51”の各メッセージの処理もWS2で行われるとする。また、メッセージシーケンスSQ_001,SQ_004は、シーケンスタイプST_001に属し、メッセージシーケンスSQ_017,SQ_019は、シーケンスタイプST_003に属するものとする。
シーケンス処理時間計算式導出手段109は、シーケンスタイプ毎にメッセージ多重度を計算する。メッセージシーケンスST_001,ST_003それぞれに関し、各多重数毎に、(「多重数nの期間」/「取り出したメッセージシーケンスの処理時間」)×「メッセージシーケンスの多重数n」を計算し、その和をメッセージ多重度とする。
具体的には、シーケンス処理時間計算式導出手段109は、メッセージシーケンスST_001のメッセージ多重度を、以下のように1.864と算出する。
また、シーケンス処理時間計算式導出手段109は、メッセージシーケンスST_003のメッセージ多重度を、以下のように1.136と算出する。
本例では、シーケンスタイプは3種類あるので、シーケンス処理時間計算式導出手段109は、各メッセージIDに対応させて3種類のメッセージ多重度を計算し、3種類のメッセージ多重度と処理時間の情報を含む多重度テーブルを作成する。図39に、多重度テーブルの具体例を示す。
シーケンス処理時間計算式導出手段109は、各シーケンスタイプの多重度を算出した後、例えば重回帰分析(ニューラルネットワークでもよい)を適用することにより、メッセージ多重度と処理時間との関係を示すシーケンス処理時間計算式を導出する。
本例では、シーケンス処理時間計算式導出手段109が、WS2における各シーケンスタイプのシーケンス処理時間計算式として、以下の各式を導出したとする。ただし、WS2におけるシーケンスタイプ1のシーケンス処理時間計算式をFWS2_S1とする。同様に、WS2におけるシーケンスタイプ2のシーケンス処理時間計算式をFWS2_S2とし、WS2におけるシーケンスタイプ3のシーケンス処理時間計算式をFWS2_S3とする。
FWS2_S1=fWS2_S1(λS1,λS2,λS3)=1.3λS1+0.4λS2+0.6λS3
FWS2_S2=fWS2_S2(λS1,λS2,λS3)=0.2λS1+1.4λS2+0.1λS3
FWS2_S3=fWS2_S3(λS1,λS2,λS3)=0.7λS1+0.1λS2+1.6λS3
なお、上記の格式において、λS1,λS2,λS3は、それぞれシーケンスタイプ1,2,3のメッセージ多重度である。
シーケンス処理時間計算式導出手段109は、このように各シーケンスタイプが経由する各インタフェース毎にシーケンス処理時間計算式を全て導出し、シーケンスタイプ構造に追加する。図40は、シーケンス処理時間計算式が追加されたシーケンスタイプ構造の例を示す説明図である。本例では、シーケンスタイプが3種類存在するので、シーケンス処理時間計算式導出手段109は、図40に示すシーケンスタイプ構造と同様のシーケンスタイプ構造を3種類作成し、各シーケンスタイプ構造をシーケンスタイプ構造記憶装置114に記憶させる。
動作モデル導出手段110は、シーケンスタイプ構造記憶装置114からシーケンスタイプ構造を読み出し、シーケンスタイプ構造を組み合わせることにより動作モデルを作成する。動作モデル導出手段110は、インタフェースに関する情報が重複しないように、各シーケンスタイプ構造に含まれる各アプリケーションサービス情報(アプリケーションサービスID、アプリケーションサービス名、インタフェースID、インタフェース名)を動作モデルに含める。また、各シーケンスタイプそれぞれについて、メッセージシーケンスが経由するインタフェース毎の経路情報(送信元、送信先、分岐・集約確率分布関数、シーケンス処理時間計算式)を動作モデルに含める。図41は、このようにして作成された動作モデルの具体例を示す。また、動作モデルをグラフとして模式的に示すと、例えば、図42に示すような模式図で表すことができる。動作モデル導出手段110は、作成した動作モデルを動作モデル記憶装置115に記憶させる。
ビジネスプロセスシミュレート装置116は、動作モデルに基づいて、実際のビジネスプロセス処理の模擬実行を行なう。まず、ビジネスプロセスシミュレート装置116の動作モデル読み出し手段117(図5参照。)は、動作モデル記憶装置115から動作モデルを読み出す。そして、パラメータ設定手段118(図5参照。)は、入力装置124を介して、シーケンスタイプ毎に、メッセージシーケンス到着間隔を入力される。例えば、シーケンスタイプ1,2,3それぞれのメッセージシーケンス到着間隔が、10秒、11秒、12秒等のように入力される。動作モデル実行手段119は、動作モデルおよび入力された各メッセージシーケンス到着間隔に基づいて実際の処理の模擬実行を行う。
動作モデル実行手段119は、アプリケーションサービス提供装置100にメッセージが受信されたと判定した場合、そのメッセージのシーケンスタイプのシーケンス処理時間計算式であって、そのメッセージが入力されるインタフェースに応じたシーケンス処理時間計算式を動作モデルから抽出する。また、そのメッセージの処理開始時におけるそのサービスで処理中のメッセージ数をシーケンスタイプ毎にカウントすることにより、各シーケンスタイプのメッセージ多重度を求める。
続いて、動作モデル実行手段119は、メッセージ多重度をシーケンス処理時間計算式に代入することにより、模擬的にアプリケーションサービス提供装置100に受信されたものとしたメッセージの処理時間初期値を計算する。例えば、WS2にメッセージが到着し、そのメッセージの処理開始時に、シーケンスタイプ1のメッセージシーケンスのメッセージが2つ、シーケンスタイプ2のメッセージシーケンスのメッセージが3つ、シーケンスタイプ3のメッセージシーケンスのメッセージが4つ処理されているとカウントしたとする。すなわち、各シーケンスタイプ1,2,3の多重度λS1,λS2,λS3を、それぞれ2,3,4として決定する。すると、新たに到着したと判定されたメッセージの処理時間は、以下の式のように求められる。
FWS2_S1=fWS2_S1(λS1,λS2,λS3)=1.3×2+0.4×3+0.6×4=6.2秒
なお、本例では新たに到着したメッセージを含むメッセージシーケンスは、シーケンスタイプ1であるものとし、上記のFWS2_S1により処理時間(ここでは処理時間初期値)を算出している。
また、このとき、WS2に新たに到着したと判定されたメッセージの処理開始から3秒後に、シーケンスタイプ3のメッセージシーケンスの1つの処理が完了したとする。すなわち、処理開始から3秒後に多重度が変化したとする。この場合、動作モデル実行手段119は、処理開始から「既に経過した時間」は3秒であると判定する。そして、処理時間を再計算する。ここではシーケンスタイプ3の処理が1つ完了するので、シーケンスタイプ3の多重度が4から1減少して3になる。よって、動作モデル実行手段119は、以下の式のように、処理時間を再計算する。
FWS2_S1=1.3×2+0.4×3+0.6×3=5.6秒
さらに、動作モデル実行手段119は、部分処理時間(多重度変化時から処理終了時までの時間)を計算する。既に説明したように、この時間は以下の式により求められる。
「部分処理時間」=「再計算した処理時間」×(1−(「既に経過した時間」/「元の処理時間」))
本例では、「再計算した処理時間」は5.6秒であり、「既に経過した時間」は3秒である。また、「元の処理時間」は、6.2秒である。よって、部分処理時間は、5.6×(1−(3/6.2))=2.89秒である。従って、処理開始から処理終了までの時間は3秒(既に経過した時間)+2.89秒=5.89秒となり、処理終了時刻(新メッセージ送信時刻)を確定することができる。
また、部分処理時間内にメッセージシーケンス数(メッセージ多重度)が再度変化するならば、「前回再計算した処理時間」を「元の処理時間」とし、「前回再計算した処理時間」−「前回計算した部分処理時間」+「前回の多重度変化時刻から新たな多重度変化時刻までの時間」を「既に経過した時間」として、同様の処理を繰り返せばよい。
また、動作モデル実行手段119は、分岐または集約により次のアプリケーションサービスのインタフェースtransferCheck(WS3)に入力されるメッセージ数を計算する。
そして、動作モデル実行手段119は、WS2における処理終了時刻に次のアプリケーションサービスのインタフェースtransferCheck(WS3)に新メッセージが入力されたと判定し、WS3に入力されたと判定した各メッセージについて、同様の処理を行う。
動作モデル実行手段119は、このような処理を繰り返すことにより、ビジネスプロセス処理システムの模擬実行を行う。このとき、動作モデル実行手段119は、模擬実行を行いながら、模擬実行ログをシミュレート結果取得手段120(図5参照。)に出力する。シミュレート結果取得手段120は、模擬実行ログをシミュレート結果記憶装置122に記憶させ、出力装置123に出力(例えば表示出力)する。図43に、模擬実行ログの例を示す。全てのアプリケーションサービスについて同様に模擬実行を行い、模擬実行ログを表示することで、オペレータは、模擬実行時の振る舞いを把握することができる。
さらに、メッセージシーケンス到着間隔を変えることにより、到着間隔変更後の動作状態を予測することができる。さらにメッセージシーケンス到着間隔を確率分布などによって変更することにより、メッセージシーケンス到着間隔が突発的に変化する時の動作状態や、定常的であまり変化しない時の動作状態を計算することができる。
また、ビジネスプロセスシミュレート装置116が、図6に示す構成の様に過負荷判定手段121を備えた構成であり、ビジネスプロセス処理システムの安定性を診断する場合の処理の具体例にについて説明する。過負荷判定手段121は、例えばメッセージシーケンスを処理する毎に(換言すれば、1つのメッセージの模擬実行に応じた模擬実行ログがシミュレート結果取得手段120を介して入力される毎に)、アプリケーションサービスにおけるメッセージシーケンスの処理時間および平均到着頻度を求める。
例えば、アプリケーションサービスWS2にてメッセージシーケンスSQ_001の処理開始時刻が「00時05分43秒」であり、処理終了時刻が「00時05分54.1秒」であり、処理時間を10.1秒と算出したとする。また、メッセージシーケンスSQ_001到着時におけるアプリケーションサービスWS2へのメッセージシーケンス平均到着頻度が5.0(メッセージシーケンス数/秒)であったとする。
同様に、アプリケーションサービスWS2にてメッセージシーケンスSQ_002の処理開始時刻が「00時07分15秒」であり、処理終了時刻が「00時07分31.1秒」であり、処理時間を16.1秒と算出したとする。また、メッセージシーケンスSQ_002到着時におけるアプリケーションサービスWS2へのメッセージシーケンス平均到着頻度が5.0(メッセージシーケンス数/秒)であったとする。
上記の例では、処理時間が6秒(=16.1−10.1)増加している。
過負荷判定処理手段121は、平均到着頻度が一定であり、増加した処理時間(本例では6秒)が所定値以上であるか否かを判定する。ここでは、処理時間の増加分の6秒は、所定値以上であるものとする。すると、メッセージシーケンスSQ_002に対応する過負荷判定フラグをオン(TRUE)とする。
過負荷判定処理手段121は、例えば、メッセージシーケンスID、シーケンスタイプID、アプリケーションサービスID、利用インタフェース、受信時刻、新メッセージ送信時刻、平均到着頻度、過負荷判定の情報を含む過負荷判定ログを作成し、出力装置123に出力(例えば表示出力)する。図44に、このような過負荷判定ログの例を示す。過負荷判定処理手段121は、過負荷判定ログをシミュレート結果記憶装置122に記憶させてもよい。
オペレータは、単発的に処理時間が増加することもありうるが、平均到着頻度がほぼ同じなのにもかかわらず時間経過に従って処理時間が増大し続ける場合はそのアプリケーションサービスが過負荷状態に陥っていると判定することができる。すなわち、図44に例示する過負荷判定ログが表示され、過負荷判定として、“TRUE”が連続して出力されている場合には、過負荷状態と判断することができる。また、“TRUE”が単発的に表示されている場合には、単発的な処理時間の増加が生じただけで過負荷状態にはなっていないと判断することができる。“TRUE”が表示されていなければ安定状態であると判断することができる。