(57)【要約】【課題】  複数のデータベースに渡ってジョブに冗長性を持たせて管理しているシステムにおいて、データベースへの負荷をかけることなく、適切にジョブを処理する。【解決手段】  外部機器で実行するジョブの実行要求を受信した場合、ジョブのジョブ情報を第１のデータベースに登録する。ジョブを実行する外部機器に対するジョブについてのジョブ情報を第２のデータベースから検索する。検索されるジョブ情報に基づいて、当該ジョブ情報に対応するジョブに所定の処理を実行する。ジョブの登録に応じてジョブ情報の検索が実行されたときに少なくとも当該ジョブ情報が検索されなかった場合、登録した、情報処理装置が有する当該ジョブ情報に基づいて、当該ジョブ情報に対応するジョブに所定の処理を実行する。【選択図】  図６
2015036860.tif 000002
【特許請求の範囲】
【請求項１】
外部機器で実行されるジョブのジョブ情報を、第１のデータベースに登録するとともに、非同期で前記ジョブ情報を第２のデータベースに更に登録して、管理する情報処理装置であって、
前記外部機器で実行するジョブの実行要求を受信した場合、前記ジョブのジョブ情報を前記第１のデータベースに登録する登録手段と、
前記ジョブを実行する外部機器に対するジョブについてのジョブ情報を前記第２のデータベースから検索する検索手段と、
前記検索手段で検索されるジョブ情報に基づいて、当該ジョブ情報に対応するジョブに所定の処理を実行する実行手段とを備え、
前記登録手段によるジョブの登録に応じて前記検索手段によりジョブ情報の検索が実行されたときに少なくとも当該ジョブ情報が検索されなかった場合、前記実行手段は、前記登録手段が登録した、前記情報処理装置が有する当該ジョブ情報に基づいて、当該ジョブ情報に対応するジョブに前記所定の処理を実行する
ことを特徴とする情報処理装置。
【請求項２】
前記検索手段は、前記外部機器に対する全てのジョブについてジョブ情報を検索し、
前記実行手段は、前記登録手段によるジョブの登録に応じて前記検索手段によりジョブ情報の検索が実行されたときに検索結果が０件であった場合、前記情報処理装置が有する当該ジョブ情報に基づいて前記所定の処理を実行する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記登録手段によるジョブの登録に応じて前記検索手段によりジョブ情報の検索が実行されたときに検索結果が１件以上であった場合、当該１件以上のジョブ情報が前記登録が行われたジョブ情報であるかに関わらず、当該１件以上のジョブに前記所定の処理を実行する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記検索手段で複数のジョブに対応するジョブ情報が検索された場合、前記実行手段は、当該複数のジョブのうちの、該検索手段で検索されるジョブ情報に含まれる日時情報に基づくジョブに、前記所定の処理を実行する
ことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記実行手段は、前記検索手段で検索された複数のジョブの内、最も古い日時情報を含むジョブ情報が示すジョブに前記所定の処理を実行する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記検索手段で複数のジョブに対応するジョブ情報が検索された場合、前記実行手段は、当該複数のジョブのうちの、該検索手段で検索されるジョブ情報に含まれる優先度に基づくジョブに、前記所定の処理を実行する
ことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項７】
前記登録手段によるジョブの登録に応じて前記検索手段によりジョブ情報の検索が実行されたときに少なくとも当該ジョブ情報が検索されなかった場合、前記実行手段は、前記第１のデータベースに登録されている当該ジョブ情報に基づいて、当該ジョブ情報に対応するジョブに前記所定の処理を実行する
ことを特徴とする請求項１乃至６に記載の情報処理装置。
【請求項８】
前記外部装置は、印刷装置であり、
前記実行手段は、前記所定の処理として、当該印刷装置がジョブに基づいて印刷を行うための処理を実行する
ことを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
前記外部機器で実行するジョブのキャンセル要求を受信した場合、前記第２のデータベースに登録されている、前記キャンセル要求によるキャンセル対象のジョブ情報のステータスの更新を、前記第２のデータベースへ要求する要求手段とを更に備え、
前記実行手段は、前記要求手段によるジョブ情報のステータスの更新の要求に応じて前記検索手段によりジョブ情報の検索が実行されたときに、当該ジョブ情報に対する当該更新が反映されていなかった場合、前記実行手段は、当該ジョブ情報に対応するジョブに前記所定の処理を実行しないように制御する
ことを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
外部機器で実行されるジョブのジョブ情報を、第１のデータベースに登録するとともに、非同期で前記ジョブ情報を第２のデータベースに更に登録して、管理する情報処理システムであって、
前記外部機器で実行するジョブの実行要求を受信した場合、前記ジョブのジョブ情報を前記第１のデータベースに登録する登録手段と、
前記ジョブを実行する外部機器に対するジョブについてのジョブ情報を前記第２のデータベースから検索する検索手段と、
前記検索手段で検索されるジョブ情報に基づいて、当該ジョブ情報に対応するジョブに所定の処理を実行する実行手段とを備え、
前記登録手段によるジョブの登録に応じて前記検索手段によりジョブ情報の検索が実行されたときに少なくとも当該ジョブ情報が検索されなかった場合、前記実行手段は、前記登録手段が登録した、前記情報処理装置が有する当該ジョブ情報に基づいて、当該ジョブ情報に対応するジョブに前記所定の処理を実行する
ことを特徴とする情報処理システム。
【請求項１１】
外部機器で実行されるジョブのジョブ情報を、第１のデータベースに登録するとともに、非同期で前記ジョブ情報を第２のデータベースに更に登録して、管理する情報処理方法であって、
前記外部機器で実行するジョブの実行要求を受信した場合、前記ジョブのジョブ情報を前記第１のデータベースに登録する登録工程と、
前記ジョブを実行する外部機器に対するジョブについてのジョブ情報を前記第２のデータベースから検索する検索工程と、
前記検索工程において検索されるジョブ情報に基づいて、当該ジョブ情報に対応するジョブに所定の処理を実行する実行工程とを備え、
前記登録工程におけるジョブの登録に応じて前記検索工程においてジョブ情報の検索が実行されたときに少なくとも当該ジョブ情報が検索されなかった場合、前記実行工程では、前記登録工程において登録された、前記情報処理装置が有する当該ジョブ情報に基づいて、当該ジョブ情報に対応するジョブに前記所定の処理を実行する
ことを特徴とする情報処理方法。
【請求項１２】
請求項１乃至９のいずれか１項に記載の情報処理装置の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部機器で実行されるジョブのジョブ情報を管理する情報処理技術に関するものである。
【背景技術】
【０００２】
近年、クラウドサービスとしてインターネット上にサービスを公開するようなビジネス展開がされてきている。印刷サーバもインターネット上の印刷サービスとして機能を提供する、いわゆる、クラウド印刷サービスが求められてきている。これによるとユーザは、プリンタにパーソナルコンピュータ（ＰＣ）等の端末を接続し、固有のプリンタドライバをその端末にインストールしなくては印刷ができなかったという大きな制約から解放される。また、サービス提供側にとっても、負荷に応じてサーバリソースを追加したり設計仕様を改善したりといったことが容易に行える等の様々な開発上のメリットがある。
【０００３】
このようなクラウド印刷サービスにおける印刷ジョブキューの実現方法として、データベース（以降、ＤＢと称する）を用いる方法がある。クラウド印刷サービスに登録された異なるプリンタに対する印刷ジョブを、印刷ジョブの投入日時等の情報と合わせてＤＢに登録し、ＳＱＬ等のデータベース操作言語を用いて適切な条件を満足する印刷ジョブのみを取得することで、所望のプリンタにおける最優先の印刷ジョブを決定することができる。これによって、膨大な数のプリンタの印刷ジョブキューをＤＢ１台で実現できる。この方法は、本体のハードウェアリソースで印刷ジョブキューを実現できない安価なモデルのプリンタでも実現できるというメリットがある。さらに、ＤＢはレプリケーション等の負荷分散のための技術も多く提案されており、サービス規模拡大への対応も比較的容易に行うことができるため、クラウド印刷サービスにおける好適な印刷ジョブキューの実現方法の一つである。
【０００４】
ＤＢの負荷分散のための技術に片方向レプリケーションがある。これは、データ更新処理を受け付けるマスタＤＢと、マスタＤＢの状態をミラーリングする１台以上のスレーブＤＢからなる構成である。この構成は、１台だけのＤＢ構成に比べ、障害発生時のバックアップに加え、データ更新を伴わない参照のみのアクセスをスレーブＤＢに対して行うことで、マスタＤＢへのアクセス負荷分散が行える。片方向レプリケーションには、さらに、マスタＤＢへのデータ更新処理と、スレーブＤＢのミラーリングの完了タイミングによって、同期・非同期の片方向レプリケーションに分類される。
【０００５】
同期のレプリケーションは、マスタＤＢへのデータ更新完了時にスレーブＤＢのミラーリング完了が保証されている半面、マスタＤＢのデータ更新処理のレスポンスが遅くなるというデメリットがある。非同期レプリケーションは、マスタＤＢのデータ更新処理とスレーブＤＢのミラーリングが非同期なため、マスタＤＢのデータ更新処理のレスポンスが高速な半面、スレーブＤＢのミラーリング完了に遅延が発生することで、マスタＤＢに登録直後のデータがスレーブＤＢから取得できない時間が生じるというデメリットがある。特許文献１では、ＤＢがダウンしたときのためにジョブのバックアップを行い、ＤＢからデータが取得できない状態が発生した場合にもジョブの実行を中断することなく実行させるための技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００８―２１０１６４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１の方法は、ＤＢがダウンした際のリカバリ処理を前提としているが、ＤＢがダウンしない限りバックアップとして記憶されたジョブが参照されることはなく、また、ジョブ送信のための処理とバックアップ処理の両方が行うため処理オーバーヘッドが大きい。
【０００８】
本発明は上記課題を鑑みてなされたものであり、複数のメモリを用いてジョブを管理しているシステムにおいて、ジョブ処理のための処理負荷を抑えた上で適切にジョブを処理することができる情報処理技術を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。即ち、
外部機器で実行されるジョブのジョブ情報を、第１のデータベースに登録するとともに、非同期で前記ジョブ情報を第２のデータベースに更に登録して、管理する情報処理装置であって、
前記外部機器で実行するジョブの実行要求を受信した場合、前記ジョブのジョブ情報を前記第１のデータベースに登録する登録手段と、
前記ジョブを実行する外部機器に対するジョブについてのジョブ情報を前記第２のデータベースから検索する検索手段と、
前記検索手段で検索されるジョブ情報に基づいて、当該ジョブ情報に対応するジョブに所定の処理を実行する実行手段とを備え、
前記登録手段によるジョブの登録に応じて前記検索手段によりジョブ情報の検索が実行されたときに少なくとも当該ジョブ情報が検索されなかった場合、前記実行手段は、前記登録手段が登録した、前記情報処理装置が有する当該ジョブ情報に基づいて、当該ジョブ情報に対応するジョブに前記所定の処理を実行する。
【発明の効果】
【００１０】
本発明によれば、メモリを用いてジョブを管理しているシステムにおいて、ジョブ処理のための処理負荷を抑えた上で適切にジョブを処理することができる情報処理技術を提供できる。
【図面の簡単な説明】
【００１１】
【図１】印刷システムの全体構成を示す図である。
【図２】印刷システムのシステム構成図である。
【図３】印刷ジョブ情報を保持するジョブテーブルを示す図である。
【図４】印刷システムにおける印刷処理を示すシーケンス図である。
【図５】プリンタプロキシサービスとプリンタの通信に係る印刷処理のシーケンス図である。
【図６】最優先の印刷ジョブを決定する処理を示すフローチャートである。
【図７】最優先の印刷ジョブを決定する処理を示すフローチャートである。
【図８】印刷システムにおけるジョブキャンセル処理のシーケンスフロー図である。
【図９】最優先の印刷ジョブを決定する処理を示すフローチャートである。
【図１０】最優先の印刷ジョブを決定する処理におけるジョブキューの状態図である。
【図１１】最優先の印刷ジョブを決定する処理におけるジョブキューの状態図である。
【図１２】最優先の印刷ジョブを決定する処理におけるジョブキューの状態図である。
【図１３】最優先の印刷ジョブを決定する処理におけるジョブキューの状態図である。
【図１４】最優先の印刷ジョブを決定する処理におけるジョブキューの状態図である。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳細に説明する。尚、以下の実施形態は、特許請求の範囲に係る本発明を限定するものでなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１３】
＜実施形態１＞
本発明の実施形態の一つとして、クラウド印刷サービスにおける印刷システムを例にとって説明する。クラウド印刷サービスにおける印刷システムの印刷ジョブ管理サービスは、クライアント端末から印刷ジョブを受信すると、非同期レプリケーション構成のマスタＤＢ（第１のデータベース）に印刷ジョブ情報を登録するとともに、その印刷ジョブ情報をスレーブＤＢ（第２のデータベース）にも登録する。また、指定されたプリンタに対する未実行の印刷ジョブをスレーブＤＢから全て取得し、プリンタで実行すべき最優先ジョブ（最優先の印刷ジョブ）を決定してプリンタに送信することで印刷ジョブキューを実現する。
【００１４】
以降では、上記のような複数のデータベースに渡ってジョブに冗長性を持たせて管理しているシステムにおいて、マスタＤＢに登録直後の印刷ジョブ情報がスレーブＤＢから取得できない場合でも、最優先の印刷ジョブを正しく決定し、プリンタに送信するための方法について説明する。
【００１５】
図１は印刷システムの全体構成を示す図である。
【００１６】
図１において、サーバ群１０１、クライアント端末１０３、印刷装置であるプリンタ１０４〜１０５は、ネットワーク１０２を介して接続されている。サーバ群１０１は印刷システムを実現するサーバ群であり、クライアント端末１０３からの印刷要求を受け付けると、印刷ジョブ情報をサーバ群１０１内のデータベースに登録する。また、データベースから印刷ジョブ情報を取得し、印刷データを生成してプリンタ１０４〜１０５へ送信する。クライアント端末１０３は、クライアント端末１０３内に保存された文書データや画像データ、Ｗｅｂサービス等から取得可能な文書データや画像データの印刷要求をサーバ群１０１へ送信し、プリンタ１０４〜１０５で印刷することができる。プリンタ１０４〜１０５は、クライアント端末１０３から印刷要求のある文書データや画像データの印刷データを取得して印刷を行う。ネットワーク１０２は、例えば、インターネットにより実現される、いわゆる通信ネットワークである。
【００１７】
＜システム構成＞
図２は印刷システムのシステム構成図である。
【００１８】
マスタジョブＤＢ２０１と、スレーブジョブＤＢ２０２は、非同期のレプリケーション構成データベースである。マスタジョブＤＢ２０１に対してデータの登録（挿入）、更新、削除等のデータ内容の更新が伴う処理が実行されると、マスタジョブＤＢ２０１はデータ内容の更新情報をスレーブジョブＤＢ２０２に送信する。スレーブジョブＤＢ２０２は、受信した更新情報を自身のデータベース内のデータ内容に反映する。
【００１９】
Ｗｅｂ印刷アプリケーション２０３は、クライアント端末１０３からの印刷要求を受け付け、印刷ジョブを生成してＷｅｂ印刷バックエンドサービス２０４に送信する。
【００２０】
Ｗｅｂ印刷バックエンドサービス２０４は、Ｗｅｂ印刷アプリケーション２０３から印刷ジョブを受信し、マスタジョブＤＢ２０１にその印刷ジョブに係る印刷ジョブ情報を登録する。また、Ｗｅｂ印刷バックエンドサービス２０４は、スレーブジョブＤＢ２０２より印刷ジョブ情報を取得し、印刷データ変換サービス２０５に対し印刷データ生成要求を送信する。更に、Ｗｅｂ印刷バックエンドサービス２０４は、印刷データ変換サービス２０５より印刷データの生成完了通知を受信すると、プリンタプロキシサービス２０６を介してプリンタ１０４〜１０５に印刷開始要求を送信する。また、Ｗｅｂ印刷バックエンドサービス２０４は、プリンタ１０４〜１０５からの印刷完了要求等の通知をプリンタプロキシサービス２０６を介して受信すると、マスタジョブＤＢ２０１より該当する印刷ジョブ情報を削除する。
【００２１】
印刷データ変換サービス２０５は、Ｗｅｂ印刷バックエンドサービス２０４から印刷データ生成要求を受信すると、印刷ジョブから印刷データを生成する。プリンタプロキシサービス２０６は、Ｗｅｂ印刷バックエンドサービス２０４からの要求に応じてプリンタ１０４〜１０５と通信を行う。また、プリンタプロキシサービス２０６は、プリンタ１０４〜１０５からの印刷完了要求やエラー通知等の通知を受信すると、Ｗｅｂ印刷バックエンドサービス２０４にその通知を送信する。
【００２２】
ここで、Ｗｅｂ印刷アプリケーション２０３、Ｗｅｂ印刷バックエンドサービス２０４、印刷データ変換サービス２０５、プリンタプロキシサービス２０６はそれぞれ独立したプログラムであり、それぞれ別々の情報処理装置に配置することが可能である。これらのプログラムは、それぞれネットワークに接続された情報処理装置（情報処理システム）に配置され、それぞれのプログラム間で通信を行う。また、これらのプログラムを同一の情報処理装置に配置することも可能である。
【００２３】
尚、これらシステム構成においてサーバ群１０１にすべてのサービスが含まれる例を説明しているが、これらは全て別々のサーバに分散させる構成や、上記の各種サービスの内、いくつかのサービスの組み合わせを各々別々のサーバに配置する構成も可能である。
【００２４】
ここで、サーバ群１０１やクライアント端末１０３を実現する情報処理装置は、汎用コンピュータに搭載される標準的な構成要素（例えば、ＣＰＵ、ＲＡＭ、ＲＯＭ、ハードディスク、外部記憶装置、ネットワークインタフェース、ディスプレイ、キーボード、マウス等）を有している。そして、サーバ群１０１やクライアント端末１０３が実行する処理（例えば、後述する図４〜図９のフローチャートに示す処理）は、例えば、それぞれに搭載されるＣＰＵが、ＲＯＭ等のメモリに記憶されているプログラムを実行し、制御することで実現することができる。
【００２５】
＜データベースを用いた印刷ジョブキューの実現例＞
印刷システムにおける、データベースを用いる印刷ジョブキューの実現方法の一例を説明する。
【００２６】
図３のジョブテーブル３００は、マスタジョブＤＢ２０１及びスレーブジョブＤＢ２０２で保持される、印刷ジョブに係る印刷ジョブ情報が格納された印刷ジョブテーブルを示している。ジョブＩＤ３０１は、印刷ジョブに一意に割り当てられるＩＤで、ジョブテーブル３００内ではこの値は重複することなく、ジョブテーブル３００内で印刷ジョブを検索する際の主キーとなる。
【００２７】
プリンタＩＤ３０２は、該当するジョブＩＤ３０１の印刷ジョブを実行するプリンタを一意に示すＩＤである。ジョブ受付日時３０３は、印刷ジョブが受け付けられた日時（ジョブを時系列に管理するための日時情報）を示している。例えば、日時には、Ｗｅｂ印刷アプリケーション２０３がクライアント端末１０３から印刷要求を受け付けた日時や、Ｗｅｂ印刷バックエンドサービス２０４がＷｅｂ印刷アプリケーション２０３より印刷ジョブを受信した日時、または、マスタジョブＤＢ２０１に印刷ジョブが登録された日時等を指定する。
【００２８】
ジョブステータス３０４は、該当するジョブＩＤ３０１の印刷ジョブの実行状態を示している。実行状態としては、処理済の印刷ジョブを示す「ＤＯＮＥ」、処理中の印刷ジョブを示す「ＰＲＩＮＴＩＮＧ」、キャンセルされた印刷ジョブを示す「ＣＡＮＣＥＬＥＤ」、送信中の印刷ジョブを示す「ＳＥＮＤＩＮＧ」、未処理の印刷ジョブを示す「ＱＵＥＵＥＤ」、エラーが発生している印刷ジョブを示す「ＥＲＲＯＲ」がある。
【００２９】
ジョブ優先度３０５は、プリンタ１０４〜１０５で印刷ジョブを実行する順序に、ジョブ受付日時３０３以外の情報が条件として使用される場合の印刷ジョブの優先度（優先度情報）を示している。優先度としては、通常の優先度（第１の優先度）を示す「ＮＯＲＭＡＬ」、通常の優先度よりも高い優先度（第２の優先度）を示す「ＨＩＧＨ」がある。
【００３０】
ジョブテーブル３００には、他にも印刷ジョブ毎に管理、保持されるデータを格納することができる。例えば、印刷設定情報や、印刷対象となる文書データや画像データが格納された場所を示すＵＲＬ（Ｕｎｉｆｉｅｄ  Ｒｅｓｏｕｒｃｅ  Ｌｏｃａｔｏｒ）、該当する印刷ジョブをＷｅｂ印刷アプリケーション２０３に送信したユーザを一意に表すユーザＩＤ等が考えられるが、それ以外の項目が存在していても構わない。
【００３１】
Ｗｅｂ印刷バックエンドサービス２０４は、Ｗｅｂ印刷アプリケーション２０３から印刷ジョブを受信すると、マスタジョブＤＢ２０１のジョブテーブル３００にその印刷ジョブに係る印刷ジョブ情報を登録する。その後、Ｗｅｂ印刷バックエンドサービス２０４は、登録した印刷ジョブを実行するプリンタに対する印刷ジョブの内、未処理の印刷ジョブをスレーブジョブＤＢ２０２より検索する。
【００３２】
この検索処理は、ジョブテーブル３００を例にすると、検索条件として、プリンタＩＤ３０２が所定のプリンタＩＤと一致すること、かつ、ジョブステータス３０４が実行待ちを表す「ＱＵＥＵＥＤ」である印刷ジョブのジョブＩＤ３０１の一覧を検索、取得するように記述されたデータベース操作言語によって実現することができる。このようにすれば、複数のプリンタの様々な実行状態の印刷ジョブが混在するデータベース上から、特定のプリンタに対する未処理の印刷ジョブのみを検索することができる。また、検索条件にさらに「ジョブ受付日時３０３が最も古いもの」という条件を追加すれば、未処理の印刷ジョブで最初に登録された印刷ジョブを一意に特定することができる。
【００３３】
また、ジョブ受付日時３０３以外の条件を最優先の印刷ジョブの決定条件として追加することも可能である。例えば、ジョブ優先度３０５は、該当するジョブＩＤが示す印刷ジョブの優先度を示している。ユーザがクライアント端末１０３からＷｅｂ印刷アプリケーション２０３に対して印刷要求を送信する際に、他の印刷ジョブよりも優先して実行したい場合にのみ、この値を「ＨＩＧＨ」に設定して登録する。Ｗｅｂ印刷バックエンドサービス２０４による最優先の印刷ジョブの決定時に、ジョブ受付日時３０３でより古い印刷ジョブがあっても、ジョブ優先度３０５が「ＨＩＧＨ」の印刷ジョブが存在する場合にはその印刷ジョブを優先してプリンタに送信する。
【００３４】
尚、本実施形態では、データベースへの検索条件を用いて最優先の印刷ジョブを一意に決定する構成を説明しているが、これに限定されない。例えば、Ｗｅｂ印刷バックエンドサービス２０４が、スレーブジョブＤＢ２０２から未処理の印刷ジョブを全て取得し、これらの印刷ジョブの内、Ｗｅｂ印刷バックエンドサービス２０４が最優先の印刷ジョブを決定する構成であっても実現することができる。
【００３５】
以上のように、本実施形態においては、マスタジョブＤＢ２０１がＷｅｂ印刷バックエンドサービス２０４からのジョブ登録を受け付け、また、ジョブ登録完了の通知を行う。そして、ジョブはスレーブジョブＤＢ２０２に登録され、Ｗｅｂ印刷バックエンドサービス２０４は、ジョブをスレーブジョブＤＢ２０２から読み出す。このように、ジョブＤＢとしてのこれらの処理がマスタジョブＤＢ２０１、スレーブＤＢ２０２に分散されるため、ＤＢの処理負荷を低減することができる。上記処理について、図４を用いて詳細に説明する。
【００３６】
＜印刷処理＞
図４は印刷システムにおける印刷処理を示すシーケンス図である。
【００３７】
Ｓ４０１で、クライアント端末１０３より印刷要求を受け付けたＷｅｂ印刷アプリケーション２０３は、Ｗｅｂ印刷バックエンドサービス２０４に対して生成した印刷ジョブを送信する。
【００３８】
Ｓ４０２で、Ｗｅｂ印刷バックエンドサービス２０４は、Ｗｅｂ印刷アプリケーション２０３より受信した印刷ジョブをマスタジョブＤＢ２０１に登録する。
【００３９】
Ｓ４０３で、マスタジョブＤＢ２０１は、登録した印刷ジョブの印刷ジョブ情報をスレーブジョブＤＢ２０２にＤＢの更新内容として通知する。Ｓ４０５で、マスタジョブＤＢ２０１は、スレーブジョブＤＢ２０２の印刷ジョブの登録完了を待たずに、Ｗｅｂ印刷バックエンドサービス２０４に対して印刷ジョブ登録の完了を通知する。このように、本実施形態のシステムは、マスタジョブＤＢ２０１とスレーブジョブＤＢ２０２において印刷ジョブの登録の同期処理を行わない非同期のシステムである。これにより、同期を取ることで印刷ジョブの処理が遅延してしまうことを防ぐことができる。
【００４０】
Ｓ４０４で、スレーブジョブＤＢ２０２は、Ｓ４０３でマスタジョブＤＢ２０１よりＤＢの更新内容（印刷ジョブ情報）を受信すると、自身が保持するデータ内容にこの印刷ジョブ情報からなる印刷ジョブを登録する。この印刷ジョブの登録処理が完了するまでの印刷ジョブ未登録期間Ｔ４０は、スレーブジョブＤＢ２０２から、この印刷ジョブが取得できない期間となる。
【００４１】
Ｓ４０６で、Ｗｅｂ印刷バックエンドサービス２０４は、Ｗｅｂ印刷アプリケーション２０３に対して印刷ジョブの受信通知を行う。続いて、Ｓ４０７で、Ｗｅｂ印刷バックエンドサービス２０４は、スレーブジョブＤＢ２０２に対して、Ｓ４０１で受信した印刷ジョブを実行するプリンタに対する全ての印刷ジョブの検索を行うためにジョブ検索要求を送信する。
【００４２】
Ｓ４０８で、Ｗｅｂ印刷バックエンドサービス２０４からジョブ検索要求を受信したスレーブジョブＤＢ２０２は、自身のデータベース内から指定されたプリンタに対する全ての印刷ジョブを検索し、その印刷ジョブ検索結果をＷｅｂ印刷バックエンドサービス２０４に返信する。
【００４３】
上記のように、本実施形態におけるシステムは、マスタジョブＤＢ２０１、スレーブジョブＤＢ２０２で、印刷ジョブ登録の同期を取らず、Ｓ４０５で印刷ジョブ登録完了を通知する非同期のシステムである。そのため、同期を取ることで印刷ジョブの処理が遅延してしまうことを防ぐことができる。
【００４４】
しかし、一方で、Ｓ４０７でＷｅｂ印刷バックエンドサービス２０４は、スレーブジョブＤＢ２０４にジョブが登録されたことを確認しないまま、印刷ジョブを検索する。そのため、Ｓ４０７における印刷ジョブの検索が印刷ジョブ未登録期間Ｔ４０内に行われた場合、Ｓ４０２でマスタジョブＤＢ２０１に登録した印刷ジョブはスレーブジョブＤＢ２０２にはまだ存在しないため、検索結果に含まれない。従って、スレーブジョブＤＢ２０２に指定したプリンタに対する印刷ジョブが１つも見つからない場合は検索結果が０件としてＷｅｂ印刷バックエンドサービス２０４に返信される。一方、スレーブジョブＤＢ２０２に、Ｓ４０２で登録した印刷ジョブ以外の印刷ジョブが先に登録済の場合は、検索結果は１件以上になる。
【００４５】
一方、Ｓ４０８が印刷ジョブ未登録期間Ｔ４０後に行われた場合は、Ｓ４０２でマスタジョブＤＢ２０１に登録した印刷ジョブがスレーブジョブＤＢ２０２にも存在するため、検索結果に含まれることになる。従って、検索結果は必ず１件以上となる。
【００４６】
Ｓ４０９で、Ｗｅｂ印刷バックエンドサービス２０４は、Ｓ４０８で受信した検索結果に含まれる印刷ジョブから、最優先の印刷ジョブを決定する。最優先の印刷ジョブの決定方法の詳細については以下で説明する。Ｓ４１０で、Ｗｅｂ印刷バックエンドサービス２０４は、印刷データ変換サービス２０５によって作成された印刷データを、プリンタプロキシサービス２０６を介してプリンタ１０４〜１０５に送信して印刷処理を実行する。尚、印刷実行処理の詳細については図５を用いて後述する。Ｓ４１１で、Ｗｅｂ印刷バックエンドサービス２０４は、Ｗｅｂ印刷アプリケーション２０３に対して印刷完了通知を行う。
【００４７】
Ｓ４１２で、Ｗｅｂ印刷アプリケーション２０３は、印刷要求を受け付けたクライアント端末１０３に対して印刷完了の通知等の印刷完了処理を行う。
【００４８】
Ｓ４１３で、Ｗｅｂ印刷バックエンドサービス２０４は、マスタジョブＤＢ２０１に対して、Ｓ４１０で実行した印刷ジョブのデータベースからの削除要求を送信する。
【００４９】
Ｓ４１４で、マスタジョブＤＢ２０１は、受信した削除要求が示す削除対象の印刷ジョブをデータベースから削除した後、スレーブジョブＤＢ２０２に対して削除した印刷ジョブの情報をデータ更新内容として削除通知を送信する。
【００５０】
Ｓ４１５で、スレーブジョブＤＢ２０２は、Ｓ４１４で受信した削除通知が示す削除対象の印刷ジョブをデータベースより削除する。この印刷ジョブの削除処理が完了するまでの印刷ジョブ未削除期間Ｔ４１は、スレーブジョブＤＢ２０２から、この印刷ジョブを取得できる期間となる。
【００５１】
Ｓ４１６で、マスタジョブＤＢ２０１は、スレーブジョブＤＢ２０２が印刷ジョブを自身のデータベースから削除する処理の完了を待たずに、Ｗｅｂ印刷バックエンドサービス２０４に印刷ジョブ削除完了の通知を送信する。
【００５２】
次に、図４のＳ４１０の印刷処理の詳細を、図５を用いて説明する。
【００５３】
Ｓ５００で、Ｗｅｂ印刷バックエンドサービス２０４は、図４のＳ４０９で決定した最優先の印刷ジョブの印刷ジョブ情報と共に、印刷データ変換サービス２０５に対して印刷データの変換要求を送信する。
【００５４】
Ｓ５０１で、印刷データ変換サービス２０５は、Ｓ５００でＷｅｂ印刷バックエンドサービス２０４より受信した印刷ジョブ情報からプリンタ１０４〜１０５で印刷可能な印刷データを生成する。そして、印刷データ変換サービス２０５は、印刷データ生成完了通知をＷｅｂ印刷バックエンドサービス２０４に送信する。
【００５５】
Ｓ５０２で、Ｗｅｂ印刷バックエンドサービス２０４は、プリンタプロキシサービス２０６を介してプリンタ１０４〜１０５に対して印刷開始要求を送信する。
【００５６】
Ｓ５０３で、プリンタプロキシサービス２０６は、Ｓ５０２でＷｅｂ印刷バックエンドサービス２０４が送信した印刷開始要求を受信すると、印刷ジョブ通知をプリンタ１０４〜１０５に対して送信する。
【００５７】
Ｓ５０４で、プリンタ１０４〜１０５は、プリンタプロキシサービス２０６から印刷ジョブ通知を受信すると、プリンタプロキシサービス２０６に対して印刷ジョブ情報取得要求を送信する。
【００５８】
Ｓ５０５で、プリンタプロキシサービス２０６は、プリンタ１０４〜１０５より印刷ジョブ情報取得要求を受信すると、印刷ジョブ情報をプリンタ１０４〜１０５に対して送信する。
【００５９】
Ｓ５０６で、プリンタ１０４〜１０５は、プリンタプロキシサービス２０６より受信した印刷ジョブ情報より、印刷データが格納された場所を示すＵＲＬや印刷データにアクセスするためのアクセストークン等のアクセス情報を取得する。そして、プリンタ１０４〜１０５は、取得したアクセス情報を付加した印刷データ取得要求を、印刷データ変換サービス２０５に対して送信する。
【００６０】
Ｓ５０７で、印刷データ変換サービス２０５は、受信した印刷データ取得要求を参照し、要求された印刷データをプリンタ１０４〜１０５に対して送信する。
【００６１】
Ｓ５０８で、プリンタ１０４〜１０５は、受信した印刷データの印刷を実行する。Ｓ５０９で、プリンタ１０４〜１０５は、印刷データの印刷が完了すると、プリンタプロキシサービス２０６に対して印刷完了通知を送信する。
【００６２】
Ｓ５１０で、プリンタプロキシサービス２０６は、プリンタ１０４〜１０５より印刷完了通知を受信すると、Ｗｅｂ印刷バックエンドサービス２０４に対して印刷完了通知を送信する。
【００６３】
尚、図５では、プリンタ１０４〜１０５は、Ｓ５０４〜Ｓ５０５でプリンタプロキシサービス２０６より印刷ジョブ情報を取得後、Ｓ５０６〜Ｓ５０７で印刷データ変換サービス２０５より印刷データを取得する構成としているが、これに限定されない。例えば、Ｓ５０４の印刷ジョブ情報取得要求を受信したプリンタプロキシサービス２０６が印刷データ変換サービス２０５から該当する印刷データを取得し、これと印刷ジョブ情報をまとめてＳ５０５でプリンタ１０４〜１０５に対して送信することで、Ｓ５０６〜Ｓ５０７の処理を省略することもできる。この場合、プリンタ１０４〜１０５が印刷データ変換サービス２０５に対して印刷データ取得要求を送信しない構成となる。さらに、プリンタプロキシサービス２０６が印刷データ変換サービス２０５から、印刷データを予め取得してから、Ｓ５０３で印刷ジョブ通知を送信し、プリンタ１０４〜１０５からの印刷ジョブ情報取得要求に対してＳ５０５で印刷ジョブ情報と印刷データを一括して送信することもできる。
【００６４】
図６及び図７は、図４のＳ４０９においてＷｅｂ印刷バックエンドサービス２０４で実行される、最優先の印刷ジョブを決定する処理を示すフローチャート図である。図４のＳ４０８でスレーブジョブＤＢ２０２よりＷｅｂ印刷バックエンドサービス２０４に通知される印刷ジョブの検索結果には、マスタジョブＤＢ２０１とスレーブジョブＤＢ２０２との間のレプリケーション遅延により、図４のＳ４０２でマスタジョブＤＢ２０１に登録した印刷ジョブが含まれる場合と含まれない場合とがある。本実施形態では、このレプリケーション遅延により、マスタジョブＤＢ２０１に登録直後の印刷ジョブがスレーブジョブＤＢ２０２から取得できる保証がない場合にも、プリンタ１０４〜１０５で処理すべき最優先の印刷ジョブを正しく決定する処理を実行する構成について説明する。
【００６５】
図６は印刷システムのＷｅｂ印刷バックエンドサービス２０４がスレーブジョブＤＢ２０２より取得した印刷ジョブ情報より最優先の印刷ジョブを決定する処理の一例を示すフローチャートである。
【００６６】
また、図１０は、図６で説明される最優先の印刷ジョブが決定される各ケースにおけるマスタジョブＤＢ２０１及びスレーブジョブＤＢ２０２で実現される各ジョブキューの状態図を示している。図の左列のジョブキュー図は、マスタジョブＤＢ２０１のジョブキューの状態を表している。図の中央列のジョブキュー図は、マスタジョブＤＢ２０１に登録したジョブがスレーブジョブＤＢ２０２にも登録された状態におけるジョブキューの状態を表している。図の右列のジョブキュー図は、マスタジョブＤＢ２０１に登録したジョブがレプリケーション遅延によりスレーブジョブＤＢ２０２にまだ登録されていない状態におけるジョブキューの状態を表している。
【００６７】
以下、図６及び図１０を用いて、Ｗｅｂ印刷バックエンドサービス２０４が実行する処理について説明する。
【００６８】
Ｓ６０１で、スレーブジョブＤＢ２０２より印刷ジョブの検索結果を取得したＷｅｂ印刷バックエンドサービス２０４は、検索結果のジョブ件数が１件以上であるか否かを判断する。このとき、Ｓ４０２、Ｓ４０５においてＷｅｂ印刷バックエンドサービス２０４は印刷ジョブ登録の要求と、印刷ジョブ登録完了の通知が行われているため、本来スレーブジョブＤＢ２０２から少なくとも１件のジョブが検索されるはずである。検索結果のジョブ件数が０件である場合（Ｓ６０１でＮＯ）、Ｓ６０２で、Ｗｅｂ印刷バックエンドサービス２０４は、図４のＳ４０２でマスタジョブＤＢ２０１に登録した印刷ジョブは、レプリケーション遅延のため取得できなかったと判断する。また、Ｗｅｂ印刷バックエンドサービス２０４は、印刷ジョブの検索対象となっているプリンタで処理すべきその他の印刷ジョブも登録されていないと判断できる（図１０（ａ））ため、最優先で処理すべき印刷ジョブをＳ４０２で登録した印刷ジョブと決定する。
【００６９】
そして、上述のＳ４１０では、最優先の印刷ジョブに対して印刷処理を実行する。Ｓ６０２のように、スレーブジョブＤＢ２０２から印刷ジョブが検索できなかった場合、Ｗｅｂ印刷バックエンドサービス２０４がＳ４０２で登録指示を行った、Ｗｅｂ印刷バックエンドサービス２０４に残っている印刷ジョブに対して印刷処理を行う。よって、上記のようにレプリケーション遅延のため印刷ジョブを取得できなかった場合、スレーブジョブＤＢ２０２への印刷ジョブの登録、スレーブジョブＤＢ２０２からの当該印刷ジョブの取得を待たなくても、当該印刷ジョブに対して印刷処理を実行することができる。
【００７０】
一方、検索結果のジョブ件数が１件以上である場合（Ｓ６０１でＹＥＳ）、Ｓ６０３で、Ｗｅｂ印刷バックエンドサービス２０４は、検索結果の印刷ジョブの中にジョブステータスが「ＰＲＩＮＴＩＮＧ」（実行中）の印刷ジョブが存在するか否かを判断する。ジョブステータスが「ＰＲＩＮＴＩＮＧ」の印刷ジョブが存在する場合（Ｓ６０３でＹＥＳ）、Ｓ６０４で、Ｗｅｂ印刷バックエンドサービス２０４は、印刷ジョブの検索対象となっているプリンタでは既に実行中の印刷ジョブが存在しているため、新たに印刷ジョブの投入は行えないと判断し、最優先で処理すべき印刷ジョブはなしと決定する（図１０（ｂ）、（ｃ））。
【００７１】
一方、ジョブステータスが「ＰＲＩＮＴＩＮＧ」の印刷ジョブが存在しない場合（Ｓ６０３でＮＯ）、Ｓ６０５で、Ｗｅｂ印刷バックエンドサービス２０４は、図４のＳ４０２でＷｅｂ印刷バックエンドサービス２０４がマスタジョブＤＢ２０１に登録した印刷ジョブが検索結果に含まれているか否かの判断は行わず、取得した印刷ジョブの中からジョブ受付日時３０３が最も古い印刷ジョブを最優先で処理すべき印刷ジョブとして決定する。これは、Ｓ４０２で登録した印刷ジョブが検索結果に含まれる場合は、当該印刷ジョブを含めた中で最も古い印刷ジョブを最優先の印刷ジョブとして正しく決定することができるからである。また、レプリケーション遅延により、Ｓ４０２で登録した印刷ジョブがスレーブジョブＤＢ２０２からの検索結果に含まれていない場合でも、Ｓ４０２の印刷ジョブの登録以前にマスタジョブＤＢ２０１に登録された印刷ジョブが、スレーブジョブＤＢ２０２に既に存在すると判断できるため、検索結果の印刷ジョブは、Ｓ４０２で登録した印刷ジョブよりも優先度が高いと判断できるからである（図１０（ｄ）、（ｅ））。
【００７２】
即ち、本実施形態では、仮に登録を行った印刷ジョブが検索されなかったとしても、その他の優先度が高いジョブ（最も古いジョブ等）があれば、そのジョブについて処理を実行する。よって、上記登録を行った印刷ジョブが検索されなかったことにより、ジョブ処理が中断されることを防ぐことができる。さらに、Ｗｅｂ印刷バックエンドサービス２０４が上記最優先の印刷ジョブに対する処理を実行している間に、上記登録を行った印刷ジョブがスレーブジョブＤＢ２０２に登録される場合がある。この場合、スレーブジョブＤＢ２０２へのジョブ登録を待たなくても、当該印刷ジョブを検索することができる。
【００７３】
尚、図６では、最優先の印刷ジョブを決定する条件として、ジョブ受付日時３０３のみを利用しているが、これに加え、他の条件も加味して決定することも考えられる。例えばユーザが印刷ジョブに対して優先度を指定し、ＤＢにはジョブとその優先度が対応付けられて登録が行われてもよい。
【００７４】
図７は印刷システムのＷｅｂ印刷バックエンドサービス２０４がスレーブジョブＤＢ２０２より取得した印刷ジョブ情報より最優先の印刷ジョブを決定する処理において、最優先の印刷ジョブの決定条件として、ジョブ受付日時３０３に加えて、印刷ジョブに付加されたジョブ優先度３０５も考慮する場合の処理を示すフローチャートである。
【００７５】
また、図１１〜図１３は、図７で説明される最優先の印刷ジョブが決定される各ケースにおけるマスタジョブＤＢ２０１及びスレーブジョブＤＢ２０２で実現される各ジョブキューの状態図を示している。図の左列のジョブキュー図は、マスタジョブＤＢ２０１のジョブキューの状態を表している。図の中央列のジョブキュー図は、マスタジョブＤＢ２０１に登録したジョブがスレーブジョブＤＢ２０２にも登録された状態におけるジョブキューの状態を表している。図の右列のジョブキュー図は、マスタジョブＤＢ２０１に登録したジョブがレプリケーション遅延によりスレーブジョブＤＢ２０２にまだ登録されていない状態におけるジョブキューの状態を表している。
【００７６】
以下、図７及び図１１〜図１３を用いて、Ｗｅｂ印刷バックエンドサービス２０４が実行する処理について説明する。
【００７７】
Ｓ７０１で、スレーブジョブＤＢ２０２より印刷ジョブの検索結果を取得したＷｅｂ印刷バックエンドサービス２０４は、検索結果のジョブ件数が１件以上であるか否かを判断する。検索結果のジョブ件数が０件である場合（Ｓ７０１でＮＯ）、Ｓ７０２で、Ｗｅｂ印刷バックエンドサービス２０４は、図４のＳ４０２でマスタジョブＤＢ２０１に登録した印刷ジョブは、レプリケーション遅延のため取得できなかったと判断する。また、Ｗｅｂ印刷バックエンドサービス２０４は、印刷ジョブの検索対象となっているプリンタで処理すべきその他の印刷ジョブも登録されていないと判断できる（図１１（ａ））ため、最優先で処理すべき印刷ジョブをＳ４０２で登録した印刷ジョブと決定する。ここで、図１１（ａ）は、Ｓ７０２にて最優先で処理すべき印刷ジョブが決定されたケースにおけるマスタジョブＤＢ２０１及びスレーブジョブＤＢ２０２のジョブキューの状態を表している。
【００７８】
一方、検索結果のジョブ件数が１件以上である場合（Ｓ７０１でＹＥＳ）、Ｓ７０３で、Ｗｅｂ印刷バックエンドサービス２０４は、検索結果の印刷ジョブの中にジョブステータスが「ＰＲＩＮＴＩＮＧ」（実行中）の印刷ジョブが存在するか否かを判断する。ジョブステータスが「ＰＲＩＮＴＩＮＧ」の印刷ジョブが存在する場合（Ｓ７０３でＹＥＳ）、Ｓ７０４で、Ｗｅｂ印刷バックエンドサービス２０４は、印刷ジョブの検索対象となっているプリンタでは既に実行中の印刷ジョブが存在しているため、新たに印刷ジョブの投入は行えないと判断し、最優先で処理すべき印刷ジョブはなしと決定する（図１１（ｂ）、（ｃ））。ここで、図１１（ｂ）、（ｃ）は、Ｓ７０４にて最優先で処理すべき印刷ジョブは無しと判断されたケースにおけるマスタジョブＤＢ２０１及びスレーブジョブＤＢ２０２のジョブキューの状態を表している。
【００７９】
一方、ジョブステータスが「ＰＲＩＮＴＩＮＧ」の印刷ジョブが存在しない場合（Ｓ７０３でＮＯ）、Ｓ７０５で、Ｗｅｂ印刷バックエンドサービス２０４は、スレーブジョブＤＢ２０２より取得した検索結果の印刷ジョブの中に、ジョブ優先度３０５が「ＨＩＧＨ」である印刷ジョブが存在するか否かを判断する。
【００８０】
スレーブジョブＤＢ２０２より取得した検索結果の印刷ジョブの中に、ジョブ優先度３０５がＨＩＧＨである印刷ジョブが存在する場合（Ｓ７０５でＹＥＳ）、Ｓ７０６で、Ｗｅｂ印刷バックエンドサービス２０４は、図４のＳ４０２で登録した印刷ジョブが検索結果に含まれているか否かの判断は行わず、取得した印刷ジョブ（複数個存在する印刷ジョブ）の中から、ジョブ優先度３０５がＨＩＧＨで、かつ、ジョブ受付日時３０３が最も古い印刷ジョブを最優先で処理すべき印刷ジョブとして決定する。これは、Ｓ４０２で登録した印刷ジョブが検索結果に含まれる場合は、当該印刷ジョブを含めた中でジョブ優先度３０５がＨＩＧＨでかつ最も古い印刷ジョブを最優先のジョブとして正しく決定することができるからである。また、Ｓ４０２で登録した印刷ジョブのジョブ優先度３０５がＨＩＧＨであっても、レプリケーション遅延によりその印刷ジョブがスレーブジョブＤＢ２０２からの検索結果に含まれていない場合でも、Ｓ４０２の印刷ジョブの登録以前にマスタジョブＤＢ２０１に登録されており、かつジョブ優先度３０５がＨＩＧＨである印刷ジョブが、スレーブジョブＤＢ２０２に既に存在すると判断できるからである（図１２（ａ）〜（ｄ））。ここで、図１２（ａ）〜（ｄ）は、Ｓ７０６にて最優先で処理すべき印刷ジョブが決定されたケースにおけるマスタジョブＤＢ２０１及びスレーブジョブＤＢ２０２のジョブキューの状態を表している。
【００８１】
一方、スレーブジョブＤＢ２０２より取得した検索結果の印刷ジョブの中に、ジョブ優先度３０５がＨＩＧＨである印刷ジョブが存在しない場合（Ｓ７０５でＮＯ）、Ｓ７０７で、Ｗｅｂ印刷バックエンドサービス２０４は、Ｓ４０２で登録した印刷ジョブのジョブ優先度３０５がＨＩＧＨであるか否かを判断する。
【００８２】
Ｓ４０２で登録した印刷ジョブのジョブ優先度３０５がＨＩＧＨでない場合（Ｓ７０７でＮＯ）、Ｓ７０８で、Ｗｅｂ印刷バックエンドサービス２０４は、スレーブジョブＤＢ２０２より取得した印刷ジョブの中からジョブ受付日時３０３が最も古い印刷ジョブを最優先の印刷ジョブとして決定する（図１３（ａ）、（ｂ））。ここで、図１３（ａ）、（ｂ）は、Ｓ７０８にて最優先で処理すべき印刷ジョブが決定されたケースにおけるマスタジョブＤＢ２０１及びスレーブジョブＤＢ２０２のジョブキューの状態を表している。
【００８３】
一方、Ｓ４０２で登録した印刷ジョブのジョブ優先度３０５がＨＩＧＨである場合（Ｓ７０７でＹＥＳ）、Ｓ７０２で、Ｗｅｂ印刷バックエンドサービス２０４は、図４のＳ４０２で登録した印刷ジョブはジョブ優先度３０５がＨＩＧＨであり、かつレプリケーション遅延のため取得できなかったと判断する。さらに、Ｗｅｂ印刷バックエンドサービス２０４は、印刷ジョブの検索対象となっているプリンタで処理すべきその他の印刷ジョブは全てジョブ優先度３０５がＨＩＧＨではないため、最優先で処理すべき印刷ジョブをＳ４０２で登録した印刷ジョブと決定する（図１３（ｃ））。ここで、図１３（ｃ）は、Ｓ７０２にて最優先で処理すべき印刷ジョブが決定されたケースにおけるマスタジョブＤＢ２０１及びスレーブジョブＤＢ２０２のジョブキューの状態を表している。
【００８４】
尚、図７のＳ７０２において、Ｗｅｂ印刷バックエンドサービス２０４が当該登録した印刷ジョブが最優先で処理すべき印刷ジョブとして決定された場合、上記図６のＳ６０２のケースと同様である。即ち、Ｓ４１０では、Ｗｅｂ印刷バックエンドサービス２０４がＳ４０２で登録指示を行った、Ｗｅｂ印刷バックエンドサービス２０４に残っている印刷ジョブに対して印刷処理が行われる。
【００８５】
以上説明したように、実施形態１によれば、非同期レプリケーション構成のＤＢで印刷ジョブキューを実現する印刷システムにおいて、レプリケーションによる遅延時間によりマスタＤＢに印刷ジョブを登録した直後にスレーブＤＢから当該印刷ジョブが取得できない場合でも、マスタＤＢへのアクセスを増加させることなくプリンタで実行すべき最優先の印刷ジョブを決定し、プリンタに送信することができる。
【００８６】
また、この場合、Ｗｅｂ印刷バックエンドサービス２０４がＳ４０２で登録指示を行った、Ｗｅｂ印刷バックエンドサービス２０４に残っている印刷ジョブに対して印刷処理を行う。そのため、スレーブジョブＤＢ２０２への印刷ジョブの登録、スレーブジョブＤＢ２０２からの当該印刷ジョブの取得を待たなくても、当該印刷ジョブに対して印刷処理を実行することができる。
【００８７】
＜実施形態２＞
実施形態１では、印刷システムの印刷ジョブ管理サービスにおいて、クライアント端末から受信した印刷ジョブをマスタジョブＤＢ２０１に登録直後にスレーブジョブＤＢ２０２より取得できない場合でも最優先のジョブを正しく決定する方法について説明した。
【００８８】
実施形態２では、印刷ジョブをキャンセルした直後に、キャンセルした印刷ジョブの更新内容がスレーブジョブＤＢ２０２より取得できない場合において、最優先の印刷ジョブを正しく決定し、プリンタに送信するための方法について説明する。
【００８９】
図８は印刷システムにおける印刷ジョブのキャンセル処理を示すシーケンス図である。
【００９０】
Ｓ８０１で、クライアント端末１０３より印刷ジョブのキャンセル要求を受け付けたＷｅｂ印刷アプリケーション２０３は、Ｗｅｂ印刷バックエンドサービス２０４に対して印刷ジョブのキャンセル要求を送信する。
【００９１】
Ｓ８０２で、Ｗｅｂ印刷バックエンドサービス２０４は、プリンタプロキシサービス２０６に対して印刷ジョブのキャンセル要求を送信する。
【００９２】
Ｓ８０３で、プリンタプロキシサービス２０６は、Ｓ８０２で受信したキャンセル要求の対象となる印刷ジョブを実行中のプリンタ１０４〜１０５に対して印刷ジョブのキャンセルを通知する等、キャンセル処理を実行する。Ｓ８０４で、プリンタプロキシサービス２０６は、キャンセルの完了通知をＷｅｂ印刷バックエンドサービス２０４に対して送信する。尚、Ｓ８０２〜Ｓ８０４の処理は、キャンセル対象の印刷ジョブが既にプリンタ１０４〜１０５に投入済である場合にのみ必要な処理である。そのため、キャンセル対象の印刷ジョブがプリンタ１０４〜１０５に投入されていない場合は、これらの処理は行わずに、Ｓ８０５へ進む。
【００９３】
Ｓ８０５で、Ｗｅｂ印刷バックエンドサービス２０４は、マスタジョブＤＢ２０１に登録されたキャンセル対象の印刷ジョブのジョブステータスを「ＣＡＮＣＥＬＥＤ」（キャンセル済）に更新する。
【００９４】
Ｓ８０６で、マスタジョブＤＢ２０１は、更新した印刷ジョブのジョブステータスをスレーブジョブＤＢ２０２にＤＢの更新内容として通知する。マスタジョブＤＢ２０１は、スレーブジョブＤＢ２０２がキャンセル対象の印刷ジョブのジョブステータスの更新完了を待たずに、Ｓ８０８でＷｅｂ印刷バックエンドサービス２０４に対してジョブステータスの更新完了を通知する。そのため、Ｗｅｂ印刷バックエンドサービス２０４が印刷ジョブの検索を行うときに、スレーブジョブＤＢ２０２における当該印刷ジョブのキャンセル処理が間に合わず、当該印刷ジョブが検索されてしまう場合がある。
【００９５】
Ｓ８０７で、スレーブジョブＤＢ２０２は、Ｓ８０６でマスタジョブＤＢ２０１よりデータの更新内容を受信すると、自身が保持するデータにこのジョブステータスの更新内容を反映させる。更新内容の反映が完了するまでのジョブステータス不一致期間Ｔ８０は、スレーブジョブＤＢ２０２から取得したキャンセル対象の印刷ジョブのジョブステータスが「ＣＡＮＣＥＬＥＤ」に更新されておらず、マスタジョブＤＢ２０１から取得したその印刷ジョブのジョブステータスと一致しない期間となる。
【００９６】
Ｓ８０９で、Ｗｅｂ印刷バックエンドサービス２０４は、Ｗｅｂ印刷アプリケーション２０３に対してキャンセル要求の受信通知を送信する。続いて、Ｓ８１０で、Ｗｅｂ印刷バックエンドサービス２０４は、スレーブジョブＤＢ２０２に対して、Ｓ８０１で受信したキャンセル要求の対象の印刷ジョブを実行するプリンタに対する全ての印刷ジョブの検索を行うためにジョブ検索要求を送信する。
【００９７】
Ｓ８１１で、Ｗｅｂ印刷バックエンドサービス２０４からジョブ検索要求を受信したスレーブジョブＤＢ２０２は、自身のデータベース内から指定されたプリンタに対する全ての印刷ジョブを検索し、その印刷ジョブ検索結果をＷｅｂ印刷バックエンドサービス２０４に返信する。
【００９８】
ここで、Ｓ８１１がジョブステータス不一致期間Ｔ８０内に行われた場合、Ｓ８０５で「ＣＡＮＣＥＬＥＤ」にジョブステータスを更新した印刷ジョブは、スレーブジョブＤＢ２０２では「ＣＡＮＣＥＬＥＤ」に更新されておらず、例えば、ジョブステータスは実行中を表す「ＰＲＩＮＴＩＮＧ」や、プリンタに未投入の状態を表す「ＱＵＥＵＥＤ」の印刷ジョブとして検索結果に含まれる。この状態で、Ｓ８１２においてＷｅｂ印刷バックエンドサービス２０４が図６及び図７のフローに従い最優先の印刷ジョブを決定してしまうと、実行中のジョブが存在するため最優先の印刷ジョブはなしと判断したり、誤ってキャンセルした印刷ジョブを最優先の印刷ジョブとして決定しプリンタに投入してしまう。
【００９９】
そこで、実施形態２では、キャンセルした印刷ジョブがスレーブジョブＤＢ２０２より正しいジョブステータスで取得できないケースにおいても正しく最優先の印刷ジョブを決定するための処理について説明する。
【０１００】
図９は、図８のＳ８１２のＷｅｂ印刷バックエンドサービス２０４で実行される、最優先の印刷ジョブを決定する処理を示すフローチャートである。
【０１０１】
Ｓ９０１で、スレーブジョブＤＢ２０２より印刷ジョブの検索結果を取得したＷｅｂ印刷バックエンドサービス２０４は、検索結果のジョブ件数が１件以上であるか否かを判断する。検索結果のジョブ件数が０件である場合（Ｓ９０１でＮＯ）、Ｓ９０２で、Ｗｅｂ印刷バックエンドサービス２０４は、最優先で処理すべき印刷ジョブはなしと判断する。これは、図８のＳ８１０における印刷ジョブの検索は印刷ジョブのキャンセル直後に実行されたものであるため、実施形態１の図６のＳ６０２のように、レプリケーション遅延のため取得できなかった印刷ジョブは存在しないと判断できるためである。
【０１０２】
一方、検索結果のジョブ件数が１件以上である場合（ステップＳ９０１でＹＥＳ）、Ｓ９０３で、Ｗｅｂ印刷バックエンドサービス２０４は、検索結果に図８のＳ８０５でマスタジョブＤＢに対してジョブステータスを「ＣＡＮＣＥＬＥＤ」に更新した印刷ジョブが存在する場合は、これを検索結果より削除（除外）する。これにより、上記のようにキャンセルされた印刷ジョブについて誤って印刷処理、プリンタへの送信を行ってしまうことを防ぐことができる。
【０１０３】
Ｓ９０４で、Ｗｅｂ印刷バックエンドサービス２０４は、検索結果の印刷ジョブに、ジョブステータスが「ＰＲＩＮＴＩＮＧ」の印刷ジョブが存在するか否かを判断する。Ｓ９０４でジョブステータスが「ＰＲＩＮＴＩＮＧ」の印刷ジョブが存在する場合（Ｓ９０４でＹＥＳ）、Ｓ９０６で、Ｗｅｂ印刷バックエンドサービス２０４は、印刷ジョブの検索対象となっているプリンタでは既に実行中の印刷ジョブが存在しているため、新たに印刷ジョブの投入は行えないと判断し、最優先で処理すべき印刷ジョブはなしと決定する。
【０１０４】
一方、ジョブステータスが「ＰＲＩＮＴＩＮＧ」の印刷ジョブが存在しない場合（Ｓ９０４でＮＯ）、Ｓ９０５で、Ｗｅｂ印刷バックエンドサービス２０４は、取得した印刷ジョブの中からジョブ受付日時３０３が最も古い印刷ジョブを最優先で処理すべき印刷ジョブとして決定する。
【０１０５】
このように、Ｓ９０３において、予めキャンセルした印刷ジョブを検索対象から削除することで、Ｓ９０４の判断において、Ｓ８０５でマスタジョブＤＢ２０１に対してジョブステータスを「ＣＡＮＣＥＬＥＤ」に更新した印刷ジョブが、スレーブジョブＤＢ２０２において更新が完了しておらず、ジョブステータスが「ＰＲＩＮＴＩＮＧ」の状態で取得された場合でも、判断に影響を与えることを防ぐことができる。図１４は前述したケースが発生した場合におけるマスタジョブＤＢ２０１とスレーブジョブＤＢ２０２のジョブキューの状態を表している。また、Ｓ９０５において、Ｓ８０５でマスタジョブＤＢ２０１に対してジョブステータスを「ＣＡＮＣＥＬＥＤ」に更新した印刷ジョブが検索結果の中でジョブ受付日時３０３が最も古い印刷ジョブであった場合でも、誤ってこれを最優先で処理すべき印刷ジョブとして決定しないようにすることができる。
【０１０６】
以上説明したように、実施形態２によれば、実施形態１で説明した効果に加えて、印刷ジョブをキャンセルした直後に、キャンセルした印刷ジョブの更新内容がスレーブジョブＤＢ２０２より取得できない場合において、最優先の印刷ジョブを正しく決定することができる。
【０１０７】
＜実施形態３＞
実施形態１及び実施形態２では、クラウド印刷サービスにおける印刷システムの印刷ジョブ管理サービスを例に説明しているが、これに限定されない。例えば、クライアント端末が、印刷装置等の外部機器においてＦＡＸやスキャン等の他のサービスのジョブの実行要求を発行する場合におけるジョブ管理についても、本発明を適用することができる。またジョブに対する処理は、例えば、画像やテキスト等の各種のデータのダウンロードや、クライアント端末とは異なる装置へのサーバからのデータ送信（メール送信等）等、各種の処理であってもよい。
【０１０８】
また、以上の実施形態では、スレーブジョブＤＢ２０２から検索されたジョブの件数を判断して、その件数に応じて、処理対象のジョブを決定する例について説明した。しかし、これに限らず、例えば、当該登録処理を行ったジョブが含まれるか否かを判断してもよい。この場合、当該登録処理を行ったジョブが検索結果に含まれていない場合、その他のジョブの件数に関わらず、Ｗｅｂ印刷バックエンドサービスが有する当該ジョブに対して印刷処理や送信処理等の所定の処理を行ってもよい。
【０１０９】
また、以上の実施形態では、サーバ１０１が本実施形態における情報処理装置として動作する例を示したがこれに限らない。例えば、上述したように、複数のサーバが本実施形態における処理を実行してもよい。また、サーバ１０１にジョブが登録される各種のデータベースが含まれる例を説明したが、これに限らない。即ち、サーバ１０１とは別体のマスタデータベース、スレーブデータベースに対して、サーバ１０１が情報処理装置としてジョブを登録する場合であってもよい。この場合、マスタデータベースとスレーブデータベースは、同一の装置として動作してもよいし、別体の装置として動作してもよい。
【０１１０】
さらに、Ｗｅｂ印刷バックエンドサービスがマスタジョブＤＢ２０１に登録したジョブがスレーブジョブＤＢ２０２から検索されなかった場合、Ｗｅｂ印刷バックエンドサービスは、当該Ｗｅｂ印刷バックエンドサービスが有するジョブに対して印刷処理を行ってもよいし、マスタジョブＤＢ２０１に登録したジョブに対して印刷処理を行ってもよい。
【０１１１】
尚、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【０１１２】
また、本実施形態の機能を実現するためのプログラムコードを、１つのコンピュータ（ＣＰＵ、ＭＰＵ）で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。
【図１】
2015036860.tif 000003
【図２】
2015036860.tif 000004
【図３】
2015036860.tif 000005
【図４】
2015036860.tif 000006
【図５】
2015036860.tif 000007
【図６】
2015036860.tif 000008
【図７】
2015036860.tif 000009
【図８】
2015036860.tif 000010
【図９】
2015036860.tif 000011
【図１０】
2015036860.tif 000012
【図１１】
2015036860.tif 000013
【図１２】
2015036860.tif 000014
【図１３】
2015036860.tif 000015
【図１４】
2015036860.tif 000016