(57)【特許請求の範囲】
【請求項１】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムであって、
前記プリントサーバは、
前記プリンタに対する印刷要求を前記クライアント端末から受信したことに従って、前記プリンタによって処理が実行される印刷ジョブの情報を保持する保持手段と、
前記クライアント端末が命令列を実行することで、前記印刷ジョブへの処理および前記印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させる指示を行う命令列を生成する生成手段と、
前記生成手段によって生成された命令列を前記クライアント端末に送信する第一の送信手段と
を有し、
前記クライアント端末は、
前記第一の送信手段によって送信された前記命令列を前記プリントサーバから受信する第一の受信手段と、
前記第一の受信手段によって受信された前記命令列を実行する実行手段と、
前記実行手段によって前記命令列が実行されたことに従って、前記印刷ジョブへの処理および当該印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させるための指示を前記プリンタに送信する第二の送信手段と
を有し、
前記プリンタは、
前記第二の送信手段によって送信された前記指示を前記クライアント端末から受信する第二の受信手段と、
前記第二の受信手段によって受信された前記指示に基づいて、前記印刷ジョブの処理状況に関する通知を所定の時間ごとに前記プリントサーバに送信する第三の送信手段と
を有し、
前記プリントサーバは更に、
前記第三の送信手段によって送信された前記印刷ジョブの処理状況に関する通知を前記プリンタから受信する第三の受信手段と、
前記第三の受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから前記所定の時間が経過しても当該印刷ジョブの処理状況に関する更なる通知が受信されないことに基づいて、当該印刷ジョブの処理結果を不明として登録する登録手段と
を有することを特徴とするプルプリントシステム。
【請求項２】
前記プリントサーバは更に、
前記第三の受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから前記所定の時間が経過したか否かを判定する判定手段を有し、
前記登録手段は、前記第三の受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから前記所定の時間が経過したと前記判定手段によって判定され、当該印刷ジョブの処理状況に関する更なる通知が受信されない場合、当該印刷ジョブの処理結果を不明として登録することを特徴とする請求項１に記載のプルプリントシステム。
【請求項３】
前記命令列には、前記印刷ジョブへの処理が終了したことに従って当該印刷ジョブへの処理の終了通知を前記プリンタに送信させるための指示を更に含み、
前記第三の送信手段は更に、前記印刷ジョブへの処理が終了したことに従って当該印刷ジョブへの処理の終了通知を前記プリントサーバに送信し、
前記第三の受信手段は更に、前記第三の送信手段によって送信された前記印刷ジョブへの処理の終了通知を前記プリンタから受信することを特徴とする請求項１または２に記載のプルプリントシステム。
【請求項４】
前記登録手段は、前記第三の受信手段によって前記印刷ジョブへの処理の終了通知が受信された場合、当該印刷ジョブの処理結果を正常終了として登録することを特徴とする請求項３に記載のプルプリントシステム。
【請求項５】
前記プリントサーバは更に、
前記第三の受信手段によって前記印刷ジョブへの処理の終了通知が受信され、前記プリンタによって処理が実行される他の印刷ジョブの情報が前記保持手段に保持されていない場合に、前記印刷ジョブの処理状況に関する通知を終了させる指示を前記プリンタに送信する第四の送信手段を有し、
前記プリンタは更に、
前記第四の送信手段によって送信された前記印刷ジョブの処理状況に関する通知を終了させる指示を前記プリントサーバから受信する第四の受信手段を有し、
前記第三の送信手段は、前記第四の受信手段によって前記印刷ジョブの処理状況に関する通知を終了させる指示が受信されたことに基づいて、前記印刷ジョブの処理状況に関する通知を前記プリントサーバに送信することを終了することを特徴とする請求項１乃至４のいずれか一項に記載のプルプリントシステム。
【請求項６】
前記保持手段は、前記プリンタによって処理が実行される複数の印刷ジョブの情報を保持し、
前記プリントサーバは更に、
前記第三の受信手段によって受信された前記印刷ジョブの処理状況に関する通知を用いて、前記プリンタに処理の実行を指示した当該印刷ジョブを監視する監視手段を有し、
前記監視手段は、監視している前記複数の印刷ジョブのうち、前記第三の受信手段によって受信された前記印刷ジョブの処理状況に関する通知に処理中として通知されなかった印刷ジョブの監視を終了することを特徴とする請求項１乃至５のいずれか一項に記載のプルプリントシステム。
【請求項７】
前記プリントサーバは更に、
前記第三の受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから前記所定の時間が経過しても当該印刷ジョブの処理状況に関する更なる通知が受信されないことに基づいて、当該印刷ジョブの情報を前記保持手段から削除する削除手段を有し、
前記登録手段は、前記削除手段によって前記印刷ジョブの情報が前記保持手段から削除されたことに従って、当該印刷ジョブの処理結果を不明として登録することを特徴とする請求項１乃至６のいずれか一項に記載のプルプリントシステム。
【請求項８】
前記所定の時間は、前記プリンタが指定した時間であることを特徴とする請求項１乃至７のいずれか一項に記載のプルプリントシステム。
【請求項９】
前記命令列は、前記クライアント端末が有するＷｅｂブラウザで実行されるＪＡＶＡスクリプトであることを特徴とする請求項１乃至８のいずれか一項に記載のプルプリントシステム。
【請求項１０】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおけるプリントサーバであって、
前記プリンタに対する印刷要求を前記クライアント端末から受信したことに従って、前記プリンタによって処理が実行される印刷ジョブの情報を保持する保持手段と、
前記クライアント端末が命令列を実行することで、前記印刷ジョブへの処理および前記印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させる指示を行う命令列を生成する生成手段と、
前記生成手段によって生成された命令列を前記クライアント端末に送信する送信手段と、
前記印刷ジョブの処理状況に関する通知を前記プリンタから受信する受信手段と、
前記受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから所定の時間が経過しても当該印刷ジョブの処理状況に関する更なる通知が受信されないことに基づいて、当該印刷ジョブの処理結果を不明として登録する登録手段と
を有することを特徴とするプリントサーバ。
【請求項１１】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムであって、
前記プリントサーバは、
前記プリンタに対する印刷要求を前記クライアント端末から受信したことに従って、前記プリンタによって処理が実行される印刷ジョブの情報を当該印刷ジョブの処理状況を管理するために保持する保持手段と、
前記クライアント端末が命令列を実行することで、前記印刷ジョブへの処理および前記印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させる指示を行う命令列を生成する生成手段と、
前記生成手段によって生成された命令列を前記クライアント端末に送信する第一の送信手段と
を有し、
前記クライアント端末は、
前記第一の送信手段によって送信された前記命令列を前記プリントサーバから受信する第一の受信手段と、
前記第一の受信手段によって受信された前記命令列を実行する実行手段と、
前記実行手段によって前記命令列が実行されたことに従って、前記印刷ジョブへの処理および当該印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させるための指示を前記プリンタに送信する第二の送信手段と
を有し、
前記プリンタは、
前記第二の送信手段によって送信された前記指示を前記クライアント端末から受信する第二の受信手段と、
前記第二の受信手段によって受信された前記指示に基づいて、前記印刷ジョブの処理状況に関する通知を所定の時間ごとに前記プリントサーバに送信する第三の送信手段と
を有し、
前記プリントサーバは更に、
前記第三の送信手段によって送信された前記印刷ジョブの処理状況に関する通知を前記プリンタから受信する第三の受信手段と、
前記第三の受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから前記所定の時間が経過するまでに当該印刷ジョブの処理状況が処理中であることを示す更なる通知が受信されたことに基づいて、当該印刷ジョブの情報を前記保持手段から削除せず、前記第三の受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから前記所定の時間が経過しても当該印刷ジョブの処理状況に関する更なる通知が受信されないことに基づいて、当該印刷ジョブの情報を前記保持手段から削除し、当該印刷ジョブの情報を履歴情報として登録する登録手段と
を有することを特徴とするプルプリントシステム。
【請求項１２】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおけるプリントサーバであって、
前記プリンタに対する印刷要求を前記クライアント端末から受信したことに従って、前記プリンタによって処理が実行される印刷ジョブの情報を当該印刷ジョブの処理状況を管理するために保持する保持手段と、
前記クライアント端末が命令列を実行することで、前記印刷ジョブへの処理および前記印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させる指示を行う命令列を生成する生成手段と、
前記生成手段によって生成された命令列を前記クライアント端末に送信する送信手段と、
前記印刷ジョブの処理状況に関する通知を前記プリンタから受信する受信手段と、
前記受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから所定の時間が経過するまでに当該印刷ジョブの処理状況が処理中であることを示す更なる通知が受信されたことに基づいて、当該印刷ジョブの情報を前記保持手段から削除せず、前記受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから前記所定の時間が経過しても当該印刷ジョブの処理状況に関する更なる通知が受信されないことに基づいて、当該印刷ジョブの情報を前記保持手段から削除し、当該印刷ジョブの情報を履歴情報として登録する登録手段と
を有することを特徴とするプリントサーバ。
【請求項１３】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおけるプリントサーバの制御方法であって、
前記プリンタに対する印刷要求を前記クライアント端末から受信したことに従って、前記プリンタによって処理が実行される印刷ジョブの情報を保持手段に保持する保持工程と、
前記クライアント端末が命令列を実行することで、前記印刷ジョブへの処理および前記印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させる指示を行う命令列を生成する生成工程と、
前記生成工程で生成された命令列を前記クライアント端末に送信する送信工程と、
前記印刷ジョブの処理状況に関する通知を前記プリンタから受信する受信工程と、
前記受信工程で前記印刷ジョブの処理状況に関する通知が受信されてから所定の時間が経過しても当該印刷ジョブの処理状況に関する更なる通知が受信されないことに基づいて、当該印刷ジョブの処理結果を不明として登録する登録工程と
を有することを特徴とするプリントサーバの制御方法。
【請求項１４】
コンピュータを、
プリンタに対する印刷要求をクライアント端末から受信したことに従って、前記プリンタによって処理が実行される印刷ジョブの情報を保持する保持手段、
前記クライアント端末が命令列を実行することで、前記印刷ジョブへの処理および前記印刷ジョブの処理状況を前記コンピュータに通知する処理を前記プリンタに実行させる指示を行う命令列を生成する生成手段、
前記生成手段によって生成された命令列を前記クライアント端末に送信する送信手段、
前記印刷ジョブの処理状況に関する通知を前記プリンタから受信する受信手段、
前記受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから所定の時間が経過しても当該印刷ジョブの処理状況に関する更なる通知が受信されないことに基づいて、当該印刷ジョブの処理結果を不明として登録する登録手段
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プルプリントシステム、プリントサーバおよびその制御方法、並びにプログラムに関する。特にプルプリントシステムにおいて、プリントサーバとプリンタとの間の情報の同期を行う技術に関する。
【背景技術】
【０００２】
近年、クラウドサービスとしてインターネット上にサービスを公開することによりビジネス展開がされてきている。プリントサーバもインターネット上のプリントサービスとして機能を提供することが求められてきている。このような背景から、プリントサーバからプリンタがインターネット越しに印刷データを取得し、プルプリントを行うようなクラウドプルプリントシステムが求められている。
【０００３】
インターネット上のプリントサーバを利用してプル型のプリントを行う技術として、ＪＡＶＡスクリプト（ＪａｖａＳｃｒｉｐｔ：登録商標）を利用したプルプリント方式が存在する。ＪＡＶＡスクリプトを利用したプルプリント方式とは、プリントサーバが印刷を行うプリンタに対して依頼したいコマンドを送付するＪＡＶＡスクリプトを生成し、Ｗｅｂブラウザに送信する。ＪＡＶＡスクリプトを受信したＷｅｂブラウザは、受信したＪＡＶＡスクリプトを実行すると、ＪＡＶＡスクリプトにて指定されたプリンタへのプルプリントのリクエストを送信することで、プリンタに対して印刷を依頼する方式である。このとき、印刷データは、ＵＲＬ等により指定される。なお、指定されたＵＲＬから印刷データを取得して印刷を行うプルプリント技術の説明は非特許文献１に記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−２５７４８１号公報
【非特許文献】
【０００５】
【非特許文献１】“Print Service Definition Version 1.0 For Web Services on Devices”、[online]、２００７年１月２９日、Microsoft、[平成２３年６月２２日検索]、インターネット＜URL:http://msdn.microsoft.com/ja-jp/windows/hardware/gg463146＞
【発明の概要】
【発明が解決しようとする課題】
【０００６】
イントラネット内にプリントサーバとプリンタが存在する印刷システムでは、プリントサーバから直接プリンタにネットワーク通信を行うことで、依頼した印刷ジョブの状況確認やプリンタで発生したイベントの通知先の登録・削除依頼を行うことができた。
【０００７】
しかし、クラウドサービスのようにインターネット上に展開するプリントサーバからは、プリンタとの間にファイアウォールが配置され、直接プリンタに対してネットワークでアクセスすることができない。そこで、ＪＡＶＡスクリプトを利用したプルプリント方式では、クラウドサービスを応用してサービス提供するプリントサーバがＪＡＶＡスクリプトに印刷要求だけではなく、ジョブ終了通知イベントを送信するコマンドを含める方法がある。プリンタは、ジョブ終了通知イベントを送信するプリントサーバのアドレスをイベント通知先としてメモリ領域に保持しておき、ジョブの終了通知をプリントサーバに送信することで印刷ジョブの状況をプリントサーバに通知することを実現している。
【０００８】
しかしながら、イベントによるジョブ終了通知だけではプリントサーバでジョブの状況が把握できない場合が発生してしまう場合がある。例えば、ジョブ終了イベントは、印刷ジョブが完了した場合にしか通知されない。ここで、イベントが登録された状況でジョブが完了していないのにプリンタが再起動されてしまうと、揮発メモリに保持されたプリントサーバへのイベント通知がクリアされてしまう。その結果、再起動後のプリンタは、プリントサーバに対して情報を送信することができない。このような場合、プリントサーバはプリンタに依頼したジョブの終了通知が送信されない理由がプリンタでジョブが完了していないのか、再起動されたなどの要因により、イベント送信ができない状況なのか判断することができない。その結果、プリントサーバは、印刷を依頼したプリンタにおける依頼中の印刷ジョブの状況を把握することができないため、当該印刷ジョブを管理し続けてしまう。
【０００９】
また、別の課題も存在する。プリンタに対してイベント登録を行った場合、イベント通知が不要になるとプリンタに対してイベント削除依頼を行うことで、プリンタに登録されたイベント情報を削除する必要がある。しかし、上述したように、クラウドサービスのようなインターネット上に展開するプリントサーバからは、ファイアウォール越しに存在するプリンタに対して、直接プリンタに対してイベントの削除依頼を行うことができない。そのため、ＪＡＶＡスクリプトを利用したプルプリント方式では印刷時の処理を応用し、イベント削除依頼も印刷者のＷｅｂブラウザを介してプリンタに通知することでクラウド上のプリントサービスからプリンタに対してイベント削除依頼を行うことが考えられる。
【００１０】
しかし、このイベント削除依頼の手法には課題が存在する。印刷を行う場合、印刷要求を行うクライアントがＷｅｂブラウザを用いてプリントサーバに対して接続を行うことで、印刷要求を送信することが可能である。しかし、印刷要求を送信したクライアントが印刷完了後に、再度Ｗｅｂブラウザを用いてプリントサーバに接続することが保障されない。
【００１１】
つまり、クライアントが印刷要求だけ行い、プリントサーバとの接続を切断してしまうと、プリントサーバは、クライアントを介したプリンタへの依頼ができないため、プリンタにおけるイベント通知先の削除を行うことができない。プリンタに登録されたイベントの削除が行われないと、プリンタは登録されたイベント送信先に対して、イベントの送信をし続けたり、不要なイベント送信先情報を保持し続けてしまう。その結果、プリンタのイベント登録数が上限に達してしまい、新規にほかの印刷者がプリンタに対してイベント登録を行うことができなくなる。
【００１２】
このイベントを不適切な宛先に対して送信し続けてしまう課題を解決するために、特許文献１ではイベント送信を行った結果、エラーが返信された場合には、印刷デバイスがそのイベント送信先を宛先から削除するという技術である。しかし、イベント送信先が成功を応答した場合は削除されないため、同一宛先に対する印刷デバイスによるイベントの複数回にわたる配信は継続される。よって、イベントに対するエラーが発生しない場合は、イベント通知先が印刷デバイスにて保持され続けてしまう。
【課題を解決するための手段】
【００１３】
上記課題を解決するために、本願発明は以下の構成を有する。すなわち、内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムであって、前記プリントサーバは、前記プリンタに対する印刷要求を前記クライアント端末から受信したことに従って、前記プリンタによって処理が実行される印刷ジョブの情報を保持する保持手段と、前記クライアント端末が命令列を実行することで、前記印刷ジョブへの処理および前記印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させる指示を行う命令列を生成する生成手段と、前記生成手段によって生成された命令列を前記クライアント端末に送信する第一の送信手段とを有し、前記クライアント端末は、前記第一の送信手段によって送信された前記命令列を前記プリントサーバから受信する第一の受信手段と、前記第一の受信手段によって受信された前記命令列を実行する実行手段と、前記実行手段によって前記命令列が実行されたことに従って、前記印刷ジョブへの処理および当該印刷ジョブの処理状況を前記プリントサーバに通知する処理を前記プリンタに実行させるための指示を前記プリンタに送信する第二の送信手段とを有し、前記プリンタは、前記第二の送信手段によって送信された前記指示を前記クライアント端末から受信する第二の受信手段と、前記第二の受信手段によって受信された前記指示に基づいて、前記印刷ジョブの処理状況に関する通知を所定の時間ごとに前記プリントサーバに送信する第三の送信手段とを有し、前記プリントサーバは更に、前記第三の送信手段によって送信された前記印刷ジョブの処理状況に関する通知を前記プリンタから受信する第三の受信手段と、前記第三の受信手段によって前記印刷ジョブの処理状況に関する通知が受信されてから前記所定の時間が経過しても当該印刷ジョブの処理状況に関する更なる通知が受信されないことに基づいて、当該印刷ジョブの処理結果を不明として登録する登録手段とを有する。
【発明の効果】
【００１４】
プリントサーバからプリンタに対して直接通信ができない環境下におけるプルプリントシステムにおいて、プリントサーバとプリンタとの間における印刷ジョブ等に関する管理対象の不整合や無駄な処理をなくすことができる。
【図面の簡単な説明】
【００１５】
【図１】印刷システム全体構成図。
【図２】印刷システムハードウェア構成図。
【図３】印刷システムのサービス構成図。
【図４】印刷システムソフトウェア構成図。
【図５】印刷システムシーケンス図。
【図６】プリントサーバにおける印刷要求受信フローチャート。
【図７】プリンタにおけるポーリング登録フローチャート。
【図８】プリンタにおけるポーリング処理フローチャート。
【図９】プリントサーバにおけるポーリング受信フローチャート。
【図１０】プリントサーバにおけるポーリング管理フローチャート。
【図１１】プリントサーバで管理するプリンタリストの構成例を示す図。
【図１２】プリントサーバで管理する印刷ジョブリストの構成例を示す図。
【図１３】プリントサーバで管理する印刷履歴の構成例を示す図。
【図１４】ポーリング登録リクエストの記述例を示す図。
【図１５】ポーリング登録レスポンスの記述例を示す図。
【図１６】ポーリングリクエストの記述例を示す図。
【図１７】ポーリングレスポンスの記述例を示す図。
【図１８】プリンタで管理するポーリングリストの構成例を示す図。
【図１９】プリントサーバにおけるイベント受信処理フローチャート。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１７】
［システム構成］
図１は、本実施形態に係る印刷システムの全体構成を示す図である。図１において、クライアント端末１０１、プリントサーバ１００、プリンタ１０２は、ネットワーク１０４、１０５を介して接続されている。ルータ１０３は外部ネットワークであるネットワーク１０４と内部ネットワークである１０５を接続するものである。なお、図１には不図示であるが、ネットワーク１０４とネットワーク１０５との間にはファイアウォールが配置され、ネットワーク間の通信はセキュリティ等の観点から制限されている。本実施形態においては、別途示した場合を除いて、ネットワーク１０５に存在する機器に対し、ネットワーク１０４に位置する各種機器を起因として、接続を行うことはできないものとする。ネットワーク１０４の例として、インターネットが挙げられ、またネットワーク１０５の例として、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）が挙げられる。
【００１８】
クライアント端末１０１は、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、ＰＤＡ（パーソナルデータアシスタント）等が該当するが、プログラムの実行環境が内蔵された携帯電話であってもよい。クライアント端末１０１では、本実施形態にて用いられるＷｅｂブラウザ（不図示）のプログラムを実行する環境が内蔵されている。
【００１９】
クライアント端末１０１からプリントサーバ１００上の文書をプリンタ１０２で印刷を行う場合、プリントサーバ１００は、クライアント端末１０１のＷｅｂブラウザから送信された印刷リクエストを受信する。
【００２０】
プリントサーバ１００は、印刷リクエストを実現するためのＪＡＶＡスクリプトを作成し、クライアント端末１０１のＷｅｂブラウザに送信する。クライアント端末１０１のＷｅｂブラウザがＪＡＶＡスクリプトを受信し、そのＪＡＶＡスクリプトを実行すると印刷を行うプリンタに対してプルプリント要求が送信される。プリンタ１０２は、クライアント端末１０１から受信したプルプリント要求に従ってプリントサーバ１００から印刷する文書データを取得し、印刷を行う。なお、本願発明においては、クライアント端末１０１が有するＷｅｂブラウザが実行するスクリプト言語として、ＪＡＶＡスクリプトを用いているがこれに限定するものではない。例えば、Ｗｅｂブラウザが実行可能なスクリプト言語であれば、他の言語を用いて実現しても構わない。
【００２１】
［ハードウェア構成］
図２は、本実施形態に係る印刷システムのクライアント端末１０１、プリントサーバ１００、およびプリンタ１０２のハードウェア構成図である。なお、本実施形態において、プリントサーバ１００とクライアント端末１０１の構成は同じものとし、ここではクライアント端末１０１を例にとって説明する。
【００２２】
まず、クライアント端末１０１の構成について説明する。図２において、ＣＰＵ２０２は装置全体の制御を行う。また、ＣＰＵ２０２は、ハードディスク（ＨＤＤ）２０５等の記憶手段に格納されているアプリケーションプログラム、ＯＳ等を実行し、プログラムの実行に必要な情報、ファイル等を一時的にＲＡＭ２０３等に格納する制御を行う。ＲＯＭ２０４は、記憶手段として機能し、内部には、基本Ｉ／Ｏプログラム等のプログラム、印刷処理の際に使用する印刷データ、プリンタ情報等の各種データを記憶する。ＲＡＭ２０３は、一時記憶手段として機能し、ＣＰＵ２０２の主メモリ、ワークエリア等として機能する。ＨＤＤ２０５は、外部記憶手段の一つであり、大容量メモリとして機能する。また、ＨＤＤ２０５は、Ｗｅｂブラウザ等のアプリケーションプログラム、プリントサーバプログラム、ＯＳ、関連プログラム等を格納している。
【００２３】
ディスプレイ２０６は、表示手段であり、キーボード２０７から入力したコマンドや、プリンタのステータス等を表示する。外部装置Ｉ／Ｆ２０８は、プリンタ、ＵＳＢ機器、周辺機器を接続するためのＩ／Ｆである。キーボード２０７は、ユーザが指示を入力するための指示入力手段である。システムバス２０１は、印刷システムのプリントサーバ内におけるデータの流れを司る。ネットワークインタフェースカード（ＮＩＣ）２１９は、ＮＩＣ２０９、各種ネットワークを介して外部装置とのデータのやり取りを行う。なお、上記コンピュータの構成はその一例であり、図２の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてＲＯＭ、ＲＡＭ、ＨＤＤなどで変更することも可能である。
【００２４】
次にプリンタ１０２の構成例について説明する。コントローラ２３０は、プリンタ１０２の制御系を司る。ＣＰＵ２１０は、装置全体の制御を行い、システムバス２１８に接続される各種デバイスとのアクセスを統括的に制御する。この制御は、ＲＯＭ２１２に記憶された制御プログラム等、あるいはディスクコントローラ（ＤＫＣ２１６）を介して接続された外部メモリ２２３に記憶された制御プログラムやリソースデータ（資源情報）等に基づいて行われる。ＲＡＭ２１１は、ＣＰＵ２１０の主メモリ、ワークエリア等として機能し、増設ポート（不図示）に接続されるオプションＲＡＭによりメモリ容量を拡張することができるように構成されている。ＨＤＤ２１３は、大容量メモリとして機能する外部記憶手段であり、プルプリントアプリケーションプログラム及び関係プログラム等を格納している。
【００２５】
操作パネル（操作部）２２１は、プルプリントの操作を行うユーザインタフェースやプルプリント切り替えボタンが配置される。また、操作パネル２２１には、プリンタ１０２の動作モード等の設定やプリンタ１０２の動作状況の表示、複写指定等の操作を行うためのボタンおよび液晶パネルやＬＥＤ２１４等の表示部も配置される。ネットワークインタフェースカード（ＮＩＣ）２１９は、各種ネットワークを介して外部装置とのデータのやり取りを行う。
【００２６】
なお、図２で示したプリントエンジン２２０は、既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式（レーザービーム方式）やインクジェット方式、昇華方（熱転写）方式等が挙げられる。しかし、これに限定するものではない。ラスタコントローラ２１５は、ＰＤＬ・ＰＤＦ形式である印刷データを画像データに変換するコントローラである。機器Ｉ／Ｆ２１７は、ＵＳＢ等で接続可能な外部機器との接続Ｉ／Ｆである。また、図２には不図示であるが、各装置内には、時刻を取得する部位があり、各処理部からの要求に応じて、要求を受信した時点での時刻を通知できるものとする。
【００２７】
［モジュール構成］
図３は、本実施形態に係る印刷システムにて提供されるモジュール間の関係を示す構成図である。
【００２８】
プリントサーバ１００は、プリンタ管理サービス３０６を提供する。プリンタ管理サービス３０６は、印刷を行うプリンタそれぞれの情報を保持するサービスである。プリンタ管理サービス３０６は、図１１に示すようなプリンタリストを保有する。プリンタリストには、プリントサーバ１００がプリンタ１０２を一意に識別するためのプリンタＩＤやプリンタ名情報、プリンタのＩＰアドレス情報が含まれる。さらに、プリンタリストには、それらに加え、プリンタ１０２に依頼したポーリング通知の状況としてポーリングを受信した時間とポーリング間隔時間とが登録されている。なお、これに限定するものではなく、他のプリンタに情報を含んでもよい。例えば、プリンタＩＰアドレスは、グローバルアドレスとプライベートアドレスとをそれぞれ有してもよいし、どのネットワークに含まれるかを示す情報を更に有してもよい。
【００２９】
プリンタＩＤは、プリントサーバ内部でプリンタ１０２を一意に区別するためのＩＤ（識別子）である。本実施形態において、ポーリング通知とは、プリンタ１０２が一定時間間隔でプリントサーバ１００に対して印刷ジョブの処理状況を送信する通信を意味する。本実施形態では、このポーリング通知でプリンタ１０２は、プリントサーバ１００に対して処理中のジョブ一覧（処理中ジョブ一覧）を含むデータ（図１６）をプリントサーバ１００に送信する。ここで送信されるデータの具体的な例は、図１６を用いて後述する。
【００３０】
プリントサーバ１００は、ポーリング通知の状況として、図１１に示すように、各プリンタから前回受信したポーリング時刻（ポーリング受信時間）を保持する。なお、最初のポーリング時刻は、プリンタ１０２にてポーリング登録が正常に完了した時刻となる。ポーリング間隔は、プリンタ１０２から指定されたポーリング通知の間隔時間であり、定期的にポーリング通知が行われる際には、この情報にて指定された間隔でポーリングが行われる。
【００３１】
また、プリンタリストに登録された情報に基づいて、プリンタ１０２からの定期ポーリングの有無の確認も行う。例えば、図１１のプリンタＩＤ“Ｐ００３”に示すように、ポーリング通知が行われていないプリンタには、ポーリング受信時間とポーリング間隔時間の情報は設定されていないものとする。
【００３２】
印刷ジョブ管理サービス３０５は、ユーザから要望された印刷ジョブを管理するサービスであり、文書データ等を印刷データとしてストレージ３０７に保持し、管理する。また、印刷ジョブ管理サービス３０５は、図１２に示すような印刷ジョブリストを保有し、プリンタ１０２に対して依頼を行っている印刷ジョブを管理する。
【００３３】
クライアントジョブＩＤはプリントサーバ内部で印刷ジョブを一意に区別するためのＩＤ（識別子）である。プリンタＩＤは、図１１に示すプリンタリストにて示されるプリンタＩＤに対応しており、どのプリンタに対して印刷ジョブの実行を依頼したかを一意に区別するための情報である。プリンタジョブＩＤは、印刷ジョブの実行を依頼したプリンタ側で当該印刷ジョブに対して発行されたジョブＩＤである。プリントサーバ１００が、プリンタ１０２と印刷ジョブの情報をやり取りする場合、プリンタ１０２が発行したプリンタジョブＩＤを用いて印刷ジョブを識別する。文書ＩＤとは、プリントサーバ１００内のストレージ３０７に保持された文書を一意に識別する情報であり、印刷している文書を区別するための情報である。
【００３４】
ストレージ３０７は、プリントサーバ１００の情報処理装置に内蔵するＨＤＤまたは、外部接続しているＨＤＤ、または、ネットワークストレージ等の記憶装置である。このストレージ３０７には、印刷ジョブにて印刷を指定される文書データが保持されている。ストレージは例えば、ＨＤＤ２０５等にて実現される。
【００３５】
Ｗｅｂアプリケーション３０２は、クライアント端末１０１上に動作するＷｅｂブラウザ３０１で表示可能なＷｅｂページを作成する。そして、Ｗｅｂアプリケーション３０２は、クライアント端末１０１のＷｅｂブラウザ３０１からのリクエストに応答し、作成したＷｅｂページを返信する。また、Ｗｅｂアプリケーション３０２は、クライアント端末１０１のＷｅｂブラウザ３０１がプリンタに要求を送信するためのＪＡＶＡスクリプトを作成し、Ｗｅｂブラウザ３０１へ送信する。
【００３６】
Ｗｅｂサービス３０３は、プリンタ１０２との通信を行うモジュールである。本実施形態において、プリンタ１０２との通信とは、プリンタ１０２からの印刷データ取得要求、ポーリング通知、およびイベント通知が挙げられる。Ｗｅｂサービス３０３は、プリンタ１０２から送信されたこれらの要求を受信すると、それぞれの要求に従った処理を行う。そして、Ｗｅｂサービス３０３は、プリンタ１０２に対して処理結果としての応答を返す。
【００３７】
なお、印刷ジョブ管理サービス３０５、Ｗｅｂアプリケーション３０２、Ｗｅｂサービス３０３はそれぞれ独立したプログラムである。なお、本実施形態では、１のプリントサーバ１００にてこれらのモジュールによる機能を実現する構成としたが、別々の情報処理装置に配置することも可能である。つまり、これらのモジュールは、それぞれネットワークに繋がった情報処理装置に配置され、それぞれのモジュール間で通信を行う。
【００３８】
プリンタ１０２のプルプリントアプリケーション３０４は、プリンタ１０２でプルプリントを実行するアプリケーションである。プルプリントアプリケーション３０４は、印刷ジョブの実行要求に伴って、印刷データのＵＲＬを通知されると、そのＵＲＬから印刷データを取得して印刷を行うプルプリント機能を備える。さらには、プルプリントアプリケーション３０４は、登録されたポーリング通知先に対して一定時間間隔で処理中のジョブ一覧を送信するポーリング機能と、プリンタで印刷するジョブが完了した時にイベント通知を行う機能も備える。このときの通知先は、プリントサーバ１００となる。
【００３９】
クライアント端末１０１のＷｅｂブラウザ３０１は、プリントサーバ１００から送信されたＪＡＶＡスクリプトが実行可能なＷｅｂブラウザである。
【００４０】
［ソフトウェア構成］
図４は、本実施形態に係る印刷システムにおける、図３に示した各モジュールの更に詳細なソフトウェア構成図である。まず、図４（Ａ）を用いて、プリントサーバ１００の構成について説明する。プリントサーバ１００が有する印刷ジョブ管理サービス３０５の印刷データ管理部４０１は、印刷データ（文書データ）の管理を行う。ここでの印刷データの管理とは、印刷データ管理部４０１は、Ｗｅｂサービス３０３から印刷データの取得要求を受け取ると、ストレージ３０７から指定の印刷データを取得し、Ｗｅｂサービス３０３に渡すことである。また、印刷データ管理部４０１は、必要に応じて、印刷データの追加、削除を行う。
【００４１】
印刷ジョブ情報管理部４０２は、クライアントからクライアント端末１０１を介して要求された印刷ジョブ情報や印刷履歴情報を管理する。ここで管理される印刷ジョブ情報は、図１２に示す印刷ジョブリストであり、印刷ジョブを一意に識別するＩＤ情報や出力するプリンタを特定する情報で構成される。また、印刷履歴情報とは、図１３に示す印刷履歴情報であり、ジョブを識別するＩＤ情報や印刷結果情報が存在する。この印刷履歴情報に含まれる印刷結果情報は、そのステータスとして本実施形態では、印刷ジョブの「正常終了」、「エラー（終了）」、「不明」を含むものとする。
【００４２】
ここで、「エラー（終了）」ステータスは、プリンタに指示した印刷ジョブであるが、その印刷ジョブが監視できなくなった状態の印刷ジョブに対して設定される。つまり、正常終了の通知を受けないまま、プリンタ側での実行が終了してしまっている印刷ジョブに対して設定される。「不明」ステータスは、ポーリング通知を受信できなくなったプリンタに対して実行を指示した印刷ジョブに対して設定される。ポーリング通知に基づいた履歴情報の設定に関しては、各処理フローを用いて後述する。なお、印刷ジョブリストや印刷履歴情報の構成は図１２および図１３に示すものに限定するものではなく、更なる情報が含まれていても構わない。
【００４３】
プリンタ管理サービス３０６のプリンタ情報管理部４０３では、図１１に示すプリンタリストを管理する。また、プリンタ情報管理部４０３は、プリンタリストに登録されたプリンタのポーリング状況を定期的に確認し、プリンタにて印刷中のジョブに問題が発生していないか確認する。ここでの確認とは、例えば、ポーリング受信時間からポーリング間隔の時間分が経過していないかなどを確認する。
【００４４】
Ｗｅｂアプリケーション３０２のリクエスト受付部４０６は、クライアント端末１０１のＷｅｂブラウザ３０１から、印刷リクエスト等を受けるモジュールである。セッション管理部４０４は、Ｗｅｂブラウザ３０１からのリクエストをセッションとして管理する。ページ生成部４０５は、Ｗｅｂブラウザ３０１からのリクエストに応じてＷｅｂ画面を作成し、生成したＷｅｂ画面をＷｅｂブラウザ３０１に返信する。ここで、Ｗｅｂブラウザ３０１に送信するのはＷｅｂ画面だけではなく、ページ生成部４０５はプリンタ１０２に送信するリクエストをＪＡＶＡスクリプトで生成してＷｅｂブラウザ３０１に返信する場合もある。
【００４５】
Ｗｅｂサービス３０３のリクエスト受付部４０９は、プリンタ１０２のプルプリントアプリケーション３０４から印刷ジョブ取得要求や、印刷ジョブのステータス通知イベント、ポーリング通知イベントを受信するモジュールである。印刷ジョブ取得部４０７は、リクエスト受付部４０９が印刷ジョブ取得要求を受けると印刷ジョブ管理サービス３０５に印刷データ取得要求を行い、指定された印刷データを取得し、クライアント端末１０１に対して送信する。
【００４６】
印刷イベント受信部４０８は、プリンタ１０２から印刷処理が完了したジョブのステータス情報を受信するモジュールである。印刷イベント受信部４０８は、プリンタ１０２からジョブに対する印刷処理の完了のイベントを受信すると、図１２に示す印刷ジョブリストから当該ジョブを削除する。そして、印刷イベント受信部４０８は、当該ジョブを図１３に示す印刷履歴情報に指定された最終ステータス情報（印刷結果）とともに登録する。
【００４７】
ポーリング受信処理部４００は、プリンタ１０２から定期的に送信される処理中ジョブ一覧情報から印刷ジョブ情報管理部４０２が保有する印刷ジョブリストの妥当性を判断するモジュールである。ポーリング受信処理部４００は、受信した処理中ジョブ一覧と保持している印刷ジョブリスト（図１２）の情報とを比較し、処理中とされるジョブの間に差異がある場合には、差異が発生しないように同期をとる。ここでの処理中であるジョブの同期の取り方については、後述する。
【００４８】
次に、図４（ｂ）を用いて、プリンタ１０２の構成について述べる。プルプリントアプリケーション３０４のＷｅｂサービス受付部４１０は、クライアント端末１０１のＷｅｂブラウザ３０１から、印刷リクエストやイベント登録、ポーリング登録等を受ける。Ｗｅｂサービス送信部４１１は、プリントサーバ１００のＷｅｂサービス３０３に対して、印刷ジョブ取得リクエストや、印刷ジョブの状態変更イベント通知や定期的に処理中のジョブ一覧送信を行うポーリング通知等を行う。
【００４９】
印刷ジョブ取得部４１２は、プルプリント要求で受信したＵＲＬから、Ｗｅｂサービス送信部４１１を介してプリントサーバ１００のＷｅｂサービス３０３から印刷データを取得する。そして、印刷ジョブ取得部４１２は、取得した印刷データを印刷ジョブ投入部４１６に送る。印刷ジョブ投入部４１６は、コントローラ２３０に印刷データを送信する。その結果、コントローラ２３０が受信した印刷データを用いて印刷処理を実行する。
【００５０】
印刷制御部４１５は、印刷ジョブのステータスをコントローラ２３０から受け取り、ジョブ管理部４１４に通知する。ジョブ管理部４１４は、通知された印刷ジョブのステータスがイベント送信条件に合致するかどうかを判断する。そして、条件に合致する場合にはジョブ管理部４１４は、Ｗｅｂサービス送信部４１１を介してイベント通知を行う。
【００５１】
またジョブ管理部４１４は、クライアント端末１０１からポーリング通知指示を受けた場合、ポーリング通知指示にて指定された宛先に対して定期的に処理中のジョブリストを通知するポーリング通知を行う。ジョブ管理部４１４は、ポーリング通知に関連して、図１８に示すようなポーリング監視リストを備え、どの通知先に対してどのくらいの間隔でどのような内容を送信するかを管理する。ここで、通知内容に指定されたＡｃｔｉｖｅＪｏｂＩｄｓは、プリンタが処理中の印刷ジョブのうち、ポーリング通知の宛先にて管理されている印刷ジョブの情報を処理中ジョブ一覧として送信することを示す。この処理中ジョブ一覧には、プリントサーバ１００側でジョブを識別できるように、例えば、図１２に示すクライアントジョブＩＤ、プリンタジョブＩＤなどが含まれる。プルプリントコントローラ４１３は、プルプリントアプリケーション３０４全体の動作管理を行うものであり、各部への動作指示等は、このコントローラ経由で行う。
【００５２】
［処理フロー］
次に、図５を用いて、本願発明に係るＪＡＶＡスクリプトを利用したプルプリント印刷方式について説明する。本願発明では、正確にプリンタで処理中のジョブ状況を把握するために、印刷要求時にジョブ完了イベントだけでなく、ポーリング要望を行う。以降、本実施形態の印刷のシーケンスを説明する。
【００５３】
クライアント端末１０１は、プリントサーバ１００のＷｅｂアプリケーション３０２にＷｅｂブラウザ３０１を用いて接続を行い、印刷を行う文書と、出力を行うプリンタとを指定して印刷の実行を指示する（Ｆ１００）。なお、このとき印刷設定等を指定することも考えられるが、本願発明に直接関係ないため、説明を省略する。
【００５４】
プリントサーバ１００のＷｅｂアプリケーション３０２は、クライアント端末１０１から印刷リクエストを受信するとページ生成部４０５で、クライアント端末１０１が印刷を行うプリンタに対してリクエストを送信するためのＪＡＶＡスクリプトを生成する。ここで生成されるＪＡＶＡスクリプトには、クライアント端末１０１のＷｅｂブラウザ３０１がプリンタ１０２に対して以下の処理を要求するための記述が含まれる。
・定期的に、プリントサーバに対して処理中の印刷ジョブ一覧を通知させるポーリング指示（ポーリング通知の実施依頼）
・印刷ジョブのイベント登録指示（ジョブの終了通知の実施依頼）
・プルプリント指示（印刷指示（印刷データの取得要求の実施依頼を含む））
【００５５】
プリントサーバ１００は、作成したＪＡＶＡスクリプトを、クライアント端末１０１のＷｅｂブラウザ３０１に対して印刷リクエストの応答として送信する（Ｆ１０１）。
【００５６】
クライアント端末１０１のＷｅｂブラウザ３０１は、プリントサーバ１００から送信されたＪＡＶＡスクリプトを受信し、実行する。ここで受信したＪＡＶＡスクリプトには、上述した各種依頼を行うための処理が記述されている。Ｗｅｂブラウザ３０１がこの処理を順番に実行することでクライアント端末１０１とプリンタ１０２とが通信を行い、その結果をクライアント端末１０１は受信する（Ｆ１０２〜Ｆ１０７）。
【００５７】
クライアント端末１０１のＷｅｂブラウザ３０１が送信するプリンタ１０２へのポーリング指示のリクエスト（Ｆ１０２）は、例えば図１４のようなリクエストである。図１４の内容を説明する。まず、ＰｏｌｌＴｏ要素の配下のＡｄｄｒｅｓｓ要素にて宛先が指定されている。更に、この宛先に対して、Ｉｎｔｅｒｖａｌ要素に指定された時間の間隔（ここでは秒で指定）でポーリング通知を実施する。このとき通知される情報としては、ＣｌｉｅｎｔＩｄ要素に指定されたクライアントのジョブに関して、Ｎａｍｅ要素で指定されたＪＯＢ情報（通知内容）をポーリングで通知することを示している。図１４に示す例では、通知先“http://10.254.0.27:5357/70da246b-fea1-4ed3-b7ce-195c50ac07e1”に対して、６０秒間隔で印刷指示者がＣＪ２００である処理中ジョブ一覧（ＡｃｔｉｖｅＪｏｂＩｄｓ）を送信することを意味している。
【００５８】
プリンタ１０２からクライアント端末１０１への、ポーリング指示に対する応答（Ｆ１０３）は、例えば図１５のような応答となる。図１５の内容を説明する。ここでは、プリンタ１０２によってポーリング指示が受け付けられたことを示している。ただし、Ｗｅｂブラウザ３０１により指示したポーリング間隔が“６０（秒）”であるのに対して（図１４のＩｎｔｅｒｖａｌ要素）、プリンタ１０２からはその応答において、ポーリング間隔は“１８０（秒）”が指定されている（図１５のＩｎｔｅｒｖａｌ要素）。ポーリング間隔は、プリンタ１０２の設定や状況に応じてプリンタ側が主導で決定してもよい。プリンタ側が決定した情報については、クライアント端末１０１がプリントサーバ１００に通知することとなる。
【００５９】
クライアント端末１０１のＷｅｂブラウザ３０１は、プリンタ１０２に対してイベントの登録指示を行う（Ｆ１０４）。ここではＷｅｂブラウザ３０１は、プリンタ１０２が指示を受けた印刷ジョブの実行が完了した際に、プリントサーバ１００に対して、その旨を通知するように指示する。そして、プリンタ１０２は、Ｗｅｂブラウザ３０１からの指示に対して、登録ができた場合に、その登録情報（イベントＩＤ）を、当該要求を受け付けた旨と共に通知する（Ｆ１０５）。
【００６０】
そして、クライアント端末１０１のＷｅｂブラウザ３０１は、プリンタ１０２に対して、プルプリント要求を行う。プリンタ１０２は、受信したプルプリント要求に対して発行したジョブＩＤを、当該要求を受け付けた旨と共に通知する。
【００６１】
クライアント端末１０１は、ポーリング指示の結果（Ｆ１０３）、イベント登録指示の結果（Ｆ１０５）、印刷指示の結果（Ｆ１０７）を受信すると、受信した処理結果とプリンタ１０２から通知されたＩＤ情報とをプリントサーバ１００に送信する（Ｆ１０８）。なお、何らかの理由により、いずれかの指示が失敗した場合には、プリンタ１０２はプリントサーバ１０１にその旨を通知する。
【００６２】
各指示の受付が正常に完了した後、プリンタ１０２は、印刷指示（Ｆ１０６）のプルプリント要求で指定されたＵＲＬから印刷データを取得し（Ｆ１０９、Ｆ１１０）、印刷処理を実行する。
【００６３】
プリンタ１０２は、Ｆ１０３で指定したポーリング間隔時間毎にプリントサーバ１００に対して、ポーリング通知として、処理中ジョブ一覧を定期的に通知する（Ｆ１１１）。例えば、Ｆ１０６にて要求されたプルプリントが完了していない状況でポーリング間隔時間が経過した場合、プリンタ１０２はプリントサーバ１００に対して、Ｆ１０６で受信した処理中のジョブ情報を含めた情報を送信する（Ｆ１０８）。
【００６４】
Ｆ１０６で要求を受け付けたプルプリントが完了後にポーリング間隔時間になると、処理中の印刷ジョブが存在しないため、プリントサーバ１００に対して処理中のジョブ情報が存在しない通知を行う（Ｆ１１５）。
【００６５】
プリンタ１０２からのポーリング通知（Ｆ１１１、Ｆ１１５）は、例えば図１６に示すような構成のリクエストデータとなる。ここでは、処理中ジョブ一覧として、ＡｃｔｉｖｅＪｏｂＩｄｓ要素の配下に処理中のＪｏｂの数だけＪｏｂＩｄＳｅｔ要素としてＪｏｂ情報が記載される。図１６に示す例の場合、プリンタジョブＩＤが“Ｊ３００”、クライアントジョブＩＤが“ＣＪ２００”のジョブが存在することを通知している。この情報は、プリントサーバ１００の印刷ジョブ管理サービス３０５が管理する印刷ジョブリスト（図１２）のプリンタジョブＩＤ、クライアントジョブＩＤに対応する。もし、Ｆ１１５のように処理中のジョブが存在しない場合、ＪｏｂＩｄＳｅｔ情報が存在しないリクエストが送信されることとなる。
【００６６】
プリントサーバ１００はプリンタ１０２からポーリング通知を受信すると、プリンタ１０２に対してポーリングを継続させるかどうかを判断する。継続させる場合は、プリントサーバ１００は、プリンタ１０２にポーリングの応答としてポーリング通知の継続指示を行い（Ｆ１１２）、終了させる場合は、プリンタ１０２にぽーちんぐ通知の終了指示を行う（Ｆ１１６）。
【００６７】
プリンタ１０２のポーリングに対するレスポンスの通信（Ｆ１１２、Ｆ１１６）は例えば図１７に示すような構成のレスポンスデータとなる。ポーリングレスポンスでは、前述のようにプリントサーバ１００からプリンタ１０２に対してポーリングを継続するか否かの指示が含まれている。図１７に示すように、ＥｎｄＰｏｌｌｉｎｇ要素に“ｔｒｕｅ”と設定されている場合はポーリング終了指示であり、“ｆａｌｓｅ”と設定されている場合にはポーリングは継続する指示である。
【００６８】
［印刷要求の登録処理］
図６は、プリントサーバ１００がクライアント端末１０１から印刷要求（Ｆ１００）を受信した場合にＲＯＭ２０４に格納されたプログラムに従って、ＣＰＵ２０２が動作するＷｅｂアプリケーション３０２のフローチャートである。
【００６９】
プリントサーバ１００は、印刷要求を受信すると、クライアント端末１０１から指定されたジョブを出力するプリンタのプリンタＩＤと文書ＩＤとを図１２に示す印刷ジョブリストに登録する。そして、プリントサーバ１００は、印刷要求を行ったクライアント端末１０１のクライアントジョブＩＤを取得する（Ｓ００１）。
【００７０】
次に、プリントサーバ１００は、クライアント端末１０１がプリンタ１０２に対して行うリクエストが記述された、当該リクエストを発行させるためのＪＡＶＡスクリプトを作成する（Ｓ００２）。このＪＡＶＡスクリプトには、クライアント端末がプリンタに対して実行させるための以下の処理が記載されている。
・プリントサーバへ処理中のジョブ一覧を定期的に通知するポーリング指示
・プリントサーバが指示したジョブの終了をプリントサーバへ通知する指示
・プリントサーバ上のデータをプルプリント（印刷）する指示
ここで記述された処理は、上述した図５に示すＦ１０２、Ｆ１０４、Ｆ１０６の指示にそれぞれ対応する。
【００７１】
そして、プリントサーバ１００は、作成したＪＡＶＡスクリプトを、クライアント端末１０１の印刷要求に対する応答として送信する（Ｓ００３）。
【００７２】
クライアント端末１０１は、プリントサーバ１００から受信したＪＡＶＡスクリプトを実行し、その結果をプリントサーバ１００のＷｅｂアプリケーション３０２に送信する。ここで送信されるＪＡＶＡスクリプトの実行結果には、プリンタ１０２へのポーリング指示、イベント登録指示、印刷要求処理の結果と、プリンタ１０２からクライアント端末１０１に対して送信されたＩＤ情報などが含まれている。
【００７３】
プリントサーバ１００のＷｅｂアプリケーション３０２は、クライアント端末１０１から送信された情報を受信すると（Ｓ００４）、プリンタ１０２への各種リクエストが成功したか否かを判断する（Ｓ００５）。リクエストが成功した場合（Ｓ００５にてＹＥＳ）、プリントサーバ１００は、プリンタ１０２から受信したポーリング間隔時間をプリンタリスト（図１１）に含まれるプリンタに対応付けて登録する。さらに、プリントサーバ１００は、プリンタリスト（図１１）のポーリング受信時間の項目に現在時刻を設定する（Ｓ００６）。また、プリントサーバ１００は、印刷ジョブリスト（図１２）には、プリンタ１０２から受信したプリンタジョブＩＤとイベントＩＤとを該当ジョブに対応付けて登録を行う（Ｓ００７）。そして、本処理フローを終了する。
【００７４】
クライアント端末１０１からリクエストが失敗したと通知があった場合（Ｓ００５にてＮＯ）、プリントサーバ１００は、印刷ジョブリストから該当ジョブの削除を行う（Ｓ００８）。そして、プリントサーバ１００は、削除したジョブの情報を図１３に示す印刷履歴に登録して（Ｓ００９）、処理を終了する。
【００７５】
［ポーリング通知先の登録処理］
図７は、プリンタ１０２のＲＯＭ２１２に格納されたプログラムに従ってＣＰＵ２１０が動作する処理であり、Ｗｅｂサービス受付部４１０がポーリング指示（Ｆ１０２）を受信した場合のフローチャートである。
【００７６】
プリンタ１０２は、図１４に示すようなポーリング指示を受信すると、ポーリングの通知先がポーリング監視リスト（図１８）に既に登録済みであるかどうかを判断する（Ｓ１００）。ポーリングの通知先がポーリング監視リストに登録済みである場合（Ｓ１００にてＹＥＳ）、プリンタ１０２は、ポーリング通知先の登録処理は行わず、ポーリング情報登録（Ｓ１０４）に進む。
【００７７】
ポーリング通知先が未登録である場合（Ｓ１００にてＮＯ）、プリンタ１０２は、ポーリング通知先がポーリング監視リストに登録可能かを確認する。通知先の登録が可能な場合（Ｓ１０１にてＹＥＳ）、プリンタ１０２は、ポーリング監視リストへのポーリング通知先の登録（Ｓ１０２）およびポーリング間隔の決定と登録（Ｓ１０３）を行う。もし、ポーリング通知先の登録数が上限に達しているなどの理由で登録できない場合（Ｓ１０１にてＮＯ）、プリンタ１０２は、ポーリングの登録の要求者に対してポーリング登録のエラー通知を行う（Ｓ１０６）。そして、本処理フローを終了する。
【００７８】
プリンタ１０２は、ポーリング通知先をポーリング監視リストに登録後、ポーリング通知情報の登録を行う（Ｓ１０４）。ここでのポーリング通知情報とは、ポーリング通知間隔と、前回、ポーリングを行ってからの経過時間を指す。本実施形態において、ポーリング送信を行うと、経過時間は“０”にリセットされ、その後経過した時間だけこの数字がカウントされていく。
【００７９】
プリンタ１０２は、ポーリング通知情報を登録した後、ポーリング指示に対するポーリング登録応答として、登録が成功した旨の情報を応答として送信する（Ｓ１０５）。そして、本処理フローを終了する。
【００８０】
［ポーリング処理］
図８は、プリンタ１０２のＲＯＭ２１２に格納されたプログラムに従ってＣＰＵ２１０が動作する処理であり、プルプリントアプリケーション３０４のジョブ管理部４１４のポーリング処理を説明するフローチャートである。図５におけるＦ１１１やＦ１１５に対応する。
【００８１】
プリンタ１０２が有するプルプリントアプリケーション３０４のジョブ管理部４１４は、ポーリング監視リストにおけるポーリング通知先の登録の有無を確認し、ポーリング通知先の存在を検知すると（Ｓ１１０にてＹＥＳ）、一定時間Ｗａｉｔ処理を行う。その後、ジョブ管理部４１４は、Ｗａｉｔした時間をポーリング監視リスト（図１８）にて管理している経過時間に加算する（Ｓ１１１）。
【００８２】
ジョブ管理部４１４は、登録されたポーリング通知先それぞれに対して、前回のポーリング通知からポーリング間隔時間が経過したかを確認する（Ｓ１１２）。確認した結果、ポーリング間隔に達していない場合（Ｓ１１２にてＮＯ）、ジョブ管理部４１４は、再度一定時間Ｗａｉｔ処理を行う（Ｓ１１１）。経過時間が登録されたポーリング間隔に達している場合（Ｓ１１２にてＹＥＳ）、ジョブ管理部４１４は、経過時間を“０”にリセットする（Ｓ１１３）。そして、ジョブ管理部４１４は、ポーリング通知先の登録時に指定された送信情報を取得して、ポーリングリクエスト（図１６）を通知先に対して送信する（Ｓ１１４）。ここでのポーリング通知先の登録時に指定された送信情報とは、ポーリング監視リスト（図１８）に示す通知内容が該当する。
【００８３】
そして、ジョブ管理部４１４は、ポーリングリクエストに応答してポーリング通知先から送信されたレスポンスデータ（図１７）を受信する（Ｓ１１５）。ジョブ管理部４１４は、受信したポーリングデータに、ポーリングの終了が指示されているかどうかを判断する（Ｓ１１６）。ここでは、上述したようにポーリングレスポンス（図１７）に含まれるＥｎｄＰｏｌｌｉｎｇ要素にて指定された値に基づいて判断する。ポーリングの終了が指示された場合（Ｓ１１６にてＹＥＳ）、ジョブ管理部４１４は、ポーリング監視リストから当該ポーリング通知先に対応する情報の削除を行い（Ｓ１１７）、Ｓ１１０に戻る。ポーリングの終了が指定されていない場合（Ｓ１１６にてＮＯ）、再度Ｓ１１１に移行し、ジョブ管理部４１４はポーリング処理の継続を行う。
【００８４】
［ポーリング受信処理］
図９、はプリントサーバ１００におけるＲＯＭ２０４に格納されたプログラムに従ってＣＰＵ２０２が動作する処理であり、Ｗｅｂサービス３０３のポーリング受信処理部４００のフローチャートである。本処理は、図５に示すプリンタ１０２からのポーリング通知（Ｆ１１１、Ｆ１１５）に起因して実行される。
【００８５】
プリントサーバ１００が有するＷｅｂサービス３０３のポーリング受信処理部４００は、プリンタ１０２からポーリングを受信すると、プリンタリスト（図１１）からポーリングが送信されたプリンタを特定する（Ｓ２００）。そして、ポーリング受信処理部４００は、該当プリンタのポーリング受信時刻を現在時刻で更新する（Ｓ２０１）。このとき、該当プリンタのポーリング受信時刻を現在時刻で更新する理由は、ポーリング間隔時間で正しくポーリング送信が行われているかを確認するためである。
【００８６】
次に、ポーリング受信処理部４００は、印刷ジョブリスト（図１２）からポーリング通知を行ったプリンタに依頼しているジョブを確認し、その一覧のジョブと、ポーリング通知で受信したジョブ一覧と一致しているかどうかを確認する（Ｓ２０２）。
【００８７】
ここで、プリントサーバ１００の印刷ジョブリストと、ポーリングで受信したジョブ一覧とが一致しない場合（Ｓ２０２にてＮＯ）、プリンタ１０２からポーリングで通知された情報を優先する。具体的には、ポーリング受信処理部４００は、プリントサーバ１００側の印刷ジョブリストに登録されているが、プリンタ１０２から処理中と通知されなかったジョブは、印刷ジョブリストから削除する（Ｓ２０４）。そして、ポーリング受信処理部４００は、印刷履歴（図１３）に印刷結果が「エラー」の印刷ジョブとして登録する（Ｓ２０５）。
【００８８】
次に、ポーリング受信処理部４００は、ポーリング通知にて受信した一覧にジョブが存在したかどうかを確認する（Ｓ２０３）。一覧にプリンタ１０２でポーリング通知を継続するジョブが存在する場合（Ｓ２０３にてＹＥＳ）、プリントサーバ１００はポーリングによる印刷ジョブの監視を継続する。したがって、ポーリング受信処理部４００は、ポーリング終了指示（ＥｎｄＰｏｌｌｉｎｇ要素）を“ｆａｌｓｅ”に設定したポーリングレスポンスデータ（図１７）を作成する（Ｓ２０８）。このとき、プリンタ１０２はポーリングデスポンスデータを受信することにより、正常にポーリングがプリントサーバ１００に到達していることを確認することができる。
【００８９】
プリンタ１０２からのポーリングにて受信した一覧にジョブが含まれていない場合（Ｓ２０３にてＮＯ）、プリントサーバ１００はポーリングが不要となる。そのため、ポーリング受信処理部４００は、ポーリング終了指示（ＥｎｄＰｏｌｌｉｎｇ要素）を“ｔｒｕｅ”に設定したポーリングレスポンスデータを作成する（Ｓ２０６）。その後、ポーリング受信処理部４００は、プリンタリスト（図１１）のポーリング受信時間とポーリング間隔情報を消去する（Ｓ２０７）。そしてポーリング受信処理部４００は、作成したポーリングレスポンスデータをプリンタ１０２へ送信する（Ｓ２０９）。
【００９０】
［ポーリング監視処理］
図１０は、プリントサーバ１００におけるＲＯＭ２０４に格納されたプログラムに従って、ＣＰＵ２０２が動作するプリンタ管理サービス３０６のプリンタ情報管理部４０３のプリンタポーリング監視フローチャートである。本処理は、図５のＦ１０８にて、プリンタから情報を受信したのち、ポーリング通知を継続的に監視する際に実行される。
【００９１】
ポーリング監視は、定期的にプリンタリスト（図１１）に登録されたポーリング実行中のプリンタから定期的にポーリングが送信されているかどうかを監視して、ポーリングが途絶えた場合に、ポーリングが途絶えたプリンタの印刷中ジョブを終了させるものである。
【００９２】
プリンタ情報管理部４０３は、プリンタリスト（図１１）に登録されたプリンタすべてに対して、ポーリングを実行しているプリンタのポーリング受信時刻にポーリング間隔時間を加算し、ポーリング予定時刻を算出する（Ｓ３００）。
【００９３】
プリンタ情報管理部４０３は、プリンタリストに登録されたプリンタ毎に、算出したポーリング受信予定時刻とプリントサーバ１００の現在時刻とを比較する（Ｓ３０１）。比較の結果、ポーリング受信予定時刻が現在時刻に達していない場合（Ｓ３０１にてＮＯ）、プリンタ情報管理部４０３は、特別な処理は行わない。そして、プリンタ情報管理部４０３は、全てのプリンタに対して時刻の確認をしたかどうかの判断を行う（Ｓ３０５）。未確認のプリンタが有る場合には（Ｓ３０５にてＮＯ）、Ｓ３０１に戻り、プリンタ情報管理部４０３は未確認のプリンタに対して時刻の確認を行う。
【００９４】
Ｓ３０１における比較の結果、プリンタのポーリング予定時刻が現在時刻に達していた場合（Ｓ３０１にてＹＥＳ）、プリンタ情報管理部４０３は、着目プリンタに対する印刷ジョブが印刷ジョブリスト（図１１）に存在するかどうかを確認する（Ｓ３０２）。印刷ジョブが存在する場合（Ｓ３０４にてＹＥＳ）、プリンタ情報管理部４０３は、着目プリンタに対して発行した印刷ジョブを印刷ジョブリストから削除する（Ｓ３０３）。そして、プリンタ情報管理部４０３は、削除した印刷ジョブを印刷履歴（図１３）に登録し、その印刷結果を「不明」として登録する（Ｓ３０４）。
【００９５】
印刷ジョブが印刷ジョブリストに存在しない場合（Ｓ３０４にてＮＯ）、Ｓ３０５へ進む。Ｓ３０５にて全てのプリンタについて確認が終了したら（Ｓ３０５にてＹＥＳ）、プリンタ情報管理部４０３は、一定時間Ｗａｉｔ処理を行う（Ｓ３０６）。Ｗａｉｔから復帰すると、プリンタ情報管理部４０３は、Ｓ３００へ戻り、再度プリンタリストに登録されたプリンタのポーリング受信予定時間の算出処理を行う。
【００９６】
なお、図８のＳ１１５において、プリンタはポーリング通知の応答をプリントサーバから受信しているが、何らかの理由により、応答が受信できなかった場合には、所定回数に渡ってポーリング通知を再送するような構成としても構わない。また、複数回数送信してもポーリングレスポンスを受信できない場合には当該通知先に対するポーリング通知を終了するようにしても構わない。この場合には、プリンタは、図１８に示すポーリング監視リストから対象となる通知先を削除することとなる。
【００９７】
また、図１０のＳ３０２において、プリントサーバは、ポーリング受信予定時刻にポーリング通知が受信できなかった場合に、１回のみの判定で印刷ジョブを印刷ジョブリストから削除しているが、これに限定するものではない。例えば、ポーリング受信予定時刻に受信できなかったプリンタの監視を継続し、所定の経過時間（例えば、次のポーリング受信予定時刻）までにポーリング通知を受信できない場合にジョブを削除する構成としてもよい。また、プリントサーバは、ポーリング通知を受信できなかった回数をカウントし、所定回数以上（所定間隔）にわたってポーリング通知を受信できない場合に当該印刷ジョブを印刷ジョブリストから削除するようにしても構わない。
【００９８】
なお、Ｓ３０３においてリストから削除した後にプリンタからポーリング通知が届いた場合には、プリントサーバは当該ポーリング通知を無視するようにしても構わない。もしくは、印刷ジョブリストに登録されていない印刷ジョブに対するポーリング通知が届いた場合には、例えばエラーとしてその旨を印刷履歴（図１３）に追加するように更新しても構わない。
【００９９】
以上により、プリントサーバは、依頼した印刷ジョブの処理状況が監視できなくなった場合でも、無駄な監視を継続し続けることが無くなり、プリンタとの印刷ジョブの管理状況の同期をとることができる。
【０１００】
［登録されたイベントの削除処理］
次に、本実施形態に係るＪＡＶＡスクリプトを利用したプルプリント方式における印刷における課題の解決手段について述べる。ここでは、プリンタに登録されたイベント通知（本実施形態では、印刷ジョブの終了通知）に対する登録の確実な削除を行うためのイベント削除処理について説明する。図５のＦ１０４ではクライアント端末１０１がプリンタ１０２に対して、ＪＡＶＡスクリプトに従い、イベント登録指示を行っている。ここで、プリントサーバ１００がプリンタ１０２に対して、イベントの削除指示を行わない限り、プリンタ１０２はイベント通知の実行を継続してしまう。つまり、Ｆ１０４にて登録された終了通知を行うイベントを保持し続けてしまう。しかし、例えば、クライアント端末１０１のＷｅｂブラウザ３０１が閉じられた場合などは、プリントサーバ１００はクライアント端末１０１を介して、プリンタ１０２に対してイベントの終了指示を送信できない。その結果、プリンタ１０２にて登録したイベントの削除ができず、印刷ジョブの終了通知を継続してしまう。
【０１０１】
上記課題を解決するための処理を、図１９を用いて説明する。図１９はプリントサーバ１００におけるＲＯＭ２０４に格納されたプログラムに従ってＣＰＵ２０２が動作する処理であり、プリントサーバ１００が有するＷｅｂサービス３０３の印刷イベント受信部４０８がイベントを受信した場合の処理フローチャートである。本処理は、図５のジョブの終了通知（Ｆ１１３）を受信した際に実行される。
【０１０２】
印刷イベント受信部４０８は、プリンタ１０２からジョブ終了イベント通知を受信する（Ｓ４００）。そして、印刷イベント受信部４０８は、印刷ジョブリスト（図１２）からジョブ終了イベント通知にて通知された印刷ジョブを削除し、印刷履歴（図１３）にその印刷ジョブを登録する（Ｓ４０１）。その後、印刷イベント受信部４０８は、印刷ジョブリスト（図１２）に、ジョブ終了イベント通知を送信したプリンタのジョブが、他に存在するかどうかを確認する（Ｓ４０２）。確認の結果、ジョブ終了イベント通知を送信したプリンタのジョブが存在する場合（Ｓ４０２にてＹＥＳ）、印刷イベント受信部４０８は、イベント受信応答をプリンタ１０２へ送信する。確認の結果、イベントを送信したプリンタのジョブが存在しない場合（Ｓ４０２にてＮＯ）、印刷イベント受信部４０８は、イベント終了指示を含む応答（イベント終了応答）をプリンタ１０２へ送信する（Ｓ４０３）。
【０１０３】
一般的に、イベント通知プロトコル（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｅｖｅｎｔｉｎｇ（ＷＳ−Ｅｖｅｎｔｉｎｇ）など）では、イベント通知に対してその応答の中で当該イベント通知を終了させる仕組みは存在しない。そのような場合は、例えば、イベント通知を終了させるための応答として、イベント受信エラーを用いることができる。プリントサーバは、イベントに対してその通知を終了させたい場合、イベント受信エラーを応答することで特許文献１を実装したイベントを送信した装置はイベントを削除することができる。なお、イベント受信エラーとは、例えばＨＴＴＰのエラーステータスコード（４０４）などを用いても構わない。
【０１０４】
以上により、プリンタは、登録されたイベントの実行を無駄に継続し続けることが無くなる。
【０１０５】
以上により、プリントサーバからプリンタに対して直接通信ができない環境下におけるプルプリントシステムにおいて、プリントサーバとプリンタとの間における印刷ジョブ等に関する管理の不整合をなくし、無駄な管理や処理をなくすことができる。
【０１０６】
＜その他の実施形態＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005885410.tif 000002
【図２】
0005885410.tif 000003
【図３】
0005885410.tif 000004
【図４】
0005885410.tif 000005
【図５】
0005885410.tif 000006
【図６】
0005885410.tif 000007
【図７】
0005885410.tif 000008
【図８】
0005885410.tif 000009
【図９】
0005885410.tif 000010
【図１０】
0005885410.tif 000011
【図１１】
0005885410.tif 000012
【図１２】
0005885410.tif 000013
【図１３】
0005885410.tif 000014
【図１４】
0005885410.tif 000015
【図１５】
0005885410.tif 000016
【図１６】
0005885410.tif 000017
【図１７】
0005885410.tif 000018
【図１８】
0005885410.tif 000019
【図１９】
0005885410.tif 000020