以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の情報取得装置を示す図である。情報取得装置1は、業務に関する一連の処理の流れ(処理フロー)の実行状況を示す情報を取得する装置である。例えば、情報取得装置1は、取得した情報を用いて、業務を監視したり分析したりする。業務に関する処理は、情報取得装置1上で実行されるものでもよいし、情報取得装置1とネットワークを介して接続された他の装置上で実行されるものでもよい。例えば、情報取得装置1は、他の装置が出力する処理のログを取得して業務の監視や分析を行ってもよい。
情報取得装置1は、記憶部1aおよび演算部1bを有する。記憶部1aは、RAM(Random Access Memory)などの揮発性記憶装置でもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部1bは、CPU(Central Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)などを含み得る。演算部1bは、プログラムを実行するプロセッサであってもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合(マルチプロセッサ)も含まれ得る。
記憶部1aは、関連する複数の処理の過去の実行実績を示す情報を記憶する。例えば、ある業務は一連の処理E1,E2,E3を含む。処理E1,E2,E3はユーザによる所定の入力を受け付けて何らかの作業(例えば、受発注、見積、決裁など)に関する処理が行われたというイベントを示すものでもよい。
例えば、記憶部1aには、当該業務が行われた過去の実績が複数登録されている。例えば、第1の実績は、時刻T11に処理E1が実行され、時刻T12に処理E2が実行され、時刻T13に処理E3が実行されたことを示す。第2の実績は、時刻T21に処理E1が実行され、時刻T22に処理E2が実行され、時刻T23に処理E3が実行されたことを示す。記憶部1aには、更に複数の実績が記憶され得る。
演算部1bは、複数の処理のうち実行済である処理の実行実績を示す情報を取得する。例えば、演算部1bは、所定のスケジュールに従って当該情報を取得する。より具体的には、演算部1bは定期的な収集タイミングTBで、一連の処理E1,E2,E3のうち、実行済である処理E1,E2の実行実績を示す情報を取得する。当該実行実績は、時刻T31に処理E1が実行され、時刻T32に処理E2が実行されたことを示す。なお、図1では、定期的な収集タイミングTA,TCも例示されている。
演算部1bは、記憶部1aに記憶された過去の実行実績を示す情報と、新たに取得した実行済である処理の実行実績を示す情報に基づいて複数の処理のうち未実行の処理が実行済になっていると予測されたタイミングで、当該未実行の処理の実行状況を取得する。
上記の例でいえば、収集タイミングTBにおいて、未実行の処理は処理E3である。演算部1bは、記憶部1aに記憶された第1の実績や第2の実績、および、収集タイミングTBで取得した処理E1,E2の実行実績に基づいて予測されたタイミングT33で、処理E3の実行状況を取得する。演算部1bがタイミングT33を予測してもよい。
具体的には、演算部1bは、第1,第2の実績などから該当の業務の各処理が所定の時間間隔で実行されると分析し得る。例えば、処理E2,E3の時間間隔ΔTが過去の実績からほぼ一定と判断すれば、処理E2が実行された時刻T32から当該時間間隔ΔTが経過した時点を処理E3の実行が完了するタイミングT33と予測してもよい。
また、例えば、処理E1,E2の時間間隔ΔT1と処理E2,E3の時間間隔ΔT2との比r=(ΔT2/ΔT1)がほぼ一定と判断すれば、比rに基づいて処理E3が実行済になるタイミングT33を予測し得る。具体的には、処理E1,E2が実行された時刻T31,T32から求まる時間間隔に比rを乗じた時間が時刻T32から経過した時点を、処理E3の実行が完了するタイミングT33と予測してもよい。
また、演算部1bは、上記のようにして計算された時点よりも所定時間だけ後ろにずらした時点を、タイミングT33としてもよい。ユーザの都合によっては、上記の計算で得られた時点に処理E3が必ずしも実行されるとは限らないからである。演算部1bは、過去の実績を統計的に分析する際の誤差に応じて、後ろにずらす時間を定めてもよい。
情報取得装置1によれば、演算部1bにより、処理E1,E2,E3のうち実行済である処理E1,E2の実行実績を示す情報が取得される。演算部1bにより、取得された当該情報と処理E1,E2,E3の過去の実行実績を示す情報とに基づいて未実行の処理E3が実行済になっていると予測されたタイミングT33で、未実行の処理E3の実行状況が取得される。
これにより、処理の実行状況を効率的に把握できる。ここで、例えば、全ての業務に関する情報を定期的に分析して、改善箇所などの提供を行うことが考えられる。しかし、このとき、業務によっては実行状況の迅速な把握が難しいことがある。上記で例示したように、業務に関する情報を定期的な収集タイミングTA,TB,TCで取得する場合を考える。この場合、収集タイミングTBでは処理E1,E2の実行実績を取得できるが、未実行である処理E3の実行実績を取得できない。処理E3の実行実績の取得は、次の収集タイミングTCまで待たれることになる。すなわち、当該処理E1,E2,E3を含む業務の実行状況を把握するまでに遅延が生じ、分析結果の迅速な提供が難しい。これに対し、収集タイミングTA,TB,TCの周期を短くすることも考えられる。しかし、当該周期を短くするほど、監視や分析のための処理の頻度が増大し、情報取得装置1の負荷が増大し得る。更に、処理E3が実行されるまで継続的に監視を行うことも考えられるが、この場合も継続的な監視のための負荷が問題となる。
そこで、情報取得装置1は、収集タイミングTBで未実行である処理E3の実行状況を、当該収集タイミングTBで取得された処理E1,E2の実行実績および過去の処理E1,E2,E3の実行実績に基づいて予測されたタイミングT33で取得する。したがって、次の収集タイミングTCまで待つよりも早く、未実行の処理E3の実行状況を把握し得る。このため、例えば、処理E3が実行されていないなどの異常があれば、ユーザに早期に警告し得る。未実行の処理E3が収集タイミングTCまで放置されてしまうことの防止を図れる。また、タイミングT33では処理E3に絞って分析を行えるため、他の業務も一緒に分析する場合に比べて、情報取得装置1の分析のための負荷の増大を抑制できる。
なお、演算部1bは、タイミングT33では、処理E3に限定して実行状況を取得してもよい。すなわち、例えば収集タイミングTBで取得済みの処理E1,E2の実行状況を取得しないようにしてもよい。取得済みの情報を重複して取得するのは冗長な処理となるからである。冗長な処理を抑止することで、情報取得装置1の負荷を一層軽減でき、未完了の処理E3の実行状況の効率的な把握に寄与し得る。
[第2の実施の形態]
図2は、第2の実施の形態の情報処理システムを示す図である。第2の実施の形態の情報処理システムは、監視サーバ100、業務サーバ200および端末装置300,300a,300bを含む。監視サーバ100、業務サーバ200および端末装置300,300a,300bは、ネットワーク10に接続されている。ネットワーク10は、LAN(Local Area Network)でもよいし、WAN(Wide Area Network)やインターネットなどの広域ネットワークでもよい。
監視サーバ100は、BAM(Business Activity Monitoring)機能を提供するサーバコンピュータである。監視サーバ100は、情報処理システムで実行される業務が適正に遂行されているか否かを監視する。監視サーバ100は、業務サーバ200で実行された業務に関する処理の履歴情報(ログ)を取得する。監視サーバ100は、当該ログに基づいて、業務に関する処理フロー(業務フローという)を生成し、実際に行われた業務の流れを可視化したり、業務の実行状況を分析したりする。ここで、業務は1以上のユーザによる複数の作業(例えば、受発注、見積、決裁など)を含み得る。監視サーバ100は、業務の分析結果を端末装置300,300a,300bに提供する。監視サーバ100は、第1の実施の形態における情報取得装置1の一例である。
業務サーバ200は、端末装置300,300a,300bからの指示により種々の業務に関する処理を行うサーバコンピュータである。業務サーバ200は、業務に含まれる作業毎に、当該作業が行われたことを示すイベントの情報と、当該イベントが発生した時刻を示す情報とを含むログを継続的に生成し、記憶する。1つの業務は複数のイベントに対応付けることができる。業務サーバ200は、監視サーバ100に対して当該ログを提供する。なお、業務サーバ200は、業務の内容に応じて複数台設けられてもよい。例えば、複数の業務サーバにより出力されたログを他のサーバ装置が集約して管理してもよい。その場合は、当該他のサーバ装置が監視サーバ100に当該ログを提供してもよい。
端末装置300,300a,300bは、ユーザによって利用されるクライアントコンピュータである。ユーザは、端末装置300,300a,300bを操作して、ユーザの作業に関する処理の実行を業務サーバ200に依頼する。また、端末装置300,300a,300bは、監視サーバ100にアクセスして、業務の分析結果を取得できる。ユーザは、端末装置300,300a,300bを操作して、当該分析結果を閲覧する。例えば、ユーザは、イベントの発生状況から業務フローの遅滞箇所を把握し得る。
図3は、監視サーバのハードウェア例を示す図である。監視サーバ100は、プロセッサ101、RAM102、HDD103、通信部104、画像信号処理部105、入力信号処理部106、ディスクドライブ107および機器接続部108を有する。各ユニットは監視サーバ100のバスに接続されている。なお、業務サーバ200および端末装置300,300a,300bも、監視サーバ100と同様のハードウェアを用いて実現できる。
プロセッサ101は、監視サーバ100の情報処理を制御する。プロセッサ101は、例えばCPU、DSP、ASICまたはFPGAなどである。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、CPU、DSP、ASIC、FPGAなどのうちの2以上の要素の組合せであってもよい。
RAM102は、監視サーバ100の主記憶装置である。RAM102は、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、RAM102は、プロセッサ101による処理に用いる各種データを記憶する。
HDD103は、監視サーバ100の補助記憶装置である。HDD103は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。監視サーバ100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
通信部104は、ネットワーク10を介して他のコンピュータと通信を行える通信インタフェースである。通信部104は、有線通信インタフェースでもよいし、無線通信インタフェースでもよい。
画像信号処理部105は、プロセッサ101からの命令に従って、監視サーバ100に接続されたディスプレイ11に画像を出力する。ディスプレイ11としては、CRT(Cathode Ray Tube)ディスプレイや液晶ディスプレイなどを用いることができる。
入力信号処理部106は、監視サーバ100に接続された入力デバイス12から入力信号を取得し、プロセッサ101に出力する。入力デバイス12としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
ディスクドライブ107は、レーザ光などを利用して、光ディスク13に記録されたプログラムやデータを読み取る駆動装置である。光ディスク13として、例えば、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(ReWritable)などを使用できる。ディスクドライブ107は、例えば、プロセッサ101からの命令に従って、光ディスク13から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
機器接続部108は、監視サーバ100に周辺機器を接続するための通信インタフェースである。例えば、機器接続部108にはメモリ装置14やリーダライタ装置15を接続できる。メモリ装置14は、機器接続部108との通信機能を搭載した記録媒体である。リーダライタ装置15は、メモリカード16へのデータの書き込み、またはメモリカード16からのデータの読み出しを行う装置である。メモリカード16は、カード型の記録媒体である。機器接続部108は、例えば、プロセッサ101からの命令に従って、メモリ装置14またはメモリカード16から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
図4は、監視サーバの機能例を示す図である。監視サーバ100は、記憶部110、分析部130および出力部140を有する。記憶部110は、RAM102またはHDD103に確保した記憶領域として実現できる。分析部130および出力部140は、プロセッサ101が実行するソフトウェアのモジュールとして実現できる。
記憶部110は、分析部130および出力部140の処理に用いられる各種の情報を記憶する。記憶部110が記憶する情報には、ログに含まれるイベントから業務フローを作成するために用いられる情報(業務フローの種別と複数のイベントとの対応関係の情報)や業務サーバ200からログを取得するスケジュールを示す情報が含まれる。
分析部130は、業務サーバ200が出力するログを収集して業務フローの実行状況を分析する。分析部130は、業務フローに含まれる各作業の実行状況を監視する。分析部130は、2種類のタイミングでログを収集し、業務フローの分析を行う。
第1のタイミングは、定期的なタイミングである。例えば、日次、週次、月次などで収集タイミングをスケジューリングすることが考えられる。定期的なログの収集(定期収集)では、分析部130は分析対象とする全ての業務についてログを収集し、分析する。
第2のタイミングは、業務ごとに指定された1つの時点である。1つの時点を指定したログの収集(ピンポイント収集)では、分析部130は、指定された業務に関するログを収集し、分析する。ピンポイント収集は、各業務フローのイベントのうち、定期収集で未取得であったイベントの発生状況(当該イベントの処理の実行状況)を把握するために行われる。なお、第1,第2のタイミングは上記スケジュールを示す情報として記憶部110に格納される。
分析部130は、各業務の過去の実行実績を分析して、業務毎に第2のタイミングを決定し、ピンポイント収集を行う。具体的には、分析部130は、業務毎に、当該業務に属する各イベントが発生した時間間隔(イベント間隔)の比の定常性の有無を評価する。1つの業務に着目した場合に、当該業務に属する複数のイベントのイベント間隔の比が所定の誤差で一定であれば、イベント間隔の比に定常性があると評価できる。この場合、業務フローのうち少なくとも最初の2つのイベントについてイベント間隔を測定できれば、未取得であるイベントが発生する時刻を予測できる。
また、分析部130は、業務毎の発生間隔(業務発生間隔)の定常性の有無も評価する。ここで、業務発生間隔とは、1つの業務に着目した場合に、当該業務に属する最初のイベントが発生した時刻の間隔である。ある業務について業務発生間隔が所定の誤差で一定である場合、当該業務の業務発生間隔は定常性があると評価できる。
出力部140は、分析部130による分析結果を提供する。例えば、出力部140は、業務フローを可視化した業務フロー図や業務フローのうち遅滞している作業の情報を端末装置300,300a,300bに提供し得る。また、出力部140は、ディスプレイ11に当該業務フロー図などの情報を表示させてもよい。
業務サーバ200は、ログ記憶部210および業務処理部220を有する。ログ記憶部210は、業務サーバ200が備えるRAMやHDDに確保した記憶領域として実現できる。業務処理部220は、業務サーバ200が備えるプロセッサが実行するソフトウェアのモジュールとして実現できる。
ログ記憶部210は、業務処理部220が出力するログを記憶する。ログ記憶部210に記憶されたログは、分析部130により参照可能である。ただし、前述のように、業務サーバ200からログを取得する他のサーバ装置を設けて、当該他のサーバ装置に監視サーバ100に対するログの提供を行わせてもよい。
業務処理部220は、端末装置300,300a,300bからの要求に応じて、種々の業務に関する処理を実行する。業務処理部220は、実行した処理に応じたログを生成し、ログ記憶部210に格納する。前述のように、当該ログは各処理が実行されたことを示すイベント情報と各処理が実行されたタイムスタンプとを含む。
図5は、ログテーブルの例を示す図である。ログテーブル111は、イベントの履歴(業務フローの各処理の実行実績)を示す情報である。ログテーブル111の情報は、分析部130により業務サーバ200から取得され、記憶部110に格納される。ログテーブル111は、ID(IDentifier)、タイムスタンプ、作業者IDおよびイベント名の項目を含む。
IDの項目には、業務を識別する識別情報(ID)が登録される。同一の業務に関するログのレコードには、同一のIDが付与される。タイムスタンプの項目には、ログのレコードが記録された時刻を示すタイムスタンプが登録される。当該タイムスタンプは、イベントが発生した時刻またはイベントの処理が実行された時刻を示しているともいえる。例えば、当該タイムスタンプは、年月日時分秒で表され得る。ただし、説明を容易にするため、タイムスタンプを年月日時分で表している。作業者IDの項目には、当該イベントに係る作業を行ったユーザのID(作業者ID)が登録される。イベント名の項目には、発生したイベントの名称が登録される。
例えば、ログテーブル111には、IDが“001”、タイムスタンプが“2013/04/15 10:00”、作業者IDが“N1”、イベント名が“受付”という情報が登録される。これは、イベント名“受付”のイベントに係る作業が作業者ID“N1”のユーザによって、2013年04月15日10時00分に行われたことを示す。
当該レコードは、イベント名“受付”のイベントが2013年04月15日10時00分に発生したことを示しているともいえる。また、当該レコードは、イベント名“受付”のイベントの処理が2013年04月15日10時00分に実行されたことを示しているともいえる。
また、前述のように、ログテーブル111では関連するログについて同一のIDが付与されている。分析部130は、当該IDにより関連するイベントを認識し得る。
図6は、イベントテーブルの例を示す図である。イベントテーブル112は、イベントIDとイベント名との対応関係を示す情報である。イベントテーブル112は、記憶部110に予め格納される。イベントテーブル112は、イベントIDおよびイベント名の項目を含む。
イベントIDの項目には、イベントIDが登録される。イベント名の項目には、イベントの名称が登録される。例えば、イベントテーブル112には、イベントIDが“E11”、イベント名が“受付”という情報が登録されている。これは、イベントID“E11”のイベントの名称は“受付”であることを示す。
このように、1つのイベント名に対して1つのイベントIDが対応付けられる。なお、以下の説明では、例えばイベントID“E11”のイベントを指す場合に、イベント“E11”のように略記することがある。
図7は、フロー種別テーブルの例を示す図である。フロー種別テーブル113は、業務フローの種別(フロー種別)とイベントIDとの対応関係を示す情報である。フロー種別テーブル113は、記憶部110に予め格納される。フロー種別テーブル113は、フロー種別IDおよびイベントIDの項目を含む。
フロー種別IDの項目には、フロー種別IDが登録される。イベントIDの項目には、イベントIDが登録される。例えば、フロー種別テーブル113には、フロー種別IDが“F1”、イベントIDが“E11,E12,E13,E14”という情報が登録されている。これは、フロー種別ID“F1”である業務フローは、イベント“E11,E12,E13,E14”の一連のイベントにより成立していることを示す。
ここで、フロー種別ID“F1”に対応付けられたイベントID“E11,E12,E13,E14”は、イベントの発生順序も規定している。すなわち、当該フロー種別ID“F1”の業務フローでは、最初にイベント“E11”、2番目にイベント“E12”、3番目にイベント“E13”、最後にイベント“E14”という順序で各イベントが発生することを意味する。なお、以下の説明では、例えば、フロー種別ID“F1”のフロー種別を指す場合に、フロー種別“F1”のように略記することがある。
図8は、プロセス管理テーブルの例を示す図である。プロセス管理テーブル114は、プロセスIDとフロー種別IDとの対応関係を示す情報である。プロセス管理テーブル114は、記憶部110に格納される。プロセス管理テーブル114は、プロセスIDおよびフロー種別IDの項目を含む。
プロセスIDの項目には、プロセスIDが登録される。ここで、プロセスとは、あるフロー種別に対して実際に発生した業務フローの実体(フローインスタンス)である。当該プロセスを業務プロセスということもある。同一のプロセスに属する複数のイベントは、共通のプロセスIDをもつ。第2の実施の形態では、プロセスIDをログテーブル111のIDに対応付けることができる。以下に示す例では、ログテーブル111でいうIDはプロセスIDに一致するものとする。ただし、プロセスIDは、ログテーブル111のIDの登録値から一意に導かれる情報でもよい。フロー種別IDの項目にはフロー種別IDが登録される。
例えば、プロセス管理テーブル114には、プロセスIDが“001”、フロー種別IDが“F1”という情報が登録される。これは、プロセスID“001”のプロセス(フローインスタンス)は、フロー種別“F1”のプロセスであることを示す。なお、以下の説明では、例えば、プロセスID“001”のプロセスを指す場合に、プロセス“001”のように略記することがある。
図9は、基準パラメータテーブルの例を示す図である。基準パラメータテーブル115は、定常性の有無の評価用のパラメータをフロー種別毎に登録した情報である。基準パラメータテーブル115は、記憶部110に予め格納される。基準パラメータテーブル115は、フロー種別ID、判定基準数および基準の標準偏差の項目を含む。
フロー種別IDの項目には、フロー種別IDが登録される。判定基準数の項目には、分析を行うまでに蓄積すべきプロセスの数が登録される。分析は統計的な処理を用いて行われるため、サンプルとするプロセスの数がある程度蓄積されている方が信頼性の高い評価を行える。判定基準数は、サンプルとするプロセスの数の閾値に相当する(判定基準数以上のサンプルがなければ分析の対象外となる)。基準の標準偏差の項目は、業務発生間隔およびイベント間隔比の項目に細分化されている。
イベント間隔比の項目には、イベント間隔の比(イベント間隔比)が一定であると判断する際に用いられる統計誤差の値(標準偏差)が登録される。業務発生間隔の項目には、業務発生間隔が一定であると判断する際に用いられる統計誤差の値(標準偏差)が登録される。
例えば、基準パラメータテーブル115には、フロー種別ID“F1”、判定基準数“3”、イベント間隔比に関する基準の標準偏差“0.03”、業務発生間隔に関する基準の標準偏差“2.5”という情報が登録されている。これは、業務フロー“F1”の場合、判定基準数“3”以上のプロセスがサンプルとして取得されている場合に定常性の有無を評価することを示す。また、業務フロー“F1”について計測されたイベント間隔比のばらつきが標準偏差“0.03”で与えられる所定範囲内にある場合に、フロー種別“F1”のイベント間隔比がおおよそ一定である(定常性がある)と評価することを示す。また、業務フロー“F1”について計測された業務発生間隔のばらつきが標準偏差“2.5”で与えられる所定範囲内にある場合に、当該業務フロー“F1”の業務発生間隔がおおよそ一定である(定常性がある)と評価することを示す。
なお、判定基準数は、フロー種別に応じて適宜設定可能である。例えば、“50”、“100”のようにサンプル数の下限を決定して、統計の信頼性をより向上させることも考えられる。
図10は、イベント間隔管理テーブルの例を示す図である。イベント間隔管理テーブル116は、イベントとイベントとの時間間隔を記録した情報である。イベント間隔管理テーブル116は、記憶部110に格納される。イベント間隔管理テーブル116は、フロー種別ID、プロセスID、間隔#1、間隔#2および間隔#3の項目を含む。
フロー種別IDの項目には、フロー種別IDが登録される。プロセスIDの項目には、プロセスIDが登録される。間隔#1の項目には、当該フロー種別IDの業務フローのうち最初の(1番目の)イベントが発生してから2番目のイベントが発生するまでの所要時間が登録される。間隔#2の項目には、2番目のイベントが発生してから3番目のイベントが発生するまでの所要時間が登録される。間隔#3の項目には、3番目のイベントが発生してから4番目のイベントが発生するまでの所要時間が登録される。
ここで、フロー種別“F1”に関するプロセスIDには4つのイベントが属している。そのため、イベント間隔管理テーブル116では間隔#1〜3を管理する。ただし、プロセスIDによっては、3または5以上のイベントが属するフロー種別もある。例えば、5つのイベントが属するフロー種別の場合、イベント間隔管理テーブル116では間隔#1〜4が管理されることになる。
例えば、イベント間隔管理テーブル116には、フロー種別が“F1”、プロセスIDが“001”、間隔#1が“1h(hour)”、間隔#2が“2h”、間隔#3が“3h”という情報が登録されている。これは、業務フロー“F1”のプロセス“001”では、イベント“E11”が発生してからイベント“E12”が発生するまでの時間間隔が1時間であったことを示す。また、イベント“E12”が発生してからイベント“E13”が発生するまでの時間間隔が2時間であったことを示す。更に、イベント“E13”が発生してからイベント“E14”が発生するまでの時間間隔が3時間であったことを示す。
言い換えれば、業務フロー“F1”のプロセス“001”では、イベント“E11”の処理が完了してからイベント“E12”の処理が完了するまでの時間間隔が1時間であったともいえる。また、イベント“E12”の処理が完了してからイベント“E13”の処理が完了するまでの時間間隔が2時間であったともいえる。更に、イベント“E13”の処理が完了してからイベント“E14”の処理が完了するまでの時間間隔が3時間であったともいえる。
間隔#1〜3の項目は、プロセス毎のイベント間隔比を示しているともいえる。具体的には、プロセス“001”の例では、イベント“E11”〜“E14”までの全体の所要時間は1時間+2時間+3時間=6時間である。よって、全体の所要時間に対するイベント“E11”〜“E12”のイベント間隔比は、1/6である。全体の所要時間に対するイベント“E12”〜“E13”のイベント間隔比は、2/6=1/3である。全体の所要時間に対するイベント“E13”〜“E14”のイベント間隔比は3/6=1/2である。
なお、プロセス“101”のレコードでは、間隔#3が未設定“−”(ハイフン)となっている。これは、図10で示すタイミングにおいて、プロセス“101”のイベント“E14”のログが未だ取得されていないためである。
図11は、イベント間隔比評価テーブルの例を示す図である。イベント間隔比評価テーブル117は、イベント間隔比の統計を管理するための情報である。イベント間隔比評価テーブル117は、記憶部110に格納される。イベント間隔比評価テーブル117は、フロー種別ID、件数、イベント間隔、イベント間隔比の平均、イベント間隔比の標準偏差、例外範囲および定常性の項目を含む。
フロー種別IDの項目には、フロー種別IDが登録される。件数の項目には、統計処理に用いたプロセスのサンプル数が登録される。イベント間隔の項目には、どのイベントの間隔であるかを示す情報が登録される。イベント間隔比の平均(m1)の項目には、イベント間隔比の過去の実績の平均が登録される。イベント間隔比の標準偏差(σ1)の項目には、イベント間隔比の過去の実績の平均に対する標準偏差が登録される。
例外範囲の項目には、イベント間隔比の例外の範囲が登録される。後述するように、何れかのイベント間のイベント間隔比が例外の範囲にあると判断されたプロセスは、イベント間隔比の平均および標準偏差を計算する際のサンプルから除外されることになる。例外範囲は、上記平均(m1)および標準偏差(σ1)を用いて算出される。第2の実施の形態では一例として、m1+2σ1以上、m1−2σ1以下を例外範囲とする。
また、定常性の項目には、当該フロー種別のイベント間隔比に定常性があるか否かを示す情報が登録される。定常性の項目の初期値は、定常性なしを示すものとする。
例えば、イベント間隔比評価テーブル117には、フロー種別IDが“F1”、件数が“3”、イベント間隔が“間隔#1(E11〜E12)”、イベント間隔比の平均が“0.1588”、イベント間隔比の標準偏差が“0.01”、例外範囲が“0.1788以上、0.1388以下”、定常性が“あり”という情報が登録される。
これは、フロー種別“F1”について、イベント間隔比の平均/標準偏差を求めるために用いたプロセスのサンプル数が、プロセス“001”、“011”、“021”の3つであることを示す。ここで、後述するようにイベント間隔管理テーブル116に登録されたプロセス“031”は偏差が大きくサンプルから除外される。また、イベント間隔管理テーブル116で示される時点において、プロセス“101”は未発生のイベントを含み不完全であるため、サンプルから除外される。
また、イベント“E11”、“E14”の各タイムスタンプ間の時間間隔(全体の時間間隔)に対するイベント“E11”〜“E12”の時間間隔の比の平均が“0.1588”、標準偏差が“0.01”であることを示す。更に、全体の時間間隔に対するイベント“E11”〜“E12”の時間間隔の比が例外範囲“0.1788以上、0.1388以下”であるプロセスを例外として扱い、統計処理のサンプルから除外することを示す。また、フロー種別“F1”はイベント間隔比に定常性があると評価されていることを示す。
図12は、業務発生間隔管理テーブルの例を示す図である。業務発生間隔管理テーブル118は、業務発生間隔を記録した情報である。業務発生間隔管理テーブル118は、記憶部110に格納される。業務発生間隔管理テーブル118は、フロー種別ID、プロセスID、タイムスタンプおよび業務発生間隔の項目を含む。
フロー種別IDの項目には、フロー種別IDが登録される。プロセスIDの項目には、プロセスIDが登録される。タイムスタンプの項目には、当該プロセスの最初のイベントのタイムスタンプが登録される。業務発生間隔の項目には、あるプロセスに着目したときに、当該プロセスと同一のフロー種別IDで当該プロセスの直前に実行されたプロセスのタイムスタンプと、着目するプロセスのタイムスタンプとの間の時間間隔が登録される。なお、あるフロー種別IDで最初に実行されたプロセスについては、直前に実行されたプロセスがないため業務発生間隔の項目には設定なしを示す“−”が登録される。
例えば、業務発生間隔管理テーブル118には、フロー種別IDが“F1”、プロセスIDが“001”、タイムスタンプが“2013/04/15 10:00”および業務発生間隔が“−”という情報が登録されている。これは、業務フロー“F1”のプロセス“001”に属する最初のイベントの発生時刻が2013年4月15日10時00分であることを示す。プロセス“001”は、フロー種別“F1”の各プロセスの中で最初に発生したプロセスであるため、業務発生間隔は登録されていない。
また、業務発生間隔管理テーブル118には、フロー種別IDが“F1”、プロセスIDが“011”、タイムスタンプが“2013/04/16 10:00”および業務発生間隔が“24h”という情報が登録されている。これは、業務フロー“F1”のプロセス“011”に属する最初のイベントの発生時刻が2013年4月16日10時00分であることを示す。また、業務フロー“F1”の直前のプロセス“001”のタイムスタンプと当該プロセス“011”のタイムスタンプとの時間間隔が“24”時間であることを示す。
図13は、業務発生間隔評価テーブルの例を示す図である。業務発生間隔評価テーブル119は、業務発生間隔の統計を管理するための情報である。業務発生間隔評価テーブル119は、記憶部110に格納される。業務発生間隔評価テーブル119は、フロー種別ID、件数、業務発生間隔の平均、業務発生間隔の標準偏差、例外範囲および定常性の項目を含む。
フロー種別IDの項目には、フロー種別IDが登録される。件数の項目には、評価に用いられたサンプル数が登録される。業務発生間隔の平均の項目には、業務発生間隔の過去の実績の平均(m2)が登録される。業務発生間隔の標準偏差の項目には、業務発生間隔の過去の実績の平均に対する標準偏差(σ2)が登録される。
例外範囲の項目には、業務発生間隔の例外の範囲が登録される。後述するように、業務発生間隔が例外の範囲にあると判断されたプロセスは、業務発生間隔の平均および標準偏差を計算する際のサンプルから除外されることになる。例外範囲は、上記平均(m2)および標準偏差(σ2)を用いて算出される。第2の実施の形態では一例として、m2+2σ2以上、m2−2σ2以下を例外範囲とする。
また、定常性の項目には、当該フロー種別の業務発生間隔に定常性があるか否かを示す情報が登録される。定常性の項目の初期値は、定常性なしを示すものとする。
例えば、業務発生間隔評価テーブル119には、フロー種別IDが“F1”、件数が“3”、業務発生間隔の平均が“25h”、業務発生間隔の標準偏差が“1h”、例外範囲が“27h以上、23h以下”、定常性が“あり”という情報が登録されている。
これは、フロー種別“F1”について、業務発生間隔の平均/標準偏差を求めるために用いたプロセスのサンプル数が3であることを示す。また、業務発生間隔の平均が25時間、標準偏差が1時間であることを示す。更に、業務発生間隔が例外範囲“27時間以上、23時間以下”であるプロセスを例外として扱い、統計処理のサンプルから除外することを示す。例えば、業務発生間隔管理テーブル118によれば、プロセス“031”が、次回の統計処理のサンプルから除外されることになる。更に、フロー種別“F1”は業務発生間隔に定常性があると評価されていることを示す。
なお、不完全なプロセスはサンプルから除外されるものとする。ただし、不完全なプロセスも最初のイベントにより業務発生間隔を把握できるので、当該不完全なプロセスもサンプルとして考慮して、業務発生間隔の平均/標準偏差を求めてもよい。
図14は、例外プロセステーブルの例を示す図である。例外プロセステーブル120は、例外として扱うプロセスを登録する情報である。例外プロセステーブル120は、記憶部110に格納される。例外プロセステーブル120は、プロセスIDおよび例外内容の項目を含む。
プロセスIDの項目には、プロセスIDが登録される。例外内容の項目には、例外の内容を示す情報が登録される。例えば、例外プロセステーブル120には、プロセスIDが“031”、例外内容が“イベント間隔比に例外あり”という情報が登録されている。これは、プロセス“031”がイベント間隔比について例外と判定されていることを示す。
図15は、収集時刻テーブルの例を示す図である。収集時刻テーブル121は、未発生のイベントに関するログをピンポイント収集する時刻を登録した情報である。収集時刻テーブル121は、記憶部110に格納される。収集時刻テーブル121は、プロセスID、イベントID、境界時刻およびピンポイント収集時刻の項目を含む。
プロセスIDの項目には、プロセスIDが登録される。イベントIDの項目には、未発生のイベントIDが登録される。境界時刻の項目には、イベントの発生時刻として許容される下限の(最も過去の)時刻が登録される。ピンポイント収集時刻の項目には、ピンポイント収集を行う時刻が登録される。境界時刻およびピンポイント収集時刻は、後述するようにイベント間隔比評価テーブル117に基づいて算出される。
例えば、収集時刻テーブル121には、プロセスIDが“101”、イベントIDが“E14”、境界時刻が“2013/04/19 15:59”、ピンポイント収集時刻が“2013/04/19 16:13”という情報が登録される。これは、プロセス“101”の未発生のイベント“E14”に関するログを2013年4月19日16時13分にピンポイント収集することを示す。また、当該イベント“E14”の発生時刻として許容される最も過去の時刻が2013年4月19日15時59分であることを示す。
分析部130は、イベント間隔管理テーブル116および業務発生間隔管理テーブル118を用いてプロセス毎のイベント間隔および業務発生間隔を記録する。また、分析部130は、イベント間隔比評価テーブル117および業務発生間隔評価テーブル119をフロー種別毎に作成して、イベント間隔比および業務発生間隔をフロー種別毎に評価する。
ここで、前述のように分析部130は2つの方法でログを取得する。第1の方法は、定期収集による方法である。第2の方法は、ピンポイント収集による方法である。次に、ログ収集のこれらのパターンを説明する。
図16は、定期収集の例を示す図である。分析部130は、業務サーバ200から定期的にログを収集する。定期収集のタイミングは、記憶部110に予め記憶される。例えば、日次、週次、月次などのタイミングである。図16では、定期収集のタイミングとして、定期収集タイミングT1,T2,・・・,T100,T101,・・・が時系列に例示されている。
ここで、フロー種別“F1”に着目すると、定期収集タイミングT1以前には、フロー種別“F1”のプロセスに属するイベントが存在していない。このため、定期収集タイミングT1の時点では、フロー種別“F1”のプロセスに属するイベントのログは取得されない。
また、定期収集タイミングT2以前で、定期収集タイミングT1よりも後の期間ではフロー種別“F1”のプロセス“001”に属するイベント“E11”、“E12”、“E13”、“E14”が存在している。このため、定期収集タイミングT2の時点では、フロー種別“F1”のプロセス“001”に属するイベント“E11”、“E12”、“E13”、“E14”のログが取得される。
更に、定期収集タイミングT101以前で、定期収集タイミングT100よりも後の期間ではフロー種別“F1”のプロセス“101”に属するイベント“E11”、“E12”、“E13”が存在している。このため、定期収集タイミングT101の時点では、フロー種別“F1”のプロセス“101”に属するイベント“E11”、“E12”、“E13”のログが取得される。ただし、定期収集タイミングT101の時点ではプロセス“101”に対応するイベント“E14”は未発生である。したがって、定期収集タイミングT101ではイベント“E14”のログは取得されないことになる。
図17は、ピンポイント収集の例を示す図である。図16で例示したようにタイミングT101において、プロセス“101”のイベント“E14”は未発生である。そこで、分析部130は、フロー種別“F1”の各プロセスの過去の実績からイベント“E14”のログをピンポイントで収集するタイミングを計算する。具体的には、プロセス“101”について、イベント“E11”、“E12”、“E13”の発生時刻が取得されている。よって、イベント“E11”、“E12”の時間間隔ΔTaを得られる。また、イベント“E12”、“E13”の時間間隔ΔTbを得られる。
また、これらの各イベントの時間間隔とイベント“E13”、“E14”の時間間隔の比の平均が過去の実績から分かっている。これらの情報からプロセス“101”のイベント“E14”がイベント“E13”の発生時刻からどの程度の時間が経過したときに発生し得るかを予測する。
例えば、イベント“E11”、“E12”の時間間隔に対するイベント“E13”、“E14”の時間間隔の比の平均がr1であるとする。その場合、当該平均から予測される時刻τは、プロセス“101”のイベント“E13”の発生時刻からr1×ΔTaの時間が経過した時刻である。
また、例えば、イベント“E12”、“E13”の時間間隔に対するイベント“E13”、“E14”の時間間隔の比の平均がr2であるとする。その場合、当該平均から予測される時刻τは、プロセス“101”のイベント“E13”の発生時刻からr2×ΔTbの時間が経過した時刻である。分析部130は、r1を用いて時刻τを計算してもよいし、r2を用いて時刻τを計算してもよい。ただし、r1,r2のうち、標準偏差の小さい方を用いた方が、時刻τの予測の精度は高いと考えられる。
更に、分析部130は、時刻τから時間2σが経過した時刻(“τ+2σ”の時刻)をピンポイント収集タイミングTyと決定する。ここで、σはフロー種別“F1”のイベント“E13”、“E14”に対して求められているイベント時間比に関する標準偏差を時間に換算したものである。各イベントは、様々なユーザの操作によって行われるものであり、各ユーザの置かれている状況も多様である。このため、イベントの発生時刻に適度の遅延を許容した方が、ピンポイント収集での取得漏れの可能性は低くなる。
図18は、ログ収集の例を示すフローチャートである。以下、図18に示す処理をステップ番号に沿って説明する。
(S11)分析部130は、定期収集を行う時刻に到達したことを検出する。定期収集のスケジュール情報は、記憶部110に予め格納される。
(S12)分析部130は、業務サーバ200からログの収集処理(定期収集)を行う。分析部130は、収集したログに基づいて業務フロー(プロセス)を作成し、業務の改善箇所の分析を行う。
(S13)分析部130は、定期収集時に作成したプロセスのうち、未発生のイベントを含み、3以上のイベントが発生済であるプロセスがあるか否かを判定する。ある場合、処理をステップS14に進める。ない場合、処理を終了する(次の定期収集タイミングまで待機する)。
(S14)分析部130は、ピンポイント収集の実行判定処理を行う。分析部130は、定期収集を行った段階で、未発生のイベントを含み、3以上のイベントが発生済であるプロセスを、ピンポイント収集の候補とする。当該候補のうち、所定の条件を満たすプロセスをピンポイント収集の対象と決定し、プロセス毎にピンポイント収集のスケジュールを作成する。
(S15)分析部130は、作成したスケジュールに従って、プロセス毎にピンポイント収集を行う。また、分析部130は、ピンポイント収集の結果に応じて、ユーザに対する警告を行う。
図19は、定期収集処理の例を示すフローチャートである。以下、図19に示す処理をステップ番号に沿って説明する。以下に示す手順は、図18のステップS12の手順に相当する。
(S21)分析部130は、業務サーバ200からログを取得し、ログテーブル111に登録する。例えば、当該ログには、プロセス“101”のイベント“E11”、“E12”、“E13”が発生したことを示すログも含まれる。このとき、分析部130は、過去に収集済のログ以外のログを収集する。
(S22)分析部130は、前回までに取得されているログと今回取得されたログとに基づいて、発生済のイベントの組をプロセス毎に特定する。例えば、今回取得されたログには、プロセス“101”のイベント“E11”、“E12”、“E13”のログが含まれている。したがって、分析部130は、プロセス“101”に対する発生済のイベントとしてイベント“E11”、“E12”、“E13”を特定する。また、前回までに取得されているプロセスには、前回の定期収集時に未発生のイベントが存在していたプロセスもあり得る。今回取得されたログで当該未発生のイベントが発生したことを確認できれば、当該未発生のイベントを補完できる。このようにして、分析部130は収集したログからプロセス(業務フロー)を作成する。
(S23)分析部130は、プロセスとフロー種別との対応関係を特定して、プロセス管理テーブル114に登録する。具体的には、分析部130は、ログテーブル111のID(プロセスID)およびイベント名から、プロセス毎に発生したイベントの時系列を把握する。分析部130は、イベントテーブル112に基づいてイベント名をイベントIDに変換し、イベントIDをフロー種別テーブル113と照合してフロー種別IDを得る。第2の実施の形態の例では、イベントIDとフロー種別IDとは1対1に対応しているので、1のイベントIDからフロー種別IDを判定し得る。ただし、複数のイベントIDの時系列からフロー種別IDを判定するようにしてもよい。このようにフロー種別IDを判定し、当該フロー種別IDとログテーブル111のID(プロセスID)とを対応付けることができる。例えば、プロセスID“101”に対してフロー種別ID“F1”を対応付ける。分析部130は、この対応関係をプロセス管理テーブル114に登録する。
(S24)分析部130は、ステップS23でイベントの組を構成したプロセスのうち、全てのイベントが発生済であるプロセスのプロセスIDに対応するフロー種別IDを1つ選択する。
(S25)分析部130は、基準パラメータテーブル115を参照して、選択したフロー種別IDの判定基準数を取得する。分析部130は、プロセス管理テーブル114を参照して、当該フロー種別に関し、判定基準数以上のプロセス(ただし、全てのイベントが発生済のもの)が存在しているか否かを判定する。全てのイベントが発生済であるプロセスの数が判定基準数以上存在する場合、処理をステップS26に進める。全てのイベントが発生済であるプロセスの数が判定基準数以上存在しない場合、処理をステップS29に進める。この判定により、十分なサンプルが確保されていないフロー種別の分析を省略でき、分析を効率化し得る。
(S26)分析部130は、選択したフロー種別は、3つ以上のイベントで成立するものであるか否かを判定する。3つ以上のイベントで成立するものである場合、処理をステップS27に進める。2つ以下のイベントで成立するものである場合、処理をステップS28に進める。フロー種別が3つ以上のイベントで成立するものであるか否かは、フロー種別テーブル113に基づいて判定できる。
(S27)分析部130は、選択したフロー種別について、イベント間隔比の定常性を評価する。詳細は後述する。
(S28)分析部130は、選択したフロー種別について、業務発生間隔の定常性を評価する。詳細は後述する。
(S29)分析部130は、新規のプロセスIDが登録された全てのフロー種別を処理済であるか否かを判定する。新規のプロセスIDが登録された全てのフロー種別を処理済である場合、処理をステップS30に進める。新規のプロセスIDが登録された全てのフロー種別を処理済でない場合、処理をステップS24に進める。
(S30)分析部130は、収集したログによって構成されたプロセスについて、異常が検出されたプロセスがあれば、当該異常がある旨を警告するように出力部140に指示する。例えば、あるプロセスのうちの一部のイベントの発生時刻が当該プロセスのフロー種別がもつ定常性を逸脱して行われている場合に異常を検知し、当該イベントに対応する作業が定常的に行われていない旨を警告するように出力部140に指示する。
図20は、イベント間隔比の定常性評価の例を示すフローチャートである。以下、図20に示す処理をステップ番号に沿って説明する。以下に示す手順は、図19のステップS27の手順に相当する。以下の処理は、図19のステップS24で選択されたフロー種別(着目するフロー種別)について行われる。
(S31)分析部130は、着目するフロー種別の各プロセスについてイベント間隔をイベント間隔管理テーブル116に記録する。具体的には、ログテーブル111には、各イベントのタイムスタンプが登録されている。分析部130は、図19のステップS23で把握されたプロセス毎のイベントの時系列に沿って各イベント間のタイムスタンプの差を求め、各イベント間のイベント間隔とする。
(S32)分析部130は、イベント間隔比評価テーブル117を参照して、着目するフロー種別がイベント間隔比に定常性ありと評価されているか否かを判定する。イベント間隔比に定常性ありと評価されている場合、処理をステップS33に進める。イベント間隔比に定常性ありと評価されていない場合(すなわち、定常性なしと評価されている場合)、処理をステップS35に進める。
(S33)分析部130は、例外プロセステーブル120を参照して、着目するフロー種別のプロセスのうち、イベント間隔比について例外プロセスとして登録されているプロセスがあるか否かを判定する。例外プロセスがある場合、処理をステップS34に進める。例外プロセスがない場合、処理をステップS35に進める。例えば、例外プロセステーブル120には、フロー種別“F1”のプロセス“031”が登録されている。プロセス“031”の登録内容によれば“イベント間隔比に例外あり”と設定されている。このため、分析部130は、フロー種別“F1”に対して例外プロセスがあると判定することになる。
(S34)分析部130は、着目するフロー種別のプロセスのうち、例外プロセステーブル120にイベント間隔比について例外プロセスとして登録されているプロセスを、統計処理のサンプルから除外する。例えば、分析部130は、フロー種別“F1”についてイベント間隔比の平均および標準偏差を求める場合は、プロセス“031”をサンプルから除外して計算を行うことになる。
(S35)分析部130は、着目するフロー種別について、イベント間隔比の平均および標準偏差を計算する。具体的には、分析部130は、イベント間隔管理テーブル116を参照して、サンプルとなるプロセス毎に、プロセスの全体の所要時間に対する各イベント間隔の比を計算する。なお、前述の通り、サンプルとなるプロセスは、全てのイベントが発生済であるプロセスである。そして、イベントの間隔毎にイベント間隔比の平均(m1)を算出する。更に、イベント間隔比毎のばらつきを示す標準偏差(σ1)を算出する。また、m1+2σ1以上、m1−2σ1以下の範囲を例外範囲として算出する。分析部130は、計算に用いたサンプル数(件数)、平均m1、標準偏差σ1および例外範囲を、フロー種別に対応付けてイベント間隔比評価テーブル117に登録する。
(S36)分析部130は、全てのイベント間隔比の標準偏差が基準の標準偏差よりも小さいか否かを判定する。全てのイベント間隔比の標準偏差が基準の標準偏差よりも小さい場合、処理をステップS37に進める。何れかのイベント間隔比の標準偏差が基準の標準偏差以上である場合、処理をステップS38に進める。例えば、イベント間隔比評価テーブル117によれば、フロー種別“F1”のイベント間隔比の標準偏差は“0.01”、“0.02”、“0.01”である。基準パラメータテーブル115によれば、フロー種別“F1”のイベント間隔比の基準の標準偏差は“0.03”である。この場合、分析部130は、フロー種別“F1”について全てのイベント間隔比の標準偏差が基準の標準偏差よりも小さいと判定する。
(S37)分析部130は、着目するフロー種別を“定常性あり”と判断する。分析部130は、“定常性あり”とする判断結果をフロー種別に対応付けてイベント間隔比評価テーブル117に登録する。
(S38)分析部130は、着目するフロー種別を“定常性なし”と判断する。分析部130は、“定常性なし”とする判断結果をフロー種別に対応付けてイベント間隔比評価テーブル117に登録する。そして、処理を終了する。
(S39)分析部130は、着目するフロー種別について、イベント間隔比が例外範囲内であるイベントをもつプロセスがあるか否かを判定する。当該プロセスがある場合、処理をステップS40に進める。当該プロセスがない場合、処理を終了する。例えば、イベント間隔管理テーブル116によれば、プロセス“031”はイベント間隔#1,#2,#3の値が他のプロセスのイベント間隔に対してばらついており、イベント間隔比も他のプロセスのイベント間隔比と大きく異なる。例えば、プロセス“031”の間隔#2のイベント間隔比は、21/(7+21+22)=0.42≧0.3892である。このため、プロセス“031”はイベント間隔比が例外範囲内にあると判定される。
(S40)分析部130は、イベント間隔比が例外範囲内であると判断されたプロセスをイベント間隔比についての例外プロセスとして、例外プロセステーブル120に登録する。
なお、ステップS35では、過去に取得済のイベント間隔比の平均およびイベント間隔比の2乗和を用いて、新たに追加されたプロセスのイベント間隔分を考慮した平均および標準偏差の計算を簡略化し得る。例えば、イベント間隔比評価テーブル117に、イベント間隔毎のイベント間隔比の2乗和を保持しておく。そうすれば、あるイベント間のイベント間隔について、“今回の平均={(前回件数×前回の平均)+今回追加のイベント間隔比の合計}/(前回件数+今回追加の件数)”として求まる。また、“今回の2乗和=前回の2乗和+今回追加のイベント間隔比の2乗和”として求まる。
したがって、“前回件数+今回追加の件数=今回件数”とすれば、“(今回の標準偏差の2乗)=(今回の2乗和/今回件数)−(今回の平均の2乗)”を計算することで求まる。
図21は、業務発生間隔の定常性評価の例を示すフローチャートである。以下、図21に示す処理をステップ番号に沿って説明する。以下に示す手順は、図19のステップS28の手順に相当する。以下の処理は、図19のステップS24で選択されたフロー種別(着目するフロー種別)について行われる。
(S41)分析部130は、着目するフロー種別の各プロセスについて業務発生間隔を業務発生間隔管理テーブル118に記録する。具体的には、ログテーブル111には、各イベントのタイムスタンプが登録されている。分析部130は、図19のステップS23で把握された各プロセスについて、最初のイベントのタイムスタンプの差を求め、業務発生間隔とする。
(S42)分析部130は、業務発生間隔評価テーブル119を参照して、着目するフロー種別が業務発生間隔に定常性ありと評価されているか否かを判定する。業務発生間隔に定常性ありと評価されている場合、処理をステップS43に進める。業務発生間隔に定常性ありと評価されていない場合(すなわち、定常性なしと評価されている場合)、処理をステップS45に進める。
(S43)分析部130は、例外プロセステーブル120を参照して、着目するフロー種別のプロセスのうち、業務発生間隔について例外プロセスとして登録されているプロセスがあるか否かを判定する。例外プロセスがある場合、処理をステップS44に進める。例外プロセスがない場合、処理をステップS45に進める。例えば、例外プロセステーブル120には、フロー種別“F1”のプロセス“031”が登録されている。プロセス“031”の登録内容によれば“イベント間隔比に例外あり”であるが、業務発生間隔について例外とする旨は設定されていない。このため、分析部130は、フロー種別“F1”に対して例外プロセスがないと判定することになる。
(S44)分析部130は、着目するフロー種別のプロセスのうち、例外プロセステーブル120に業務発生間隔について例外プロセスとして登録されているプロセスを、統計処理のサンプルから除外する。
(S45)分析部130は、着目するフロー種別について、業務発生間隔の平均および標準偏差を計算する。分析部130は、業務発生間隔管理テーブル118からサンプルとなるプロセスを抽出する。前述の通り、サンプルとなるプロセスは、全てのイベントが発生済であるプロセスである。そして、サンプルとなるプロセスに対して取得されている業務発生間隔の平均(m2)を算出する。更に、業務発生間隔のばらつきを示す標準偏差(σ2)を算出する。また、m2+2σ2以上、m2−2σ2以下の範囲を例外範囲として算出する。分析部130は、計算に用いたサンプル数(件数)、平均m2、標準偏差σ2および例外範囲をフロー種別に対応付けて、業務発生間隔評価テーブル119に登録する。
(S46)分析部130は、業務発生間隔の標準偏差が基準の標準偏差よりも小さいか否かを判定する。業務発生間隔の標準偏差が基準の標準偏差よりも小さい場合、処理をステップS47に進める。業務発生間隔の標準偏差が基準の標準偏差以上である場合、処理をステップS48に進める。例えば、業務発生間隔評価テーブル119によれば、フロー種別“F1”の業務発生間隔の標準偏差は“1h”である。基準パラメータテーブル115によれば、フロー種別“F1”の業務発生間隔の基準の標準偏差は“2.5”である。この場合、分析部130は、フロー種別“F1”について業務発生間隔の標準偏差が基準の標準偏差よりも小さいと判定する。
(S47)分析部130は、着目するフロー種別を“定常性あり”と判断する。分析部130は、“定常性あり”とする判断結果をフロー種別に対応付けて業務発生間隔評価テーブル119に登録する。
(S48)分析部130は、着目するフロー種別を“定常性なし”と判断する。分析部130は、“定常性なし”とする判断結果をフロー種別に対応付けて業務発生間隔評価テーブル119に登録する。そして、処理を終了する。
(S49)分析部130は、着目するフロー種別について、業務発生間隔が例外範囲内であるプロセスがあるか否かを判定する。当該プロセスがある場合、処理をステップS50に進める。当該プロセスがない場合、処理を終了する。例えば、業務発生間隔管理テーブル118によれば、プロセス“031”の業務発生間隔“27h”はフロー種別“F1”の例外範囲“27h以上”に該当する。このため、プロセス“031”は業務発生間隔が例外範囲内にあると判定される。
(S50)分析部130は、業務発生間隔が例外範囲内であると判断されたプロセスを業務発生間隔についての例外プロセスとして、例外プロセステーブル120に登録する。
ここで、ステップS45における業務発生間隔の平均および標準偏差の計算は、前述のイベント間隔比の平均および標準偏差の計算と同様の方法を用いて行える。業務発生間隔評価テーブル119に業務発生間隔の2乗和をフロー種別毎に記録しておいてもよい。
なお、業務発生間隔の定常性評価では、未発生のイベントを含む不完全なプロセスをサンプルとして除外するものとした。ただし、不完全なプロセスであっても、最初のイベントが発生していれば業務発生間隔は得られるため、当該不完全なプロセスをサンプルとして用いて、業務発生間隔を評価してもよい。
図22は、ピンポイント収集の実行判定の例を示すフローチャートである。以下、図22に示す処理をステップ番号に沿って説明する。以下に示す手順は、図18のステップS14の手順に相当する。
(S51)分析部130は、未発生のイベントを含み、3以上のイベントが発生済であるプロセスを選択する。例えば、プロセス“101”では、イベント“E14”は未発生であり、イベント“E11”、“E12”、“E13”の3つのイベントが発生済である。よって、プロセス“101”はステップS51の選択対象となる。
(S52)分析部130は、業務発生間隔評価テーブル119を参照して、選択したプロセスに対応するフロー種別の業務発生間隔に定常性があるか否かを判定する。定常性がある場合、処理をステップS53に進める。定常性がない場合、処理をステップS56に進める。
(S53)分析部130は、イベント間隔比評価テーブル117を参照して、選択したプロセスに対応するフロー種別のイベント間隔比に定常性があるか否かを判定する。定常性がある場合、処理をステップS54に進める。定常性がない場合、処理をステップS56に進める。
(S54)分析部130は、選択したプロセスの先頭の所定部分のイベント間隔比が、過去の実績のイベント間隔比に一致しているか否かを判定する。当該プロセスの先頭の所定部分のイベント間隔比が、過去の実績のイベント間隔比に一致している場合、処理をステップS55に進める。当該プロセスの先頭の所定部分のイベント間隔比が、過去の実績のイベント間隔比に一致していない場合、処理をステップS56に進める。例えば、先頭の所定部分として、プロセスにおける最初のイベントから3番目のイベントまでの部分が予め指定される。この場合、プロセス“101”の例では、イベント“E11”〜“E13”のイベント間隔比が過去の実績のイベント間隔比(間隔#1、#2)と所定の誤差(例えば、10%程度)内で一致しているか否かを判定することになる。先頭の所定部分としては、3番目以降の何れかのイベントまでの部分を予め指定しておくことができる。
(S55)分析部130は、選択したプロセスに対するピンポイント収集タイミングTy=τ+2σを算出し、収集時刻テーブル121に登録する。例えば、分析部130は、プロセス“101”について、イベント“E14”のログをピンポイント収集する場合、イベント間隔比評価テーブル117の間隔#3に対するσ1を用いて上記σを算出する。Tyの算出方法は、図17で説明した通りである。イベント間隔管理テーブル116に登録されたプロセス“101”の例では、2σは7分程度である。また、分析部130は、境界時刻τ−2σも計算して、収集時刻テーブル121に登録しておく。
(S56)分析部130は、未発生のイベントを含む全プロセスを処理済であるか否かを判定する。未発生のイベントを含む全プロセスを処理済である場合、処理を終了する。未処理のプロセスがある場合、処理をステップS51に進める。
このように、業務発生間隔とイベント間隔比の両方に定常性があり、発生済のイベントのうち先頭の所定部分が過去の実績のイベント間隔比と一致するプロセスをピンポイント収集の対象とする。このようにすれば、ピンポイント収集の対象とするプロセスを定常性の比較的高いプロセスに絞り込むことができる。
ただし、ステップS52,S54の両方または何れか一方の判定を行わずにピンポイント収集の実行判定を行ってもよい。例えば、先頭から2番目までのイベントが発生しており、3番目以降のイベントが発生していないプロセスもピンポイント収集の対象候補としたい場合には、ステップS54の判定を行わないようにすればよい。ステップS54の判定を行わないのであれば、分析部130は、図18のステップS13の判定を、「未発生のイベントを含み、“2”以上のイベントが発生済のプロセスがあるか否か」の判定とする。更に、この場合、ステップS51では、「未発生のイベントを含み、“2”以上のイベントが発生済であるプロセスを選択する」ことになる。
図23は、ピンポイント収集処理の例を示すフローチャートである。以下、図23に示す処理をステップ番号に沿って説明する。以下に示す手順は、図18のステップS15の手順に相当する。
(S61)分析部130は、収集時刻テーブル121に登録されたピンポイント収集の時刻に到達したことを検出する。
(S62)分析部130は、ピンポイント収集の対象イベントのログ取得を試みる。例えば、分析部130は、プロセスIDおよびイベント名を指定して対象のログを送るように業務サーバ200に指示してもよい。あるいは、分析部130は、現時刻までにログテーブル111に登録された各業務のログの中から対象イベントのログを検索してもよい。
(S63)分析部130は、ステップS62の試行結果に基づいて、対象のイベントが発生しているか否かを判定する。発生している場合、処理をステップS65に進める。発生していない場合、処理をステップS64に進める。対象のイベントのログを取得できれば、対象のイベントが発生していることになる。対象のイベントのログを取得できなければ、対象のイベントが発生していないことになる。
(S64)分析部130は、出力部140にアラート通知を指示する。出力部140は、ピンポイント収集の対象のイベントに係る作業が行われていない旨を警告する。例えば、出力部140は、ディスプレイ11に警告内容を表示させてもよい。出力部140は、予め定められた電子メールアドレスに対して、警告内容を記述した電子メールを送信してもよい。出力部140は、予め定められた端末装置に対して、警告内容を示すメッセージを送信して、当該端末装置のディスプレイに表示させてもよい。
(S65)分析部130は、ピンポイント収集で取得されたログのタイムスタンプを参照して、当該イベントが境界時刻τ−2σよりも前の時刻で発生しているか否かを判定する。境界時刻よりも前の時刻で発生している場合、処理をステップS66に進める。境界時刻よりも後の時刻で発生している場合、処理をステップS67に進める。
(S66)分析部130は、出力部140にアラート通知を指示する。出力部140は、ピンポイント収集の対象のイベントに係る作業が行われるのが早過ぎる(予定通りに作業が行われていない)旨を警告する。具体的な警告方法はステップS64と同様である。
(S67)分析部130は、ピンポイント収集で取得されたイベントのログを用いて不完全であったプロセスを補完する(プロセスの構成)。例えば、分析部130はイベント間隔管理テーブル116で未登録となっているイベント間隔の値を埋めることができる。また、分析部130は、ユーザに提示する業務フロー図を補完することができる。
(S68)分析部130は、収集時刻テーブル121に登録された全てのプロセスについてピンポイント収集を完了したか否かを判定する。全て完了した場合、処理を終了する。未完了のピンポイント収集がある場合、次のピンポイント収集の時刻まで待機して、処理をステップS61に進める。
図24は、ピンポイント収集の具体例を示す図である。図24(A)はプロセス“101”において、未発生であったイベント“E14”をピンポイント収集により検出できた場合を例示している。図24(B)はプロセス“101”において、未発生であったイベント“E14”をピンポイント収集で検出できなかった場合を例示している。
プロセス“101”の例の場合、過去のイベント間隔比の平均から予測される時刻τはイベント“E13”の発生時刻から3時間6分(=(0.4920/0.1588)×1時間)経過後である。イベント“E13”の発生時刻は、13時00分なのでτを16時6分と予測できる。また、イベント“E13”、“E14”のイベント間隔比の標準偏差σ1=0.01を時間(分)に換算してσを求めると、σ=(1/0.1588)×0.01×60分=3.778分である。よって、2σは7分程度である。
このため、イベント“E14”のピンポイント収集タイミングTy=τ+2σは16時13分となる。また、境界時刻τ−2σは15時59分となる。分析部130は、時刻Tyのログ収集により、イベント“E14”の発生を検出できれば、定期収集で取得済のプロセス“101”の他のイベントに対してイベント“E14”を直ちに補完できる(図24(A)の例)。
一方、分析部130は、時刻Tyにおいて、イベント“E14”の発生を検出できなければ、定常的に行われている業務が未実施である旨を出力部140により警告させる(図24(B)の例)。なお、前述のように、時刻Tyのログ収集により、イベント“E14”の発生を検出できたとしても、発生タイミングが境界時刻15時59分よりも前であれば、業務の定常性を損なっている旨を出力部140により警告させる。
図25は、複数のプロセスに対する定期収集の例を示す図である。第2の実施の形態の情報処理システムでは、業務サーバ200により複数の業務処理が行われている。このため、複数のフロー種別のプロセス(業務フロー)が並行して進行する。このため、あるタイミングで定期収集を行うとしても、そのタイミングにおいて各プロセスの全てのイベントが完了している可能性は低い。
例えば、フロー種別“F1”、“F2”、“F3”のプロセスが並行して進行する場合に、業務サーバ200が出力するログを定期収集タイミングT101で確認したとしても、各プロセスについて検出されるイベントの発生状況は次のようになり得る。
監視サーバ100は、フロー種別“F1”のプロセス“101”について、イベント“E11”、“E12”、“E13”が発生していることを検出する。また、フロー種別“F2”のプロセス“102”について、イベント“E21”、“E22”、“E23”が発生していることを検出する。更に、フロー種別“F3”のプロセス“103”について、イベント“E31”が発生していることを検出する。
この場合、タイミングT101の時点において、プロセス“101”のイベント“E14”が未発生である。プロセス“102”は全てのイベントが発生済である。プロセス“103”ではイベント“E32”、“E33”が未発生である。
そこで、監視サーバ100は、プロセス“101”、“103”が一定の条件を満たす場合に、未発生のイベントのログをピンポイント収集する。第2の実施の形態の例では、プロセス“101”のイベント“E14”はピンポイント収集の対象となる。このため、次の定期収集タイミングT102よりも早いタイミングで、プロセス“101”の実行状況を把握できる。すなわち、プロセス“101”の実行状況を迅速に把握できる。また、プロセス“101”の実行状況に応じた警告も迅速に行える。
他方、プロセス“103”のイベント“E32”、“E33”はピンポイント収集の対象とならない。プロセス“103”は、発生済のイベントがイベント“E31”の1つのみだからである。このため、プロセス“103”の残りのイベント“E32”、“E33”の取得は、次の定期収集タイミングT102に行われる。なお、図22のステップS54の判定を行う場合には、フロー種別“F3”のプロセスはピンポイント収集の対象とならない(ステップS54の判定はイベント数が4以上のプロセスに対して行えるものだからである)。一方、前述のように、図22のステップS54の判定を省略してもよい。この場合、ある定期収集のタイミングでイベント“E31”、“E32”が発生していれば、イベント“E33”のピンポイント収集を行えることになる。
定期収集タイミングT102でも同様にして業務サーバ200が出力するログを参照して、各プロセスのイベントの発生状況が取得される。例えば、監視サーバ100はフロー種別“F1”のプロセス“201”について、イベント“E11”、“E12”が発生していることを検出する。また、フロー種別“F2”のプロセス“152”について、イベント“E21”、“E22”、“E23”が発生していることを検出する。また、フロー種別“F3”のプロセス“103”について、イベント“E32”、“E33”が発生していることを検出する。更に、フロー種別“F3”のプロセス“203”について、イベント“E31”が発生していることを検出する。
監視サーバ100は、定期収集タイミングT102の後も同様にして、プロセス“201”のイベント“E13”、“E14”のログのピンポイント収集を行い得る(ただし、図22のステップS54の判定を行わない場合)。
以上のように、監視サーバ100によれば、処理の実行状況を効率的に取得できる。ここで、システムが出力するログを分析して業務フローの実行状況を把握するために、業務サーバ200が出力するログを定期的に収集することが考えられる。しかし、上記のように定期収集を行うタイミングによっては、業務フローに含まれるイベントのログを全て収集することができない場合がある。すると、業務フローを組み立てられないために、業務の分析が遅延し得る。
これに対して、定期収集の周期を短くすることも考えられる。しかし、ログを収集・分析する頻度が増大すると、監視サーバ100の負荷が増大し得る。また、未発生分のイベントのログを定期収集時点から継続して監視し続けることも考えられる。しかし、この場合も常時ログの監視を行うことになり、監視サーバ100の負荷が増大し得る。
そこで、監視サーバ100は、定期収集タイミングで未発生であるイベントの実行状況を、過去の実績から予測されたタイミングで取得する。したがって、次の定期収集タイミングまで待つよりも早く、未発生のイベントの実行状況を把握できる。このため、例えば、未発生のイベントに係る作業が行われていないなどの異常があれば、ユーザに早期に警告し得る。例えば、当該作業が次の定期収集タイミングまで放置されてしまうことの防止を図れる。
また、ピンポイント収集では、対象とするイベントに限定して実行状況を取得し、ピンポイント収集のタイミングでは着目するイベント、プロセスおよびフロー種別に絞って分析を行える。このため、他の業務も一緒に分析する場合に比べて、監視サーバ100の分析処理の負荷の増大を抑制できる。
特に、発生した一連のイベントを分断することなくプロセスを構成できるので、業務の定常性の判定精度を向上できる。また、ピンポイント収集において、予測された時刻付近に対象のイベントが発生しなかった場合、または、許容される範囲外で当該イベントが発生した場合は、次の定期収集を待つよりも早く、定常性を逸脱したプロセスがある旨を警告できる。
このように、未発生のイベントの発生状況を取得するための処理負荷の増大を抑制しながら、未発生のイベントの発生タイミングに合わせて、当該イベントの発生状況を迅速に確認できる。すなわち、未完了であるイベントの処理の実行状況も効率的に把握できる。その結果、定常的に行われている業務において、その定常性から逸脱した業務を即座に分析し、ボトルネックとなっている作業を把握して、業務改善を促進できる。
なお、第1の実施の形態の情報処理は、演算部1bにプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、プロセッサ101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体(例えば、光ディスク13、メモリ装置14およびメモリカード16など)に記録できる。
例えば、プログラムを記録した記録媒体を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。