[対応フロー生成の参考例]
まず、ユーザ側で発生した障害を電話の対応により解決する障害対応業務において、対応履歴に対する対応フロー(障害解決フロー)を生成する参考例を、図19を参照して説明する。図19は、対応フロー生成の参考例を示す図である。図19に示すように、対応履歴として、「サイトにアクセスできない」という障害記事に対する2つの対応記事a,bが示されている。対応記事aには、「インターネット一時ファイルを削除」、「ブラウザをリセット」、「証明書を更新」、「解決したためクローズ」のイベント列が対応順に記述されている。対応記事bには、「ブラウザ履歴を削除」、「ブラウザをリセット」、「グループポリシーを更新」、「解決したためクローズ」のイベント列が対応順に記述されている。
情報処理装置は、対応履歴a,bを入力して、入力した対応履歴a,bのそれぞれのイベント列を重ね合わせて有向グラフを生成する。すなわち、情報処理装置は、複数の対応履歴のそれぞれのイベント列の同じイベントを統合して、複数の対応履歴に対する有向グラフを生成する。ここでは、「ブラウザをリセット」のイベントが、対応履歴a,bのそれぞれのイベント列の同じイベントである。情報処理装置は、「ブラウザをリセット」のイベントを統合して、対応履歴a,bに対する有向グラフを生成する。そして、情報処理装置は、1つのノードから複数のノードに遷移している箇所を分岐箇所とし、分岐ノードを追加して、対応履歴a,bに対する対応フローを生成する。
しかしながら、ユーザ側で発生した障害を電話の対応により解決する障害対応業務において、対応履歴のイベントの遷移は、オペレータによって、必ずしも同じ粒度で記述されるわけではない。したがって、イベントの内容が表面的に一致することで、統合すべきでないイベントが統合されてしまう状況が生じてしまう。これにより、複数の対応履歴から障害解決フローを適切に生成することが難しい。
そこで、以降では、対応履歴に含まれるイベントの内容の粒度が異なっていても、適切に対応フローを生成するグラフ生成方法について説明する。
[情報処理装置の構成]
図1は、実施例に係る情報処理装置の機能構成の一例を示す図である。図1に示すように、情報処理装置1は、制御部10および記憶部20を有する。
制御部10は、CPU(Central Processing Unit)などの電子回路に対応する。そして、制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部10は、イベント抽出部11、イベント遷移情報生成部12、イベント統合部13、検証対象イベント検出部14、イベント検証部15およびイベント修正部16を有する。なお、イベント抽出部11は、分類部の一例である。イベント統合部13は、生成部の一例である。検証対象イベント検出部14およびイベント検証部15は、検証部の一例である。
記憶部20は、例えば、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部20は、イベント情報21、イベント遷移情報22、グラフ情報23、部分経路情報24およびグラフ情報(修正)25を有する。
イベント情報21は、対応履歴30の対応記事から抽出されるイベント群の情報である。なお、イベント情報21は、後述するイベント抽出部11によって生成される。
ここで、対応履歴30とは、ユーザ側が発生した障害案件ごとに、オペレータがユーザを案内した対応手順を記憶した情報のことをいう。なお、対応履歴30は、時系列イベント情報の一例である。対応履歴30の一例を、図2を参照して説明する。図2は、対応履歴の一例を示す図である。図2に示すように、対応履歴30は、対応履歴ID、障害記事および対応記事を対応付けた情報である。対応履歴IDは、各案件の対応履歴を識別するID(IDentifier)である。障害記事は、障害の大まかな内容を示す。対応記事は、障害記事に示された障害に対して、オペレータが案内した処理またはユーザが実施した処理を順番に記述した情報である。
一例として、対応履歴IDが「002」である場合に、障害記事として「サイトにアクセスできない」、対応記事として「初期パスワードでのログインを試す→ログイン失敗 パスワードリセットを選択→パスワードリセット画面が出る パスワードを後でリセット」を記憶している。なお、対応記事の中の矢印(→)について、矢印前が前提となる動作(行為)、矢印後が行為をした結果の状態を示す。
ここで、イベント情報21の一例を、図3を参照して説明する。図3は、実施例に係るイベント情報の一例を示す図である。図3に示すように、イベント情報21は、対応履歴ID、発生順序、属性およびイベント名を対応付けた情報である。対応履歴IDは、各案件の対応履歴を識別するIDである。発生順序は、対応履歴30の対応記事内でのイベントの発生順序を示す。属性は、イベントの属性を示す。属性には、例えば、「行為(動作)」や行為をした結果を示す「状態」が挙げられる。イベント名は、イベント(処理)の処理名を示す。
一例として、対応履歴IDが「001」である場合に、発生順序として「4」、属性として「行為」、イベント名として「アカウント名を再入力してログインを試す」を記憶している。発生順序として「5」、属性として「状態」、イベント名として「ログイン失敗」を記憶している。
図1に戻って、イベント遷移情報22は、対応履歴30の対応記事に出現する、遷移するイベントを表す(順序が隣接する)2つのイベントの組み合わせを記録する情報である。なお、イベント遷移情報22は、後述するイベント遷移情報生成部12によって生成される。
ここで、イベント遷移情報22の一例を、図4を参照して説明する。図4は、実施例に係るイベント遷移情報の一例を示す図である。図4に示すように、イベント遷移情報22は、遷移前イベント名、遷移後イベント名および遷移頻度を対応付けた情報である。遷移前イベント名は、順序が隣接する2つのイベントのうち先に発生するイベントの名称である。遷移後イベント名は、順序が隣接する2つのイベントのうち後に発生するイベントの名称である。遷移頻度は、前イベント名と後イベント名の組み合わせが出現する回数を示す。
一例として、遷移前イベント名が「初期パスワードでのログインを試す」である場合に、遷移後イベント名として「ログイン失敗」、遷移頻度として「1」を記憶している。
図1に戻って、グラフ情報23は、複数の対応履歴30の重ね合わせによって生成されるグラフのノードおよびその接続を記録する情報である。なお、グラフ情報23は、後述するイベント統合部13によって生成される。
ここで、グラフ情報23の一例を、図5を参照して説明する。図5は、実施例に係るグラフ情報の一例を示す図である。図5に示すように、グラフ情報23は、属性、イベント名、入次数、出次数、前イベント名、後イベント名、検証対象および修正対象を対応付けた情報である。属性は、ノードに対応するイベントの属性を示す。属性は、イベント情報21内の属性に対応する。イベント名は、イベント(処理)の処理名を示す。イベント名は、イベント情報21内のイベント名に対応する。入次数は、重ね合わせたグラフにおいて、イベント名に対応するノードに入る(遷移する)エッジの本数である。出次数は、重ね合わせたグラフにおいて、イベント名に対応するノードから出る(遷移する)エッジの本数である。前イベント名は、遷移元のノードに対応するイベント名である。前イベント名に含まれるイベントの数は、入次数に一致する。後イベント名は、遷移先のノードに対応するイベント名である。後イベント名に含まれるイベントの数は、出次数に一致する。検証対象は、後述するイベント検証部15によって検証の対象となるイベントの有無を示す。検証対象には、検証の対象となるイベントが有る場合には「○」、無い場合には「 」が示される。検証対象は、後述する検証対象イベント検出部14によって記録される。修正対象は、修正を行うイベントの有無を示す。修正対象には、修正を行うイベントが有る場合には「○」、無い場合には「 」が示される。修正対象は、後述するイベント修正部16によって記録される。
図1に戻って、部分経路情報24は、グラフの中の部分経路を記録する情報である。なお、部分経路情報24は、後述するイベント検証部15によって生成される。
ここで、部分経路情報24の一例を、図6を参照して説明する。図6は、実施例に係る部分経路情報の一例を示す図である。図6に示すように、部分経路情報24は、検証対象イベント、部分経路および対応履歴IDを対応付けた情報である。検証対象イベントは、検証の対象となるイベントである。部分経路は、検証対象イベントと、当該イベントの前後のイベントとを繋げたイベント列を示す。対応履歴IDは、部分経路が含まれる対応履歴が存在する場合に部分経路が含まれる対応履歴のIDである。
一例として、検証対象イベントが「ログイン失敗」である場合に、部分経路として「初期パスワードでのログイン→ログイン失敗→パスワードリセットを選択」、対応履歴として「002」を記憶している。検証対象イベントが「ログイン失敗」である場合に、部分経路として「初期パスワードでのログイン→ログイン失敗→心当たりのパスワードでログイン」、対応履歴として「 」を記憶している。これは、部分経路が含まれる対応履歴が存在しないことを示している。
グラフ情報(修正)25は、グラフ情報23を修正した結果のグラフ情報である。なお、グラフ情報(修正)25は、後述するイベント修正部16によって修正される。グラフ情報(修正)25の一例は、後述する。
イベント抽出部11は、同じ障害に対する複数の対応記事からそれぞれイベントを抽出する。例えば、イベント抽出部11は、グラフ生成対象の障害記事の内容を受け取り、障害記事と一致する対応履歴30を検索する。そして、イベント抽出部11は、検索した複数の対応履歴30からそれぞれの対応記事を抽出する。イベント抽出部11は、それぞれの対応記事ごとに、対応記事を解析して、対応記事から対応手順を構成する処理および処理結果をイベントとして抽出する。加えて、イベント抽出部11は、対応記事から処理および処理結果の発生順序を抽出する。そして、イベント抽出部11は、抽出したイベントおよび抽出した発生順序を用いて、イベント情報21を生成する。
イベント遷移情報生成部12は、イベント情報21からイベント遷移情報22を生成する。例えば、イベント遷移情報生成部12は、イベント情報21に含まれる対応履歴IDごとに、以下の処理を行う。イベント遷移情報生成部12は、対応履歴IDに対応する対応記事について、発生順序が連続する2つのイベントの組み合わせを抽出する。イベント遷移情報生成部12は、抽出した組み合わせがイベント遷移情報22に存在しない場合には、イベント遷移情報22の行を追加し、遷移前イベント名欄に、組み合わせのうち前に処理されるイベント名を書き込む。イベント遷移情報生成部12は、イベント遷移情報22の遷移後イベント名欄に、組み合わせのうち後に処理されるイベント名を書き込む。イベント遷移情報生成部12は、組み合わせの出現回数が1回あったことを示す「1」を遷移頻度欄に書き込む。イベント遷移情報生成部12は、抽出した組み合わせがイベント遷移情報22に存在する場合には、存在する行の遷移頻度欄の値を1加える。イベント遷移情報生成部12は、該当する対応履歴IDの処理が終了するまで、イベント遷移情報生成処理を繰り返す。
イベント統合部13は、イベント遷移情報22に基づいて、表記が共通するイベントは統合して1つのノードとし、イベント間の遷移をアークとした有向グラフを生成するために、グラフ情報23を生成する。なお、イベント統合部13の詳細な処理は、後述する。
検証対象イベント検出部14は、イベントの属性および有向グラフにおけるノードの次数に基づいて、検証対象となるノードに対応するイベントを検出する。例えば、検証対象イベント検出部14は、グラフ情報23に記録されているイベント名欄のイベントを1つずつ選択する。検証対象イベント検出部14は、グラフ情報23から、選択したイベントの属性、入次数および出次数をそれぞれ取得する。検証対象イベント検出部14は、属性が行為をした結果を示す「状態」、且つ、入次数と出次数がいずれも2以上である場合には、選択したイベントを検証対象として検出する。これは、「状態」のイベントに複数のアークが入力し、このイベントから複数のアークが出力する場合には、対応履歴30の対応記事に含まれない経路が存在する場合があるからである。また、「状態」のイベントは、前提となる複数の「行為」が違っていてもそれぞれの「行為」の結果を示す「状態」が同じであれば、複数のアークを入力することがある、この「状態」のイベントの後のイベントが複数存在すると、対応履歴30に含まれない経路が存在してしまう場合がある。かかる経路が存在すると、適切な対応フローを生成できない。そこで、検証対象イベント検出部14は、かかる検証対象となる「状態」のイベントを検出する。
イベント検証部15は、検証対象のイベントについて、前後のイベントとの部分経路が対応履歴30における対応記事の中のイベント遷移に含まれるかどうかを検証する。
例えば、イベント検証部15は、検証対象のイベントに対して、当該イベントおよび当該イベントの前後のイベントを組み合わせた部分経路を生成する。一例として、イベント検証部15は、検証対象イベント検出部14によって検出された検証対象のイベントを1つずつ選択する。イベント検証部15は、グラフ情報23から、選択した検証対象のイベントに対する前イベントおよび後イベントを取得する。イベント検証部15は、前イベント、検証対象のイベント、後イベントを順につないだ3つのイベントからなる部分経路を生成する。イベント検証部15は、検証対象のイベントおよび生成した部分経路を部分経路情報24に書き込む。イベント検証部15は、選択した検証対象のイベントに対する、前後のイベントとの全ての組み合わせについて、部分経路の生成処理を行う。
また、イベント検証部15は、生成された部分経路が対応履歴30内の対応記事中に存在するか否かを検証し、存在しないと検証した場合には、検証対象のイベントを修正対象のイベントとする。一例として、イベント検証部15は、部分経路情報24から部分経路を1つずつ選択する。イベント検証部15は、イベント情報21から対象の対応履歴IDに対する複数の対応記事(イベント群)を取得する。イベント検証部15は、複数の対応記事ごとに、各対応記事に含まれる全てのイベントをつないだ経路に、選択した部分経路が含まれているか否かを判定する。イベント検証部15は、いずれかの対応記事に、選択した部分経路が含まれていると判定した場合には、部分経路が含まれていた対応記事に対する対応履歴IDを部分経路情報24に書き込む。そして、イベント検証部15は、選択中の検証対象のイベントの全ての部分経路に対して対応履歴IDが書き込まれているか否かを判定する。イベント検証部15は、全ての部分経路に対して対応履歴IDが書き込まれていると判定した場合には、選択中の検証対象のイベントを修正対象のイベントとしない。これは、全ての部分経路が対象の対応履歴30の対応記事に含まれているからである。イベント検証部15は、いずれかの部分経路に対して対応履歴IDが書き込まれていないと判定した場合には、選択中の検証対象のイベントを修正対象のイベントとする。これは、いずれかの部分経路が対象の対応履歴30の対応記事に含まれていないからである。
イベント修正部16は、修正対象のイベントを、直前の行為に関するイベントを追加したイベントに修正する。例えば、イベント修正部16は、イベント検証部15によって検証された結果の修正対象のイベントを1つずつ選択する。イベント修正部16は、イベント情報21を参照して、選択した修正対象のイベントの1つ前のイベントを取得する。イベント修正部16は、選択したイベントのイベント名を、当該イベント名の1つ前のイベント名を追記したイベント名に修正する。イベント修正部16は、イベント情報21に対して、選択したイベントを修正したイベントに修正する。そして、イベント修正部16は、全ての修正対象のイベントに対してイベント修正処理を完了すると、修正したイベント情報21に対して、イベント遷移情報生成処理を実行して、イベント遷移情報22を再生成する。そして、イベント修正部16は、再生成したイベント遷移情報22に対して、イベント統合処理を実行してグラフ情報23を再生成してグラフ情報(修正)25を生成する。そして、イベント修正部16は、グラフ情報(修正)25からグラフ40を出力する。
次に、対応履歴30からグラフ40を生成する処理を、図7~図11を参照して説明する。
[イベント統合処理の一例]
図7は、実施例に係るイベント統合処理の一例を示す図である。図7左に示すように、対応履歴30には、障害記事が「サイトにログインできない」である場合の複数の対応記事001,002,003,004が含まれている。対応記事001は、対応履歴IDが「001」の対応記事である。対応記事002は、対応履歴IDが「002」の対応記事である。対応記事003は、対応履歴IDが「003」の対応記事である。対応記事004は、対応履歴IDが「004」の対応記事である。
イベント抽出部11は、同じ障害記事に対する複数の対応記事001,002,003,004からそれぞれイベントを抽出して、対応履歴ID、抽出したイベント、発生順序および属性を加えたイベント情報21(図3参照)を生成する。属性の一例として、「ログイン失敗」は、対応記事001内の「アカウント名を再入力してログインを試す」や「心当たりのパスワードでのログインを試す」、対応記事002内の「初期パスワードでのログインを試す」の行為をした結果であるので、属性として「状態」が記録される。そして、イベント遷移情報生成部12は、イベント情報21を参照して、対応履歴IDごとに、発生順序が連続する2つのイベント名の組み合わせを抽出する。イベント遷移情報生成部12は、組み合わせがイベント遷移情報22に存在しない場合には、組み合わせのイベント名を追加し、遷移頻度を「1」に設定する。イベント遷移情報生成部12は、組み合わせがイベント遷移情報22に存在する場合には、存在する行の遷移頻度を1加える。このようにして、イベント遷移情報生成部12は、イベント遷移情報22(図4参照)を生成する。
そして、イベント統合部13は、イベント遷移情報22に基づいて、表記が共通するイベントは統合して1つのノードとしたグラフ情報23を生成し、イベント間の遷移をアークとした有向グラフを生成する。図7右に示すように、イベント統合部13は、イベント遷移情報22に基づいて、グラフ情報23(図5参照)を生成し、図7左に示す対応履歴30に対する有向グラフを生成する。ここでは、「ログイン失敗」のイベントの表記が共通するので、統合されている。また、「パスワードリセット画面が出る」のイベントの表記が共通するので、統合されている。
[イベント検証処理の一例]
図8は、実施例に係るイベント検証処理の一例を示す図である。図8左上には、図7右に示した有向グラフの中の統合されたイベント「ログイン失敗」および当該イベントの前後のイベントが示されている。図8左下には、図7右に示した有向グラフの中の統合されたイベント「パスワードリセット画面が出る」および前後のイベントが示されている。
検証対象イベント検出部14は、グラフ情報23に記録されているイベント名について、属性が行為をした結果を示す「状態」、且つ、入次数と出次数がいずれも2以上である場合には、このイベントを検証対象として検出する。ここでは、イベント名が「ログイン失敗」である場合には、属性が「状態」、入次数が「3」、出次数が「2」であるので、検証対象のイベントとして検出される。また、イベント名が「パスワードリセット画面が出る」である場合には、属性が「状態」、入次数が「2」、出次数が「2」であるので、検証対象のイベントとして検出される。
そして、イベント検証部15は、グラフ情報23から、検証対象のイベントに対する前イベントおよび後イベントを取得し、前イベント、検証対象のイベント、後イベントを順につないだ部分経路を生成し、部分経路情報24に書き込む。この結果、イベント検証部15は、部分経路情報24について、検証対象のイベントに対する部分経路(図6の検証対象イベントおよび部分経路を参照)を生成する。ここでは、検証対象のイベントが「ログイン失敗」である場合には、図8右上のような部分経路が生成される。検証対象のイベントが「パスワードリセット画面が出る」である場合には、図8右下のような部分経路が生成される。
そして、イベント検証部15は、検証対象イベントに対して、部分経路を1つずつ選択し、選択した部分経路がいずれかの対応記事に含まれているか否かを判定する。
ここでは、検証対象のイベント「ログイン失敗」に対して「初期パスワードでのログイン→ログイン失敗→パスワードリセットを選択」の部分経路は、対応記事002に含まれている。「アカウント名を再入力してログイン→ログイン失敗→心当たりのパスワードでのログイン」の部分経路は、対応記事001に含まれている。「心当たりのパスワードでログイン→ログイン失敗→パスワードリセットを選択」の部分経路は、対応記事001に含まれている。ところが、「初期パスワードでのログイン→ログイン失敗→心当たりのパスワードでのログイン」の部分経路は、対応履歴30内のいずれの対応記事にも含まれていない。「アカウント名を再入力してログイン→ログイン失敗→パスワードリセットを選択」の部分経路は、いずれの対応記事にも含まれていない。
そして、イベント検証部15は、検証対象のイベントに対する全ての部分経路の中で、対応記事中に含まれない部分経路がある場合には、当該検証対象のイベントを修正対象のイベントとする。ここでは、検証対象のイベントが「ログイン失敗」である場合には、このイベントに対する全ての部分経路の中で対応記事中に含まれない部分経路がある。すなわち、「初期パスワードでのログイン→ログイン失敗→心当たりのパスワードでのログイン」、「アカウント名を再入力してログイン→ログイン失敗→パスワードリセットを選択」は、対応記事中に含まれない部分経路である。したがって、イベント検証部15は、「ログイン失敗」の検証対象のイベントを修正対象のイベントとする。
また、検証対象のイベント「パスワードリセット画面が出る」に対して「パスワードリセットを選択→パスワードリセット画面が出る→パスワードリセットを実施」の部分経路は、対応記事001に含まれている。「パスワードリセットを選択→パスワードリセット画面が出る→パスワードを後でリセット」の部分経路は、対応記事002に含まれている。「アカウント名設定を実施→パスワードリセット画面が出る→パスワードリセットを実施」の部分経路は、対応記事003に含まれている。「アカウント名設定を実施→パスワードリセット画面が出る→パスワードを後でリセット」の部分経路は、対応記事004に含まれている。すなわち、検証対象のイベント「パスワードリセット画面が出る」に対して全ての部分経路がいずれかの対応記事に含まれている。
そして、イベント検証部15は、検証対象のイベントに対する全ての部分経路の中で、対応記事中に含まれない部分経路がある場合には、当該検証対象のイベントを修正対象のイベントとする。ここでは、検証対象のイベントが「パスワードリセット画面が出る」である場合には、このイベントに対する全ての部分経路の中で、対応記事中に含まれない部分経路がない。したがって、イベント検証部15は、「パスワードリセット画面が出る」の検証対象のイベントを修正対象のイベントとしない。
[イベント修正処理の一例]
図9は、実施例に係るイベント修正処理の一例を示す図である。図9に示すように、修正対象のイベント「ログイン失敗」を含む対応記事001,002の修正版が示されている。なお、図9では、修正対象のイベントを含む対応記事を修正する場合としたが、修正対象のイベントを含むイベント情報21を修正する場合であっても良い。
イベント修正部16は、イベント検証部15によって検証された結果の修正対象のイベントを選択する。ここでは、修正対象のイベントとして「ログイン失敗」が選択される。そして、イベント修正部16は、選択した修正対象のイベントの1つ前のイベントを取得し、選択した修正対象のイベントのイベント名を、当該イベント名の1つ前のイベント名を追記したイベント名に修正する。ここでは、対応記事001では、イベント修正部16は、修正対象のイベント「ログイン失敗」の1つ前のイベント「アカウント名を再入力してログインを試す」を取得する。そして、イベント修正部16は、修正対象のイベント「ログイン失敗」を「アカウント名を再入力してログインを試す→ログイン失敗」に修正する。イベント修正部16は、修正対象のイベント「ログイン失敗」の1つ前のイベント「心当たりのパスワードでのログインを試す」を取得する。そして、イベント修正部16は、修正対象のイベント「ログイン失敗」を「心当たりのパスワードでのログインを試す→ログイン失敗」に修正する。また、対応記事002では、イベント修正部16は、修正対象のイベント「ログイン失敗」の1つ前のイベント「初期パスワードでのログインを試す」を取得する。そして、イベント修正部16は、修正対象のイベント「ログイン失敗」を「初期パスワードでのログインを試す→ログイン失敗」に修正する。
この後、イベント修正部16は、修正した対応記事に対して、イベント抽出処理を実行してイベント情報21を再生成する。そして、イベント修正部16は、修正したイベント情報21に対して、イベント遷移情報生成処理を実行して、イベント遷移情報22を再生成する。そして、イベント修正部16は、再生成したイベント遷移情報22に対して、イベント統合処理を実行してグラフ情報23を再生成してグラフ情報(修正)25を生成する。
ここで、グラフ情報(修正)25の一例を、図10を参照して説明する。図10は、実施例に係るグラフ情報(修正)の一例を示す図である。図10に示すように、イベント修正部16によって再生成されたグラフ情報(修正)25が表されている。
グラフ情報(修正)25には、修正対象のイベント「ログイン失敗」が1つ前のイベントを追記したイベントに修正されている。一例として、符号a1には、イベント名として「初期パスワードでのログインを試す→ログイン失敗」が記述されている。このイベント名の属性は、「行為→状態」である。そして、このイベント名に対する入次数、出次数は、共に「1」である。別の例として、符号a2には、イベント名として「アカウント名を再入力してログインを試す→ログイン失敗」が記述されている。このイベント名の属性は、「行為→状態」である。そして、このイベント名に対する入次数、出次数は、共に「1」である。さらに、別の例として、符号a3には、イベント名として「心当たりのパスワードでのログインを試す→ログイン失敗」が記述されている。このイベント名の属性は、「行為→状態」である。そして、このイベント名に対する入次数、出次数は、共に「1」である。
図9に戻って、イベント修正部16は、グラフ情報(修正)25からグラフ40を出力する。ここで、グラフ40の一例を、図11を参照して説明する。図11は、実施例に係るイベント修正処理結果のグラフの一例を示す図である。図11に示すように、図10で示したグラフ情報(修正)25から出力されたグラフ40が表されている。
グラフ40には、修正対象のイベント「ログイン失敗」に対応するノードが1つ前のイベントを追記したイベントノードに修正されている。一例として、符号b1には、ノードに対応するイベント名として「初期パスワードでのログインを試す→ログイン失敗」が記述されている。符号b1のノードに対応するイベント名は、グラフ情報(修正)25の符号a1に対応する。別の例として、符号b2には、ノードに対応するイベント名として「アカウント名を再入力してログインを試す→ログイン失敗」が記述されている。符号b2のノードに対応するイベント名は、グラフ情報(修正)25の符号a2に対応する。さらに、別の例として、符号b3には、ノードに対応するイベント名として「心当たりのパスワードでのログインを試す→ログイン失敗」が記述されている。符号b3のノードに対応するイベント名は、グラフ情報(修正)25の符号a3に対応する。
これにより、イベント修正部16は、対応履歴30に含まれるイベントの内容の粒度が対応履歴30ごとに異なっていても、適切なグラフ40を生成することができる。
次に、実施例に係るグラフ生成処理のフローチャートの一例を、図12~図17を参照して説明する。
[イベント抽出処理のフローチャート]
図12は、実施例に係るイベント抽出処理のフローチャートの一例を示す図である。
図12に示すように、イベント抽出部11は、障害記事の内容を受け付けると(ステップS11)、受け付けた障害記事の内容と一致する内容の障害記事を含む複数の対応履歴30を検索する(ステップS12)。そして、イベント抽出部11は、検索された複数の対応履歴30から、1つの対応履歴30(対応履歴ID)を選択する(ステップS13)。
そして、イベント抽出部11は、選択した対応履歴IDの対応履歴30から対応記事を読み込む(ステップS14)。そして、イベント抽出部11は、対応記事を解析し、イベントに分割する(ステップS15)。そして、イベント抽出部11は、分割したイベントの内容を解析し、イベント名と属性を抽出する(ステップS16)。
そして、イベント抽出部11は、発生順序の最初としてイベント名「Start」を追加し、発生順序の最後としてイベント名「End」を追加する(ステップS17,ステップS18)。そして、イベント抽出部11は、対応履歴ID、発生順序、属性、イベント名をイベント情報21に記録する(ステップS19)。
そして、イベント抽出部11は、すべての対応履歴IDを選択したか否かを判定する(ステップS20)。すべての対応履歴IDを選択していないと判定した場合には(ステップS20;No)、イベント抽出部11は、次の対応履歴IDを選択すべく、ステップS13に移行する。
一方、すべての対応履歴IDを選択したと判定した場合には(ステップS20;Yes)、イベント抽出部11は、イベント抽出処理を終了する。
[イベント遷移情報生成処理のフローチャート]
図13は、実施例に係るイベント遷移情報生成処理のフローチャートの一例を示す図である。なお、イベント遷移情報生成部12は、イベント抽出部11によって生成されたイベント情報21を受け付けたものとする。
図13に示すように、イベント遷移情報生成部12は、イベント情報21に含まれる対応履歴IDを1つ選択する(ステップS31)。イベント遷移情報生成部12は、変数iに「1」を設定する(ステップS32)。なお、変数iは、発生順序のインデックスとして用いられる。
そして、イベント遷移情報生成部12は、発生順序が変数iのイベント名および発生順序が変数i+1のイベント名をイベント情報21から読み込み、それぞれ前イベント名、後イベント名とする(ステップS33)。そして、イベント遷移情報生成部12は、前イベント名と後イベント名の組み合わせがイベント遷移情報22に存在するか否かを判定する(ステップS34)。
前イベント名と後イベント名の組み合わせがイベント遷移情報22に存在すると判定した場合には(ステップS34;Yes)、イベント遷移情報生成部12は、この組み合わせが存在する行の遷移頻度の値に「1」を加えた値を書き込む(ステップS35)。そして、イベント遷移情報生成部12は、ステップS37に移行する。
一方、前イベント名と後イベント名の組み合わせがイベント遷移情報22に存在しないと判定した場合には(ステップS34;No)、イベント遷移情報生成部12は、イベント遷移情報22の行を追加する。イベント遷移情報生成部12は、「遷移前イベント名」欄および「遷移後イベント名」欄にそれぞれ該当するイベント名を書き込み、「遷移頻度」欄に「1」を書き込む(ステップS36)。すなわち、イベント遷移情報生成部12は、「遷移前イベント名」欄に組み合わせ内の前イベント名を書き込み、「遷移後イベント名」欄に組み合わせ内の後イベント名を書き込み、「遷移頻度」欄に「1」を書き込む。そして、イベント遷移情報生成部12は、ステップS37に移行する。
ステップS37において、イベント遷移情報生成部12は、発生順序i+1のイベント名が「End」であるか否かを判定する(ステップS37)。発生順序i+1のイベント名が「End」でないと判定した場合には(ステップS37;No)、イベント遷移情報生成部12は、変数iを「1」加算する(ステップS38)。そして、イベント遷移情報生成部12は、次の発生順序の処理をすべく、ステップS33に移行する。
一方、発生順序i+1のイベント名が「End」であると判定した場合には(ステップS37;Yes)、イベント遷移情報生成部12は、すべての対応履歴IDを選択したか否かを判定する(ステップS39)。すべての対応履歴IDを選択していないと判定した場合には(ステップS39;No)、イベント遷移情報生成部12は、次の対応履歴IDを選択すべく、ステップS31に移行する。
一方、すべての対応履歴IDを選択したと判定した場合には(ステップS39;Yes)、イベント遷移情報生成部12は、イベント遷移情報生成処理を終了する。
[イベント統合処理のフローチャート]
図14は、実施例に係るイベント統合処理のフローチャートの一例を示す図である。なお、イベント統合部13は、イベント遷移情報生成部12によって生成されたイベント遷移情報22を受け付けたものとする。
図14に示すように、イベント統合部13は、イベント遷移情報22からレコードを1件取得し、遷移前イベント名と遷移後イベント名を取得する(ステップS41)。イベント統合部13は、グラフ情報23の「イベント名」欄に遷移前イベント名を含むレコードが存在するか否かを判定する(ステップS42)。
グラフ情報23の「イベント名」欄に遷移前イベント名を含むレコードが存在しないと判定した場合には(ステップS42;No)、イベント統合部13は、グラフ情報23の行を追加し、「イベント名」欄に遷移前イベント名を書き込む(ステップS43)。そして、イベント統合部13は、遷移前イベント名に対応する属性を、イベント情報21を検索して取得し、取得した属性を「属性」欄に書き込む(ステップS44)。そして、イベント統合部13は、「出次数」欄に「1」を書き込み、遷移後イベント名を「後イベント名」欄に書き込む(ステップS45)。そして、イベント統合部13は、遷移後イベント名が「イベント名」欄に含まれるかを判定すべく、ステップS48に移行する。
一方、グラフ情報23の「イベント名」欄に遷移前イベント名を含むレコードが存在すると判定した場合には(ステップS42;Yes)、イベント統合部13は、該当レコードの「後イベント名」欄に遷移後イベント名が含まれるか否かを判定する(ステップS46)。
該当レコードの「後イベント名」欄に遷移後イベント名が含まれないと判定した場合には(ステップS46;No)、イベント統合部13は、「出次数」欄を1加えた値に更新し、遷移後イベント名を「後イベント」欄に追記する(ステップS47)。すなわち、イベント統合部13は、現レコードの「イベント名」欄に記述されたイベントを統合して1つのノードとする。そして、イベント統合部13は、遷移後イベント名が「イベント名」欄に含まれるかを判定すべく、ステップS48に移行する。
一方、該当レコードの「後イベント名」欄に遷移後イベント名が含まれると判定した場合には(ステップS46;Yes)、イベント統合部13は、遷移後イベント名が「イベント名」欄に含まれるかを判定すべく、ステップS48に移行する。
ステップS48において、イベント統合部13は、グラフ情報23の「イベント名」欄に遷移後イベント名を含むレコードが存在するか否かを判定する(ステップS48)。
グラフ情報23の「イベント名」欄に遷移後イベント名を含むレコードが存在しないと判定した場合には(ステップS48;No)、イベント統合部13は、グラフ情報23の行を追加し、「イベント名」欄に遷移後イベント名を書き込む(ステップS49)。そして、イベント統合部13は、遷移後イベント名に対応する属性を、イベント情報21を検索して取得し、取得した属性を「属性」欄に書き込む(ステップS50)。そして、イベント統合部13は、「入次数」欄に「1」を書き込み、遷移前イベント名を「前イベント名」欄に書き込む(ステップS51)。そして、イベント統合部13は、すべてのレコードを取得したかを判定すべく、ステップS54に移行する。
一方、グラフ情報23の「イベント名」欄に遷移後イベント名を含むレコードが存在すると判定した場合には(ステップS48;Yes)、イベント統合部13は、該当レコードの「前イベント名」欄に遷移前イベント名が含まれるか否かを判定する(ステップS52)。
該当レコードの「前イベント名」欄に遷移前イベント名が含まれないと判定した場合には(ステップS52;No)、イベント統合部13は、「入次数」欄を1加えた値に更新し、遷移前イベント名を「前イベント」欄に追記する(ステップS53)。すなわち、イベント統合部13は、現レコードの「イベント名」欄に記述されたイベントを統合して1つのノードとする。そして、イベント統合部13は、すべてのレコードを取得したかを判定すべく、ステップS54に移行する。
一方、該当レコードの「前イベント名」欄に遷移前イベント名が含まれると判定した場合には(ステップS52;Yes)、イベント統合部13は、すべてのレコードを取得したかを判定すべく、ステップS54に移行する。
ステップS54において、イベント統合部13は、イベント遷移情報22からすべてのレコードを取得したか否かを判定する(ステップS54)。イベント遷移情報22からすべてのレコードを取得していないと判定した場合には(ステップS54;No)、イベント統合部13は、次のレコードを取得すべく、ステップS41に移行する。
一方、イベント遷移情報22からすべてのレコードを取得したと判定した場合には(ステップS54;Yes)、イベント統合部13は、イベント統合処理を終了する。
[検証対象イベント検出処理のフローチャート]
図15は、実施例に係る検証対象イベント検出処理のフローチャートの一例を示す図である。なお、検証対象イベント検出部14は、イベント統合部13によって生成されたグラフ情報23を受け付けたものとする。
図15に示すように、検証対象イベント検出部14は、グラフ情報23に記録されているイベントを1つ選択する(ステップS61)。検証対象イベント検出部14は、選択したイベントの「属性」、「入次数」、「出次数」をそれぞれ取得する(ステップS62)。
そして、検証対象イベント検出部14は、取得した属性は「状態」であるか否かを判定する(ステップS63)。取得した属性は「状態」でないと判定した場合には(ステップS63;No)、検証対象イベント検出部14は、検証対象のイベントでないと判断し、ステップS66に移行する。
一方、取得した属性は「状態」であると判定した場合には(ステップS63;Yes)、検証対象イベント検出部14は、入次数と出次数がいずれも2以上であるか否かを判定する(ステップS64)。入次数と出次数のいずれかまたはどちらも2以上でないと判定した場合には(ステップS64;No)、検証対象イベント検出部14は、検証対象のイベントでないと判断し、ステップS66に移行する。
一方、入次数と出次数がいずれも2以上であると判定した場合には(ステップS64;Yes)、検証対象イベント検出部14は、選択したイベントを検証対象とする(ステップS65)。そして、検証対象イベント検出部14は、グラフ情報23に記録されているすべてのイベントを選択したか否かを判定する(ステップS66)。グラフ情報23に記録されているすべてのイベントを選択していないと判定した場合には(ステップS66;No)、検証対象イベント検出部14は、次のイベントを選択すべく、ステップS61に移行する。
一方、グラフ情報23に記録されているすべてのイベントを選択したと判定した場合には(ステップS66;Yes)、検証対象イベント検出部14は、検証対象イベント検出処理を終了する。
[イベント検証処理のフローチャート]
図16は、実施例に係るイベント検証処理のフローチャートの一例を示す図である。なお、イベント検証部15は、検証対象イベント検出部14によって検出された検証対象のイベントを受け付けたものとする。
図16に示すように、イベント検証部15は、検証対象のイベントを1件選択する(ステップS71)。イベント検証部15は、選択したイベントについて、グラフ情報23から前イベント名と後イベント名を読み込む(ステップS72)。前イベント名には、2以上のイベントが含まれる。後イベント名には2以上のイベントが含まれる。検証対象のイベントについての入次数および出次数は、いずれも2以上であるからである。
そして、イベント検証部15は、前イベント名と後イベント名からそれぞれ1つのイベント名を選択する(ステップS73)。イベント検証部15は、選択した前イベント名と選択した後イベント名は同じであるか否かを判定する(ステップS74)。同じであると判定した場合には(ステップS74;Yes)、イベント検証部15は、ステップS77に移行する。
同じでないと判定した場合には(ステップS74;No)、イベント検証部15は、前イベント名、検証対象のイベント名、後イベント名を順につないだ3つのイベントからなる部分経路を生成する(ステップS75)。イベント検証部15は、検証対象のイベント名と、生成した部分経路を部分経路情報24に書き込む(ステップS76)。そして、イベント検証部15は、ステップS77に移行する。
ステップS77において、イベント検証部15は、前イベント名と後イベント名のすべての組み合わせを選択したか否かを判定する(ステップS77)。前イベント名と後イベント名のすべての組み合わせを選択していないと判定した場合には(ステップS77;No)、イベント検証部15は、次の組み合わせを選択すべく、ステップS73に移行する。
一方、前イベント名と後イベント名のすべての組み合わせを選択したと判定した場合には(ステップS77;Yes)、イベント検証部15は、部分経路情報24から部分経路を1つ選択する(ステップS78)。イベント検証部15は、イベント情報21から対応履歴IDを1つ選択し、StartからEndまでのすべてのイベントをつないだ経路を生成する(ステップS79)。
イベント検証部15は、選択した部分経路が、生成した経路に含まれているか否かを判定する(ステップS80)。選択した部分経路が、生成した経路に含まれていないと判定した場合には(ステップS80;No)、イベント検証部15は、ステップS82に移行する。一方、選択した部分経路が、生成した経路に含まれていると判定した場合には(ステップS80;Yes)、イベント検証部15は、対応履歴IDを部分経路情報24に書き込む(ステップS81)。そして、イベント検証部15は、ステップS82に移行する。
ステップS82において、イベント検証部15は、すべての対応履歴IDを選択したか否かを判定する(ステップS82)。すべての対応履歴IDを選択していないと判定した場合には(ステップS82;No)、イベント検証部15は、次の対応履歴IDを選択すべく、ステップS79に移行する。
一方、すべての対応履歴IDを選択したと判定した場合には(ステップS82;Yes)、イベント検証部15は、部分経路情報24からすべての部分経路を選択したか否かを判定する(ステップS83)。すべての部分経路を選択していないと判定した場合には(ステップS83;No)、イベント検証部15は、次の部分経路を選択すべく、ステップS78に移行する。
一方、すべての部分経路を選択したと判定した場合には(ステップS83;Yes)、イベント検証部15は、部分経路情報24を参照し、すべての部分経路に対して対応履歴IDが書き込まれているか否かを判定する(ステップS84)。すべての部分経路に対して対応履歴IDが書き込まれていると判定した場合には(ステップS84;Yes)、イベント検証部15は、ステップS86に移行する。
一方、すべての部分経路に対して対応履歴IDが書き込まれていないと判定した場合には(ステップS84;No)、イベント検証部15は、選択中の検証対象のイベントを修正対象のイベントとする(ステップS85)。そして、イベント検証部15は、ステップS86に移行する。
ステップS86において、イベント検証部15は、すべての検証対象のイベントを選択したか否かを判定する(ステップS86)。すべての検証対象のイベントを選択していないと判定した場合には(ステップS86;No)、イベント検証部15は、次の検証対象のイベントを選択すべく、ステップS71に移行する。
一方、すべての検証対象のイベントを選択したと判定した場合には(ステップS86;Yes)、イベント検証部15は、イベント検証処理を終了する。
[イベント修正処理のフローチャート]
図17は、実施例に係るイベント修正処理のフローチャートの一例を示す図である。なお、イベント修正部16は、イベント検証部15によって検証された修正対象のイベントを受け付けたものとする。
図17に示すように、イベント修正部16は、修正対象のイベントを1つ選択する(ステップS91)。イベント修正部16は、選択した修正対象のイベントに一致するイベントをイベント情報21から検索する(ステップS92)。イベント修正部16は、検索したイベント情報21のイベントを1つ選択する(ステップS93)。
そして、イベント修正部16は、イベント情報21を参照して、選択したイベントに対して、発生順序が1つ前となるイベントのイベント名(前イベント名)を取得する(ステップS94)。イベント修正部16は、選択したイベントのイベント名を「前イベント名→イベント名」という表記に修正してイベント情報21を修正する(ステップS95)。
そして、イベント修正部16は、イベント情報21から検索したすべてのイベントを選択したか否かを判定する(ステップS96)。すべてのイベントを選択していないと判定した場合には(ステップS96;No)、イベント修正部16は、次のイベントを選択すべく、ステップS93に移行する。
一方、すべてのイベントを選択したと判定した場合には(ステップS96;Yes)、イベント修正部16は、すべての修正対象のイベントを選択したか否かを判定する(ステップS97)。すべての修正対象のイベントを選択していないと判定した場合には(ステップS97;No)、イベント修正部16は、次の修正対象のイベントを選択すべく、ステップS91に移行する。
一方、すべての修正対象のイベントを選択していたと判定した場合には(ステップS97;Yes)、イベント修正部16は、修正したイベント情報21に対して、イベント遷移情報生成処理を実行して、イベント遷移情報22を再生成する(ステップS98)。そして、イベント修正部16は、再生成したイベント遷移情報22に対して、グラフ生成処理を実行してグラフ情報23を再生成する(ステップS99)。そして、イベント修正部16は、イベント修正処理を終了する。
[実施例の効果]
このようにして、情報処理装置1は、記録対象の動作および状態に関する複数の時系列イベント情報にそれぞれ含まれる複数のイベントそれぞれを、動作および状態に分類する。情報処理装置1は、複数の時系列イベント情報に含まれる複数のイベント内容に基づく統合処理により、有向グラフを生成する。そして、情報処理装置1は、統合処理により統合されたイベントであって状態に分類されたイベントを通る、該生成した有向グラフに含まれる経路それぞれが、複数の時系列イベント情報の部分経路に含まれるか否かを検証することにより統合処理の妥当性を判定する。かかる構成によれば、情報処理装置1は、統合されたイベントについて、生成された有向グラフに含まれる経路および複数の時系列イベント情報の部分経路を用いて統合処理の妥当性を判定することで、複数の時系列イベント情報の記録における粒度の違いを検証できる。この結果、情報処理装置1は、複数の時系列イベント情報の記録における粒度が違っていても、有向グラフの生成に適していない粒度であっても、適切に有向グラフを生成することが可能となる。すなわち、情報処理装置1は、複数の時系列イベント情報の記録における粒度が、有向グラフの生成に適していない粒度であっても、適切に有向グラフを生成することが可能となる。
また、情報処理装置1は、妥当でないと判定されたイベントを、直前の動作に関するイベントを追記したイベントに修正して、再度、統合処理により、有向グラフを生成する。かかる構成によれば、情報処理装置1は、状態に関するイベントを直前の動作に関するイベントを追加したイベントに修正することで、記載内容が表面的に一致することで統合すべきでなかったイベントを修正することができる。この結果、情報処理装置1は、粒度を合わせた有向グラフを適切に生成することができる。
また、情報処理装置1は、状態に分類されたイベントおよび有向グラフを構成するイベントノードの入次数および出次数に基づいて、有向グラフに含まれる、検証対象のイベントを絞り込む。そして、情報処理装置1は、検証対象のイベントと前後のイベントとをつなぐ経路それぞれが、複数の時系列イベント情報の部分経路に含まれるか否かを検証する。かかる構成によれば、統合処理の妥当性を検証する対象箇所を容易に絞り込むことができる。
[その他]
なお、情報処理装置1は、既知のパーソナルコンピュータ、ワークステーションなどの装置に、上記した制御部10および記憶部20などの各機能を搭載することによって実現することができる。
また、上記実施例では、図示した装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、装置の分散・統合の具体的態様は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、イベント抽出部11およびイベント遷移情報生成部12を統合集計しても良い。イベント検証部15を、検証対象のイベントに対する前後のイベントとの全ての部分経路を生成する処理部と、検証対象のイベントに対する全ての部分経路に基づいて修正対象のイベントを検出する処理部とに分散しても良い。記憶部20を情報処理装置1の外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図1に示した情報処理装置1と同様の機能を実現する評価プログラムを実行するコンピュータの一例を説明する。図18は、グラフ生成プログラムを実行するコンピュータの一例を示す図である。
図18に示すように、コンピュータ200は、各種演算処理を実行するCPU203と、ユーザからのデータの入力を受け付ける入力装置215と、表示装置209を制御する表示制御部207とを有する。また、コンピュータ200は、記憶媒体からプログラムなどを読取るドライブ装置213と、ネットワークを介して他のコンピュータとの間でデータの授受を行う通信制御部217とを有する。また、コンピュータ200は、各種情報を一時記憶するメモリ201と、HDD(Hard Disk Drive)205を有する。そして、メモリ201、CPU203、HDD205、表示制御部207、ドライブ装置213、入力装置215、通信制御部217は、バス219で接続されている。
ドライブ装置213は、例えばリムーバブルディスク211用の装置である。HDD205は、グラフ生成プログラム205aおよびグラフ生成関連情報205bを記憶する。
CPU203は、グラフ生成プログラム205aを読み出して、メモリ201に展開し、プロセスとして実行する。かかるプロセスは、情報処理装置1の各機能部に対応する。グラフ生成関連情報205bは、イベント情報21、イベント遷移情報22、グラフ情報23、部分経路情報24およびグラフ情報(修正)25に対応する。そして、例えばリムーバブルディスク211が、グラフ生成プログラム205aなどの各情報を記憶する。
なお、グラフ生成プログラム205aについては、必ずしも最初からHDD205に記憶させておかなくても良い。例えば、コンピュータ200に挿入されるフレキシブルディスク(FD)、CD-ROM(Compact Disk Read Only Memory)、DVD(Digital Versatile Disk)、光磁気ディスク、IC(Integrate Circuit)カードなどの「可搬用の物理媒体」に当該プログラムを記憶させておく。そして、コンピュータ200がこれらからグラフ生成プログラム205aを読み出して実行するようにしても良い。