(57)【要約】【課題】  滞留作業が発生した場合にその滞留作業によって業務の進行に影響を受けない案件に計算機リソースや人的リソースを優先的に配分することが可能な技術を提供する。【解決手段】  業務における複数の作業間の関係を定義するプロセス定義情報に基づいて作業の実行管理を行うワークフロー管理方法において、作業の進捗状況を検知し、その検知された進捗状況に基づいて滞留作業を特定するステップと、前記プロセス定義情報に基づいて前記滞留作業と所定の関係を有する作業を特定するステップと、前記所定の関係を有する作業の処理優先度を前記滞留作業との間の関係に応じて設定するステップと、前記設定された処理優先度に応じて当該作業の実行を制御するステップとを有するものである。【選択図】        図１０
2008135054.tif 000002
【特許請求の範囲】
【請求項１】
業務における複数の作業間の関係を定義するプロセス定義情報に基づいて作業の実行管理を行うワークフロー管理方法において、
作業の進捗状況を検知し、その検知された進捗状況に基づいて滞留作業を特定するステップと、前記プロセス定義情報に基づいて前記滞留作業と所定の関係を有する作業を特定するステップと、前記所定の関係を有する作業の処理優先度を前記滞留作業との間の関係に応じて設定するステップと、前記設定された処理優先度に応じて当該作業の実行を制御するステップとを有することを特徴とするワークフロー管理方法。
【請求項２】
前記作業の各々に対して業務処理の滞留状態を判定する為の閾値を事前定義し、該作業における滞留数が該閾値を上回る場合に、該作業を滞留状態として判定することを特徴とする請求項１に記載されたワークフロー管理方法。
【請求項３】
前記作業の業務処理を実行する作業者または業務プログラムの滞留状態を判定し、滞留状態と判定された作業者または業務プログラムに割り当てられている作業を滞留状態として判定することを特徴とする請求項１に記載されたワークフロー管理方法。
【請求項４】
前記滞留作業と所定の関係を有する作業として、前記滞留作業の滞留により作業の進捗に影響を受ける作業を特定することを特徴とする請求項１乃至請求項３のいずれか１項に記載されたワークフロー管理方法。
【請求項５】
前記滞留作業の滞留により作業の進捗に影響を受ける作業の範囲を特定し、特定された範囲に含まれる作業を、前記影響を受ける作業として特定することを特徴とする請求項４に記載されたワークフロー管理方法。
【請求項６】
前記影響を受ける作業の処理優先度を、その作業に予め設定されている処理優先度、影響を受けない作業の処理優先度、または予め定められた基準の処理優先度よりも低く変更することを特徴とする請求項４または請求項５のいずれかに記載されたワークフロー管理方法。
【請求項７】
前記滞留作業と所定の関係を有する作業として、前記滞留作業の滞留により作業の進捗に影響を受けない作業を特定することを特徴とする請求項１乃至請求項３のいずれか１項に記載されたワークフロー管理方法。
【請求項８】
前記滞留作業の滞留により作業の進捗に影響を受ける作業を特定し、その特定された影響を受ける作業から前記影響を受けない作業を特定することを特徴とする請求項７に記載されたワークフロー管理方法。
【請求項９】
前記影響を受けない作業の処理優先度を、その作業に予め設定されている処理優先度、影響を受ける作業の処理優先度、または予め定められた基準の処理優先度よりも高く変更することを特徴とする請求項７または請求項８のいずれかに記載されたワークフロー管理方法。
【請求項１０】
作業を構成する複数の副作業の内、予め定められた閾値以上の副作業が未実行である作業を滞留作業として特定することを特徴とする請求項１乃至請求項９のいずれか１項に記載されたワークフロー管理方法。
【請求項１１】
業務における複数の作業間の関係を定義するプロセス定義情報に基づいて作業の実行管理を行うワークフロー管理システムにおいて、
作業の進捗状況を検知し、その検知された進捗状況に基づいて滞留作業を特定し、前記プロセス定義情報に基づいて前記滞留作業と所定の関係を有する作業を特定し、前記所定の関係を有する作業の処理優先度を前記滞留作業との間の関係に応じて設定する優先度制御部と、前記設定された処理優先度に応じて当該作業の実行を制御する実行制御部とを備えることを特徴とするワークフロー管理システム。
【請求項１２】
前記優先度制御部は、前記作業の各々に対して業務処理の滞留状態を判定する為の閾値を事前定義し、該作業における滞留数が該閾値を上回る場合に、該作業を滞留状態として判定するものであることを特徴とする請求項１１に記載されたワークフロー管理システム。    
【請求項１３】
前記優先度制御部は、前記作業の業務処理を実行する作業者または業務プログラムの滞留状態を判定し、滞留状態と判定された作業者または業務プログラムに割り当てられている作業を滞留状態として判定するものであることを特徴とする請求項１１に記載されたワークフロー管理システム。
【請求項１４】
前記優先度制御部は、前記滞留作業と所定の関係を有する作業として、前記滞留作業の滞留により作業の進捗に影響を受ける作業を特定するものであることを特徴とする請求項１１乃至請求項１３のいずれか１項に記載されたワークフロー管理システム。
【請求項１５】
前記優先度制御部は、前記滞留作業の滞留により作業の進捗に影響を受ける作業の範囲を特定し、特定された範囲に含まれる作業を、前記影響を受ける作業として特定するものであることを特徴とする請求項１４に記載されたワークフロー管理システム。
【請求項１６】
前記優先度制御部は、前記影響を受ける作業の処理優先度を、その作業に予め設定されている処理優先度、影響を受けない作業の処理優先度、または予め定められた基準の処理優先度よりも低く変更するものであることを特徴とする請求項１４または請求項１５のいずれかに記載されたワークフロー管理システム。
【請求項１７】
前記優先度制御部は、前記滞留作業と所定の関係を有する作業として、前記滞留作業の滞留により作業の進捗に影響を受けない作業を特定するものであることを特徴とする請求項１１乃至請求項１３のいずれか１項に記載されたワークフロー管理システム。
【請求項１８】
前記優先度制御部は、前記滞留作業の滞留により作業の進捗に影響を受ける作業を特定し、その特定された影響を受ける作業から前記影響を受けない作業を特定するものであることを特徴とする請求項１７に記載されたワークフロー管理システム。
【請求項１９】
前記優先度制御部は、前記影響を受けない作業の処理優先度を、その作業に予め設定されている処理優先度、影響を受ける作業の処理優先度、または予め定められた基準の処理優先度よりも高く変更するものであることを特徴とする請求項１７または請求項１８のいずれかに記載されたワークフロー管理システム。
【請求項２０】
前記優先度制御部は、作業を構成する複数の副作業の内、予め定められた閾値以上の副作業が未実行である作業を滞留作業として特定するものであることを特徴とする請求項１１乃至請求項１９のいずれか１項に記載されたワークフロー管理システム。
【請求項２１】
業務における複数の作業間の関係を定義するプロセス定義情報に基づいて作業の実行管理を行うワークフロー管理システムとしてコンピュータを機能させる為のプログラムにおいて、
作業の進捗状況を検知し、その検知された進捗状況に基づいて滞留作業を特定し、前記プロセス定義情報に基づいて前記滞留作業と所定の関係を有する作業を特定し、前記所定の関係を有する作業の処理優先度を前記滞留作業との間の関係に応じて設定する優先度制御部と、前記設定された処理優先度に応じて当該作業の実行を制御する実行制御部としてコンピュータを機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は複数の作業からなる業務の流れを事前定義したプロセス定義に基づいて作業実行と業務の進行状態の管理を支援するワークフロー管理システムに関し、特に業務中の滞留作業の存在を考慮して作業実行と業務の進行状態の管理を支援するワークフロー管理システムに適用して有効な技術に関するものである。
【背景技術】
【０００２】
ワークフロー管理システムは、複数の作業からなる業務の流れをプロセス定義として事前定義し、この定義に基づいて作業実行と業務の進行状態の管理を支援する技術である。プロセス定義は、業務の流れである業務フローをモデル化したものと言える。各作業における処理は、人が行う場合や、業務プログラムにより自動的に実行される場合があるが、ワークフロー管理システムは、これらの作業の人への割り当てや業務プログラムによる処理の実行制御を行い、且つ業務フロー全体としての状態管理、進捗管理を行うものである。
【０００３】
こうしたワークフロー管理システムには、作業者に大量の作業が割り当てられた場合や、作業者が不在の場合に、作業が滞留するという問題がある。一般には、滞留した作業を別の作業者に割り当てることにより、前記問題の解決を行っている。この様な解決手法の例として、米国特許第５、９１８、２２６号（特開平８−１９０５８４号公報）がある。この従来技術では、滞留している回覧文章の回収及び再配布等により作業が滞ってしまう滞留状態を解消可能なワークフローシステムについて述べている。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、滞留作業を別の作業者に割り当てることにより滞留状態を解消する従来の手法は、滞留作業を割り当てる作業者が存在しない場合では適用することができない。例えば、滞留作業を実行する際に、専門知識や特別な処理装置等を必要とする場合や、余剰な人員が存在しない場合等では、滞留作業を別の作業者に割り当てることができない可能性がある。また、滞留作業を別の作業者に割り当てる事が可能な場合でも、処理能力を上回る大量の作業が発生した場合等では、滞留作業が発生する。
【０００５】
なお、滞留作業には、全く作業が進捗しない作業の他、作業自体は進捗しているが、予定よりも進捗状況が遅れている作業も含まれるものとする。
【０００６】
滞留作業が発生した場合、当該作業に関連する作業に影響が生じる。例えば、滞留作業の上流にある作業を実行中の案件は、滞留作業により業務処理の進捗に影響を受ける。この場合、滞留作業の遷移元にある作業を実行した場合、該作業終了後に案件は滞留作業へと遷移し、そこで業務処理の進行は中断される。
【０００７】
こうした場合、作業者が複数の異なる業務に携わっているのであれば、直後で業務の進行が中断される作業を行うよりも他の業務処理を優先的に行った方が、全体として効率が良くなり、作業者の人的リソースを有効に活用出来ることがある。
【０００８】
特に、処理終了後に滞留作業へ遷移する作業の優先度が高い場合に有効に活用できる度合いが大きくなる。これは、作業者は作業に関連付けられた優先度に基づき、処理すべき作業を特定する為である。この様な場合、滞留せずに完了可能な業務があるかどうかに関わらず、滞留作業へ遷移する作業に人的リソースや計算機リソースを優先的に割り当てることになり、この割り当てを滞留作業以外の他の作業に変更した場合の効果はより顕著になる。
【０００９】
なお、滞留作業に関連する作業としては、上流にある作業以外のものも含まれ、例えば、下流にあるものや並行して行われるものも含まれるものとする。すなわち、この関連する作業には、滞留作業の滞留に起因して業務処理の進捗に影響が表れる作業が含まれる。
【００１０】
本発明の目的は上記問題を解決し、滞留作業が発生した場合にその滞留作業によって業務の進行に影響を受けない案件に計算機リソースや人的リソースを優先的に配分することが可能な技術を提供することにある。
【００１１】
本発明の他の目的は案件に応じて閾値を変更することにより種々の案件における作業の滞留状態を判定することが可能な技術を提供することにある。
【００１２】
本発明の他の目的は個々の作業者または業務プログラムにより滞留した作業を効率良く検出することが可能な技術を提供することにある。
【課題を解決するための手段】
【００１３】
本発明は、業務における複数の作業間の関係を定義するプロセス定義情報に基づいて、作業の実行管理を行うワークフローシステムにおいて、作業の滞留状態に応じて、作業の処理優先度を設定若しくは変更するものである。これは、滞留している作業と所定の関係を有する作業の処理優先度を設定若しくは変更することである。なお、プロセス定義情報には、複数の作業と該作業間の処理順序とを定義する情報が含まれるものとする。
【００１４】
本発明のワークフロー管理システムでは、まず、各作業に対する未実行作業数を取得する。この未実行作業数が事前定義した閾値を超える作業を検索することにより、滞留作業を検知する。
【００１５】
次にプロセス定義を用いて、この滞留作業により業務の進捗に影響を受ける作業の範囲または影響を受ける作業の少なくとも一方を検知する。
【００１６】
そして、この作業範囲に含まれる作業若しくは影響を受ける作業に対する処理優先度を下げ、処理優先度の高い順に作業の実行要求を行う。これらの処理を実行することにより、滞留作業によって業務の進捗に影響を受ける作業は優先度を下げて処理することになる。その結果、案件の進行に影響を受けない業務に、計算機リソースや人的リソースを配分することが可能となる。
【００１７】
また本発明には、以下の処理が含まれる。すなわち、検知された滞留作業により業務の進捗に影響を受けない作業範囲または進捗に影響を受けない作業の少なくとも一方を検知し、その検知された作業範囲に含まれる作業若しくは検知された作業の処理優先度を上げる処理を実行する。
【００１８】
更に本発明には、上記の処理優先度を上げる処理と下げる処理のコンビネーションも含まれる。つまり、影響を受ける作業の処理優先度を下げてかつ影響を受けない作業の処理優先度を上げる処理を行う。
【００１９】
以上の様に本発明のワークフロー管理システムによれば、作業の滞留状態に応じて各作業の処理優先度を変更するので、滞留作業が発生した場合にその滞留作業によって業務の進行に影響を受けない案件に計算機リソースや人的リソースを優先的に配分することが可能である。
【発明の効果】
【００２０】
本発明によれば作業の滞留状態に応じて各作業の処理優先度を変更するので、滞留作業が発生した場合にその滞留作業によって業務の進行に影響を受けない案件に計算機リソースや人的リソースを優先的に配分することが可能である。
【発明を実施するための最良の形態】
【００２１】
以下に複数の作業からなる業務の流れを事前定義したプロセス定義に基づいて作業実行と業務の進行状態の管理を支援し、作業の滞留状態に応じて処理優先度を変更する一実施形態のワークフロー管理システムについて説明する。
【００２２】
以下の実施形態におけるワークフロー管理システムの例は、本発明の説明に不要な機能や詳細は省略している為、一般的なワークフロー管理システムに比べて単純化されているが、本発明の適用範囲が制限されるものではない。
【００２３】
図１は本実施形態のワークフロー管理システムの構成を示す図である。図１に示す様に本実施形態のワークフロー管理システムを実現する計算機０１２０は、クライアント要求処理部０１５１と、ワークフロー実行状態制御部０１５２と、業務プログラム実行制御部０１５３と、優先度制御部０１５４とを有している。      
【００２４】
クライアント要求処理部０１５１は、クライアント業務プログラム０１０３から送信されたコマンドを受け付ける処理部である。ワークフロー実行状態制御部０１５２は、クライアント要求処理部０１５１及び業務プログラム実行制御部０１５３より送信されたコマンドを受け付け、プロセス定義０１４１に従い、ワークフロー実行状態情報０１４２を適切に変更する処理部である。
【００２５】
業務プログラム実行制御部０１５３は、各作業の処理優先度に応じてその作業の実行要求を行う実行制御部である。優先度制御部０１５４は、前記作業の滞留状態を判定し、該作業の滞留により業務の進捗に影響を受ける作業の範囲を特定し、特定した該作業範囲に含まれる各作業に対する処理優先度を決定する処理部である。
【００２６】
ワークフロー管理システムをクライアント要求処理部０１５１、ワークフロー実行状態制御部０１５２、業務プログラム実行制御部０１５３及び優先度制御部０１５４として機能させる為のプログラムは、ＣＤ−ＲＯＭ等の記録媒体に記録され磁気ディスク等に格納される。また、格納されたプログラムは、メモリにロードされて実際に実行される。なお、前記プログラムを記録する記録媒体はＣＤ−ＲＯＭ以外の他の記録媒体でも良い。記録媒体は、情報を格納するものであれば良く、ＤＶＤ(Digital Versatile Disc)やフロッピーディスクが含まれる。また、前記プログラムを当該記録媒体から情報処理装置にインストールして使用しても良いし、ネットワークを通じて当該記録媒体にアクセスして前記プログラムを使用するものとしても良い。
【００２７】
本実施形態の計算機０１２０は、表示装置０１６１、キーボード０１６２、マウス０１６３、通信装置０１６４、メモリ０１６５、ＣＰＵ０１６６、補助記憶装置０１６７の各ハードウェアから構成される。
【００２８】
ワークフロー実行制御エンジン０１０１、自動実行業務プログラム０１０２及びクライアント業務プログラム０１０３は、ソフトウェアプログラムであり、補助記憶装置０１６７内に格納されている。各ソフトウェアプログラムは、実行時にメモリ０１６５に読み込まれ、ＣＰＵ０１６６にて実行される。
【００２９】
また、表示装置０１６１や、キーボード０１６２、マウス０１６３等の入力装置により、各ソフトウェアプログラムは作業者と対話を行うことができる。更に、通信装置０１６４により、コンピュータネットワーク０１１０を介して、他の計算機０１２０上で動作するソフトウェアプログラムと通信することができる。また、各ソフトウェアプログラムは、同一計算機０１２０上で動作しても、コンピュータネットワーク０１１０を介し、異なる計算機０１２０上で動作しても構わない。
【００３０】
ワークフロー実行制御エンジン０１０１は、作業の処理手順について事前定義したプロセス定義０１４１に基づき、作業や業務フローの実行状態を管理する。また、ワークフロー実行制御エンジン０１０１は、コンピュータネットワーク０１１０を介し、自動実行業務プログラム０１０２に対して処理要求を送信し、結果を取得する。更に、ワークフロー実行制御エンジン０１０１は、クライアント業務プログラム０１０３から処理要求を受け付ける。ワークフロー実行制御エンジン０１０１の動作に関しては後述する。
【００３１】
自動実行業務プログラム０１０２は、ワークフロー実行制御エンジン０１０１からの業務処理の実行要求を受け付け、作業に対する業務処理を人手を介さずに実行し、業務処理実行後に完了通知若しくは障害発生通知を返す。
【００３２】
クライアント業務プログラム０１０３は、作業者である人が直接操作することで処理を行うソフトウェアプログラムである。クライアント業務プログラム０１０３は、ワークフロー実行制御エンジン０１０１に対して作業者に割り当てられた作業を取得する。そして、クライアント業務プログラム０１０３は、表示装置０１６１に前記取得結果の表示を制御し、また割り当てられた作業に対する業務処理を行う。また、作業に対する業務処理完了後に、ワークフロー実行制御エンジン０１０１に対して、作業の完了通知を行う。
【００３３】
ここで本実施形態では、作業者が不在となった場合、業務プログラムで障害が発生した場合、未実行作業数が所定の閾値を超えた場合、または状態が「Ｒｅａｄｙ」となっている作業数が所定の閾値を超えた場合に滞留状態が生じているものとして判定する。また本実施形態の処理優先度は、業務プログラム実行制御部０１５３が作業の実行要求を行う際の各作業の優先順位を示すものである。なお前記滞留状態の判定では、ある作業が複数の副作業からなり、それらの副作業の内で予め定められた閾値以上の副作業が未実行である場合にその作業を滞留作業として特定する処理も含まれるものとする。
【００３４】
図２は本実施形態のプロセス定義０１４１の定義イメージを示す図である。本実施形態において事前定義されたプロセス定義０１４１は補助記憶装置０１６７内に複数格納出来る。
【００３５】
プロセス定義０１４１は、作業定義０２２０と、複数の作業定義０２２０をアロー０２１０で連結した有向グラフとして表現される。有向グラフの開始点、終了点、分岐点、合流点は制御ノードと呼ぶ有向グラフ上の特殊なノードを用いて表現する。
【００３６】
図２中の０２０１〜０２０４は制御ノードであり、それぞれ開始ノード０２０１、終了ノード０２０４、分岐ノード０２０２、合流ノード０２０３である。有向グラフは開始ノード０２０１で始まり終了ノード０２０４で終了する。
【００３７】
次にプロセス定義０１４１の詳細及び補助記憶装置０１６７への格納例を図３で示す。
【００３８】
図３は本実施形態のプロセス定義０１４１の一例を示す図である。図３で示す様に、プロセス定義０１４１内の制御ノード０２０１〜０２０４に関する定義情報は、制御ノード定義情報テーブル０３１１内に格納される。また、作業定義０２２０に関する定義情報は、作業定義情報テーブル０４１１内に格納される。更に、アロー０２１０に関する定義情報は、アロー定義情報テーブル０５１１内に格納される。何れのテーブルも複数のプロセス定義０１４１に関する情報を格納する為、どのプロセス定義０１４１に属する情報かを一意に特定するプロセス定義名を第１カラムに持つ（図中のカラム、０３０１、０４０１、０５０１）。以下、各テーブル毎にカラムの詳細を説明する。
【００３９】
制御ノード定義情報テーブル０３１１において、制御ノード名０３０２は制御ノード０２０１〜０２０４を特定する為の名称である。ノード種別０３０３は、制御ノードの種類を表し、「開始」、「終了」、「分岐」、「合流」の何れかの値をとる。
【００４０】
作業定義情報テーブル０４１１において、作業定義名０４０２は、プロセス定義０１４１における作業定義０２２０を一意に特定する為の名称である。作業種別０４０３は、「作業者実行」、「自動実行」の何れかの値をとり、作業定義に対する業務処理を、作業者がクライアント業務プログラム０１０３を直接操作することによって実行するか（「作業者実行」）、ワークフロー実行制御エンジン０１０１が自動実行業務プログラム０１０２に対して処理要求を送信することにより人手を介さず処理するか（「自動実行」）を設定する。
【００４１】
作業情報０４０４は、作業種別０４０３が「作業者実行」の場合に、作業を処理すべき作業者を特定する為の作業者名を指定し、作業種別０４０３が「自動実行」の場合に、作業を処理すべき自動実行業務プログラム０１０２を特定する為の自動実行業務プログラム名を指定する。
【００４２】
遷移先関連度０４０５は、「依存」、「独立」の何れかの値をとり、該作業定義の処理優先度が遷移先の作業の状態に応じて影響を受けるか（「依存」）、処理優先度に影響を受けないか（「独立」）、を設定する。
【００４３】
優先度０４０６は、作業定義の処理の優先順位を表し、「高」、「中」、「低」の何れかの値をとる。滞留閾値０４０７は、作業定義の滞留状態を判定する為の情報である。作業定義の未実行作業数が前記滞留閾値０４０７を超えた場合に、ワークフロー実行制御エンジン０１０１は、該作業定義を滞留状態と判定する。
【００４４】
アロー定義情報テーブル０５１１において、遷移元０５０２、遷移先０５０３は、プロセス定義０１４１におけるアロー０２１０の接続元及び接続先となる作業定義０２２０若しくは制御ノード０２０１〜０２０４を設定する。
【００４５】
ワークフロー実行状態情報０１４２は、案件単位での作業の実行状態を表し、補助記憶装置０１６７内に格納される。ワークフロー実行状態情報０１４２の詳細及び補助記憶装置０１６７への格納形式を図４にて示す。
【００４６】
図４は本実施形態のワークフロー実行状態テーブルの一例を示す図である。図４に示すワークフロー実行状態テーブル０６１１の各レコードは、案件内の各作業の状態を保持している。
【００４７】
案件名０６０１は、各案件を一意に特定する為の名称である。プロセス定義名０６０２は、案件の雛型となるプロセス定義０１４１を示す。作業定義名０６０３は、作業の雛型となる作業定義０２２０を示す。作業情報０６０４は、作業種別が「作業者実行」の場合、作業を実行すべき作業者名をとり、作業種別が「自動実行」の場合、作業を処理する自動実行業務プログラム０１０２を特定する為の自動実行業務プログラム名をとる。
【００４８】
状態０６０５は、作業の状態で、「Ｉｎｉｔｉａｌ」、「Ｒｅａｄｙ」、「Ｃｏｍｐｌｅｔｅｄ」の何れかの値をとる。「Ｉｎｉｔｉａｌ」状態は、作業の初期状態を表し、「Ｒｅａｄｙ」は作業に対する業務処理の開始可能状態を表し、更に、「Ｃｏｍｐｌｅｔｅｄ」は作業に対する業務処理の完了を表す。
【００４９】
作業者負荷情報０１４３は、各作業者及び各自動実行業務プログラム０１０２に割り当てられた「Ｒｅａｄｙ」状態の作業数を管理する為の情報である。作業者負荷情報０１４３の詳細及び補助記憶装置０１６７への格納形式を図５にて示す。
【００５０】
図５は本実施形態の作業者負荷情報テーブルの一例を示す図である。図５に示す作業者負荷情報テーブル０７１１の各レコードは、事前登録された作業者若しくは自動実行業務プログラム０１０２毎の「Ｒｅａｄｙ」状態の作業数を表す。
【００５１】
作業情報０７０１は、作業者の名前若しくは自動実行業務プログラム０１０２の名前をとる。未実行作業数０７０２は、作業情報０７０１で示された作業者若しくは自動実行業務プログラム０１０２に現在割り当てられている「Ｒｅａｄｙ」状態の作業数をとる。
【００５２】
有効フラグ０７０３は、作業者若しくは自動実行業務プログラム０１０２が利用可能かを示し、利用可能な場合は「Ｙｅｓ」をとり、利用不可能な場合は「Ｎｏ」をとる。例えば、作業者不在時や自動実行業務プログラム０１０２内での障害発生時等では、有効フラグ０７０３は「Ｎｏ」をとる。
【００５３】
滞留閾値０７０４は、作業者または自動実行業務プログラムの滞留状態を判定する為の情報である。この滞留閾値０７０４を使用することで、滞留状態を判断する。判断手法としては、例えば、作業情報０７０１で示される作業者若しくは自動実行業務プログラムの未実行作業数０７０２が該閾値を超えた場合に、該作業者若しくは該自動実行業務プログラムを滞留状態と判定する。
【００５４】
閑散閾値０７０５は、作業者または自動実行業務プログラムの閑散状態を判定する為の情報である。この閑散閾値０７０５を使用することで、閑散状態を判定する。判定手法としては、例えば、作業情報０７０１で示される作業者若しくは自動実行業務プログラムの未実行作業数０７０２が該閾値を下回った場合に、該作業者若しくは該自動実行業務プログラムを閑散状態と判定する。
【００５５】
業務プログラム実行要求管理情報０１４４は、自動実行業務プログラム０１０２への起動要求を管理する。作業種別が「自動実行」である作業定義の状態が「Ｒｅａｄｙ」となったときに、ワークフロー実行制御エンジン０１０１は、自動実行業務プログラム０１０２への起動要求を業務プログラム実行要求管理情報０１４４に登録する。図６に、自動実行業務プログラム０１０２への起動要求の補助記憶装置０１６７への格納形式を示す。
【００５６】
図６は本実施形態の業務プログラム実行要求管理テーブルの一例を示す図である。図６に示す様に該起動要求は、業務プログラム実行要求管理テーブル０８１１内に、起動要求毎に１レコードずつ格納される。
【００５７】
プロセス定義名０８０１、作業定義名０８０２、及び案件名０８０３は、実行要求の発生元である作業を一意に特定するものである。作業情報０８０４は、該実行要求に対する業務処理を行う自動実行業務プログラム０１０２を特定する為の名称であり、作業定義情報テーブル０４１１の作業情報０４０４カラムから取得される。発生日時０８０５は、実行要求の発生した日時である。
【００５８】
次に、ワークフロー実行制御エンジン０１０１の動作について説明する。図１に示す様にワークフロー実行制御エンジン０１０１は、クライアント要求処理部０１５１、ワークフロー実行状態制御部０１５２、業務プログラム実行制御部０１５３、優先度制御部０１５４からなる。なお、以降の説明では、作業定義から生成された作業を作業インスタンスと呼ぶことにする。
【００５９】
クライアント要求処理部０１５１は、クライアント業務プログラム０１０３から送信されたコマンドを受け付ける。クライアント要求処理部０１５１は、作業一覧取得コマンド「ＧｅｔＷｏｒｋＬｉｓｔ」と、作業完了通知コマンド「ＣｏｍｐｌｅｔｅＷｏｒｋ」と、案件開始コマンド「ＳｔａｒｔＰｒｏｃｅｓｓ」と、作業者不在通知コマンド「ＳｔｏｐＷｏｒｋｅｒ」と、作業者復帰通知コマンド「ＲｅｓｔａｒｔＷｏｒｋｅｒ」をクライアント業務プログラム０１０３より受け付ける。
【００６０】
「ＧｅｔＷｏｒｋＬｉｓｔ」は、作業者名を受け取り、該作業者に割り当てられた作業インスタンス一覧を返すコマンドである。「ＣｏｍｐｌｅｔｅＷｏｒｋ」は、プロセス定義名と、案件名と、作業定義名とを受け取り、指定した作業インスタンスの完了を通知するコマンドである。「ＳｔａｒｔＰｒｏｃｅｓｓ」は、プロセス定義名と案件名を受け取り、指定したプロセス定義の案件を指定した案件名で投入、開始するコマンドである。「ＳｔｏｐＷｏｒｋｅｒ」は、作業者名を受け取り、該作業者が不在状態であることを通知するコマンドである。「ＲｅｓｔａｒｔＷｏｒｋｅｒ」は、作業者名若しくは自動実行業務プログラム名を受け取り、該作業者が復帰したこと、若しくは、該自動実行業務プログラムが障害から回復したことを通知するコマンドである。
【００６１】
以下、クライアント要求処理部０１５１が、前記コマンドを受け付けた時の処理概要を示す。
【００６２】
「ＧｅｔＷｏｒｋＬｉｓｔ」では、次に示す処理手順で、指定された作業者に割り当てられた作業インスタンス一覧を返す。
【００６３】
まず、優先度制御部０１５４に対して、「作業優先度一覧取得」コマンドを送信することで、ワークフロー実行制御エンジン０１０１内で管理する作業インスタンス一覧を取得する。この時、前記一覧内の各作業インスタンスは、プロセス定義名と、案件名と、作業定義名とで一意に特定され、属性情報として該作業インスタンスの処理優先度を保持する。
【００６４】
次に、前記作業インスタンス一覧内から、「ＧｅｔＷｏｒｋＬｉｓｔ」コマンドにて指定された作業者に割り当てられた作業インスタンスを取得する。該作業者に割り当てられた作業インスタンスは、作業情報０６０４をキーにして、作業情報０６０４に前記作業者名を持つ作業インスタンスをワークフロー実行状態テーブル０６１１から検索することにより取得する。
【００６５】
「ＣｏｍｐｌｅｔｅＷｏｒｋ」では、プロセス定義名と案件名と作業定義名とを受け取り、ワークフロー実行状態制御部０１５２に対して、「作業完了要求」コマンドを送信する。ワークフロー実行状態制御部０１５２は「作業完了要求」コマンドを受け付けると、該プロセス定義名と、該案件名と、該作業定義名とで示される作業インスタンスの完了処理を行い、新たに開始可能な作業インスタンスの状態を「Ｒｅａｄｙ」にする。
【００６６】
「ＳｔａｒｔＰｒｏｃｅｓｓ」では、プロセス定義名と案件名とプロセス定義名とを受け取り、ワークフロー実行状態制御部０１５２に対して、「案件開始要求」コマンドを送信する。ワークフロー実行状態制御部０１５２は、「案件開始要求」コマンドを受け付けると、該プロセス定義名と及び該案件名で示される案件の開始処理を行う。また、新たに開始可能な作業インスタンスの状態を「Ｒｅａｄｙ」にする。
【００６７】
「ＳｔｏｐＷｏｒｋｅｒ」では、作業者名を受け取り、優先度制御部０１５４に対して、「作業者不在通知」コマンドを送信する。優先度制御部０１５４は、「作業者不在通知」コマンドを受け付けると、作業者負荷情報テーブル０７１１内で保持する前記作業者に関する情報を更新する。
【００６８】
「ＲｅｓｔａｒｔＷｏｒｋｅｒ」では、作業者名若しくは自動実行業務プログラム名を受け取り、優先度制御部０１５４に対して、「作業者復帰通知」コマンドを送信する。優先度制御部０１５４は、「作業者復帰通知」コマンドを受け取り、作業者負荷情報テーブル０７１１内で保持する前記作業者若しくは前記自動実行業務プログラムに関する情報を更新する。
【００６９】
ワークフロー実行状態制御部０１５２は、クライアント要求処理部０１５１及び業務プログラム実行制御部０１５３より送信されたコマンドを受け付ける。そして、受け付けられたコマンドにより、プロセス定義０１４１に従って、ワークフロー実行状態情報０１４２を変更する。
【００７０】
ワークフロー実行状態制御部０１５２は、新たな案件の開始処理を行う「案件開始要求」コマンドと、作業インスタンスの完了処理を行う「作業完了要求」コマンドを受け付ける。
【００７１】
「案件開始要求」コマンドは、クライアント要求処理部０１５１より送信される。「案件開始要求」コマンドは、プロセス定義名と案件名を受け取り、指定したプロセス定義を指定した案件名で開始し、更に、案件開始時に開始可能な作業インスタンスを特定し、該作業インスタンスの状態を「Ｒｅａｄｙ」とするコマンドである。
【００７２】
「作業完了要求」コマンドは、クライアント要求処理部０１５１及び業務プログラム実行制御部０１５３より送信される。「作業完了要求」コマンドは、プロセス定義名と、案件名と、作業定義名とを受け取り、指定した作業インスタンスの状態を「Ｃｏｍｐｌｅｔｅｄ」とし、新たに開始可能な作業インスタンスを特定し、該作業インスタンスの状態を「Ｒｅａｄｙ」とするコマンドである。
【００７３】
以下、ワークフロー実行状態制御部０１５２が前記コマンドを受け付けた時の処理について説明する。
【００７４】
「案件開始要求」コマンド受付け時には、指定されたプロセス定義０１４１において定義された各作業定義０２２０の情報を、作業定義情報テーブル０４１１からプロセス定義名をキーに検索し、各作業定義０２２０に対応する作業のレコードをワークフロー実行状態テーブル０６１１へ挿入する。この時、各作業の状態０６０５は「Ｉｎｉｔｉａｌ」状態としておく。
【００７５】
また、案件名０６０１及びプロセス定義名０６０２の各カラムには、コマンド受付け時に指定された案件名とプロセス定義名を設定する。また、作業定義名０６０３及び作業情報０６０４の各カラムには該レコードに対応する作業定義０２２０の属性情報である作業定義名０４０２及び作業情報０４０４を設定する。
【００７６】
更に、プロセス定義０１４１の有向グラフに従って開始ノード０２０１から辿って最初に実行すべき作業定義０２２０を決定し、該作業定義に対応する作業インスタンスの状態０６０５を「Ｒｅａｄｙ」状態とし、優先度制御部０１５４へ「作業開始通知」コマンドを送信する。更に、該作業定義０２２０の作業種別０４０３が「自動実行」の場合、業務プログラム実行制御部０１５３へ「業務プログラム実行」コマンドを送信する。
【００７７】
「作業完了要求」コマンド受付け時には、指定された案件の指定された作業定義に対する作業インスタンスの状態を「Ｃｏｍｐｌｅｔｅｄ」状態にし、プロセス定義０１４１の有向グラフに従って該作業定義の次に実行すべき作業定義を決定する。そして、次に実行すべき作業定義に対する作業インスタンスの状態０６０５を「Ｒｅａｄｙ」状態とする。更に、「Ｃｏｍｐｌｅｔｅｄ」状態に更新した作業インスタンスのプロセス定義名と、案件名と、作業定義名を指定して、優先度制御部０１５４に「作業完了通知」コマンドを送信する。
【００７８】
また、「Ｒｅａｄｙ」状態に更新した作業インスタンスのプロセス定義名と、案件名と、作業定義名を指定して、優先度制御部０１５４に「作業開始通知」コマンドを送信する。この時、「Ｒｅａｄｙ」状態に更新した作業インスタンスの作業種別０４０３が「自動実行」の場合、業務プログラム実行制御部０１５３へ「業務プログラム実行」コマンドを送信する。
【００７９】
業務プログラム実行制御部０１５３は、ワークフロー実行状態制御部０１５２より送信された「業務プログラム実行」コマンドを受け付け、自動実行業務プログラム０１０２へ起動要求を送信する。
【００８０】
業務プログラム実行制御部０１５３は、「起動要求受付け部」と「業務プログラム起動部」とからなる。「起動要求受付け部」は、ワークフロー実行状態制御部０１５２から「業務プログラム実行」コマンドを受け付け、受け取った実行要求を業務プログラム実行要求管理情報０１４４へ格納する。「業務プログラム起動部」は、一定間隔毎に、業務プログラム実行要求管理情報０１４４から起動要求を各作業インスタンスの処理優先度順に取り出し、自動実行業務プログラム０１０２へ実行要求を送信する。更に、「業務プログラム起動部」は、前記実行要求に対する結果を取得する。
【００８１】
次に、業務プログラム実行制御部０１５３の「起動要求受付け部」の処理手順を示す。
【００８２】
「起動要求受付け部」が、「業務プログラム実行」コマンドをワークフロー実行状態制御部０１５２から受け付けた時の動作は以下の通りである。
【００８３】
「起動要求受付け部」は、ワークフロー実行状態制御部０１５２より「業務プログラム実行」コマンドを受け付ける。この際、プロセス定義名、作業定義名、案件名、及び自動実行業務プログラム名を、ワークフロー実行状態制御部０１５２より受け取る。次に、現在の日時を取得する。日時の取得は、例えば、オペレーティングシステムの提供するシステムコールを呼び出すことで取得することができる。前記処理にて取得した現在日時と、ワークフロー実行状態制御部０１５２より受け取った実行要求とを、業務プログラム実行要求管理テーブル０８１１へ挿入する。
【００８４】
次に、業務プログラム実行制御部０１５３の「業務プログラム起動部」の処理手順を示す。
【００８５】
図７は本実施形態の「業務プログラム起動部」が、自動実行業務プログラム０１０２へ業務処理の実行要求を送信する際の処理手順を示すフローチャートである。図７に示す処理手順は、「業務プログラム起動部」により、繰り返し実行される。この繰り返しの実行は、一定時間毎に行っても良い。
【００８６】
ステップ０９０１では、優先度制御部０１５４に対して、「作業優先度一覧取得」コマンドを送信することで、ワークフロー実行制御エンジン０１０１内で管理する作業インスタンス一覧を取得する。この時、前記一覧内の各作業インスタンスは、プロセス定義名、案件名及び作業定義名とで特定され、属性情報として該作業インスタンスの処理優先度を保持する。
【００８７】
ステップ０９０２では、ステップ０９０１の取得結果から、優先度に「高」が設定された作業インスタンスに関する起動要求の内、発生日時が最も古い起動要求を１つ取得する。起動要求の取得処理は、業務プログラム実行要求管理テーブル０８１１からプロセス定義名０８０１と作業定義名０８０２と案件名０８０３とをキーに取得する。
【００８８】
ステップ０９０３では、ステップ０９０２の検索結果が空ならば、ステップ０９０４へ進む。それ以外ならば、ステップ０９０８へ進む。
【００８９】
ステップ０９０４では、ステップ０９０１の取得結果から、優先度に「中」が設定された作業インスタンスに関する起動要求の内、発生日時が最も古い起動要求を１つ取得する。起動要求の取得処理は、業務プログラム実行要求管理テーブル０８１１からプロセス定義名０８０１と作業定義名０８０２と案件名０８０３とをキーに取得する。
【００９０】
ステップ０９０５では、ステップ０９０４の検索結果が空ならば、ステップ０９０６へ進む。それ以外ならば、ステップ０９０８へ進む。
【００９１】
ステップ０９０６では、ステップ０９０１の取得結果から、優先度に「低」が設定された作業インスタンスに関する起動要求の内、発生日時が最も古い起動要求を１つ取得する。起動要求の取得処理は、業務プログラム実行要求管理テーブル０８１１からプロセス定義名０８０１と作業定義名０８０２と案件名０８０３とをキーに取得する。
【００９２】
ステップ０９０７では、ステップ０９０６の検索結果が空ならば、終了する。それ以外ならば、ステップ０９０８へ進む。
【００９３】
ステップ０９０８では、ステップ０９０２、ステップ０９０４若しくは、ステップ０９０６にて取得した起動処理要求を自動実行業務プログラム０１０２に送信し、自動実行業務プログラム０１０２からの返信を受信する。
【００９４】
ステップ０９０９では、ステップ０９０８にて取得した自動実行業務プログラム０１０２からの返信が、完了通知の場合は、ステップ０９１１へ進む。障害発生通知の場合は、ステップ０９１０へ進む。
【００９５】
ステップ０９１０では、優先度制御部０１５４に対して、障害発生通知を送信した自動実行業務プログラム名を指定して、「作業者不在通知」コマンドを送信し、ステップ０９０１へ戻る。自動実行業務プログラム名は、業務プログラム実行要求管理テーブル０８１１の作業情報０８０４より取得することができる。
【００９６】
ステップ０９１１では、ワークフロー実行状態制御部０１５２に対して、処理を行った作業インスタンスを指定して、「作業完了通知」コマンドを送信し、ステップ０９０１へ戻る。
【００９７】
優先度制御部０１５４は、「作業者不在通知」コマンドと、「作業者復帰通知」コマンドと、「作業開始通知」コマンドと、「作業完了通知」コマンドと、「作業優先度一覧取得」コマンドを受け付ける。
【００９８】
「作業者不在通知」コマンドは、クライアント要求処理部０１５１及び業務プログラム実行制御部０１５３より呼び出される。「作業者不在通知」コマンドは、不在となった作業者名若しくは障害が発生した自動実行業務プログラム名を受け取り、作業者負荷情報０１４３を更新する。
【００９９】
「作業者復帰通知」コマンドは、クライアント要求処理部０１５１より呼び出される。「作業者復帰通知」コマンドは、復帰した作業者名若しくは障害が回復した自動実行業務プログラム名を受け取り、作業者負荷情報０１４３を更新する。
【０１００】
「作業開始通知」コマンドは、ワークフロー実行状態制御部０１５２より呼び出される。「作業開始通知」コマンドは、「Ｒｅａｄｙ」状態となった作業インスタンスのプロセス定義名と、作業定義名を受け取り、該作業インスタンスに割り当てられた作業者若しくは自動実行業務プログラムを特定し、作業者負荷情報０１４３を更新する。
【０１０１】
「作業完了通知」コマンドは、ワークフロー実行状態制御部０１５２より呼び出される。「作業完了通知」コマンドは、「Ｃｏｍｐｌｅｔｅｄ」状態となった作業インスタンスのプロセス定義名と、作業定義名を受け取り、該作業インスタンスに割り当てられた作業者若しくは自動実行業務プログラムを特定し、作業者負荷情報０１４３を更新する。
【０１０２】
「作業優先度一覧取得」コマンドは、クライアント要求処理部０１５１及び業務プログラム実行制御部０１５３より呼び出され、ワークフロー実行状態テーブル０６１１にて管理している作業インスタンスの一覧を返す。このとき、「作業優先度一覧取得」コマンドでは、作業インスタンス一覧内の各作業インスタンスに対して処理優先度を適切に決定し、決定した処理優先度を各作業インスタンスの属性情報として設定する。例えば、滞留作業により影響を受ける作業の処理優先度を「低」に変更する。
【０１０３】
以下、各コマンドの処理の詳細について説明する。
優先度制御部０１５４が「作業者不在通知」コマンドを受け付けた時の処理の詳細は次の通りである。「作業者不在通知」コマンドでは、作業者名若しくは自動実行業務プログラム名を受け取り、該作業者名若しくは該自動実行業務プログラム名を作業情報０７０１カラムに持つレコードを作業者負荷情報テーブル０７１１から取得し、該レコードの有効フラグ０７０３を「Ｎｏ」に変更する。
【０１０４】
優先度制御部０１５４が「作業者復帰通知」コマンドを受け付けた時の処理の詳細は次の通りである。「作業者復帰通知」コマンドでは、作業者名若しくは自動実行業務プログラム名を受け取り、該作業者名若しくは該自動実行業務プログラム名を作業情報０７０１カラムに持つレコードを作業者負荷情報テーブル０７１１から取得し、該レコードの有効フラグ０７０３を「Ｙｅｓ」に変更する。
【０１０５】
優先度制御部０１５４が「作業開始通知」コマンドを受け付けた時の処理の詳細は以下の通りである。
【０１０６】
まず、コマンドにて指定されたプロセス定義名及び作業定義名をキーに作業定義情報テーブル０４１１から作業定義を検索し、作業者名若しくは自動実行業務プログラム名を取得する。即ち、該プロセス定義名と該作業定義名とを、プロセス定義名０４０１及び作業定義名０４０２に持つ、作業定義の作業情報０４０４を取得する。次に、前記処理において取得した作業者名若しくは自動実行業務プログラム名を作業情報０７０１カラムに持つレコードを作業者負荷情報テーブル０７１１から検索する。更に、該レコードの未実行作業数０７０２を、「１」増加させる。
【０１０７】
「作業完了通知」コマンドでは、「Ｃｏｍｐｌｅｔｅｄ」状態となった作業インスタンスのプロセス定義名及び作業定義名を受け取る。優先度制御部０１５４が「作業完了通知」コマンドを受け付けた時の処理の詳細は次の通りである。まず、作業定義情報テーブル０４１１より、「作業完了通知」コマンドにて指定されたプロセス定義名と作業定義名を、プロセス定義名０４０１及び作業定義名０４０２に持つ、作業定義の作業情報０４０４を取得する。更に、前記処理において取得した作業情報を作業情報０７０１カラムに持つレコードを作業者負荷情報テーブル０７１１から検索し、該レコードの未実行作業数０７０２の値を「１」減少させる。
【０１０８】
優先度制御部０１５４が「作業優先度一覧取得」コマンドを受け付けた時の処理概要は次の通りである。
【０１０９】
「作業優先度一覧取得」では、まず、滞留作業者若しくは滞留自動実行業務プログラムを特定する（ステップＡ）。次に、滞留作業を特定する（ステップＢ）。更に、該滞留作業により業務の進捗に影響を受ける作業範囲を特定する（ステップＣ）。その後、ワークフロー実行状態テーブル０６１１にて管理している作業インスタンスの一覧を取得し、各作業インスタンスの処理優先度を適切に決定する（ステップＤ）。最後に、作業インスタンスの一覧をコマンド要求元に返す。
【０１１０】
以下では、各処理に関して説明する。
まず、滞留作業者、滞留自動実行業務プログラムの特定処理（ステップＡ）について、何通りかの方法を説明する。これらの各方法は、作業者の不在通知、業務プログラムの障害発生、事前定義された閾値による作業者または業務プログラムの滞留状態の判定に対応するものである。
【０１１１】
始めに、作業者の不在通知及び業務プログラムの障害発生に対する処理内容を説明する。この処理では、作業に対する作業者の不在通知を受けた場合に該作業者を滞留状態として判定する場合と、自動実行業務プログラムに障害が発生した場合に該自動実行業務プログラムを滞留状態として判定する場合の両方に対応する。前記処理では、作業者負荷情報テーブル０７１１から、有効フラグ０７０３に「Ｎｏ」が指定された作業情報０７０１を検索することにより、滞留状態の作業者または自動実行業務プログラムを特定する。
【０１１２】
次に、事前定義された閾値による作業者または業務プログラムの滞留状態の判定に対する処理内容を説明する。この処理では、作業者または自動実行業務プログラムに割り当てられた作業における滞留数の累計が閾値を上回る場合に、該作業者または該自動実行業務プログラムを滞留状態として判定する。前記処理では、作業者負荷情報テーブル０７１１から、未実行作業数０７０２が滞留閾値０７０４を超える作業情報０７０１を取得することにより、滞留状態の作業者または自動実行業務プログラム名を特定することができる。
【０１１３】
次に、滞留作業の特定処理（ステップＢ）について、何通りかの方法を説明する。これらの各方法は、事前定義された閾値による作業の滞留状態の判定、滞留状態の作業者または自動実行業務プログラムに割り当てられていた作業を滞留作業とする判定に対応している。
【０１１４】
始めに、事前定義された閾値による作業の滞留状態の判定に対する処理内容を説明する。この処理では、各作業における滞留数が閾値を上回っている場合に該作業を滞留状態と判定する。この処理の詳細な処理手順は、以下の通りである。まず、ワークフロー実行状態テーブル０６１１を検索し、状態０６０５が「Ｒｅａｄｙ」となっているレコード数を作業定義毎に集計する。これにより、「Ｒｅａｄｙ」状態の作業数を作業定義毎に取得できる。次に、取得した「Ｒｅａｄｙ」状態の作業数が作業定義に設定された閾値を超える作業定義名を特定し、特定した作業定義を滞留作業とする。各作業定義に設定された閾値は、作業定義情報テーブル０４１１からプロセス定義名０４０１と作業定義名０４０２をキーに、滞留閾値０４０７を検索することにより取得する。
【０１１５】
次に、滞留状態の作業者または自動実行業務プログラムに割り当てられた作業を滞留作業と判定する処理内容について説明する。この処理では、ステップＡにて取得した滞留状態の作業者または自動実行業務プログラムを作業情報０４０４にとる作業定義を作業定義情報テーブル０４１１から取得することにより、滞留作業を特定することができる。
【０１１６】
次に、前記処理により特定した滞留作業により、作業の進捗に影響を受ける作業範囲を特定する処理（ステップＣ）について説明する。
【０１１７】
優先度制御部０１５４では、プロセス定義０１４１を滞留作業から逆に辿ることにより、滞留作業の影響範囲を決定する。前記処理の詳細を図８に示す。プロセス定義を逆に辿るとは、プロセス定義で定義される処理順序とは逆の順序で辿ることを示す。
【０１１８】
図８は本実施形態の滞留作業の影響範囲を特定する処理の処理手順を示すフローチャートである。ステップ１００１では、滞留作業の遷移元にある作業定義若しくは制御ノードを全て取得する。滞留作業の遷移元は、滞留作業の作業定義名を遷移先０５０３に持つレコードの遷移元０５０２を、アロー定義情報テーブル０５１１から検索することで取得する。
【０１１９】
ステップ１００２では、ステップ１００１若しくはステップ１００６の取得結果が存在しない場合は、終了する。それ以外は、ステップ１００３へ進む。
【０１２０】
ステップ１００３では、ステップ１００１若しくはステップ１００６にて取得した作業定義及び制御ノードから、制御ノードを抽出し滞留作業の影響範囲内に含める。制御ノードの抽出は、制御ノード定義情報テーブル０３１１から制御ノード名０３０２の一覧を取得し、該一覧を参照することにより行う。
【０１２１】
ステップ１００４では、ステップ１００１若しくはステップ１００６にて取得した作業定義及び制御ノードから、作業定義を抽出する。作業定義の抽出は、作業定義情報テーブル０４１１から作業定義名０４０２の一覧を取得し、該一覧を参照することにより行う。
【０１２２】
ステップ１００５では、ステップ１００４にて取得した作業定義一覧から、遷移先関連度が「依存」である作業定義を取得する。また、前記処理にて取得した作業定義を、滞留作業の影響範囲内に含める。前記遷移先関連度は、作業定義情報テーブル０４１１から、作業定義名をキーにして、遷移先関連度０４０５を検索することにより取得する。
【０１２３】
ステップ１００６では、ステップ１００３及びステップ１００５にて影響範囲内に含めた制御ノード及び作業定義の遷移元を検索する。遷移元は、アロー定義情報テーブル０５１１から、前記作業定義名若しくは前記制御ノード名を遷移先０５０３に持つ、遷移元０５０２を検索することで取得する。
【０１２４】
前記処理のステップ１００５では、遷移先関連度に「依存」が設定された作業を滞留作業の影響範囲に登録する。そして更に、該作業の遷移元に関して影響範囲に含まれるかどうかの判定を行う。この為、作業の遷移先関連度に「独立」を設定することで、該作業の遷移先で滞留作業が発生した場合に、前記滞留作業が与える影響範囲に該作業と該作業の遷移元を含めない様に制御することができる。また、前記処理では、作業定義毎に遷移先との関連を定義することにより、滞留作業の影響範囲を指定したが、作業定義毎に、影響範囲を直接定義しても良い。影響範囲の補助記憶装置０１６７への格納内容の一例を図９に示す。
【０１２５】
図９は本実施形態の影響範囲定義テーブルの一例を示す図である。図９に示す影響範囲定義テーブル１１１１では、プロセス定義名１１０１及び作業定義名１１０２で示す作業定義が滞留状態となった時に業務の進捗に影響を与える作業定義を影響作業定義名１１０３に示す。
【０１２６】
また、前記処理では、「分岐ノード」の遷移元も検索することで、滞留作業に遷移可能な作業を特定している。このとき、「分岐ノード」の全ての遷移先が滞留作業の影響範囲に含まれるときに限り「分岐ノード」の遷移元を検索することにより、滞留作業に確実に遷移する作業を特定することができる。
【０１２７】
例えば、ステップ１００３の処理を以下の様に変更することにより、前記処理を実現する。まず、ステップ１００１若しくはステップ１００６にて取得した作業定義及び制御ノードから、制御ノードを抽出する。次に、前記処理にて取得した制御ノード一覧から、ノード種別が「分岐ノード」以外の制御ノードを取得し、該制御ノードを滞留作業の影響範囲内に含める。ノード種別は、制御ノード定義情報テーブル０３１１から制御ノード名０３０２をキーに、ノード種別０３０３を検索することで確かめる。また、ステップ１００１若しくはステップ１００６にて取得した一覧から、ノード種別が「分岐ノード」である制御ノードを取得する。更に、前記処理にて取得した「分岐ノード」の遷移先を調べ、遷移先が影響範囲内に含まれる場合に、該制御ノードを滞留作業の影響範囲内に含める。制御ノードの遷移先は、アロー定義情報テーブル０５１１から遷移元０５０２をキーに、遷移先０５０３を検索することで取得する。
【０１２８】
次に、優先度制御部０１５４が、各作業インスタンスの処理優先度を適切に決定する処理（ステップＣ）について説明する。この処理では、前記ステップＢにて特定した滞留作業の影響範囲に含まれる各作業インスタンスの処理優先度を下げて、作業インスタンス一覧を生成する。以下、この処理について説明する。
【０１２９】
まず、ワークフロー実行状態テーブル０６１１より、状態０６０５カラムをキーにして、状態０６０５に「Ｒｅａｄｙ」を持つ作業インスタンスを取得する。作業インスタンスは、プロセス定義名と、案件名と、作業定義名とで一意に定まり、各値は案件名０６０１、プロセス定義名０６０２及び作業定義名０６０３から取得可能である。次に、各作業インスタンスに対して処理優先度を設定する。前記影響範囲に含まれる作業インスタンスは、該作業の処理優先度を「低」とする。また、前記影響範囲に含まれない作業インスタンスは、作業定義情報テーブル０４１１から、プロセス定義名０４０１と作業定義名０４０２をキーにして該作業に対応する優先度０４０６を取得する。
【０１３０】
最後に、優先度制御部０１５４は、前記処理にて取得した作業インスタンスの一覧を「作業優先度一覧取得」コマンドの呼び出し元に返す。
【０１３１】
前記処理は、滞留状態の作業の影響範囲に含まれる各作業インスタンスの処理優先度を下げる処理に関して説明した。なお、以下の処理を行うことにより、前記影響範囲に含まれる各案件の優先度を下げることも実現可能である。各案件の優先度を下げる処理に関して、以下で説明する。
【０１３２】
まず、ワークフロー実行状態テーブル０６１１より、前記影響範囲に含まれる作業を作業定義名０６０３に持ち、状態０６０５に「Ｒｅａｄｙ」を持つ、案件名０６０１の一覧を取得する。更に、ワークフロー実行状態テーブル０６１１より、状態０６０５カラムをキーにして、状態０６０５に「Ｒｅａｄｙ」を持つ作業インスタンスを取得する。作業インスタンスは、プロセス定義名と、案件名と、作業定義名とで一意に定まり、各値は案件名０６０１及びプロセス定義名０６０２及び作業定義名０６０３から取得可能である。
【０１３３】
次に、各作業インスタンスに関して処理優先度を設定する。作業インスタンスの案件名が先に取得した案件名の一覧に含まれる場合は、優先度を「低」とし、含まれない場合は、作業定義情報テーブル０４１１から、プロセス定義名０４０１と作業定義名０４０２をキーにして、該作業インスタンスに対応する優先度０４０６を取得する。最後に、前記処理にて取得した作業インスタンスの一覧を「作業優先度一覧取得」コマンドの呼び出し元に返す。
【０１３４】
前記処理では、滞留状態に基づいて各作業の処理優先度を決定していたが、「作業優先度一覧取得」時に作業者若しくは自動実行業務プログラムの閑散状態を加味して処理優先度を決定することも可能である。前記処理により、「Ｒｅａｄｙ」状態の作業が割り当てられていない閑散状態の作業者または自動実行業務プログラムを有効活用する様に処理優先度を変更することが可能となる。
【０１３５】
以下、前記処理の概要について説明する。
「作業優先度一覧取得」では、滞留状態に基づいて各作業の処理優先度を決定した時と同様に、まず前記ステップＡ〜ステップＤを実行する。次に、閑散状態の作業者または自動実行業務プログラムを判定する（ステップＥ）。更に、閑散状態の前記作業者または自動実行業務プログラムに割り当てられた作業を閑散状態と判定し、閑散状態の作業に遷移可能な作業範囲をフロー定義に基づいて特定する（ステップＦ）。最後に、前記作業範囲に含まれる作業の処理優先度を高くする（ステップＧ）。次に、各ステップの一実現例について説明する。
【０１３６】
閑散状態の作業者または自動実行業務プログラムの判定処理（ステップＥ）は、未実行作業数０７０２が閑散閾値０７０５を下回り、かつ、有効フラグ０７０３が「Ｙｅｓ」である作業情報０７０１を作業者負荷情報テーブル０７１１から取得することで行う。
【０１３７】
次に、処理優先度を変更する作業範囲の特定処理（ステップＦ）について詳細を示す。まず、ステップＥにより取得した閑散状態の作業者または自動実行業務プログラムを、作業情報０４０４に持つ作業定義名０４０２を作業定義情報テーブル０４１１より取得する。次に、前記処理にて取得した作業定義に遷移可能な作業範囲を、プロセス定義を逆に辿ることにより特定する。前記作業範囲を特定する前記処理は、滞留作業により作業の進捗に影響を受ける作業範囲の特定処理（ステップＢ）と同じ処理にて行う。最後に、前記処理にて取得した作業範囲から、滞留作業により影響を受ける作業範囲に含まれる作業を取り除く。
【０１３８】
最後に、優先度制御処理（ステップＧ）では、前記処理にて得られた作業範囲に含まれる作業の優先度を「高」に変更する。
【０１３９】
この様に、滞留作業に影響を受ける案件の優先順位をより低くすることにより、滞留案件の発生を抑止することができる。なお、優先順位を低くすることには、予め設定された自身の優先度より低くすること及び影響を受けない作業の優先度より低くすることが含まれる。
【０１４０】
特に、同一の作業者若しくは自動実行業務プログラムに複数の作業が割り当てられる場合、滞留作業定義の影響を受けない業務を優先的に処理することにより、業務の進捗が滞留作業により影響を受けない作業に、計算機リソースや人的リソースを割り当てることが可能となる。なお滞留作業定義の影響を受けない業務を優先的に処理した後、滞留作業による影響の少ない業務を優先的に処理する様に優先順位を変更することとしても良い。
【０１４１】
図１０は本実施形態のプロセス定義０１４１の第１の定義例を示す図である。
例えば図１０で示す様なプロセス定義「ＰＤ２」、「ＰＤ３」において、作業定義「Ａ」と作業定義「Ｘ」を割り当てられた作業者「Ｅ」は、作業定義「Ａ」及び作業定義「Ｘ」の優先度を元に、処理すべき作業を決定する。
【０１４２】
このとき、作業者「Ｆ」が滞留状態の場合は、作業Ｂは滞留作業となり、作業定義「Ａ」は滞留作業Ｂの影響範囲内に含まれる為、作業定義「Ａ」の優先度は「低」に変更される。これにより、作業者「Ｅ」は、作業定義「Ａ」よりも作業定義「Ｘ」に関する処理を優先して実行し、更なる滞留案件の発生を抑止することができる。また、前記処理により作業者「Ｇ」への作業量が増え、作業定義「Ａ」の優先度を変更することで、作業者「Ｇ」を有効活用することが可能となる。
【０１４３】
図１１は本実施形態のプロセス定義０１４１の第２の定義例を示す図である。図１１で示す様なプロセス定義「ＰＤ４」、「ＰＤ５」の場合では、不在等により作業者「Ｆ」が滞留状態であるとき、作業定義「Ｂ」から作業定義「Ｃ」への遷移が滞り、作業者「Ｇ」の作業量が減少する。
【０１４４】
このとき、滞留作業Ｂの影響範囲内に含まれる作業定義「Ａ」の優先度を「低」に変更することで、作業者「Ｅ」はプロセス定義「ＰＤ５」を優先的に処理する。これにより、作業定義「Ｘ」から作業定義「Ｙ」への遷移が増加し、作業Ｂの滞留による作業者「Ｇ」への作業量の減少を抑制することが可能となる。
【０１４５】
図１２は本実施形態のプロセス定義０１４１の第３の定義例を示す図である。
更に図１２で示す様なプロセス定義「ＰＤ６」、「ＰＤ７」の場合の様に、滞留状態及び閑散状態の作業者が混在する場合においても、閑散状態及び滞留状態に基づいて適切に処理優先度を変更することにより、計算機リソースや人的リソースを適切に配分することができる。
【０１４６】
前記ケースでは、滞留状態の作業者「Ｇ」の影響により、作業定義「Ａ」の処理優先度は「低」に変更される。一方、閑散状態の作業者「Ｈ」により、作業定義「Ｘ」、作業定義「Ｙ」の処理優先度は「高」と変更される。前記優先度制御により、作業者「Ｆ」はプロセス定義「ＰＤ７」を優先的に処理する。これにより、作業者「Ｈ」に作業が割り当てられ、作業者「Ｈ」を有効活用することが可能となる。
【０１４７】
また、前記優先度制御は、ワークフロー管理システムが作業者毎の作業数や自動実行業務プログラムからの障害発生通知に基づいて行う為、システム管理者による運用の手間を軽減することができる。
【０１４８】
なお本実施形態では、滞留作業により影響を受ける作業の処理優先度を「低」としたが、「高」を「中」にする等、前記影響を受ける作業の処理優先度を、その作業に予め設定されている処理優先度や、影響を受けない作業の処理優先度、または予め定められた基準の処理優先度よりも低く変更する処理を実行しても良い。
【０１４９】
また本実施形態では、滞留作業により影響を受ける作業を検知し、検知された作業の処理優先度を変更している。しかし、滞留作業により影響を受けない作業の処理優先度を変更しても良い。例えば、滞留により業務の進捗に影響を受ける作業を検知し、検知された作業以外の作業を特定して、特定された作業の処理優先度を高めても良い。その際、特定された作業の処理優先度を「高」若しくは「中」と設定する等、前記影響を受けない作業の処理優先度を、その作業に予め設定されている処理優先度や、影響を受ける作業の処理優先度、または予め定められた基準の処理優先度よりも高く変更する。なお、影響を受ける作業の検知には、上述した通りの「作業の範囲」を特定する方法を用いても良い。
【０１５０】
更に、処理優先度を低くする処理と高くする処理を併用しても良い。つまり、影響を受ける作業の処理優先度を予め設定されたものより低くし、影響を受けない作業の処理優先度を予め設定されたものより高くしても良く、例えば、影響を受ける作業の処理優先度を「低」に設定し、影響を受けない作業の処理優先度を「高」に設定する処理を行う。なお、この処理で設定される処理優先度は、影響を受けない作業の処理優先度を、影響を受ける作業の処理優先度より高くすれば良い。この為には、各作業の処理優先度をシステム側で把握できるデータを用意しておくものとする。
【０１５１】
以上説明した様に本実施形態のワークフロー管理システムによれば、作業の滞留状態に応じて各作業の処理優先度を変更するので、滞留作業が発生した場合にその滞留作業によって業務の進行に影響を受けない案件に計算機リソースや人的リソースを優先的に配分することが可能である。
【０１５２】
また本実施形態のワークフロー管理システムによれば、事前定義された閾値により滞留状態を判定するので、案件に応じて閾値を変更することにより種々の案件における作業の滞留状態を判定することが可能である。
【０１５３】
また本実施形態のワークフロー管理システムによれば、作業者または業務プログラムの滞留状態により作業の滞留状態を判定するので、個々の作業者または業務プログラムにより滞留した作業を効率良く検出することが可能である。
【図面の簡単な説明】
【０１５４】
【図１】本実施形態のワークフロー管理システムの構成を示す図である。
【図２】本実施形態のプロセス定義０１４１の定義イメージを示す図である。
【図３】本実施形態のプロセス定義０１４１の一例を示す図である。
【図４】本実施形態のワークフロー実行状態テーブルの一例を示す図である。
【図５】本実施形態の作業者負荷情報テーブルの一例を示す図である。
【図６】本実施形態の業務プログラム実行要求管理テーブルの一例を示す図である。
【図７】本実施形態の「業務プログラム起動部」が、自動実行業務プログラム０１０２へ業務処理の実行要求を送信する際の処理手順を示すフローチャートである。
【図８】本実施形態の滞留作業の影響範囲を特定する処理の処理手順を示すフローチャートである。
【図９】本実施形態の影響範囲定義テーブルの一例を示す図である。
【図１０】本実施形態のプロセス定義０１４１の第１の定義例を示す図である。
【図１１】本実施形態のプロセス定義０１４１の第２の定義例を示す図である。
【図１２】本実施形態のプロセス定義０１４１の第３の定義例を示す図である。
【符号の説明】
【０１５５】
０１０１…ワークフロー実行制御エンジン、０１０２…自動実行業務プログラム、０１０３…クライアント業務プログラム、０１１０…コンピュータネットワーク、０１２０…計算機、０１４１…プロセス定義、０１４２…ワークフロー実行状態情報、０１４３…作業者負荷情報、０１４４…業務プログラム実行要求管理情報、０１５１…クライアント要求処理部、０１５２…ワークフロー実行状態制御部、０１５３…業務プログラム実行制御部、０１５４…優先度制御部、０１６１…表示装置、０１６２…キーボード、０１６３…マウス、０１６４…通信装置、０１６５…メモリ、０１６６…ＣＰＵ、０１６７…補助記憶装置、０２０１…開始ノード、０２０２…分岐ノード、０２０３…合流ノード、０２０４…終了ノード、０２１０…アロー、０２２０…作業定義、０３０１…プロセス定義名、０３０２…制御ノード名、０３０３…ノード種別、０３１１…制御ノード定義情報テーブル、０４０１…プロセス定義名、０４０２…作業定義名、０４０３…作業種別、０４０４…作業情報、０４０５…遷移先関連度、０４０６…優先度、０４０７…滞留閾値、０４１１…作業定義情報テーブル、０５０１…プロセス定義名、０５０２…遷移元、０５０３…遷移先、０５１１…アロー定義情報テーブル、０６０１…案件名、０６０２…プロセス定義名、０６０３…作業定義名、０６０４…作業情報、０６０５…状態、０６１１…ワークフロー実行状態テーブル、０７０１…作業情報、０７０２…未実行作業数、０７０３…有効フラグ、０７０４…滞留閾値、０７０５…閑散閾値、０７１１…作業者負荷情報テーブル、０８０１…プロセス定義名、０８０２…作業定義名、０８０３…案件名、０８０４…作業情報、０８０５…発生日時、０８１１…業務プログラム実行要求管理テーブル、１１０１…プロセス定義名、１１０２…作業定義名、１１０３…影響作業定義名、１１１１…影響範囲定義テーブル。
【図１】
2008135054.tif 000003
【図２】
2008135054.tif 000004
【図３】
2008135054.tif 000005
【図４】
2008135054.tif 000006
【図５】
2008135054.tif 000007
【図６】
2008135054.tif 000008
【図７】
2008135054.tif 000009
【図８】
2008135054.tif 000010
【図９】
2008135054.tif 000011
【図１０】
2008135054.tif 000012
【図１１】
2008135054.tif 000013
【図１２】
2008135054.tif 000014
【手続補正書】
【提出日】平成20年2月14日(2008.2.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
業務における複数の作業間の関係を定義するプロセス定義情報に基づいて作業の実行管理を行うコンピュータを用いて構築されたワークフロー管理方法であって、
第一のプロセス定義情報は第二のプロセス定義情報に含まれる第一の作業を担当する作業者情報を第一のプロセス定義情報に含まれる第二の作業の作業者情報として含み、
第二のプロセス定義情報は第一の作業の作業結果を用いて作業を行う第三の作業の作業者情報を含み、
実行状態制御部が作業着手および作業完了時に作業者が入力したコマンドを受付け、
優先度制御部が、作業の実行状態を示す情報を記憶装置から読み出して前記第三の作業の未実行作業数を算出し、前記未実行作業数と予め定められ記憶装置に格納されていた前記第三の作業の滞留閾値とを比較し、前記未実行作業数が前記滞留閾値を超えていた場合に第一の作業の優先度を下げることを示す情報を記憶装置へ格納し、第二の作業の優先度を上げることを示す情報を記憶装置へ格納することを特徴とするワークフロー管理方法。
【請求項２】
請求項１のワークフロー管理方法において、作業はプログラムで実行されることを特徴とするワークフロー管理方法。
【請求項３】
請求項１のワークフロー管理方法において、第一のプロセス定義情報と第二のプロセス定義情報は各々独立に処理される同じプロセス定義情報の一部であることを特徴とするワークフロー管理方法。
【請求項４】
業務における複数の作業間の関係を定義するプロセス定義情報に基づいて作業の実行管理を行うコンピュータを用いて構築されたワークフロー管理システムであって、
第一のプロセス定義情報は第二のプロセス定義情報に含まれる第一の作業を担当する作業者情報を第一のプロセス定義情報に含まれる第二の作業の作業者情報として含み、
第二のプロセス定義情報は第一の作業の作業結果を用いて作業を行う第三の作業の作業者情報を含み、
作業着手および作業完了時に作業者が入力したコマンドを受付ける実行状態制御部と、
作業の実行状態を示す情報を記憶装置から読み出して前記第三の作業の未実行作業数を算出し、前記未実行作業数と予め定められ記憶装置に格納されていた前記第三の作業の滞留閾値とを比較し、前記未実行作業数が前記滞留閾値を超えていた場合に第一の作業の優先度を下げることを示す情報を記憶装置へ格納し、第二の作業の優先度を上げることを示す情報を記憶装置へ格納する優先度制御部とを備えることを特徴とするワークフロー管理システム。
【請求項５】
請求項４のワークフロー管理システムにおいて、作業はプログラムで実行されることを特徴とするワークフロー管理システム。
【請求項６】
請求項４のワークフロー管理システムにおいて、第一のプロセス定義情報と第二のプロセス定義情報は各々独立に処理される同じプロセス定義情報の一部であることを特徴とするワークフロー管理システム。