(57)【要約】【課題】ジョブを効率的に分散する。【解決手段】ジョブを蓄積するジョブ蓄積手段と、ジョブ蓄積手段からジョブを引き取るか否かを設定するジョブ引取設定手段と、ジョブ引取設定手段にジョブを引き取ることが設定されると、ジョブを引き取るジョブ引取手段と、を含み、ジョブ引取手段により引き取られたジョブの中に所定のジョブが含まれていると、引き取られた所定のジョブを実行する。【選択図】図３
2016178570.tif 000002
【特許請求の範囲】
【請求項１】
ジョブを蓄積するジョブ蓄積手段と、
前記ジョブ蓄積手段からジョブを引き取るか否かを設定するジョブ引取設定手段と、
前記ジョブ引取設定手段に前記ジョブを引き取ることが設定されると、前記ジョブを引き取るジョブ引取手段と、を含み、
前記ジョブ引取手段により引き取られたジョブの中に所定のジョブが含まれていると、前記引き取られた所定のジョブを実行することを特徴とするワークフロー実行処理装置。
【請求項２】
前記引き取られたジョブの中に前記所定のジョブが含まれていると、前記引き取られたジョブを実行せず、所定期間経過した後、前記ジョブ引取手段により前記ジョブを再び引き取ることを特徴とする請求項１に記載のワークフロー実行処理装置。
【請求項３】
前記ジョブ引取設定手段は、前記蓄積されたジョブのうち特定の処理を実行するジョブを優先的に引き取る優先引き取りジョブ設定手段をさらに含むことを特徴とする請求項１又は２に記載のワークフロー実行処理装置。
【請求項４】
前記ジョブ引取手段により引き取られたジョブの中に他のジョブと比較して優先的に処理するジョブが存在するか否かを判定する引き取りジョブ判定手段をさらに含み、前記引き取りジョブ判定手段により前記優先的に処理するジョブが存在すると判定されると、前記優先的に処理するジョブを実行することを特徴とする請求項１から３の何れか１項に記載のワークフロー実行処理装置。
【請求項５】
前記ジョブ蓄積手段は、前記蓄積するジョブの引き取り要求を通知するジョブ引取要求通知手段と、前記要求を通知する通知先を設定するジョブ引取要求通知設定手段とを含み、前記ジョブ引取要求通知手段は、前記ジョブの引き取り要求を通知するとき、前記ジョブ引取要求通知設定手段に設定された通知先に対して前記ジョブの引き取り要求を通知することを特徴とする請求項１から４の何れか１項に記載のワークフロー実行処理装置。
【請求項６】
前記ジョブは、実行する個々のコマンドを機能的に纏めたプラグインのうち、任意のプラグインを任意の順序で構成したワークフローから構成されており、前記ワークフローが、前記特定の処理を実行するジョブとして設定された優先プラグインを含むとき、前記優先引き取りジョブ設定手段により前記優先プラグインを優先的に引き取ることが設定された優先ワークフロー実行処理装置が、前記優先プラグインを引き取ることを特徴とする請求項３に記載のワークフロー実行処理装置。
【請求項７】
前記ワークフローが、前記優先プラグインと前記優先プラグイン以外の通常プラグインとから構成されており、前記優先プラグインより以前に前記通常プラグインが存在するとき、前記優先ワークフロー実行処理装置は、前記通常プラグインを引き取ると共に前記優先プラグインを引き取ることを特徴とする請求項６に記載のワークフロー実行処理装置。
【請求項８】
前記ワークフローが、前記優先プラグインと前記優先プラグイン以外の通常プラグインとから構成されており、前記優先プラグインより以前に前記通常プラグインが存在し、前記優先プラグインより以後に前記通常プラグインが存在するとき、前記優先ワークフロー実行処理装置は、すべてのプラグインを引き取ることを特徴とする請求項６に記載のワークフロー実行処理装置。
【請求項９】
前記ワークフローが、前記優先プラグインと前記優先プラグイン以外の通常プラグインとから構成されており、前記優先プラグインより以前に前記通常プラグインが存在し、前記優先プラグインより以後に前記通常プラグインが存在するとき、前記優先ワークフロー実行処理装置は、前記優先プラグインより以前の前記通常プラグインと、前記優先プラグインとを引き取り、前記優先プラグインより以後の前記通常プラグインを、前記優先ワークフロー実行処理装置以外の通常ワークフロー実行処理装置が引き取ることを特徴とする請求項６に記載のワークフロー実行処理装置。
【請求項１０】
前記ワークフローが、前記優先プラグインと前記優先プラグイン以外の通常プラグインとから構成されており、前記優先プラグインより以前に前記通常プラグインが存在し、前記優先プラグインより以後に前記通常プラグインが存在するとき、前記通常ワークフロー実行処理装置は、前記優先プラグインより以前の前記通常プラグインを引き取り、前記優先ワークフロー実行処理装置は、前記優先プラグインと、前記優先プラグインより以後の前記通常プラグインとを引き取ることを特徴とする請求項９に記載のワークフロー実行処理装置。
【請求項１１】
前記ワークフローが、前記優先プラグインと前記優先プラグイン以外の通常プラグインとから構成されており、前記優先プラグインより以前に前記通常プラグインが存在し、前記優先プラグインより以後に前記通常プラグインが存在するとき、前記通常ワークフロー実行処理装置は、前記優先プラグインより以前の前記通常プラグインを引き取り、前記優先ワークフロー実行処理装置は、前記優先プラグインを引き取り、前記通常ワークフロー実行処理装置は、前記優先プラグインより以後の前記通常プラグインを引き取ることを特徴とする請求項９に記載のワークフロー実行処理装置。
【請求項１２】
前記プラグインが引き取られて実行された結果物と、前記ワークフローのうち未引取のプラグインが存在する旨の情報を登録する途中用蓄積手段をさらに含み、前記優先ワークフロー実行処理装置及び／または前記通常ワークフロー実行処理装置は、引き取って実行した前記優先プラグイン及び／または前記通常プラグインの結果物と、前記ワークフローのうち未引取のプラグインが存在する旨の情報を、前記途中用蓄積手段に登録することを特徴とする請求項９から１１の何れか１項に記載のワークフロー実行処理装置。
【請求項１３】
前記プラグインが未だ引き取られていない新規用蓄積手段をさらに含み、前記新規用蓄積手段から前記プラグインを最初に引き取るワークフロー実行処理装置は、前記新規用蓄積手段から前記プラグインを引き取り、引き取って実行した前記プラグインの結果物と、前記ワークフローのうち未引取のプラグインがあるときはその旨の情報を前記途中用蓄積手段に登録し、次に前記プラグインを引き取るワークフロー実行処理装置は、前記途中用蓄積手段から前記未引取のプラグインを引き取って実行することを特徴とする請求項１２に記載のワークフロー実行処理装置。
【請求項１４】
ワークフロー実行処理装置と、前記ワークフロー実行処理装置とネットワークを介して接続された記憶装置とを含むワークフロー実行システムであって、
前記記憶装置は所定のジョブを蓄積し、
前記ワークフロー実行処理装置は、前記記憶装置からジョブを引き取るか否かを設定するジョブ引取設定手段と、
前記ジョブ引取設定手段に前記ジョブを引き取ることが設定されていると、前記ジョブを引き取るジョブ引取手段と、を含み、
前記ジョブ引取手段により引き取られたジョブの中に所定のジョブが含まれていると、前記引き取られた所定のジョブを実行することを特徴とするワークフロー実行システム。
【請求項１５】
ワークフロー実行処理装置と、前記ワークフロー実行処理装置とネットワークを介して接続され、所定のジョブを蓄積する記憶装置とを含むワークフロー実行システムの制御方法であって、
前記記憶装置からジョブを引き取るか否かを設定する工程と、
前記ジョブを引き取ることが設定されていると、前記ジョブを引き取る工程と、
前記引き取られたジョブの中に所定のジョブが含まれていると、前記引き取られた所定のジョブを実行する工程と、
を含むことを特徴とするワークフロー実行システムの制御方法。
【請求項１６】
ワークフロー実行処理装置のコンピュータに、
所定のジョブをジョブ蓄積手段に蓄積する処理と、
前記ジョブ蓄積手段からジョブを引き取るか否かを設定する処理と、
前記ジョブを引き取ることが設定されていると、前記ジョブを引き取る処理と、
前記引き取られたジョブの中に所定のジョブが含まれていると、前記引き取られた所定のジョブを実行する処理と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークフロー実行処理装置、ワークフロー実行システム、ワークフロー実行システムの制御方法、及びプログラムに関する。
【背景技術】
【０００２】
例えば、作成・編集された文書を所定の場所に配信する文書配信といったワークフローを実行するワークフロー実行処理装置では、ＯＣＲ（Optical Character Reader）処理等の画像処理を行う場合、処理に非常に時間がかかることがある。この場合、負荷を分散するために、複数のサーバを連携することにより、処理を分散し、効率的に画像処理を行う方法が既に知られている。
【０００３】
特許文献１には、ジョブを効率的に負荷分散することを目的として、マシンのＣＰＵ負荷、ジョブのＣＰＵ（Central Processing Unit）負荷、及びジョブの優先レベルを計算し、ジョブの転送先を決定する文書配信装置が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、今までの負荷分散処理は、サーバ等にかかる負荷を分散させる機能を備え、負荷をどこに分散させるかを振り分けるロードバランサーが全体の負荷状況を計算し、ジョブを処理するノードを決定していた。そのため、負荷状況を計算するためにすべてのノードの状況を監視する必要あり、計算のためだけに通信や処理を必要としていた。
【０００５】
また、処理負荷が高いジョブが連続すると、ノードにジョブが割り振られた後、そのノードは待ち状態となってしまう。したがって、結果的には、他のノードで処理した方が早かったといった状況が起こり得るという問題があった。これは、特に、負荷状況の計算を、ジョブ数のみで行った場合や、画像変換処理を含む処理時間が見積もり難いジョブの割り振りを行った場合に起こり易かった。
【０００６】
また、特許文献１に記載された技術では、ジョブを効率的に負荷分散することを目的としているが、負荷計算が必要な点や、誤って処理負荷の高いノードに対してジョブを投入してしまうという問題は依然として解消されていない。
【０００７】
そこで、本発明は、上記従来技術の問題点に鑑みてなされたものであって、ロードバランサーがジョブを割り振ることなく、ジョブを引き取ることができるノードが自らジョブを引き取り、ジョブを実行することとしているので、ジョブを効率的に分散することが可能なワークフロー処理実行装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明におけるワークフロー処理実行装置は、ジョブを蓄積するジョブ蓄積手段と、前記ジョブ蓄積手段からジョブを引き取るか否かを設定するジョブ引取設定手段と、前記ジョブ引取設定手段に前記ジョブを引き取ることが設定されると、前記ジョブを引き取るジョブ引取手段と、を含み、前記ジョブ引取手段により引き取られたジョブの中に所定のジョブが含まれていると、前記引き取られた所定のジョブを実行することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ジョブを効率的に分散することが可能なワークフロー処理実行装置を得ることができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るワークフロー実行システムの概略を示すシステム構成図である。
【図２】本発明の実施形態に係るワークフロー実行システムを構成するスキャナ装置、配信サーバの構成を示すハードウェアブロック図である。
【図３】本発明の第１の実施形態に係るワークフロー実行システムの構成を示す機能ブロック図である。
【図４】本発明の第１の実施形態に係るワークフロー実行システムの動作について説明するフロー図である。
【図５】本発明の第１の実施形態の変形例に係るワークフロー実行システムの機能を示す機能ブロック図である。
【図６】本発明の第１の実施形態の変形例に係るワークフロー実行システムの動作について説明するフロー図である。
【図７】本発明の第２の実施形態に係るワークフロー実行システムの機能を示す機能ブロック図である。
【図８】本発明の第２の実施形態に係るワークフロー実行システムの動作について説明するフロー図である。
【図９】本発明の実施形態に係るワークフロー実行システムを構成する文書配信サーバに対応可能なプラグインが設定されている場合のキューザーバに対するアクセス例について説明する図である。
【図１０】本発明の実施形態に係るワークフロー実行システムにおける（ａ）プラグイン構成、（ｂ）ワークフロー構成、及び文書配信サーバの（ｃ）プラグインの引き取りについて説明する図である。
【図１１】本発明の実施形態に係るワークフロー実行システムにおける文書配信サーバがアクセスするキューサーバの種類について説明する図である。
【図１２】本発明の他の実施形態に係るワークフロー実行システムにおける（ａ）プラグイン構成、（ｂ）ワークフロー構成、及び文書配信サーバの（ｃ）プラグインの引き取りについて説明する図である。
【図１３】本発明の他の実施形態に係るワークフロー実行システムにおける文書配信サーバがアクセスするキューサーバの種類について説明する図である。
【発明を実施するための形態】
【００１１】
本発明は、ワークフロー実行処理装置、ワークフロー実行システム、ワークフロー実行システムの制御方法、及びプログラムに関するものである。具体的には、ロードバランサーがジョブを割り振るのではなく、ジョブの順番待ちの列であるキューに対して、処理可能なノードが自らジョブを引き取ることで負荷計算そのものを不要としている。また、ノードの選択ミスにより、処理負荷が高いノードに対してジョブを投入することを防止することとしている。上記記載の本発明の特徴について、以下の図面を用いて詳細に解説する
【００１２】
次に、本発明を実施するための形態について図面を参照して詳細に説明する。なお、各図中、同一又は相当する部分には同一の符号を付しており、その重複説明は適宜に簡略化乃至省略する。以下、本実施形態について説明するが、本実施形態は、以下に説明する実施形態に限定されるものではない。また、以下に説明する実施形態は、配信サーバが２台存在する場合に適用される例について説明しているが、配信サーバの台数は任意の台数としても良い。
【００１３】
まず、本発明の実施形態に係るワークフロー実行システムの概略について説明する。図１は、本発明の実施形態に係るワークフロー実行システムの概略を示すシステム構成図である。
【００１４】
図１において、ワークフロー実行システム１０は、スキャナ装置１１と、記憶装置の一例であるジョブキューデータベース（以下、ＤＢともいう。）１  １２と、ジョブ引取設定１３１、１４１をそれぞれ有する配信サーバ１３、１４とがネットワーク１５を介して接続されている。すなわち、各配信サーバ１３、１４が参照可能な位置にジョブキューＤＢ１２が存在している。なお、図１において、ジョブキューＤＢ１２は、配信サーバ１３、１４とは異なるサーバに存在しているが、配信サーバ１３、１４の何れかのサーバの中に同居すること可能である。
【００１５】
また、各配信サーバ１３、１４には、ジョブを引き取るためのジョブの引取設定１３１、１４１が存在している。ジョブの引取設定１３１、１４１には、監視対象のジョブキューや監視間隔、その他、優先引取ジョブ等のオプション項目が設置されている。図１の場合、配信サーバ１４のジョブ引取設定１４１に、監視キューとして、ジョブキューＤＢ１２が設定されている。また、監視間隔として６０秒が設定されている。これは、ジョブキューＤＢ１２からジョブを引き取れるかどうかを監視する間隔である。
【００１６】
すなわち、配信サーバ１４がジョブを実行中の場合にはそのジョブが終了するまでジョブキューＤＢ１２からジョブを引き取らない。配信サーバ１４がアイドル状態のとき、この監視間隔で定期的にジョブキューＤＢ１２を監視する。さらに、優先引取ジョブとして、ＯＣＲが設定されている。この優先引取ジョブとは、特定の処理を実行するジョブであり、他のジョブよりも優先的に引き取るジョブである。ここで設定されているＯＣＲ処理は、後述するように処理に時間がかかるので、この配信サーバ１４は優先的にＯＣＲ処理を行うことに専念させることを意味する。
【００１７】
なお、配信サーバ１３には、優先引取ジョブが設定されていても良いし設定されていなくても良い。このジョブ引取設定１３１、１４１は、それぞれの配信サーバ１３、１４に対して予め設定することが可能である。
【００１８】
ユーザがスキャナ装置１１で文書をスキャンすると、当該スキャンジョブが予め設定されたジョブキューＤＢ１２にキューイングされる。すなわち、ユーザが原稿をスキャナ装置１１で読み取って、ワークフローを指定すると、ジョブキューＤＢ１２に、読み取られた画像データと実際に行うワークフローの内容とが登録される。各配信サーバ（ノード）１３、１４は、自分がアイドル状態であればジョブ引き取り設定にしたがってスキャンジョブを引き取る。
【００１９】
なお、ワークフローとは、一連のプロセスから構成される文書に対する処理のことを指す。具体的には、ＯＣＲ（Optical Character Reader）処理、ＰＤＦ（Portable Document Format）処理、ノイズ除去、画像補正、バーコードの読み取り処理等のことをいう。
【００２０】
次に、本発明の実施形態に係るワークフロー実行システムを構成するスキャナ装置、配信サーバの構成について説明する。図２は、本発明の実施形態に係るワークフロー実行システムを構成するスキャナ装置、配信サーバの構成を示すハードウェアブロック図である。
【００２１】
図２において、スキャナ装置１１、配信サーバ１３、１４は、スキャナ装置１１、配信サーバ１３、１４全体の動作を制御するＣＰＵ（Central Processing Unit）（制御部）２０１を有している。また、ＣＰＵ２０１が実行するプログラムを格納するＲＯＭ（Read Only Memory）２０３と、ＣＰＵ２０１によって処理された演算データを一時的に格納するＲＡＭ（Random Access Memory）２０４と、を有している。
【００２２】
さらに、スキャナ装置１１、配信サーバ１３、１４に対してユーザが指示を与える操作部２０５と、ユーザとのインタフェースを図る液晶等で構成された表示部２０６とを有している。そして、スキャナ装置１１、配信サーバ１３、１４によって実行されるジョブの結果を格納するＨＤＤ（Hard Disk Drive）２０４を有している。そして、ＣＰＵ２０１、ＨＤＤ２０２、ＲＯＭ２０３、ＲＡＭ２０４、操作部２０５、及び表示部２０６は、バス２０８によって接続されている。なお、スキャナ装置１１のハードウェア構成も、読取部２０７を有している点を除けば配信サーバ１３、１４のハードウェア構成と略同様であるので、詳細な説明は省略する。
【００２３】
次に、本発明の第１の実施形態に係るワークフロー実行システムの構成について説明する。図３は、本発明の第１の実施形態に係るワークフロー実行システムの構成を示す機能ブロック図である。
【００２４】
図３において、ワークフロー実行システム１０は、スキャナ装置１１と、ジョブキューＤＢ１２と、ジョブ引取設定１３１、１４１をそれぞれ有する配信サーバ１  １３、２  １４とがネットワーク１５を介して接続されている。すなわち、各配信サーバ１  １３、２  １４が参照可能な位置にジョブキューＤＢ１２が存在している。
【００２５】
配信サーバ１  １３０、２  １４０には、ジョブを引き取るためのジョブ引取設定１３１、１４１がそれぞれ存在する。また、配信サーバ１  １３０には、ジョブ引き取り部１３２が、配信サーバ２  １４０には、ジョブ引き取り部１４２がそれぞれ存在する。ユーザがスキャナ装置１１で文書をスキャンすると、当該スキャンジョブが指定のジョブキューＤＢ１２に蓄積される。すなわち、ジョブキューＤＢ１２には、スキャナ装置１１で読み取られた画像データが溜まっている状態にある。
【００２６】
各配信サーバ１  １３０、２  １４０にあるジョブ引き取り部１３２、１４２は、ジョブ引取設定１３１、１４１を参照してジョブの引き取りを行う。すなわち、ジョブ引き取り部１３２、１４２は，ジョブキューＤＢ１２に蓄積された画像データとワークフローとを引き取る。引き取り後、通常通りジョブの設定にしたがって文書配信処理が実行される。
【００２７】
次に、本発明の第１の実施形態に係るワークフロー実行システムの動作について説明する。図４は、本発明の第１の実施形態に係るワークフロー実行システムの動作について説明するフロー図である。
【００２８】
図４において、ジョブ引き取り処理が開始されると、まず、ステップＳ３０１の処理において、ジョブの引き取り設定が読み込まれる。次に、ステップＳ３０２の処理において、ステップＳ３０１の処理で読み込まれた引き取り設定にしたがって、ジョブの引き取り処理が実行される。
【００２９】
そして、ステップＳ３０３の処理において、ステップＳ３０２の処理で引き取ったジョブの中にジョブが存在するか否かを判断する。ステップＳ３０２の処理において、ジョブが存在する（ステップＳ３０３：Ｙｅｓ）と判断すると、ステップＳ３０５の処理へ移行する。ステップＳ３０５の処理において、ジョブの設定にしたがってジョブを実行し、再びステップＳ３０２の処理へ移行し、ジョブの引き取り処理を行う。
【００３０】
ステップＳ３０３の処理において、ジョブが存在しない（ステップＳ３０３：Ｎｏ）と判断すると、ステップＳ３０４の処理へ移行する。ステップＳ３０４の処理において、ジョブ引取設定１３１、１４１の監視間隔で設定されている所定期間経過するまで待機し、ステップＳ３０２の処理へ移行し、ジョブの引き取り処理を行う。
【００３１】
次に、本発明の第１の実施形態の変形例に係るワークフロー実行システムの機能について説明する。図５は、本発明の第１の実施形態の変形例に係るワークフロー実行システムの機能を示す機能ブロック図である。
【００３２】
図５において、図３の第１の実施形態に係るワークフロー実行システム１０と異なる点は、配信サーバ１  １３０、２  １４０が、ジョブ引取設定１３１、１４１、ジョブ引き取り部１３２、１４２に加え、引き取りジョブ判定部１３３、１４３を有している点である。ジョブキーＤＢ１  １２の構成は、図３の場合と同様である。
【００３３】
ユーザがスキャナ装置１１で文書をスキャンすると、当該スキャンジョブが指定のジョブキューＤＢ１２に蓄積される。各配信サーバ１  １３、２  １４にあるジョブ引き取り部１３２、１４２は、ジョブ引取設定１３１、１４１を参照してジョブの引き取りを行う。
【００３４】
ここで、同時期に投入されたジョブがジョブキューＤＢ１２に複数存在する場合、引き取りジョブ判定部１３３、１４３は、当該複数存在するジョブの中に他のジョブと比較して自サーバで優先的に処理するジョブが存在するか否かを判定する。自サーバで優先的に処理するジョブが存在すると判定すると、そのジョブを引き取る。引き取り後、通常通りジョブの設定にしたがって文書配信処理が実行される。自サーバで優先的に処理するジョブが存在するか否かの判定では、例えば自身のサーバに画像処理に特化したハードウェアがある場合、ＯＣＲ処理や画像変換処理を含むジョブを優先的に引き取る等の判定を行う。
【００３５】
次に、本発明の第１の実施形態の変形例に係るワークフロー実行システムの動作について説明する。図６は、本発明の第１の実施形態の変形例に係るワークフロー実行システムの動作について説明するフロー図である。
【００３６】
図６において、ジョブ引き取り処理が開始されると、まず、ステップＳ７０１の処理において、ジョブの引き取り設定が読み込まれる。次に、ステップＳ７０２の処理において、ステップＳ７０１の処理で読み込まれた引き取り設定にしたがって、ジョブの引き取り処理が実行される。
【００３７】
そして、ステップＳ７０３の処理において、配信サーバ１  １３、２  １４の引き取りジョブ判定部１３３、１４３は、複数存在するジョブの中に自サーバの引き取り条件にマッチするジョブが存在するか否を判断する。すなわち、上記したように複数存在するジョブの中に自サーバで優先して処理するジョブが存在するか否かを判定する。
【００３８】
引き取り条件にマッチするジョブが存在する（ステップＳ７０３：Ｙｅｓ）と判断すると、ステップＳ７０６の処理へ移行し、引き取り条件にマッチするジョブが存在しない（ステップＳ７０３：Ｎｏ）と判断すると、ステップＳ７０４の処理へ移行する。
【００３９】
ステップＳ７０４の処理において、ステップＳ７０２の処理で引き取ったジョブの中に、引き取り条件にマッチするジョブ以外のジョブが存在するか否かを判断する。ステップＳ７０４の処理において、ジョブが存在する（ステップＳ７０４：Ｙｅｓ）と判断すると、ステップＳ７０６の処理へ移行する。ジョブが存在しない（ステップＳ７０４：Ｎｏ）と判断すると、ステップＳ７０５の処理へ移行する。
【００４０】
ステップＳ７０６の処理において、ジョブの設定にしたがってジョブを実行し、再びステップＳ７０２の処理へ移行し、ジョブの引き取り処理を行う。ステップ７０５の処理において、ジョブ引取設定１３１、１４１の監視間隔で設定されている時間だけ待機し、ステップＳ３０２の処理へ移行し、ジョブの引き取り処理を行う。
【００４１】
次に、本発明の第２の実施形態に係るワークフロー実行システムの機能について説明する。図７は、本発明の第２の実施形態に係るワークフロー実行システムの機能を示す機能ブロック図である。
【００４２】
図７において、図３で示した第１の実施形態に係るワークフロー実行システム１０と異なる点は、ジョブキューＤＢ１２と、ジョブ引取要求通知設定１２１と、ジョブ引き取り要求通知部１２２とが、１つのジョブキューサーバ１２０で構成されている点である。配信サーバ１  １３０、２  １４０の構成は、図３の場合と同様である。
【００４３】
ユーザがスキャナ装置１１で文書をスキャンすると、当該スキャンジョブが指定のジョブキューＤＢ１２に蓄積される。各配信サーバ１  １３０、２  １４０にあるジョブ引き取り部１３２、１４２は、ジョブ引取設定１３１、１４１を参照してジョブの引き取りを行う。ただし、ジョブが存在しない場合、設定されている時間だけ待機する。
【００４４】
上述した第１の実施形態では、ジョブが投入された場合、直ちに引き取るのではなく、ジョブ引取設定１３１、１４１の監視間隔で設定されている時間だけ待機してから引き取ることとしている。よって、監視視間隔の設定値によっては即時実効性が失われる。
【００４５】
これに対し第２の実施形態では、ジョブキューＤＢ１２にジョブが投入されると、ジョブ引き取り要求通知部１２２は、ジョブ引取要求通知設定１２１を参照する。そして、ジョブ引き取り要求通知部１２２は、ジョブ引取要求通知設定１２１にジョブ引取要求の通知先として設定されている配信サーバ１  １３０、２  １４０に対してジョブの引取要求を送信する。
【００４６】
すなわち、ジョブキューＤＢ１２側からジョブキューがあるので引き取って欲しい旨を配信サーバ１  １３０、２  １４０に対して通知する。ジョブを引き取った各配信サーバ１  １３０、２  １４０は第１の実施形態１と同様にジョブの引き取り処理を行う。
【００４７】
次に、本発明の第２の実施形態に係るワークフロー実行システムの動作について説明する。図８は、本発明の第２の実施形態に係るワークフロー実行システムの動作について説明するフロー図である。
【００４８】
図８において、ジョブキューＤＢ１２にジョブが投入されると、ステップＳ５０１の処理において、ジョブキューサーバ１２０のジョブ引き取り要求通知部１２２は、ジョブ引取要求通知設定１２１を読み込む。すなわち、ジョブキューサーバ１２０のジョブキューＤＢ１２にジョブキューが登録されたタイミングで読み込む。
【００４９】
そして、ステップＳ５０２の処理において、ステップＳ５０１の処理で読み込まれたジョブ引き取り要求通知設定１２１に設定されている配信サーバ１  １３０、２  １４０に対して、ジョブの引き取り要求通知処理を行う。その後、ジョブの引き取り要求通知処理が終了する。そうすると、ジョブ引き取り要求通知を受け取ったジョブ引き取り部１３２、１４２が、上記した第１の実施形態の図４で説明したジョブ引取処理を開始する。
【００５０】
次に、本発明の実施形態に係るワークフロー実行システムを構成する文書配信サーバに対応可能なプラグインが設定されている場合のキューザーバに対するアクセス例について説明する。図９は、本発明の実施形態に係るワークフロー実行システムを構成する文書配信サーバに対応可能なプラグインが設定されている場合のキューザーバに対するアクセス例について説明する図である。
【００５１】
図９において、図３のジョブキューＤＢ１２に対応するジョブキューサーバ１２０は、図３のスキャナ装置１１に対応する複数台のＭＦＰ（Multi Function Peripheral：多機能周辺装置）１１ａ〜１１ｎに接続されている。そして、ジョブキューザーバ１２０に蓄積されたジョブキューを、文書配信サーバＡ、Ｂ、Ｃが引き取ってジョブを実行する。
【００５２】
ここで、文書配信サーバＡは、プラグイン１〜６を有している。また、文書配信サーバＡは、プラグイン１〜５による処理に対しては通常の対応をしており、図１で説明したジョブ引取設定１３１、１４１の優先引取ジョブとして、プラグイン６を含むワークフローのジョブを優先プラグインとして設定している。つまり、優先プラグイン６が設定されている。この文書配信サーバＡのようなサーバを、優先ワークフロー実行処理装置（優先設定が行われた第１ワークフロー実行処理装置）ともいう。文書配信サーバＢ、及び文書配信サーバＣは、プラグイン１〜５を有しており、優先引取ジョブは設定されていない。文書配信サーバＢ、Ｃのようなサーバを、通常ワークフロー実行処理装置（優先設定が行われていない第２ワークフロー実行処理装置）ともいう。すなわち、通常ワークフロー実行処理装置は、優先ワークフロー実行処理装置以外のものを指す。
【００５３】
なお、ここでいうワークフローとは、プラグイン１〜６のうち、任意のプラグインを任意の順序で選択指定した情報であって、処理の実行内容を定義する情報を指す。また、プラグインとは、処理を実行するアプリケーションプログラムの機能単位を示し、この機能単位でワークフローを形成したものであり、実行する個々のコマンドを機能的なまとまりで提供するものを指す。なお、プラグインの数は６つに限らなくてもよいが、ここでは６つのプラグインをワークフローを構成する処理単位の要素として説明する。
【００５４】
次に、本発明の実施形態に係るワークフロー実行システムにおける（ａ）プラグイン構成、（ｂ）ワークフロー構成、及び文書配信サーバの（ｃ）プラグインの引き取りについて説明する。さらに、本発明の実施形態に係るワークフロー実行システムにおける文書配信サーバがアクセスするキューサーバの種類について説明する。
【００５５】
図１０は、本発明の実施形態に係るワークフロー実行システムにおける（ａ）プラグイン構成、（ｂ）ワークフロー構成、及び文書配信サーバの（ｃ）プラグインの引き取りについて説明する図である。また、図１１は、本発明の実施形態に係るワークフロー実行システムにおける文書配信サーバがアクセスするキューサーバの種類について説明する図である。
【００５６】
まず、図１０（ａ）に示すように、プラグインが、プラグイン１、プラグイン２、プラグイン３、プラグイン４、プラグイン５、及びプラグイン６から構成されているとする。そして、プラグイン６は、ＯＣＲ処理を実行するプラグインであり、プラグイン１〜６の中で最も処理に時間を要するものであり、優先引取ジョブとされるものである。
【００５７】
次に、図１０（ｂ）に示すように、あるワークフロー処理が、プラグイン１を実行した後プラグイン３を実行し、その後プラグイン６を実行し、最後にプラグイン２を実行する処理であるとする。すなわち、優先プラグイン６以前にプラグイン１、３が存在し、優先プラグイン６以後にプラグイン２が存在する処理である。
【００５８】
このとき、図９に示した文書配信サーバＡ、Ｂが、図１０（ｂ）に示すワークフロー処理の構成するプラグインの処理をどのように引き取るかについては、図１０（ｃ）に示すように２パターンが存在する。また、このとき、文書配信サーバＡ、Ｂは、図１１に示す新規用ジョブキューサーバ１２５又は途中用ジョブキューサーバ１２６の何れかにアクセスする。
【００５９】
ここで、新規用ジョブキューサーバ１２５は、文書配信サーバによってジョブ（ワークフローの実行を指示するジョブ）が一度も引き取られていないプラグインが登録されているサーバである。また、途中用ジョブキューサーバ１２６は、ジョブを引き取り、ジョブにより指示されるワークフローに基づいて文書配信サーバがワークフローを構成する各プラグインの処理を実行した結果、ワークフローが最後まで処理されなかったジョブを登録するサーバである。つまり、ワークフローを構成する複数の処理のうち、途中の処理までが実行された状態のジョブが途中用ジョブキューサーバ１２６に登録される。
【００６０】
まず、図１０（ｃ）（１）に示すように、文書配信サーバＡは、プラグイン１〜５、及び優先プラグイン６に対応しているので、ワークフローの開始から終了（プラグイン１〜プラグイン２）までのすべてのプラグインの処理を引き取ることが可能である。したがって、文書配信サーバＡは、最初に新規用ジョブキューサーバ１２５にアクセスし、ワークフローのすべての処理を実行する。
【００６１】
一方、文書配信サーバＢは、プラグイン１〜５に対応しているが、優先プラグインであるプラグイン６には対応していない。よって、文書配信サーバＢは、ワークフローを開始した場合、プラグイン１とプラグイン３の処理を引き取ることが可能である。したがって、文書配信サーバＢは、最初に新規用ジョブキューサーバ１２５にアクセスし、プラグイン１とプラグイン３のワークフローの処理を実行する。そして、プラグイン３の処理を実行した結果物と、プラグイン６以降のワークフローが残っている旨の情報を、途中用ジョブキューサーバ１２６に登録する。そして、文書配信サーバＡは、途中用ジョブキューサーバ１２６にアクセスし、ワークフローが途中であるプラグイン６とプラグイン２とを引き取り、ワークフローの処理を実行する。
【００６２】
また、図１０（ｃ）（２）に示すように、文書配信サーバＡは、優先プラグイン６に対応しているので、プラグイン１、２、３、４、５、６までの全てのプラグインの処理を引き取ることが可能である。したがって、文書配信サーバＡは、最初に新規用ジョブキューサーバ１２５にアクセスし、プラグイン１、３、６までのワークフローの処理を実行する。そして、プラグイン６の処理を実行した結果物と、プラグイン２以降のワークフローが残っている旨の情報を、途中用ジョブキューサーバ１２６に登録する。そして、文書配信サーバＢは、途中用ジョブキューサーバ１２６にアクセスし、ワークフローが途中であるプラグイン２の処理を引き取り、ワークフローの処理を実行する。
【００６３】
また、文書配信サーバＢは、プラグイン１、２、３、４、５までのプラグインに対応しているが、優先プラグインであるプラグイン６には対応していない。よって、文書配信サーバＢは、プラグイン１とプラグイン３の処理を引き取ることが可能である。したがって、文書配信サーバＢは、最初に新規用ジョブキューサーバ１２５にアクセスし、プラグイン１とプラグイン３のワークフローの処理を実行する。そして、プラグイン３の処理を実行した結果物と、プラグイン６以降のワークフローが残っている旨の情報を、途中用ジョブキューサーバ１２６に登録する。
【００６４】
そして、文書配信サーバＡは、途中用ジョブキューサーバ１２６にアクセスし、ワークフローが途中であるプラグイン６の処理を引き取り、ワークフローの処理を実行する。そして、プラグイン６の処理を実行した結果物と、プラグイン２以降のワークフローが残っている旨の情報を、途中用ジョブキューサーバ１２６に登録する。さらに、文書配信サーバＢは、途中用ジョブキューサーバ１２６にアクセスし、ワークフローが途中であるプラグイン２の処理を引き取り、ワークフローの処理を実行する。
【００６５】
つまり、この例では、文書管理サーバＡは、ワークフローにおけるプラグイン１、３、６、２の処理を全て引き取るか、対応しているプラグイン６までのワークフローを引き取るかの何れかを行うのである。
【００６６】
このように、優先ワークフロー実行処理装置は、優先プラグイン６、優先プラグイン６より以前の通常プラグイン、及び優先プラグイン６より以後の通常プラグインの処理を引き取るパターンが存在する。また、優先ワークフロー実行処理装置は、優先プラグイン６、及び優先プラグイン６より以前のプラグインの処理を引き取るパターンと、優先プラグイン６の処理のみを引き取るパターンとがある。また、文書配信サーバＢは、少なくとも優先プラグイン６以外の通常プラグインの処理を引き取るパターンがある。
【００６７】
実際のワークフロー処理では、重たい処理を実行するプラグイン（優先プラグイン６）に対応していない文書配信サーバＢ（以下、軽機器という。）と、対応している文書配信サーバＡ（以下、重機器という。）と、において、効率的に処理（重機器）を回すことが求められる。そのために、軽機器は、新規用ジョブキューサーバからワークフローを取得するか否かを、Ｎ（Ｎは自然数）個目までのプラグインの処理を自身で実行可能か否かを判定する。
【００６８】
そして、Ｎ個までのプラグインの処理を自身で実行可能であると判定すればワークフローを取得し、実行可能なところまでプラグインの処理を実行する。ただし、Ｎ＝１の処理に重たい処理が存在する場合には、重機器に処理を任せることとするので、必ずしもＮ個まででなくても良い。さらに、途中でワークフローの処理が終了した場合は、途中用ジョブキューサーバに登録する。そして、それ以降のプラグインを取得しない場合、取得しないプラグインは自身で処理できないことをチェック済みであるということで、未処理のまま途中用ジョブキューサーバに登録する。
【００６９】
一方、重機器は、途中用ジョブキューサーバにワークフローが存在していれば、そこからプラグインを取得してワークフローの処理を実行する。途中用ジョブキューサーバにワークフローが存在していなければ、新規用ジョブキューサーバからワークフローを取得してプラグインの処理を実行するようにする。
【００７０】
次に、本発明の他の実施形態に係るワークフロー実行システムにおける（ａ）プラグイン構成、（ｂ）ワークフロー構成、及び文書配信サーバの（ｃ）プラグインの引き取りについて説明する。さらに、本発明の他の実施形態に係るワークフロー実行システムにおける文書配信サーバがアクセスするキューサーバの種類について説明する。
【００７１】
図１２は、本発明の他の実施形態に係るワークフロー実行システムにおける（ａ）プラグイン構成、（ｂ）ワークフロー構成、及び文書配信サーバの（ｃ）プラグインの引き取りについて説明する図である。また、図１３は、本発明の他の実施形態に係るワークフロー実行システムにおける文書配信サーバがアクセスするキューサーバの種類について説明する図である。
【００７２】
まず、図１２（ａ）に示すように、プラグインが、プラグイン１、プラグイン２、プラグイン３、プラグイン４、プラグイン５、プラグイン６、及びプラグイン７から構成されているとする。そして、プラグイン６は、ＯＣＲ処理を実行するプラグインであり、プラグイン１〜７の中で最も処理に時間を要するものであり、優先引取ジョブとされるものである。
【００７３】
次に、図１２（ｂ）に示すように、あるワークフロー処理が、プラグイン１を実行した後プラグイン３を実行し、その後プラグイン６を実行した後プラグイン２を実行し、その後プラグイン７を実行し、最後にプラグイン４を実行する処理であるとする。このとき、図１３に示した文書配信サーバＡ、Ｂが、図１２（ｂ）に示すワークフロー処理の構成するプラグインをどのように引き取るかについては、図１２（ｃ）に示すパターンが存在する。また、このとき、文書配信サーバＡは、図１３に示す第２の途中用ジョブキューサーバ１２８又は新規用ジョブキューサーバ１２５の何れかにアクセスする。さらに、文書配信サーバＢは、図１３に示す第２の途中用ジョブキューサーバ１２８、第１の途中用ジョブキューサーバ１２７、又は新規用ジョブキューサーバ１２５の何れかにアクセスする。
【００７４】
まず、図１２（ｃ）に示すように、文書配信サーバＡは、プラグイン１、２、３、４、５、７までのプラグイン、及び優先プラグイン６に対応しているので、プラグイン１、２、３、４、５、６、７までのすべてのプラグインの処理を引き取ることが可能である。したがって、文書配信サーバＡは、最初に新規用ジョブキューサーバ１２５にアクセスし、プラグイン１、２、３、４、５、７までのワークフローを実行する。そして、プラグイン７の処理を実行した結果物と、プラグイン４以降のワークフローが残っている旨の情報を、第２の途中用ジョブキューサーバ１２８に登録する。
【００７５】
一方、文書配信サーバＢは、プラグイン１、２、３、４、５に対応しているが、優先プラグインであるプラグイン６、及びプラグイン７には対応していない。よって、文書配信サーバＢは、プラグイン４の処理を引き取ることが可能である。したがって、文書配信サーバＢは、最初に第２の途中用ジョブキューサーバ１２８にアクセスし、プラグイン４の処理を実行する。
【００７６】
次に、文書配信サーバＡは、最初に新規用ジョブキューサーバ１２５にアクセスし、プラグイン１、３、６までのワークフローを実行する。そして、プラグイン６の処理を実行した結果物と、プラグイン２以降のワークフローが残っている旨の情報を第２の途中用ジョブキューサーバ１２８に登録する。
【００７７】
そして、文書配信サーバＢは、第２の途中用ジョブキューサーバ１２８にアクセスし、ワークフローが途中であるプラグイン２の処理を引き取り、ワークフローを実行する。文書配信サーバＢは、プラグイン７に対応していないので、プラグイン２の処理を実行した結果物と、プラグイン７以降のワークフローが残っている旨の情報を第１の途中用ジョブキューサーバ１２７に登録する。
【００７８】
さらに、文書配信サーバＡは、第１の途中用ジョブキューサーバ１２７にアクセスし、ワークフローが途中であるプラグイン７の処理及びプラグイン４の処理を引き取り、ワークフローを実行する。
【００７９】
また、文書配信サーバＡは、最初に新規用ジョブキューサーバ１２５にアクセスし、プラグイン１、３、６までのワークフローを実行する。そして、プラグイン６の処理を実行した結果物と、プラグイン２以降のワークフローが残っている旨の情報を第２の途中用ジョブキューサーバ１２８に登録する。
【００８０】
そして、文書配信サーバＢは、第２の途中用ジョブキューサーバ１２８にアクセスし、ワークフローが途中であるプラグイン２の処理を引き取り、ワークフローを実行する。文書配信サーバＢは、プラグイン７に対応していないので、プラグイン２の処理を実行した結果物と、プラグイン７以降のワークフローが残っている旨の情報を第１の途中用ジョブキューサーバ１２７に登録する。
【００８１】
さらに、文書配信サーバＡは、第１の途中用ジョブキューサーバ１２７にアクセスし、ワークフローが途中であるプラグイン７の処理を引き取り、ワークフローを実行する。そして、文書配信サーバＡは、プラグイン４にも対応しているが、プラグイン４は文書配信サーバＢも対応している。よって、文書配信サーバＡは、プラグイン７の処理を実行した結果物と、プラグイン４以降のワークフローが残っている旨の情報を、第２の途中用ジョブキューサーバ１２８に登録する。そして、文書配信サーバＢは、第２の途中用ジョブキューサーバ１２８にアクセスし、ワークフローが途中であるプラグイン４の処理を引き取り、ワークフローを実行する。
【００８２】
つまり、この例では、文書管理サーバＡは、対応している最後のプラグイン７までのワークフローを引き取るのか、対応しているプラグイン６までのワークフロー及び対応しているプラグイン７以降のワークフローを引き取るのか、対応しているプラグイン６までのワークフロー及び対応しているプラグイン７のワークフローを引き取るかの何れかを行うのである。
【００８３】
このように、文書配信サーバＡは、優先プラグイン６の処理と優先プラグイン以外のプラグインの処理を纏めて引き取るパターンと、優先プラグイン６の処理とプラグイン７の処理とを纏めて又は個別に引き取るパターンと、プラグイン７の処理とそれ以外のプラグインの処理とを引き取るパターンとがある。また、文書配信サーバＢは、少なくとも優先プラグイン６の処理とプラグイン７以外のプラグインの処理を引き取るパターンがある。
【００８４】
実際のワークフロー処理では、重機器には、軽機器では実行できない又は実行できるプラグインが登録されている。重機器は、ワークフローを実行するときに、後続の処理に、軽機器では実行することができないプラグインの処理が含まれているか否かを判定し、軽機器で実行することができない最も後続のプラグインの処理までを実行する。ワークフローの実行が途中で終了した場合には、軽機器用の途中用ジョブキューサーバである第２の途中用のジョブキューサーバに最後のプラグインの処理を実行した結果物とそれ以降のワークフローが残っている旨の情報を登録する。
【００８５】
軽機器は、まず、第２の途中用のジョブキューサーバにワークフローがあれば、そこからプラグインの処理を引き取ってワークフローを実行する。第２の途中用のジョブキューサーバにワークフローがなければ、新規用ジョブキューサーバからワークフローを取得するか否かの判定、すなわち、上記した実施形態のプロセスに移行する。途中でワークフローを終了すると、重機器用の途中用ジョブキューサーバである第１の途中用ジョブキューサーバに最後のプラグインの処理を実行した結果物とそれ以降のワークフローが残っている旨の情報を登録する。
【００８６】
このように、本実施形態によれば、ロードバランサーがジョブを割り振るのではなく、ジョブの順番待ちの列であるキューに対して処理可能なノードが自らジョブを引き取ることで、負荷計算そのものが不要になるのである。また、ノード選択ミスにより処理負荷が高いノードに対してジョブを投入してしまうことがないので、ジョブの負荷分散を効率的に行うことができるのである。
【００８７】
なお、図４、図６、及び図８に示した本実施形態に係るワークフロー実行システムの動作フローは、コンピュータ上のプログラムに実行させることもできる。すなわち、ワークフロー実行システムを構成するスキャナ装置１１、ジョブキューサーバ１２０、配信サーバ１  １３０、２  １４０にそれぞれ内蔵されているＣＰＵ２０１が、ＲＯＭ２０３に格納されたプログラムをロードする。そして、プログラムの各処理ステップが順次実行されることによって行われる。
【００８８】
このように、本発明によれば、ジョブを効率的に分散することが可能なワークフロー実行処理装置、ワークフロー実行システム、ワークフロー実行システムの制御方法、及びプログラムが得られるのである。
【００８９】
以上、これまで本発明の実施形態について説明してきたが、本発明の実施形態は上述した実施形態に限定されるものではない。すなわち、他の実施形態、追加、変更、削除等、当業者が想到することができる範囲内で変更することができ、何れの態様においても本発明の作用効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００９０】
１０    ワークフロー実行システム
１１    スキャナ装置
１１ａ、１１ｎ    ＭＦＰ
１２    ジョブキューＤＢ
１３、１４    配信サーバ
１５    ネットワーク
１００    ロードバランサー
１２０    ジョブキューサーバ
１２１    ジョブ引取要求通知設定
１２２    ジョブ引き取り要求通知部
１２５    新規用ジョブキューサーバ
１２６    途中用ジョブキューサーバ
１２７    第１の途中用ジョブキューサーバ
１２８    第２の途中用ジョブキューサーバ
１３０    配信サーバ１
１３１、１４１    ジョブ引取設定
１３２、１４２    ジョブ引き取り部
１３３、１４３    引き取りジョブ判定部
１３５    文書配信サーバＡ
１４０    配信サーバ２
１４５    文書配信サーバＢ
１５５    文書配信サーバＣ
【先行技術文献】
【特許文献】
【００９１】
【特許文献１】特開２００７−３０６１３８号公報
【図１】
2016178570.tif 000003
【図２】
2016178570.tif 000004
【図３】
2016178570.tif 000005
【図４】
2016178570.tif 000006
【図５】
2016178570.tif 000007
【図６】
2016178570.tif 000008
【図７】
2016178570.tif 000009
【図８】
2016178570.tif 000010
【図９】
2016178570.tif 000011
【図１０】
2016178570.tif 000012
【図１１】
2016178570.tif 000013
【図１２】
2016178570.tif 000014
【図１３】
2016178570.tif 000015