(57)【要約】      （修正有）【課題】サーバーが冗長化された印刷システムにおいて、サーバーの障害発生時に、印刷データを共通のデータベース等に保存をしておかなくても他のサーバーで印刷ジョブのリカバリを行う。【解決手段】印刷ジョブのステータスを共有データベースに保存し、そのステータスに応じて印刷ジョブのリカバリ方法を切り替えることにより、障害発生時に印刷データを共通のデータベースに保持することなくユーザの所望する印刷結果を得ることを可能とする。【選択図】図８
2015203981.tif 000002
【特許請求の範囲】
【請求項１】
複数の印刷サーバーと、
前記印刷サーバーの稼働状態を監視する監視手段と、
文書データを格納するデータベースとを含む印刷システムであって、
前記印刷サーバーの各々は、
印刷要求に応じて、印刷処理を行っている印刷サーバーとプリンタと印刷ジョブとを関連付けた関連付け情報を前記データベースに格納する格納手段と、
前記文書データから印刷ジョブを生成し、指定されたプリンタに対して印刷ジョブを送信して実行させる印刷手段とを有し、
前記監視手段はさらに、第１の印刷サーバーに障害が発生すると、障害が生じた前記第１の印刷サーバーを第２の印刷サーバーに通知し、
前記第２の印刷サーバーはさらに、前記関連付け情報から、前記第１の印刷サーバーと関連付けられた対象プリンタおよび対象印刷ジョブを特定し、特定した前記印刷ジョブを前記文書データから生成して、該印刷ジョブを特定した前記プリンタに送信して実行させることを特徴とする印刷システム。
【請求項２】
前記第１の印刷サーバーと関連する印刷ジョブが、前記対象プリンタでスケジュール待機中である場合には、前記第２の印刷サーバーはさらに、前記対象プリンタでスケジュール待機中である印刷ジョブをキャンセルすることを特徴とする請求項１に記載の印刷システム。
【請求項３】
前記第１の印刷サーバーと関連する印刷ジョブが、前記対象プリンタに転送中である場合には、前記第２の印刷サーバーはさらに、前記対象プリンタに送信された印刷ジョブの部分をキャンセルすることを特徴とする請求項１または２に記載の印刷システム。
【請求項４】
前記第１の印刷サーバーと関連する印刷ジョブが、前記対象プリンタに転送中であり、かつ印刷中である場合には、前記第２の印刷サーバーはさらに、前記文書データに基づいて、印刷済みの部分の続きから印刷データを生成して、前記対象プリンタに送信して印刷させることを特徴とする請求項３に記載の印刷システム。
【請求項５】
前記複数の印刷サーバーは、ロードバランサにより冗長化された印刷サーバーであることを特徴とする請求項１乃至４のいずれか一項に記載の印刷システム。
【請求項６】
少なくとも１台の他の印刷サーバーと、印刷サーバーの稼働状態を監視する監視手段と、文書データを格納するデータベースとに接続された印刷サーバーであって、
印刷要求に応じて、印刷処理を行っている印刷サーバーとプリンタと印刷ジョブとを関連付けた関連付け情報を前記データベースに格納する格納手段と、
前記文書データから印刷ジョブを生成し、指定されたプリンタに対して印刷ジョブを送信して実行させる印刷手段とを有し、
前記監視手段から、前記他の印刷サーバーに障害が発生したことの通知を受信し、
前記関連付け情報から、前記第１の印刷サーバーと関連付けられた対象プリンタおよび対象印刷ジョブを特定し、特定した前記印刷ジョブを前記文書データから生成して、該印刷ジョブを特定した前記プリンタに送信して実行させることを特徴とする印刷サーバー。
【請求項７】
前記第１の印刷サーバーと関連する印刷ジョブが、前記対象プリンタでスケジュール待機中である場合にはさらに、前記対象プリンタでスケジュール待機中である印刷ジョブをキャンセルすることを特徴とする請求項６に記載の印刷サーバー。
【請求項８】
前記第１の印刷サーバーと関連する印刷ジョブが、前記対象プリンタに転送中である場合にはさらに、前記対象プリンタに送信された印刷ジョブの部分をキャンセルすることを特徴とする請求項６または７に記載の印刷サーバー。
【請求項９】
前記第１の印刷サーバーと関連する印刷ジョブが、前記対象プリンタに転送中であり、かつ印刷中である場合にはさらに、前記文書データに基づいて、印刷済みの部分の続きから印刷データを生成して、前記対象プリンタに送信して印刷させることを特徴とする請求項８に記載の印刷サーバー。
【請求項１０】
複数の印刷サーバーと、前記印刷サーバーの稼働状態を監視する監視手段と、文書データを格納するデータベースとを含む印刷システムにおける印刷制御方法であって、
前記印刷サーバーの各々が、印刷要求に応じて、印刷処理を行っている印刷サーバーとプリンタと印刷ジョブとを関連付けた関連付け情報を前記データベースに格納する格納工程と、
前記印刷サーバーの各々が、前記文書データから印刷ジョブを生成し、指定されたプリンタに対して印刷ジョブを送信して実行させる印刷工程と、
前記監視手段が、第１の印刷サーバーに障害が発生すると、障害が生じた印刷サーバーを第２の印刷サーバーに通知する工程と、
前記第２の印刷サーバーが、前記関連付け情報から、前記第１の印刷サーバーと関連付けられた対象プリンタおよび対象印刷ジョブを特定し、特定した前記印刷ジョブを前記文書データから生成して、該印刷ジョブを特定した前記プリンタに送信して実行させる工程と
を有することを特徴とする印刷制御方法。
【請求項１１】
請求項６乃至９のいずれか一項に記載の印刷サーバーとしてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は印刷システム、印刷サーバー及び印刷制御方法とプログラムに関し、特に冗長化された印刷サーバーの印刷ジョブのリカバリ方法等に関する。
【背景技術】
【０００２】
従来、複数のサーバーからなる印刷システムでは、印刷の順序を制御する必要があるため、印刷データの生成処理や印刷ジョブの管理は、プリンタ毎に一台のサーバーが受け持ち処理を行っていた。しかし、プリンタの管理を受け持っているサーバーで障害が発生した場合に他のサーバーで印刷ジョブのリカバリを行うためには、印刷データを共通のデータベース等に保存をしておく必要があった。例えば、特許文献１では、ＯＳのシャットダウン時に別のサーバーに印刷データを退避させ、印刷データを退避した別のサーバーが処理を継続する方法が取られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−００８１５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、先行技術では、正常にＯＳシャットダウンが発生する場合には対応できるが、印刷データを退避できなかった場合、たとえば不慮の事故によりＯＳがダウンした場合や、印刷サーバー内のサービスがダウンした場合には印刷処理を継続することができない。また、大量に印刷を行う印刷システムでは、共有のデータベースに印刷ジョブを保存する場合、共有のデータベースへのアクセス、たとえば印刷データの退避が集中してしまうと、データの書き込みがボトルネックとなり実用に耐えなくなる可能性があった。また、印刷が開始されている状態で障害が発生した場合、他のサーバーで印刷処理を継続すると、印刷結果が重複する問題が発生する。
【０００５】
本発明は上記従来例に鑑みてなされたもので、印刷サーバーに障害が発生した場合にも、印刷データを共有データベース等で共有することなく、障害が発生したサーバーのリカバリ処理を行うことで上記課題を解決する印刷システム、印刷サーバー及び印刷制御方法とプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために本発明は以下の構成を有する。
【０００７】
本発明の一側面によれば、少なくとも２台の印刷サーバーと、
前記印刷サーバーの稼働状態を監視する監視手段と、
文書データを格納するデータベースとを含む印刷システムであって、
前記印刷サーバーの各々は、
印刷要求に応じて、印刷処理を行っている印刷サーバーとプリンタと印刷ジョブとを関連付けた関連付け情報を前記データベースに格納する格納手段と、
前記文書データから印刷ジョブを生成し、指定されたプリンタに対して印刷ジョブを送信して実行させる印刷手段とを有し、
前記監視手段はさらに、第１の印刷サーバーに障害が発生すると、障害が生じた印刷サーバーを第２の印刷サーバーに通知し、
前記第２の印刷サーバーはさらに、前記関連付け情報から、前記第１の印刷サーバーと関連付けられた対象プリンタおよび対象印刷ジョブを特定し、特定した前記印刷ジョブを前記文書データから生成して、該印刷ジョブを特定した前記プリンタに送信して実行させる。
【０００８】
あるいは他の側面によれば、少なくとも１台の他の印刷サーバーと、印刷サーバーの稼働状態を監視する監視手段と、文書データを格納するデータベースとに接続された印刷サーバーであって、
印刷要求に応じて、印刷処理を行っている印刷サーバーとプリンタと印刷ジョブとを関連付けた関連付け情報を前記データベースに格納する格納手段と、
前記文書データから印刷ジョブを生成し、指定されたプリンタに対して印刷ジョブを送信して実行させる印刷手段とを有し、
前記監視手段から、前記他の印刷サーバーに障害が発生したことの通知を受信し、
前記関連付け情報から、前記第１の印刷サーバーと関連付けられた対象プリンタおよび対象印刷ジョブを特定し、特定した前記印刷ジョブを前記文書データから生成して、該印刷ジョブを特定した前記プリンタに送信して実行させる。
【発明の効果】
【０００９】
本発明によれば、冗長化された印刷サーバーにおいて、印刷データをデータベース等で共有することなく、障害が発生したサーバーのリカバリ処理を他の印刷サーバーが行うことが可能となり、ユーザが所望する印刷結果を得ることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】印刷システムの全体構成を示す図である。
【図２】印刷サーバー１０１、１０２のハードウェア構成図である。
【図３】ＲＡＭ２０３のメモリマップの一例を示す図である。
【図４】印刷システムの印刷処理を示す図である。
【図５】印刷サービス４０１が使用するプリンタ情報５００、印刷ジョブ情報５１０を示すメモリマップの一例を示す図である。
【図６】プリンタ１０３のハードウェア構成の一例を示す図である。
【図７】プリンタ１０３の構成を階層的に示す図である。
【図８】印刷サービスで障害が発生した際に、他の印刷サービス４０１の処理を示すフローチャートである。
【図９】印刷ジョブの状態が転送中の際の印刷サービス４０１の処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１２】
［実施例１］
＜システム構成＞
図１は、本発明の実施形態に係る印刷システムの全体構成を示す図である。図において、プリンタ１０３、クライアント端末１０６は１台ずつ描かれているが、複数台接続されている。また、印刷サーバー１０１、１０２は、ロードバランサ１０４に接続されており、ロードバランサ１０４を介してクライアント端末１０６等からのリクエストを受け付ける。図１では印刷サーバーとしては印刷サーバー１０１、１０２しか図示していないが、複数台がロードバランサ１０４に接続されていることを想定している。また、本実施例に含まれる装置間の通信はイーサネット（登録商標）ケーブルを利用した有線通信でもよいし、電波や光などを利用した無線通信でもよい。
【００１３】
図１において、プリンタ１０３、ロードバランサ１０４、監視サーバー１０５、クライアント端末１０６はネットワーク１００を介して接続されている。ネットワーク１００は、例えば、インターネット等のＬＡＮ、ＷＡＮ、電話回線、専用デジタル回線、ＡＴＭやフレームリレー回線、ケーブルテレビ回線、データ通信用無線回線等、またこれらの組み合わせにより実現される、いわゆる通信ネットワークである。ネットワーク１００は、データの送受信が可能であればよい。そして、クライアント端末１０６から印刷サーバー１０１、１０２、プリンタ１０３への通信手段、プリンタ１０３から印刷サーバー１０１、１０２への通信手段は異なっていてもよい。クライアント端末１０６は、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、ＰＤＡ（パーソナルデータアシスタント）等から成るが、プログラムの実行環境が内蔵された携帯電話であってもよい。クライアント端末１０６では、Ｗｅｂブラウザ（インターネットブラウザ、ＷＷＷブラウザ、Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂの利用に供するブラウザ）等のプログラムを実行する環境が内蔵されている。印刷サーバー１０１、１０２は、ロードバランサ１０４を介して、印刷する文書データを識別する情報と、出力先プリンタを指定する情報とを印刷リクエストと共にクライアント端末１０６のＷｅｂブラウザから受け付け、出力先プリンタに対して印刷を行う。また、プリンタ１０３の監視や管理、印刷ジョブの制御や監視、プリンタ１０３への印刷ジョブの転送を行う。印刷サーバー１０１，１０２は図１のようにロードバランサ１０４により仮想的にひとつの印刷サーバーとして振る舞うような冗長性を持たせた構成になっている。すなわち、クライアント端末で印刷を行おうとするアプリケーションは、印刷サーバー１０１、１０２を識別することなく、あたかも単一の印刷サーバーのごとくふるまうロードバランサ１０４へと印刷リクエスト（印刷要求）を送信する。監視サーバー１０５は、印刷サーバー１０１、１０２の稼働状態を監視しており、いずれかの印刷サーバーで障害が発生したことを検知すると他の印刷サーバーに対し、障害が発生した旨を通知する。監視サーバー１０５が印刷サーバーを監視する方法は本実施例では特に限定しないが、たとえば定期的に状態をポーリングしたり、あるいはＳＮＭＰトラップメッセージを用いたりすることができる。データベース１０７は大容量記憶装置であり、印刷サーバーが使用するドキュメントやドキュメント情報、プリンタ情報５００、印刷ジョブ情報５１０が格納されている。
【００１４】
＜ハードウェア構成＞
図２は、本発明の実施形態に係る印刷システムの印刷サーバー１０１、１０２、監視サーバー１０５、クライアント端末１０６のハードウェア構成図である。また、特に断らない限り、本発明の機能が実行可能であるならば、単体の機器であっても、複数の機器からなるシステムであっても、本発明が適用できることは言うまでもない。また、特に断らない限り、本発明の機能が実行可能であるならば、ＬＡＮ、ＷＡＮ等のネットワークを介して接続が為され、処理が行われるシステムであっても本発明を適用できることは言うまでもない。
【００１５】
ＣＰＵ２０１は情報処理装置の制御装置であり、ＨＤ２０７に格納されているアプリケーションプログラム、プリントドライバプログラム、オペレーティングシステムや本実施形態の印刷システムプログラムを実行する。また、ＣＰＵ２０１はＲＡＭ２０３にプログラム実行に必要な情報、ファイル等を一時的に格納する制御を行う。また、ＣＰＵ２０１はディスプレイ２０６上の不図示マウスカーソル等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。本実施例における、プリンタ作成処理はクライアントＰＣのディスプレイに表示されるウインドウより行う。ＲＯＭ２０２は記憶手段であり、内部には基本Ｉ／Ｏプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データを記憶する。ＲＡＭ２０３は一時記憶手段であり、ＣＰＵ２０１の主メモリやワークエリア等として機能する。インターフェース２０４は入出力手段であり、該インターフェース２０４を介して情報処理装置は外部装置とのデータのやり取りを行う。
【００１６】
キーボード２０５は指示入力手段であり、ユーザが印刷サーバー等に命令等を入力指示するためのものである。ディスプレイ２０６は表示手段であり、キーボード３０５から入力したコマンド等を表示するものである。ハードディスク（ＨＤ）２０７は外部記憶手段の一つであり、大容量メモリとして機能し、アプリケーションプログラム、プリントドライバプログラム、ＯＳ等を格納している。図２にはリムーバブル記憶媒体としてフロッピー（登録商標）ディスク（ＦＤ）２０９およびドライブ（ＦＤＤ）２０８を示しているが、光、光磁気、磁気等の他の記録方式の媒体であってもよい。
【００１７】
図３は、図２に示したＲＡＭ２０３のメモリマップの一例を示す図であり、ＦＤ２０９からロードされる印刷制御プログラムがＲＡＭ２０３上にロードされ実行可能となった状態のメモリマップである。本実施例では、ＦＤ２０９から印刷制御プログラム及び関連データを直接ＲＡＭ２０３にロードして実行させる例を示すが、これ以外にも、既に印刷制御プログラムがインストールされているＨＤ２０７からＲＡＭ２０３にロードするようにしてもよい。また、本印刷制御プログラムを記憶する媒体は、ＦＤ以外にＣＤ-ＲＯＭ、ＣＤ-Ｒ、ＰＣカード、ＤＶＤ、ＩＣメモリカードであってもよい。さらに、本印刷制御プログラムをＲＯＭ２０２に記憶しておき、これをメモリマップの一部となすように構成し、直接ＣＰＵ２０１で実行することも可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもってハードウェア装置の代替として構成することもできる。
【００１８】
基本Ｉ/Ｏプログラム３０１は、情報処理装置の電源がＯＮされたときに、ＨＤ２０７からＯＳがＲＡＭ２０３に読み込まれ、ＯＳの動作を開始させるＩＰＬ（イニシャルプログラムローディング）機能などを有しているプログラムが入っている領域である。オペレーティングシステム（ＯＳ）３０２は、コンピュータの資源管理等を実行するプログラムである。本実施例の印刷制御プログラム３０３は、ＲＡＭ２０３上に確保される領域に記憶される。関連データ３０４は、ＲＡＭ２０３上に確保される領域に記憶される。ワークエリア３０５は、ＣＰＵ２０１が本印刷制御プログラムを実行するための作業領域である。メモリマップ３１０は図２に示したＦＤ２０９のメモリマップの一例であり、ＦＤ２０９のデータ内容を示している。ボリューム情報３０６はデータの情報を示す。ディレクトリ情報３０７は、ディレクトリの構造を示す。本実施例の印刷システムプログラム３０８は、ＯＳ３０２の下でＲＡＭ２０３にロードされて印刷制御プログラム３０３として展開され、印刷サーバー１０１、１０２のＣＰＵ２０１により実行されて後述する印刷サービス４０１の一部として、図８、図９等の手順を実現する。関連データ３０９は印刷システムプログラム３０８の関連データである。印刷システムプログラム３０８は本実施例で説明するフローチャートに基づいてプログラム化したものであり、本実施例では印刷サーバー１０１、１０２は互いに同様の構成をとっている。
【００１９】
＜印刷システム＞
次に本実施形態における、印刷システムの印刷処理について説明する。なお、印刷システムの印刷処理は上述した印刷制御プログラム３０３で実行される。印刷制御プログラム３０３の各ソフトウェアモジュールはＨＤ２０７に記憶されており、ＣＰＵ２０１によってＲＡＭ２０３にロードされ実行される。
【００２０】
＜印刷ジョブの処理＞
図４は、本発明の実施形態に係る印刷システム、特に印刷サーバー１０１、１０２の印刷処理に係るソフトウェア構成を示す図である。なお図中プリンタ１０３が２つ表示されているが、これは表示上の便宜であって、プリンタ１０３は単一のプリンタである。
印刷サービス４０１はクライアント端末１０６のＷｅｂブラウザからの印刷要求を受け付け、データベース１０７に保存されたドキュメントを取得する。
次に印刷サービス４０１が、取得したドキュメントに対してＯＳのグラフィック機能を作用させてプリントジョブを構成する一連の描画命令を生成させると、生成した描画命令はプリンタドライバ４０２を経てＷｉｎｄｏｗＳ（登録商標）スプーラ４０３に渡される。ＷｉｎｄｏｗＳ（登録商標）スプーラ４０３は、ユーザが選択したポートモニタに、プリンタドライバ４０２で生成されたプリントジョブデータ（印刷データ）を渡してプリンタに送信させる手順をとる。本実施形態では、ユーザは予め印刷システム用のポートモニタ（以下、ジョブ制御ポートモニタと記す）４０４を指定して印刷を指示する。なおここでいうユーザは例えば印刷サービス４０１であってよい。クライアント端末１０６のユーザであるものとしてもよいが、この場合には印刷要求を出すユーザがポートモニタ４０４を知らねばならず、ユーザから印刷サーバー１０１，１０２の内容を知る必要がない点において、印刷サービス４０１がポートモニタ４０４を指定する方が望ましい。
【００２１】
印刷サービス４０１から描画命令を受け取ったプリンタドライバ４０２では、プリンタで処理可能なデータ、たとえばページ記述言語（ＰＤＬ）やＰＤＦ等で記述した印刷データを生成し、プリンタ１０３へ印刷データを送信するポートモニタ４０８ではなく、ジョブ制御ポートモニタ４０４に印刷データとして送信する。ジョブ制御ポートモニタ４０４は印刷データをプリンタ１０３に送信するのではなく、印刷システム用のジョブ制御サービス４０５に送信する。ジョブ制御サービス４０５は受信した印刷データをプリンタ１０３へと送信する。またジョブ制御サービス４０５は受信した印刷データをハードディスク（ＨＤ）２０７等の格納部に格納する。印刷データは、ジョブ制御サービス４０５が当該ジョブを完了と判断する時点まで、たとえば印刷ジョブの印刷が完了したと判断する時点まで、ＨＤ２０７に保持される。
【００２２】
ジョブ制御サービス４０５はさらに、デバイス情報コントロールモジュール４０６を用いてプリンタ１０３等のデバイスと通信を行い、デバイスから通知されるデバイス状態やジョブの状態などの情報を管理する。また、デバイスに対して所定の命令をする機能を備える。例えば、通信可能な各デバイス（印刷装置）の、印刷実行中、電力制御状態、障害情報（紙ジャム）、給紙段の情報等のステータスを取得する。また、各プリンタ内の印刷ジョブや動作状態に関する情報を入手したり、印刷ジョブの一時停止、キャンセル等の操作を行ったりする。
印刷サービス４０１とジョブ制御サービス４０５とは、ソフトウェアインターフェース（ＡＰＩ）を介して、印刷ジョブの情報やプリンタ１０３の状態などのやり取りを行う。印刷サービス４０１は必要に応じて、データベース１０７に保持されているプリンタ情報５００、印刷ジョブ情報５１０を更新する。
【００２３】
＜プリンタ情報およびジョブ情報＞
図５は、本実施例における印刷サービス４０１が使用するプリンタ情報５００および印刷ジョブ情報５１０を示すメモリマップの一例である。プリンタ情報５００、印刷ジョブ情報５１０はデータベース１０７に保持されており、印刷サービス４０１によって更新が行われる。印刷サービス４０１は管理するプリンタ１０３（複数のプリンタの場合には夫々のプリンタ）に対してプリンタ情報５００を保持している。また、印刷ジョブ夫々に対して印刷ジョブ情報５１０を保持している。印刷サービス４０１は、ユーザがプリンタ１０３を登録した際や、後述するプリンタ１０３に対する担当が変更になった際にプリンタ情報５００を更新する。また、印刷サービス４０１は、ジョブ制御サービス４０５から印刷ジョブ情報の通知に応じてデータベース１０７に保持されている印刷ジョブ情報５１０を更新する。本実施例では、印刷サービス４０１が印刷リクエストを受け付けた際に、プリンタ情報５００がジョブ制御サービス４０５に渡され、ジョブ制御サービス４０５は該情報にしたがって出力先を特定し、印刷ジョブの転送や監視を行う。
【００２４】
プリンタ情報５００においては、プリンタ名５０１は、印刷サービス４０１が管理するプリンタ１０３のプリンタオブジェクト名である。印刷リクエストを受け付けた際に、後述の印刷ジョブ情報５１０にも設定される。ポート名５０２はジョブ制御サービス４０５が出力先のプリンタ１０３を識別するための情報である。ＩＰアドレス５０３は、プリンタ１０３のネットワークアドレスである。担当サービスＩＤ５０４は、複数の印刷サービスうち、どの印刷サービスがプリンタの担当をしているかを識別するための情報である。本実施例において、印刷サーバーは冗長性をもっているため、ひとつのプリンタに対して複数の印刷サーバーが印刷処理を行うと印刷順に不整合が発生する。そのため、最初にリクエストを受け付けた印刷サービス４０１がプリンタ情報５００の担当サービスＩＤに自身の識別子を設定し、印刷処理が終了すると担当サービスＩＤの情報を削除する方法をとる。このため、あるタイミングで一つのプリンタを使用する印刷サービスは一つに限られる。印刷サービス４０１の識別子は、印刷サービス４０１が起動した際に生成され、各印刷サービスが保持する情報であり、印刷システムで一意の情報である。ひとつの印刷サーバーで稼働する印刷サービスがひとつであるなら、印刷サービスの識別子として印刷サーバーの識別子を用いてもよい。プリンタドライバ名５０５は、プリンタ情報５００のプリンタが使用するプリンタドライバ４０２の情報である。印刷サービス４０１は印刷リクエストを受け付けた際、プリンタドライバ名５０５で識別されるプリンタドライバに対し、印刷命令を行う。
【００２５】
ジョブＩＤ５１１は、ジョブ制御サービス４０５がジョブ制御ポートモニタ４０４から印刷データを受け付けた際に発行され、ジョブ制御サービス４０５から印刷サービス４０１に通知され、印刷ジョブ情報５１０に設定される。ステータス５１３はジョブの状態を示す情報である。ジョブの状態としてはスプール中、転送待ち、転送中、転送済み、印刷中、印刷完了、エラー中があり、変化の度にジョブ制御サービス４０５から印刷サービス４０１に通知され、印刷ジョブ情報５１０が更新される。文書ＩＤ５１４は、印刷ジョブのもととなったデータベース１０７上の文書を特定するためのＩＤであり、印刷サービス４０１が設定する。
なおプリンタ情報５００とジョブ情報５１０は、印刷サービス（あるいは印刷サーバー）と、それが印刷のために使用するプリンタと、そのプリンタで実行される印刷ジョブとを関連付けており、関連付け情報とよぶこともある
＜プリンタのハードウェア構成＞
図６はプリンタ１０３のハードウェア構成の一例を示す図である。イメージリーダ６０２は、スキャナ等を備え、原稿画像を光学的に読み取ってディジタル画像情報に変換する。また、イメージリーダ６０２は、前記ディジタル画像情報を画像形成部６０３に出力して画像を形成したり、又はファックス部６１１やＮＩＣ６０５等に渡して回線を介して伝送したりする。イメージリーダ６０２及びファックス部６１１は本実施形態においては付加的な要素であり、必須ではない。画像形成部６０３は、紙のハンドリングや画像転写・定着等の一連の画像形成プロセスを実行して、記録紙等の記録媒体上に画像を形成する。この画像形成部６０３は、例えばインクジェットプリンタや電子写真方式の画像形成ユニットを備えている。排紙部６０４は印刷出力した紙を排出し、ソートやステイプル等の処理を施す。ＮＩＣ（ＮｅｔｗｏｒｋＩ／Ｆ）６０５はネットワーク経由でＬＡＮ及びインターネットに接続し、外部と情報交換を行う。ＣＰＵ６０６は、ＲＯＭ６０７、又はＨＤＤ６０９に記憶されたプログラムをＲＡＭ６０８に読み込み、このプログラムに基づき処理を実行することによって、本装置（プリンタ）上の各処理を司る。不揮発性記憶手段のＲＯＭ６０７は本装置の各処理に関わるプログラムやデータを記憶する。書き換え可能なＲＡＭ６０８は本装置の各処理に関わる一時的なデータを電気的に記憶する。ＨＤＤ６０９は本装置の各処理に関わるプログラムやデータ、及び一時的なデータ等を記憶する。操作部６１０は、画面を表示したり、画面を介したユーザの操作指示を受け付けたりする。ファックス部６１１は、ファクシミリ画像の送受信、即ち、イメージリーダ６０２で読み取ったディジタル画像情報を送信したり、また逆に、受信したファクシミリ信号を復号し、画像形成部６０３で記録したりする等の処理を実行する。
【００２６】
＜プリンタのソフトウェア構成＞
図７は、プリンタ１０３のソフトウェア構成を階層的に示す図である。図７において、デバイスコントローラ７１０は、画像形成部６０３と、イメージリーダ６０２のそれぞれの動作を制御し、例えばイメージリーダ６０２で読み取った原稿情報を画像形成部６０３で複写するよう制御する。また、デバイスコントローラ７１０は、ネットワークインターフェース制御部７０６、プリント処理部７０７、操作部制御部７０９を有し、これら各部の間での情報のやり取りも制御する。プリント処理部７０７は、例えばネットワークインターフェース制御部７０６を介して入力された印刷データを処理して画像形成部６０３に出力し印刷する等の制御を行う。ネットワークインターフェース制御部７０６は、通信回線を介して他の通信端末との間のデータの送受信を制御する。送受信するデータには、印刷データのほか、プリンタやジョブの状態を示す情報も含まれる。操作部制御部７０９は、操作部６１０の操作パネルを使用したユーザの操作に応じた信号を発生したり、また操作部６１０（又は表示部）等に各種データやメッセージ等を表示したりするよう制御を行う。仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）７０５は、デバイスコントローラ７１０の上位に位置し、この仮想マシン７０５からデバイスコントローラ７１０を制御できるように構成されている。また、ネットワークインターフェース制御部７０６は、デバイスコントローラ７１０と、仮想マシン７０５との双方から直接利用でき、それぞれ独立して外部ネットワークにアクセスすることができるよう構成されている。更に、仮想マシン７０５の上位には、仮想マシン７０５が提供するＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍｍｉｎｇ  Ｉｎｔｅｒｆａｃｅ）に対応したプログラミング言語で記述されたアプリケーションが存在している。これらのアプリケーションは、仮想マシン７０５を介して間接的にデバイスコントローラ７１０に働きかけることができ、また画像形成部６０３やイメージリーダ６０２を動作させることができる。本実施例としては、アプリケーションとして、スケジュールアプリケーション７０１を備える。スケジュールアプリケーション７０１は、ジョブ制御サービス４０５の要求に応じて、印刷ジョブのスケジュールを行い、プリンタ内のジョブ状態、プリンタ状態の通知を行う。本実施例では、ジョブ制御サービス４０５は印刷ジョブの転送前に、スケジュールアプリケーション７０１に対してスケジュール要求を行い、スケジュールアプリケーション７０１からスケジュールアップ通知を受けると印刷ジョブの転送を開始する。また、これらアプリケーションは仮想マシン７０５上からアンインストールしたり、更に新たにアプリケーション７０２〜７０４としてインストールしたりするといった事が可能なように構成されている。また、上述したアプリケーションは本実施例としてはプリンタ１０３にインストールされるアプリケーションとして説明したが、ハードウェアとして備えられていても良い。また外部装置としてプリンタ１０３と通信可能に接続されたコンピュータ上のアプリケーションとして備えていても良い。外部記憶装置制御部７０８は、イメージリーダ６０２で読み取った画像を画像形成部６０３で外部記憶装置に保存可能なデータフォーマットに変換し、ＨＤＤ６０９に保存する。また、外部記憶装置制御部７０８は、外部記憶装置に保存したデータを読み出し、画像形成部６０３を介して印刷処理を行い、ネットＮＩＣ６０５を介して外部にネットワーク送信する。
【００２７】
＜印刷ジョブリカバリ処理＞
図８は、本実施例における、ひとつの印刷サービスで障害が発生した際に、ロードバランサ１０４配下の他の印刷サービス４０１の処理を示すフローチャートである。印刷サービスの障害には、印刷サーバーに生じた障害や、あるいは当該印刷サービス４０１がダウンするなどの印刷サービス自身に生じた障害を含む。印刷サーバー１０１，１０２は監視サーバー１０５によって正常動作しているか常時あるいは定期的に監視されている。監視サーバー１０５は、正常動作していない印刷サーバーがあると判断したなら、当該印刷サーバーに障害が生じたことを他の印刷サーバーで稼働する他の印刷サービスに通知する。なお、監視サーバー１０５が、印刷サーバーで稼働する印刷サービスの識別子をも常時監視していれば、障害の通知を行う際に、障害が生じた印刷サービスの識別子を通知することができる。図８の手順は、他の印刷サービスが監視サーバー１０５からこの障害の通知を受信するところから始まる。なお、障害の通知の宛先は印刷サービスとせず、印刷サーバーを宛先にして送信してもよい。
【００２８】
Ｓ８０１において、印刷サービス４０１は監視サーバー１０５より、ロードバランサ１０４配下の印刷サービスのいずれかにおいて障害が発生したことを示す通知を受信する。本実施例において、監視サーバー１０５は監視する（すなわち監視対象の）印刷サービスの一意な識別子および障害の通知先となる他の印刷サービスの識別子を保持しており、印刷サービス４０１に障害の通知を行う際には、障害が発生した印刷サービスの識別子および障害の発生した印刷サービス４０１を実行する印刷サーバーの識別情報（たとえばＩＰアドレス）とともに障害の発生を通知する。本実施例では、監視サーバー１０５は印刷サービス４０１に識別子を通知することを想定しているが、印刷サーバーのＩＰアドレス等印刷サービスの特定が可能な情報であればよい。なお印刷サービスの識別子は、たとえば印刷サービスによってデータベース１０７に保存された値或いは他の印刷サービスに通知されることで、他の印刷サーバにより知られることができる。あるいはロードバランサ１０５に通知し、ロードバランサにより印刷サービスを特定させるなどしてもよい。
Ｓ８０２において、印刷サービス４０１はＳ８０１で受信した識別子がプリンタ情報５００の担当サービスＩＤ５０４に存在するか、プリンタ情報５００の検索を行う。すなわち障害が発生した印刷サービスが担当しているプリンタを検索する。
Ｓ８０３において、印刷サービス４０１は、Ｓ８０２の検索で障害の発生した印刷サービスの識別子と合致する担当サービスＩＤ５０４があった場合は、Ｓ８０４の処理を行う。合致するものが無い場合は処理を終了する。なおここで合致する（すなわち該当する）プリンタ情報を着目プリンタ情報とも呼ぶ。
Ｓ８０４において、印刷サービス４０１は、着目プリンタ情報５００のプリンタ名５０１に対応するジョブ情報５１０が存在するか、ジョブ情報５１０の検索を行う。なおＳ８０４に先立って、着目プリンタ情報５００の担当サービスＩＤ５０４を、本処理を実行する印刷サービス４０１の識別子に書き換えてもよい。
Ｓ８０５において、印刷サービス４０１は、Ｓ８０４の検索処理で該当する印刷ジョブ情報５１０が存在する場合はＳ８０６の処理を行う。該当する印刷ジョブ情報５１０が複数存在した場合は、該当する印刷ジョブ情報それぞれについて、Ｓ８０６以降の処理を繰り返し行う。印刷ジョブ情報５１０が存在しない場合は処理を終了する。
Ｓ８０６において、印刷サービス４０１は、該当する印刷ジョブ情報のひとつに着目して着目印刷ジョブ情報５１０のステータス５１３を取得し、ステータス５１３がスプール中であればＳ８０７の処理を行う。着目印刷ジョブ情報のステータス５１３がスプール中でない場合はＳ８０９の処理を行う。
Ｓ８０７において、印刷サービス４０１は、着目印刷ジョブ情報５１０の文書ＩＤ５１４に対応する文書データをデータベース１０７より取得する。Ｓ８０８において、印刷サービス４０１は、Ｓ８０７で取得した文書データと、プリンタドライバ名５０５をもとに、プリンタドライバ４０２に対して印刷指示を行う。このときジョブ制御サービス４０５は、プリンタドライバ４０２からジョブ制御ポートモニタ４０４を介して印刷ジョブデータを受け取ると、プリンタ１０３に対してジョブデータ(印刷データ)の転送処理を行う。またこのとき印刷データの保存も併せて行われる。
Ｓ８０９において、印刷サービス４０１は、着目印刷ジョブ情報のステータス５１３がスケジュール待機中であれば、Ｓ８１０の処理を行う。スケジュール待機中でない場合はＳ８１１の処理を行う。
Ｓ８１０において、印刷サービス４０１は、ジョブ制御サービス４０５に対して、着目プリンタ情報５００で特定されるプリンタ（これを対象プリンタあるいは指定プリンタと呼ぶ。）に対して、着目ジョブ情報で特定される印刷ジョブ（これを対象印刷ジョブと呼ぶ。）のキャンセル要求を指示し、引き続きＳ８０７、Ｓ８０８の処理を行う。このとき、ジョブ制御サービス４０５は、印刷サービス４０１からのキャンセル要求に応じて、プリンタ１０３のスケジュールアプリケーション７０１に対して、スケジュール要求のキャンセルを指示する。
Ｓ８１１において、印刷サービス４０１は、着目印刷ジョブ情報のステータス５１３が「転送中」である場合はＳ８１２の処理を行う。Ｓ８１２において、印刷サービス４０１は、ジョブ制御サービス４０５に対してプリンタ１０３に「転送中」の対象印刷ジョブのキャンセル指示し、Ｓ８１０およびＳ８０７からＳ８０９の処理を行う。ここで、印刷ジョブサービス４０５は、Ｓ８１２において転送処理の中止を、ステップＳ８１０において、すでに対象プリンタ１０３に対して途中まで送信されている対象印刷ジョブのキャンセルを行う。Ｓ８１２における処理は、たとえば、着目印刷ジョブ情報のステータス５１３を「中止」等に書き換える処理である。Ｓ８１１において「転送中」ではない場合には、たとえばプリンタに送信された印刷ジョブは転送が完了し、スケジュールされ、実行中である場合も含まれ、そのような場合にはそのままジョブの実行を続行させる。
Ｓ８１３において、印刷サービス４０１はプリンタ１０３に転送されたジョブの監視を行う。このとき、ジョブ制御サービス４０５はスケジュールアプリケーション７０１と、ジョブ状態およびプリンタ状態のやり取りを行い、印刷サービス４０１に通知を行う。
【００２９】
以上の処理を行うことで、冗長化された印刷サーバーにおいて、印刷サービスに障害が生じた場合であっても、印刷データをデータベース等で共有することなく、障害が発生したサーバーのリカバリ処理を他の印刷サーバーが行うことが可能となる。
【００３０】
［実施例２］
本実施例は、実施例１に対して、印刷ジョブのステータス５１３が「転送中」の際に、すでにプリンタ１０３で印刷が開始されていたい場合の印刷サービス４０１の処理を追加している。以下で本実施例の印刷サービス４０１の処理を、図９を用いて説明する。なお、本実施例においてシステム構成や、各サーバー構成、プリンタ構成は実施例１と同様である。
【００３１】
図９は、印刷ジョブのステータス５１３が「転送中」かつ「印刷中」の際に、プリンタ１０３で印刷が開始されていた場合の処理フローを示す図である。図８の手順において、印刷サービス４０１が、ステップＳ８１１で転送中であると判定した場合には、本実施形態ではさらにプリンタ１０３からステータスを取得し、ステータスが「印刷中」であるか判定する（不図示）。印刷中でなければＳ８１２へ分岐し、印刷中であれば図９を実行する。
Ｓ９０１において、印刷サービス４０１は、ジョブ制御サービス４０５に対して、排紙情報（インプレッション情報）の取得要求を行う。ジョブ制御サービス４０５はスケジュールアプリケーション７０１に対して、ジョブＩＤ５１１で特定される印刷ジョブの排紙情報の取得を行う。
Ｓ９０２において、印刷サービス４０１はＳ９０１で取得した排紙情報を確認し、排紙数が０の場合はＳ９０４の処理を行う。なお印刷を開始する開始ページの既定値は１である。排紙数が０以上の場合はＳ９０３の処理を行う。
Ｓ９０３において、印刷サービス４０１は取得した排紙数に１を加えた数を開始ページに指定する。ここでいう開始ページとは、プリンタ１０３の処理において、印字を開始するページを意味する。
Ｓ９０４において、印刷サービス４０１は前記開始ページを指定して、プリンタドライバ４０２に印刷データの生成要求を行う。本実施例では、印刷データ生成時に開始ページを指定する方法を取っているが、印刷データ生成後に印刷データ内の開始ページを指定する部分を直接編集する方法を取ってもよい。ステップＳ９０４は、たとえば図８のＳ８０７、Ｓ８０８と同様の手順で実現できる。
なお図９のステップＳ９０２をスキップし、ステップＳ９０３を必ず行うようにして、Ｓ９０３において排紙数に１を加えた数を開始ページとして設定してもよい。また、印刷開始ページが１ではない場合には、印刷要求時に指定された印刷開始ページをステップＳ９０４で排紙枚数に加算してそれを印刷開始ページとして設定してもよい。また、たとえば両面印刷等の印刷設定が指定されている場合、その印刷設定を反映した上で、印刷済みのページを除いた最初のページを印刷開始ページとして、Ｓ９０３で指定するように構成することで、種々の印刷設定にも対応可能となる。
【００３２】
以上の処理を行うことで、印刷サーバーに障害が発生し、他のサーバーがリカバリ処理を行った際でも、排紙結果が重複することなく印刷処理を行うことが可能となる。
【００３３】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００３４】
１０１，１０２…印刷サーバー、１０４…ロードバランサー、１０５…監視サーバー、１０６…クライアント、１０７…データベース
【図１】
2015203981.tif 000003
【図２】
2015203981.tif 000004
【図３】
2015203981.tif 000005
【図４】
2015203981.tif 000006
【図５】
2015203981.tif 000007
【図６】
2015203981.tif 000008
【図７】
2015203981.tif 000009
【図８】
2015203981.tif 000010
【図９】
2015203981.tif 000011