(57)【要約】【課題】  印刷処理が１台のプリントサーバに集中することなく、指示通りの印刷順序で印刷する。【解決手段】  印刷前に印刷ジョブのスケジュール登録を行い、登録された順に従って、印刷ジョブを実行する印刷システムにおいて、プリントサーバが印刷ジョブの印刷リクエストを受け付け、その印刷ジョブの登録をプリントデバイスに要求する。プリントサーバが印刷ジョブの登録を要求した後、その印刷ジョブを破棄する。一方、印刷ジョブの登録を受け付けたプリントデバイスが印刷ジョブをスケジュールに登録し、プリントデバイスがそのスケジュールに従ってプリントサーバに印刷ジョブの実行を指示する。プリントサーバが指示された印刷ジョブを取得し、その印刷ジョブに基づき印刷データを生成してプリントデバイスに転送する。【選択図】      図１
2010108104.tif 000002
【特許請求の範囲】
【請求項１】
印刷ジョブのスケジュール登録を行い、登録された順序に従って前記印刷ジョブを実行する印刷システムであって、
プリントサーバが、印刷ジョブの印刷リクエストを受け付け、当該印刷ジョブの登録をプリントデバイスに要求する手段と、
前記プリントサーバが、前記印刷ジョブの登録を要求した後、当該印刷ジョブを破棄する手段と、
前記印刷ジョブの登録を受け付けたプリントデバイスが前記印刷ジョブをスケジュール登録する手段と、
前記プリントデバイスが、前記スケジュールに従って前記プリントサーバに印刷ジョブの実行を指示する手段と、
前記プリントサーバが、前記指示された印刷ジョブを取得し、当該印刷ジョブに基づき印刷データを生成して前記プリントデバイスに転送する手段と、
を有することを特徴とする印刷システム。
【請求項２】
前記指示する手段は、前記プリントデバイスで連続して印刷ジョブが処理されるように予め決められたプリントサーバに前記印刷ジョブの実行を指示することを特徴とする請求項１に記載の印刷システム。
【請求項３】
前記プリントサーバの負荷状況に基づいて、負荷のかかっていない他のプリントサーバへ前記印刷ジョブの実行の指示を分散させる手段を更に有することを特徴とする請求項１に記載の印刷システム。
【請求項４】
前記指示する手段は、指示する印刷ジョブの数が前記プリントデバイスに設定されている連続印刷制限数よりも少ない場合、前記プリントサーバに前記印刷ジョブの実行を指示することを特徴とする請求項１に記載の印刷システム。
【請求項５】
前記プリントデバイスと前記プリントサーバとが接続されている状態か否かを判定する手段と、
前記プリントデバイスと前記プリントサーバとが接続されていない状態と判定した場合、前記スケジュール登録の際に通知されるアドレスに印刷結果を通知する手段と、
を更に有することを特徴とする請求項１に記載の印刷システム。
【請求項６】
前記プリントサーバは、印刷結果通知で通知される情報に基づいて印刷結果を登録する手段を有することを特徴とする請求項１に記載の印刷システム。
【請求項７】
前記プリントサーバとの接続が切断された場合、前記プリントデバイスがスケジュール登録を参照して指示がなされたか否かを判定し、既に指示がなされている場合に、再度、指示を行うことを特徴とする請求項１に記載の印刷システム。
【請求項８】
印刷ジョブのスケジュール登録を行い、登録された順序に従って前記印刷ジョブを実行する印刷システムの制御方法であって、
プリントサーバが、印刷ジョブの印刷リクエストを受け付け、当該印刷ジョブの登録をプリントデバイスに要求する工程と、
前記プリントサーバが、前記印刷ジョブの登録を要求した後、当該印刷ジョブを破棄する工程と、
前記印刷ジョブの登録を受け付けたプリントデバイスが前記印刷ジョブをスケジュールに登録する工程と、
前記プリントデバイスが、前記スケジュールに従って前記プリントサーバに印刷ジョブの実行を指示する工程と、
前記プリントサーバが、前記指示された印刷ジョブを取得し、当該印刷ジョブに基づき印刷データを生成して前記プリントデバイスに転送する工程と、
を有することを特徴とする印刷システムの制御方法。
【請求項９】
請求項８に記載の印刷システムの制御方法の各工程をコンピュータに実行させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、印刷システム及びその制御方法に関するものである。
【背景技術】
【０００２】
従来、複数台のプリントサーバで印刷処理を分散する技術が提案されている（例えば、特許文献１参照）。
【０００３】
この特許文献１によれば、プリントサーバへの印刷処理の振り分けを行う管理サーバが論理デバイスを占有し、印刷リクエストをプリントサーバに割り振る。そして、プリントサーバが割り振られた順番に印刷データを取得し、プリントデバイスに対して配信印刷を行うことが開示されている。
【特許文献１】特開２００６−３１３４４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
全国のオフィスに位置する何千台ものプリントデバイスに対して配信印刷を行う際に、大量の印刷ジョブの制御を１台のプリントサーバで行うと、プリントサーバが高負荷となり、各ジョブの排紙までに多大な時間がかかってしまう。これを回避するためには、複数のプリントサーバでクラスタ化し、負荷分散（ロードバランシング）して稼動させる必要がある。印刷システムがクラスタ構成により分散されるため、プリントサーバ間で共通のジョブ情報やプリンタ情報などの印刷情報を共通ディスクで集中管理を行っている。
【０００５】
しかし、大規模プリントサーバシステムにおいて、印刷処理が集中してしまう。これを解決するプリントサーバシステムの必須要件として印刷順序制御がある。プリントサーバからプリントデバイスへの印刷実行時に、プリントデバイスとプリントサーバが一対一の関係となるため、１台のプリントデバイスへの印刷順序を守るためには、１台のプリントサーバが連続して印刷する必要がある。
【０００６】
そのため、１台のプリントデバイスへ印刷リクエストが集中した場合、それを処理するプリントサーバは１台に限定され、印刷処理がプリントサーバ１台に集中してしまう。
【０００７】
負荷が集中するとクラスタ化したメリットが損なわれ、負荷集中したプリントサーバへ印刷リクエストされたジョブはなかなか印刷されないことになりプリントサーバシステムの印刷パフォーマンスが劣化する恐れがある。
【０００８】
上述した特許文献１の方法によって印刷順序を制御した場合、特定のプリントデバイスへの印刷処理を行うプリントサーバが固定となる。そのため、１台のプリントデバイスへの印刷リクエストが集中した場合には、１台のプリントサーバの負荷が増大してしまい、印刷処理集中の課題を解決することができない。
【０００９】
本発明は、印刷処理が１台のプリントサーバに集中することなく、指示通りの印刷順序で印刷することを目的とする。
【課題を解決するための手段】
【００１０】
本発明は、印刷ジョブのスケジュール登録を行い、登録された順序に従って前記印刷ジョブを実行する印刷システムであって、
プリントサーバが、印刷ジョブの印刷リクエストを受け付け、当該印刷ジョブの登録をプリントデバイスに要求する手段と、
前記プリントサーバが、前記印刷ジョブの登録を要求した後、当該印刷ジョブを破棄する手段と、
前記印刷ジョブの登録を受け付けたプリントデバイスが前記印刷ジョブをスケジュールに登録する手段と、
前記プリントデバイスが、前記スケジュールに従って前記プリントサーバに印刷ジョブの実行を指示する手段と、
前記プリントサーバが、前記指示された印刷ジョブを取得し、当該印刷ジョブに基づき印刷データを生成して前記プリントデバイスに転送する手段と、
を有することを特徴とする。
【００１１】
また、本発明は、印刷ジョブのスケジュール登録を行い、登録された順序に従って前記印刷ジョブを実行する印刷システムの制御方法であって、
プリントサーバが、印刷ジョブの印刷リクエストを受け付け、当該印刷ジョブの登録をプリントデバイスに要求する工程と、
前記プリントサーバが、前記印刷ジョブの登録を要求した後、当該印刷ジョブを破棄する工程と、
前記印刷ジョブの登録を受け付けたプリントデバイスが前記印刷ジョブをスケジュールに登録する工程と、
前記プリントデバイスが、前記スケジュールに従って前記プリントサーバに印刷ジョブの実行を指示する工程と、
前記プリントサーバが、前記指示された印刷ジョブを取得し、当該印刷ジョブに基づき印刷データを生成して前記プリントデバイスに転送する工程と、
を有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、印刷処理が１台のプリントサーバに集中することなく指示通りの印刷順序で印刷することができる。
【発明を実施するための最良の形態】
【００１３】
以下、図面を参照しながら発明を実施するための最良の形態について詳細に説明する。
【００１４】
＜システム構成＞
図１は、本実施形態における印刷システムの構成の一例を示すブロック図である。図１において、複数の印刷システムを制御するためのサーバコンピュータシステムとプリントデバイス及びクライアントコンピュータがＷＡＮ（Wide Area Network）１１０を介して広域に接続されている。
【００１５】
ＤＢＭＳ（DataBase Management System）１０４は、ストレージ１０５に保存されているドキュメントデータ、印刷ジョブやプリンタ情報といったデータを管理するサーバコンピュータシステムである。他のサーバから各種データの更新、取得、追加、削除といったオペレーションを受け付け実行する。また、大規模な印刷システムの場合は負荷分散するためのクラスタ構成や障害発生に備えて冗長性を持たせたシステム構成を採用することも考えられる。
【００１６】
ストレージ１０５は、ＤＢＭＳ１０４とＤＡＳ（Direct Attached Storage）として直接接続する形態をとっても良いし、ＳＡＮ（Storage Area Network）としてネットワークを介して接続する形態をとっても良い。
【００１７】
プリントサーバシステム１０１は、印刷システムにおけるプリントデバイスの監視や管理、印刷ジョブの制御や監視、プリントデバイスへの印刷ジョブの転送を司るサーバコンピュータシステムである。このプリントサーバシステム１０１も大規模な印刷システムの場合は負荷分散するためのクラスタ構成もしくは冗長性を持たせたクラスタ構成となっている。また、ＬＡＮ（Local Area Network）１０９Ａを介してＤＢＭＳ１０４や後述するＷｅｂサーバシステム１０２と接続し、印刷ジョブデータや印刷制御指示、管理している印刷ジョブの情報などを交換する。
【００１８】
Ｗｅｂサーバシステム１０２は、ＷＡＮ１１０を介して接続する複数のフロントエンドのクライアント１０８へＤＢＭＳ１０４で管理しているジョブ情報やドキュメント情報を送信する。Ｗｅｂサーバシステム１０２はサーバコンピュータシステムであり、大規模な印刷システムの場合は負荷分散のためのクラスタ構成や冗長構成となることが通例である。また、クライアント１０８とからの印刷指示、印刷ジョブの操作を受け付け、プリントサーバシステム１０１へ指示を転送する。
【００１９】
また、Ｗｅｂサーバシステム１０２は、後述するディレクトリサーバ１０３と連携してクライアント１０８及びプリントデバイス１０７から行われるログインの認証管理を行う。Ｗｅｂサーバシステム１０２は、予めシステム設計者かもしくはドキュメント生成者が設定したユーザの権限を保持している。権限情報としては、例えばドキュメントの参照、印刷、削除権限、あるプリンタへの印刷権限、印刷ジョブの削除権限などが挙げられる。また、このユーザの権限情報はＷｅｂサーバシステム１０２で保存、管理しても良いし、上述したＤＢＭＳ１０４で保存、管理しても良い。
【００２０】
ディレクトリサーバ１０３は、ユーザ名及びパスワードの組み合わせによってユーザの認証管理を行うサーバである。また、各々のユーザはドメイングループに参加するような構成も可能であり、例えばドメイングループ内のユーザ同士での権限をユーザ単体の権限とは違う範囲で設定することもできる。また、各々のユーザは複数のドメイングループに参加するように設計することも可能である。
【００２１】
システム管理サーバ１０６は、プリントサーバシステム１０１、Ｗｅｂサーバシステム１０２、ディレクトリサーバ１０３などのシステムを管理するサーバである。
【００２２】
プリントデバイス１０７（１０７Ａ、１０７Ｂ、１０７Ｃ、１０７Ｄ）は印刷デバイスである。プリントデバイス１０７は不図示のネットワークインタフェースを介してＬＡＮ１０９ＢもしくはＬＡＮ１０９Ｃに接続されている。また、ＬＡＮ１０９Ｂ、１０９ＣはＷＡＮ１１０と接続され、プリントデバイス１０７はＬＡＮ及びＷＡＮを介して上述したプリントサーバシステム１０１やＷｅｂサーバシステム１０２と通信が可能に構成されている。
【００２３】
このプリントデバイス１０７としては、電子写真方式を採用したレーザビームプリンタやインクジェット方式を採用したインクジェットプリンタを適宜適用することができる。また、プリントデバイス１０７は後述する印刷スケジュールを管理するスケジュールアプリケーションを備える。
【００２４】
クライアント１０８（１０８Ａ、１０８Ｂ、１０８Ｃ、１０８Ｄ）は、情報処理を行うためのクライアントコンピュータである。クライアント１０８は不図示のネットワークインタフェースを介してＬＡＮ１０９ＢもしくはＬＡＮ１０９Ｃに接続され、ＷＡＮ１１０を介して各種サーバシステムと通信が可能に構成されている。尚、クライアント１０８は、それぞれ永続記憶装置を接続したコンピュータであっても良いし、一時記憶装置のみによって構成されたThin Client構成をとっても良い。
【００２５】
＜サーバコンピュータ及びクライアントコンピュータのハードウェア構成＞
図２は、サーバコンピュータ又はクライアントコンピュータのハードウェア構成の一例を示す図である。ＣＰＵ２０３は、ＨＤＤ２０６に記憶されたプログラムをＲＡＭ２０５に読み込み、そのプログラムに従って処理を実行し、本装置（サーバコンピュータ、又はクライアントコンピュータ）を制御する。ＲＯＭ２０４は、本装置の各処理に関わるプログラムや制御データを記憶する書き換え不可能なメモリである。ＲＡＭ２０５は、本装置の各処理に関わる一時的なデータを記憶する書き換え可能なメモリである。
【００２６】
尚、本装置の各処理に関わるプログラムや制御データ及び一時的なデータなどはＨＤＤ２０６にも記憶される。
【００２７】
入力装置２０７は、本装置への指示入力を受け付けるキーボードやポインティングデバイスである。表示装置２０８は、本装置の動作状況や、本装置上で動作する各プログラムが出力する情報を表示する。ＮｅｔｗｏｒｋＩ／Ｆ２０２は、ネットワーク経由でＬＡＮ及びインターネットに接続し、外部と情報交換を行うためのインタフェースである。外部機器Ｉ／Ｆ２０１は外部記憶機器などを接続するためのインタフェースである。
【００２８】
＜Ｗｅｂサーバシステム＞
Ｗｅｂサーバシステム１０２は上述の通り、負荷分散するためのクラスタ構成が通例であり、複数のＷｅｂサーバから構成される。Ｗｅｂサーバは、ＷＷＷ（World Wide Web）システムにおいて情報通信を行うサーバであり、ソフトウェアである。Ｗｅｂサーバシステム１０２は以下の機能を備える。
【００２９】
フロントエンドのクライアント１０８からのログインによりユーザアカウント情報及びパスワードを得てディレクトリサーバ１０３に認証を依頼する。ログイン認証に成功すると、ユーザのドキュメントの参照権限を承認する。承認された参照権限に従ってＤＢＭＳ１０４からドキュメントの情報を取得し、ログインしているクライアント１０８へ情報を送信する。また、クライアント１０８からドキュメントの印刷を指示されると、印刷指示をプリントサーバシステム１０１へ送信する。
【００３０】
また、上述した参照権限の承認ポリシーとして、例えば所属するドメイン全てのユーザのドキュメントが参照可能であるポリシーや、ユーザ本人のドキュメントのみ参照可能といったポリシーが考えられる。また、それらは印刷システムを導入するユーザのポリシーによって柔軟に設計可能である。また、この承認については、ドキュメントの参照のみでなく、ドキュメントの印刷権限、印刷ジョブの削除権限、プロモート権限といったような権限設定が可能である。
【００３１】
＜ＤＢＭＳ＞
ＤＢＭＳ１０４はカード型、リレーショナル型、オブジェクト型といった様々なデータ管理方法を選択することができるが、本実施形態においては最も広く普及しているリレーショナル型として説明する。ＤＢＭＳ１０４はジョブ情報３００（図３）、デバイス情報４００（図４）、ドキュメント情報５００（図５）などをテーブル情報としてストレージ１０５に保持している。
【００３２】
図３は、本実施形態におけるＤＢＭＳで管理されるジョブ情報の一例を示す図である。図３に示すように、ジョブ情報３００には、ジョブＩＤ３０１、ドキュメント名３０２、ユーザ名３０３、受付日時３０４、ドキュメントＩＤ３０５、ステータス３０６、デバイス名３０７、デバイス内ジョブＩＤ３０８が含まれる。ここで、ユーザ名３０３は印刷を指示したユーザのアカウント名である。ドキュメントＩＤ３０５はＤＢＭＳ１０４で管理されているドキュメントの識別子である。ステータス３０６は印刷ジョブのステータスである。
【００３３】
ステータスとしては、印刷データをプリントデバイス１０７へ転送している「転送中」、プリントデバイス１０７で印刷が行われている「印刷中」、印刷順序待ちである「スケジュール待機」といった状態がある。
【００３４】
また、デバイス名３０７は印刷を行うプリントデバイス１０７の名称である。デバイス内ジョブＩＤ３０８はプリントデバイス１０７内のスケジュールアプリケーション（詳細は図８を用いて後述する）により発行されるジョブの識別子である。
【００３５】
図４は、本実施形態におけるＤＢＭＳで管理されるデバイス情報の一例を示す図である。デバイス情報４００として、印刷対象となるプリントデバイス１０７の各種情報が保持されている。図４に示すように、デバイス情報４００には、デバイス名４０１、デバイスの通信先のアドレス４０２、通信に用いられるポート番号４０３、印刷データの転送方法４０４、デバイスのステータス４０５、プリントサーバアドレス４０６が含まれる。
【００３６】
ここで、印刷データの転送方法４０４には、データをストリームとしてＴＣＰ／ＩＰにより連続送信するＲＡＷ、ＬＰＲ（Line PRinter deamon protocol）、或いはＨＴＴＰにより送信する方法などがある。
【００３７】
また、デバイス情報４００は、プリントサーバシステム１０１のデバイスマネージャが管理しても良く、データを保持する場所は問わない。
【００３８】
また、プリントサーバアドレス４０６には、プリントサーバシステム１０１内の複数のプリントサーバの１つのアドレスが登録される。ここで、プリントサーバアドレス４０６にアドレスが登録されている場合には、そのプリントサーバが印刷リクエストの処理中であることを示す。プリントデバイス１０７での印刷順序を守るため、スケジュール登録はプリントサーバアドレス４０６に登録されているプリントサーバで占有される。
【００３９】
図５は、本実施形態におけるＤＢＭＳで管理されるドキュメント情報の一例を示す図である。図５に示すように、ドキュメント情報５００には、ドキュメントの識別子であるドキュメントＩＤ５０１、ドキュメント名５０２、ドキュメントの登録者のユーザ名５０３、実際にドキュメントが保存されている場所を示すデータパス５０４が含まれる。また、本実施形態では、ドキュメント情報５００としてリファレンスが保持され、データは別の箇所で保存しているが、直接保持しても良い。
【００４０】
ＤＢＭＳ１０４は、例えば以下のような処理に利用される。
（１）Ｗｅｂサーバシステム１０２から指定したユーザ名と一致する全てのドキュメント情報やジョブ情報の取得。
（２）Ｗｅｂサーバシステム１０２からデバイス名の指定によって一致するデバイス情報の取得。
（３）プリントサーバ６０１からドキュメントＩＤの指定によって一致するドキュメントの情報の取得。
（４）プリントサーバ６０１からの印刷実行に必要なデバイス情報の取得。
（５）プリントサーバ６０１からの新規ドキュメントの登録、ジョブの登録。
（６）プリントサーバ６０１からジョブやデバイスの状態が変化した際のジョブステータスやデバイスステータスの更新。
【００４１】
＜プリントサーバシステム＞
図６は、プリントサーバシステム１０１の構成の一例を示すブロック図である。図６において、プリントサーバシステム１０１は大規模な印刷システムに対応するために、負荷分散構成が採用されている。そして、複数台のプリントサーバ６０１がＬＡＮ１０９ＡやＷＡＮ１１０と負荷分散を行うためのスイッチ機構であるロードバランサ６０２を介して接続されている。ロードバランサ６０２は、複数台のプリントサーバ６０１の負荷状況を把握し、負荷のかかっていないサーバに対してリクエストを優先的に発行するような分散を行う。
【００４２】
負荷状況の把握方法としては、単純にリクエストを順次各サーバに回していくラウンドロビンと呼ばれる方法や、規定のリクエストを定期的に複数台のプリントサーバ６０１に送出し、返信までかかった時間を負荷として判断する方法などが考えられる。
【００４３】
ここで、プリントサーバ６０１の概略構成を説明する。プリントサーバ６０１はＡＰＩ６０３、ＤＢドライバ６０４、ジョブマネージャ６０５、デバイスマネージャ６０６から構成されている。ＡＰＩはApplication Program Interfaceの略である。ＡＰＩ６０３では、Ｗｅｂサーバシステム１０２や他の印刷可能なドキュメントを生成するサーバからのドキュメント登録、ドキュメントの印刷リクエストや印刷ジョブの制御リクエストを受け付ける。また、この他の印刷可能なドキュメントを生成するサーバとしては、例えば定型帳票を作成するような帳票サーバや、ユーザのドキュメントを一括管理するドキュメント管理サーバなどがある。
【００４４】
ＡＰＩ６０３が印刷リクエストを受け付けると、リクエスト情報よりＤＢＭＳ１０４で保持するデバイス情報４００を特定し、このプリントサーバのアドレスがプリントサーバアドレス４０６に登録される。また、印刷リクエストＣＢ（Call Back）する際に、プリントサーバアドレス４０６をクリアする。ここで、プリントサーバアドレス４０６を登録する際に、既に他のプリントサーバアドレスが登録されている場合には印刷リクエストをそのプリントサーバアドレスへ転送する。
【００４５】
また、ＤＢドライバ６０４はドキュメント登録リクエストを受けて、ＤＢＭＳ１０４へドキュメントを登録する場合、印刷リクエストを受けて印刷データをＤＢＭＳ１０４から取得する場合など、ＤＢＭＳ１０４との通信を行うモジュールである。
【００４６】
次に、ジョブマネージャ６０５は次のような機能を有する。ＡＰＩ６０３で受け付けたドキュメントを、ＤＢドライバ６０４を介してＤＢＭＳ１０４へ登録する。ＡＰＩ６０３が印刷リクエストを受け付けると、ＤＢドライバ６０４を介してＤＢＭＳ１０４の印刷するドキュメント情報を参照し印刷可否を判断する。印刷可能な場合にはジョブマネージャ６０５がスケジュールアプリケーションにスケジュール登録するようデバイスマネージャ６０６へ指示する。
【００４７】
デバイスマネージャ６０６でスケジュール登録が行われると、ジョブマネージャ６０５がデバイスマネージャ６０６から通知を受ける。その後、印刷リクエスト情報とスケジュール登録ＣＢで受け取る情報をジョブ情報３００としてＤＢＭＳ１０４に登録する。ＤＢＭＳ１０４に登録された後、ジョブ情報はプリントサーバ６０１内で保持する必要はなく破棄される。
【００４８】
次に、デバイスマネージャ６０６の処理について説明する。デバイスマネージャ６０６はＤＢＭＳ１０４が保持しているデバイス情報４００を取得し、一時保存（キャッシュ）する。デバイスマネージャ６０６でキャッシュされるデバイス情報４００は印刷実行時に使用され、印刷開始時に毎回取得しても良いし、定期的に取得しても良く、デバイス情報４００のキャッシュを更新するタイミングは問わない。
【００４９】
また、デバイスマネージャ６０６はジョブマネージャ６０５からジョブのスケジュール登録リクエストを受け付け、プリントデバイス１０７内のスケジュールアプリケーションとの通信を開始してスケジュール登録を行う。スケジュール登録が完了し、スケジュールアプリケージョンからスケジュール登録ＣＢを受け取ると、ジョブマネージャ６０５にスケジュール登録ＣＢ情報を通知する。尚、スケジュール登録シーケンスの詳細については後述する。
【００５０】
デバイスマネージャ６０６がジョブマネージャ６０５からの印刷指示を受け付けると、印刷指示で受け取るスケジュール情報に基づいてドキュメントデータを取得する。次に、デバイスマネージャ６０６は保持しているデバイス情報４００のキャッシュを用いドキュメントデータをプリントデバイス１０７で印刷可能な形式に変換し、プリントデバイス１０７へ印刷データ転送を開始する。プリントデバイス１０７が印刷可能な形式にはＰＤＬ（Page Discription Language）やＰＤＦ（Portable Document Format）などがある。
【００５１】
ここでプリントデバイス１０７がＰＤＦを直接受け付けて印刷できるＰＤＦダイレクトプリント機能を有する場合など形式変換が必要ない場合もある。尚、デバイスマネージャ６０６が印刷指示を受け付けてから印刷データをプリントデバイス１０７へ転送し、印刷が完了するまでの印刷シーケンスの詳細については後述する。
【００５２】
また、デバイスマネージャ６０６はスケジュールアプリケーションから印刷結果を受け付ける機能を有する。そして、スケジュールアプリケーションからの印刷結果を受け付け、ＤＢドライバ６０４を介してＤＢＭＳ１０４に印刷結果の登録を行う。
【００５３】
＜プリントデバイスのハードウェア構成＞
図７は、プリントデバイス１０７のハードウェア構成の一例を示す図である。イメージリーダ７０２は原稿給送部７０１で原稿を読み込む。画像形成部７０３は読み込んだ原稿やネットワーク経由で受信したデータを印刷画像に変換し印刷出力する。排紙部７０４は印刷出力した紙を排出し、ソートやステイプルなどの処理を施す。ＮｅｔｗｏｒｋＩ／Ｆ７０５はネットワーク経由でＬＡＮ及びインターネットに接続し、外部と情報交換を行うためのインタフェースである。
【００５４】
ＣＰＵ７０６はＲＯＭ７０７又はＨＤＤ７０９に記憶されたプログラムをＲＡＭ７０８に読み込み、そのプログラムに従って処理を実行し、本装置（プリントデバイス）を制御する。不揮発性のＲＯＭ７０７は本装置の各処理に関わるプログラムやデータを記憶するメモリである。書き換え可能なＲＡＭ７０８は本装置の各処理に関わる一時的なデータを記憶するメモリである。ＨＤＤ７０９は本装置の各処理に関わるプログラムやデータ及び一時的なデータ等を記憶する。操作部７１０は後述する画面を表示したり、画面を介したユーザの操作指示を受け付けたりする。
【００５５】
＜プリントデバイス＞
図８は、プリントデバイス１０７の構成を階層的に示す図である。図８において、画像形成部８１３は、紙のハンドリングや画像転写・定着等の一連の画像形成プロセスを実行して、記録紙等の記録媒体上に画像を形成する。この画像形成部８１３は、例えばインクジェット方式や電子写真方式の画像形成ユニットを備えている。
【００５６】
画像読み取り部８１７は、スキャナ等を備え、原稿画像を光学的に読み取ってデジタル画像情報に変換する。また、画像読み取り部８１７は、そのデジタル画像情報を画像形成部８１３に出力して画像を形成したり、ファックス部８１２やネットワークインタフェース部８１４等に渡して回線を介して伝送したりする。
【００５７】
デバイスコントローラ８１０は、画像形成部８１３と、画像読み取り部８１７とのそれぞれの動作を制御し、例えば画像読み取り部８１７で読み取った原稿情報を画像形成部８１３で複写するよう制御する。また、デバイスコントローラ８１０は、ネットワークインタフェース部８１４、プリント処理部８１５、ファックス部８１２、操作部制御部８１１を有し、これら各部の間での情報のやり取りも制御する。
【００５８】
ファックス部８１２は、ファクシミリ画像の送受信、即ち画像読み取り部８１７で読み取ったディジタル画像情報を送信したり、また逆に、受信したファクシミリ信号を復号し、画像形成部８１３で記録したりする等の処理を実行する。
【００５９】
操作部制御部８１１は、不図示の操作部の操作パネルを使用したユーザの操作に応じた信号を発生したり、また操作部（又は表示部）等に各種データやメッセージ等を表示したりするように制御する。プリント処理部８１５は、例えばネットワークインタフェース部８１４を介して入力された印刷データを処理して画像形成部８１３に出力し、印刷する等の制御を行う。ネットワークインタフェース部８１４は、通信回線を介して他の通信端末との間のデータの送受信を制御する。
【００６０】
仮想マシン（Virtual Machine）８０５は、デバイスコントローラ８１０の上位に位置し、この仮想マシン８０５からデバイスコントローラ８１０を制御できるように構成されている。
【００６１】
また、ネットワークインタフェース部８１４は、デバイスコントローラ８１０と、仮想マシン８０５との双方から直接利用でき、それぞれ独立して外部ネットワークにアクセスすることができるよう構成されている。
【００６２】
更に、仮想マシン８０５の上位には、仮想マシン８０５が提供するＡＰＩに対応したプログラミング言語で記述されたアプリケーション８０１〜８０３が存在している。これらのアプリケーション８０１〜８０３は、仮想マシン８０５を介して間接的にデバイスコントローラ８１０に働きかけることができ、また画像形成部８１３や画像読み取り部８１７を動作させることができる。
【００６３】
本実施形態では、アプリケーション８０１として、特にスケジュールアプリケーションを備える。また、アプリケーション８０１〜８０３は、仮想マシン８０５上からアンインストールしたり、更に新たにアプリケーション８０４をインストールしたりするといったことが可能なように構成されている。
【００６４】
また、これらのアプリケーション８０１〜８０３は、本実施形態ではプリントデバイス１０７にインストールされるものとして説明したが、ハードウェアとして備えられていても良い。更に、プリントデバイス１０７と通信可能に接続された外部装置（コンピュータ）上のアプリケーションとして備えられていても良い。
【００６５】
外部記憶装置制御部８１６は、画像読み取り部８１７で読み取られた画像を画像形成部８１３で外部記憶装置に保存可能なデータフォーマットに変換し、外部記憶装置に保存する。また、外部記憶装置制御部８１６は、外部記憶装置に保存されたデータを読み出し、画像形成部８１３を介して印刷処理を行ったり、ネットワークインタフェース部８１４を介して外部にネットワーク送信したりする。
【００６６】
また、本実施形態では、プリントデバイス１０７へのログインの方法としてＩＣカードリーダ８１８が通信可能に接続されている。ログインの方法としては、他の方法でも勿論問題なく、例えば操作部制御部８１１が管理するデバイスパネルからの入力といった方法でも良い。
【００６７】
＜スケジュールアプリケーション＞
図９は、スケジュールアプリケーションの構成を示すブロック図である。スケジュールアプリケーション８０１は、通信マネージャ９０１、ジョブマネージャ９０２、デバイスマネージャ９０３から構成される。
【００６８】
ここで、通信マネージャ９０１はプリントサーバ６０１からの接続やリクエストを受け付け、デバイスコントローラ８１０から通知される印刷ジョブのステータス変化の通知を行う。ジョブマネージャ９０２はプリントサーバ６０１から受け付けたスケジュール情報をスケジュールリストとして保持し、印刷ジョブを管理するモジュールで、スケジュールリストに登録された順序通りに印刷が行われるように制御する。また、プリントサーバ６０１からの印刷ジョブの削除やプロモート（優先度変更）といった操作を受け付け、印刷ジョブをコントロールする。尚、印刷ジョブの削除やプロモートの詳細な説明は本発明と関係しないため省略する。
【００６９】
デバイスマネージャ９０３はデバイスコントローラ８１０との通信を行うモジュールで、印刷ジョブの削除を行ったり、印刷ジョブの状態の変化をキャッチしたりする。
【００７０】
図１０は、ジョブマネージャ９０２が管理する印刷ジョブのスケジュール情報を示す図である。スケジュール情報１０００には、ドキュメント名１００１、ユーザ名１００２、受付日時１００３、ドキュメントＩＤ１００４、ステータス１００５、デバイス名１００６、デバイス内ジョブＩＤ１００７、リクエスト先アドレス１００８が含まれる。
【００７１】
スケジュール情報１０００は、基本的には上述したＤＢＭＳ１０４で管理されるジョブ情報３００と共通する情報であり、詳細な説明は省略する。但し、ステータス１００５にプリントサーバ６０１への印刷指示が行われた状態を示す「リクエスト済」が増える。
【００７２】
図１１は、デバイスマネージャ９０３が管理する連続印刷制限数に関する情報を示す図である。連続印刷制限情報１１００には、連続印刷制限数１１０１が含まれる。ここで、スケジュールアプリケーション８０１からプリントサーバ６０１へ印刷指示が複数ジョブまとめて行われ、プリントサーバ６０１は複数の印刷データを同一セッションで連続して転送する。連続印刷制限数１１０１はその最大ジョブ数である。
【００７３】
つまり、連続印刷制限数１１０１は、プリントサーバ６０１が一度に印刷処理する最大ジョブ数となるため、連続印刷制限数１１０１でプリントサーバ６０１毎の負荷分散状況を調整することができる。このように、プリントサーバシステム１０１内で負荷分散されるプリントサーバ６０１の台数や性能によって連続印刷制限数１１０１を調整することにより印刷処理のパフォーマンスの最適化を行うことができる。
【００７４】
ここで、上述した構成を備える本実施形態における印刷システムの印刷フローについて詳細に説明する。
【００７５】
＜プリントサーバ６０１の印刷リクエスト受付フロー＞
図１２は、プリントサーバ６０１が印刷リクエストを受け付けた際の処理を示すフローチャートである。まず、プリントサーバ６０１におけるＡＰＩ６０３が印刷リクエストを受け付ける（Ｆ１２０１）。この印刷リクエストによりドキュメントＩＤ及び印刷対象のプリンタ名称もしくはプリンタのアドレスが通知される。次に、ジョブマネージャ６０５が通知されたドキュメントＩＤに基づきＤＢドライバ６０４を介してＤＢＭＳ１０４からドキュメント情報５００を取得し、ジョブ情報を生成する（Ｆ１２０２）。ここで生成されるジョブ情報はＤＢＭＳ１０４が保持するジョブ情報３００と同じ情報であるが、スケジュールアプリケーション８０１から発行されるデバイス内ジョブＩＤ３０８はまだ確定していない。
【００７６】
次に、上述のＦ１２０２で取得したドキュメント情報よりドキュメントデータの存在を確認し、印刷可能か否かを判定する（Ｆ１２０３）。ここで、ドキュメントデータが存在しない場合には、印刷不可能と判定し、この印刷リクエストに対する印刷リクエストＣＢとしてエラーを返す（Ｆ１２０８）。
【００７７】
一方、ドキュメントデータが存在する場合には、印刷可能と判定し、そのドキュメントデータの印刷を行うプリントデバイス１０７を特定し、スケジュールアプリケーション８０１に対してスケジュール要求を行う（Ｆ１２０４）。このスケジュール要求で通知するスケジュール情報リストはＦ１２０２で生成したジョブ情報とリクエスト先アドレスから生成される。
【００７８】
本実施形態では、リクエスト先アドレスはロードバランサ６０２のアドレスを指定する。また、リクエスト先アドレスの指定はロードバランサ６０２のアドレスに固定し、負荷分散をロードバランサ６０２に任せる。ここで、リクエスト先アドレスに複数のプリントサーバ６０１のアドレスを振り分けて登録し、ロードバランサ６０２の機能を使用せずに負荷分散を行うこともできる。
【００７９】
上述したＦ１２０４のスケジュール要求により、スケジュールアプリケーション８０１がスケジュール登録の処理を行い、スケジュール登録ＣＢが返される。このスケジュール登録ＣＢには、スケジュールアプリケーション８０１で発行されたデバイス内ジョブＩＤが含まれる。
【００８０】
次に、スケジュール登録ＣＢにより受け取ったデバイス内ジョブＩＤとジョブ情報とをＤＢＭＳ１０４のジョブ情報３００に保存する（Ｆ１２０５）。ここで、ＤＢＭＳ１０４に保存されたジョブ情報３００のステータス３０６はプリントサーバ６０１により随時更新される。そして、Ｗｅｂサーバシステム１０２はＤＢＭＳ１０４が保持しているジョブ情報３００を参照してユーザにジョブ実行状況を伝えることができる。
【００８１】
ジョブ情報３００の保存が完了すると、プリントサーバ６０１はスケジュール登録に使用するために、Ｆ１２０２で生成したジョブ情報を破棄する（Ｆ１２０６）。印刷実行に必要なジョブ情報は、スケジュールアプリケーション８０１からの印刷指示を受け付けた際の情報として受け取ることができるため、プリントサーバ６０１はジョブ情報を保持し続ける必要がない。
【００８２】
そして、Ｆ１２０７において、プリントサーバ２０１は印刷リクエスト受付完了として印刷リクエストＣＢを返す。以上をもってプリントサーバ２０１の印刷リクエスト受付が完了する。
【００８３】
＜スケジュールアプリケーション８０１のスケジュール登録動作フロー＞
図１３は、スケジュールアプリケーション８０１がプリントサーバ６０１からスケジュール要求を受け付けた際の処理を示すフローチャートである。スケジュールアプリケーション８０１の通信マネージャ９０１がスケジュール要求を受け付け、ジョブマネージャ９０２にスケジュール要求を受け付けた際に渡されるスケジュール情報リストを通知する（Ｆ１３０１）。そして、スケジュール情報リストを受け取ったジョブマネージャ９０２がスケジュール情報リストに登録されている全てのジョブに対してデバイス内ジョブＩＤを発行する（Ｆ１３０２）。
【００８４】
次に、ジョブマネージャ９０２が管理するスケジュールリストを確認し（Ｆ１３０３）、ステータス１００５がスケジュール待機となっているジョブがあるか否かを確認する（Ｆ１３０４）。ここで、既にスケジュールリストにスケジュール待機のジョブがある場合は、スケジュールリストの最後にスケジュール要求で受け取ったスケジュール情報リストを追加し（Ｆ１３０７）、この処理を終了する。
【００８５】
一方、スケジュールリストにスケジュール待機のジョブがない場合は、スケジュール要求で受け取ったスケジュール情報リストをスケジュールリストに登録し、ステータス１００５をスケジュール待機とする（Ｆ１３０５）。そして、スケジュール情報リストの先頭のスケジュール情報でジョブ実行を開始する（Ｆ１３０６）。ジョブ実行開始についての詳細は後述する。
【００８６】
このように、スケジュールアプリケーション８０１がプリントサーバ６０１からのスケジュール要求を受け付け、スケジュール情報リストの登録を行う。
【００８７】
＜スケジュールアプリケーション８０１のジョブ実行開始フロー＞
図１４は、スケジュールアプリケーション８０１がプリントサーバ６０１に対して印刷指示を行う際の処理を示すフローチャートである。まず、ジョブマネージャ９０２で管理されるスケジュールリストに登録済みであるスケジュール情報１０００でジョブ実行開始が通知される（Ｆ１４０１）。次に、通知されたスケジュール情報のステータス１００５をリクエスト済に更新する（Ｆ１４０２）。そして、プリントサーバ６０１への印刷指示の際に通知するジョブ実行リストをヌル（ＮＵＬＬ）に初期化し（Ｆ１４０３）、ジョブ実行開始されたスケジュール情報をジョブ実行リストに追加する（Ｆ１４０４）。
【００８８】
次に、ジョブマネージャ９０２で管理されるスケジュールリストにおいて、ジョブ実行開始されたスケジュール情報の次のスケジュール情報についてスケジュールリストの最後まで処理を繰り返す（Ｆ１４０５〜Ｆ１４１１）。
【００８９】
まず、リクエスト先アドレス１００８がジョブ実行開始されたスケジュール情報リストのリクエスト先アドレスと同じか否かを判定する（Ｆ１４０６）。ここで、リクエスト先アドレスが異なる場合には、連続印刷することができないため、Ｆ１４０５〜Ｆ１４１１の処理を終了する。
【００９０】
一方、リクエスト先アドレスが同じ場合には、プリントサーバ６０１からの連続印刷の対象となり、プリントサーバ６０１の連続印刷数を制限する。即ち、ジョブ実行リストの登録数がスケジュールアプリケーション８０１で保持する連続印刷制限数１１０１以上か否かを判定する。判定の結果、ジョブ実行リストの登録数が連続印刷制限数１１０１以上の場合には、これ以上ジョブ実行リストに登録させず、Ｆ１４０５〜Ｆ１４１１の処理を終了する。
【００９１】
一方、連続印刷制限数１１０１以上でない場合には、連続印刷可能としてジョブ実行リストにスケジュール情報を追加する（Ｆ１４０９）。そして、追加したスケジュール情報のステータス１００５をリクエスト済に更新する（Ｆ１４１０）。
【００９２】
その後、スケジュールリストに登録されている全てのスケジュール情報リストの処理が終了すると（Ｆ１４１１）、ジョブ実行リストでリクエスト先アドレス１００８に対して印刷指示を行う（Ｆ１４１２）。尚、印刷指示を行う際のスケジュールアプリケーション８０１とプリントサーバ６０１と間のシーケンスについては後述する。
【００９３】
このように、スケジュールアプリケーション８０１はプリントサーバ６０１に対して印刷指示を行う。
【００９４】
＜プリントサーバ６０１の印刷フロー＞
図１５は、スケジュールアプリケーション８０１からの印刷指示を受け付けたプリントサーバ６０１の処理を示すフローチャートである。スケジュールアプリケーション８０１からの印刷指示にはジョブ実行リストが含まれており、複数のスケジュール情報１０００が登録されている。
【００９５】
プリントサーバ６０１が印刷指示を受け付けると、ジョブ実行リストに登録されている全てのスケジュール情報リストを実行する（Ｆ１５０２〜Ｆ１５０５）。
【００９６】
まず、スケジュール情報リストに基づきドキュメントデータを取得する（Ｆ１５０３）。次に、取得したドキュメントデータを印刷実行するプリントデバイス１０７で印刷可能な印刷データを生成する（Ｆ１５０４）。この生成処理では、プリンタドライバを用いてＰＤＬを生成しても良いし、ＰＤＦを変換せずに、そのまま使用しても良い。
【００９７】
そして、ジョブ実行リストに登録されているスケジュール情報１０００についての印刷データの生成処理が完了すると（Ｆ１５０２〜Ｆ１５０５）、プリントデバイス１０７に印刷データの転送を開始する（Ｆ１５０６）。
【００９８】
プリントサーバ６０１が印刷データをプリントデバイス１０７に転送し、印刷が行われて印刷結果が通知されるまでの、プリントサーバ６０１、プリントデバイス１０７、スケジュールアプリケーション８０１の間の詳細なシーケンスは後述する。
【００９９】
このように、プリントサーバ６０１はスケジュールアプリケーション８０１からの印刷指示を受け付け、プリントデバイス１０７へ印刷データ転送を開始し印刷を行う。
【０１００】
＜スケジュール登録シーケンス＞
図１６は、プリントサーバ６０１とスケジュールアプリケーション８０１との間のスケジュール登録時のシーケンスを示す図である。プリントサーバ６０１は印刷リクエストを受け付けた際に、このシーケンスでスケジュールアプリケーション８０１にスケジュール登録を行う。
【０１０１】
まず、Ｓ１６０１で、プリントサーバ６０１及びスケジュールアプリケーション８０１間で通信セッションを開始する。通信セッションはＴＣＰ／ＩＰやＨＴＴＰといった通信プロトコルによって確立される。次に、Ｓ１６０２で、プリントサーバ６０１がスケジュールアプリケーション８０１に対して接続要求を発行する。そして、スケジュールアプリケーション８０１における通信マネージャ９０１がこの接続要求を受け付ける。
【０１０２】
次に、Ｓ１６０３で、スケジュールアプリケーション８０１のジョブマネージャ９０２で管理されているスケジュール情報１０００のリスト取得を行う。取得したスケジュール情報８００のリストは、例えばプリントサーバ６０１に接続する他のアプリケーションサーバへ通知するか、プリントサーバ６０１を管理するためのコンソールへ出力するといった利用方法がある。
【０１０３】
また、Ｗｅｂサーバシステム１０２を介して印刷ジョブの情報をクライアント１０８へ提供する機能を実現することも可能である。これら機能は、本発明とは関係しないため、詳細な説明は省略する。
【０１０４】
次に、Ｓ１６０４で、プリントサーバ６０１がスケジュールアプリケーション８０１に対して印刷ジョブのスケジュール要求を発行する。このスケジュール要求にはジョブ情報３００が含まれる。スケジュール要求を受けたスケジュールアプリケーション８０１は、Ｓ１６０５でスケジュール登録を行う。
【０１０５】
スケジュールアプリケーション８０１がスケジュール登録を完了すると、Ｓ１６０６でプリントサーバ６０１にスケジュール要求ＣＢを返す。このスケジュール要求ＣＢでは、スケジュール登録時に発行されるデバイス内ジョブＩＤを通知する。
【０１０６】
次に、Ｓ１６０７で、プリントサーバ６０１はスケジュールアプリケーション８０１に切断要求を発行し、Ｓ１６０８で、Ｓ１６０１で確立させたセッションを終了する。
【０１０７】
このように、プリントサーバ２０１はスケジュールアプリケーション８０１にスケジュール登録を行うことができる。
【０１０８】
＜印刷シーケンス＞
図１７は、プリントサーバ６０１、ロードバランサ６０２、スケジュールアプリケーション８０１、デバイスコントローラ８１０間の印刷シーケンスを示す図である。この印刷シーケンスは、スケジュールアプリケーション８０１がプリントサーバ６０１に印刷指示を行い、印刷指示を受け付けたプリントサーバ６０１が印刷処理を実行し、終了するまでのシーケンスである。
【０１０９】
ここでは、リクエスト先アドレス１００８をロードバランサ６０２に固定しているため、スケジュールアプリケーション８０１からの印刷指示がロードバランサ６０２によって負荷分散される。また、不図示であるが、スケジュールアプリケーション８０１が起動時に、デバイスコントローラ８１０に対してイベント登録を行っている。従って、デバイスコントローラ８１０で管理される印刷ジョブやデバイス状態が変化すると、スケジュールアプリケーション８０１へ通知される。
【０１１０】
まず、Ｓ１７０１で、ロードバランサ６０２及びスケジュールアプリケーション８０１間で通信のセッションを開始する。通信セッションはＴＣＰ／ＩＰやＨＴＴＰといった通信プロトコルによって確立される。次に、Ｓ１７０２で、ロードバランサ６０２がプリントサーバ６０１とセッションを開始する。ここで、セッションを開始するプリントサーバ６０１はロードバランサ６０２によって負荷分散される。負荷分散方法としては、単純にリクエストを順次各プリントサーバに回していくラウンドロビンや、規定のリクエストを定期的に各プリントサーバ６０１に送出し、返信までかかった時間を負荷として判断する方法などである。負荷分散方法は、ロードバランサ６０２の設定次第である。
【０１１１】
次に、ロードバランサ６０２を介して開始されたスケジュールアプリケーション８０１とプリントサーバ６０１のセッションは、Ｓ１７１８、Ｓ１７１９で、セッションが終了するまで維持される。ここで、Ｓ１７０１、Ｓ１７０２からＳ１７１８、Ｓ１７１９までのスケジュールアプリケーション８０１とプリントサーバ６０１の通信はロードバランサ６０２を介して行われる。
【０１１２】
上述のセッションが開始されると、Ｓ１７０３でスケジュールアプリケーション８０１はプリントサーバ６０１に対して接続要求を行う。プリントサーバ６０１はデバイスマネージャ６０６にて接続要求を受け付ける。
【０１１３】
次に、Ｓ１７０４で、プリントサーバ６０１は印刷ジョブ及びプリントデバイスのステータスが変化した場合に通知を受けるべくスケジュールアプリケーション８０１に対してイベント登録を行う。そして、Ｓ１７０５で、現在スケジュールアプリケーション８０１のジョブマネージャ９０２にて管理されているスケジュール情報１０００のリスト取得を行う。
【０１１４】
ここで取得したスケジュール情報１０００のリストは、例えばプリントサーバ６０１に接続する他のアプリケーションサーバへ通知する他、プリントサーバ６０１を管理するためのコンソールへ出力するといった利用方法が考えられる。また、Ｗｅｂサーバシステム１０２を介して印刷ジョブの情報をクライアント１０８へ提供する機能を実現することも可能である。これら機能は、本発明とは関係しないため、詳細は省略する。
【０１１５】
次に、Ｓ１７０６で、スケジュールアプリケーション８０１はプリントサーバ６０１に対して印刷指示をする。印刷指示を受けたプリントサーバ６０１は、Ｓ１７０７で、スケジュールアプリケーション８０１に印刷データの転送開始を通知し、Ｓ１７０８で、デバイスコントローラ８１０に対して印刷ジョブの転送を開始する。この印刷ジョブの転送はデバイス情報４００に設定された転送方法４０４にて行われる。また、転送開始を受け付けたスケジュールアプリケーション８０１はそのスケジュール情報１０００のステータス８０６を転送中に変更する。
【０１１６】
一方、Ｓ１７０９で、デバイスコントローラ８１０が受信した印刷データを順次解析し、印刷を開始する。そして、Ｓ１７１０で、イベント登録を行っているスケジュールアプリケーション８０１に対して印刷開始にステータスが変更されたことを通知する。また、印刷開始通知を受けたスケジュールアプリケーション８０１は自身で管理しているスケジュール情報１０００のステータス１００５を印刷中に変更する。
【０１１７】
更に、Ｓ１７１１で、スケジュールアプリケーション８０１は、イベント登録しているプリントサーバ６０１に対して印刷開始通知を行う。こうして、プリントサーバ６０１は自身が印刷した印刷ジョブの状態を把握することが可能であり、ＤＢＭＳ１０４で保持するジョブ情報３００のステータス３０６を更新する。
【０１１８】
この印刷データの転送が完了すると、Ｓ１７１２で、プリントサーバ６０１は転送終了をスケジュールアプリケーション８０１に通知する。通知を受けたスケジュールアプリケーション８０１は転送開始時と同様に当該印刷ジョブのスケジュール情報１０００のステータス１００５を転送済みに変更する。
【０１１９】
一方、プリントデバイス１０７において、Ｓ１７１３で印刷が終了すると、Ｓ１７１４で、デバイスコントローラ８１０が印刷開始時と同様に、スケジュールアプリケーション８０１に対して印刷結果を通知する。そして、印刷結果の通知を受けたスケジュールアプリケーション８０１は、Ｓ１７１５でプリントサーバ６０１に印刷結果を通知する。
【０１２０】
ここで、印刷結果を受けたプリントサーバ６０１は、予定していた全ての印刷ジョブの印刷が完了した場合は、Ｓ１７１６でスケジュールアプリケーション８０１に対してイベントの解除を行い、続いてＳ１７１７で切断要求を行う。
【０１２１】
このイベントの解除及び切断要求を受けたスケジュールアプリケーション８０１はプリントサーバ６０１との通信の終了処理を行う。最後に、Ｓ１７１８、Ｓ１７１９で、Ｓ１７０１、Ｓ１７０２で確立させたセッションを終了する。
【０１２２】
このように、スケジュールアプリケーション８０１はロードバランサ６０２を介してプリントサーバ２０１へ印刷指示を行い、プリントサーバ２０１はスケジュールアプリケーション８０１を介してプリントデバイス１０７で印刷を行うことが可能となる。
【０１２３】
＜ジョブ転送開始通知時のフロー＞
図１８は、プリントサーバ６０１より印刷データの転送開始通知がなされた場合のスケジュールアプリケーション８０１の処理を示すフローチャートである。尚、スケジュールアプリケーション８０１は印刷データの転送開始が通知されたタイミングで転送開始されたジョブの次ジョブの印刷指示を行う。
【０１２４】
まず、図１７に示すＳ１７０７で、プリントサーバ６０１から転送開始通知を受け付ける（Ｆ１８０１）。この転送開始通知はＳ１７０３で接続要求により確立した接続で通知されるため、スケジュールアプリケーション８０１は転送開始された印刷データのデバイス内ジョブＩＤを特定できる。このデバイス内ジョブＩＤよりジョブマネージャ９０２で管理されるスケジュールリストのスケジュール情報１０００を特定し、ステータス１００５を印刷中に更新する（Ｆ１８０２）。
【０１２５】
次に、スケジュールリストにおいて転送開始通知されたスケジュール情報の次のスケジュール情報を参照する（Ｆ１８０３）。そして、次のスケジュール情報のステータス１００５がリクエスト済であるか否かを判定し（Ｆ１８０４）、リクエスト済でなかった場合にジョブ実行開始し（Ｆ１８０５）、リクエスト済だった場合には処理を終了する。尚、ジョブ実行開始（Ｆ１８０５）の詳細は上述したジョブ実行開始処理である。
【０１２６】
＜印刷結果通知フロー＞
図１９は、スケジュールアプリケーション８０１がデバイスコントローラ８１０から印刷結果を受け取った場合の処理を示すフローチャートである。まず、スケジュールアプリケーション８０１にデバイスコントローラ８１０より印刷結果通知がなされた時に、印刷を開始したプリントサーバ６０１とのセッションが維持されているか確認する（Ｆ１９０１）。ここで、印刷開始したプリントサーバ６０１とのセッションが維持されている場合は、接続しているプリントサーバ６０１に印刷結果通知を行う（Ｆ１９０４）。
【０１２７】
一方、印刷開始したプリントサーバ６０１とのセッションが切れてしまっている場合は、リクエスト先アドレス１００８との接続を確立し印刷結果を通知する（Ｆ１９０３）。その後、上述の印刷結果の通知が終了すると、スケジュールリストよりスケジュール情報を削除する（Ｆ１９０５）。
【０１２８】
本実施形態では、リクエスト先アドレス１００８にロードバランサ６０２のアドレスを指定しているため、印刷結果通知がロードバランサ６０２により負荷分散され、プリントサーバ６０１に通知される。
【０１２９】
図２０は、プリントサーバ６０１がスケジュールアプリケーション８０１から印刷結果通知を受け付けた場合の処理を示すフローチャートである。まず、プリントサーバ６０１がスケジュールアプリケーション８０１から印刷結果通知を受け付ける（Ｆ２００１）。そして、通知されるスケジュール情報に基づいて、ＤＢＭＳ１０４で保持するジョブ情報３００を特定し、印刷結果を登録する（Ｆ２００２）。
【０１３０】
印刷結果が通知されるプリントサーバ６０１はロードバランサ６０２によって決まる。しかし、ＤＢＭＳ１０４にクラスタ構成のプリントサーバ６０１で共通情報としてジョブ情報３００を保持しているため、印刷結果を登録するプリントサーバ６０１は固定されない。
【０１３１】
印刷開始したプリントサーバ６０１とスケジュールアプリケーション８０１の間の接続が切れた場合であっても、他のプリントサーバ６０１が印刷結果の登録を行うため、接続の回復を待つ必要がない。また、プリントサーバ６０１が停止した場合であってもロードバランサ６０２により稼動しているプリントサーバ６０１に印刷結果が通知されるため、停止したプリントサーバ６０１の復帰を待つ必要もなく、印刷結果をすぐにユーザに通知することができる。
【０１３２】
＜プリントサーバとのセッション切断時フロー＞
図２１は、転送終了通知がなされる前にプリントサーバ６０１とスケジュールアプリケーション８０１との間のセッション切断を検知した場合のスケジュールアプリケーション８０１の処理を示すフローチャートである。
【０１３３】
スケジュールアプリケーション８０１がプリントサーバ６０１との間のセッション切断を検知し（Ｆ２１０１）、セッションを切断したプリントサーバ６０１が印刷を開始する予定だったジョブの再印刷指示を行う。
【０１３４】
次に、印刷指示時に必要なジョブ実行リストをヌル（ＮＵＬＬ）に初期化する（Ｆ２１０２）。そして、スケジュールアプリケーション８０１で管理するスケジュールリストに登録されている全てのスケジュール情報１０００を処理する（Ｆ２１０３〜Ｆ２１０６）。
【０１３５】
まず、スケジュールリストに登録されているスケジュール情報１０００のうち、ステータス１００５がリクエスト済となっているものをジョブ実行リストに追加する（Ｆ２１０４、Ｆ２１０５）。そして、全てのスケジュール情報１０００の処理を終了すると（Ｆ２１０６）、スケジュール情報１０００に登録されているリクエスト先アドレス１００８にジョブ実行リストをもって印刷指示を行う（Ｆ２１０７）。
【０１３６】
本実施形態では、リクエスト先アドレス１００８にロードバランサ６０２のアドレスを指定しているため、印刷指示は負荷分散される。ここで、スケジュールアプリケーション８０１からの印刷指示の詳細は上述した通りである。
【０１３７】
印刷開始前にプリントサーバ６０１とのセッションが切断してしまい、印刷を開始できない状況になったとしても、再度、印刷指示を行うことにより印刷が実行される。また、プリントサーバ６０１とスケジュールアプリケーション８０１の間の接続が切れた場合も、他のプリントサーバ６０１が印刷実行を行うため、セッション切断したプリントサーバ６０１との接続の回復を待つ必要がない。
【０１３８】
更に、プリントサーバ６０１が停止している場合であっても、ロードバランサ６０２により稼動しているプリントサーバ６０１に印刷指示されるため、停止したプリントサーバ６０１の復帰を待つ必要もなく、他のプリントサーバ６０１で印刷実行される。
【０１３９】
尚、本発明は複数の機器（例えば、ホストコンピュータ、インターフェース機器、リーダ、プリンタなど）から構成されるシステムに適用しても、１つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用しても良い。
【０１４０】
また、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（ＣＰＵ若しくはＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行する。これによっても、本発明の目的が達成されることは言うまでもない。
【０１４１】
この場合、コンピュータ読み取り可能な記録媒体から読出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【０１４２】
このプログラムコードを供給するための記録媒体として、例えばフレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【０１４３】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、次の場合も含まれることは言うまでもない。即ち、プログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合である。
【０１４４】
更に、記録媒体から読出されたプログラムコードがコンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込む。その後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部又は全部を行い、その処理により前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【０１４５】
【図１】本実施形態における印刷システムの構成の一例を示すブロック図である。
【図２】サーバコンピュータ又はクライアントコンピュータのハードウェア構成の一例を示す図である。
【図３】本実施形態におけるＤＢＭＳで管理されるジョブ情報の一例を示す図である。
【図４】本実施形態におけるＤＢＭＳで管理されるデバイス情報の一例を示す図である。
【図５】本実施形態におけるＤＢＭＳで管理されるドキュメント情報の一例を示す図である。
【図６】プリントサーバシステム１０１の構成の一例を示すブロック図である。
【図７】プリントデバイス１０７のハードウェア構成の一例を示す図である。
【図８】プリントデバイス１０７の構成を階層的に示す図である。
【図９】スケジュールアプリケーションの構成を示すブロック図である。
【図１０】ジョブマネージャ９０２が管理する印刷ジョブのスケジュール情報を示す図である。
【図１１】デバイスマネージャ９０３が管理する連続印刷制限数に関する情報を示す図である。
【図１２】プリントサーバ６０１が印刷リクエストを受け付けた際の処理を示すフローチャートである。
【図１３】スケジュールアプリケーション８０１がプリントサーバ６０１からスケジュール要求を受け付けた際の処理を示すフローチャートである。
【図１４】スケジュールアプリケーション８０１がプリントサーバ６０１に対して印刷指示を行う際の処理を示すフローチャートである。
【図１５】スケジュールアプリケーション８０１からの印刷指示を受け付けたプリントサーバ６０１の処理を示すフローチャートである。
【図１６】プリントサーバ６０１とスケジュールアプリケーション８０１との間のスケジュール登録時のシーケンスを示す図である。
【図１７】プリントサーバ６０１、ロードバランサ６０２、スケジュールアプリケーション８０１、デバイスコントローラ８１０間の印刷シーケンスを示す図である。
【図１８】プリントサーバ６０１より印刷データの転送開始通知がなされた場合のスケジュールアプリケーション８０１の処理を示すフローチャートである。
【図１９】スケジュールアプリケーション８０１がデバイスコントローラ８１０から印刷結果を受け取った場合の処理を示すフローチャートである。
【図２０】プリントサーバ６０１がスケジュールアプリケーション８０１から印刷結果通知を受け付けた場合の処理を示すフローチャートである。
【図２１】転送終了通知がなされる前にプリントサーバ６０１とスケジュールアプリケーション８０１との間のセッション切断を検知した場合のスケジュールアプリケーション８０１の処理を示すフローチャートである。
【符号の説明】
【０１４６】
１０１  プリントサーバシステム
１０２  Ｗｅｂサーバシステム
１０３  ディレクトリサーバ
１０４  ＤＢＭＳ（DataBase Management System）
１０５  ストレージ
１０６  システム管理サーバ
１０７  プリントデバイス
１０８  クライアント
１０９  ＬＡＮ（Local Area Network）
１１０  ＷＡＮ（Wide Area Network）
【図１】
2010108104.tif 000003
【図２】
2010108104.tif 000004
【図３】
2010108104.tif 000005
【図４】
2010108104.tif 000006
【図５】
2010108104.tif 000007
【図６】
2010108104.tif 000008
【図７】
2010108104.tif 000009
【図８】
2010108104.tif 000010
【図９】
2010108104.tif 000011
【図１０】
2010108104.tif 000012
【図１１】
2010108104.tif 000013
【図１２】
2010108104.tif 000014
【図１３】
2010108104.tif 000015
【図１４】
2010108104.tif 000016
【図１５】
2010108104.tif 000017
【図１６】
2010108104.tif 000018
【図１７】
2010108104.tif 000019
【図１８】
2010108104.tif 000020
【図１９】
2010108104.tif 000021
【図２０】
2010108104.tif 000022
【図２１】
2010108104.tif 000023