図1に、本技術の実施の形態に係るフロー比較処理装置100のシステム概要図を示す。本実施の形態に係るフロー比較処理装置100は、例えばデータベースA及びBといった業務システムにおけるデータベース(又はそのレプリカ)からプロセスインスタンスを生成するプロセスインスタンス生成部101と、プロセスインスタンス生成部101により生成されたプロセスインスタンスのデータを格納するプロセスインスタンスデータ格納部102と、プロセスインスタンスデータ格納部102に格納されているデータを用いて最多実行フローを抽出する処理を実施する最多実行フロー抽出部103と、最多実行フロー抽出部103の処理結果を格納する最多実行フローデータ格納部104と、プロセスインスタンスデータ格納部102に格納されているデータを用いて各イベント種別(イベント種又はイベントクラスとも呼ぶ)について実態フローの中でどのあたりに出現するのかを特定する処理を実施するイベント所属区間決定処理部105と、イベント所属区間決定処理部105の処理結果を格納するイベント所属区間データ格納部107と、例えばネットワークを介して又は指定された記憶装置等から設計フロー図のデータを取得するフロー図データ取得部108と、フロー図データ取得部108が取得したフロー図データを格納するフロー図データ格納部109と、フロー図データ格納部109に格納されているデータを用いて代表フローを抽出する処理を実施する代表フロー抽出部110と、代表フロー抽出部110の処理結果を格納する代表フローデータ格納部111と、フロー図データ格納部109に格納されているデータを用いてフロー図の各ノードが当該フロー図中どのあたりに出現するのかを特定する処理を実施するノード所属区間決定処理部112と、ノード所属区間決定処理部112の処理結果を格納するノード所属区間データ格納部113と、プロセスインスタンスデータ格納部102とフロー図データ格納部109と最多実行フローデータ格納部104とイベント所属区間データ格納部107と代表フローデータ格納部111とノード所属区間データ格納部113とに格納されているデータを用いて以下で述べる対応付け処理を実施する対応付け処理部116と、対応付け処理部116の処理結果を格納する対応付けデータ格納部115と、入力部114と、表示装置117とを有する。
なお、入力部114は、フロー図データ取得部108と、代表フロー抽出部110と、ノード所属区間決定処理部112と、対応付け処理部116と連携する。また、表示装置117は、ノード所属区間決定処理部112と対応付け処理部116との指示に基づきデータを表示する。入力部114及び表示装置117は、他の処理部と連携する場合もある。
また、以下で述べるような処理によっては、代表フロー抽出部110は、単語データ格納部106に格納されているデータを用いて処理を行う場合もある。
次に、図2乃至図51を用いて図1に示したフロー比較処理装置100の処理内容を説明する。まず、プロセスインスタンス生成部101は、データベースA及びBなどのデータベース群に蓄積されているデータからプロセスインスタンス群を生成し、プロセスインスタンスデータ格納部102に格納する(図2:ステップS1)。この処理は、特開2008−27072号公報などにも開示されている周知の処理である。
例えば、図3に模式的に示すが、データベースAにはテーブルa及びbが格納されており、プロセスインスタンス生成部101は、テーブルaからそれぞれ識別子と処理種別と処理時刻とを含む業務レコードを抽出し、同様にテーブルbからそれぞれ識別子と処理種別と処理時刻とを含む業務レコードを抽出する。また、データベースBにはテーブルcが格納されており、テーブルcからそれぞれ識別子と処理種別と処理時刻とを含む業務レコードを抽出する。なお、テーブルa乃至cの1レコードに、識別子と処理種別と処理時刻とのうちいずれかの列が含まれない場合には、プロセスインスタンス生成部101が、例えば処理種別をテーブル名から取得するなどして、図3の右側に示すように、識別子と処理種別と処理時刻とを含む業務レコードを構成して、例えばプロセスインスタンスデータ格納部102に格納する。
そして、プロセスインスタンス生成部101は、プロセスインスタンスデータ格納部102に格納されている業務レコードを、識別子及び処理時刻でソートし、ソート結果をプロセスインスタンスデータ格納部102に格納する。識別子が同じということは、同じ案件についての一連の業務であることを意味しており、識別子で業務レコードをグループ化し、処理時刻で業務レコードをソートすることによって業務の実施の順番を特定する。図3の例では、星印の付いた、識別子がID001の業務レコードでグループ化し、処理時刻を早い順に並べると、図4に示すようなデータが生成され、プロセスインスタンスデータ格納部102に格納される。なお、識別子ID001以外の業務レコードについても同様にグループ化されソートされて、プロセスインスタンスデータ格納部102に格納される。図4に格納された各レコードがイベント(イベントインスタンスとも呼ぶ)であり、時系列に並べられたこれらのレコード群をプロセスインスタンスと呼ぶ。
その後、最多実行フロー抽出部103は、プロセスインスタンスデータ格納部102に格納されているデータを用いて、実態フローについての最多実行フロー抽出処理を実施する(ステップS3)。この最多実行ルート抽出処理については、例として2つのやり方を以下で述べる。但し、これらに限定されるものではない。また、ステップS1及びS3は、ステップS4及びS5と互いに無関係なので、順番を入れ替えたり、並列実行したりしてもよい。
まず第1の最多実行フロー抽出処理について、図5乃至図7を用いて説明する。まず、最多実行フロー抽出部103は、プロセスインスタンスデータ格納部102に格納されているプロセスインスタンスを分類する(図5:ステップS21)。そして、プロセスインスタンスの実行回数を、プロセスインスタンスの種類(すなわち分類の結果。プロセスクラスとも呼ぶ。)毎にカウントし、例えばメインメモリなどの記憶装置に格納する(ステップS23)。最後に、最多実行回数のプロセスインスタンスの種類を、最多実行フローとして特定し、当該最多実行フローのデータを最多実行フローデータ格納部104に格納する(ステップS25)。そして元の処理に戻る。
図6に、プロセスインスタンスの種類毎のカウント値の一例を示す。図6の例では、「登録」「通知」「審議依頼」「了解」「回送」「承認依頼」「承認」「採番」という順番のフロー種別についてのカウント値(すなわち実行回数)が最も多いことが分かる。例えば、このようなイベント列のデータが最多実行フローデータ格納部104に格納される。プロセスインスタンス全体で表される実態フローは、図6に示したようなプロセスインスタンスを重ね合わせることにより図7に示すようなフローで表される。図7においては、各イベント間遷移には当該イベント間遷移の実行回数が示されており、太線で示されたフローが最多実行フローである。このようにプロセスインスタンスの種別をベースに実行回数で最多実行フローを特定する。
また、第2の最多実行フロー抽出処理について、図8乃至図10を用いて説明する。最多実行フロー抽出部103は、プロセスインスタンスデータ格納部102に格納されている各プロセスインスタンスの各イベント間遷移について、実行回数をカウントして例えばメインメモリなどの記憶装置に格納する(図8:ステップS31)。そして、プロセスインスタンスを全て重ね合わせて(ステップS33)、重ね合わせ後のフロー(このフローのデータは例えばプロセスインスタンスデータ格納部102に格納される)において、最多実行イベント間遷移を含むプロセスインスタンス種別のうち、実行回数が最多であるものを最多実行フローとして特定し、最多実行フローデータ格納部104に格納する(ステップS35)。最多実行イベント間遷移が複数種存在する場合、それらを最も多く含むプロセスインスタンス種別のうちから最多実行フローを特定する。そして元の処理に戻る。
例えば、図9に示すように、プロセスインスタンスの重ね合わせ結果が得られ、各イベント間遷移の実行回数がカウントされたとする。このような場合には、280回実行されている4種の遷移が最多実行イベント間遷移となり、これらを最も多く含んだ「業務1」「業務2」「業務3:部門A」及び「業務4」を含むフローと、「業務1」「業務2」「業務3:部門B」及び「業務4」を含むフローと、及び「業務1」「業務2」「業務3:部門C」及び「業務4」を含むフローとの3種のフローが最多実行フローの候補となる。この3種のうち、実行回数が最多なのは、図10の通り「業務1」「業務2」「業務3:部門B」及び「業務4」を含むフローなので、これが最多実行フローとなる。例えば、このようなイベント列のデータが最多実行フローデータ格納部104に格納される。このように図8の処理フローで選択される最多実行フローは、図9において太線で示されている。一方、図5の処理フローで図9のフローを評価すると、図10に示すような結果が得られる。図10に示すように、「業務x」「業務y」「業務z」という順番で実行されるフローが最多実行フローとして選択される。このように、イベント間遷移の実行回数をベースに最多実行フローを選択する場合と、フロー全体の実行回数をベースに最多実行フローを選択する場合では、結果が異なる場合がある。図9の例のように、「業務2」から「業務3:部門A」「業務3:部門B」又は「業務3:部門C」に分岐するようにバリエーションが多い場合には、特に影響が大きくなる。
図2の処理の説明に戻って、例えば入力部114の指示に応じて、フロー図データ取得部108は、外部のリソースからフローの構造を表すデータ(例えばフロー図のイメージデータ又はXPDL(XML Process Definition Language。ワークフロー製品間(モデリングエンジンやワークフローエンジン)でビジネスプロセス定義を交換するために定義された標準形式。)などによって記述されたコンピュータ読み取り可能なフロー構造の定義データなど)を取得し、フロー図データ格納部109に格納する(ステップS4)。
そして、代表フロー抽出部110は、フロー図データ格納部109に格納されている設計フローのフロー図のデータを用いて、設計フローについての代表フロー抽出処理を実施する(ステップS5)。代表フロー抽出処理については、以下に2つのやり方を述べるが、これらに限定されるものではない。
まず第1の代表フロー抽出処理について図11乃至図19Bを用いて説明する。まず、代表フロー抽出部110は、フロー図データ格納部109に格納されている設計フローのデータを用いて代表角度算出処理を実施する(ステップS41)。この処理については、図12乃至図16を用いて説明する。
ここでは図12に示すような設計フローが得られたものとする。この設計フローでは、始点が最上部に設けられ、菱形のブロックで示される分岐が2つ含まれ、そのため2つの終点が存在している。また、四角のブロックで示された業務を実施する部門又はシステム(ここでは稟議申請部門、関係部門、稟議管理システム)毎に、列(以下、スイムレーンと呼ぶ)が設けられている。ここではスイムレーン方向は、時間経過方向(上から下)と並行な方向である。本実施の形態では、始点及び終点並びに業務についてのノード間の接続、業務名(ノード名とも呼ぶ)、分岐における要否又は可否などの判断結果などを自動的に読み込むことができるものとする。但し、必要があれば、例えばフロー図データ取得部108がユーザからの支援によりこれらの情報を取得して、フロー図データ格納部109に格納する。
本実施の形態では、図12において太線で強調しているように、ノード間の接続線に着目する。具体的には、図13に示すように、ノード間の接続線Lの始点と終点を結ぶ直線Pと、設計フローにおける時間経過方向を示す直線Yとの間の角度θを算出して、これに対して以下で述べるような加工を行って代表角度を算出する。
まず、代表フロー抽出部110は、設計フローの各ノード間接続線の始点−終点間を結ぶ直線の角度を算出し、例えばメインメモリなどの記憶装置に格納する(図14A:ステップS61)。図13に示したように、各ノード間接続線の角度θを図14Bに示すように格納しておく。
このような角度θをそのまま用いるには問題がある。具体的には、設計フローは主に人間が作成するものであり、ノード間遷移の矢印を描画する際には、以下のような傾向があるものと考えられる。(A)重要な遷移、すなわち代表フローを構成する可能性が高い遷移ほど直線性が高い。(B)重要度の低い遷移は、記述優先度が低いため、重要度の高い構成要素を回避するなどして相対的に折れや曲りが多い線となる。(C)各遷移の太さに差がある場合、重要度の高い遷移ほど太くなる。(D)各ノードについての業務の実施者又は実施部門などを表すスイムレーンが表記される場合、遷移方向はスイムレーンに影響を受ける。
従って、代表フロー抽出部110は、上で述べた傾向に対処するため、ステップS61で算出された各ノード間接続線の角度θを補正し、例えばメインメモリなどの記憶装置に格納する(ステップS63)。このステップでは、スイムレーンの方向に近づくように角度αを加算する。αについては、スイムレーンの幅などに応じてユーザが入力部114により指定された値(図12の例では+30°)を用いる。ステップS63の処理を図15に模式的に示す。図15で分かるように、ノード間の接続線Lの始点と終点を結ぶ直線Pと直線Yとの間の角度θに対して、スイムレーン方向(ここでは直線Yと同じ)に基づき決定される角度αを加算して、補正後角度θmodifiedを算出する。但し、元の角度θがスイムレーンと水平・垂直な場合、補正なしとする。また、補正後の角度についてはスイムレーン方向が上限となるようにする。
さらに、代表フロー抽出部110は、各ノード間接続線について重み付け条件に合致するか否かを判断し、この判断結果に基づきポイント値を決定し、例えばメインメモリなどの記憶装置に格納する(ステップS65)。重み付け条件とは、ノード間接続線の折れ回数が閾値(例えば3)以上の場合、そのノード間接続線のポイント値は1より小さい正の値として設定する。すなわち1本分の遷移に値しないものとする。図12の例では、いずれも折れ回数は「2」であり、この条件では減点されない。また、ノード間接続線の太さの平均が閾値以上太い又は細い場合、太ければ重要と判断して所定値(例えば0.3など)だけ加点し、細ければ重要ではないと判断して所定値(例えば0.3など)だけ減点する。図12の例では、ノード間接続線を強調しているので太線になっているが、そうでなくとも全て同じ太さであれば、この条件では調整されない。
そして、代表フロー抽出部110は、予め定められている角度レンジ毎に、該当するノード間接続線のポイント値を累計して、例えばメインメモリなどの記憶装置に格納する(ステップS67)。このステップS67の処理を図16を用いて説明する。図16の例では、360°を30°毎の角度レンジに分けている。各角度レンジの中心角を、0°、30°、60°、90°、120°、150°、180°、210°、240°、270°、300°、330°、360°に設定している。図12の例では、このような角度レンジの各々についてポイント値を累積すると、中心角180°のレンジが6ポイント、中心角150°のレンジが5ポイント、中心角210°のレンジが3ポイント、中心角30°のレンジが1ポイントとなる。
最後に、代表フロー抽出部110は、ポイント値の累計値から支配方向を特定し、支配方向から代表角度を算出し、例えば代表フローデータ格納部111に格納する(ステップS69)。本実施の形態では、1以上のポイント値が確認された角度レンジのうち上位半数の角度レンジを支配方向として特定し、その中心角をポイント値で重み付けして代表角度を算出する。具体的には、図16から分かるように、中心角180°のレンジと中心角150°のレンジとが支配方向として特定され、(180*6+150°*5)/(6+5)≒166°と代表角度が算出される。そして元の処理に戻る。
このようにすれば、設計フローの作図上の特性を踏まえた上で、フロー全体としてのノード間遷移の代表的角度を算出できるようになる。
図11の説明に戻って、代表フロー抽出部110は、設計フローからルートを特定し、例えばメインメモリなどの記憶装置に格納する(ステップS43)。ルートについては、分岐があれば、分岐先毎にルートが特定される。もし、分岐した結果元の分岐点に戻ってしまう場合には同じ分岐先は選択しないようにする。図12の例では、「始点」「稟議依頼」「審議開始」「審議」と辿った後に分岐が存在する。最初は「可」の分岐先を選んで、「審議完了」「決裁依頼」「決裁」「決裁完了」「終点」となる。すなわち、「始点」「稟議依頼」「審議開始」「審議」「審議完了」「決裁依頼」「決裁」「決裁完了」「終点」というノードを経由する第1のルートが特定される。また、「審議」の後で「否」を選択すると、「再依頼判断」を経由して再度分岐に到達する。この2番目の分岐において「不要」を選択すると、「稟議取下」「終点」となる。すなわち、「始点」「稟議依頼」「審議開始」「審議」「再依頼判断」「審議取下」「終点」というノードを経由する第2のルートが特定される。さらに、2番目の分岐において「要」を選択すると、「再依頼」「審議開始」「審議」と経由して、1番目の分岐に到達する。上で述べたように、同じ分岐先は選択しないので「可」を選択することになり、「審議完了」「決裁依頼」「決裁」「決裁完了」「終点」となる。すなわち、「始点」「稟議依頼」「審議開始」「審議」「再依頼判断」「再依頼」「審議開始」「審議」「審議完了」「決裁依頼」「決裁」「決裁完了」「終点」というノードを経由する第3のルートが特定される。
そして、代表フロー抽出部110は、始点及び終点に基づき、特定されたルートを分類する(ステップS45)。具体的に類型化すると、(A)始点も終点も同じ、(B)始点が同じで終点が異なる、(C)始点が異なり終点が同じ、(D)始点も終点も異なる、といったような類型が得られる。本実施の形態では、(A)から最初に処理するので、(A)に該当するルートを、始点及び終点の組み合わせで分類する。なお、始点及び終点が複数存在する場合には、ルートの集合が複数になる場合もある。
図12の例では、第1のルートと第3のルートは始点も終点も同じなので、ステップS45では類型(A)として特定される。なお、第2ルートはAグループに属するルートとは、始点が同じで終点が異なるので後の処理に回される。
ステップS45の結果に基づき、代表フロー抽出部110は、始点も終点も同一のルートが存在するか判断する(ステップS47)。始点も終点も同一のルートが存在しなければ、ステップS51に移行する。一方、始点も終点も同一のルートが存在すれば、代表フロー抽出部110は、第1ルート抽出処理を実施する(ステップS49)。第1ルート抽出処理については、図17を用いて説明する。
まず、代表フロー抽出部110は、該当するルートについて各ノード間接続線の角度を特定する(ステップS71)。例えば図14Bに示すようなデータを用いて角度を特定する。そして、代表角度と該当ノード間接続線の角度の差が閾値未満のノード間接続線のみに係るルートを特定する(ステップS73)。図12の例では、第1のルートの場合、代表角度から大きく外れるような角度θは存在していない。すなわち、第1のルートは、代表角度との差が閾値未満のノード間接続線のみに係るルートである。一方、第3のルートは、「再依頼」から「審議開始」へのノード間接続線の角度は、代表角度166°から大きく異なる角度であり、第3のルートは、所定の閾値を超えたノード間接続線を含むルートである。これによって第3のルートは除外される。
そして、代表フロー抽出部110は、ステップS73で特定されたルートが複数であるか判断する(ステップS75)。ルートの数が単数又は0である場合には、元の処理に戻る。なお、ルートの数が0である場合には、例えばノード間接続線の角度の平均値が代表角度に最も近いルートを選択するようにしても良い。
一方、特定されたルートが複数である場合には、代表フロー抽出部110は、ステップS73で特定されたルートのうち、共通部分から相違部分へ移行する分岐点から終点までのノード数が最も少ないルートを選択する(ステップS77)。例えば、図12の例で第1のルートと第3のルートと共にステップS73で特定されたと仮定すると、共通部分から相違部分へ移行する分岐点である「審議」より後ろのノード数は、第1のルートであれば「4」であり、第3のルートであれば「8」である。このように、仮に第1及び第3のルートがステップS73で特定されたとしても、第3のルートはステップS77では特定されない。そして処理は元に戻る。
図11の処理の説明に戻って、代表フロー抽出部110は、始点及び終点に基づき、ステップS49で除外されたルートを除き、再度ルートを分類する(ステップS51)。図12の場合、第1のルートと第2のルートとを分類することになるが、この場合、第1のルートと第2のルートは、始点が同じで終点が異なるという類型Bとなる。
そして、代表フロー抽出部110は、始点が同じで終点が異なるルートが除外されずに残っているか判断する(ステップS53)。図12の例では、第1のルートと第2のルートが該当する。始点が同じで終点が異なるルートが存在しない場合にはステップS57に移行する。一方、始点が同じで終点が異なるルートが存在する場合には、代表フロー抽出部110は、第2ルート抽出処理を実施する(ステップS55)。第2ルート抽出処理については図18を用いて説明する。
最初に、代表フロー抽出部110は、該当するルートについて始点から終点を結ぶ直線の角度を算出する(ステップS81)。そして、代表角度と、該当するルートの角度との差が閾値未満のルートを特定する(ステップS83)。図12の例では、第1のルートも第2のルートもあまり角度は変わらず、代表角度との差は閾値未満と判断される。
ここで代表フロー抽出部110は、差が閾値未満のルートが複数であるか判断し(ステップS85)、ルート数が0又は1の場合には元の処理に戻る。なお、ルート数が0である場合には、例えば始点から終点を結ぶ直線の角度が代表角度に最も近いルートを選択するようにしても良い。
一方、差が閾値未満のルートが複数存在する場合には、代表フロー抽出部110は、共通部分から相違部分に移行する分岐点でルートを分割し、始点から分岐点までのノード数と、分岐点から終点までのノード数とを、該当するルート毎にカウントする(ステップS87)。図12の例では、「審議」の後の分岐点でルートを分割する。第1のルートの場合、前半のノード数は「3」であり、後半のノード数は「4」である。一方、第2のルートの場合、前半のノード数は「3」であり、後半のノード数は「2」である。
ステップS87の結果に基づき、代表フロー抽出部110は、分岐点から終点までのノード数の割合が所定閾値未満のルートを除外する(ステップS89)。分岐点がルートの終盤に位置している場合、処理の中断ルートであるとみなし、候補から除外する。図12の例では、第1のルートの場合、4/7=0.57であり、第2のルートの場合、2/5=0.4である。ここで0.5を閾値とすると、第2のルートは本ステップで除外される。
その後、代表フロー抽出部110は、ステップS89の後に1つのルートだけが候補として残ったか判断し(ステップS91)、1つのルートだけが候補であれば元の処理に戻る。一方、複数のルートが候補として残っている場合には、その複数の候補のルートのうちステップS81で特定され、角度が最も代表角度に近いルートを特定する(ステップS93)。そして元の処理に戻る。
このような処理を実施することによって候補となるルートが絞り込まれる。
図11の処理の説明に戻って、代表フロー抽出部110は、これまでの処理で候補となるルートが1つであるか判断する(ステップS56)。ルートが1つであれば、そのルートが代表フローであるので、当該代表フローのデータを代表フローデータ格納部111に格納して、元の処理に戻る。すなわち、該当するノード列のデータが格納される。一方、候補となるルートが複数であれば、第3ルート抽出処理を実施する(ステップS57)。なお、第3ルート抽出処理が完了すれば、元の処理に戻る。
第3ルート抽出処理については、図19Aを用いて説明する。ここまでで、ひとつの始点にはひとつの終点のみが対応するようになっている。始点が異なるルート間の比較については、内容面での比較は困難なので、以下の基準で最も代表フローの可能性が高いものを決定する。
まず、代表フロー抽出部110は、全てのルートのノード数を計数し、その平均値を算出して、例えばメインメモリなどの記憶装置に格納する(ステップS101)。そして、該当するルートのうち、ノード数と平均値との差が所定値以上であるルートがあれば、そのルートを候補から除外する(ステップS103)。ここで1つのルートのみが特定されたか判断し(ステップS103)、1つのルートのみが特定された場合には、そのルートが代表フローであるので、当該代表フローのデータ(すなわち該当するノード列のデータ)を代表フローデータ格納部111に格納して、元の処理に戻る。一方、複数のルートが特定されたか又は1つも候補のルートが無くなった場合には、始点から終点までの接続線の角度が代表角度に最も近いルートを、代表フローとして特定し、代表フローデータ格納部111に格納する(ステップS107)。そして元の処理に戻る。
以上のような処理を実施することによって、代表フローの可能性の高いルートを特定することができるようになる。第1の代表フロー抽出処理の処理結果として図12の例では、図19Bに太線で表すように第1のルートが代表フローとして特定される。
次に、まず第2の代表フロー抽出処理について図20乃至図23を用いて説明する。まず、代表フロー抽出部110は、各ノードの名称に対して、単語データ格納部106に格納されているポイントテーブルをベースに点数を付与して、例えばメインメモリなどの記憶装置に格納する(ステップS111)。単語データ格納部106に格納されているポイントテーブルは、例えば図21に示すようなテーブルである。図21の例では、単語毎に、点数が予め登録されるようになっている。図21に示すように、「完了」「承認」「了承」「了解」「決定」「成功」などのポジティブな意味の単語には、正の値を設定する。一方、「取下」「中断」「中止」「否決」「差戻」「再」などのネガティブな意味の単語には、負の値を設定する。その他ニュートラルな単語については「0」点が設定される。
このようなポイントテーブルを採用する場合、各ノードの点数は、図22に示すようなものになる。図22の例では、ノードの名称毎に、点数が登録されており、各語の評価の列には、単語毎の点数が記載されている。各語の評価の列は注釈であり、実際には必要ない。このようにノードの名称が複数の単語を含む場合には、最も値が小さい点数を採用する。但し、0点と正の値とが特定された場合には正の値をそのノードの名称の点数として用いる。また、算出された点数を設計フロー上に示すと図23のようになる。
次に、代表フロー抽出部110は、設計フローからルートを特定し、例えばメインメモリなどの記憶装置に格納する(ステップS113)。この処理は、ステップS43と同じであり、説明については省略する。図12の例であれば、3つのルートが特定される。
そして、代表フロー抽出部110は、各ルートについてノードの点数を集計し、例えばメインメモリなどの記憶装置に格納する(ステップS115)。第1のルートであれば、所属ノードを辿って「1」「2」「0」「3」「1」「3」「3」が得られるので、合計すると13点が得られる。第2のルートであれば、所属ノードを辿って「1」「2」「0」「−1」「−1」「3」「1」「3」「3」が得られるので、合計すると11点が得られる。第3のルートであれば、所属ノードを辿って「1」「2」「0」「−1」「−3」が得られるので、合計すると−1点が得られる。なお、同じノードを複数回通過する場合には、2回目以降は点数を加算しないものとする。
最後に、代表フロー抽出部110は、合計点数が最も高いルートを最もポジティブなフローである代表フローとして特定し、代表フローデータ格納部111に格納する(ステップS117)。該当するノード列が、代表フローデータ格納部111に格納される。図12の例では、第1のルートが代表フローとして特定されるので、図23で太線で示すようなルートが代表フローとして特定される。以上のような処理を実施した後、元の処理に戻る。
このように適切なポイントテーブルを用意すれば、代表フローの可能性の高いルートを代表フローとして特定できる。
図2の処理の説明に戻って、対応付け処理部116は、最多実行フローデータ格納部104と代表フローデータ格納部111に格納されているデータを用いて、最多実行フローと代表フローとの対応付け処理を実施する(ステップS7)。なお、以下でも述べるように、イベント所属区間決定処理部105による処理結果を格納するイベント所属区間データ格納部107に格納されているデータと、ノード所属区間決定処理部112による処理結果を格納するノード所属区間データ格納部113に格納されているデータとを用いて処理する場合もある。
最多実行フローと代表フローとの対応付け処理については、図24乃至図31を用いて説明する。対応付け処理部116は、最多実行フローデータ格納部104に格納されている最多実行フローと、代表フローデータ格納部111に格納されている代表フローとを、表示装置117に対して対比可能な態様で表示させる(ステップS121)。例えば、図25のような表示を行う。図25の例では、左側に実態フローの最多実行フローを提示し、右側には設計フローの代表フローを提示して、対比可能となっている。ユーザは、表示装置117上に表示されている2つのフローを対比して検討し、自らの知識に基づきイベントとノードの対応関係について検討する。そして、対応付けすべきイベントとノードとを選択して、イベントとノードとを選択状態にして、図25に示していない例えば確定ボタンをクリックすることにより、対応付けを行う。
入力部114は、ユーザから、イベントとノードの対応付け入力を受け付け、対応付け処理部116に出力し、対応付け処理部116は、対応付けデータを受け取り、対応付けデータ格納部115に登録する(ステップS123)。また、対応付け処理部116は、対応付け結果を表示装置117に表示する(ステップS125)。対応付けデータ格納部115には、例えば図26に示すようなデータが格納される。なお、図26では、図27に示すような各イベントのイベントIDと、図28に示すような各ノードのノードIDとを用い、対応付けをグループとして、グループ毎に所属イベントID及び所属ノードIDが登録されるようになっている。このようなデータを基に対応付け結果を表示すると、図29に示すようになる。図29では、点線で対応付けされたイベント及びノードが結び付けられている。なお、「了解」イベント及び「回送」イベントが「審議完了」ノードに対応付けられているように、多対1の対応付け、1対多の対応付けも可能である。処理は、元の処理に戻る。
このようにすれば、ユーザも対応付けすべきノード及びイベントの数が全体よりも少ないため容易に対応付けを判断することができる。すなわち、図30に示すように、左側の実態フローに含まれるイベントと右側の設計フローに含まれるノードとを対応付ける場合には、1つのイベントからノードの数だけ対応付けの可能性がある。従って業務に精通していないとなかなか正確な対応付けが難しい。しかし、最多実行フロー及び代表フローが特定されており、実行順番などを考慮すれば、対応付けられるイベント及びノードの可能性は絞り込むことが容易になる。図31では、太線で最多実行フロー及び代表フローが示されており、ほぼ実行順番に従って対応付けを行えば良い。必ずしも実行順番だけで決定されるものではないが、対応付けの可能性は絞り込まれているので、難易度が非常に低くなっている。図31のように全体のフローを表示する場合には、プロセスインスタンスデータ格納部102とフロー図データ格納部109に格納されているデータを用いる。
図2の処理の説明に戻って、対応付け処理部116は、プロセスインスタンスデータ格納部102と最多実行フローデータ格納部104とフロー図データ格納部109と代表フローデータ格納部111とに格納されているデータを用いて、残余イベント及びノードの対応付け処理を実施する(ステップS9)。残余イベント及びノードの対応付け処理については、図32を用いて説明する。
まず、イベント所属区間決定処理部105は、実態フローの各イベントを、複数の区間(例えば、序盤、中盤及び終盤)のいずれかに分類し、イベント所属区間データ格納部107に格納する(ステップS131)。この処理については、後に詳細に説明する。例えば、図7のような実態フローが得られた場合には、図33に示すような分類結果が得られる。図33の例では、序盤グループには、「登録」「通知」「審議依頼」イベントが属する。また、中盤グループには、「却下」「再依頼」「了解」「回送」イベントが属する。さらに、終盤グループには、「承認依頼」「承認」「採番」「取下」イベントが属する。
次に、ノード所属区間決定処理部112は、設計フローの各ノードを、イベントについて規定されている複数の区間のいずれかに分類し、ノード所属区間データ格納部113に格納する(ステップS133)。この処理については、後に詳細に説明する。例えば、図12のような設計フローが得られた場合には、図34に示すような分類結果が得られる。図34の例では、序盤グループには、「稟議依頼」「審議開始」ノードが属する。また、中盤グループには、「審議」「再依頼」「審議完了」「再依頼判断」「決裁依頼」ノードが属する。さらに、終盤グループには、「稟議却下」「決裁」「決裁完了」ノードが属する。
そして、対応付け処理部116は、最多実行フローデータ格納部104に登録されているイベント及び代表フローデータ格納部111に格納されているノードを除外することにより、グループ毎に、最多実行フローに含まれないイベント及び代表フローに含まれないノードを、表示装置117に表示する(ステップS135)。例えば図35に示すようなデータを表示する。図35の例では、上段に図33に示した実態フローについての分類結果のうち最多実行フローに含まれるイベントについては選択不可状態で示し、含まれないイベントについては選択可能状態で示したテーブルを含み、下段に図34に示した設計フローについての分類結果のうち代表フローに含まれるノードについては選択不可状態で示し、含まれないノードについては選択可能状態で示したテーブルを含む。選択可能状態を表すために、文字を点線で囲っている。このように、実態フローについては3つのイベントが残っており、設計フローについても3つのノードが残っている。但し、上でも述べたように対応付けの可能性は非常に絞られており、さらに出現区間についての情報も提示されているので、この状態での対応付けの難易度は非常に下がっている。
ユーザは、このような表示に基づき、対応付けすべきイベントとノードとを選択し、例えば確定ボタンをクリックすることにより、対応付け入力を実施する。例えば、「却下」イベントを「再依頼判断」ノードに対応付け、「再依頼」イベントを「再依頼」ノードに対応付け、「却下」イベントを「稟議却下」ノードに対応付けたものとする。
入力部114は、ユーザからのイベントとノードの対応付け入力を受け付け、対応付け処理部116に出力し、対応付け処理部116は、対応付け入力のデータを受け取り、対応付けデータ格納部115に登録する(ステップS137)。例えば、図36に示すようなデータが、対応付け処理部116に登録されることになる。図26との差異は、グループH乃至Jが、上で述べた3つの対応付けに対応している。
そして、対応付け処理部116は、対応付け結果を表示装置117に表示する(ステップS139)。対応付けの確認のためである。この表示は、図35のようなデータについて同一の色を付すなどで対応付けを表示したり、実態フローと設計フローを並列に表示して、点線その他の線によりイベントとノードの対応付けについて表示するようにしても良い。そして元の処理に戻る。
図2の処理フローの説明に戻って、対応付け処理部116は、プロセスインスタンスデータ格納部102とフロー図データ格納部109と対応付けデータ格納部115に格納されているデータに従って、最終的な対応付けデータを表示装置117に表示する(ステップS11)。例えば、図37に示すようなデータが表示される。図37では、左側に実態フロー(プロセスインスタンスの重ね合わせ結果)を含み、右側に設計フローを含む。そして、イベントとノードとの対応付けが点線で示されている。なお、色分けなどを行えば分かりやすくなる。このように煩雑な図にはなるが、イベントとノードとの対応関係が明らかになると共に、実態フローと設計フローとの違いを認識できるようになる。すなわち、設計フローでは、「審議」ノードからの分岐は「審議完了」ノードと「再依頼判断」ノードとの2つに分岐するが、実態フローでは「審議」ノードに対応付けられている「審議依頼」イベントから、「却下」イベント、「了解」イベント及び「取下」イベントに分岐するようになっており、「審議依頼」イベントから「取下」イベントへの遷移が追加されていることが分かる。同様に、「再依頼」イベントから「審議依頼」イベントへの遷移、「承認依頼」イベントから「取下」イベントへの遷移についても、設計フローには相当する接続線が存在しないことが分かる。
このようにして実態フローと設計フローを比較して、その相違点などを検討することが容易になる。
[イベントの出現区間の特定処理]
図32のステップS131は、図32のタイミングで実施する必要はなく、ステップS3以降に他の処理と並行して実施することが可能である。このステップS131の処理については、図38乃至図45を用いて説明する。
まず、イベント所属区間決定処理部105は、プロセスインスタンスデータ格納部102に格納されているプロセスインスタンス群から、未処理のプロセスインスタンスを1つ特定する(図38:ステップS151)。また、特定されたプロセスインスタンスに含まれるイベント数をカウントし、当該カウント値に基づき各イベントの出現位置を算出する(ステップS153)。
例えば、図39に示すように、プロセスインスタンスデータ格納部102には、4種類のプロセスインスタンス、すなわち「見積」->「受注」->「検収」という順番でイベントが発生する第1のプロセスクラスと、「受注」->「取消」という順番でイベントが発生する第2のプロセスクラスと、「見積」->「受注」->「変更」->「受注」->「検収」という順番でイベントが発生する第3のプロセスクラスと、「見積」->「変更」->「見積」->「取消」という順番にイベントが発生する第4のプロセスクラスとが生成されたものとする。なお、図39に示すように、それぞれの実行回数も特定されているものとする。
このような場合、ステップS153では、図40に示すような方法で、出現位置を算出する。すなわち、最初のイベントを位置0%、最後のイベントを位置100%と設定して、その間に発生したイベントの間隔が均等になるように各イベントの位置を決定する。第1のプロセスクラスの場合、図40の第1行目に示すように、最初と最後のイベントの間には受注イベントのみが発生している。従って、間隔は2つであるから、100%/2=50%が受注イベントの位置となる。第2のプロセスクラスの場合、図40の第2行目に示すように、イベントが2つしかないので、位置を決定すべき中間のイベントはない。第3のプロセスクラスの場合、図40の第3行目に示すように、最初と最後のイベントの間には受注イベント、変更イベント及び2回目の受注イベントが発生している。従って、間隔は4つであるから、受注イベントは100%/4*1=25%が出現位置であり、変更イベントは100%/4*2=50%が出現位置であり、2回目の受注イベントは100%/4*3=75%が出現位置である。第4のプロセスクラスの場合、図40の第4行目に示すように最初と最後のイベントの間には変更イベント及び見積イベントが発生している。従って、間隔は3であり、変更イベントは100%/3*1=33.3%が出現位置であり、見積イベントは100%/3*2=66.6%が出現位置である。
なお、度数分布を生成する際には、各イベント種について、各出現位置の回数を、そのプロセスインスタンスの当該実行回数分カウントアップする。
以上のような手順にてステップS151で特定されたプロセスインスタンスに含まれる各イベントの出現位置を算出する。このように各プロセスインスタンスにおいて正規化した形で出現位置を算出するので、粒度の差に起因するフロー図間のノード数又はイベント数の相違の影響を抑えて対比できるようになる。
そして、イベント所属区間決定処理部105は、未処理のイベントを1つ特定し(ステップS155)、イベント名(イベント種又はイベント種別とも呼ぶ)及び出現位置を、イベント所属区間データ格納部107の出現位置管理テーブルに登録する(ステップS157)。出現位置管理テーブルは、例えば図41に示すようなテーブルである。図41の例では、イベント種と出現位置とが登録されるようになっている。ステップS157では、1つのレコードがこのような出現位置管理テーブルに登録される。
そして、イベント所属区間決定処理部105は、全てのイベントを処理したか判断する(ステップS159)。未処理のイベントが存在する場合にはステップS155に戻る。未処理のイベントが存在しない場合には、プロセスインスタンスデータ格納部102に格納されている全てのプロセスインスタンスについて処理したか判断し(ステップS161)、未処理のプロセスインスタンスが存在する場合にはステップS151に戻る。一方、全てのプロセスインスタンスを処理した場合には、端子Bを介して図42の処理に移行する。
図42の処理の説明に移行して、イベント所属区間決定処理部105は、出現位置管理テーブルにおいて未処理のイベント種を1つ特定する(ステップS163)。そして、特定されたイベント種に該当するレコードを、出現位置管理テーブルから抽出し、所定の位置区間毎に出現回数をカウントし、イベント所属区間データ格納部107に格納する(ステップS165)。例えば、図39のような出現位置管理テーブルから、図38でハッチングが付されている「受注」イベントのレコードを抽出すると、図43に示すようなデータが得られる。すなわち、イベント種が全て「受注」で、その出現位置が列挙される。そして、例えば図44に示すように、0%から100%を10区間に均等に分けてそれぞれの区間について、該当件数をカウントする。図43に現れているレコードだけを集計すれば、50%が5回、33.3%が1回、0%が2回で、図44に示されているような分布が得られる。
そして、イベント所属区間決定処理部105は、図44に示されているような分布から、最頻出現区間(一般的には最も出現回数が多い区間であるが、他の統計的な特徴値の区間を採用するようにしても良い。場合によってはユーザに指定させるようにしてもよい。)を特定し、当該最頻出現区間を特定するデータ(区間にIDが振られている場合には、当該区間ID。0以上10未満といったデータであっても良い。)とイベント種とを対応付けてイベント所属区間データ格納部107に格納する(ステップS167)。そして、全てのイベント種について処理したか判断する(ステップS169)。未処理のイベント種が存在する場合にはステップS163に戻る。
一方、全てのイベント種について処理した場合には、イベント所属区間決定処理部105は、第1のプロセスインスタンス群の各イベント種を最頻出現区間からグループ分けし、グループ分けデータをイベント所属区間データ格納部107に格納する(ステップS170)。例えば、「序盤」「中盤」「終盤」といったように3つのグループに分ける場合には、「0以上10未満」「10以上20未満」「20以上30未満」を最頻出現区間とするイベント種を、序盤グループに属するイベント種として特定する。また、「30以上40未満」「40以上50未満」「50以上60未満」「60以上70未満」を最頻出現区間とするイベント種を、中盤グループに属するイベント種として特定する。
以上のような処理を実施すれば、例えば図45に示すように、「見積」イベントは0以上10未満の区間、「受注」イベントは50以上60未満の区間、「変更」イベントは50以上60未満の区間、「検収」イベントは90以上100以下の区間、「取消」イベントは90以上100以下の区間が最頻出現区間として特定される。
このような処理を実施することによって、出現頻度の低い例外的なフロー経路の影響を抑えて、適切な出現区間及びグループが特定されるようになる。
[ノードの出現区間の特定処理]
図32のステップS133は、図32のタイミングで実施する必要はなく、ステップS3以降に他の処理と並行して実施することが可能である。このステップS133の処理については、図46乃至図51を用いて説明する。
ノード所属区間決定処理部112は、入力された設計フロー図に始点及び終点が明示されているか判断する(ステップS171)。例えば、コンピュータ読み取り可能な言語で記述されている場合には、「開始」「終了」といった文言の他予め定められたキーワードをノード所属区間決定処理部112に登録しておき、当該キーワードに合致するノードが規定されているか否かによって始点及び終点が明示されているかを判断する。一方、イメージデータなどであっても、OCR(Optical Character Recognition)の技術等で上記のようなキーワードを抽出するようにしてもよい。
入力された設計フロー図に始点及び終点が明示されていない場合(実際に明示されていない場合又はノード所属区間決定処理部112が認識できなかった場合)には、ノード所属区間決定処理部112は、例えば始点及び終点の入力をユーザに対して促す表示を表示装置117に対して行い、始点及び終点の入力がなければ(ステップS173:Noルート)、処理不可能を出力して以降の処理を終了する(ステップS187)。なお、始点及び終点が接続されるノードの指定が必要である。
一方、入力部114を介して始点及び終点の入力がなされた場合には(ステップS173:Yesルート)、ノード所属区間決定処理部112は、入力部114から始点及び終点の入力を受け取り、例えばメインメモリなどの記憶装置に格納する(ステップS175)。
ステップS175の後に、又は入力された設計フロー図に始点及び終点が明示されている場合には、ノード所属区間決定処理部112は、入力されたフロー図のデータが、フロー構造を自動的に読み取り可能なデータ(例えばXPDL等で記述されたデータ)であるかを判断する(ステップS177)。イメージデータのように正確にフロー構造を読み取れないようなデータでフロー図が入力されている場合には、ノード所属区間決定処理部112は、表示装置117にノードの種類及びノード間の接続間の情報の入力を促す表示を行い、入力部114を介してユーザからの入力データを取得し、例えばメインメモリなどの記憶装置に格納する(ステップS179)。そして、ステップS183に移行する。
入力された設計フロー図のデータが、フロー構造を自動的に読み取り可能なデータ(例えばXPDL等で記述されたデータ)である場合には、ノード所属区間決定処理部112は、例えば周知のパーサ機能で設計フロー図データをパースし、ノードの種類及びノード間の接続関係の情報を抽出する(ステップS181)。このパーサ機能については、XML(eXtensible Markup Language)のパーサの技術を用いれば実現できるのでここではこれ以上述べない。
そして、ノード所属区間決定処理部112は、ノードの種類及びノード間の接続関係から、ノード間遷移を表す隣接行列を生成し、例えばメインメモリなどの記憶装置に格納する(ステップS83)。なお、処理は端子Dを介して図50の処理に移行する。
例えば図47のようなフロー図を想定する。図47のフロー図では、始点である「INITIAL」から「見積」及び「受注」への遷移と、「見積」から「受注」への遷移と、「受注」から「取消」「検収」「変更」への遷移と、「変更」から「受注」への遷移と、「検収」から終点である「FINAL」への遷移と、「取消」から「FINAL」への遷移とが含まれている。このようなノードの種類とノード間の接続関係を、ノード間遷移を表す隣接行列に変換すると、図48に示すような行列となる。行列の中で「0」は、遷移無しを表し、「1」は遷移有りを表す。
そして、ノード所属区間決定処理部112は、ワーシャル・フロイド法などの、有向グラフの最短経路についての周知の解法に従って、各ノードについて、始点からの最短距離及び終点からの最短距離(終点への最短距離と同じ)を算出し、ノード所属区間データ格納部113に格納する(ステップS185)。図47に示すように、例えば「見積」に着目すると、「INITIAL」からの最短距離は「1」であり、「FINAL」からの最短距離は「3」である。また、「受注」に着目すると、「INITIAL」からの最短距離は「1」であり、「FINAL」からの最短距離は「2」である。このような最短距離の計算については、周知の手法にて隣接行列から算出することができ、例えばその計算結果は、例えば図18に示すようなデータとなる。すなわち、各ノードについて、INITIALからの最短距離Aと、FINALからの最短距離B(FINALへの最短距離としても同じ。)とが算出される。なお、図49の例では、後に算出されるB−Aについても計算結果が示されている。
図50の処理の説明に移行して、ノード所属区間決定処理部112は、未処理のノードを1つ特定し(ステップS187)、特定されたノードについて、終点からの最短距離から始点からの最短距離を引くことによって差分値(距離差とも呼ぶ)を算出し、ノード所属区間データ格納部113に格納する(ステップS189)。図49に示したように、B−Aを算出して、登録する。なお、差分値が大きいほどINITIALに近く、差分値が小さければFINALに近いので、始点又は終点にどの程度寄っているのかの指標として算出している。そして、未処理のノードが存在するか判断し(ステップS191)、未処理のノードが存在すればステップS187に戻る。
一方、未処理のノードが存在しなければ、ノード所属区間決定処理部112は、算出された差分値に基づき、各ノードをプロセスインスタンスのグループと同一数のグループにグループ分けし、グループ分けデータをノード所属区間データ格納部113に格納する(ステップS193)。図49に示すようなデータを得た場合には、例えば差分値xが1より大きく2以下であれば序盤グループとし、差分値xが1以下で0より大きい場合には中盤グループとし、差分値xが0以下で−1以上の場合には終盤グループと定義して、各ノードの差分値に基づきいずれのグループに属するかを判断する。図49の例では、図51に示すように、序盤グループには「見積」が含まれ、中盤グループには「受注」及び「変更」が含まれ、終盤グループには「取消」及び「検収」が含まれる。グループについての閾値は、ノード数や差分値の範囲(最高値と最小値との差)などから予め決定して設定しておく。
このような処理を実施することによって、設計フロー図が与えられた場合にも、以下で行われるノードのグループ分けのベースとなるデータが得られるようになる。
なお、上で述べたイベント出現区間特定処理及びノード出現区間特定処理については、一例であって他の処理を採用しても良い。さらに、ユーザが各イベント及び各ノードについて区間を指定するようにしても良い。
以上本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、図1に示した機能ブロック図は一例であって、必ずしも実際のプログラム・モジュール構成とは一致しない場合もある。また、上で述べたように、一部の機能についてはオプションであり、必ず持たなければならない機能ではない場合がある。
さらに、処理フローについても、処理結果が変わらない限り、ステップの順番を入れ替えたり、並列に実行したりできる場合もある。
また、フロー比較処理装置100をネットワークに接続して、当該ネットワークに接続されている他の端末装置からの指示に基づき処理を実施する場合もある。その場合、例えばWeb(ウェブ)サーバ部を導入して、対応付け処理部116は、当該Webサーバ部と連携して他の端末装置のWebブラウザ等と通信を行うようにしても良い。
なお、上で述べたフロー比較処理装置100は、コンピュータ装置であって、図52に示すように、メモリ2501とCPU2503とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行わせる。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納される。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上本実施の形態をまとめると以下のようになる。
本フロー対応付け処理方法は、特定のシステムにおいて発生した複数のイベントが時系列に並べられた複数のプロセスインスタンスのデータを格納するプロセスインスタンスデータ格納部に格納されているプロセスインスタンスから、特定のイベントを含む主要フロー(例えば実施の形態における最多実行フロー。但し、最多実行であるか否か、最多実行の特定方法については任意。)を抽出する主要フロー抽出ステップと、複数のノードを含む、特定のシステムについての設計フローのデータを格納している設計フローデータ格納部に格納されている設計フローのデータから、特定のノードを含む代表フローを抽出する代表フロー抽出ステップと、主要フローと代表フローとを対比可能な態様で出力し、主要フローに含まれる特定のイベントと代表フローに含まれる特定のノードとの対応付けの入力を促し、入力された対応付けのデータを対応付けデータ格納部に格納するステップと、複数のイベントのうち特定のイベント以外の第2のイベントと、複数のノードのうち特定のノード以外の第2のノードとを対比可能な態様で出力し、第2のイベントと前記第2のノードとの対応付けの入力を促し、入力された対応付けの第2のデータを対応付けデータ格納部に格納する第2対応付けステップとを含む。
プロセスインスタンスに含まれるイベントと設計フローに含まれるノードとをそのまま対応付けるのは難しいが、プロセスインスタンスから抽出された主要フローに含まれるイベントと設計フローから抽出された代表フローに含まれるノードとを対比して対応付け、さらに残りを対応付ければ、対応付けが容易になる。
また、上で述べた主要フロー抽出ステップが、複数のプロセスインスタンスのうち最も多く実施されたプロセスインスタンス、又は全プロセスインスタンスを重ね合わせた上で最も多く実施されたイベント間遷移を含むプロセスインスタンス種別のうち最も実行回数の多いプロセスインスタンス種別を主要フローとして特定するステップを含むようにしても良い。多数のプロセスインスタンスが得られれば統計的に主要フローを特定することができる。
さらに、上で述べた代表フロー抽出ステップが、設計フローにおける各ノード間遷移の始点から終点までを結ぶ線の角度を算出し、当該角度から所定のルールに従って代表角度を算出するステップと、設計フローから分岐先が異なるルートを特定し、代表角度についての条件を含む所定の条件に基づき、ルートの中から代表フローを特定するステップとを含むようにしても良い。設計フローについては、代表フローを抽出する手法には様々なものが考えられるが、例えば上で述べた代表角度を1つの要素として用いれば比較的実態に即した代表フローが自動的に得られるようになる。
また、上で述べた代表フロー抽出ステップが、設計フローに含まれるノード毎に、当該ノードの名称に含まれる単語で、単語毎に点数が登録された単語点数データ格納部を検索し、各ノードの点数を特定するステップと、設計フローから分岐先が異なるルートを特定し、各ルートについて当該ルート上のノードの点数を累積し、ルートの中から点数が最大となるルートを代表フローとして特定するステップとを含むようにしてもよい。通常代表フローは、始点からある程度正の意味合いの高いノードを経由して終点に至るものである。従って、単語が有する正又は負の意味合いの度合いに応じた点数を登録しておき、ルート上のノードの点数の累積値が最高になるルートを選択すれば、比較的実態に即した代表フローが自動的に得られるようになる。
さらに、上で述べた第2対応付けステップが、(A)プロセスインスタンスデータ格納部に格納されている各プロセスインスタンスについて、当該プロセスインスタンス内における各イベントの出現位置を当該プロセスインスタンス内のイベントの出現回数に基づき決定し、各イベントに対応付けて出現位置を第1データ格納部に格納するステップと、(B)第1データ格納部から、イベント種別毎に前記イベントのデータを抽出し、当該イベント種別に属する各イベントの出現位置が、予め定められた複数の位置区間のいずれに属するか判断すると共に、イベント種別毎に当該イベント種別の最頻出現位置区間を特定し、予め定められた複数のグループのうち最頻出現位置区間が属する最頻出現グループとイベント種別とを対応付けて第1データ格納部に格納するステップと、(C)設計フローデータ格納部に格納されている設計フローに含まれる複数のノードとノード間遷移とから、始点及び終点を除く各ノードについて、始点からの最短距離と終点からの最短距離とを算出し、第2データ格納部に格納するステップと、(E)第2データ格納部に格納されている終点からの最短距離と始点からの最短距離との差を各ノードについて算出し、予め定められた閾値に従って、各ノードについて、複数のグループと同数の区分けがなされている複数の出現位置区間のうち当該ノードの出現位置区間を特定し、第2データ格納部に格納するステップと、(F)複数のイベントの種別のうち主要フローに含まれるイベント種別以外のイベント種別について、第1データ格納部に格納されている、イベントの種別と当該イベントの種別の最頻出現グループとを関連付けて表示し、代表フローに含まれるノード以外のノードについて、第2データ格納部に格納されている、ノードと当該ノードの出現位置区間とを関連付けて表示するステップとを含むようにしても良い。
このように出現位置区間毎に区切ってノード及びイベント種別を提示することによってより対応付けが容易になる。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
特定のシステムにおいて発生した複数のイベントが時系列に並べられた複数のプロセスインスタンスのデータを格納するプロセスインスタンスデータ格納部に格納されている前記プロセスインスタンスから、特定のイベントを含む主要フローを抽出する主要フロー抽出ステップと、
複数のノードを含む、前記特定のシステムについての設計フローのデータを格納している設計フローデータ格納部に格納されている前記設計フローのデータから、特定のノードを含む代表フローを抽出する代表フロー抽出ステップと、
前記主要フローと前記代表フローとを対比可能な態様で出力し、前記主要フローに含まれる前記特定のイベントと前記代表フローに含まれる前記特定のノードとの対応付けの入力を促し、入力された対応付けのデータを対応付けデータ格納部に格納するステップと、
前記複数のイベントのうち前記特定のイベント以外の第2のイベントと、前記複数のノードのうち前記特定のノード以外の第2のノードとを対比可能な態様で出力し、前記第2のイベントと前記第2のノードとの対応付けの入力を促し、入力された対応付けの第2のデータを前記対応付けデータ格納部に格納する第2対応付けステップと、
を含み、コンピュータに実行されるフロー対応付け処理方法。
(付記2)
前記主要フロー抽出ステップが、
前記複数のプロセスインスタンスのうち最も多く実施されたプロセスインスタンス、又は全プロセスインスタンスを重ね合わせた上で最も多く実施されたイベント間遷移を含むプロセスインスタンス種別のうち最も実行回数の多いプロセスインスタンス種別を前記主要フローとして特定するステップ
を含む付記1記載のフロー対応付け処理方法。
(付記3)
前記代表フロー抽出ステップが、
前記設計フローにおける各ノード間遷移の始点から終点までを結ぶ線の角度を算出し、当該角度から所定のルールに従って代表角度を算出するステップと、
前記設計フローから分岐先が異なるルートを特定し、前記代表角度についての条件を含む所定の条件に基づき、前記ルートの中から代表フローを特定するステップと、
を含む付記1又は2記載のフロー対応付け処理方法。
(付記4)
前記代表フロー抽出ステップが、
前記設計フローに含まれるノード毎に、当該ノードの名称に含まれる単語で、単語毎に点数が登録された単語点数データ格納部を検索し、各前記ノードの点数を特定するステップと、
前記設計フローから分岐先が異なるルートを特定し、各前記ルートについて当該ルート上のノードの点数を累積し、前記ルートの中から点数が最大となるルートを代表フローとして特定するステップと、
を含む付記1又は2記載のフロー対応付け処理方法。
(付記5)
前記第2対応付けステップが、
前記プロセスインスタンスデータ格納部に格納されている各前記プロセスインスタンスについて、当該プロセスインスタンス内における各イベントの出現位置を当該プロセスインスタンス内のイベントの出現回数に基づき決定し、各イベントに対応付けて出現位置を第1データ格納部に格納するステップと、
前記第1データ格納部から、イベント種別毎に前記イベントのデータを抽出し、当該イベント種別に属する各前記イベントの出現位置が、予め定められた複数の位置区間のいずれに属するか判断すると共に、前記イベント種別毎に当該イベント種別の最頻出現位置区間を特定し、予め定められた複数のグループのうち前記最頻出現位置区間が属する最頻出現グループと前記イベント種別とを対応付けて前記第1データ格納部に格納するステップと、
前記設計フローデータ格納部に格納されている前記設計フローに含まれる前記複数のノードとノード間遷移とから、始点及び終点を除く各前記ノードについて、前記始点からの最短距離と前記終点からの最短距離とを算出し、第2データ格納部に格納するステップと、
前記第2データ格納部に格納されている前記終点からの最短距離と前記始点からの最短距離との差を各前記ノードについて算出し、予め定められた閾値に従って、各前記ノードについて、前記複数のグループと同数の区分けがなされている複数の出現位置区間のうち当該ノードの出現位置区間を特定し、前記第2データ格納部に格納するステップと、
前記複数のイベントの種別のうち前記主要フローに含まれるイベント種別以外のイベント種別について、前記第1データ格納部に格納されている、前記イベントの種別と当該イベントの種別の前記最頻出現グループとを関連付けて表示し、前記代表フローに含まれるノード以外のノードについて、前記第2データ格納部に格納されている、前記ノードと当該ノードの出現位置区間とを関連付けて表示するステップと、
を含む付記1乃至4のいずれか1つ記載のフロー対応付け処理方法。
(付記6)
付記1乃至5のいずれか1つ記載のフロー対応付け処理方法をコンピュータに実行させるためのプログラム。
(付記7)
特定のシステムにおいて発生した複数のイベントが時系列に並べられた複数のプロセスインスタンスのデータを格納するプロセスインスタンスデータ格納部に格納されている前記プロセスインスタンスから、特定のイベントを含む主要フローを抽出する主要フロー抽出手段と、
複数のノードを含む、前記特定のシステムについての設計フローのデータを格納している設計フローデータ格納部に格納されている前記設計フローのデータから、特定のノードを含む代表フローを抽出する代表フロー抽出手段と、
前記主要フローと前記代表フローとを対比可能な態様で出力し、前記主要フローに含まれる前記特定のイベントと前記代表フローに含まれる前記特定のノードとの対応付けの入力を促し、入力された対応付けのデータを対応付けデータ格納部に格納し、前記複数のイベントのうち前記特定のイベント以外の第2のイベントと、前記複数のノードのうち前記特定のノード以外の第2のノードとを対比可能な態様で出力し、前記第2のイベントと前記第2のノードとの対応付けの入力を促し、入力された対応付けの第2のデータを前記対応付けデータ格納部に格納する対応付け手段と、
を有するフロー比較処理装置。