以下、本発明の各実施形態について図面を用いて説明するが、その前に本発明の概要について述べる。
本発明の概要としては、図1(a)、図1(b)及び図2に示すように、ワークフローを「定義」と「実作業」に分割し、作業の分岐数に関する情報を「対象」に持たせ、「実作業」と「対象」を関連付けることで、作業の分岐が発生した場合には「実作業」を動的に分岐させる内容である。ここで、「定義」とは、図1(a)に示すように、従来のワークフローにおける各ステップの定義(ステップ内において実施する作業)及びステップ間の繋がりの定義を意味する。「実作業」とは、図1(b)に示すように、各ユーザがワークフローに従ってステップの作業を実行すること(どのユーザがどのステップのどの作業を実施したか)を意味する。「対象」とは、図2の略中央に示すように、ワークフローに沿って処理されるデータの固まり(例、図1の20枚分の帳票データ)を意味し、このデータの固まりを木構造で表現することにより、作業を分岐可能としている。例えば、対象を2つの子対象に分岐する木構造で表現することにより、作業が2つに分岐可能となる。
これにより、図3に示すように、作業を実行するユーザが増えた場合等でもワークフローを修正する必要がない。従って、ワークフローの修正によって生じていた、システムやアプリケーションの修正を無くすことができる。
以上が本発明の概要である。このような概要は、例えば、ステップ定義ID毎にタイプを関連付けるステップ定義テーブルを記憶した定義テーブル記憶装置と、ステップ実体ID毎にステップ定義ID、タイプ及び対象IDを関連付けるステップ実体テーブルを記憶するための実体テーブル記憶装置と、対象ID毎に親の対象ID及び実作業データを関連付ける対象テーブルを記憶するための対象テーブル記憶装置と、を読出/書込可能なワークフロー処理装置であって、「開始点」を示すタイプのステップの処理において、当該ステップに関連付けられている対象IDを親の対象IDとする全ての対象IDを対象テーブルから取得する対象ID取得機能と、当該取得した対象IDの個数だけステップ定義テーブル内のステップ定義IDからステップ実体IDを生成するステップ実体ID生成機能と、生成したステップ実体IDに基づいて、ステップ実体テーブルを更新するステップ実体テーブル更新機能とを備えたワークフロー処理装置によって実現可能となっている。
このワークフロー処理装置によれば、作業が分岐する開始点処理において、親の対象IDに対応する全ての対象IDを対象テーブルから取得し、当該取得した対象IDの個数だけステップ定義IDからステップ実体IDを生成する構成により、ワークフローの定義に対応するステップ定義テーブルを修正することなく、分岐する作業の数だけステップ実体ID毎のステップ実体を実行可能としたため、作業を実行するユーザの人数変更に伴うワークフローの修正を不要にすることができる。
なお、ここで例示したワークフロー処理装置は、ワークフロー定義IDを管理しない場合を前提とするためにワークフロー定義IDを用いないが、ワークフロー定義IDを管理する場合には、以下の第1の実施形態に示すように、ワークフロー定義ID及びワークフロー実体ID等を用いるワークフロー処理装置とすればよい。次に、本発明の第1の実施形態について説明する。
(第1の実施形態)
図4は本発明の第1の実施形態に係るワークフロー処理装置を備えたワークフローシステムの構成を示すブロック図である。このワークフローシステムは、定義テーブル記憶手段としてのワークフローDB10、対象テーブル記憶手段としての対象DB20、実体テーブル記憶手段としての実作業DB30、ワークフロー処理装置40及びユーザインタフェース装置50を備えている。
ワークフローDB10は、図5に示すように、ワークフローに関する情報として、ワークフロー定義テーブル11、ステップ定義テーブル12及びステップ定義遷移テーブル13を格納するデータベースであり、ワークフロー処理装置40から読出/書込可能となっている。
ワークフロー定義テーブル11は、ワークフローを特定するものであり、ワークフロー定義IDを含んでいる。
ステップ定義テーブル12は、ワークフロー内の各ステップを定義するものであり、ステップ定義ID毎にワークフロー定義ID及びタイプを含んでいる。タイプとしては、「通常」、「開始点」又は「合流点」が設定される。
ステップ定義遷移テーブル13は、ステップ間のつながりを表すものであり、互いに関連付けたワークフロー定義ID、遷移前のステップ定義ID及び遷移後のステップ定義IDを含んでいる。
対象DB20は、図6に示すように、対象に関する情報として、対象テーブル21を格納するデータベースであり、ワークフロー処理装置40から読出/書込可能となっている。
対象テーブル21は、ステップにおいて作業対象となる「対象」であり、対象ID毎に親の対象ID及び実作業データを含んでいる。親の対象IDを含むことにより、対象間に親子構造を作成可能となっている。後述するワークフローのステップ分岐は、この親子構造に基づいて生成される。
実作業DB30は、図7に示すように、実作業に関する情報として、ワークフロー実体テーブル31、ステップ実体テーブル32及びステップ実体遷移テーブル33を格納するデータベースであり、ワークフロー処理装置40から読出/書込可能となっている。
ワークフロー実体テーブル31は、ワークフロー実体ID毎にワークフロー定義ID、状態及び親の対象IDを含んでいる。
ステップ実体テーブル32は、ステップ実体ID毎にステップ定義ID、ワークフロー実体ID、タイプ、状態及び対象IDを含んでいる。ここで、「状態」としては、「実行可能」、「実行中」又は「完了」が設定される。「対象ID」としては、分岐していないステップにおいては親の対象IDが設定され、分岐しているステップにおいては子の対象IDが設定される。
ステップ実体遷移テーブル33は、互いに関連付けたワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDを含んでいる。
ワークフロー処理装置40は、ユーザにワークフローを提供するものであり、記憶部41、ユーザインタフェース通信部42、ワークフロー処理部43、対象処理部44及び実作業処理部45を備えている。なお、各部42〜45は、ワークフロー処理装置40全体の機能を各機能ブロックに分割した一例であり、全体として同様の機能をもつものであれば、異なる単位の機能ブロックに変形してもよい。例えば、各部41〜45は、記憶部41と、残りの各部42〜45をまとめた機能部(例、ワークフロー処理部)とに変形してもよい。この場合、例えば、記憶部41にワークフロー処理プログラムを保存し、図示しないCPUが記憶部41内のワークフロー処理プログラムを実行することにより、各部42〜45の機能をワークフロー処理装置40全体として実現してもよい。ワークフロー処理装置40全体として実現される機能は、例えば、以下の機能(f1)〜(f14)があり、実施形態の動作では、このような全体として実現される機能が各部42〜45に分担して実現された一例を述べている。
(f1) ユーザインタフェース装置50から送信された複数個の対象ID、親の対象ID及び複数個の実作業データの入力を受け付ける第1の入力受付機能。
(f2) 各実作業データとともに入力を受け付けた対象ID毎に親の対象IDと当該各実作業データのうちのいずれかの実作業データとを関連付けた対象テーブル21を生成し、この対象テーブル21を対象DB20に書き込む対象テーブル生成機能。
(f3) ユーザインタフェース装置50から送信されたワークフロー定義ID、親の対象ID及び開始情報の入力を受け付ける第2の入力受付機能。
(f4) 親の対象ID及び開始情報とともに入力を受け付けたワークフロー定義IDがワークフロー定義テーブル11に存在するときに、ワークフロー実体IDを生成し、当該生成したワークフロー実体ID、ワークフロー定義ID及び状態として「実行中」を関連付けてワークフロー実体テーブル31に書き込むワークフロー実体テーブル書込機能。
(f5) 入力を受け付けたワークフロー定義IDについて、ステップ定義遷移テーブル13を検索し、当該検索結果のうち、先頭の遷移後のステップ定義IDを取得し、ステップ実体IDを生成し、先頭の遷移後のステップ定義IDについて、ステップ定義テーブル12を検索してタイプを取得し、生成したステップ実体IDと先頭の遷移後のステップ定義IDと、生成したワークフロー実体IDと、タイプと、状態として「実行可能」とを関連付けてステップ実体テーブル32に書き込むステップ実体テーブル書込機能。
(f6) 生成したワークフロー実体ID、及び生成したステップ実体IDを遷移後のステップ実体IDとして関連付けてステップ実体遷移テーブル33に書き込むステップ実体遷移テーブル書込機能。
(f7) ユーザインタフェース装置50から送信されたステップ実体ID及び開始情報を受け、ステップ実体テーブル32内でこのステップ実体IDに対応する状態が「実行可能」を示すとき、この「実行可能」を「実行中」に更新するステップ開始機能。
(f8) 更新した状態のステップ実体IDに対応する対象IDをステップ実体テーブル32から得ると、この対象IDに基づいて対象テーブル21から読み出した実作業データをユーザインタフェース装置50に送信する実作業データ送信機能。
(f9) ユーザインタフェース装置50から送信されたステップ実体ID、作業後の実作業データ及び終了情報を受け、ステップ実体テーブル32内でこのステップ実体IDに対応する状態が「実行中」を示すとき、この「実行中」を「完了」に更新すると共に、このステップ実体IDに対応する対象IDをステップ実体テーブル32から得ると、この対象IDに基づいて、作業後の実作業データを対象テーブル21に書き込むステップ終了機能。
(f10) 状態を「完了」に更新した後、当該更新した状態に対応するステップ定義IDを遷移前のステップ定義IDとした場合に、ステップ定義遷移テーブル13に遷移後のステップ定義IDがあるか否かを判定する遷移後ステップ判定機能。
(f11) この判定の結果、遷移後のステップ定義IDがある場合、当該遷移後のステップ定義IDについてステップ定義テーブル12によってタイプを判定するタイプ判定機能。
(f12) タイプが「通常」の場合、ステップ実体IDを生成し、得られたステップ実体ID、当該遷移後のステップ定義ID、ワークフロー実体ID、タイプ「通常」、状態「実行可能」及び対象IDを関連付けてステップ実体テーブル32に書き込むと共に、関連付けたワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDをステップ実体遷移テーブル33に書き込む通常タイプ処理機能。
(f13) タイプが「開始点」の場合、ステップ実体テーブル32内の親の対象IDに対応する全ての対象IDを対象テーブル21から取得し、当該取得した対象IDの個数だけステップ実体IDを生成し、得られたステップ実体ID毎に当該遷移後のステップ定義ID、ワークフロー実体ID、タイプ「開始点」、状態「実行可能」及び対象IDを関連付けてステップ実体テーブル32に書き込むと共に、関連付けたワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDをステップ実体遷移テーブル33に書き込む開始点タイプ処理機能。
(f14) タイプが「合流点」の場合、ステップ実体テーブル32内の対象IDに対応する親の対象IDを対象テーブル21から取得し、ステップ実体IDを生成し、得られたステップ実体ID、当該遷移後のステップ定義ID、ワークフロー実体ID、タイプ「合流点」、状態「実行可能」及び親の対象IDを関連付けてステップ実体テーブル32に書き込むと共に、関連付けたワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDをステップ実体遷移テーブル33に書き込む合流点タイプ処理機能。
次に、以上のような機能を分担して実現するワークフロー処理装置40の各部41〜45について述べる。
記憶部41は、各部42〜45から読出/書込可能なメモリ(記憶手段)である。
ユーザインタフェース通信部42は、ユーザインタフェース装置50から送られた命令を記憶部41に書き込んだ後、記憶部41内の命令を各処理部43〜45のいずれかへ伝達する。また、各処理部43〜45より取得した情報を記憶部41に書き込んだ後、記憶部41内の情報をユーザインタフェース装置50に伝達する。
ワークフロー処理部43は、他の各部42,44,45に制御され、ワークフローDB10の各定義テーブル11〜13に対し、各IDやタイプ、状態等を読出/書込処理や削除処理を行うものである。
対象処理部44は、他の各部42,43,45に制御され、対象DB20の対象テーブル21に対し、各対象IDや実作業データ等を読出/書込処理や削除処理するものである。
実作業処理部45は、ワークフロー及び対象の情報より、実作業DB30内の各実体テーブル31〜33を作成/削除し、また、ユーザインタフェース通信部42を通じてユーザに実作業データを送信する機能をもっている。
実作業処理部45は、具体的には図8に示すように、実作業制御部46、実作業生成部47及び実作業登録・削除部48を備えている。
実作業制御部46は、実体テーブル31〜33の生成や取得といった実体テーブル31〜33に関して各部47,48の各処理を制御する機能をもっている。
実作業生成部47は、対象処理部44、ワークフロー処理部43から実作業制御部46を通じて情報を取得し、取得した情報を元に実体テーブル31〜33を生成する機能をもっている。
実作業登録・削除部48は、実作業生成部47によって生成された実体テーブル31〜33を実作業制御部46を通じて取得し、実作業DB30に登録する機能をもっている。また、ユーザインタフェース通信部42より指定された実作業を実作業制御部46を通じて取得する機能と、実作業DB30より削除する機能とをもっている。
なお、このワークフロー処理装置40は、ハードウェア構成、又はハードウェア資源とソフトウェアとの組合せ構成のいずれでも実施可能となっている。組合せ構成のソフトウェアとしては、予めネットワーク又は記憶媒体からプログラムを読込み可能なコンピュータにインストールされ、ワークフロー処理装置の機能を当該コンピュータに実現させるためのプログラムが用いられる。
ユーザインタフェース装置50は、データや命令をワークフロー処理装置40に入力し、ワークフロー処理装置40から受けたデータを出力する装置である。ワークフローシステムが1台のコンピュータの場合、ユーザインタフェース装置50は、キーボード、マウス及び表示装置等の入出力装置である。ワークフローシステムがクライアントサーバシステム等の複数台のコンピュータの場合、ユーザインタフェース装置50はクライアント端末である。
次に、以上のように構成されたワークフローシステムの動作を説明する。なお、以下の説明は、(1:ワークフローの定義)、(2:対象の生成)、(3:ワークフローの実行)、(3−1:ワークフローの開始)、(3−2:ステップの開始)、(3−3:ステップの終了)、(3−4:ワークフローの終了)、の順に述べる。
(1:ワークフローの定義)
ユーザインタフェース装置50においては、ユーザの操作により、ワークフロー定義ID、当該ワークフロー定義IDに関連付けた複数のステップ定義ID、当該各ステップ定義IDに関連付けたタイプ、当該各ステップ定義IDの遷移前後のステップ定義ID、を含む定義作成情報が入力される。なお、ここでは、入力されるワークフロー定義ID、各ステップ定義ID及び各タイプ、をまとめて定義作成情報と呼び、以下の説明では定義作成情報として述べるが、定義作成情報としてまとめずに、その都度、ワークフロー定義ID、各ステップ定義ID及び各タイプ、と述べてもよい。
続いて、ユーザインタフェース装置50においては、ユーザの操作により、ワークフローの定義作成を実行すると、定義作成情報をワークフロー処理装置40に送信する。
ワークフロー処理装置40においては、ユーザインタフェース通信部42が、この送信された定義作成情報の入力を受け付けると、定義作成情報をワークフロー処理部43に送出する。
ワークフロー処理部43は、定義作成情報を記憶部41に書き込むと共に、記憶部41内の定義作成情報に基づいて、ワークフロー定義テーブル11、ステップ定義テーブル12及びステップ定義遷移テーブル13を生成し、これらワークフロー定義テーブル11、ステップ定義テーブル12及びステップ定義遷移テーブル13をワークフローDB10に書き込む。
具体的には、ワークフロー処理部43は、記憶部41内の定義作成情報のうち、ワークフロー定義IDを保持するワークフロー定義テーブル11を生成し、このワークフロー定義テーブル11をワークフローDB10に書き込む。
また、ワークフロー処理部43は、記憶部41内の定義作成情報のうち、ステップ定義ID、ワークフロー定義ID及びタイプを互いに関連付けて保持するステップ定義テーブル12を生成し、このステップ定義テーブル12をワークフローDB10に書き込む。
また、ワークフロー処理部43は、記憶部41内の定義作成情報のうち、ワークフロー定義ID、遷移前のステップ定義ID及び遷移後のステップ定義IDを互いに関連付けて保持するステップ定義遷移テーブル13を生成し、このステップ定義遷移テーブル13をワークフローDB10に書き込む。
(2:対象の作成)
ユーザインタフェース装置50においては、ユーザの操作により、複数個の対象ID、親の対象ID及び複数個の実作業データ、を含む対象テーブル作成情報が入力される。なお、ここでは、入力される複数個の対象ID、親の対象ID及び複数個の実作業データ、をまとめて対象テーブル作成情報と呼び、以下の説明では対象テーブル作成情報として述べるが、対象テーブル作成情報としてまとめずに、その都度、複数個の対象ID、親の対象ID及び複数個の実作業データ、と述べてもよい。
実作業データとしては、例えば、帳票等の書類のイメージデータ及びXMLデータが用いられる。帳票等のイメージデータは、例えば、図示しないスキャナ装置から帳票等のイメージデータをユーザインタフェース装置50に取り込むことにより得られる。帳票等のXMLデータは、例えば、取り込んだイメージデータに関し、ユーザインタフェース装置50がイメージデータ内の文字を識別処理して文字データを作成し、この文字データを予め帳票等のひな型を示すXMLひな型データ内に挿入することにより得られる。但し、実作業データを準備する方法は、スキャナ取り込みに限らず、例えば、予め実作業データを保持した記憶手段から読み出す等といった任意の方法が使用可能となっている。
続いて、ユーザインタフェース装置50は、ユーザの操作により、対象テーブルの作成を実行すると、対象テーブル作成情報がワークフロー処理装置40に送信される。
ワークフロー処理装置40においては、ユーザインタフェース通信部42が、この送信された対象テーブル作成情報の入力を受け付けると、対象テーブル作成情報を対象処理部44に送出する。
対象処理部44は、対象テーブル作成情報を記憶部41に書き込むと共に、記憶部41内の対象テーブル作成情報に基づいて、対象ID毎に親の対象IDと各実作業データのうちのいずれかの実作業データとを関連付けた対象テーブル21を生成し、この対象テーブル21を対象DB20に書き込む。
(3:ワークフローの実行)
ワークフローは、ワークフローの開始、ステップの開始、ステップの終了、及びワークフローの終了、の順に実行される。
(3−1:ワークフローの開始)
ユーザインタフェース装置50においては、ユーザによる画面上の操作により、ワークフロー定義ID、親の対象ID及び開始情報が入力される。なお、ワークフロー定義ID、親の対象ID及び開始情報は、ユーザによる作業開始ボタンの押し操作により、予め作業開始ボタンに関連付けて記憶されたワークフロー定義ID、親の対象ID及び開始情報を入力する構成としてもよい。また、予め登録されたワークフロー定義IDに関連するワークフロー名を一覧表示し、選択されたワークフロー名に関連する対象IDを一覧表示し、対象IDを選択することにより、選択されたワークフロー名に関連するワークフロー定義IDと、選択された対象IDと開始情報とを入力する構成としてもよい。
いずれにしても、ユーザインタフェース装置50においては、ユーザによる画面上の操作により、ワークフローの開始を実行すると、図9に示すように、ワークフロー定義ID、親の対象ID及び開始情報をワークフロー処理装置40に送信する。
ワークフロー処理装置40においては、ユーザインタフェース通信部42が、この送信されたワークフロー定義ID、親の対象ID及び開始情報の入力を受け付けると、ワークフロー定義ID、対象ID及び開始情報を実作業処理部45に送出する。
実作業処理部45は、ワークフロー定義ID、対象ID及び開始情報を受けると、ワークフロー定義ID、親の対象ID及び開始情報を記憶部41に書き込むと共に、記憶部41内のワークフロー定義ID及び親の対象IDに基づいて、ワークフロー定義IDのワークフローをインスタンス化し、得られたワークフロー実体ID、ワークフロー定義ID、状態及び親の対象IDを互いに関連付けてワークフロー実体テーブル31に登録する。
具体的には図10に示すように、実作業処理部45においては、実作業制御部46がワークフロー定義ID、親の対象ID及び開始情報を受けると(S1)、ワークフロー定義ID及び親の対象IDを記憶部41に書き込むと共に、記憶部41内のワークフロー定義IDを含むワークフロー取得指示をワークフロー処理部43に送出する(S2)。
ワークフロー処理部43は、このワークフロー取得指示内のワークフロー定義IDに基づいて、ワークフローDB10からワークフロー定義テーブル11内のワークフロー定義IDを取得し(S3)、ワークフロー定義IDを実作業制御部46に送出する。
実作業制御部46は、ワークフロー定義IDを受けると、ステップS1で受けた親の対象IDを含む対象取得指示を対象処理部44に送出する(S4)。
対象処理部44は、この対象取得指示内の親の対象IDに基づいて、対象DB20から対象テーブル21内の親の対象IDを取得し(S5)、親の対象IDを実作業制御部46に送出する。
実作業制御部46は、これらワークフロー定義ID及び親の対象IDを実作業生成部47に送出する(S6)。
実作業生成部47は、ワークフロー定義ID及び親の対象IDに基づいて、ワークフロー定義IDのワークフローをインスタンス化し、ワークフロー実体ID、ワークフロー定義ID、状態及び親の対象IDを得る(S7)。詳しくは、ステップS7で得られた「ワークフロー実体ID」は、ワークフロー定義IDを部分的に変更したものである。ステップS7で得られた「ワークフロー定義ID」及び親の「対象ID」は、インスタンス化前の「ワークフロー定義ID」及び親の「対象ID」と同一のものである。ステップS7で得られた「状態」は「実行中」を示す値である。また、実作業生成部47は、得られたワークフロー実体ID、ワークフロー定義ID、状態及び親の対象IDを実作業制御部46に送出する。
実作業制御部46は、ワークフロー実体ID、ワークフロー定義ID、状態及び親の対象IDを受けると、ワークフロー実体ID、ワークフロー定義ID、状態及び親の対象IDを実作業登録・削除部48及びユーザインタフェース通信部42に送出する(S8)。
実作業登録・削除部48は、これらワークフロー実体ID、ワークフロー定義ID、状態及び親の対象IDを互いに関連付けて実作業DB30内のワークフロー実体テーブル31に登録する(S9)。
一方、ユーザインタフェース通信部42は、ワークフロー実体ID、ワークフロー定義ID、状態及び親の対象IDをユーザインタフェース装置50に送信する。ユーザインタフェース装置50は、ワークフロー実体ID、ワークフロー定義ID、状態及び親の対象IDを画面に表示する。
また、実作業制御部46は、ワークフロー実体テーブル31の登録後、ワークフロー実体テーブル31内のワークフロー実体ID及び親の対象IDを含むステップ取得指示をワークフロー処理部43に送出する。
ワークフロー処理部43は、このステップ取得指示内のワークフロー実体IDに基づいて、ステップ定義テーブル12内のステップ定義ID、ワークフロー定義ID及びタイプを取得し、これらステップ定義ID、ワークフロー定義ID及びタイプと、ステップ取得指示内のワークフロー実体ID及び親の対象IDとを実作業制御部46に送出する。
実作業制御部46は、これらステップ定義ID、ワークフロー定義ID及びタイプと、ワークフロー実体ID及び親の対象IDとを実作業生成部47に送出する。
実作業生成部47は、ステップ定義ID、ワークフロー定義ID及びタイプと、ワークフロー実体ID及び親の対象IDとに基づいて、ワークフローの最初に定義されているステップをインスタンス化し、得られたステップ実体ID、ステップ定義ID、ワークフロー実体ID、タイプ、状態及び親の対象IDを実作業制御部46に送出する。補足すると、得られたステップ実体IDは、ステップ定義IDを部分的に変更したものである。得られた「状態」は、「実行可能」を示す値である。得られたステップ定義ID、ワークフロー実体ID、タイプ、及び親の対象IDは、インスタンス化前と同一のものである。
実作業制御部46は、ステップ実体ID、ステップ定義ID、ワークフロー実体ID、タイプ、状態及び親の対象IDを実作業登録・削除部48に送出する。
実作業登録・削除部48は、ステップ実体ID、ステップ定義ID、ワークフロー実体ID、タイプ、状態及び親の対象IDを互いに関連付けて実作業DB30内のステップ実体テーブル32に書き込む。
また、実作業制御部46は、ステップ実体テーブル32の登録後、ステップ実体テーブル32内のワークフロー実体IDを含むステップ遷移取得指示をワークフロー処理部43に送出する。
ワークフロー処理部43は、このステップ取得指示内のワークフロー実体IDに基づいて、ステップ定義遷移テーブル13内のワークフロー実体ID、遷移前のステップ定義ID及び遷移後のステップ定義IDを取得し、これらワークフロー実体ID、遷移前のステップ定義ID及び遷移後のステップ定義IDを実作業制御部46に送出する。
実作業制御部46は、ワークフロー実体ID、遷移前のステップ定義ID及び遷移後のステップ定義IDを実作業生成部47に送出する。
実作業生成部47は、ワークフロー実体ID、遷移前のステップ定義ID及び遷移後のステップ定義IDに基づいて、ワークフローの遷移前後のステップをインスタンス化し、得られたワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDを実作業制御部46に送出する。ここで、得られた遷移前のステップ実体ID及び遷移後のステップ実体IDは、それぞれインスタンス化前の遷移前のステップ定義ID及び遷移後のステップ定義IDを部分的に変更したものである。得られたワークフロー実体IDは、インスタンス化前のワークフロー実体IDと同一のものである。
実作業制御部46は、ワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDを実作業登録・削除部48に送出する。
実作業登録・削除部48は、ワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDを互いに関連付けて実作業DB30内のステップ実体遷移テーブル33に登録する。なお、遷移前のステップ実体IDのうち、最初のステップ実体IDは、「NULL」を示す値である。
(3−2:ステップの開始)
ユーザインタフェース装置50は、ユーザによる画面上の操作により、ステップの開始を実行すると、開始するステップのステップ実体IDと開始情報をワークフロー処理装置40に送信する。
ワークフロー処理装置40においては、ユーザインタフェース通信部42が、このステップ実体ID及び開始情報を実作業処理部45に送出する。
実作業処理部45は、このステップ実体IDと開始情報を受けると、このステップ実体IDに基づいて実作業DB30のステップ実体テーブル32を検索し、ステップ実体テーブル32において、このステップ実体IDに対応する「状態」が「実行可能」であれば、その「状態」を「実行中」に更新する。
また、実作業処理部45は、ステップ実体テーブル32において、この検索に用いたステップ実体IDに対応する対象IDを得ると、この対象IDを含む実作業データ取得指示を対象処理部44に送出する。対象処理部44は、この実作業データ取得指示内の対象IDに基づいて対象DB20内の対象テーブル21から実作業データを読み出すと、この実作業データを実作業処理部45に送出する。
実作業処理部45は、この実作業データをユーザインタフェース通信部42に送出する。ユーザインタフェース通信部42は、この実作業データをユーザインタフェース装置50に送信する。
ユーザインタフェース装置50は、この実作業データを画面表示する。これにより、ユーザインタフェース装置50は、ステップ内における実作業データに対する作業が可能となる。ここで、実作業データに対する作業とは、例えば、実作業データに対し、ステップ毎の作業データを追加することにより、実作業データを更新する処理を意味している。追加される作業データは、例えば、元の実作業データと、修正後の実作業データとの差分を表す差分データでもよく、修正後の実作業データ全体でもよい。
(3−3:ステップの終了)
ユーザインタフェース装置50は、ユーザによる画面上の操作により、ステップの終了を実行すると、終了するステップのステップ実体ID、更新後の実作業データ及び終了情報をワークフロー処理装置40に送信する。
ワークフロー処理装置40においては、ユーザインタフェース通信部42が、このステップ実体ID、実作業データ及び終了情報を実作業処理部45に送出する。
実作業処理部45は、ステップ実体ID、作業後の実作業データ及び終了情報を受けると、このステップ実体IDに基づいて、実作業DB30のステップ実体テーブル32を検索し、ステップ実体テーブル32において、このステップ実体IDに対応する「状態」を「完了」に更新すると共に、このステップ実体IDに対応する対象IDをステップ実体テーブル32から得ると、この対象ID及び作業後の実作業データを含む実作業データ更新指示を対象処理部44に送出する。対象処理部44は、この実作業データ取得指示内の対象IDに基づいて、作業後の実作業データを対象DB20内の対象テーブル21に書き込む。
「状態」及び「実作業データ」の更新後、実作業処理部45は、当該更新した「状態」に対応するステップ定義IDを遷移前のステップ定義IDとした場合に、遷移後のステップ定義ID(次に実行するステップのステップ定義ID)がステップ定義遷移テーブル13にあるか否かを判定する。この判定の結果、遷移後のステップ定義IDがある場合、実作業処理部45は、ステップ定義遷移テーブル13内の遷移後のステップ定義IDを取得し、この遷移後のステップ定義IDに基づいて、ステップ定義テーブル12内のタイプを判定する。この判定の結果、得られるタイプは、「通常」、「開始点」又は「合流点」のいずれかである。
タイプが「通常」の場合、実作業処理部45は、遷移後のステップをインスタンス化し、得られたステップ実体ID、ステップ定義ID、ワークフロー実体ID、タイプ、状態及び対象IDを互いに関連付けてステップ実体テーブル32に登録する。ここで、得られたステップ実体IDは、遷移後のステップ定義IDを部分的に変更したものである。得られたステップ定義ID、ワークフロー実体ID及びタイプは、遷移後のステップ定義IDに基づいてステップ定義テーブル12から読み出されたものである。得られた対象IDは、遷移前のステップ定義IDに対応するステップ実体テーブル32内の対象IDと同じである。得られた「状態」は「実行可能」を示す値である。また、実作業処理部45は、終了したステップ実体と次に実行するステップ実体の遷移を示すように、互いに関連付けたワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDをステップ実体遷移テーブル33に登録する。
タイプが「開始点」の場合、実作業処理部45は、ステップ実体テーブル32内の親の対象IDを対象処理部44に送出する。対象処理部44は、対象DB20内の対象テーブル21からこの親の対象IDに対応する全ての対象ID(子の対象ID)を取得して実作業処理部45に送出する。実作業処理部45は、子の対象IDを記憶部41に記憶すると共に、記憶部41内の子の対象IDの個数だけ、ステップをインスタンス化し、得られたステップ実体ID、ステップ定義ID、ワークフロー実体ID、タイプ、状態及び対象IDを互いに関連付けてステップ実体テーブル32に登録する。ここで、得られた複数個のステップ実体IDは、遷移後のステップ定義IDを部分的に変更したものであり、互いに異なる値を示している。また、ここで得られるステップ実体IDの個数は、(2:対象の作成)において、入力を受け付けた対象IDの個数と一致している。得られたステップ定義ID及びタイプは、遷移後のステップ定義IDに基づいてステップ定義テーブル12から読み出されたものである。得られたワークフロー実体IDは、遷移前のステップのステップ実体テーブル32から読み出されたものである。得られた対象IDは、遷移前のステップ定義IDに対応するステップ実体テーブル32内の対象IDと同じである。得られた「状態」は「実行可能」を示す値である。また、実作業処理部45は、終了したステップ実体と次に実行するステップ実体の遷移を示すように、互いに関連付けたワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDをステップ実体遷移テーブル33に登録する。
タイプが「合流点」の場合、実作業処理部45は、ステップ実体テーブル32内の対象IDを対象処理部44に送出する。対象処理部44は、対象DB20内の対象テーブルから当該対象IDに対応する親の対象IDを取得して実作業処理部45に送出する。実作業処理部45は、この親の対象IDに対応するステップをインスタンス化し、得られたステップ実体ID、ステップ定義ID、ワークフロー実体ID、タイプ、状態及び対象IDを互いに関連付けてステップ実体テーブル32に登録する。ここで、得られたステップ実体IDは、遷移後のステップ定義IDを部分的に変更したものである。得られたステップ定義ID及びタイプは、遷移後のステップ定義IDに基づいてステップ定義テーブル12から読み出されたものである。得られたワークフロー実体IDは、遷移前のステップのステップ実体テーブル32から読み出されたものである。得られた対象IDは、遷移前のステップ定義IDに対応するステップ実体テーブル32内の対象IDと同じである。得られた「状態」は「実行可能」を示す値である。また、実作業処理部45は、終了したステップ実体と次に実行するステップ実体の遷移を示すように、互いに関連付けたワークフロー実体ID、遷移前のステップ実体ID及び遷移後のステップ実体IDをステップ実体遷移テーブル33に登録する。
一方、実作業処理部45は、次に実行するステップのステップ定義IDがステップ定義遷移テーブル13にあるか否かを判定した結果、存在しない場合には、ワークフローの終了処理を実行する。
(3−4:ワークフローの終了)
実作業処理部45は、次に実行するステップのステップ定義IDがステップ定義遷移テーブル13に無いと判定された場合、実作業DB30内のワークフロー実体テーブル31の「状態」を「完了」に更新する。
上述したように本実施形態によれば、作業が分岐する開始点処理において、親の対象IDに対応する全ての対象IDを対象テーブルから取得し、当該取得した対象IDの個数だけステップ定義IDからステップ実体IDを生成する構成により、ワークフローを定義する各定義テーブルを修正することなく、分岐する作業の数だけステップ実体ID毎のステップ実体を実行可能としたため、作業を実行するユーザの人数変更に伴うワークフローの修正を不要にすることができる。
補足すると、本実施形態は、複数のステップとそのステップ内で実行する作業を定義する「定義」と、ユーザにより各ステップが実行される際に定義より実体化される「実作業」と、ワークフローの流れに乗って処理される木構造として表現可能なデータの固まりである「対象」とを持つ構成により、対象の木構造を元に実作業を分割することで作業の分岐を実現させることができる。また、ワークフローにおける分岐の数に関する情報をワークフローを流れる「対象」に持たせることで作業分岐により発生するワークフローの修正を不要にすることができる。
また、対象の木構造の変更に合わせて実作業を動的に変更し作業分岐を実行することができる。また、対象の構造に合わせて動的に作業分岐できるので、作業分岐によるワークフローの修正を不要にしてワークフローの管理コストを抑制することができる。
(第2の実施形態)
次に、本発明の第2の実施形態に係るワークフロー処理装置について説明する。
本実施形態は、第1の実施形態の変形例であり、分岐する各ステップにユーザを割り付けるものであり、具体的には図11に示すように、予めロールテーブル14a、ユーザテーブル14b及びロール・ステップ関係定義テーブル15を定義しておき、実作業時に、ロール・ユーザ関係テーブル34及びロール・ステップ関係実体テーブル35を生成する構成となっている。また、これに伴い、実作業処理部45は、実作業データを送付する前に、ユーザ認証を行う機能が付加されている。
ここで、ロールテーブル14aは、予めユーザによるユーザインタフェース装置50の操作によりユーザインタフェース通信部42及びワークフロー処理部43を介してワークフローDB10に登録され、ロールID、ロール名及びロールの説明を互いに関連付けて記憶するものである。ここで、ロールとはステップの役割を意味している。
ユーザテーブル14bは、予めユーザによるユーザインタフェース装置50の操作によりユーザインタフェース通信部42及びワークフロー処理部43を介してワークフローDB10に登録され、ユーザID、ユーザ名及びパスワードを互いに関連付けて記憶するものである。
ロール・ステップ関係定義テーブル15は、予めユーザによるユーザインタフェース装置50の操作によりユーザインタフェース通信部42及びワークフロー処理部43を介してワークフローDB10に登録され、ロールID及びステップ定義IDを互いに関連付けて記憶するものである。
ロール・ユーザ関係テーブル34は、ロールテーブル14a内のロールID及びユーザテーブル14b内のユーザIDに基づいて実作業処理部45により実作業DB30に登録され、ロールID及びユーザIDを互いに関連付けて記憶するものである。
ロール・ステップ関係実体テーブル35は、ロール・ステップ関係定義テーブル15内のロールID及びステップ定義IDに基づいて実作業処理部45により生成されたロールID及びステップ実体IDを互いに関連付けて記憶するものであり、実作業DB30に登録される。
次に、以上のように構成されたワークフロー処理装置の動作を説明する。
始めに、前述した(1:ワークフローの定義)の動作は前述同様に実行される。続いて、ユーザインタフェース装置50においては、ユーザの操作により、ロールID、ロール名及びロールの説明、を含むロールテーブル作成情報が入力される。
また、ユーザインタフェース装置50においては、ユーザの操作により、ロールテーブル作成を実行すると、ロールテーブル作成情報をワークフロー処理装置40に送信する。
ワークフロー処理装置40においては、ユーザインタフェース通信部42が、この送信されたロールテーブル作成情報の入力を受け付けると、ロールテーブル作成情報をワークフロー処理部43に送出する。
ワークフロー処理部43は、ロールテーブル作成情報を記憶部41に書き込むと共に、記憶部41内のロールテーブル作成情報に基づいて、ロールテーブル作成情報内のロールID、ロール名及びロールの説明を互いに関連付けたロールテーブル14aを作成し、このロールテーブル14aをワークフローDB10に書き込む。
同様に、ユーザインタフェース装置50においては、ユーザの操作により、ユーザID、ユーザ名及びパスワード、を含むユーザテーブル作成情報が入力される。
また、ユーザインタフェース装置50においては、ユーザの操作により、ユーザテーブル作成を実行すると、ユーザテーブル作成情報をワークフロー処理装置40に送信する。
ワークフロー処理装置40においては、ユーザインタフェース通信部42が、この送信されたユーザテーブル作成情報の入力を受け付けると、ユーザテーブル作成情報をワークフロー処理部43に送出する。
ワークフロー処理部43は、ユーザテーブル作成情報を記憶部41に書き込むと共に、記憶部41内のユーザテーブル作成情報に基づいて、ユーザテーブル作成情報内のユーザID、ユーザ名及びパスワードを互いに関連付けたユーザテーブル14bを作成し、このユーザテーブル14bをワークフローDB10に書き込む。
また同様に、ユーザインタフェース装置50においては、ユーザの操作により、ロールID及びステップ定義ID、を含む関係定義テーブル作成情報が入力される。
また、ユーザインタフェース装置50においては、ユーザの操作により、関係定義テーブル作成を実行すると、関係定義テーブル作成情報をワークフロー処理装置40に送信する。
ワークフロー処理装置40においては、ユーザインタフェース通信部42が、この送信された関係定義テーブル作成情報の入力を受け付けると、関係定義テーブル作成情報をワークフロー処理部43に送出する。
ワークフロー処理部43は、関係定義テーブル作成情報を記憶部41に書き込むと共に、記憶部41内の関係定義テーブル作成情報に基づいて、関係定義テーブル作成情報内のロールID及びステップ定義IDを互いに関連付けたロール・ステップ関係定義テーブル15を作成し、このロール・ステップ関係定義テーブル15をワークフローDB10に書き込む。
次に、前述した(2:対象の作成)及び(3−1:ワークフローの開始)の動作は前述同様に実行される。この(3−1:ワークフローの開始)の動作において、実作業処理部45は、開始情報を受けるステップS1よりも後の任意のタイミングで、ワークフローDB10からワークフロー処理部43により読み出したロールテーブル14a内のロールID及びユーザテーブル14b内のユーザIDに基づいて、当該ロールID及びユーザIDを互いに関連付けたロール・ユーザ関係テーブル34を生成し、このロール・ユーザ関係テーブル34を実作業DB30に書き込む。
同様に、実作業処理部45は、開始情報を受けるステップS1よりも後の任意のタイミングで、ワークフローDB10からワークフロー処理部43により読み出したロール・ステップ関係定義テーブル15内のロールID及びステップ定義IDに基づいてロールID及びステップ実体IDを互いに関連付けたロール・ステップ関係実体テーブル35を生成し、このロール・ステップ関係テーブル35を実作業DB30に書き込む。
このロール・ユーザ関係テーブル34及びロール・ステップ関係実体テーブル35により、ステップ実体IDとユーザIDとがロールIDを介して関連付けられるので、ステップにユーザを割り付けることができる。
続いて、(3−2:ステップの開始)の動作は、実作業データを送信する動作を除き、前述同様に実行される。実作業データを送信する動作は、次のようにユーザ認証動作が付加されて実行される。
すなわち、実作業処理部45は、状態を更新したステップ実体ID(=検索に用いたステップ実体ID)に対応するロール・ステップ関係実体テーブル35内のロールIDを得た後、このロールIDに対応するロール・ユーザ関係テーブル34内のユーザIDを得ると、このユーザIDに対応するユーザ名を、実作業データを送信していない段階でユーザインタフェース通信部42からユーザインタフェース装置50に送信する。
また、実作業処理部45は、ユーザ名の送信後、ユーザインタフェース通信部42によりユーザインタフェース装置50からユーザID及びパスワードを受けると、このユーザID及びパスワードをユーザテーブル14bに基づいて検証し、検証結果が正当のとき、実作業データの送信を許可する。
これにより、前述した実作業データの送信が実行される。
以下、(3−3:ステップの終了)及び(3−4:ワークフローの終了)の動作は、割り付けられたユーザによるユーザインタフェース装置50の操作に基づき、前述同様に実行される。
上述したように本実施形態によれば、ロールテーブル14a、ユーザテーブル14b及びロール・ステップ関係定義テーブル15を定義してロール・ユーザ関係テーブル34及びロール・ステップ関係実体テーブル35を生成する構成により、生成したロール・ユーザ関係テーブル34及びロール・ステップ関係実体テーブル35によってステップ実体IDとユーザIDとがロールIDを介して関連付けられるので、第1の実施形態の効果に加え、ステップにユーザを割り付けることができ、また、実作業データの送信前にユーザ認証を行う場合には、ユーザの割り付けをより確実に行うことができる。
補足すると、本実施形態は、実作業にユーザを割り当てる構成により、ユーザ毎に実行できる実作業を管理でき、また、実作業毎のアクセス権管理を実現させることができる。
なお、上記実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)、光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であっても良い。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が上記実施形態を実現するための各処理の一部を実行しても良い。
さらに、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から上記実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であっても良い。
尚、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、上記実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であっても良い。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。