(57)【要約】【課題】例外処理が頻繁に生じる場合でもワークフローの定義を簡略化でき、基本ワークフローと例外ワークフローとを両方とも実行可能とする。【解決手段】ワークフロー処理装置３０は、例外発生時のステップ実体ＩＤに基づいて、ステップ実体テーブル２２からタイプを判定し、ステップ実体遷移テーブル２３又は例外ワークフロー実体遷移テーブル２４によって遷移を前に辿る処理を再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定し、特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、ステップ定義テーブル１２によってタイプを判定し、ステップ定義遷移テーブル１３によって遷移を後ろに辿る処理を再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する。このように、例外のワークフローの合流点を予め定義せずに例外発生時に特定するので、上記課題を解決できる。【選択図】図８
2010224956.tif 000002
【特許請求の範囲】
【請求項１】
ステップ定義ＩＤ毎にタイプを関連付けるステップ定義テーブルと、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶手段と、
ステップ実体ＩＤ毎にステップ定義ＩＤ、タイプを関連付けるステップ実体テーブルと、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルとを記憶するための実体テーブル記憶手段と、を読出／書込可能なワークフロー処理装置であって、
入力された例外発生時のステップ実体ＩＤに基づいて、前記ステップ実体テーブルからタイプを判定する処理と、前記ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定する開始点特定手段と、
前記特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、前記ステップ定義テーブルによってタイプを判定する処理と、前記ステップ定義遷移テーブルによって遷移を後ろに辿る処理とを再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する合流点特定手段と
を備えたことを特徴とするワークフロー処理装置。
【請求項２】
ステップ定義ＩＤ毎にタイプを関連付けるステップ定義テーブルと、ワークフロー定義ＩＤ、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶手段と、
ワークフロー実体ＩＤ毎にワークフロー定義ＩＤを関連付けるワークフロー実体テーブルと、ステップ実体ＩＤ毎にステップ定義ＩＤ、タイプを関連付けるステップ実体テーブルと、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルとを記憶するための実体テーブル記憶手段と、を読出／書込可能なワークフロー処理装置であって、
入力された通常または例外のワークフロー定義ＩＤについて、ワークフロー実体ＩＤを生成し、当該生成したワークフロー実体ＩＤと前記ワークフロー定義ＩＤとを関連付けて前記ワークフロー実体テーブルに書き込むワークフロー実体テーブル書込手段と、
前記入力されたワークフロー定義ＩＤについて、前記ステップ定義遷移テーブルを検索し、先頭のステップ定義ＩＤを取得し、ステップ実体ＩＤを生成し、前記先頭のステップ定義ＩＤについて、前記ステップ定義テーブルを検索してタイプを取得し、これらを関連付けて前記ステップ実体テーブルに書き込むステップ実体テーブル書込手段と、
入力された例外発生時のステップ実体ＩＤに基づいて、前記ステップ実体テーブルからタイプを判定する処理と、前記ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定する開始点特定手段と、
前記特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、前記ステップ定義テーブルによってタイプを判定する処理と、前記ステップ定義遷移テーブルによって遷移を後ろに辿る処理とを再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する合流点特定手段と
を備えたことを特徴とするワークフロー処理装置。
【請求項３】
例外のワークフローを示す例外のワークフロー定義ＩＤを含む複数のワークフロー定義ＩＤが格納されたワークフロー定義テーブルと、ステップ定義ＩＤ毎にワークフロー定義ＩＤ及びタイプを関連付けるステップ定義テーブル（但し、前記タイプは、「通常」、「開始点」又は「合流点」を示す。）と、ワークフロー定義ＩＤ、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶手段と、
ワークフロー実体ＩＤ毎にワークフロー定義ＩＤ及び状態を関連付けるワークフロー実体テーブル（但し、前記状態は「実行可能」、「実行中」又は「完了」を示す。）と、ステップ実体ＩＤ毎にステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ及び状態を関連付けるステップ実体テーブルと、ワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルと、例外のワークフロー実体ＩＤ毎に分岐元のワークフロー実体ＩＤ、分岐元のステップ実体ＩＤ及び合流先のステップ定義ＩＤを関連付ける例外ワークフロー実体遷移テーブルとを記憶するための実体テーブル記憶手段と、
ユーザインターフェース装置と、に通信可能なワークフロー処理装置であって、
前記ユーザインターフェース装置から送信されたワークフロー定義ＩＤ及び開始情報の入力を受け付ける第１の入力受付手段と、
前記開始情報とともに入力を受け付けたワークフロー定義ＩＤが前記ワークフロー定義テーブルに存在するときに、ワークフロー実体ＩＤを生成し、当該生成したワークフロー実体ＩＤ、前記ワークフロー定義ＩＤ及び前記状態として「実行中」を関連付けて前記ワークフロー実体テーブルに書き込むワークフロー実体テーブル書込手段と、
前記入力を受け付けたワークフロー定義ＩＤについて、前記ステップ定義遷移テーブルを検索し、当該検索結果のうち、先頭の遷移後のステップ定義ＩＤを取得し、ステップ実体ＩＤを生成し、前記先頭の遷移後のステップ定義ＩＤについて、前記ステップ定義テーブルを検索してタイプを取得し、前記生成したステップ実体ＩＤと前記先頭の遷移後のステップ定義ＩＤと、前記生成したワークフロー実体ＩＤと、前記タイプと、前記状態として「実行可能」とを関連付けて前記ステップ実体テーブルに書き込むステップ実体テーブル書込手段と、
前記生成したワークフロー実体ＩＤ、及び前記生成したステップ実体ＩＤを遷移後のステップ実体ＩＤとして関連付けて前記ステップ実体遷移テーブルに書き込むステップ実体遷移テーブル書込手段と、
前記ユーザインターフェース装置から送信されたステップ実体ＩＤ及び開始情報を受け、前記ステップ実体テーブル内でこのステップ実体ＩＤに対応する状態が「実行可能」を示すとき、この「実行可能」を「実行中」に更新するステップ開始手段と、
前記ユーザインターフェース装置から送信された例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ及び例外発生時のステップ実体ＩＤの入力を受け付ける第２の入力受付手段と、
前記現在のワークフロー実体ＩＤ及び例外発生時のステップ実体ＩＤを受けると、ステップ実体ＩＤについて前記ステップ実体テーブルによってタイプを判定する処理と、前記ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行することにより、タイプが「開始点」のステップ実体ＩＤを特定する開始点特定手段と、
前記開始点特定手段により特定された「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、ステップ定義ＩＤについて前記ステップ定義テーブルによってタイプを判定する処理と、前記ステップ定義遷移テーブルによって遷移を後に辿る処理とを再帰的に実行することにより、タイプが「合流点」のステップ定義ＩＤを特定する合流点特定手段と、
前記入力を受け付けた例外のワークフロー定義ＩＤが前記ワークフロー定義テーブルに存在するときに、例外のワークフロー実体ＩＤを生成し、当該生成した例外のワークフロー実体ＩＤ、前記例外のワークフロー定義ＩＤ及び前記状態として「実行中」を関連付けて前記ワークフロー実体テーブルに書き込む例外のワークフロー実体テーブル書込手段と、
前記入力を受け付けた例外のワークフロー定義ＩＤについて、前記ステップ定義遷移テーブルを検索し、当該検索結果のうち、先頭の遷移後のステップ定義ＩＤを取得し、例外のステップ実体ＩＤを生成し、この先頭の遷移後のステップ定義ＩＤに基づいて、前記ステップ定義テーブルを検索してタイプを取得し、前記生成した例外のステップ実体ＩＤと前記先頭の遷移後のステップ定義ＩＤと、前記生成した例外のワークフロー実体ＩＤと、前記タイプと、前記状態として「実行可能」とを関連付けて前記ステップ実体テーブルに書き込む例外のステップ実体テーブル書込手段と、
前記生成した例外のワークフロー実体ＩＤ、前記生成した例外のステップ実体ＩＤを遷移後のステップ実体ＩＤとして関連付けて前記ステップ実体遷移テーブルに書き込む例外のステップ実体遷移テーブル書込手段と、
前記例外のワークフロー実体ＩＤと、分岐元のワークフロー実体ＩＤとしての前記現在のワークフロー実体ＩＤと、分岐元のステップ実体ＩＤとしての例外発生時のステップ実体ＩＤと、合流先のステップ定義ＩＤとしての前記「合流点」のステップ定義ＩＤとを関連付けて前記例外ワークフロー実体遷移テーブルに書き込む例外ワークフロー実体遷移テーブル書込手段と、
前記ユーザインターフェース装置から送信されたステップ実体ＩＤ及び終了情報を受けると、前記ステップ実体テーブル内でこのステップ実体ＩＤの状態が「実行中」を示すとき、この状態を「実行中」から「完了」に更新するステップ終了手段と、
前記状態を「完了」に更新した後、当該更新した状態に対応するステップ定義ＩＤを遷移前のステップ定義ＩＤとした場合に、前記ステップ定義遷移テーブルに遷移後のステップ定義ＩＤがあるか否かを判定する遷移後ステップ判定手段と、
この判定の結果、遷移後のステップ定義ＩＤがある場合、当該遷移後のステップ定義ＩＤに基づいて前記ステップ定義テーブルからタイプを取得し、このタイプが「通常」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ、当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「通常」及び状態「実行可能」を関連付けて前記ステップ実体テーブルに書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを前記ステップ実体遷移テーブルに書き込む通常タイプ処理手段と、
前記タイプが「開始点」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ毎に当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「開始点」及び状態「自動終了」を関連付けてステップ実体テーブルに書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを前記ステップ実体遷移テーブルに書き込む開始点タイプ処理手段と、
前記タイプが「合流点」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ毎に当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「合流点」及び状態「実行待ち」を前記ステップ実体テーブルに書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを前記ステップ実体遷移テーブルに書き込む合流点タイプ処理手段と、
を備えたことを特徴とするワークフロー処理装置。
【請求項４】
ステップ定義ＩＤ毎にタイプを関連付けるステップ定義テーブルと、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶手段と、
ステップ実体ＩＤ毎にステップ定義ＩＤ、タイプを関連付けるステップ実体テーブルと、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルとを記憶するための実体テーブル記憶手段と、を読出／書込可能なワークフロー処理装置に用いられるプログラムであって、
前記ワークフロー処理装置を、
入力された例外発生時のステップ実体ＩＤを前記ワークフロー処理装置の記憶部に書き込むと共に、前記記憶部内のステップ実体ＩＤに基づいて、前記ステップ実体テーブルからタイプを判定する処理と、前記ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定する開始点特定手段、
前記特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、前記ステップ定義テーブルによってタイプを判定する処理と、前記ステップ定義遷移テーブルによって遷移を後ろに辿る処理とを再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する合流点特定手段、
として機能させるためのプログラム。
【請求項５】
ステップ定義ＩＤ毎にタイプを関連付けるステップ定義テーブルと、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶手段と、
ステップ実体ＩＤ毎にステップ定義ＩＤ、タイプを関連付けるステップ実体テーブルと、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルとを記憶するための実体テーブル記憶手段と、を読出／書込可能なワークフロー処理装置であり、且つ開始点特定手段、記憶部及び合流点特定手段を備えた前記ワークフロー処理装置により実行されるワークフロー処理方法であって、
前記開始点特定手段が、入力された例外発生時のステップ実体ＩＤを前記記憶部に書き込むと共に、前記記憶部内のステップ実体ＩＤに基づいて、前記ステップ実体テーブルからタイプを判定する処理と、前記ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定する開始点特定工程と、
前記合流点特定手段が、前記特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、前記ステップ定義テーブルによってタイプを判定する処理と、前記ステップ定義遷移テーブルによって遷移を後ろに辿る処理とを再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する合流点特定工程と、
を備えたことを特徴とするワークフロー処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例外処理を伴うワークフローを処理するためのワークフロー処理装置、プログラム及び方法に係り、例えば、例外処理が頻繁に生じる場合でもワークフローの定義を簡略化でき、基本ワークフローと例外ワークフローとを両方とも実行し得るワークフロー処理装置、プログラム及び方法に関する。
【背景技術】
【０００２】
従来のワークフローシステムでは、ワークフローで例外処理のワークフローを実行したい場合、図３９に示すように、分岐ステップを使って予め基本ワークフロー上に例外ワークフローを定義しておく必要がある。このため、例外処理が頻繁に発生するような業務に適用する場合、ワークフローを設計又は再設計する作業が煩雑になり易い問題がある。
【０００３】
この問題の解消を図る観点から、例えば、ワークフローの例外処理に伴って発生する部分ワークフローを追加したい場合に、追加する部分ワークフローを装置に登録することにより、ワークフローの再設計を行うことなく、部分ワークフローを追加する方法が知られている（例えば、特許文献１参照。）。
【０００４】
また、従来のワークフローシステムでは、あるステップで例外が発生した場合、例外用のワークフローが実行される。この種の技術としては、例えば、ワークフローの実行中に分岐点位置の指定を受けると、その分岐点に別のワークフローを結合してワークフローを更新し、処理を別のワークフローに切り替えて実行する方法が知られている（例えば、特許文献２参照。）
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−６２７３３号公報
【特許文献２】特開２００８−３０５２０５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、以上のような特許文献１，２に記載の技術は、それぞれ以下のような不都合がある。
【０００７】
特許文献１に記載の技術によれば、基本ワークフローを定義しておき、例外処理に伴う部分ワークフローを後から追加可能である。これにより、基本ワークフローは例外処理を気にせずに定義できるが、例外処理が頻繁に発生する業務に適用する場合には、追加後のワークフローの定義が複雑になってしまう。
【０００８】
特許文献２に記載の技術では、複数のワークフローを定義しておき、あるワークフローの実行時に分岐点位置の指定を受けると、その分岐点で別のワークフローに処理を切り替えて実行可能となっている。しかし、実行可能なワークフロー処理はいずれか一方であり、複数のワークフローを実行することはできない。また、実行するワークフローを切り替えると元のワークフローに処理を戻すことはできない。すなわち、基本ワークフローと例外ワークフローとを両方とも実行したい場合には不向きである。
【０００９】
本発明は上記実情を考慮してなされたもので、例外処理が頻繁に生じる場合でもワークフローの定義を簡略化でき、基本ワークフローと例外ワークフローとを両方とも実行し得るワークフロー処理装置、プログラム及び方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の一つの局面(aspect)は、例外のワークフローを示す例外のワークフロー定義ＩＤを含む複数のワークフロー定義ＩＤが格納されたワークフロー定義テーブルと、ステップ定義ＩＤ毎にワークフロー定義ＩＤ及びタイプを関連付けるステップ定義テーブル（但し、前記タイプは、「通常」、「開始点」又は「合流点」を示す。）と、ワークフロー定義ＩＤ、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶手段と、ワークフロー実体ＩＤ毎にワークフロー定義ＩＤ及び状態を関連付けるワークフロー実体テーブル（但し、前記状態は「実行可能」、「実行中」又は「完了」を示す。）と、ステップ実体ＩＤ毎にステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ及び状態を関連付けるステップ実体テーブルと、ワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルと、例外のワークフロー実体ＩＤ毎に分岐元のワークフロー実体ＩＤ、分岐元のステップ実体ＩＤ及び合流先のステップ定義ＩＤを関連付ける例外ワークフロー実体遷移テーブルとを記憶するための実体テーブル記憶手段と、ユーザインターフェース装置と、に通信可能なワークフロー処理装置であって、前記ユーザインターフェース装置から送信されたワークフロー定義ＩＤ及び開始情報の入力を受け付ける第１の入力受付手段と、前記開始情報とともに入力を受け付けたワークフロー定義ＩＤが前記ワークフロー定義テーブルに存在するときに、ワークフロー実体ＩＤを生成し、当該生成したワークフロー実体ＩＤ、前記ワークフロー定義ＩＤ及び前記状態として「実行中」を関連付けて前記ワークフロー実体テーブルに書き込むワークフロー実体テーブル書込手段と、前記入力を受け付けたワークフロー定義ＩＤについて、前記ステップ定義遷移テーブルを検索し、当該検索結果のうち、先頭の遷移後のステップ定義ＩＤを取得し、ステップ実体ＩＤを生成し、前記先頭の遷移後のステップ定義ＩＤについて、前記ステップ定義テーブルを検索してタイプを取得し、前記生成したステップ実体ＩＤと前記先頭の遷移後のステップ定義ＩＤと、前記生成したワークフロー実体ＩＤと、前記タイプと、前記状態として「実行可能」とを関連付けて前記ステップ実体テーブルに書き込むステップ実体テーブル書込手段と、前記生成したワークフロー実体ＩＤ、及び前記生成したステップ実体ＩＤを遷移後のステップ実体ＩＤとして関連付けて前記ステップ実体遷移テーブルに書き込むステップ実体遷移テーブル書込手段と、前記ユーザインターフェース装置から送信されたステップ実体ＩＤ及び開始情報を受け、前記ステップ実体テーブル内でこのステップ実体ＩＤに対応する状態が「実行可能」を示すとき、この「実行可能」を「実行中」に更新するステップ開始手段と、前記ユーザインターフェース装置から送信された例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ及び例外発生時のステップ実体ＩＤの入力を受け付ける第２の入力受付手段と、前記現在のワークフロー実体ＩＤ及び例外発生時のステップ実体ＩＤを受けると、ステップ実体ＩＤについて前記ステップ実体テーブルによってタイ���を判定する処理と、前記ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行することにより、タイプが「開始点」のステップ実体ＩＤを特定する開始点特定手段と、前記開始点特定手段により特定された「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、ステップ定義ＩＤについて前記ステップ定義テーブルによってタイプを判定する処理と、前記ステップ定義遷移テーブルによって遷移を後に辿る処理とを再帰的に実行することにより、タイプが「合流点」のステップ定義ＩＤを特定する合流点特定手段と、前記入力を受け付けた例外のワークフロー定義ＩＤが前記ワークフロー定義テーブルに存在するときに、例外のワークフロー実体ＩＤを生成し、当該生成した例外のワークフロー実体ＩＤ、前記例外のワークフロー定義ＩＤ及び前記状態として「実行中」を関連付けて前記ワークフロー実体テーブルに書き込む例外のワークフロー実体テーブル書込手段と、前記入力を受け付けた例外のワークフロー定義ＩＤについて、前記ステップ定義遷移テーブルを検索し、当該検索結果のうち、先頭の遷移後のステップ定義ＩＤを取得し、例外のステップ実体ＩＤを生成し、この先頭の遷移後のステップ定義ＩＤに基づいて、前記ステップ定義テーブルを検索してタイプを取得し、前記生成した例外のステップ実体ＩＤと前記先頭の遷移後のステップ定義ＩＤと、前記生成した例外のワークフロー実体ＩＤと、前記タイプと、前記状態として「実行可能」とを関連付けて前記ステップ実体テーブルに書き込む例外のステップ実体テーブル書込手段と、前記生成した例外のワークフロー実体ＩＤ、前記生成した例外のステップ実体ＩＤを遷移後のステップ実体ＩＤとして関連付けて前記ステップ実体遷移テーブルに書き込む例外のステップ実体遷移テーブル書込手段と、前記例外のワークフロー実体ＩＤと、分岐元のワークフロー実体ＩＤとしての前記現在のワークフロー実体ＩＤと、分岐元のステップ実体ＩＤとしての例外発生時のステップ実体ＩＤと、合流先のステップ定義ＩＤとしての前記「合流点」のステップ定義ＩＤとを関連付けて前記例外ワークフロー実体遷移テーブルに書き込む例外ワークフロー実体遷移テーブル書込手段と、前記ユーザインターフェース装置から送信されたステップ実体ＩＤ及び終了情報を受けると、前記ステップ実体テーブル内でこのステップ実体ＩＤの状態が「実行中」を示すとき、この状態を「実行中」から「完了」に更新するステップ終了手段と、前記状態を「完了」に更新した後、当該更新した状態に対応するステップ定義ＩＤを遷移前のステップ定義ＩＤとした場合に、前記ステップ定義遷移テーブルに遷移後のステップ定義ＩＤがあるか否かを判定する遷移後ステップ判定手段と、この判定の結果、遷移後のステップ定義ＩＤがある場合、当該遷移後のステップ定義ＩＤに基づいて前記ステップ定義テーブルからタイプを取得し、このタイプが「通常」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ、当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「通常」及び状態「実行可能」を関連付けて前記ステップ実体テーブルに書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び���移後のステップ実体ＩＤを前記ステップ実体遷移テーブルに書き込む通常タイプ処理手段と、前記タイプが「開始点」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ毎に当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「開始点」及び状態「自動終了」を関連付けてステップ実体テーブルに書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを前記ステップ実体遷移テーブルに書き込む開始点タイプ処理手段と、前記タイプが「合流点」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ毎に当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「合流点」及び状態「実行待ち」を前記ステップ実体テーブルに書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを前記ステップ実体遷移テーブルに書き込む合流点タイプ処理手段と、を備えたワークフロー処理装置である。
【００１１】
また、本発明の他の局面は、ステップ定義ＩＤ毎にタイプを関連付けるステップ定義テーブルと、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶手段と、ステップ実体ＩＤ毎にステップ定義ＩＤ、タイプを関連付けるステップ実体テーブルと、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルとを記憶するための実体テーブル記憶手段と、を読出／書込可能なワークフロー処理装置であって、入力された例外発生時のステップ実体ＩＤに基づいて、前記ステップ実体テーブルからタイプを判定する処理と、前記ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定する開始点特定手段と、前記特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、前記ステップ定義テーブルによってタイプを判定する処理と、前記ステップ定義遷移テーブルによって遷移を後ろに辿る処理とを再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する合流点特定手段とを備えたワークフロー処理装置である。
【００１２】
なお、本発明の各局面は、装置として実現した場合を例に挙げて述べたが、これに限らず、プログラム、システム、方法、又はプログラムを記憶した記憶媒体（コンピュータ読取り可能な記憶媒体）、として実現してもよい。
【００１３】
（作用）
本発明の一つの局面によれば、開始点特定手段、合流点特定手段及び例外ワークフロー実体遷移テーブル書込手段を備えた構成により、例外のワークフローの合流点を予め定義せずに例外発生時に特定するようにしたので、例外処理が頻繁に生じる場合でもワークフローの定義を簡略化でき、基本ワークフローと例外ワークフローとを両方とも実行することができる。
【００１４】
また、本発明の他の局面によれば、開始点特定手段及び合流点特定手段を備えた構成により、例外のステップ遷移の合流点を予め定義せずに例外発生時に特定するようにしたので、例外処理が頻繁に生じる場合でもステップ定義及びステップ遷移の定義を簡略化でき、定義されたステップが遷移してなる基本ワークフローと例外ワークフローとを両方とも実行することができる。
【発明の効果】
【００１５】
以上説明したように本発明によれば、例外処理が頻繁に生じる場合でもワークフローの定義を簡略化でき、基本ワークフローと例外ワークフローとを両方とも実行できる。
【図面の簡単な説明】
【００１６】
【図１】本発明の概要を説明するためのワークフローの模式図である。
【図２】本発明の概要を説明するためのワークフローの模式図である。
【図３】本発明の第１の実施形態に係るワークフロー処理装置を備えたワークフローシステムの構成を示すブロック図である。
【図４】同実施形態における定義情報格納部を説明するための模式図である。
【図５】同実施形態における実体情報格納部を説明するための模式図である。
【図６】同実施形態における動作を説明するためのフローチャートである。
【図７】同実施形態における動作を説明するためのフローチャートである。
【図８】同実施形態における動作を説明するための模式図である。
【図９】本発明の第２の実施形態に係るワークフローの定義例を示す模式図である。
【図１０】同実施形態におけるワークフロー定義テーブルの具体例を示す模式図である。
【図１１】同実施形態におけるステップ定義テーブルの具体例を示す模式図である。
【図１２】同実施形態におけるステップ定義遷移テーブルの具体例を示す模式図である。
【図１３】同実施形態におけるワークフロー実体テーブルの具体例を示す模式図である。
【図１４】同実施形態におけるステップ実体テーブルの具体例を示す模式図である。
【図１５】同実施形態におけるステップ実体遷移テーブルの具体例を示す模式図である。
【図１６】同実施形態における動作を説明するための模式図である。
【図１７】同実施形態におけるステップ実体テーブルの具体例を示す模式図である。
【図１８】同実施形態における動作を説明するための模式図である。
【図１９】同実施形態におけるステップ実体テーブルの具体例を示す模式図である。
【図２０】同実施形態におけるステップ実体遷移テーブルの具体例を示す模式図である。
【図２１】同実施形態における動作を説明するための模式図である。
【図２２】同実施形態におけるワークフロー実体テーブルの具体例を示す模式図である。
【図２３】同実施形態におけるステップ実体テーブルの具体例を示す模式図である。
【図２４】同実施形態におけるステップ実体遷移テーブルの具体例を示す模式図である。
【図２５】同実施形態における例外ワークフロー実体遷移テーブルの具体例を示す模式図である。
【図２６】同実施形態における動作を説明するための模式図である。
【図２７】同実施形態におけるステップ実体テーブルの具体例を示す模式図である。
【図２８】同実施形態におけるステップ実体遷移テーブルの具体例を示す模式図である。
【図２９】同実施形態における動作を説明するための模式図である。
【図３０】同実施形態におけるステップ実体テーブルの具体例を示す模式図である。
【図３１】同実施形態におけるワークフロー実体テーブル及びステップ実体遷移テーブルの具体例を示す模式図である。
【図３２】同実施形態における動作を説明するための模式図である。
【図３３】同実施形態におけるステップ実体テーブルの具体例を示す模式図である。
【図３４】同実施形態におけるステップ実体遷移テーブルの具体例を示す模式図である。
【図３５】同実施形態における動作を説明するための模式図である。
【図３６】同実施形態におけるステップ実体テーブル及びステップ実体遷移テーブルの具体例を示す模式図である。
【図３７】同実施形態における動作を説明するための模式図である。
【図３８】同実施形態におけるワークフロー実体テーブルの具体例を示す模式図である。
【図３９】従来のワークフローを説明するための模式図である。
【発明を実施するための形態】
【００１７】
以下、本発明の各実施形態について図面を用いて説明するが、その前に、本発明の概要について述べる。
【００１８】
本発明の概要としては、始めに、図１（ａ）及び図１（ｂ）に示す如き、通常処理用のワークフロー（以下、基本ワークフローと呼ぶ）と例外処理用のワークフロー（以下、例外ワークフローと呼ぶ）とを別々に定義しておく。ここで、基本ワークフローでは、例外発生時に実行する例外ワークフローを定義していない。また、例外ワークフローでは、処理実行後の合流先を定義していない。従って、従来とは異なり、ワークフローの定義が簡略化されている。
【００１９】
続いて、図２（ａ）に示すように、あるステップ（例、作業(2)）で例外が発生した時点で、図２（ｂ）に示すように、例外発生状況毎に指定された例外ワークフロー（例、例外ワークフロー２）を例外が発生したステップに組みこんで基本ワークフローを動的に更新する。また、例外が発生したステップではワークフローの分岐が発生するが、図２（ｃ）に示すように、従来とは異なり、分岐後の基本ワークフローの作業と、組み込んだ例外ワークフローの作業を両方とも実行でき、実行後には元の基本ワークフローに合流して作業を続けることができる。
【００２０】
なお、例外ワークフローの合流先は、予め基本ワークフローに「例外範囲」を定義しておくことにより、一意に特定される。ここでいう「例外範囲」とは、「開始点」と「合流点」の対からなり、「開始点」と「合流点」で囲まれたステップで例外処理が発生した場合、当該ステップに組み込まれた例外ワークフローの合流先を「合流点」に一意に特定する機能をもっている。「例外範囲」は基本ワークフローに入れ子状に配置可能である。
【００２１】
以上が本発明の概要である。このような概要は、例えば、ステップ定義ＩＤ毎にタイプを関連付けるステップ定義テーブルと、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶装置と、ステップ実体ＩＤ毎にステップ定義ＩＤ、タイプを関連付けるステップ実体テーブルと、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルとを記憶するための実体テーブル記憶装置と、を読出／書込可能なワークフロー処理装置であって、入力された例外発生時のステップ実体ＩＤに基づいて、ステップ実体テーブルからタイプを判定する処理と、ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定する開始点特定機能と、特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、ステップ定義テーブルによってタイプを判定する処理と、ステップ定義遷移テーブルによって遷移を後ろに辿る処理とを再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する合流点特定機能とを備えたワークフロー処理装置によって実現可能となっている。このワークフロー処理装置によれば、開始点特定機能及び合流点特定機能を備えた構成により、例外のステップ遷移の合流点を予め定義せずに例外発生時に特定するようにしたので、例外処理が頻繁に生じる場合でもステップ定義及びステップ遷移の定義を簡略化でき、定義されたステップが遷移してなる基本ワークフローと例外ワークフローとを両方とも実行することができる。なお、ここで例示したワークフロー処理装置は、ワークフロー定義ＩＤを管理しない場合を前提とするためにワークフロー定義ＩＤを用いないが、ワークフロー定義ＩＤを管理する場合には、次のように、ワークフロー定義ＩＤ及びワークフロー実体ＩＤを用いるワークフロー処理装置とすればよい。
【００２２】
すなわち、ステップ定義ＩＤ毎にタイプを関連付けるステップ定義テーブルと、ワークフロー定義ＩＤ、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを関連付けるステップ定義遷移テーブルとを記憶するための定義テーブル記憶装置と、ワークフロー実体ＩＤ毎にワークフロー定義ＩＤを関連付けるワークフロー実体テーブルと、ステップ実体ＩＤ毎にステップ定義ＩＤ、タイプを関連付けるステップ実体テーブルと、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを関連付けるステップ実体遷移テーブルとを記憶するための実体テーブル記憶装置と、を読出／書込可能なワークフロー処理装置であって、入力された通常または例外のワークフロー定義ＩＤについて、ワークフロー実体ＩＤを生成し、当該生成したワークフロー実体ＩＤとワークフロー定義ＩＤとを関連付けてワークフロー実体テーブルに書き込むワークフロー実体テーブル書込機能と、入力されたワークフロー定義ＩＤについて、ステップ定義遷移テーブルを検索し、先頭のステップ定義ＩＤを取得し、ステップ実体ＩＤを生成し、先頭のステップ定義ＩＤについて、ステップ定義テーブルを検索してタイプを取得し、これらを関連付けてステップ実体テーブルに書き込むステップ実体テーブル書込機能と、入力された例外発生時のステップ実体ＩＤに基づいて、ステップ実体テーブルからタイプを判定する処理と、ステップ実体遷移テーブルによって遷移を前に辿る処理とを再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定する開始点特定機能と、特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、ステップ定義テーブルによってタイプを判定する処理と、ステップ定義遷移テーブルによって遷移を後ろに辿る処理とを再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する合流点特定機能とを備えたワークフロー処理装置とすればよい。また、ここで例示したワークフロー処理装置は、例外のワークフローの遷移状態を管理しない場合を前提とするために例外ワークフロー遷移テーブル等を用いないが、例外のワークフローの遷移状態を管理する場合には、以下の第１の実施形態に示すように、例外ワークフロー遷移テーブル等を用いるワークフロー処理装置とすればよい。次に、本発明の第１の実施形態を説明する。  
（第１の実施形態）
図３は本発明の第１の実施形態に係るワークフロー処理装置を備えたワークフローシステムの構成を示すブロック図である。このワークフローシステムは、定義テーブル記憶装置としての定義情報格納部１０、実体テーブル記憶装置としての実体情報格納部２０、ワークフロー処理装置３０及びユーザインターフェース装置４０を備えている。ワークフロー処理装置３０は、記憶部３１、ユーザインターフェース通信部３２、ワークフロー制御部３３、実体生成部３４、定義情報登録／取得部３５、実体情報登録／取得部３６及び合流先特定部３７を備えている。なお、ワークフロー処理装置３０は、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体からコンピュータにインストールされ、ワークフロー処理装置の機能を当該コンピュータに実現させるためのプログラムが用いられる。
【００２３】
ここで、定義情報格納部１０は、図４に示すように、定義情報として、ワークフロー定義テーブル１１、ステップ定義テーブル１２、ステップ定義遷移テーブル１３を格納するデータベースであり、ワークフロー処理装置３０から読出／書込可能となっている。
【００２４】
ワークフロー定義テーブル１１は、ワークフロー定義の情報として、ワークフロー定義ＩＤを含んでいる。なお、図４及び図５中、下線はキーを表す。
【００２５】
ステップ定義テーブル１２は、ワークフロー定義におけるステップ定義の情報として、ステップ定義ＩＤ毎にワークフロー定義ＩＤ及びタイプを含んでいる。
【００２６】
「タイプ」はステップの種類を表しており、「通常」、「開始点」、「合流点」のいずれかが設定される。「通常」は作業を実行するステップ、「開始点」は例外範囲の開始点を表すステップ、「合流点」は対応する例外範囲の合流点を表すステップを表す。
【００２７】
ステップ定義遷移テーブル１３は、ステップ定義の遷移情報として、互いに関連付けたワークフロー定義ＩＤ、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを含んでいる。
【００２８】
実体情報格納部２０は、図５に示すように、実体情報として、ワークフロー実体テーブル２１、ステップ実体テーブル２２、ステップ実体遷移テーブル２３、例外ワークフロー実体遷移テーブル２４を格納するデータベースであり、ワークフロー処理装置３０から読出／書込可能となっている。
【００２９】
ワークフロー実体テーブル２１は、ワークフロー定義テーブル１１からインスタンス化されたワークフロー実体の情報として、ワークフロー実体ＩＤ毎にワークフロー定義ＩＤ及び状態を含んでいる。ここで、「状態」はワークフロー実体の状態を表し、「実行中」と「完了」がある。「実行中」はワークフロー実体が生成されて、ワークフロー上の全てのステップ実体が完了するまでの状態を表し、「完了」はワークフロー上の全てのステップ実体が完了した状態を表す。
【００３０】
ステップ実体テーブル２２は、ステップ定義テーブル１２からインスタンス化されたステップ実体の情報として、ステップ実体ＩＤ毎に、ステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ及び状態を含んでいる。ここで、「状態」はステップ実体の状態を表し、「実行待ち」、「実行可能」、「実行中」、「完了」、「自動終了」がある。「実行待ち」はステップ実体は生成されているが、実行できない状態、「実行可能」は作業の開始を待っている状態、「実行中」は作業を実行している状態、「完了」は作業が完了した状態をそれぞれ表す。「自動終了」は、「タイプ」が「開始点」又は「合流点」であるステップ実体に用いられ、開始点又は合流点のステップ実体は「実行可能」になると即座に「自動終了」となり、次のステップ実体に処理が移る。
【００３１】
ステップ実体遷移テーブル２３は、ステップ定義遷移テーブル１３からインスタンス化されたステップ実体の遷移情報として、互いに関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤを含んでいる。
【００３２】
例外ワークフロー実体遷移テーブル２４は、例外ワークフロー定義からインスタンス化されたワークフロー実体が、どのワークフロー実体のどのステップ実体から分岐し、どのステップ定義で合流するかの情報を保持する。具体的には、例外ワークフロー実体遷移テーブル２４は、（例外の）ワークフロー実体ＩＤ、分岐元のワークフロー実体ＩＤ、分岐元のステップ実体ＩＤ、及び合流先のステップ定義ＩＤを含んでいる。分岐元のＩＤは、後で、例外のワークフローがどこから呼び出されたかの履歴になる。
【００３３】
ワークフロー処理装置３０は、ユーザにワークフローを提供するものであり、前述したように、各部３１〜３７を備えている。なお、各部３１〜３７は、ワークフロー処理装置３０全体の機能を各機能ブロックに分割した一例であり、全体として同様の機能をもつものであれば、異なる単位の機能ブロックに変形してもよい。例えば、各部３１〜３７は、記憶部３１と、残りの各部３２〜３７をまとめた機能部（例、ワークフロー処理部）とに変形してもよい。この場合、例えば、記憶部３１にワークフロー処理プログラムを保存し、図示しないＣＰＵが記憶部３１内のワークフロー処理プログラムを実行することにより、各部３２〜３７の機能をワークフロー処理装置３０全体として実現してもよい。ワークフロー処理装置３０全体として実現される機能は、例えば、以下の機能(f1)〜(f17)があり、実施形態の動作では、このような全体として実現される機能が各部３２〜３７に分担されて実現された一例を述べている。
【００３４】
(f1)  ユーザインターフェース装置４０から送信されたワークフロー定義ＩＤ及び開始情報の入力を受け付ける第１の入力受付機能。
【００３５】
(f2) 開始情報とともに入力を受け付けたワークフロー定義ＩＤがワークフロー定義テーブル１１に存在するときに、ワークフロー実体ＩＤを生成し、当該生成したワークフロー実体ＩＤ、ワークフロー定義ＩＤ及び状態として「実行中」を関連付けてワークフロー実体テーブル２１に書き込むワークフロー実体テーブル書込機能。
【００３６】
(f3) 入力を受け付けたワークフロー定義ＩＤについて、ステップ定義遷移テーブル１３を検索し、当該検索結果のうち、先頭の遷移後のステップ定義ＩＤを取得し、ステップ実体ＩＤを生成し、先頭の遷移後のステップ定義ＩＤについて、ステップ定義テーブル１２を検索してタイプを取得し、生成したステップ実体ＩＤと先頭の遷移後のステップ定義ＩＤと、生成したワークフロー実体ＩＤと、タイプと、状態として「実行可能」とを関連付けてステップ実体テーブル２２に書き込むステップ実体テーブル書込機能。
【００３７】
(f4) 生成したワークフロー実体ＩＤ、及び生成したステップ実体ＩＤを遷移後のステップ実体ＩＤとして関連付けてステップ実体遷移テーブル２３に書き込むステップ実体遷移テーブル書込機能。
【００３８】
(f5) ユーザインターフェース装置４０から送信されたステップ実体ＩＤ及び開始情報を受け、ステップ実体テーブル２２内でこのステップ実体ＩＤに対応する状態が「実行可能」を示すとき、この「実行可能」を「実行中」に更新するステップ開始機能。
【００３９】
(f6) ユーザインターフェース装置４０から送信された例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ及び例外発生時のステップ実体ＩＤの入力を受け付ける第２の入力受付機能。
【００４０】
(f7) 現在のワークフロー実体ＩＤ及び例外発生時のステップ実体ＩＤを受けると、ステップ実体ＩＤについてステップ実体テーブル２２によってタイプを判定する処理と、ステップ実体遷移テーブル２３によって遷移を前に辿る処理とを再帰的に実行することにより、タイプが「開始点」のステップ実体ＩＤを特定する開始点特定機能。
【００４１】
(f8) 開始点特定機能により特定された「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、ステップ定義ＩＤについてステップ定義テーブル１２によってタイプを判定する処理と、ステップ定義遷移テーブル１３によって遷移を後に辿る処理とを再帰的に実行することにより、タイプが「合流点」のステップ定義ＩＤを特定する合流点特定機能。
【００４２】
(f9) 入力を受け付けた例外のワークフロー定義ＩＤがワークフロー定義テーブル１１に存在するときに、例外のワークフロー実体ＩＤを生成し、当該生成した例外のワークフロー実体ＩＤ、例外のワークフロー定義ＩＤ及び状態として「実行中」を関連付けてワークフロー実体テーブル２１に書き込む例外のワークフロー実体テーブル書込機能。
【００４３】
(f10) 入力を受け付けた例外のワークフロー定義ＩＤについて、ステップ定義遷移テーブル１３を検索し、当該検索結果のうち、先頭の遷移後のステップ定義ＩＤを取得し、例外のステップ実体ＩＤを生成し、この先頭の遷移後のステップ定義ＩＤに基づいて、ステップ定義テーブル１２を検索してタイプを取得し、生成した例外のステップ実体ＩＤと先頭の遷移後のステップ定義ＩＤと、生成した例外のワークフロー実体ＩＤと、タイプと、状態として「実行可能」とを関連付けてステップ実体テーブル２２に書き込む例外のステップ実体テーブル書込機能。
【００４４】
(f11) 生成した例外のワークフロー実体ＩＤ、生成した例外のステップ実体ＩＤを遷移後のステップ実体ＩＤとして関連付けてステップ実体遷移テーブル２３に書き込む例外のステップ実体遷移テーブル書込機能。
【００４５】
(f12) 例外のワークフロー実体ＩＤと、分岐元のワークフロー実体ＩＤとしての現在のワークフロー実体ＩＤと、分岐元のステップ実体ＩＤとしての例外発生時のステップ実体ＩＤと、合流先のステップ定義ＩＤとしての「合流点」のステップ定義ＩＤとを関連付けて例外ワークフロー実体遷移テーブル２４に書き込む例外ワークフロー実体遷移テーブル書込機能。
【００４６】
(f13) ユーザインターフェース装置４０から送信されたステップ実体ＩＤ及び終了情報を受けると、ステップ実体テーブル２２内でこのステップ実体ＩＤの状態が「実行中」を示すとき、この状態を「実行中」から「完了」に更新するステップ終了機能。
【００４７】
(f14) 状態を「完了」に更新した後、当該更新した状態に対応するステップ定義ＩＤを遷移前のステップ定義ＩＤとした場合に、ステップ定義遷移テーブル１３に遷移後のステップ定義ＩＤがあるか否かを判定する遷移後ステップ判定機能。
【００４８】
(f15) この判定の結果、遷移後のステップ定義ＩＤがある場合、当該遷移後のステップ定義ＩＤに基づいてステップ定義テーブル１２からタイプを取得し、このタイプが「通常」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ、当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「通常」及び状態「実行可能」を関連付けてステップ実体テーブル２２に書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤをステップ実体遷移テーブル２３に書き込む通常タイプ処理機能。
【００４９】
(f16) タイプが「開始点」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ毎に当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「開始点」及び状態「自動終了」を関連付けてステップ実体テーブル２２に書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤをステップ実体遷移テーブル２３に書き込む開始点タイプ処理機能。
【００５０】
(f17) タイプが「合流点」の場合、ステップ実体ＩＤを生成し、得られたステップ実体ＩＤ毎に当該遷移後のステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「合流点」及び状態「実行待ち」をステップ実体テーブル２２に書き込むと共に、関連付けたワークフロー実体ＩＤ、遷移前のステップ実体ＩＤ及び遷移後のステップ実体ＩＤをステップ実体遷移テーブル２３に書き込む合流点タイプ処理機能。
【００５１】
次に、以上のような機能を分担して実現するワークフロー処理装置３０の各部３１〜３７について述べる。
【００５２】
記憶部３１は、各部３２〜３７から読出／書込可能なメモリ（記憶手段）である。なお、図面の便宜上、記憶部３１は、各部３２，３３のみから適宜、読出／書込可能なように示されるが、実際には他の各部３４〜３７からも適宜、読出／書込可能となっている。
【００５３】
ユーザインターフェース通信部３２は、ユーザインターフェース装置４０から送信された命令及び／又は情報を記憶部４１に書き込んだ後、記憶部４１内の命令及び／又は情報をワークフロー制御部３３へ伝達する。また、ユーザインターフェース通信部３２は、ワークフロー制御部３３より取得した情報をユーザインターフェース装置４０に伝達する。
【００５４】
ワークフロー制御部３３は、ユーザインターフェース通信部３２から受けた命令及び／又は情報を実体生成部３４又は合流先特定部３７へ伝達し、実体生成部３４又は合流先特定部３７から取得した情報をユーザインターフェース通信部３２に伝達するものである。
【００５５】
実体生成部３４は、ワークフロー定義などの定義情報を基に実体の生成に必要な情報を取得し、実体を生成する機能をもっている。
【００５６】
定義情報登録／取得部３５は、ワークフロー定義やステップ定義などの定義情報の登録や取得を行う機能をもっている。
【００５７】
実体情報登録／取得部３６は、ワークフロー実体やステップ実体などの実体情報の登録や取得を行う機能をもっている。
【００５８】
合流先特定部（開始点特定手段及び合流点特定手段）３７は、例外ワークフロー定義を組み込む際に、例外ワークフロー定義からの合流先となるステップ定義を特定する機能をもっている。
【００５９】
ユーザインターフェース装置４０は、情報や命令をワークフロー処理装置３０に入力し、ワークフロー処理装置３０から受けた情報を出力する装置である。ワークフローシステムが１台のコンピュータの場合、ユーザインターフェース装置４０は、キーボード、マウス及び表示装置等の入出力装置である。ワークフローシステムがクライアントサーバシステム等の複数台のコンピュータの場合、ユーザインターフェース装置４０は、クライアント端末である。
【００６０】
次に、以上のように構成されたワークフローシステムの動作を説明する。なお、以下の説明は、（動作の概要）、（ワークフローの開始時）、（ステップの開始時）、（例外ワークフローの起動時）、（ステップの終了時）及び（処理の詳細）の順に述べる。
【００６１】
（動作の概要）
ワークフロー処理装置３０は、ワークフロー作成者によるユーザインターフェース装置４０の操作により、ワークフロー定義ＩＤをユーザインターフェース装置４０から受けると、このワークフロー定義ＩＤを含むワークフロー定義テーブル１１を作成して定義情報格納部１０に書き込む。
【００６２】
また、ワークフロー処理装置３０は、ワークフロー作成者によるユーザインターフェース装置４０の操作により、互いに関連付けたステップ定義ＩＤ、ワークフロー定義ＩＤ及びタイプをユーザインターフェース装置４０から受けると、ステップ定義ＩＤ毎にワークフロー定義ＩＤ及びタイプを含むステップ定義テーブル１２を作成して定義情報格納部１０に書き込む。
【００６３】
さらに、ワークフロー処理装置３０は、ワークフロー作成者によるユーザインターフェース装置４０の操作により、互いに関連付けたワークフロー定義ＩＤ、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤをユーザインターフェース装置４０から受けると、互いに関連付けたワークフロー定義ＩＤ、遷移前のステップ定義ＩＤ及び遷移後のステップ定義ＩＤを含むステップ定義遷移テーブル１３を作成して定義情報格納部１０に書き込む。
【００６４】
次に、作業者はワークフロー定義の処理順序に従って作業を実行する。このとき、ワークフロー処理装置３０は、各定義テーブル１１〜１３の情報を基に作業実行時に実体の生成に必要な情報を取得し、実際の作業状況を示す情報を実体情報格納部２０内のワークフロー実体テーブル２１、ステップ実体テーブル２２及びステップ実体遷移テーブル２３に格納する。
【００６５】
また、ステップ実体の作業で例外処理が発生した場合、ワークフロー処理装置３０は、例外ワークフローを示すワークフロー定義ＩＤが指定されると、基本ワークフロー実体に例外ワークフローの実体を追加して、実行中のワークフローを更新する。また、合流先特定部３７は、例外ワークフローの実行後に合流する「合流点」のステップを特定し、特定したステップを示すステップ定義ＩＤを「合流先のステップ定義ＩＤ」として例外ワークフロー実体遷移テーブル２４に格納する。例外ワークフロー実体のステップと基本ワークフロー実体のステップはそれぞれ実行され、実行後、「合流点」のステップで合流する。
【００６６】
（ワークフローの開始時）
ユーザインターフェース装置４０は、ユーザによる画面上の操作により、ワークフロー定義ＩＤ及び開始情報が入力される。なお、ワークフロー定義ＩＤ及び開始情報は、画面上の「ワークフローの開始」ボタンのクリック操作により、予めワークフローの開始ボタンに関連付けて記憶されたワークフロー定義ＩＤ及び開始情報を入力する構成としてもよい。
【００６７】
いずれにしてもユーザインターフェース装置４０は、入力されたワークフロー定義ＩＤ及び開始情報をワークフロー処理装置３０に送信する。
【００６８】
ワークフロー処理装置３０においては、ユーザインターフェース通信部３２が、この送信されたワークフロー定義ＩＤ及び開始情報の入力を受け付けると、ワークフロー定義ＩＤ及び開始情報を記憶部３１に書き込んだ後、記憶部３１内のワークフロー定義ＩＤ及び開始情報をワークフロー制御部３３に送出する。
【００６９】
ワークフロー制御部３３は、ワークフロー定義ＩＤ及び開始情報を受けると、このワークフロー定義ＩＤを実体生成部３４に送出する。
【００７０】
実体生成部３４は、図６に示すように、受けたワークフロー定義ＩＤを受けると（Ｓ１）、このワークフロー定義ＩＤに基づいて定義情報登録／取得部３５を介して定義情報格納部１０のワークフロー定義テーブル１３を検索し、このワークフロー定義テーブル１３からワークフロー定義情報としてワークフロー定義ＩＤを取得する（Ｓ２）。
【００７１】
実体生成部３４は、一意な値であるワークフロー実体ＩＤを生成し、得られたワークフロー実体ＩＤ、ワークフロー定義ＩＤ及び状態「実行中」を実体情報登録／取得部３６によりワークフロー実体テーブル２１に登録し（Ｓ３）、ワークフロー実体ＩＤの登録完了をワークフロー制御部３３に通知する。
【００７２】
ワークフロー制御部３３は、通知されたワークフロー実体ＩＤを実体生成部３４に送出する。
【００７３】
実体生成部３４では、一意な値であるステップ実体ＩＤを生成し、受けたワークフロー実体ＩＤに対応するワークフロー定義ＩＤを含むステップ定義遷移テーブル１３の最初に定義されている遷移後のステップ定義の情報を取得し、得られたステップ実体ＩＤ、ステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ及び状態を互いに関連付けてステップ実体テーブル２２に登録すると共に、ワークフロー実体ＩＤ及び遷移前後のステップ実体ＩＤからなるステップ実体の遷移情報（遷移元はＮＵＬＬ）をステップ実体遷移テーブル２３に登録し、登録完了をワークフロー制御部３３に通知する。
【００７４】
（ステップの開始時の動作）
ユーザインターフェース装置４０は、ユーザによる画面上の操作により、ステップの開始を実行すると、開始するステップのステップ実体ＩＤと開始情報をワークフロー処理装置３０に送信する。
【００７５】
ワークフロー処理装置３０においては、ユーザインターフェース通信部３２が、このステップ実体ＩＤと開始情報を記憶部３１に書き込んだ後、記憶部３１内のステップ実体ＩＤと開始情報をワークフロー制御部３３に送出する。
【００７６】
ワークフロー制御部３３では、ステップ実体ＩＤと開始情報を受けると、このステップ実体ＩＤに基づいて、実体情報登録／取得部３６を介して実体情報格納部２０内のステップ実体テーブル２２を検索し、このステップ実体ＩＤに対応する「状態」が「実行可能」であれば、その「状態」を「実行中」に更新し、更新完了をワークフロー制御部３３に通知する。
【００７７】
（例外ワークフローの起動時の動作）
ユーザインターフェース装置４０は、ユーザによる画面上の操作により、例外発生を実行すると、例外ワークフローを示すワークフロー定義ＩＤ（以下、例外のワークフロー定義ＩＤともいう）と、現在（例外発生時）のワークフロー実体ＩＤ、例外が発生したステップのステップ実体ＩＤ（以下、例外発生時のステップ実体ＩＤともいう）が入力される。例外の発生は、画面上のボタン操作やユーザが入力した値などにより発生し、例外の発生状況毎に例外のワークフロー定義ＩＤがアプリケーション上で設定されているものとする。
【００７８】
いずれにしても、ユーザインターフェース装置４０は、入力された例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ及びステップ実体ＩＤをワークフロー処理装置３０に送信する。
【００７９】
ワークフロー処理装置３０においては、ユーザインターフェース通信部３２が、送信された例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ及びステップ実体ＩＤの入力を受け付けると、これら例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ及びステップ実体ＩＤを記憶部３１に書き込むと共に、記憶部３１内の例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ及び例外発生時のステップ実体ＩＤをワークフロー制御部３３に送出する。
【００８０】
ワークフロー制御部３３は、例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ及びステップ実体ＩＤを受けると、現在のワークフロー実体ＩＤと例外発生時のステップ実体ＩＤを合流先特定部３７に送出する。
【００８１】
合流先特定部３７は、ワークフロー実体ＩＤ及びステップ実体ＩＤを受けると、合流先となるステップ定義（タイプが「合流点」のステップ定義ＩＤ）を特定する。なお、合流先となるステップ定義ＩＤを特定する動作の詳細は後述する。また、合流先のステップ定義ＩＤが存在しない場合、合流先特定部３７は戻り値として「ＮＵＬＬ」をワークフロー制御部３３に送出し、ワークフロー制御部３３は、ＮＵＬＬを受けると、例外ワークフローを起動せず、例外ワークフローの起動エラーをユーザインターフェース通信部３２に通知して処理を終了する。
【００８２】
一方、合流先のステップ定義ＩＤが存在する場合、合流先特定部３７は、戻り値として合流先のステップ定義ＩＤをワークフロー制御部３３に送出する。
【００８３】
ワークフロー制御部３３は、合流先のステップ定義ＩＤを受けると、例外のワークフロー定義ＩＤを実体生成部３４に送出する。
【００８４】
実体生成部３４は、一意な値であるワークフロー実体ＩＤを生成し、得られた例外のワークフロー実体ＩＤ、ワークフロー定義ＩＤ及び状態をワークフロー実体テーブル２１に登録し、この例外のワークフロー実体ＩＤの登録完了をワークフロー制御部３３に通知する。
【００８５】
ワークフロー制御部３３は、例外のワークフロー実体ＩＤの登録完了を受けると、例外のワークフロー実体ＩＤを実体生成部３４に送出する。
【００８６】
実体生成部３４は、この例外のワークフロー実体ＩＤに対応するワークフロー定義ＩＤを含むステップ定義遷移テーブル１３の最初に定義されている遷移後のステップ定義の情報を取得し、得られたステップ実体ＩＤ、ステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ及び状態を互いに関連付けてステップ実体テーブル２２に登録すると共に、例外のワークフロー実体ＩＤ、例外発生のステップ実体ＩＤ（遷移前）及び生成したステップ実体ＩＤ（遷移後）からなるステップ実体の遷移情報をステップ実体遷移テーブル２３に登録し、登録完了をワークフロー制御部３３に通知する。
【００８７】
ワークフロー制御部３３では、例外のワークフロー実体ＩＤ、分岐元のワークフロー実体ＩＤ、分岐元のステップ実体ＩＤ及び合流先のステップ定義ＩＤからなる遷移情報を実体情報登録／取得部３６を介して実体情報格納部２０の例外ワークフロー実体遷移テーブル２４に登録する。
【００８８】
ワークフロー制御部３３は、例外ワークフローの起動完了をユーザインターフェース通信部３２に通知する。
【００８９】
（ステップの終了時の動作）
［ステップの終了］
ユーザインターフェース装置４０は、ユーザによる画面上の操作により、ステップの終了を実行すると、終了するステップのステップ実体ＩＤ及び終了情報をワークフロー処理装置３０に送信する。
【００９０】
ワークフロー処理装置３０においては、ユーザインターフェース通信部３２が、このステップ実体ＩＤ及び終了情報をワークフロー制御部３３に送出する。
【００９１】
ワークフロー制御部３３は、ステップ実体ＩＤ及び終了情報を受けると、このステップ実体ＩＤに基づいて、実体情報登録／取得部３６を介して実体情報格納部２０内のステップ実体テーブル２２を検索し、このステップ実体ＩＤに対応する「状態」を「完了」に更新し、更新完了をワークフロー制御部３３に通知する。
【００９２】
［次ステップの生成］
ワークフロー制御部３３は、ステップ実体ＩＤ及び終了情報を実体生成部３４に送出する。
【００９３】
実体生成部３４は、ステップ実体ＩＤ及び終了情報を受けると、受けたステップ実体ＩＤに対応するステップ定義ＩＤを遷移前のステップ定義ＩＤとした場合に、遷移後のステップ定義ＩＤ（次に実行するステップのステップ定義ＩＤ）がステップ定義遷移テーブル１３にあるか否かを判定する。この判定の結果、遷移後のステップ定義ＩＤがある場合、実体生成部３４は、この遷移後のステップ定義ＩＤをステップ定義遷移テーブル１３から取得し、遷移後のステップ定義ＩＤのステップ定義の情報を取得し、得られたステップ実体ＩＤ、ステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ及び状態を互いに関連付けてステップ実体テーブル２２に登録すると共に、ワークフロー実体ＩＤ、終了したステップ実体ＩＤ（遷移前）と次に実行するステップ実体ＩＤ（遷移後）からなるステップ実体の遷移情報をステップ実体遷移テーブル２３に登録し、登録完了をワークフロー制御部３３に通知する。
【００９４】
［ワークフローの終了］
実体生成部３４は、［次ステップの生成］の判定処理で「遷移後のステップ定義ＩＤが無い（次の実行ステップ無し）」と判定した場合、実体情報登録／取得部３６を介して実体情報格納部２０のワークフロー実体テーブル２１で、現在のワークフロー実体ＩＤに対応する「状態」を「完了」に更新し、更新完了をワークフロー制御部３３に通知する。これにより、ワークフローの処理が終了する。
【００９５】
（各種処理の詳細）
次に、以上の動作のうち、実体生成部３４による［次ステップ生成］の動作と、合流先特定部３７による［開始点の特定］及び［合流点の特定］の動作を詳細に説明する。
【００９６】
［次ステップ生成の詳細］
実体生成部３４は、図７に示すように、ステップ実体ＩＤ（ワークフローの開始時点ではＮＵＬＬ）及び終了情報をワークフロー制御部３３から受ける（Ｓ１１）。
【００９７】
実体生成部３４は、ステップ実体ＩＤ及び終了情報を受けると、受けたステップ実体ＩＤに対応するステップ定義ＩＤを実体情報格納部２０のステップ実体テーブル２２から実体情報登録／取得部３６により取得する。
【００９８】
実体生成部３４は、取得したステップ定義ＩＤを遷移前のステップ定義ＩＤとした場合に、定義情報登録／取得部３５を介して、遷移後のステップ定義ＩＤ（次に実行するステップのステップ定義ＩＤ）が定義情報格納部１０内のステップ定義遷移テーブル１３にあるか否かを判定する（Ｓ１２）。
【００９９】
ステップＳ１２の判定の結果、遷移後のステップ定義ＩＤがない場合には、実体生成部３４は、現在のワークフロー実体ＩＤをもとに実体情報登録／取得部３６を介して実体情報格納部２０の例外ワークフロー実体遷移テーブル２４を参照し、合流先のステップ定義ＩＤがあるか否かを判定し（Ｓ１３）、合流先のステップ定義ＩＤが無い場合にはステップＳ２７に進んで処理を抜け、合流先のステップ定義ＩＤがある場合にはステップＳ２１に進む。
【０１００】
また、ステップＳ１２の判定の結果、遷移後のステップ定義ＩＤがある場合には、実体生成部３４は、定義情報登録／取得部３５を介して定義情報格納部１０のステップ定義テーブル１２から当該遷移後のステップ定義ＩＤに対応する「タイプ」を取得する。
【０１０１】
実体生成部３４は、取得したタイプが「通常」、「開始点」又は「合流点」のいずれであるかを判定する（Ｓ１４）。
【０１０２】
ステップＳ１４の判定の結果、タイプが「通常」の場合、実体生成部３４は、遷移後のステップ定義ＩＤに対応するステップ定義テーブル１２の情報からステップ実体を生成し、得られたステップ実体ＩＤ、ステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ及び状態「実行可能」を実体情報登録／取得部３６により実体情報格納部２０のステップ実体テーブル２２に登録する（Ｓ１５）。
【０１０３】
また、実体生成部３４は、ワークフロー実体ＩＤ、終了したステップ実体ＩＤ（遷移前）と次に実行するステップ実体ＩＤ（遷移後）からなる遷移情報を、実体情報登録／取得部３６により実体情報格納部２０のステップ実体遷移テーブル２３に登録し（Ｓ１６）、処理を抜ける（Ｓ１７）。
【０１０４】
ステップＳ１４の判定の結果、タイプが「開始点」の場合、実体生成部３４は、遷移後のステップ定義ＩＤに対応するステップ定義テーブル１２の情報からステップ実体を生成し、得られたステップ実体ＩＤ、ステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「開始点」及び状態「自動終了」を実体情報登録／取得部３６により実体情報格納部２０のステップ実体テーブル２２に登録する（Ｓ１８）。
【０１０５】
実体生成部３４は、ワークフロー実体ＩＤ、終了したステップ実体ＩＤ（遷移前）と「開始点」のステップ実体ＩＤ（遷移後）からなる遷移情報を、実体情報登録／取得部３６を介して実体情報格納部２０のステップ実体遷移テーブル２３に登録する（Ｓ１９）。
【０１０６】
実体生成部３４は、次のステップに遷移するため、「開始点」のステップ実体ＩＤを終了するステップのステップ実体ＩＤとして、再度ステップＳ１２から処理を実行する（Ｓ２０）。
【０１０７】
ステップＳ１４の判定の結果、タイプが「合流点」の場合、又はステップＳ１３の判定の結果、合流先のステップ定義ＩＤがある場合には、実体生成部３４は、「合流点」のステップ定義ＩＤに対応するステップ実体ＩＤがステップ実体テーブル１３に存在するか否かを判定する（Ｓ２１）。
【０１０８】
ステップＳ２１の判定の結果、「合流点」のステップ実体ＩＤが存在する場合、ステップＳ２３に進む。
【０１０９】
実体生成部３４は、ステップＳ２１の判定の結果、ステップ実体ＩＤが存在しなければ、「合流点」のステップ定義ＩＤに対応するステップ定義テーブル１２の情報からステップ実体を生成し、得られたステップ実体ＩＤ、ステップ定義ＩＤ、ワークフロー実体ＩＤ、タイプ「合流点」及び状態「実行待ち」を実体情報登録／取得部３６により実体情報格納部２０のステップ実体テーブル２２に登録する（Ｓ２２）。
【０１１０】
実体生成部３４は、ワークフロー実体ＩＤ、終了したステップ実体ＩＤ（遷移前）と「合流点」のステップ実体ＩＤ（遷移後）からなる遷移情報を実体情報登録／取得部３６により実体情報格納部２０のステップ実体遷移テーブル２３に登録する（Ｓ２３）。
【０１１１】
実体生成部３４は、「合流点」のステップ実体に合流すべきステップ実体が全て完了しているか否かを判定する（Ｓ２４）。
【０１１２】
実体生成部３４は、ステップＳ２４の判定の結果、全て完了している場合、ステップ実体テーブル２３における「合流点」のステップ実体ＩＤに対応する「状態」を「実行可能」に更新する（「状態」はすぐに「自動終了」になる）（Ｓ２５）。
【０１１３】
実体生成部３４は、次のステップに遷移するため、「合流点」のステップ実体ＩＤを終了するステップ実体ＩＤとして、再度ステップ１２から実行する（Ｓ２６）。
【０１１４】
一方、ステップＳ２４の判定の結果、否の場合には、実体生成部３４は、「合流点」のステップ実体ＩＤに対応する「状態」が「実行待ち」のまま処理を抜ける（Ｓ２７）。
【０１１５】
（合流先特定部３７の処理）
合流先特定部３７は、現在（例外発生時）のワークフロー実体ＩＤ及び例外発生時のステップ実体ＩＤをワークフロー制御部３３から受けると、このステップ実体ＩＤに基づいて、［開始点のステップ実体の特定］の処理を再帰的に実行し、例外発生時のステップ実体ＩＤを例外範囲に含む「開始点」のステップ実体のステップ定義ＩＤを取得する。
【０１１６】
概要としては、図８（ａ）に示すように、例外発生時のステップ実体から遷移を前に辿り、（開始点・合流点の対が）閉じていない最初の「開始点」のステップ実体を特定する処理である。
【０１１７】
合流先特定部３７は、「開始点」のステップ定義ＩＤに基づいて、［合流点のステップ定義の特定］の処理を再帰的に実行し、例外発生時のステップ実体に対する合流先のステップ定義ＩＤを特定する。
【０１１８】
概要としては、図８（ｂ）に示すように、「開始点」のステップ定義から遷移を後ろに辿り、（開始点・合流点の対が）閉じていない最初の「合流点」のステップ定義を特定する処理である。
【０１１９】
［開始点のステップ実体の特定］
合流先特定部３７は、ステップ実体ＩＤに対応する「タイプ」をステップ実体テーブル２２から判定する。
【０１２０】
この判定の結果、タイプが「通常」の場合、合流先特定部３７は、ワークフロー実体遷移テーブル２３に基づいて、遷移元のステップ実体ＩＤを取得する。
【０１２１】
一方、判定の結果、タイプが「開始点」の場合、そのステップ実体ＩＤを「開始点」として［開始点のステップ実体の特定］の処理を抜ける。
【０１２２】
他方、判定の結果、タイプが「合流点」の場合、合流先特定部３７は、例外ワークフロー実体遷移テーブル２４に基づいて分岐元のステップ実体ＩＤを取得した後、再度［開始点のステップ実体の特定］の処理を呼び出す。
【０１２３】
しかる後、合流先特定部３７は、タイプの判定に戻って処理を実行する。
【０１２４】
［合流点のステップ定義の特定］
合流先特定部３７は、現在のステップ定義ＩＤ及びステップ定義遷移テーブル１３に基づいて、遷移先のステップ定義ＩＤを取得する。
【０１２５】
合流先特定部３７は、取得したステップ定義ＩＤの「タイプ」をステップ定義テーブル１２から判定する。
【０１２６】
この判定の結果、タイプが「通常」の場合、合流先特定部３７は、遷移先のステップ定義ＩＤの取得処理を再実行する。
【０１２７】
この判定の結果、タイプが「開始点」の場合、合流先特定部３７は、再度［合流点のステップ定義の特定］の処理を呼び出す。
【０１２８】
この判定の結果、タイプが「合流点」の場合、［合流点のステップ定義の特定］の処理を抜ける。［合流点のステップ定義の特定］の処理がすべて終了した時点のステップ定義が「合流点」となる。
【０１２９】
上述したように本実施形態によれば、例外発生時のステップ実体ＩＤに基づいて、ステップ実体テーブル２２からタイプを判定し、ステップ実体遷移テーブル２３によって遷移を前に辿る処理を再帰的に実行してタイプが「開始点」のステップ実体ＩＤを特定し、特定した「開始点」のステップ実体ＩＤに対応するステップ定義ＩＤに基づいて、ステップ定義テーブル１２によってタイプを判定し、ステップ定義遷移テーブル１３によって遷移を後ろに辿る処理を再帰的に実行してタイプが「合流点」のステップ定義ＩＤを特定する。このように、個々の例外のワークフローには例外のワークフローの合流点を予め定義しないため、例外処理が頻繁に生じる場合でもワークフローの定義を簡略化でき、基本ワークフローと例外ワークフローとを両方とも実行することができる。
【０１３０】
補足すると、ワークフロー定義からワークフロー実体を生成し、ワークフロー実体のステップで例外が発生すると合流先となるステップを特定し、指定した例外ワークフロー定義の実体を組みこんでワークフロー実体を更新し、ワークフロー実体の作業と例外ワークフロー実体の作業を並列に処理する構成により、ワークフローの実行中に例外が発生した際に、例外時に実行する例外ワークフローを組みこんでワークフローを更新することができる。
【０１３１】
また、ワークフローを作成する際に、通常時に実行するワークフロー定義と例外発生時に実行するワークフロー定義とを切り離して定義できるため、例外が頻繁に発生する作業に対してワークフローを適用しても、作成するワークフロー定義が複雑になることを防ぐことができる。
【０１３２】
また、ワークフローのステップで例外が発生すると、指定した例外処理用のワークフローを組みこんで、元のワークフローを動的に更新できるので、例外時に外部から組み込むワークフローを指定するため、ワークフロー定義自体の変更を行なわずに実行中のワークフローを更新することができる。
【０１３３】
また、ワークフロー定義上で例外が発生し得る区間に開始点と合流点の対で囲む「例外範囲」を定義することにより、その区間内で例外が発生した場合は、組み込んだ例外ワークフローを処理した後、合流点に戻ることで元のワークフローに処理を戻すことができ、さらに、ワークフロー上の複数のステップで例外が発生しても、例外ワークフロー処理後の合流先が同じであればステップごとに合流先を定義する必要がなくなる。
【０１３４】
また、組み込んだ例外ワークフローの作業と、組み込み元のワークフローの作業は並列に実行できるので、ワークフローでの通常時の作業と例外時の作業を並列に実行でき、作業の効率を上げることができる。
【０１３５】
（第２の実施形態）
次に、本発明の第２の実施形態に係るワークフローシステムについて説明する。
【０１３６】
本実施形態は、第１の実施形態の具体例であり、第１の実施形態で述べた構成において、各テーブルに具体的な値を記載して動作を具体的に述べるものである。
【０１３７】
＜ワークフロー＞
ワークフローの定義例を図９に示す。
【０１３８】
図９において、ワークフロー定義ＩＤ：Ｄ００１で示される基本ワークフローを示すワークフロー定義は、ワークフロー定義テーブル１１、ステップ定義テーブル１２及びステップ定義遷移テーブル１３からなる定義情報であり、作業(1)〜作業(4)、開始点Ａ及び合流点Ａに対応するステップ定義を含んでいる。また、ワークフロー定義ＩＤ：Ｄ１００で示される例外ワークフローを示すワークフロー定義は、ワークフロー定義テーブル１１、ステップ定義テーブル１２及びステップ定義遷移テーブル１３からなる定義情報であり、例外作業(1)及び例外作業(2)に対応するステップ定義を含んでいる。
【０１３９】
＜データ構造＞
ワークフローが定義されると、ワークフロー定義テーブル１１、ステップ定義テーブル１２及びステップ定義遷移テーブル１３が定義情報格納部１０に格納される（図１０、図１１及び図１２参照）。
【０１４０】
＜ワークフローの開始＞
ユーザインターフェース装置４０は、ユーザの操作により、画面上から「ワークフローの開始」を実行すると、ワークフロー定義ＩＤ及び開始情報をワークフロー処理装置３０に送信する。
【０１４１】
ワークフロー処理装置３０は、このワークフロー定義ＩＤに基づいて、前述同様に、ユーザインターフェース通信部３２、ワークフロー制御部３３及び実体生成部３４の間でデータの受け渡しを実行する。
【０１４２】
その結果、実体情報格納部２０に、ワークフロー実体テーブル２１、ステップ実体テーブル２２及びステップ実体遷移テーブル２３が格納される（図１３、図１４、図１５及び図１６参照）。
【０１４３】
＜ステップの開始時の動作＞
ユーザインターフェース装置４０は、ユーザの操作により、画面上から「ステップの開始」を実行すると、ステップ実体ＩＤ及び開始情報をワークフロー処理装置３０に送信する。
【０１４４】
ワークフロー処理装置３０においては、ステップ実体ＩＤ及び開始情報を受けると、前述同様に、ユーザインターフェース通信部３２、ワークフロー制御部３３及び実体情報登録／取得部３６の間でデータの受け渡しを実行する。
【０１４５】
その結果、実体情報格納部２０に格納されているステップ実体テーブル２２のステップ実体ＩＤ：Ｅ００１１の状態が「実行可能」から「実行中」に更新される（図１７及び図１８参照）。
【０１４６】
＜ステップ実体の生成＞
ワークフロー処理装置３０においては、ステップ実体ＩＤ：Ｅ００１１のステップ実体が完了すると、次に実行するステップ定義の有無を判定する。
【０１４７】
ステップ定義遷移テーブル１３（図１２）から次に実行するステップ定義ＩＤはＤ００１２であることが分かる。
【０１４８】
ステップ定義テーブル１２（図１１）からＤ００１２のタイプは「開始点」であるから、ワークフロー処理装置３０においては、「開始点」のステップ実体ＩＤ：Ｅ００１２（状態は「自動終了」とする）を生成し、ステップ実体テーブル２２及びステップ実体遷移テーブル２３に登録する（図１９及び図２０参照）。
【０１４９】
さらに、ワークフロー処理装置３０においては、ステップ実体ＩＤ：Ｅ００１２のステップ実体が自動終了したので、次のステップ定義ＩＤ：Ｄ００１３（「通常」タイプ）からステップ実体ＩＤ：Ｅ００１３（状態は「実行可能」とする）を生成し、ステップ実体テーブル２２及びステップ実体遷移テーブル２３に登録する（図１９、図２０及び図２１参照）。
【０１５０】
＜例外ワークフローの起動時の動作＞
基本ワークフローのステップ実体ＩＤ：Ｅ００１３のステップ実体を実行中に、ユーザインターフェース装置４０は、ユーザの操作により、画面上から「例外発生」を実行すると、組み込む例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ、ステップ実体ＩＤをワークフロー処理装置３０に送信する。
【０１５１】
ワークフロー処理装置３０においては、例外のワークフロー定義ＩＤ、現在のワークフロー実体ＩＤ、ステップ実体ＩＤを受けると、ユーザインターフェース通信部３２、ワークフロー制御部３３、合流先特定部３７及び実体情報登録／取得部３６の間でデータの受け渡しを実行し、合流先特定部３７が、合流先となるステップ定義ＩＤ：Ｄ００１５を特定する。
【０１５２】
その結果、実体情報格納部２０に、ワークフロー実体テーブル２１、ステップ実体テーブル２２、ステップ実体遷移テーブル２３及び例外ワークフロー実体遷移テーブル２４が更新される（図２２、図２３、図２４、図２５及び図２６参照）。
【０１５３】
＜例外フローのステップ実体の生成＞
ステップ実体Ｅ１００１が完了すると、ワークフロー処理装置３０は、次に実行するステップ定義の有無を判定する。
【０１５４】
ステップ定義遷移テーブル１３（図１２）から次に実行するステップ定義ＩＤはＤ１００２であることが分かる。
【０１５５】
ステップ定義テーブル１２（図１１）からステップ定義ＩＤ：Ｄ１００２のタイプは「通常」であるから、ワークフロー処理装置３０においては、「通常」のステップ実体Ｅ１００２（「状態」は「実行可能」）を生成し、ステップ実体テーブル２２及びステップ実体遷移テーブル２３に登録する（図２７、図２８及び図２９参照）。
【０１５６】
＜例外フローのステップ実体の終了＞
ステップ実体Ｅ１００２が完了すると、ワークフロー処理装置３０は、次に実行するステップ定義の有無を判定する。
【０１５７】
例外ワークフロー実体遷移テーブル２４（図２５）から合流先のステップ定義ＩＤはＤ００１５であることが分かる。
【０１５８】
ワークフロー処理装置３０においては、ステップ実体テーブル２２（図１４）からステップ定義ＩＤ：Ｄ００１５のステップ実体ＩＤは存在していないことが分かるので、「合流点」のステップ実体ＩＤ：Ｅ００１５（「状態」は「実行待ち」）を作成し、ステップ実体テーブル２２に登録する（図３０）。
【０１５９】
「合流点」のステップ実体Ｅ００１５に合流すべきステップ実体が全て完了しているか否かを判定する。
【０１６０】
ワークフロー処理装置３０においては、ステップ定義テーブル１２及びステップ実体テーブル２２（図１１、図１４）から基本ワークフローのステップ定義ＩＤ：Ｄ００１４のステップ実体が完了されていないことが分かるので、「合流点」のステップ実体の状態が「実行待ち」のまま処理を抜け、ワークフロー実体テーブル２１の例外のワークフロー実体ＩＤ：Ｅ１００の「状態」を「完了」に更新し、ステップ実体遷移テーブル２３に登録する（図３０、図３１（ａ）、図３１（ｂ）、及び図３２参照）。
【０１６１】
＜基本ワークフローでのステップ実行の生成＞
基本ワークフローのステップ実体ＩＤ：Ｅ００１３のステップ実体が完了すると、次に実行するステップ定義の有無を判定する。
【０１６２】
ステップ定義遷移テーブル１３（図１２）から次に実行するステップ定義ＩＤはＤ００１４であることが分かる。
【０１６３】
ステップ定義テーブル１２（図１１）からステップ定義ＩＤ：Ｄ００１４のタイプは「通常」であるから、ワークフロー処理装置３０においては、「通常」のステップ実体ＩＤ：Ｅ００１４（「状態」は「実行可能」）を生成し、ステップ実体テーブル２２及びステップ実体遷移テーブル２３に登録する（図３３、図３４及び図３５参照）。
【０１６４】
＜合流点のステップ実体の実行＞
ステップ実体ＩＤ：Ｅ００１４が完了すると、ワークフロー処理装置３０は、次に実行するステップ定義の有無を判定する。
【０１６５】
ステップ定義遷移テーブル１３（図１２）から次に実行するステップ定義ＩＤはＤ００１５であることが分かる。
【０１６６】
ステップ実体テーブル２２（図３０）からステップ定義ＩＤ：Ｄ００１５のステップ実体はすでに存在していることが分かるので、ワークフロー処理装置３０は、「合流点」のステップ実体ＩＤ：Ｅ００１５のステップ実体に合流すべきステップ実体が全て完了しているか否かを判定する。
【０１６７】
全てのステップ実体が完了していることが分かるので、ワークフロー処理装置３０は、「合流点」のステップ実体ＩＤ：Ｅ００１５の「状態」を「実行可能」に更新し（「状態」はすぐに「自動終了」になる）、ステップ実体遷移テーブル２３に登録する（図３６（ａ）、図３６（ｂ）及び図３７参照）。
【０１６８】
＜ワークフローの終了＞
ステップ実体ＩＤ：Ｅ００１５のステップ実体が自動終了したので、ワークフロー処理装置３０は、次に実行するステップ定義の有無を判定する。
【０１６９】
ステップ定義遷移テーブル１３（図１２）から次に実行するステップ定義がないことが分かるので、ワークフロー処理装置３０においては、ワークフロー実体テーブル２１で、現在のワークフロー実体ＩＤ：Ｅ００１の「状態」を「完了」に更新する（図３８参照）。
【０１７０】
上述したように本実施形態によれば、具体的な値を用いて第１の実施形態を実施したので、第１の実施形態の効果と同様の効果を得ることができる。
【０１７１】
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク（フロッピー（登録商標）ディスク、ハードディスクなど）、光ディスク（ＣＤ−ＲＯＭ、ＤＶＤなど）、光磁気ディスク（ＭＯ）、半導体メモリなどの記憶媒体に格納して頒布することもできる。
【０１７２】
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
【０１７３】
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているＯＳ（オペレーティングシステム）や、データベース管理ソフト、ネットワークソフト等のＭＷ（ミドルウェア）等が上記実施形態を実現するための各処理の一部を実行しても良い。
【０１７４】
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、ＬＡＮやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
【０１７５】
また、記憶媒体は１つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
【０１７６】
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の１つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
【０１７７】
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
【０１７８】
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。
【符号の説明】
【０１７９】
１０…定義情報格納部、１１…ワークフロー定義テーブル、１２…ステップ定義テーブル、１３…ステップ定義遷移テーブル、２０…実体情報格納部、２１…ワークフロー実体テーブル、２２…ステップ実体テーブル、２３…ステップ実体遷移テーブル、２４…例外ワークフロー実体遷移テーブル、３０…ワークフロー処理装置、３１…記憶部、３２…ユーザインターフェース通信部、３３…ワークフロー制御部、３４…実体生成部、３５…定義情報登録／取得部、３６…実体情報登録／取得部、３７…合流先特定部、４０…ユーザインターフェース装置。
【図１】
2010224956.tif 000003
【図２】
2010224956.tif 000004
【図３】
2010224956.tif 000005
【図４】
2010224956.tif 000006
【図５】
2010224956.tif 000007
【図６】
2010224956.tif 000008
【図７】
2010224956.tif 000009
【図８】
2010224956.tif 000010
【図９】
2010224956.tif 000011
【図１０】
2010224956.tif 000012
【図１１】
2010224956.tif 000013
【図１２】
2010224956.tif 000014
【図１３】
2010224956.tif 000015
【図１４】
2010224956.tif 000016
【図１５】
2010224956.tif 000017
【図１６】
2010224956.tif 000018
【図１７】
2010224956.tif 000019
【図１８】
2010224956.tif 000020
【図１９】
2010224956.tif 000021
【図２０】
2010224956.tif 000022
【図２１】
2010224956.tif 000023
【図２２】
2010224956.tif 000024
【図２３】
2010224956.tif 000025
【図２４】
2010224956.tif 000026
【図２５】
2010224956.tif 000027
【図２６】
2010224956.tif 000028
【図２７】
2010224956.tif 000029
【図２８】
2010224956.tif 000030
【図２９】
2010224956.tif 000031
【図３０】
2010224956.tif 000032
【図３１】
2010224956.tif 000033
【図３２】
2010224956.tif 000034
【図３３】
2010224956.tif 000035
【図３４】
2010224956.tif 000036
【図３５】
2010224956.tif 000037
【図３６】
2010224956.tif 000038
【図３７】
2010224956.tif 000039
【図３８】
2010224956.tif 000040
【図３９】
2010224956.tif 000041