(57)【要約】      （修正有）【課題】処理の重複実行を防ぐことができる情報処理システム、情報処理装置及びプログラムを提供する。【解決手段】一台以上の情報処理装置を有する情報処理システムであって、処理待ちの処理要求を保持する保持手段２３と、保持手段を監視し、保持手段に保持される処理待ちの処理要求を取得して、処理待ちの処理要求に対応する処理を行う複数の処理手段１４ａ、１４ｂと、処理要求の状態を表す情報２４を記憶する記憶手段２１と、を有し、処理手段１４ａ、１４ｂは、取得した処理待ちの処理要求の状態を表す情報２４を記憶手段２１から取得する状態取得手段と、情報２４を確認し、確認した結果に基づいて保持手段２３から取得した処理待ちの処理要求に対応する処理を行うか否かを制御する状態制御手段とを有する。【選択図】図９
2015106345.tif 000002
【特許請求の範囲】
【請求項１】
一台以上の情報処理装置を有するように構成される情報処理システムであって、
処理待ちの処理要求を保持する保持手段と、
前記保持手段を監視し、前記保持手段に保持される処理待ちの処理要求を取得して、処理待ちの処理要求に対応する処理を行う複数の処理手段と、
処理要求の状態を表す情報を記憶する記憶手段と、
を有し、
前記処理手段は、前記保持手段から取得した処理待ちの処理要求の状態を表す情報を前記記憶手段から取得する状態取得手段と、
取得した処理待ちの処理要求の状態を表す情報を確認し、確認した結果に基づいて前記保持手段から取得した処理待ちの処理要求に対応する処理を行うか否かを制御する状態制御手段と、
を有することを特徴とする情報処理システム。
【請求項２】
前記状態制御手段は、取得した処理待ちの処理要求の状態を表す情報が他の処理手段による処理中であることを示しているとき、取得した処理待ちの処理要求に対応する処理を行わないように制御すること
を特徴とする請求項１記載の情報処理システム。
【請求項３】
取得した処理待ちの処理要求の状態を表す情報が他の処理手段による処理中であることを示しているとき、取得した処理待ちの処理要求を前記保持手段に保持し直させるように制御する保持制御手段を更に有すること
を特徴とする請求項２記載の情報処理システム。
【請求項４】
前記状態制御手段は、取得した処理待ちの処理要求の状態を表す情報が他の処理手段により完了したことを示しているとき、取得した処理待ちの処理要求に対応する処理を行わないように制御し、
前記保持制御手段は、取得した処理待ちの処理要求を前記保持手段から削除させるように制御すること
を特徴とする請求項３記載の情報処理システム。
【請求項５】
前記状態制御手段は、取得した取得した処理待ちの処理要求の状態を表す情報が他の処理手段による処理中であることを示しているときであって、処理待ちの処理要求の状態を表す情報が他の処理手段による処理中であることを示してから所定時間が経過している場合に、取得した処理待ちの処理要求に対応する処理を行うように制御すること
を特徴とする請求項２記載の情報処理システム。
【請求項６】
前記状態制御手段は、前記保持手段から取得した処理待ちの処理要求の状態を表す情報を前記状態取得手段が前記記憶手段から取得できなければ、取得した処理待ちの処理要求に対応する処理を行うように制御すると共に、前記保持手段から取得した処理待ちの処理要求の状態を表す情報が処理手段により処理中であることを示すように前記記憶手段に記憶させること
を特徴とする請求項１乃至５何れか一項記載の情報処理システム。
【請求項７】
前記保持手段はキューであり、処理待ちの処理要求を取得した前記処理手段が処理待ちの処理要求に対応する処理を行っている間、前記処理手段との接続（コネクション）の切断を検知すると、前記処理手段により取得された処理待ちの処理要求を他の処理手段から取得可能な状態に更新すること
を特徴とする請求項１乃至６何れか一項記載の情報処理システム。
【請求項８】
処理待ちの処理要求を取得して、処理待ちの処理要求に対応する処理を行う情報処理装置であって、
処理待ちの処理要求を保持する保持手段を監視し、前記保持手段に保持される処理待ちの処理要求を取得する処理要求取得手段と、
前記保持手段から取得した処理待ちの処理要求の状態を表す情報を、処理要求の状態を表す情報を記憶する記憶手段から取得する状態取得手段と、
取得した処理待ちの処理要求の状態を表す情報を確認し、確認した結果に基づいて前記保持手段から取得した処理待ちの処理要求に対応する処理を行うか否かを制御する状態制御手段と、
を有することを特徴とする情報処理装置。
【請求項９】
処理待ちの処理要求を取得して、処理待ちの処理要求に対応する処理を行う情報処理装置を、
処理待ちの処理要求を保持する保持手段を監視し、前記保持手段に保持される処理待ちの処理要求を取得する処理要求取得手段、
前記保持手段から取得した処理待ちの処理要求の状態を表す情報を、処理要求の状態を表す情報を記憶する記憶手段から取得する状態取得手段、
取得した処理待ちの処理要求の状態を表す情報を確認し、確認した結果に基づいて前記保持手段から取得した処理待ちの処理要求に対応する処理を行うか否かを制御する状態制御手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
従来、データ変換要求管理手段と、メッセージキューと、ジョブ情報管理データベースと、複数の変換手段とを含む構成の非同期変換サーバが知られている。複数の変換手段はメッセージキューの対応するキューを監視しており、キューに入ったリクエストに対応する処理を実行していた（例えば特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
メッセージキューの対応するキューを監視しているｗｏｒｋｅｒ等のジョブ処理装置はキューに入ったリクエストに対応するジョブ処理を実行している間、メッセージキューとの接続（コネクション）を維持する。
【０００４】
しかしながら、メッセージキューとジョブ処理装置との接続はジョブ処理中に切断されてしまう場合があった。ジョブ処理装置との接続が切断されたメッセージキューは接続が切断されたジョブ処理装置がジョブ処理中であったリクエストを、再びジョブ処理装置によるリクエストの取得が可能な状態に更新する。
【０００５】
このため、他のジョブ処理装置がジョブ処理中であることを確認できないジョブ処理装置はキューに入ったリクエストに対応するジョブ処理を他のジョブ処理装置と重複して実行してしまうという問題があった。
【０００６】
本発明の実施の形態は、上記の点に鑑みなされたもので、処理の重複実行を防ぐことができる情報処理システム、情報処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記目的を達成するために本願請求項１は、一台以上の情報処理装置を有するように構成される情報処理システムであって、処理待ちの処理要求を保持する保持手段と、前記保持手段を監視し、前記保持手段に保持される処理待ちの処理要求を取得して、処理待ちの処理要求に対応する処理を行う複数の処理手段と、処理要求の状態を表す情報を記憶する記憶手段と、を有し、前記処理手段は、前記保持手段から取得した処理待ちの処理要求の状態を表す情報を前記記憶手段から取得する状態取得手段と、取得した処理待ちの処理要求の状態を表す情報を確認し、確認した結果に基づいて前記保持手段から取得した処理待ちの処理要求に対応する処理を行うか否かを制御する状態制御手段と、を有することを特徴とする。
【発明の効果】
【０００８】
本発明の実施の形態によれば、処理の重複実行を防ぐことができる。
【図面の簡単な説明】
【０００９】
【図１】本実施形態に掛かるジョブ処理システムの一例の構成図である。
【図２】本実施形態に係るコンピュータの一例のハードウェア構成図である。
【図３】本実施形態に係るジョブ処理管理装置の一例の処理ブロック図である。
【図４】本実施形態に係るジョブ処理装置の一例の処理ブロック図である。
【図５】キューとジョブ処理装置との対応付けの一例の説明図である。
【図６】タスク情報テーブルの一例の構成図である。
【図７】メッセージキューとジョブ処理装置との接続が切断されたときの問題を表した説明図である。
【図８】本実施形態のジョブ処理システムにおいてＭＱとジョブ処理装置との接続が切断されないときの処理手順を表した一例の説明図である。
【図９】本実施形態のジョブ処理システムにおいてＭＱとジョブ処理装置との接続が切断されたときの処理手順を表した一例の説明図である。
【図１０】本実施形態のジョブ処理システムにおいてＭＱとジョブ処理装置との接続が切断されたときの処理手順を表した他の例の説明図である。
【図１１】本実施形態のジョブ処理システムにおいてＭＱとジョブ処理装置との接続が切断されたときの処理手順を表した他の例の説明図である。
【図１２】タスク情報の一例の構成図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施形態について図面を参照しながら説明する。なお、本実施形態では情報処理システムの一例としてのジョブ処理システムを説明する。
［第１の実施形態］
＜システム構成＞
図１は本実施形態に掛かるジョブ処理システムの一例の構成図である。図１のジョブ処理システム１は、ジョブ要求装置１０、ジョブ管理装置１１、共有ファイルストレージ１２、ジョブ処理管理装置１３、複数のジョブ処理装置１４がＬＡＮやインターネットなどのネットワークＮ１を介して接続された構成である。
【００１１】
ジョブ要求装置１０はユーザから印刷要求などのジョブの登録要求を受け付け、ジョブの登録をジョブ管理装置１１に要求する。ジョブ要求装置１０は、汎用的なＰＣや複合機など、ジョブの登録をジョブ管理装置１１に要求可能な装置や機器であればよい。例えばジョブ要求装置１０はスマートフォンや携帯電話などの端末装置であってもよい。
【００１２】
ジョブ管理装置１１はジョブ要求装置１０からジョブの登録の要求を受け付け、ジョブに含まれるデータを共有ファイルストレージ１２に登録する。また、ジョブ管理装置１１はジョブに必要な処理を判断し、ジョブ処理のリクエストをジョブ処理管理装置１３に送信する。
【００１３】
ジョブ処理管理装置１３はジョブ処理のリクエストをジョブ管理装置１１から受信すると、ジョブ処理に対応するメッセージキューのキューにジョブ処理のリクエストに対応するメッセージを入れる。ジョブ処理管理装置１３は受信したリクエストに対応するジョブ情報をジョブ情報管理ＤＢ２１に登録する。
【００１４】
ｗｏｒｋｅｒなどのジョブ処理装置１４は、対応するメッセージキューのキューを監視しており、監視しているキューにメッセージが入ると、そのメッセージに対応するリクエストのジョブ情報を取得する。また、ジョブ処理装置１４は、取得したジョブ情報に基づいて、リクエストに対応するデータを共有ファイルストレージ１２から取得する。
【００１５】
このとき、ジョブ処理装置１４は取得したジョブ情報に対応するタスク情報テーブルの状態を確認し、確認した結果に基づいて異なる処理を行う。なお、タスク情報テーブルの状態を確認した結果に基づく異なる処理の詳細は後述する。タスク情報テーブルの状態を確認した結果に基づき、ジョブ処理を実行すると判断した場合には、ジョブ処理装置１４はリクエストに対応するジョブ処理を行う。
【００１６】
具体的にジョブ処理装置１４は、リクエストに対応するデータに対して、リクエストに対応するジョブ処理を行う。ジョブ処理装置１４はジョブ処理後のデータを共有ファイルストレージ１２に登録する場合もある。また、ジョブ処理装置１４はジョブ処理の結果に基づき、ジョブ情報管理ＤＢ２１に登録してあるジョブ情報を書き換えて更新する。
【００１７】
なお、本実施形態のジョブ処理システム１におけるタスク情報テーブルの状態を確認した結果に基づく異なる処理は、後述するように、ジョブ処理装置１４による処理の重複実行を防ぐためのものである。図１のジョブ処理システム１の構成は一例であり、他の構成であってもよい。
【００１８】
＜ハードウェア構成＞
例えば図１に示すジョブ要求装置１０、ジョブ管理装置１１、共有ファイルストレージ１２、ジョブ処理管理装置１３及びジョブ処理装置１４は、図２に示すハードウェア構成のコンピュータ等により実現される。図２は、本実施形態に係るコンピュータの一例のハードウェア構成図である。
【００１９】
図２に示したコンピュータ１００は、入力装置１０１、表示装置１０２、外部Ｉ／Ｆ１０３、ＲＡＭ１０４、ＲＯＭ１０５、ＣＰＵ１０６、通信Ｉ／Ｆ１０７、及びＨＤＤ１０８などを備え、それぞれがバスＢで相互に接続されている。なお、入力装置１０１及び表示装置１０２は必要なときに接続して利用する形態であってもよい。
【００２０】
入力装置１０１はキーボードやマウスなどを含み、ユーザが各操作信号を入力するのに用いられる。表示装置１０２はディスプレイなどを含み、コンピュータ１００による処理結果を表示する。
【００２１】
通信Ｉ／Ｆ１０７はコンピュータ１００をネットワークＮ１に接続するインタフェースである。これにより、コンピュータ１００は通信Ｉ／Ｆ１０７を介してデータ通信を行うことができる。
【００２２】
ＨＤＤ１０８はプログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータは、例えばコンピュータ１００全体を制御する基本ソフトウェアであるＯＳや、ＯＳ上において各種機能を提供するアプリケーションソフトウェアなどである。
【００２３】
外部Ｉ／Ｆ１０３は、外部装置とのインタフェースである。外部装置には、記録媒体１０３ａなどがある。これにより、コンピュータ１００は外部Ｉ／Ｆ１０３を介して記録媒体１０３ａの読み取り及び／又は書き込みを行うことができる。記録媒体１０３ａにはフレキシブルディスク、ＣＤ、ＤＶＤ、ＳＤメモリカード、ＵＳＢメモリなどがある。
【００２４】
ＲＯＭ１０５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１０５には、コンピュータ１００の起動時に実行されるＢＩＯＳ、ＯＳ設定、及びネットワーク設定などのプログラムやデータが格納されている。ＲＡＭ１０４は、プログラムやデータを一時保持する揮発性の半導体メモリである。
【００２５】
ＣＰＵ１０６は、ＲＯＭ１０５やＨＤＤ１０８などの記憶装置からプログラムやデータをＲＡＭ１０４上に読み出し、処理を実行することで、コンピュータ１００全体の制御や機能を実現する演算装置である。
【００２６】
本実施形態に係るジョブ要求装置１０、ジョブ管理装置１１、共有ファイルストレージ１２、ジョブ処理管理装置１３及びジョブ処理装置１４は、上記したコンピュータ１００のハードウェア構成により後述するような各種処理を実現できる。
【００２７】
＜ソフトウェア構成＞
《ジョブ処理管理装置》
本実施形態に係るジョブ処理管理装置１３は例えば図３に示す処理ブロックにより実現される。図３は本実施形態に係るジョブ処理管理装置の一例の処理ブロック図である。
【００２８】
図３のジョブ処理管理装置１３はプログラムを実行することにより、ジョブ情報管理ＤＢ２１、ジョブ要求管理部２２、メッセージキュー２３を実現している。ジョブ処理管理装置１３はジョブ処理装置１４と共に非同期ジョブ処理サービスを提供する。
【００２９】
ジョブ要求管理部２２はジョブ管理装置１１から送信されたジョブ処理のリクエストを受け取る。ジョブ要求管理部２２はジョブ処理のリクエストを解析し、ジョブ処理に対応するメッセージキュー２３のキューに、ジョブ処理のリクエストに対応するメッセージを入れる。
【００３０】
また、ジョブ要求管理部２２はメッセージキュー２３へメッセージを入れることと並行して、ジョブ管理装置１１から送信されたジョブ処理のリクエストに対応するジョブ情報をジョブ情報管理ＤＢ２１に登録する。
【００３１】
ジョブ情報管理ＤＢ２１に登録されるジョブ情報には、ジョブのデータが登録されている場所（共有ファイルストレージ１２上のＵＲＩ）、ジョブ処理の種類、リクエストの状態などが含まれる。リクエストの状態には「処理前」「処理中」「完了」「エラー」などがある。リクエストの状態は、ジョブ処理の状態を表す。
【００３２】
ジョブ情報管理ＤＢ２１には後述のタスク情報テーブル２４も登録されている。タスク情報テーブル２４には後述するように、ジョブを構成するタスクの状態が含まれる。タスクの状態には「処理中」「完了」「エラー」などがある。タスクの状態は、ジョブを構成するタスク処理の状態を表す。
【００３３】
メッセージキュー２３は複数のジョブ処理装置１４から監視されているキューを有している。キューはジョブ処理の種類ごとに設けられている。キューにはジョブ処理の種類が合致したリクエストに対応するメッセージが入れられる。キューに入れられたメッセージはキューを監視しているジョブ処理装置１４に取得される。
【００３４】
《ジョブ処理装置》
本実施形態に係るジョブ処理装置１４は、例えば図４に示す処理ブロックにより実現される。図４は本実施形態に係るジョブ処理装置の一例の処理ブロック図である。図４に示したジョブ処理装置１４はプログラムを実行することで、メッセージ取得部３１、ジョブ情報取得部３２、タスク情報取得部３３、状態制御部３４、データ取得部３５、ジョブ処理実行部３６、メッセージキュー制御部３７を実現している。
【００３５】
メッセージ取得部３１は対応するメッセージキュー２３のキューを監視しており、監視するキューにメッセージが入ると、そのメッセージを取得する。ジョブ情報取得部３２はメッセージ取得部３１が取得したメッセージに対応するリクエストのジョブ情報をジョブ情報管理ＤＢ２１から取得する。
【００３６】
また、タスク情報取得部３３はジョブ情報取得部３２が取得したジョブ情報に対応するタスク情報をタスク情報テーブル２４から取得する。状態制御部３４はタスク情報取得部３３が取得したタスク情報のタスクの状態を確認し、確認した結果に基づいて後述するような異なる処理を行う。状態制御部３４がジョブ処理を実行すると判断した場合、データ取得部３５はジョブ情報取得部３２が取得したジョブ情報に基づいて、共有ファイルストレージ１２からリクエストに対応するデータを取得する。
【００３７】
ジョブ処理実行部３６は、リクエストに対応するデータに対して、リクエストに対応するジョブ処理を実行する。ジョブ処理実行部３６はジョブ処理の結果に基づき、ジョブ情報管理ＤＢ２１に登録してあるジョブ情報を書き換えて更新する。
【００３８】
メッセージキュー制御部３７は状態制御部３４が確認したタスク情報のタスクの状態に応じて、後述するようにメッセージキュー２３を制御する。例えばメッセージキュー制御部３７はメッセージキュー２３のキューに入れられているメッセージの削除、メッセージの再登録（ｒｅｑｕｅｕｅ）やメッセージの取得（ｐｏｐ）が可能な状態への更新などをメッセージキュー２３に行わせる。なお、メッセージキュー制御部３７によるメッセージキュー２３の制御はコマンドなどの命令により行ってもよいし、情報を通知することで行うようにしてもよい。
【００３９】
なお、ジョブ処理装置１４は複数のタスクにより構成されるジョブ処理を実行する場合に一つのタスク処理を実行したあと、次のタスク処理に対応したメッセージキュー２３のキューに入れ直す。
【００４０】
メッセージキュー２３のキューとジョブ処理装置１４とは例えば図５のように対応付けられている。図５はキューとジョブ処理装置１４との対応付けの一例の説明図である。
【００４１】
メッセージキュー２３は複数のキューを有する。キューはジョブ処理（タスク処理）の種類ごとに分離されている。ジョブ処理装置１４は例えば情報処理装置などのｗｏｒｋｅｒノード上で動作するプログラムにより実現してもよい。なお、図５では一つのｗｏｒｋｅｒノード上で１〜３つのジョブ処理装置１４を実現している例を示している。
【００４２】
図５では一例として「ｏｆｆｉｃｅ２ｒｐｃｓ」「ｏｆｆｉｃｅ２ｐｃｌ」「ｐｄｆ２ｒｐｃｓ」「ｐｄｆ２ｐｃｌ」のジョブ処理（データ変換処理）を行うことができるジョブ処理装置１４を表している。また、図５では一例として「ｈｔｍｌ２ｐｄｆ」「ｉｍａｇｅ２ｐｄｆ」のジョブ処理（データ変換処理）を行うことができるジョブ処理装置１４を表している。
【００４３】
図５に示すように、ジョブ処理装置１４は一つ以上のキューのメッセージをポーリングにより監視する。したがって、メッセージキュー２３のキューは複数のジョブ処理装置１４からポーリングにより監視されている。ジョブ処理装置１４は、ポーリングにより監視しているキューに取得（ｐｏｐ）可能なメッセージがあれば、そのメッセージを取得してジョブ処理を行う。なお、メッセージキュー２３はジョブ処理装置１４により取得されたメッセージを取得できない状態に更新することで、他のジョブ処理装置１４が重複して実行しないようにしている。
【００４４】
《タスク情報テーブル》
図６はタスク情報テーブルの一例の構成図である。図６のタスク情報テーブル２４は項目としてジョブＩＤ、処理ｗｏｒｋｅｒ、状態、エンジン名、作成日時、更新日時を有している。
【００４５】
ジョブＩＤは、ジョブを識別する識別情報の一例である。図６のタスク情報テーブル２４の各レコードにより表されるタスクは、ジョブＩＤにより識別されるジョブに含まれている。処理ｗｏｒｋｅｒはタスク処理を行っているジョブ処理装置１４を識別する識別情報の一例である。状態はタスク処理の状態を表している。エンジン名はタスク処理の種類を表している。作成日時はタスク情報が作成された日時を表している。更新日時はタスク情報が更新された日時を表している。
【００４６】
１、５番目のレコードは処理中のタスク処理のタスク情報の一例である。２、４番目のレコードは完了したタスク処理のタスク情報の一例である。また、３番目のレコードはエラーになったタスク処理のタスク情報の一例である。
【００４７】
なお、図６に示した４、５番目のレコードはジョブＩＤが同じであるがエンジン名が異なるため、同じジョブに含まれる異なるタスク処理を表している。したがって、図６に示した４、５番目のレコードは本実施形態において重複実行を防ぐ処理と異なる。
【００４８】
＜処理の詳細＞
以下では、本実施形態に係るジョブ処理システム１の処理のうち、タスク情報のタスクの状態を確認し、確認した結果に基づいて行う異なる処理について説明する。なお、本実施形態の説明に不要な部分については適宜説明を省略している。
【００４９】
図７はメッセージキューとジョブ処理装置との接続が切断されたときの問題を表した説明図である。ジョブ処理装置（ｗｏｒｋｅｒ）１４ａはメッセージキュー（以下ではＭＱと呼ぶ）２３からメッセージを取得し、ジョブ処理を実行中である。通常、ジョブ処理装置１４ａがジョブ処理を実行している間、ＭＱ２３はジョブ処理装置１４ａとの接続を維持する。
【００５０】
ステップＳ１において、ジョブ処理装置１４ａとの接続が切断されたことをＭＱ２３は検知する。ただし、ジョブ処理装置１４ａはＭＱ２３との接続が切断された後もジョブ処理を実行しているものとする。ジョブ処理装置１４ａとの接続が切断されたことを検知したＭＱ２３はステップＳ２において、ジョブ処理装置１４ａにより取得されたメッセージを取得可能な状態に更新する。
【００５１】
ステップＳ３において、ジョブ処理装置１４ａと同じＭＱ２３のキューを監視しているジョブ処理装置１４ｂはステップＳ２で取得可能な状態に更新されたメッセージを取得してジョブ処理装置１４ｂと同じジョブ処理を行ってしまう。
【００５２】
このように、ジョブ処理装置１４ｂはＭＱ２３から取得したメッセージのジョブ処理がジョブ処理装置１４ａで処理中であることを確認できないため、ジョブ処理装置１４ａと重複してジョブ処理を実行してしまうという問題があった。
【００５３】
そこで、本実施形態のジョブ処理システム１ではジョブ処理装置１４とＭＱ２３との接続が切断された場合であっても、ジョブ処理が重複して実行されないように以下のような処理を行う。
【００５４】
図８は本実施形態のジョブ処理システムにおいてＭＱとジョブ処理装置との接続が切断されないときの処理手順を表した一例の説明図である。ステップＳ１１において、ジョブ処理装置１４は、ＭＱ２３の監視しているキューからメッセージを取得する。ＭＱ２３はジョブ処理装置１４ａにより取得されたメッセージを取得できない状態に更新する。
【００５５】
ステップＳ１２において、ジョブ処理装置１４ａはタスク情報テーブル２４のタスク情報を取得し、ステップＳ１１でＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれているか否かを確認する。
【００５６】
ステップＳ１１でＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれていれば、ジョブ処理装置１４ａはタスク情報の状態を確認し、確認した結果に基づいて後述のような異なる処理を行う。ここでは取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれていなかったものとして説明を続ける。
【００５７】
ステップＳ１２において、ジョブ処理装置１４ａはタスク情報テーブル２４にタスクの状態が「処理中」のタスク情報を書き込む。ステップＳ１３においてジョブ処理装置１４ａはジョブ処理を実行する。ジョブ処理が完了すると、ジョブ処理装置１４ａはステップＳ１４に進み、完了したジョブ処理のタスクの状態を「処理中」から「完了」に更新するようにジョブ情報管理ＤＢ２１に要求する。なお、ジョブ情報管理ＤＢ２１に対するタスクの状態を更新する要求は例えばジョブ処理装置１４の状態制御部３４が行う。
【００５８】
図９は本実施形態のジョブ処理システムにおいてＭＱとジョブ処理装置との接続が切断されたときの処理手順を表した一例の説明図である。図９は図８のステップＳ１３においてジョブ処理装置１４ａとＭＱ２３との接続が切断された場合の処理を表している。
【００５９】
ステップＳ２１において、ジョブ処理装置１４ａとの接続が切断されたことをＭＱ２３は検知する。ただし、ジョブ処理装置１４ａはＭＱ２３との接続が切断された後もジョブ処理を実行しているものとする。
【００６０】
ジョブ処理装置１４ａとの接続が切断されたことを検知したＭＱ２３は、ステップＳ２２において、ジョブ処理装置１４ａにより取得されたメッセージを取得可能な状態に更新する。
【００６１】
ステップＳ２３において、ジョブ処理装置１４ａと同じＭＱ２３のキューを監視しているジョブ処理装置１４ｂはステップＳ２２で取得可能な状態に更新されたメッセージを取得する。
【００６２】
ステップＳ２４において、ジョブ処理装置１４ｂはタスク情報テーブル２４のタスク情報を取得し、ステップＳ２３でＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれているか否かを確認する。
【００６３】
ステップＳ２３でＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれているため、ジョブ処理装置１４ｂはタスク情報のタスクの状態を確認する。
【００６４】
ジョブ処理装置１４ｂの状態制御部３４は確認したタスクの状態が「処理中」であったため、ステップＳ２３でＭＱ２３から取得したメッセージに対応するジョブ処理を実行しないと判断する。ステップＳ２５において、ジョブ処理装置１４ｂのメッセージキュー制御部３７はステップＳ２３でＭＱ２３から取得したメッセージをＭＱ２３に再登録（ｒｅｑｕｅｕｅ）させることで他のメッセージを優先して処理させる。
【００６５】
ステップＳ２５の処理の後、ジョブ処理装置１４ｂはＭＱ２３の監視しているキューからメッセージを取得し、ステップＳ２４の処理を行う。ジョブ処理装置１４ａが実行しているジョブ処理のメッセージはステップＳ２５で再登録されたため、他のメッセージが優先してＭＱ２３から読み出される。
【００６６】
このように、図９の処理手順ではＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報を取得し、タスク情報のタスクの状態を確認することで、接続が切断された場合であっても、他のジョブ処理装置がジョブ実行中であることを確認できる。結果として本実施形態のジョブ処理システム１は同一のキューを監視しているジョブ処理装置１４によるジョブ処理の重複実行を防ぐことができる。
【００６７】
図１０は本実施形態のジョブ処理システムにおいてＭＱとジョブ処理装置との接続が切断されたときの処理手順を表した他の例の説明図である。図１０は図９と同様、図８のステップＳ１３においてジョブ処理装置１４ａとＭＱ２３との接続が切断された場合の処理を表している。
【００６８】
ステップＳ３１において、ジョブ処理装置１４ａとの接続が切断されたことをＭＱ２３は検知する。ただし、ジョブ処理装置１４ａはＭＱ２３との接続が切断された後もジョブ処理を実行しているものとする。
【００６９】
ジョブ処理装置１４ａとの接続が切断されたことを検知したＭＱ２３は、ステップＳ３２において、ジョブ処理装置１４ａにより取得されたメッセージを取得可能な状態に更新する。ステップＳ３３において、ジョブ処理装置１４ａはジョブ処理を完了する。ジョブ処理が完了すると、ジョブ処理装置１４ａはステップＳ３４に進み、完了したジョブ処理のタスクの状態を「処理中」から「完了」に更新するようにジョブ情報管理ＤＢ２１に要求する。
【００７０】
ステップＳ３５において、ジョブ処理装置１４ａと同じＭＱ２３のキューを監視しているジョブ処理装置１４ｂはステップＳ３２で取得可能な状態に更新されたメッセージを取得する。
【００７１】
ステップＳ３６において、ジョブ処理装置１４ｂはタスク情報テーブル２４のタスク情報を取得し、ステップＳ３５でＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれているか否かを確認する。
【００７２】
ステップＳ３５でＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれているため、ジョブ処理装置１４ｂはタスク情報のタスクの状態を確認する。
【００７３】
ジョブ処理装置１４ｂの状態制御部３４は、確認したタスクの状態が「完了」であったため、ステップＳ３５でＭＱ２３から取得したメッセージに対応するジョブ処理を実行しないと判断する。ステップＳ３７において、ジョブ処理装置１４ｂのメッセージキュー制御部３７はステップＳ３５でＭＱ２３から取得したメッセージに対応するジョブ処理が完了しているため、ステップＳ３５で取得したメッセージをＭＱ２３に削除させる。
【００７４】
ステップＳ３７の処理の後、ジョブ処理装置１４ｂはＭＱ２３の監視しているキューからメッセージを取得し、ステップＳ３６の処理を行う。ジョブ処理装置１４ａが完了したジョブ処理のメッセージは接続が切断されたジョブ処理装置１４ａに代わり、ジョブ処理装置１４ｂにより削除させる。
【００７５】
このように、図１０の処理手順ではＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報を取得し、タスク情報のタスクの状態を確認することで、他のジョブ処理装置がジョブ処理を完了したことを確認できる。結果として本実施形態のジョブ処理システム１は同一のキューを監視しているジョブ処理装置１４によるジョブ処理の重複実行を防ぐことができる。
【００７６】
図１１は本実施形態のジョブ処理システムにおいてＭＱとジョブ処理装置との接続が切断されたときの処理手順を表した他の例の説明図である。図１１は図９と同様、図８のステップＳ１３においてジョブ処理装置１４ａとＭＱ２３との接続が切断された場合の処理を表している。
【００７７】
ステップＳ４１において、ジョブ処理装置１４ａとの接続が切断されたことをＭＱ２３は検知する。ただし、ジョブ処理装置１４ａはＭＱ２３との接続が切断された後、ジョブ処理が完了する前に故障など何らかの理由によりジョブ処理を停止したものとする。
【００７８】
ジョブ処理装置１４ａとの接続が切断されたことを検知したＭＱ２３は、ステップＳ４２において、ジョブ処理装置１４ａにより取得されたメッセージを取得可能な状態に更新する。ステップＳ４３において、ジョブ処理装置１４ａは完了する前にジョブ処理を停止する。ジョブ処理装置１４ａは、完了する前に停止したジョブ処理のタスクの状態を「処理中」から「エラー」に更新するようにジョブ情報管理ＤＢ２１に要求できなかったものとする。
【００７９】
ステップＳ４４において、ジョブ処理装置１４ａと同じＭＱ２３のキューを監視しているジョブ処理装置１４ｂはステップＳ４２で取得可能な状態に更新されたメッセージを取得する。
【００８０】
ステップＳ４５において、ジョブ処理装置１４ｂはタスク情報テーブル２４のタスク情報を取得し、ステップＳ４４でＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれているか否かを確認する。
【００８１】
ステップＳ４４でＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報がタスク情報テーブル２４に書き込まれているため、ジョブ処理装置１４ｂはタスク情報のタスクの状態を確認する。ジョブ処理装置１４ｂの状態制御部３４は確認したタスクの状態が「処理中」であることを確認する。
【００８２】
ただし、図１１の処理手順では、ジョブ処理装置１４ａがジョブ処理を実行中なのか停止しているのかを判断するため、タスクの状態が「処理中」のままで所定時間が経過したジョブ処理か否かを確認する。タスクの状態が「処理中」となってから所定時間が経過していないジョブ処理はジョブ処理を実行中と判断し、図９のステップＳ２５と同様な処理を行う。
【００８３】
なお、タスクの状態が「処理中」のままで所定時間が経過したジョブ処理は停止していると判断し、ステップＳ４４でＭＱ２３から取得したメッセージに対応するジョブ処理を実行すると判断する。ステップＳ４６において、ジョブ処理装置１４ｂはジョブ処理を実行して完了させる。そして、ジョブ処理を完了させたジョブ処理装置１４ｂはステップＳ４７に進み、完了したジョブ処理のタスクの状態を「処理中」から「完了」に更新するようにジョブ情報管理ＤＢ２１に要求する。
【００８４】
また、ジョブ処理装置１４ｂのメッセージキュー制御部３７はステップＳ４４でＭＱ２３から取得したメッセージに対応するジョブ処理が完了したため、ステップＳ４４で取得したメッセージをＭＱ２３に削除させる。
【００８５】
このように、図１１の処理手順はＭＱ２３から取得したメッセージに対応するジョブ処理のタスク情報を取得し、タスク情報のタスクの状態及び経過時間を確認することで他のジョブ処理装置が完了前に停止させたジョブ処理を検知できる。結果として本実施形態のジョブ処理システム１は何らかの理由で完了前に停止してしまったジョブ処理を引き継いで他のジョブ処理装置１４が完了させることができる。
【００８６】
なお、ジョブ処理が停止したまま、どの程度の時間が経過したらジョブ処理が停止していると判定するかは、ジョブ処理システム１の性質や運用方針、ジョブ処理の種類などにより適宜設定すればよい。
【００８７】
例えばジョブ処理の種類に応じてジョブ処理が停止していると判定する判定時間は図１２に示すようにタスク情報の項目として設定するようにしてもよい。例えば図１２のタスク情報の場合は、２０１３−０８−２９Ｔ０４：１９：１４Ｚ（５分後）にステップＳ４５の処理を行うと、ジョブ処理装置１４ａがジョブ処理中と判断し、図９のステップＳ２５と同様な処理を行う。
【００８８】
一方、２０１３−０８−２９Ｔ０４：２５：１４Ｚ（１１分後）にステップＳ４５の処理を行うと、タスクの状態が「処理中」となってから判定時間である「１０分」以上経過しているため、ジョブ処理装置１４ｂはジョブ処理が停止していると判断する。ジョブ処理装置１４ｂはタスク情報の処理ｗｏｒｋｅｒ及び更新日時を更新したあと、ステップＳ４６以降の処理を行う。
【００８９】
（まとめ）
このように、本実施形態によれば、ジョブ処理を行うジョブ処理装置１４がジョブ処理を行う前にタスク情報のタスクの状態を確認することで、他のジョブ処理装置１４が処理中又は処理中の可能性のあるジョブ処理を確認できる。したがって、本実施形態によればジョブ処理の重複実行を防ぐことができる。
【００９０】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。なお、ＭＱ２３は保持手段の一例である。ジョブ処理装置（ｗｏｒｋｅｒ）１４は処理手段の一例である。タスク情報テーブル２４は記憶手段の一例である。タスク情報取得部３３は状態取得手段の一例である。状態制御部３４は状態制御手段の一例である。メッセージキュー制御部３７は保持制御手段の一例である。処理待ちの処理要求はＭＱ２３のキューにメッセージが入れられたジョブ処理のリクエストの一例である。
【符号の説明】
【００９１】
１    ジョブ処理システム
１０    ジョブ要求装置
１１    ジョブ管理装置
１２    共有ファイルストレージ
１３    ジョブ処理管理装置
１４    ジョブ処理装置
２１    ジョブ情報管理データベース（ＤＢ）
２２    ジョブ要求管理部
２３    メッセージキュー（ＭＱ）
２４    タスク情報テーブル
３１    メッセージ取得部
３２    ジョブ情報取得部
３３    タスク情報取得部
３４    状態制御部
３５    データ取得部
３６    ジョブ処理実行部
３７    メッセージキュー制御部
１００    コンピュータ
１０１    入力装置
１０２    表示装置
１０３    外部Ｉ／Ｆ
１０３ａ    記録媒体
１０４    ＲＡＭ
１０５    ＲＯＭ
１０６    ＣＰＵ
１０７    通信Ｉ／Ｆ
１０８    ＨＤＤ
Ｂ    バス
Ｎ１    ネットワーク
【先行技術文献】
【特許文献】
【００９２】
【特許文献１】特開２０１３−１７８７４８号公報
【図１】
2015106345.tif 000003
【図２】
2015106345.tif 000004
【図３】
2015106345.tif 000005
【図４】
2015106345.tif 000006
【図５】
2015106345.tif 000007
【図６】
2015106345.tif 000008
【図７】
2015106345.tif 000009
【図８】
2015106345.tif 000010
【図９】
2015106345.tif 000011
【図１０】
2015106345.tif 000012
【図１１】
2015106345.tif 000013
【図１２】
2015106345.tif 000014