例えば、並列実施された業務イベントに対し、ある属性の属性値を追番として発行するような業務システムから収集した一連の業務処理のデータを用いて業務プロセスの構造を推定する方式として、以下のような方法が考えられる。具体的には、図5に示すような、追番によってグループ分けを行い、グループに基づき業務プロセス構造を推定する方法がある。図5の上段に示す表形式のデータは、業務システムから収集した一連の業務処理のデータの一例を示している。なお、本実施の形態では、一連の業務処理のデータをまとめたものを、フローインスタンスと呼ぶ。図5に示すフローインスタンスでは、イベントAの発生時刻が一番早く、左から右へ時系列に並べられているものとする。また、図5に示すフローインスタンスにおいて、イベントA乃至イベントMは、ID001を持つイベントであり、同じ案件についての一連の業務であることを示している。また、図5は、追番とみなされる属性(以下、追番属性と呼ぶ)が3つ存在している例を示している。なお、どのような属性が追番となるかは、各業務システムによって異なる。図5では、説明の便宜上、第一の追番属性を「追番1」とし、第二の追番属性を「追番2」とし、第三の追番属性を「追番3」として示している。
例えば、図5に示すようなフローインスタンスについて、追番属性の属性値(以下、追番値と呼ぶ場合もある)が同一のイベントを同一グループとしてグループ分けを行うと、同じく図5に示すような結果となる。図5において、イベントA及びMには、追番属性が1つも設定されていないため、並列実施されたものではないとみなされる。また、図5では、追番1の値によって、大きく2つのグループに分けられている。具体的には、追番1の値が「1」であるイベントB、D、H及びIが属するグループ100と、追番1の値が「2」であるイベントC、E、F、G、J、K及びLが属するグループ200とに分けられている。
そして、グループ100の内部は、追番2の値によって、さらに2つのグループに分けられている。具体的には、追番2の値が「c」であるイベントHが属するグループ110と、追番2の値が「d」であるイベントIが属するグループ120とに分けられている。また、グループ200の内部も、追番2の値によって、さらに2つのグループに分けられている。具体的には、追番2の値が「a」であるイベントE及びGが属するグループ210と、追番2の値が「b」であるイベントF、J、K及びLが属するグループ220との2つにさらに分けられている。
さらに、グループ220の内部は、追番3によって、さらに2つのグループに分けられている。具体的には、追番3の値が「X」であるイベントJが属するグループ221と、追番3の値が「Y」であるイベントK及びJが属するグループ222とに分けられている。
図5の例では、追番1のグループが追番2のグループを包含し、さらに追番2のグループは追番3のグループを包含するようになっており、追番1、追番2、追番3の順に、範囲が徐々に小さくなっている。従って、追番1と追番2との間で親子関係が成り立っており、さらに追番2と追番3との間でも親子関係が成り立っている。このケースであれば、発生時刻順にイベントを配置していき、追番属性の設定数が増える時点において分岐点を追加するという手法により、図6に示すような業務プロセス構造を導き出すことができる。具体的には、まず、先頭のイベントAには、追番属性が設定されていないので、イベントAは並列実施されたものではないとみなされ、そのまま配置される。次のイベントBには、追番1が設定されており、この時点で、設定数が0から1へ増えているので、イベントAとイベントBの間に分岐点が設けられる。なお、図6において、「+」マークを付した菱形のブロックは、分岐点を示している。また、次のイベントCは、設定数は1のままであるが、追番1の値は、イベントBとは異なるため、イベントBの分岐ルートとは別の分岐ルートが設けられる。さらに、次のイベントDは、設定数も追番1の値もイベントBと同じであるため、イベントBと同一の分岐ルートで且つイベントBの後方に配置される。また、次のイベントEは、追番1の値がイベントCと同じであるため、イベントCの後方に配置されることになるが、イベントEには、さらに追番2が設定されており、設定数が1から2へ増えている。従って、イベントCとイベントEの間に分岐点が設けられる。次のイベントFは、設定数と追番1の値は、イベントEと同じであるが、追番2の値が、イベントEと異なるため、イベントEの分岐ルートとは別の分岐ルートが設けられる。また、次のイベントGは、設定数も追番1の値も追番2の値もイベントEと同じであるため、イベントEと同一の分岐ルートで且つイベントEの後方に配置される。さらに、次のイベントHは、追番1の値がイベントDと同じであるため、イベントDの後方に配置されることになるが、イベントHには、さらに追番2が設定されており、設定数が1から2へ増えている。従って、イベントDとイベントHの間に分岐点が設けられる。次のイベントIは、設定数と追番1の値は、イベントHと同じであるが、追番2の値が、イベントHと異なるため、イベントHの分岐ルートとは別の分岐ルートが設けられる。また、次のイベントJは、追番1及び追番2の値がイベントFと同じであるため、イベントFの後方に配置されることになるが、イベントJには、さらに追番3が設定されており、設定数が2から3へ増えている。従って、イベントFとイベントJの間に分岐点が設けられる。次のイベントKは、設定数と追番1及び追番2の値は、イベントJと同じであるが、追番3の値が、イベントJと異なるため、イベントJの分岐ルートとは別の分岐ルートが設けられる。また、次のイベントLは、設定数も追番1乃至追番3の値もイベントKと同じであるため、イベントKと同一の分岐ルートで且つイベントKの後方に配置される。そして、末尾のイベントMには、追番属性が設定されていないので、全ての分岐ルートが合流した後に、イベントMが配置される。
しかしながら、図5に示した例では、追番属性の間に明確な親子関係が成り立っていたが、例えば図7に示すように、追番属性の間に親子関係が成立しないような場合もある。図7に示すフローインスタンスについて、追番値に従ってグループ分けを行うと、同じく図7に示すような結果となる。図7に示すように、各追番属性の相互関係は複雑なものになっており、明確な親子関係は成立していない。この場合、上で述べたような手法によって、業務プロセス構造を推定するのは困難である。
例えば、図7に示したフローインスタンスから、図8に示すような業務プロセス構造を推定することは可能である。なお、図8に示すフローインスタンスは、図7と同じものである。図8に示す業務プロセス構造において、「○」マークを付した菱形のブロックは、1からn本の任意のルートに分岐する分岐点であることを意味する。そして、この業務プロセス構造では、一旦合流した後、必要に応じて分岐前の地点に戻るようになっている。しかし、このような業務プロセス構造を推定結果として出力しても、漠然とした構造であるため、業務プロセスの改善などに利用できるものではなく、有意な推定ができているとは言い難い。そこで、本技術の実施の形態では、以下に説明するような手法によって、各追番属性の相互関係が複雑である場合でも、有意な業務プロセス構造の推定を可能とする。以下、本技術の一実施の形態について説明する。
なお、本実施の形態の具体的内容を説明する前に、図9及び図10を用いて、追番属性の具体例を説明しておく。例えば、図9に、発注システムにおいて実施された一連の業務処理のフローの一例を示す。また、図10に、図9に示したフローに対応するフローインスタンスの一例を示す。なお、図9のブロックと、図10の処理レコードとの対応関係を分かり易くするため、それぞれに業務識別番号を付している。例えば、図9における「発注依頼(1)」は、図10における業務識別番号(1)の処理レコードに対応している。なお、業務識別番号は、処理時刻順に付している。
図9のフローでは、最初に「発注依頼(1)」が行われている。ここで、その発注処理に対して一意な「発注伝票番号」が発行される。なお、発注伝票番号が同じということは、同じ案件についての一連の発注処理であることを意味している。そして、例えば、発注依頼は購買部に送信され、そこで社内で調達するものと社外から購入するものとに分けられる。購買部では、発注内容が妥当かどうかを確認するために統制処理を行うが、社内用(「統制:社内購買(2)」)と社外用(「統制:社外購買(3)」)とでは、処理が異なるため、それらを区別するための「発注伝票明細番号」が発行される。ここでは、社内購買に関する処理に対して「IN090410001」という発注伝票明細番号を設定し、社外購買に関する処理に対して「EX090410001」という発注伝票明細番号を設定している。この発注伝票明細番号が1種類目の追番属性となる。
そして、社内購買のルートにおいて、例えば社内購買の処理は一元化されており、1箇所で全ての購買処理が行えるので、統制処理後に再分岐はなく、「見積確認(4)」及び「納品(6)」が行われる。ここでは、社内購買の処理は電子化されており、見積依頼を行って、すぐに見積確認ができるので、見積依頼と見積確認とは一体化して「見積確認」としてデータ上記録されている。なお、ここでは、納品後の検収処理は、購買品の構成にかかわらず、1つの発注依頼に対し1度だけ行うものとし、全ての納品が完了するまでは、実行されないものとする。
一方、社外購買のルートにおいて、社外購買の処理は発注先に応じて処理内容が異なるため、発注先毎に「社外発注番号」が発行される。ここでは、A社への発注に対して「A20090413-053」という社外発注番号を設定し、B社への発注に対して「2009G03-0414-1129」という社外発注番号を設定している。この社外発注番号が2種類目の追番属性となる。
そして、例えばA社への発注については、A社の受注システムが紙ベースとなっており、見積依頼などを紙書類で送付する必要があるものとする。そのため、図9のフローでは、「見積依頼書送付(5)」、「見積確認(8)」、「注文書送付(9)」及び「納品(11)」という流れで処理が行われている。
また、例えばB社への発注については、例えばB社の受注システムは電子化されているが、発注したものが特注品であるため、途中で仕様確認の必要があるものとする。そのため、図9のフローでは、「見積確認(7)」、「仕様確認(10)」及び「納品(12)」という流れで処理が行われている。
そして、社内及び社外の納品が完了した後、「検収(13)」が実行され、一連の発注処理が完了となる。なお、図9及び図10は、2種類の追番属性が設定される具体例を示しているが、追番属性は3種類以上の場合もあり、追番属性の種類はこれに限定されない。
次に、図11に、本技術の一実施の形態に係るシステム構成図を示す。図11では、例えば社内LAN(Local Area Network)又はインターネットのようなネットワーク10には、本実施の形態における主要な処理を実施するプロセス構造推定装置30と、複数のサーバ(図11では、サーバA乃至C)を含む業務システム50とが接続されている。
業務システム50内のサーバは、業務処理を実施するためのアプリケーションと、アプリケーションにより実施された処理の履歴を格納するデータベースとを有している。なお、データベースが設けられないサーバもあり、その場合には、他のサーバのデータベースに履歴を格納する。
図12に、図11に示したプロセス構造推定装置30の機能ブロック図を示す。本実施の形態に係るプロセス構造推定装置30は、業務システムにおけるデータベース(又はそのレプリカ)に格納されているデータに基づきフローインスタンスを生成するフローインスタンス生成部31と、フローインスタンス生成部31により生成されたフローインスタンスのデータを格納するフローインスタンスデータ格納部32と、ユーザから処理対象となるフローインスタンスの選択入力を受け付け、選択入力データをプロセス構造推定部33に出力する入力部34と、フローインスタンスデータ格納部32に格納されているデータに基づきプロセス構造を推定するための処理を実施するプロセス構造推定部33と、プロセス構造推定部33の処理結果を出力する出力部35とを有する。
また、プロセス構造推定部33は、フローインスタンスデータ格納部32に格納されているデータに基づき、処理対象のフローインスタンスにおける業務イベントの追番属性の設定数を計数する追番設定数計数部331と、後で説明する仮想ルートデータを生成するなどの処理を実施する仮想ルートデータ処理部332と、後で説明するイベント配置処理を実施するイベント配置処理部333と、追番設定数計数部331の処理結果を含む追番設定数テーブルを格納する追番設定数テーブル格納部334と、仮想ルートデータ処理部332の処理結果を格納する仮想ルートデータ格納部335とを含む。
図13に、追番設定数テーブル格納部334に格納される追番設定数テーブルの一例を示す。図13の例では、追番設定数テーブルには、イベントの列と、追番設定数の列とが含まれ、イベント毎の追番設定数が格納されるようになっている。
次に、図14乃至図26を用いてプロセス構造推定装置30の処理フローについて説明する。まず、フローインスタンス生成部31は、業務システム50におけるデータベースA及びBなどのデータベース群に蓄積されているデータからフローインスタンスを生成し、フローインスタンスデータ格納部32に格納する(図14:ステップS1)。なお、本ステップの処理については、図15を用いて説明する。
例えば、図15に模式的に示すが、データベースAにはテーブルa及びbが格納されており、フローインスタンス生成部31は、テーブルaからそれぞれIDと追番1とイベントと処理時刻とを含む処理レコードを抽出し、同様にテーブルbからそれぞれIDと追番1とイベントと処理時刻とを含む処理レコードを抽出する。また、データベースBにはテーブルcが格納されており、テーブルcからそれぞれIDと追番1とイベントと処理時刻とを含む処理レコードを抽出する。なお、図15では、追番属性の列が1列の例を示しているが、2列以上の場合もある。また、IDとは、例えば図10に示した「発注伝票番号」に相当するデータであり、追番1とは、図10に示した「発注伝票明細番号」に相当するデータである。いずれの属性が、識別子及び追番に該当するかは、業務システムによって異なる。
そして、フローインスタンス生成部31は、抽出した処理レコードを、IDでソートし、ソート結果をフローインスタンスデータ格納部32に格納する。IDが同じということは、同じ案件についての一連の業務であることを意味する。なお、このとき、さらに処理時刻でソートする場合もある。図15の例では、星印の付いた、ID001の処理レコードでグループ化すると、図16に示すようなデータが生成され、フローインスタンスデータ格納部32に格納される。なお、ID001以外の処理レコードについても同様にグループ化されて、フローインスタンスデータ格納部32に格納される。
その後、入力部34は、ユーザから処理対象となるフローインスタンスの選択入力を受け付け(ステップS3)、選択入力データをプロセス構造推定部33に出力する。
プロセス構造推定部33は、入力部34から選択入力データを受け取る。そして、プロセス構造推定部33の追番設定数計数部331は、フローインスタンスデータ格納部32に格納されているデータに基づき、処理対象のフローインスタンスに含まれる各イベントについて、当該イベントに設定されている追番属性の数(追番設定数とも呼ぶ)を計数し、計数結果を追番設定数テーブル格納部334に格納する(ステップS5)。
そして、プロセス構造推定部33は、フローインスタンスデータ格納部32における処理対象のフローインスタンスに含まれる各イベントを処理時刻でソートする(ステップS7)。なお、ステップS1の時点で、処理時刻でソートを行っている場合には、本ステップの処理を省略可能である。
その後、プロセス構造推定部33の仮想ルートデータ処理部332は、フローインスタンスデータ格納部32に格納されているデータに基づき、処理対象のフローインスタンスにおいて、追番設定数が0のイベントで区切られる区間のうち未処理の区間を1つ特定する(ステップS9)。例えば追番設定数が0のイベントが途中に1つ存在した場合には、先頭のイベントから当該イベントまでの区間と、当該イベントから末尾のイベントまでの区間とに区切られる。従って、途中に存在する追番設定数が0のイベントは、前方の区間にも後方の区間にも属するものとして処理される。なお、追番設定数が0のイベントが途中に1つも存在しなければ、先頭のイベントから末尾のイベントまでの1区間だけとなる。
そして、仮想ルートデータ処理部332は、フローインスタンスデータ格納部32に格納されているデータに基づき、特定した区間について仮想ルートデータを生成し、仮想ルートデータ格納部335に格納する(ステップS11)。図17及び図18を用いて、本ステップの処理を説明する。
図17は、フローインスタンスの一例を示しており、図18は、図17に示したフローインスタンスから生成される仮想ルートデータを示している。図17の例では、イベントAからイベントFまでの6つのイベントが含まれている。なお、図17の例では、各イベントは、左から右に時系列に並んでいるものとする。そして、追番属性として追番1及び追番2の2種類が存在し、追番1には、「X」又は「Y」が設定され、追番2には、「a」又は「b」が設定されている。ここで、追番属性と当該追番属性の属性値との対を全て抽出すると、「追番1=X」「追番1=Y」「追番2=a」「追番2=b」の4つの対が得られる。なお、抽出された対の総数が、ステップS11において生成すべき仮想ルートデータに含まれる分岐ルートの本数となる。そして、始点と、分岐点と、合流点と、終点とを配置し、始点と分岐点とを結ぶ線と、分岐点と合流点とを結ぶ4本の分岐ルートと、合流点と終点とを結ぶ線とを設定することにより、図18に示すような仮想ルートデータを生成する。図18では、一番上の分岐ルートは、「追番1=X」に対応する分岐ルートであり、上から2番目の分岐ルートは、「追番1=Y」に対応する分岐ルートであり、上から3番目の分岐ルートは、「追番2=a」に対応する分岐ルートであり、一番下の分岐ルートは、「追番2=b」に対応する分岐ルートとなっている。また、始点及び終点の各々に、追番設定数が0のイベントを配置する。図18の例では、始点にはイベントAが配置され、終点にはイベントFが配置されている。なお、追番設定数が0のイベントが始点又は終点に相当することになるが、追番設定数が0のイベントが、処理対象となっている区間の先頭又は末尾に存在しない場合もある。その場合には、仮想的な端点を始点又は終点として設定しておく。なお、仮想ルートデータにおけるノードは、イベントを表している(例えばノード「A」は、イベントAを表す。以下、同様。)。
なお、ステップS11の処理を実施した後、処理は、端子Aを介してステップS13(図19)の処理に移行する。
図19の説明に移行して、端子Aの後、イベント配置処理部333は、変数Xを1で初期化する(図19:ステップS13)。なお、以下で説明するように、本実施の形態では、追番設定数が小さなイベントから順に、仮想ルート上に各イベントを配置していく。この変数Xは、処理しようとしているイベントの追番設定数を表しており、後で説明するステップS27において、1インクリメントされるようになっている。
そして、イベント配置処理部333は、フローインスタンスデータ格納部32と追番設定数テーブル格納部334とに格納されているデータを基に、ステップS9(図14)において特定された区間において、X個の追番属性が設定されているイベント(すなわち、「追番設定数=X」のイベント)のうち未処理のイベントを処理時刻の早い順に特定する(ステップS15)。例えば図17に示したフローインスタンスの場合、変数Xの値が1であれば、イベントB及びCが抽出される。そして、図17の例では、イベントBの方が処理時刻が早いので、イベントBが先に特定され、その次にイベントCが特定される。
そして、イベント配置処理部333は、フローインスタンスデータ格納部32と仮想ルートデータ格納部335とに格納されているデータを用いて、特定したイベントについてイベント配置処理を実施する(ステップS17)。なお、イベント配置処理については後で図25及び図26を用いて詳しく説明するが、ここで処理内容を簡単に説明しておく。
イベント配置処理では、所定の規則に従って、処理対象イベントの配置先を決定し、図20に示すように、処理対象イベントを配置することにより仮想ルートデータを更新する。図20の例では、「追番1=X」の分岐ルート上にイベントBが配置され、「追番1=Y」の分岐ルート上にイベントCが配置されている。また、例えば図21に示すように、必要に応じて、処理対象イベントを配置すべき分岐ルートを再分岐させる。図21の例では、「追番1=X」の分岐ルート上に新たな分岐点及び合流点が設定され、「追番2=a」の分岐ルートと、「追番2=b」の分岐ルートとに再分岐するようになっている。そして、図22に示すように、再分岐後の分岐ルート上に配置先を再設定し、処理対象イベントを配置する。図22の例では、再分岐後の「追番2=a」の分岐ルート上にイベントDが配置され、再分岐後の「追番2=b」の分岐ルート上にイベントEが配置されている。
また、詳細は後で説明するが、追番設定数が2以上のイベントについては、配置先を一意に決定することができない場合がある。そのようなイベントについては、保留イベントとして一旦記憶装置に格納しておき、「追番設定数=X」のイベントについて一通り処理した後に、配置先を決定する。
なお、図23に、仮想ルートデータにおける追番値の有効範囲と、イベントの順序性が保持される範囲とを示す。図23において、点線枠2301及び2302は、それぞれ追番値の有効範囲を示しており、一点鎖線枠2311及び2312は、それぞれイベントの順序性が保持される範囲を示している。なお、追番値の有効範囲は、他の区間に跨らない。これは、区間が複数存在する場合、区間が変わると同じ追番値でも意味が異なってくるためである。また、同一ルート上であれば、発生順序でイベントを配置するが、別ルートにおけるイベントとの関係では、発生順序は考慮する必要はない。
そして、イベント配置処理(ステップS17)を実施した後、イベント配置処理部333は、特定された区間において、「追番設定数=X」のイベント全てについて処理が完了したか判断する(ステップS19)。特定された区間において、「追番設定数=X」のイベント全てについて処理が完了していなければ(ステップS19:Noルート)、ステップS15に戻り、上で述べた処理を繰り返す。
一方、特定された区間において、「追番設定数=X」のイベント全てについて処理が完了した場合(ステップS19:Yesルート)、イベント配置処理部333は、保留イベントが存在するか判断する(ステップS21)。保留イベントが存在する場合(ステップS21:Yesルート)、イベント配置処理部333は、保留イベントの配置先を決定し、保留イベントを配置することにより、仮想ルートデータを更新する(ステップS23)。例えば、イベントS(追番1=Z,追番2=c)、イベントT(追番1=Z,追番2=d)、イベントU(追番1=Z,追番2=d)の3つが保留イベントとして存在した場合、3つの保留イベントにおいて「追番1=Z」が共通しているので、「追番1=Z」の分岐ルート上にまとめて配置可能と判断する。そして、「追番1=Z」の分岐ルートを、「追番2=c」の分岐ルートと「追番2=d」の分岐ルートとに再分岐させ、再分岐後の対応する分岐ルートに各保留イベントを配置する。なお、上の例では、イベントTとイベントUとにおいて「追番2=d」も共通しているが、より多くの保留イベントをまとめることができるパターンを優先する。その後、処理はステップS25の処理に移行する。
一方、保留イベントが存在しなければ(ステップS21:Noルート)、ステップS23の処理をスキップし、ステップS25の処理に移行する。
そして、イベント配置処理部333は、フローインスタンスデータ格納部32を検索し、追番設定数がXの値より大きいイベントが存在するか判断する(ステップS25)。追番設定数がXの値より大きいイベントが存在する場合(ステップS25:Yesルート)、イベント配置処理部333は、変数Xを1インクリメントする(ステップS27)。そして、ステップS15に戻り、上で述べた処理を繰り返す。
一方、追番設定数がXの値より大きいイベントが存在しなければ(ステップS25:Noルート)、端子Bを介してステップS29(図24)の処理に移行する。
図24の説明に移行して、端子Bの後、仮想ルートデータ処理部332は、仮想ルートデータ格納部335内の仮想ルートデータにおいてイベントが未配置の分岐ルートを削除することにより、当該仮想ルートデータを更新する(図24:ステップS29)。なお、仮想ルートデータにおいて、分岐点、合流点が連続する箇所がある場合には、1つに統合する。そして、仮想ルートデータ処理部332は、全ての区間について処理が完了したか判断する(ステップS31)。全ての区間について処理が完了していなければ(ステップS31:Noルート)、端子Cを介してステップS9に戻り、未処理の区間について上で述べた処理を繰り返す。
一方、全ての区間について処理が完了した場合(ステップS31:Yesルート)、仮想ルートデータ処理部332は、区間数が2以上であるか判断し(ステップS33)、区間数が2以上の場合には(ステップS33:Yesルート)、各区間の仮想ルートデータを連結する(ステップS35)。例えば区間が3つ存在する場合には、1番目の区間の仮想ルートデータの終点と、2番目の区間の仮想ルートデータの始点とを連結し、さらに2番目の仮想ルートデータの終点と、3番目の仮想ルートデータの始点とを連結する。なお、例えば、1番目の区間の仮想ルートデータの終点と、2番目の区間の仮想ルートデータの始点とには、同一のイベントのノードがそれぞれ配置されているので、連結する際には、いずれかを削除するなどして、ルート上に1つのみ配置されるようにする。その後、処理はステップS37の処理に移行する。
一方、区間数が1の場合(ステップS33:Noルート)、ステップS35の処理をスキップし、ステップS37の処理に移行する。
その後、仮想ルートデータ処理部332は、仮想ルートデータ格納部335に格納されている仮想ルートデータからプロセス構造データを生成し、出力部35に表示装置等に出力させる(ステップS37)。そして、処理を終了する。
以上のように、追番設定数が小さいイベントから順に仮想ルートデータに配置していくことで、処理しようとするイベントについて、追番設定数が小さいイベントとの相対的な位置関係を考慮しながら、配置を決定することができるようになる。また、区間が複数存在する場合には、前の区間で使用した追番値を後の区間で使い回すようなケースが考えられるが、区間毎に仮想ルートデータを生成することで、区間が変わると同じ追番値でも別のものとして扱うことができるようになる。
なお、上で説明した処理フローでは、ステップS29の処理を区間毎に実施するようになっているが、ステップS35の処理を実施した後に、1回のみ実施するような処理フローに変更することも可能である。
次に、図25及び図26を用いて、イベント配置処理の内容を詳細に説明する。まず、イベント配置処理部333は、変数Xの値が1であるか判断する(図25:ステップS51)。そして、変数Xの値が1である場合(ステップS51:Yesルート)、イベント配置処理部333は、処理対象イベントに設定されている追番属性と当該追番属性の属性値とに従って、処理対象イベントを配置すべき分岐ルートを決定し、その分岐ルート上に処理対象イベントのノードを配置する(ステップS53)。例えば仮想ルートデータは、図20に示したようなデータに更新される。その後、処理を終了し、元の処理に戻る。
一方、変数Xの値が1ではない場合(ステップS51:Noルート)、すなわち追番設定数が2以上のイベントが処理対象となっている場合、イベント配置処理部333は、変数nを1で初期化する(ステップS55)。なお、追番設定数が2以上のイベントを配置する際には、既に配置されているイベントとの相対的な関係を考慮しながら、配置先を決定する。この変数nは、処理対象イベントの追番設定数(=変数X)との差分を表しており、後で説明するステップS73(図26)において1インクリメントされるようになっている。
そして、イベント配置処理部333は、仮想ルートデータ格納部335における仮想ルートデータにおいて、X−n個の追番属性が設定されているイベント(すなわち、「追番設定数=X−n」のイベント)が配置されているか判断する(ステップS57)。仮想ルートデータ中に「追番設定数=X−n」のイベントが配置されていなければ(ステップS57:Noルート)、端子Eを介してステップS73(図26)の処理に移行する。
一方、仮想ルートデータ中に「追番設定数=X−n」のイベントが配置されている場合(ステップS57:Yesルート)、イベント配置処理部333は、仮想ルートデータ中に配置されているイベントの中に、X−n個分の追番値が処理対象イベントのものと一致するイベントが存在するか判断する(ステップS59)。仮想ルートデータ中に配置されているイベントの中に、X−n個分の追番値が処理対象イベントのものと一致するイベントが存在しなければ(ステップS59:Noルート)、端子Eを介してステップS73(図26)の処理に移行する。
一方、仮想ルートデータ中に配置されているイベントの中に、X−n個分の追番値が処理対象イベントのものと一致するイベントが存在する場合(ステップS59:Yesルート)、イベント配置処理部333は、処理対象イベントが、該当するイベントに挟まれているか判断する(ステップS61)。処理対象イベントが、X−n個分の追番値が処理対象イベントのものと一致するイベントに挟まれていなければ(ステップS61:Noルート)、端子Dを介してステップS67(図26)の処理に移行する。
一方、処理対象イベントが、X−n個分の追番値が処理対象イベントのものと一致するイベントに挟まれている場合(ステップS61:Yesルート)、イベント配置処理部333は、該当するイベントが配置されている分岐ルートを、処理対象イベントを配置すべき分岐ルートとして決定し、該当するイベントの間を、処理対象イベントの配置先として決定する(ステップS63)。なお、処理対象イベントを挟むイベントの組が複数存在する場合には、その複数の組の中から、処理対象イベントより先に発生したイベントであって、処理時刻が処理対象イベントに最も近いイベントを特定し、特定したイベントを含む組をステップS63の処理に用いるようにする。
そして、イベント配置処理部333は、必要に応じて、配置先となる分岐ルートを再分岐させ、再分岐後の分岐ルート上に、処理対象イベントのノードを配置する(ステップS65)。なお、分岐ルートを再分岐させる処理については、後で詳しく説明する。その後、処理を終了し、元の処理に戻る。
図26の処理の説明に移行して、端子Dの後、イベント配置処理部333は、X−n個分の追番値が処理対象イベントのものと一致するイベントの中に、処理対象イベントより先に発生したイベントがあるか判断する(図26:ステップS67)。X−n個分の追番値が処理対象イベントのものと一致するイベントの中に、処理対象イベントより先に発生したイベントが存在しなければ(ステップS67:Noルート)、ステップS73に移行する。
一方、X−n個分の追番値が処理対象イベントのものと一致するイベントの中に、処理対象イベントより先に発生したイベントがある場合(ステップS67:Yesルート)、イベント配置処理部333は、該当するイベントが配置されている分岐ルートを、処理対象イベントを配置すべき分岐ルートとして特定し、該当するイベントの後方を、処理対象イベントの配置先として決定する(ステップS69)。なお、該当するイベントが複数存在する場合には、処理時刻が処理対象イベントに最も近いイベントを特定し、そのイベントをステップS69の処理に用いるようにする。
そして、イベント配置処理部333は、必要に応じて、配置先となる分岐ルートを再分岐させ、再分岐後の分岐ルート上に、処理対象イベントのノードを配置する(ステップS71)。なお、図20乃至図22を用いて、本ステップの処理を詳しく説明する。
例えば、図20の仮想ルートデータは、図17に示したフローインスタンスの場合に、「追番設定数=1」のイベントが配置された時点のデータを示している。この後、「追番設定数=2」のイベントD及びEの処理に移行する。ここで、「追番設定数=2」のイベントD及びEは、追番1の値がイベントBと一致しているため、イベントBの後方が、イベントD及びEの配置先として決定される。
その後、始点から配置先までの経路における分岐回数(すなわち、分岐点の数)が、追番設定数と等しいか判断する。ここで、追番設定数は2であるが、始点から配置先までの経路における分岐回数は、1回であるため、追番設定数未満(分岐回数<追番設定数)であると判断される。この場合、始点から配置先までの経路における分岐回数が、追番設定数と等しくなるよう分岐ルートを再分岐させる。具体的には、始点から配置先までの経路における分岐ルートに対応付けられている追番属性を除き、残りの追番属性に従って分岐ルートを設定することにより再分岐させる。この例では、始点から配置先までの経路における分岐ルートには、「追番1=X」が対応付けられているので、追番2についての分岐ルートを設定する。従って、図21に示したように、「追番2=a」の分岐ルートと「追番2=b」の分岐ルートとが設定される。そして、イベントDは、追番2の値がaであるので、再分岐後の「追番2=a」の分岐ルート上にイベントDの配置先を再設定し、イベントDを配置する。さらに、イベントEは、追番2の値がbであるので、再分岐後の「追番2=b」の分岐ルート上にイベントEの配置先を再設定し、イベントEを配置する。従って、仮想ルートデータは、図22に示したようなデータに更新される。なお、ステップS65においても、同じように再分岐させる。
一方、ステップS67において、X−n個分の追番値が処理対象イベントのものと一致するイベントの中に、処理対象イベントより先に発生したイベントがないと判断された場合(ステップS67:Noルート)、又は、端子Eの後、処理はステップS73の処理に移行する。
そして、イベント配置処理部333は、変数nを1インクリメントし(ステップS73)、n=Xとなったか判断する(ステップS75)。n=Xではない場合(ステップS75:Noルート)、端子Gを介してステップS57に戻り、上で述べた処理を繰り返す。
一方、n=Xの場合(ステップS75:Yesルート)、イベント配置処理部333は、処理対象イベントを保留イベントとして一旦記憶装置に格納する(ステップS77)。なお、本ステップの処理は、処理対象イベントの配置先を一意に決定することができなかった場合に実施される。また、保留イベントについては、上で説明したステップS23(図19)において配置先が決定される。その後、端子Fを介して図25の処理に戻った後、処理を終了し、元の処理に戻る。
例えば、処理対象イベントの追番設定数が3(X=3)であった場合、1回目の処理(n=1のときの処理)では、追番設定数が2であるイベントが配置されているか判断し、さらに2個の追番値が処理対象イベントのものと一致するイベントが存在するか判断する。該当するイベントが存在しない場合、ステップS73において変数nが1インクリメントされるが、この時点では、X>nであるため、ステップS57に戻る。2回目の処理(n=2のときの処理)では、追番設定数が1であるイベントが配置されているか判断し、さらに1個の追番値が処理対象イベントのものと一致するイベントが存在するか判断する。該当するイベントが存在しない場合には、変数nが1インクリメントされ、n=Xとなり、ステップS77の処理に移行することとなる。
以上のような処理を実施することにより、処理対象イベントについて、既に仮想ルートデータ中に配置されているイベントとの相対的な関係を考慮し、適切な配置先を決定することができる。
なお、仮想ルートデータについては、例えばJava(Sun Microsystems社の商標)のマップ(Map)のような、「キー」と「値」のペアになる要素を持つデータ構造で管理することが可能である。以下、マップデータを用いた場合の処理を説明する。
例えば、仮想ルートデータ格納部335には、図27に示すような追番管理テーブルと、図28に示すようなマップデータとが格納される。図27の例では、追番管理テーブルには、追番識別子の列と、追番属性名の列と、追番値の列とが含まれる。また、図28の例では、マップデータには、Key(キー)の列と、Value(値)の列とが含まれる。なお、Valueの列に設定するデータには、順序性を保持できるリスト(List)構造のようなデータを用いる。図中における「List:[Event:A, Event:F]」は、イベントA、イベントFの順にイベントが発生したことを示している。なお、図28は、図20に示した仮想ルートデータに対応するマップデータを示している。
まず、追番設定数=0のイベントとしてイベントA及びFが検出され、始点及び終点にそれぞれ配置される。ここで、図27の追番管理テーブルにおいて、「追番なし」(図27では、追番属性名及び追番値を「−」として示している)に対応する識別子は0となっている。従って、イベントA及びFを、発生時刻順に従って、識別子「0」に対応する、マップデータ内のリストに登録する。
そして、追番設定数=1のイベントとして、イベントB及びCが検出され、対応する分岐ルート上に配置される。ここで、図27の追番管理テーブルにおいて、「追番1=X」に対応する識別子は1、「追番1=Y」に対応する識別子は2となっている。従って、イベントBを、識別子「1」に対応する、マップデータ内のリストに登録し、イベントCを、識別子「2」に対応する、マップデータ内のリストに登録する。
その後、追番設定数=2のイベントとして、イベントD及びEが検出される。そして、イベントD及びEにおける「追番1=X」は、イベントBと一致しているので、イベントBの後方が、配置先として決定される。その後、図21に示したように、「追番1=X」の分岐ルートは、「追番2=a」の分岐ルートと「追番2=b」の分岐ルートとに再分岐しており、図22に示したように、「追番2=a」の分岐ルート上にイベントDが配置され、「追番2=b」の分岐ルート上にイベントEが配置される。なお、再分岐がなされた場合には、図29に示すように、別のマップデータ(Map:002)を生成し、元のマップデータ(Map:001)内のリストに、新たに生成したマップデータを登録するようにする。図29では、マップデータ(Map:001)において、識別子1に対応するリストに、イベントBの後に「Map:002」が追加されている。なお、図27の追番管理テーブルにおいて、「追番2=a」に対応する識別子は3、「追番2=b」に対応する識別子は4となっている。従って、図29では、マップデータ(Map:002)において、イベントDは、識別子3に対応するリストに登録され、イベントEは、識別子4に対応するリストに登録されている。
なお、上で説明したデータ構造は一例であって、他のデータ構造により仮想ルートデータを管理するようにしてもよい。
例えば図5を用いて説明した、グループ分けを行う手法では、図7に示したフローインスタンスから業務プロセス構造を推定するのは困難であったが、本実施の形態に係る手法によれば、図30に示すような業務プロセス構造を推定結果として出力することができる。なお、図30に示すフローインスタンスは、図7と同じものである。以下、図31乃至図38を用いて、図30に示すような推定結果に至るまでの流れを説明する。
図30に示したフローインスタンスにおいて、イベントA、F及びMの3つが、追番設定数=0のイベントである。すなわち、イベントAからイベントFまでの第1の区間と、イベントFからイベントMまでの第2の区間とに分けられる。
まず、第1の区間におけるイベントA乃至Fに設定されている追番値は、「追番1=1」「追番1=2」「追番2=a」「追番2=b」である。従って、第1の区間について、上で説明したステップS11(図14)の処理を実施すると、図31に示すような仮想ルートデータが生成される。図31では、始点と接続される1番目の分岐点から、「追番1=1」の分岐ルートと「追番1=2」の分岐ルートと「追番2=a」の分岐ルートと「追番2=b」の分岐ルートとに分岐するようになっている。また、始点にはイベントAが配置され、終点にはイベントFが配置されている。
そして、追番設定数=1であるイベントB及びCについて処理が実施され、処理が完了すると、仮想ルートデータは、図32に示すようなデータとなる。図32では、「追番1=1」の分岐ルート上にイベントBが配置され、「追番1=2」の分岐ルート上にイベントCが配置されている。
その後、追番設定数=2であるイベントD及びEについて処理が実施される。ここで、イベントD及びEについて、既に配置されているイベントCと追番値「追番1=2」が一致している。さらに、イベントCは、イベントD及びEより先に発生したイベントである。従って、イベントCの後方が、イベントD及びEの配置先として決定される。なお、始点から配置先までの経路における分岐回数は1回であるため、「追番1=2」の分岐ルートを再分岐させる。具体的には、「追番2=a」の分岐ルートと「追番2=b」の分岐ルートとに再分岐する2番目の分岐点と、2番目の分岐点から分岐する各分岐ルートが合流する合流点とを「追番1=2」の分岐ルート上に追加することにより再分岐させる。そして、図33に示すように、再分岐後の分岐ルート上にイベントD及びEを配置する。図33では、始点と接続される1番目の分岐点3301から、「追番1=2」の分岐ルートを辿っていくと、2番目の分岐点3302が存在している。図33において、イベントDは、その2番目の分岐点3302から分岐している「追番2=a」の分岐ルート上にイベントDが配置されている。また、イベントEは、2番目の分岐点3302から分岐している「追番2=b」の分岐ルート上に配置されている。ここまでの処理が第1の区間についての処理となる。
次に、第2の区間におけるイベントF乃至Mに設定されている追番値は、「追番1=1」「追番1=2」「追番2=a」「追番2=b」「追番3=X」「追番3=Y」である。従って、第2の区間について、上で説明したステップS11(図14)の処理を実施すると、図34に示すような仮想ルートデータが生成される。図34では、始点と接続される1番目の分岐点から、「追番1=1」の分岐ルートと「追番1=2」の分岐ルートと「追番2=a」の分岐ルートと「追番2=b」の分岐ルートと「追番3=X」の分岐ルートと「追番3=Y」の分岐ルートとに分岐するようになっている。また、始点にはイベントFが配置され、終点にはイベントMが配置されている。
そして、追番設定数=1であるイベントH及びIについて処理が実施され、処理が完了すると、仮想ルートデータは、図35に示すようなデータとなる。図35では、「追番2=a」の分岐ルート上にイベントHが配置され、「追番2=b」の分岐ルート上にイベントIが配置されている。
その後、追番設定数=2であるイベントG及びLについて処理が実施される。ここで、イベントGについて、既に配置されているイベントHと追番値「追番2=a」が一致しているが、イベントHはイベントGより後に発生したイベントである。従って、イベントGは保留イベントとして一旦記憶装置に格納される。また、イベントLについて、既に配置されているイベントの中に、追番値が一致するイベントが存在しないため、イベントLも保留イベントとして一旦記憶装置に格納される。
そして、追番設定数=2のイベントについて一通り処理が完了すると、保留イベントの処理に移行する。ここで、イベントG及びLにおいて、「追番1=2」が共通しているので、1番目の分岐点から分岐している「追番1=2」の分岐ルート上にまとめて配置可能であると判断される。なお、始点から配置先までの経路における分岐回数は1回であるため、「追番1=2」の分岐ルートを再分岐させる。具体的には、「追番2=a」の分岐ルートと「追番2=b」の分岐ルートと「追番3=X」の分岐ルートと「追番3=Y」の分岐ルートとに再分岐する2番目の分岐点と、2番目の分岐点から分岐している各分岐ルートが合流する合流点とを「追番1=2」の分岐ルート上に追加することにより再分岐させる。そして、図36に示すように、再分岐後の分岐ルート上にイベントG及びLを配置する。図36では、始点と接続される1番目の分岐点3601から、「追番1=2」の分岐ルートを辿っていくと、2番目の分岐点3602が存在している。図36において、イベントGは、その2番目の分岐点3602から分岐している「追番2=a」の分岐ルート上に配置されている。また、イベントLは、2番目の分岐点3602から分岐している「追番3=Y」の分岐ルート上に配置されている。
その後、追番設定数=3のイベントであるイベントJ及びKについて処理が実施される。ここで、イベントJについて、既に配置されているイベントの中に、2つの追番値がイベントJと一致するイベントは存在しない。なお、イベントEは、2つの追番値がイベントJと一致しているが、別区間のイベントであるため、ここでは考慮されない。一方で、1つの追番値がイベントJと一致するイベントとしては、イベントGとイベントIがある。ここで、イベントGもイベントIも、イベントJより先に発生したイベントであるが、処理時刻がイベントJに近いのは、イベントIである。従って、イベントIの後方が、イベントJの配置先として決定される。なお、始点から配置先までの経路における分岐回数は1回であるため、分岐回数が追番設定数と等しくなるよう「追番2=b」の分岐ルートを再分岐させる。具体的には、「追番1=1」の分岐ルートと「追番1=2」の分岐ルートと「追番3=X」の分岐ルートと「追番3=Y」の分岐ルートとに再分岐する2番目の分岐点と、2番目の分岐点から分岐している各分岐ルートが合流する合流点とを「追番2=b」の分岐ルート上に追加することにより再分岐させる。さらに、2番目の分岐点から分岐している「追番1=2」の分岐ルートをさらに再分岐させる。具体的には、「追番3=X」の分岐ルートと「追番3=Y」の分岐ルートとに再分岐する3番目の分岐点と、3番目の分岐点から分岐している各分岐ルートが合流する合流点とを「追番1=2」の分岐ルート上に追加することにより再分岐させる。そして、図37に示すように、再分岐後の分岐ルート上にイベントJを配置する。図37では、始点と接続される1番目の分岐点3701から、「追番2=b」の分岐ルートを辿っていくと、2番目の分岐点3702が存在している。そして、2番目の分岐点3702から、「追番1=2」の分岐ルートを辿っていくと、3番目の分岐ルート3703aが存在している。図37において、イベントJは、その3番目の分岐点3703aから分岐している「追番3=X」の分岐ルート上に配置されている。
また、イベントKについても、既に配置されているイベントの中に、2つの追番値がイベントKと一致するイベントは存在しない。一方で、1つの追番値がイベントKと一致するイベントとしては、イベントIとイベントLがある。但し、イベントLは、イベントKより後に発生したイベントであるため、ここでは、イベントIの後方が、イベントLの配置先として決定される。なお、イベントKは、「追番1=1」であるので、図37に示した2番目の分岐点3702から分岐している「追番1=1」の分岐ルートを再分岐させ、再分岐後の分岐ルート上に配置する。具体的には、図37に示すように、「追番3=X」の分岐ルートと「追番3=Y」の分岐ルートとに再分岐する3番目の分岐点3703bと、3番目の分岐点3703bから分岐している各分岐ルートが合流する合流点とを「追番1=1」の分岐ルート上に追加することにより再分岐させる。図37において、イベントKは、3番目の分岐点3703bから分岐している「追番3=Y」の分岐ルート上に配置されている。なお、ここまでの処理が第2の区間についての処理となる。
そして、第1の区間の仮想ルートデータ(図33)と、第2の区間の仮想ルートデータ(図37)とを連結すると、図38に示すような仮想ルートデータとなる。なお、イベントFは、第1の区間の仮想ルートデータの終点と、第2の区間の仮想ルートデータの始点とに配置されているが、いずれかを削除するなどして、1つのみ配置する。そして、図38に示した仮想ルートデータから、イベントが配置されていない分岐ルートを削除したり、連続する分岐点、合流点を1つに統合したりして整理すると、最終的に図30に示したような業務プロセス構造のデータを生成することができる。
このように、本実施の形態に係る手法によれば、並列実施されたイベントと追番との関係が複雑になった場合や、追番値を使い回すような場合でも、適切に業務プロセス構造を推定できるようになる。
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、図12に示したプロセス構造推定装置30の機能ブロックは必ずしも実際のプログラムモジュール構成と一致するわけではない。データ格納部の構成も同様に一例にすぎない。
また、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしてもよい。
なお、上で述べたプロセス構造推定装置30は、コンピュータ装置であって、図39に示すように、メモリ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及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
以上述べた本実施の形態をまとめると、以下のようになる。
第1の態様に係るプロセス構造推定方法は、業務システムにおいて実施され且つ特定のプロセスに係るイベント毎に当該イベントの属性の属性値と処理時刻とを格納するデータ格納部に格納されている各イベントについて、当該イベントに設定されている属性のうち、並列実施されたイベントに対して設定され且つ追番とみなされる追番属性の数を計数するステップ(図40:S1001)と、追番属性が設定されていないイベントに相当する始点及び終点と、追番属性と当該追番属性の属性値との全ての対の各々に対応する分岐ルートに分岐し且つ始点と接続される分岐点と、分岐ルートが合流し且つ終点と接続される合流点とを含む仮想ルートデータを生成する仮想ルートデータ生成ステップ(図40:S1003)と、追番属性が設定されているイベントである追番設定イベントについて、設定されている追番属性の数が小さい追番設定イベントから順に、当該追番設定イベントに設定されている追番属性及び当該追番属性の属性値と処理時刻とから、所定のルールに従って、仮想ルートデータにおいて当該追番設定イベントを配置すべき分岐ルートを決定し、当該決定に基づき仮想ルートデータを更新する更新ステップ(図40:S1005)とを含む。
このようにすれば、追番属性の数が小さいイベントから順にイベントの配置を決定していくので、処理対象のイベントより追番属性の数が小さいイベントがあれば、そのようなイベントの位置が決まっている状態で、処理対象のイベントの配置を決定することになる。すなわち、処理対象イベントより追番属性の数が小さいイベントとの相対的な位置関係を考慮しながら、処理対象のイベントの配置を決定することができるようになる。例えば次々と再分岐が繰り返され、分岐の段数が多くなる場合でも、追番属性に従ってプロセス構造を推定できる。
第1の態様において、上で述べた仮想ルートデータ生成ステップの前に、先頭イベント及び末尾イベント以外のイベントの中に追番属性が設定されていないイベントが存在するか判断するステップをさらに含むようにしてもよい。そして、先頭イベント及び末尾イベント以外のイベントの中に追番属性が設定されていないイベントが存在する場合には、追番属性が設定されていないイベントで区切られる区間毎に仮想ルートデータ生成ステップ以降のステップを実施し、各区間の仮想ルートデータを連結するようにしてもよい。
例えば全ての分岐ルートが一旦合流し、新たに分岐するような場合、合流の前後で同じ追番属性が使われる可能性があり、この場合、合流の前後では、意味が異なるものとして処理する必要がある。先頭及び末尾のイベント以外に、追番属性が未設定のものがあるか判断することで、全ての分岐ルートが一旦合流しているか判断できる。そして、先頭及び末尾のイベント以外に追番属性が未設定のイベントがある場合には、そのイベントで区切られる区間毎に処理が実施されるので、同じ追番属性が複数区間で使われていても、意味が異なるものとしてプロセス構造を推定できるようになる。
また、上で述べた更新ステップが、処理対象の追番設定イベントに設定されている追番属性の数が1の場合、仮想ルートデータにおいて、処理対象の追番設定イベントに設定されている追番属性と当該追番属性の属性値との対に対応する分岐ルートを特定し、特定された分岐ルート上に処理対象の追番設定イベントを表すノードを配置するステップを含むようにしてもよい。追番属性の数が1のイベントについては、追番属性及び当該追番属性の属性値から、配置先となる分岐ルートを一意に特定できる。
さらに、上で述べた更新ステップが、処理対象の追番設定イベントに設定されている追番属性の数が2以上の場合、追番属性の数が処理対象の追番設定イベントより小さく且つ処理時刻が処理対象の追番設定イベントより早い追番設定イベントの中に、処理対象の追番設定イベントに設定されている追番属性と当該追番属性の属性値との対のいずれかと同一の対を少なくとも1つ含む追番設定イベントである対応付け候補イベントが存在するか判断するステップと、対応付け候補イベントが存在すると判断された場合、処理対象の追番設定イベントと同一の対を最も多く含む対応付け候補イベントを対応付けイベントとして特定し、特定された対応付けイベントの後方を、処理対象の追番設定イベントの配置先として決定する配置先決定ステップと、始点から配置先までの経路における分岐回数が処理対象の追番設定イベントに設定されている追番属性の数より小さいか判断し、小さいと判断された場合には、始点から配置先までの経路における分岐回数が処理対象の追番設定イベントに設定されている追番属性の数と等しくなるよう分岐ルートを再分岐させ、再分岐後の分岐ルート上に処理対象の追番設定イベントの配置先を再設定するステップと、処理対象の追番設定イベントを表すノードを配置先に配置するステップとを含むようにしてもよい。このようにすれば、追番属性が2以上のイベントの配置先を適切に決定することができる。なお、対応付けイベントは、処理対象イベントに先立って実施されたものとみなされるイベントである。
また、上で述べた配置先決定ステップが、対応付けイベントと同一の追番属性及び当該追番属性の属性値を含む追番設定イベントが存在するか判断し、該当する追番設定イベントが存在する場合には、対応付けイベントと、該当する追番設定イベントとの間を、処理対象の追番設定イベントの配置先として決定するステップを含むようにしてもよい。なお、対応付けイベントと同一の追番属性及び当該追番属性の属性値を持つイベントがあった場合、処理対象イベントは、対応付けイベントと、そのイベントとの間で発生したものと推定されるため、対応付けイベントと、そのイベントとの間に配置するのが好ましい。
さらに、上で述べた配置先決定ステップにおいて、対応付けイベントが複数存在する場合には、処理時刻が処理対象の追番設定イベントに最も近い対応付けイベントを優先するようにしてもよい。
第2の態様に係るプロセス構造推定装置は、業務システムにおいて実施され且つ特定のプロセスに係るイベント毎に当該イベントの属性の属性値と処理時刻とを格納するデータ格納部(図41:1501)と、データ格納部に格納されている各イベントについて、当該イベントに設定されている属性のうち、並列実施されたイベントに対して設定され且つ追番とみなされる追番属性の数を計数する追番設定数計数手段(図41:追番設定数計数部1503)と、追番属性が設定されていないイベントに相当する始点及び終点と、追番属性と当該追番属性の属性値との全ての対の各々に対応する分岐ルートに分岐し且つ始点と接続される分岐点と、分岐ルートが合流し且つ終点と接続される合流点とを含む仮想ルートデータを生成する仮想ルートデータ生成手段(図41:仮想ルートデータ生成部1505)と、追番属性が設定されているイベントである追番設定イベントについて、設定されている追番属性の数が小さい追番設定イベントから順に、当該追番設定イベントに設定されている追番属性及び当該追番属性の属性値と処理時刻とから、所定のルールに従って、仮想ルートデータにおいて当該追番設定イベントを配置すべき分岐ルートを決定し、当該決定に基づき仮想ルートデータを更新する仮想ルートデータ更新手段(図41:仮想ルートデータ更新部1507)とを有する。
なお、上で述べたような処理をコンピュータに実施させるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブル・ディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。なお、処理途中のデータについては、コンピュータのメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
業務システムにおいて実施され且つ特定のプロセスに係るイベント毎に当該イベントの属性の属性値と処理時刻とを格納するデータ格納部に格納されている各前記イベントについて、当該イベントに設定されている前記属性のうち、並列実施されたイベントに対して設定され且つ追番とみなされる追番属性の数を計数するステップと、
前記追番属性が設定されていない前記イベントに相当する始点及び終点と、前記追番属性と当該追番属性の属性値との全ての対の各々に対応する分岐ルートに分岐し且つ前記始点と接続される分岐点と、前記分岐ルートが合流し且つ前記終点と接続される合流点とを含む仮想ルートデータを生成する仮想ルートデータ生成ステップと、
前記追番属性が設定されている前記イベントである追番設定イベントについて、設定されている前記追番属性の数が小さい前記追番設定イベントから順に、当該追番設定イベントに設定されている前記追番属性及び当該追番属性の属性値と前記処理時刻とから、所定のルールに従って、前記仮想ルートデータにおいて当該追番設定イベントを配置すべき分岐ルートを決定し、当該決定に基づき前記仮想ルートデータを更新する更新ステップと、
を含み、コンピュータにより実行されるプロセス構造推定方法。
(付記2)
前記仮想ルートデータ生成ステップの前に、先頭イベント及び末尾イベント以外の前記イベントの中に前記追番属性が設定されていない前記イベントが存在するか判断するステップ
をさらに含み、
前記先頭イベント及び末尾イベント以外の前記イベントの中に前記追番属性が設定されていない前記イベントが存在する場合、前記追番属性が設定されていない前記イベントで区切られる区間毎に前記仮想ルートデータ生成ステップ以降のステップを実施し、各前記区間の前記仮想ルートデータを連結する
付記1記載のプロセス構造推定方法。
(付記3)
前記更新ステップが、
処理対象の前記追番設定イベントに設定されている前記追番属性の数が1の場合、前記仮想ルートデータにおいて、処理対象の前記追番設定イベントに設定されている前記追番属性と当該追番属性の属性値との対に対応する前記分岐ルートを特定し、特定された前記分岐ルート上に処理対象の前記追番設定イベントを表すノードを配置するステップ
を含む付記1又は2記載のプロセス構造推定方法。
(付記4)
前記更新ステップが、
処理対象の前記追番設定イベントに設定されている前記追番属性の数が2以上の場合、前記追番属性の数が処理対象の前記追番設定イベントより小さく且つ前記処理時刻が処理対象の前記追番設定イベントより早い前記追番設定イベントの中に、処理対象の前記追番設定イベントに設定されている前記追番属性と当該追番属性の属性値との対のいずれかと同一の対を少なくとも1つ含む前記追番設定イベントである対応付け候補イベントが存在するか判断するステップと、
前記対応付け候補イベントが存在すると判断された場合、処理対象の前記追番設定イベントと同一の対を最も多く含む前記対応付け候補イベントを対応付けイベントとして特定し、特定された前記対応付けイベントの後方を、処理対象の前記追番設定イベントの配置先として決定する配置先決定ステップと、
前記始点から前記配置先までの経路における分岐回数が処理対象の前記追番設定イベントに設定されている前記追番属性の数より小さいか判断し、小さいと判断された場合には、前記始点から前記配置先までの経路における分岐回数が処理対象の前記追番設定イベントに設定されている前記追番属性の数と等しくなるよう前記分岐ルートを再分岐させ、再分岐後の分岐ルート上に処理対象の前記追番設定イベントの前記配置先を再設定するステップと、
処理対象の前記追番設定イベントを表すノードを前記配置先に配置するステップと、
を含む付記1乃至3のいずれか1つ記載のプロセス構造推定方法。
(付記5)
前記配置先決定ステップが、
前記対応付けイベントと同一の前記追番属性及び当該追番属性の属性値を含む前記追番設定イベントが存在するか判断し、該当する前記追番設定イベントが存在する場合には、前記対応付けイベントと、該当する前記追番設定イベントとの間を、処理対象の前記追番設定イベントの前記配置先として決定するステップ
を含む付記4記載のプロセス構造推定方法。
(付記6)
前記配置先決定ステップにおいて、前記対応付けイベントが複数存在する場合には、前記処理時刻が処理対象の前記追番設定イベントに最も近い前記対応付けイベントを優先する
付記4又は5記載のプロセス構造推定方法。
(付記7)
業務システムにおいて実施され且つ特定のプロセスに係るイベント毎に当該イベントの属性の属性値と処理時刻とを格納するデータ格納部に格納されている各前記イベントについて、当該イベントに設定されている前記属性のうち、並列実施されたイベントに対して設定され且つ追番とみなされる追番属性の数を計数するステップと、
前記追番属性が設定されていない前記イベントに相当する始点及び終点と、前記追番属性と当該追番属性の属性値との全ての対の各々に対応する分岐ルートに分岐し且つ前記始点と接続される分岐点と、前記分岐ルートが合流し且つ前記終点と接続される合流点とを含む仮想ルートデータを生成する仮想ルートデータ生成ステップと、
前記追番属性が設定されている前記イベントである追番設定イベントについて、設定されている前記追番属性の数が小さい前記追番設定イベントから順に、当該追番設定イベントに設定されている前記追番属性及び当該追番属性の属性値と前記処理時刻とから、所定のルールに従って、前記仮想ルートデータにおいて当該追番設定イベントを配置すべき分岐ルートを決定し、当該決定に基づき前記仮想ルートデータを更新する更新ステップと、
をコンピュータに実行させるためのプロセス構造推定プログラム。
(付記8)
業務システムにおいて実施され且つ特定のプロセスに係るイベント毎に当該イベントの属性の属性値と処理時刻とを格納するデータ格納部と、
前記データ格納部に格納されている各前記イベントについて、当該イベントに設定されている前記属性のうち、並列実施されたイベントに対して設定され且つ追番とみなされる追番属性の数を計数する追番設定数計数手段と、
前記追番属性が設定されていない前記イベントに相当する始点及び終点と、前記追番属性と当該追番属性の属性値との全ての対の各々に対応する分岐ルートに分岐し且つ前記始点と接続される分岐点と、前記分岐ルートが合流し且つ前記終点と接続される合流点とを含む仮想ルートデータを生成する仮想ルートデータ生成手段と、
前記追番属性が設定されている前記イベントである追番設定イベントについて、設定されている前記追番属性の数が小さい前記追番設定イベントから順に、当該追番設定イベントに設定されている前記追番属性及び当該追番属性の属性値と前記処理時刻とから、所定のルールに従って、前記仮想ルートデータにおいて当該追番設定イベントを配置すべき分岐ルートを決定し、当該決定に基づき前記仮想ルートデータを更新する仮想ルートデータ更新手段と、
を有するプロセス構造推定装置。