プルプリントシステム、印刷ジョブ管理方法、プリントサーバおよびその制御方法、並びにプログラム
【課題】直接アクセスができないプリンタからの通知に基づいてジョブの管理を行う場合、当該通知を受信できない際にはジョブ状態を把握できなくなり、不要な管理が生ずる。
【解決手段】クライアント端末からプリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの当該印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段と、前記プリンタから前記通知を受信する受信手段と、前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段とを有し、前記監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了する。
【解決手段】クライアント端末からプリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの当該印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段と、前記プリンタから前記通知を受信する受信手段と、前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段とを有し、前記監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プルプリントシステム、印刷ジョブ管理方法、プリントサーバおよびその制御方法、並びにプログラムに関する。特にプルプリントシステムにおいて、印刷サーバとプリンタとの間の情報の同期を行う技術に関する。
【背景技術】
【0002】
近年、クラウドサービスとしてインターネット上にサービスを公開することによりビジネス展開がされてきている。プリントサーバもインターネット上のプリントサービスとして機能を提供することが求められてきている。このような背景から、プリントサーバからプリンタがインターネット越しに印刷データを取得し、プルプリントを行うようなクラウドプルプリントシステムが求められている。
【0003】
インターネット上のプリントサーバを利用してプル型のプリントを行う技術として、JAVAスクリプト(JavaScript:登録商標)を利用したプルプリント方式が存在する。JAVAスクリプトを利用したプルプリント方式とは、プリントサーバが印刷を行うプリンタに対して依頼したいコマンドを送付するJAVAスクリプトを生成し、Webブラウザに送信する。JAVAスクリプトを受信したWebブラウザは、受信したJAVAスクリプトを実行すると、JAVAスクリプトにて指定されたプリンタへのプルプリントのリクエストを送信することで、プリンタに対して印刷を依頼する方式である。このとき、印刷データは、URL等により指定される。なお、指定されたURLから印刷データを取得して印刷を行うプルプリント技術の説明は非特許文献1に記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−257481号公報
【非特許文献】
【0005】
【非特許文献1】“Print Service Definition Version 1.0 For Web Services on Devices”、[online]、2007年1月29日、Microsoft、[平成23年6月22日検索]、インターネット<URL:http://msdn.microsoft.com/ja-jp/windows/hardware/gg463146>
【発明の概要】
【発明が解決しようとする課題】
【0006】
イントラネット内にプリントサーバとプリンタが存在する印刷システムでは、プリントサーバから直接プリンタにネットワーク通信を行うことで、依頼した印刷ジョブの状況確認やプリンタで発生したイベントの通知先の登録・削除依頼を行うことができた。
【0007】
しかし、クラウドサービスのようにインターネット上に展開するプリントサーバからは、プリンタとの間にファイアウォールが配置され、直接プリンタに対してネットワークでアクセスすることができない。そこで、JAVAスクリプトを利用したプルプリント方式では、クラウドサービスを応用してサービス提供するプリントサーバがJAVAスクリプトに印刷要求だけではなく、ジョブ終了通知イベントを送信するコマンドを含める方法がある。プリンタは、ジョブ終了通知イベントを送信するプリントサーバのアドレスをイベント通知先としてメモリ領域に保持しておき、ジョブの終了通知をプリントサーバに送信することで印刷ジョブの状況をプリントサーバに通知することを実現している。
【0008】
しかしながら、イベントによるジョブ終了通知だけではプリントサーバでジョブの状況が把握できない場合が発生してしまう場合がある。例えば、ジョブ終了イベントは、印刷ジョブが完了した場合にしか通知されない。ここで、イベントが登録された状況でジョブが完了していないのにプリンタが再起動されてしまうと、揮発メモリに保持されたプリントサーバへのイベント通知がクリアされてしまう。その結果、再起動後のプリンタは、プリントサーバに対して情報を送信することができない。このような場合、プリントサーバはプリンタに依頼したジョブの終了通知が送信されない理由がプリンタでジョブが完了していないのか、再起動されたなどの要因により、イベント送信ができない状況なのか判断することができない。その結果、プリントサーバは、印刷を依頼したプリンタにおける依頼中の印刷ジョブの状況を把握することができないため、当該印刷ジョブを管理し続けてしまう。
【0009】
また、別の課題も存在する。プリンタに対してイベント登録を行った場合、イベント通知が不要になるとプリンタに対してイベント削除依頼を行うことで、プリンタに登録されたイベント情報を削除する必要がある。しかし、上述したように、クラウドサービスのようなインターネット上に展開するプリントサーバからは、ファイアウォール越しに存在するプリンタに対して、直接プリンタに対してイベントの削除依頼を行うことができない。そのため、JAVAスクリプトを利用したプルプリント方式では印刷時の処理を応用し、イベント削除依頼も印刷者のWebブラウザを介してプリンタに通知することでクラウド上のプリントサービスからプリンタに対してイベント削除依頼を行うことが考えられる。
【0010】
しかし、このイベント削除依頼の手法には課題が存在する。印刷を行う場合、印刷要求を行うクライアントがWebブラウザを用いてプリントサーバに対して接続を行うことで、印刷要求を送信することが可能である。しかし、印刷要求を送信したクライアントが印刷完了後に、再度Webブラウザを用いてプリントサーバに接続することが保障されない。
【0011】
つまり、クライアントが印刷要求だけ行い、プリントサーバとの接続を切断してしまうと、プリントサーバは、クライアントを介したプリンタへの依頼ができないため、プリンタにおけるイベント通知先の削除を行うことができない。プリンタに登録されたイベントの削除が行われないと、プリンタは登録されたイベント送信先に対して、イベントの送信をし続けたり、不要なイベント送信先情報を保持し続けてしまう。その結果、プリンタのイベント登録数が上限に達してしまい、新規にほかの印刷者がプリンタに対してイベント登録を行うことができなくなる。
【0012】
このイベントを不適切な宛先に対して送信し続けてしまう課題を解決するために、特許文献1ではイベント送信を行った結果、エラーが返信された場合には、印刷デバイスがそのイベント送信先を宛先から削除するという技術である。しかし、イベント送信先が成功を応答した場合は削除されないため、同一宛先に対する印刷デバイスによるイベントの複数回にわたる配信は継続される。よって、イベントに対するエラーが発生しない場合は、イベント通知先が印刷デバイスにて保持され続けてしまう。
【課題を解決するための手段】
【0013】
上記課題を解決するために、本願発明は以下の構成を有する。すなわち、内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムであって、前記プリントサーバは、前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段と、前記プリンタから前記通知を受信する受信手段と、前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段とを有し、前記プリンタは、前記クライアント端末が前記プログラムを実行することによる、印刷ジョブへの処理および印刷ジョブの処理状況に関する通知の実行の指示を受け付ける受付手段と、前記受付手段にて受け付けた指示に従って、指定された前記プリントサーバの宛先に対して、一定時間ごとに前記通知を行う通知手段とを有し、前記プリントサーバの監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了する。
【発明の効果】
【0014】
プリントサーバからプリンタに対して直接通信ができない環境下におけるプルプリントシステムにおいて、プリントサーバとプリンタとの間における印刷ジョブ等に関する管理対象の不整合や無駄な処理をなくすことができる。
【図面の簡単な説明】
【0015】
【図1】印刷システム全体構成図。
【図2】印刷システムハードウェア構成図。
【図3】印刷システムのサービス構成図。
【図4】印刷システムソフトウェア構成図。
【図5】印刷システムシーケンス図。
【図6】プリントサーバにおける印刷要求受信フローチャート。
【図7】プリンタにおけるポーリング登録フローチャート。
【図8】プリンタにおけるポーリング処理フローチャート。
【図9】プリントサーバにおけるポーリング受信フローチャート。
【図10】プリントサーバにおけるポーリング管理フローチャート。
【図11】プリントサーバで管理するプリンタリストの構成例を示す図。
【図12】プリントサーバで管理する印刷ジョブリストの構成例を示す図。
【図13】プリントサーバで管理する印刷履歴の構成例を示す図。
【図14】ポーリング登録リクエストの記述例を示す図。
【図15】ポーリング登録レスポンスの記述例を示す図。
【図16】ポーリングリクエストの記述例を示す図。
【図17】ポーリングレスポンスの記述例を示す図。
【図18】プリンタで管理するポーリングリストの構成例を示す図。
【図19】プリントサーバにおけるイベント受信処理フローチャート。
【発明を実施するための形態】
【0016】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【0017】
[システム構成]
図1は、本実施形態に係る印刷システムの全体構成を示す図である。図1において、クライアント端末101、プリントサーバ100、プリンタ102は、ネットワーク104、105を介して接続されている。ルータ103は外部ネットワークであるネットワーク104と内部ネットワークである105を接続するものである。なお、図1には不図示であるが、ネットワーク104とネットワーク105との間にはファイアウォールが配置され、ネットワーク間の通信はセキュリティ等の観点から制限されている。本実施形態においては、別途示した場合を除いて、ネットワーク105に存在する機器に対し、ネットワーク104に位置する各種機器を起因として、接続を行うことはできないものとする。ネットワーク104の例として、インターネットが挙げられ、またネットワーク105の例として、LAN(Local Area Network)が挙げられる。
【0018】
クライアント端末101は、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、PDA(パーソナルデータアシスタント)等が該当するが、プログラムの実行環境が内蔵された携帯電話であってもよい。クライアント端末101では、本実施形態にて用いられるWebブラウザ(不図示)のプログラムを実行する環境が内蔵されている。
【0019】
クライアント端末101からプリントサーバ100上の文書をプリンタ102で印刷を行う場合、プリントサーバ100は、クライアント端末101のWebブラウザから送信された印刷リクエストを受信する。
【0020】
プリントサーバ100は、印刷リクエストを実現するためのJAVAスクリプトを作成し、クライアント端末101のWebブラウザに送信する。クライアント端末101のWebブラウザがJAVAスクリプトを受信し、そのJAVAスクリプトを実行すると印刷を行うプリンタに対してプルプリント要求が送信される。プリンタ102は、クライアント端末101から受信したプルプリント要求に従ってプリントサーバ100から印刷する文書データを取得し、印刷を行う。なお、本願発明においては、クライアント端末101が有するWebブラウザが実行するスクリプト言語として、JAVAスクリプトを用いているがこれに限定するものではない。例えば、Webブラウザが実行可能なスクリプト言語であれば、他の言語を用いて実現しても構わない。
【0021】
[ハードウェア構成]
図2は、本実施形態に係る印刷システムのクライアント端末101、プリントサーバ100、およびプリンタ102のハードウェア構成図である。なお、本実施形態において、プリントサーバ100とクライアント端末101の構成は同じものとし、ここではクライアント端末101を例にとって説明する。
【0022】
まず、クライアント端末101の構成について説明する。図2において、CPU202は装置全体の制御を行う。また、CPU202は、ハードディスク(HDD)205等の記憶手段に格納されているアプリケーションプログラム、OS等を実行し、プログラムの実行に必要な情報、ファイル等を一時的にRAM203等に格納する制御を行う。ROM204は、記憶手段として機能し、内部には、基本I/Oプログラム等のプログラム、印刷処理の際に使用する印刷データ、プリンタ情報等の各種データを記憶する。RAM203は、一時記憶手段として機能し、CPU202の主メモリ、ワークエリア等として機能する。HDD205は、外部記憶手段の一つであり、大容量メモリとして機能する。また、HDD205は、Webブラウザ等のアプリケーションプログラム、プリントサーバプログラム、OS、関連プログラム等を格納している。
【0023】
ディスプレイ206は、表示手段であり、キーボード207から入力したコマンドや、プリンタのステータス等を表示する。外部装置I/F208は、プリンタ、USB機器、周辺機器を接続するためのI/Fである。キーボード207は、ユーザが指示を入力するための指示入力手段である。システムバス201は、印刷システムのプリントサーバ内におけるデータの流れを司る。ネットワークインタフェースカード(NIC)219は、NIC209、各種ネットワークを介して外部装置とのデータのやり取りを行う。なお、上記コンピュータの構成はその一例であり、図2の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてROM、RAM、HDDなどで変更することも可能である。
【0024】
次にプリンタ102の構成例について説明する。コントローラ230は、プリンタ102の制御系を司る。CPU210は、装置全体の制御を行い、システムバス218に接続される各種デバイスとのアクセスを統括的に制御する。この制御は、ROM212に記憶された制御プログラム等、あるいはディスクコントローラ(DKC216)を介して接続された外部メモリ223に記憶された制御プログラムやリソースデータ(資源情報)等に基づいて行われる。RAM211は、CPU210の主メモリ、ワークエリア等として機能し、増設ポート(不図示)に接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。HDD213は、大容量メモリとして機能する外部記憶手段であり、プルプリントアプリケーションプログラム及び関係プログラム等を格納している。
【0025】
操作パネル(操作部)221は、プルプリントの操作を行うユーザインタフェースやプルプリント切り替えボタンが配置される。また、操作パネル221には、プリンタ102の動作モード等の設定やプリンタ102の動作状況の表示、複写指定等の操作を行うためのボタンおよび液晶パネルやLED214等の表示部も配置される。ネットワークインタフェースカード(NIC)219は、各種ネットワークを介して外部装置とのデータのやり取りを行う。
【0026】
なお、図2で示したプリントエンジン220は、既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式(レーザービーム方式)やインクジェット方式、昇華方(熱転写)方式等が挙げられる。しかし、これに限定するものではない。ラスタコントローラ215は、PDL・PDF形式である印刷データを画像データに変換するコントローラである。機器I/F217は、USB等で接続可能な外部機器との接続I/Fである。また、図2には不図示であるが、各装置内には、時刻を取得する部位があり、各処理部からの要求に応じて、要求を受信した時点での時刻を通知できるものとする。
【0027】
[モジュール構成]
図3は、本実施形態に係る印刷システムにて提供されるモジュール間の関係を示す構成図である。
【0028】
プリントサーバ100は、プリンタ管理サービス306を提供する。プリンタ管理サービス306は、印刷を行うプリンタそれぞれの情報を保持するサービスである。プリンタ管理サービス306は、図11に示すようなプリンタリストを保有する。プリンタリストには、プリントサーバ100がプリンタ102を一意に識別するためのプリンタIDやプリンタ名情報、プリンタのIPアドレス情報が含まれる。さらに、プリンタリストには、それらに加え、プリンタ102に依頼したポーリング通知の状況としてポーリングを受信した時間とポーリング間隔時間とが登録されている。なお、これに限定するものではなく、他のプリンタに情報を含んでもよい。例えば、プリンタIPアドレスは、グローバルアドレスとプライベートアドレスとをそれぞれ有してもよいし、どのネットワークに含まれるかを示す情報を更に有してもよい。
【0029】
プリンタIDは、プリントサーバ内部でプリンタ102を一意に区別するためのID(識別子)である。本実施形態において、ポーリング通知とは、プリンタ102が一定時間間隔でプリントサーバ100に対して印刷ジョブの処理状況を送信する通信を意味する。本実施形態では、このポーリング通知でプリンタ102は、プリントサーバ100に対して処理中のジョブ一覧(処理中ジョブ一覧)を含むデータ(図16)をプリントサーバ100に送信する。ここで送信されるデータの具体的な例は、図16を用いて後述する。
【0030】
プリントサーバ100は、ポーリング通知の状況として、図11に示すように、各プリンタから前回受信したポーリング時刻(ポーリング受信時間)を保持する。なお、最初のポーリング時刻は、プリンタ102にてポーリング登録が正常に完了した時刻となる。ポーリング間隔は、プリンタ102から指定されたポーリング通知の間隔時間であり、定期的にポーリング通知が行われる際には、この情報にて指定された間隔でポーリングが行われる。
【0031】
また、プリンタリストに登録された情報に基づいて、プリンタ102からの定期ポーリングの有無の確認も行う。例えば、図11のプリンタID“P003”に示すように、ポーリング通知が行われていないプリンタには、ポーリング受信時間とポーリング間隔時間の情報は設定されていないものとする。
【0032】
印刷ジョブ管理サービス305は、ユーザから要望された印刷ジョブを管理するサービスであり、文書データ等を印刷データとしてストレージ307に保持し、管理する。また、印刷ジョブ管理サービス305は、図12に示すような印刷ジョブリストを保有し、プリンタ102に対して依頼を行っている印刷ジョブを管理する。
【0033】
クライアントジョブIDはプリントサーバ内部で印刷ジョブを一意に区別するためのID(識別子)である。プリンタIDは、図11に示すプリンタリストにて示されるプリンタIDに対応しており、どのプリンタに対して印刷ジョブの実行を依頼したかを一意に区別するための情報である。プリンタジョブIDは、印刷ジョブの実行を依頼したプリンタ側で当該印刷ジョブに対して発行されたジョブIDである。プリントサーバ100が、プリンタ102と印刷ジョブの情報をやり取りする場合、プリンタ102が発行したプリンタジョブIDを用いて印刷ジョブを識別する。文書IDとは、プリントサーバ100内のストレージ307に保持された文書を一意に識別する情報であり、印刷している文書を区別するための情報である。
【0034】
ストレージ307は、プリントサーバ100の情報処理装置に内蔵するHDDまたは、外部接続しているHDD、または、ネットワークストレージ等の記憶装置である。このストレージ307には、印刷ジョブにて印刷を指定される文書データが保持されている。ストレージは例えば、HDD205等にて実現される。
【0035】
Webアプリケーション302は、クライアント端末101上に動作するWebブラウザ301で表示可能なWebページを作成する。そして、Webアプリケーション302は、クライアント端末101のWebブラウザ301からのリクエストに応答し、作成したWebページを返信する。また、Webアプリケーション302は、クライアント端末101のWebブラウザ301がプリンタに要求を送信するためのJAVAスクリプトを作成し、Webブラウザ301へ送信する。
【0036】
Webサービス303は、プリンタ102との通信を行うモジュールである。本実施形態において、プリンタ102との通信とは、プリンタ102からの印刷データ取得要求、ポーリング通知、およびイベント通知が挙げられる。Webサービス303は、プリンタ102から送信されたこれらの要求を受信すると、それぞれの要求に従った処理を行う。そして、Webサービス303は、プリンタ102に対して処理結果としての応答を返す。
【0037】
なお、印刷ジョブ管理サービス305、Webアプリケーション302、Webサービス303はそれぞれ独立したプログラムである。なお、本実施形態では、1のプリントサーバ100にてこれらのモジュールによる機能を実現する構成としたが、別々の情報処理装置に配置することも可能である。つまり、これらのモジュールは、それぞれネットワークに繋がった情報処理装置に配置され、それぞれのモジュール間で通信を行う。
【0038】
プリンタ102のプルプリントアプリケーション304は、プリンタ102でプルプリントを実行するアプリケーションである。プルプリントアプリケーション304は、印刷ジョブの実行要求に伴って、印刷データのURLを通知されると、そのURLから印刷データを取得して印刷を行うプルプリント機能を備える。さらには、プルプリントアプリケーション304は、登録されたポーリング通知先に対して一定時間間隔で処理中のジョブ一覧を送信するポーリング機能と、プリンタで印刷するジョブが完了した時にイベント通知を行う機能も備える。このときの通知先は、プリントサーバ100となる。
【0039】
クライアント端末101のWebブラウザ301は、プリントサーバ100から送信されたJAVAスクリプトが実行可能なWebブラウザである。
【0040】
[ソフトウェア構成]
図4は、本実施形態に係る印刷システムにおける、図3に示した各モジュールの更に詳細なソフトウェア構成図である。まず、図4(A)を用いて、プリントサーバ100の構成について説明する。プリントサーバ100が有する印刷ジョブ管理サービス305の印刷データ管理部401は、印刷データ(文書データ)の管理を行う。ここでの印刷データの管理とは、印刷データ管理部401は、Webサービス303から印刷データの取得要求を受け取ると、ストレージ307から指定の印刷データを取得し、Webサービス303に渡すことである。また、印刷データ管理部401は、必要に応じて、印刷データの追加、削除を行う。
【0041】
印刷ジョブ情報管理部402は、クライアントからクライアント端末101を介して要求された印刷ジョブ情報や印刷履歴情報を管理する。ここで管理される印刷ジョブ情報は、図12に示す印刷ジョブリストであり、印刷ジョブを一意に識別するID情報や出力するプリンタを特定する情報で構成される。また、印刷履歴情報とは、図13に示す印刷履歴情報であり、ジョブを識別するID情報や印刷結果情報が存在する。この印刷履歴情報に含まれる印刷結果情報は、そのステータスとして本実施形態では、印刷ジョブの「正常終了」、「エラー(終了)」、「不明」を含むものとする。
【0042】
ここで、「エラー(終了)」ステータスは、プリンタに指示した印刷ジョブであるが、その印刷ジョブが監視できなくなった状態の印刷ジョブに対して設定される。つまり、正常終了の通知を受けないまま、プリンタ側での実行が終了してしまっている印刷ジョブに対して設定される。「不明」ステータスは、ポーリング通知を受信できなくなったプリンタに対して実行を指示した印刷ジョブに対して設定される。ポーリング通知に基づいた履歴情報の設定に関しては、各処理フローを用いて後述する。なお、印刷ジョブリストや印刷履歴情報の構成は図12および図13に示すものに限定するものではなく、更なる情報が含まれていても構わない。
【0043】
プリンタ管理サービス306のプリンタ情報管理部403では、図11に示すプリンタリストを管理する。また、プリンタ情報管理部403は、プリンタリストに登録されたプリンタのポーリング状況を定期的に確認し、プリンタにて印刷中のジョブに問題が発生していないか確認する。ここでの確認とは、例えば、ポーリング受信時間からポーリング間隔の時間分が経過していないかなどを確認する。
【0044】
Webアプリケーション302のリクエスト受付部406は、クライアント端末101のWebブラウザ301から、印刷リクエスト等を受けるモジュールである。セッション管理部404は、Webブラウザ301からのリクエストをセッションとして管理する。ページ生成部405は、Webブラウザ301からのリクエストに応じてWeb画面を作成し、生成したWeb画面をWebブラウザ301に返信する。ここで、Webブラウザ301に送信するのはWeb画面だけではなく、ページ生成部405はプリンタ102に送信するリクエストをJAVAスクリプトで生成してWebブラウザ301に返信する場合もある。
【0045】
Webサービス303のリクエスト受付部409は、プリンタ102のプルプリントアプリケーション304から印刷ジョブ取得要求や、印刷ジョブのステータス通知イベント、ポーリング通知イベントを受信するモジュールである。印刷ジョブ取得部407は、リクエスト受付部409が印刷ジョブ取得要求を受けると印刷ジョブ管理サービス305に印刷データ取得要求を行い、指定された印刷データを取得し、クライアント端末101に対して送信する。
【0046】
印刷イベント受信部408は、プリンタ102から印刷処理が完了したジョブのステータス情報を受信するモジュールである。印刷イベント受信部408は、プリンタ102からジョブに対する印刷処理の完了のイベントを受信すると、図12に示す印刷ジョブリストから当該ジョブを削除する。そして、印刷イベント受信部408は、当該ジョブを図13に示す印刷履歴情報に指定された最終ステータス情報(印刷結果)とともに登録する。
【0047】
ポーリング受信処理部400は、プリンタ102から定期的に送信される処理中ジョブ一覧情報から印刷ジョブ情報管理部402が保有する印刷ジョブリストの妥当性を判断するモジュールである。ポーリング受信処理部400は、受信した処理中ジョブ一覧と保持している印刷ジョブリスト(図12)の情報とを比較し、処理中とされるジョブの間に差異がある場合には、差異が発生しないように同期をとる。ここでの処理中であるジョブの同期の取り方については、後述する。
【0048】
次に、図4(b)を用いて、プリンタ102の構成について述べる。プルプリントアプリケーション304のWebサービス受付部410は、クライアント端末101のWebブラウザ301から、印刷リクエストやイベント登録、ポーリング登録等を受ける。Webサービス送信部411は、プリントサーバ100のWebサービス303に対して、印刷ジョブ取得リクエストや、印刷ジョブの状態変更イベント通知や定期的に処理中のジョブ一覧送信を行うポーリング通知等を行う。
【0049】
印刷ジョブ取得部412は、プルプリント要求で受信したURLから、Webサービス送信部411を介してプリントサーバ100のWebサービス303から印刷データを取得する。そして、印刷ジョブ取得部412は、取得した印刷データを印刷ジョブ投入部416に送る。印刷ジョブ投入部416は、コントローラ230に印刷データを送信する。その結果、コントローラ230が受信した印刷データを用いて印刷処理を実行する。
【0050】
印刷制御部415は、印刷ジョブのステータスをコントローラ230から受け取り、ジョブ管理部414に通知する。ジョブ管理部414は、通知された印刷ジョブのステータスがイベント送信条件に合致するかどうかを判断する。そして、条件に合致する場合にはジョブ管理部414は、Webサービス送信部411を介してイベント通知を行う。
【0051】
またジョブ管理部414は、クライアント端末101からポーリング通知指示を受けた場合、ポーリング通知指示にて指定された宛先に対して定期的に処理中のジョブリストを通知するポーリング通知を行う。ジョブ管理部414は、ポーリング通知に関連して、図18に示すようなポーリング監視リストを備え、どの通知先に対してどのくらいの間隔でどのような内容を送信するかを管理する。ここで、通知内容に指定されたActiveJobIdsは、プリンタが処理中の印刷ジョブのうち、ポーリング通知の宛先にて管理されている印刷ジョブの情報を処理中ジョブ一覧として送信することを示す。この処理中ジョブ一覧には、プリントサーバ100側でジョブを識別できるように、例えば、図12に示すクライアントジョブID、プリンタジョブIDなどが含まれる。プルプリントコントローラ413は、プルプリントアプリケーション304全体の動作管理を行うものであり、各部への動作指示等は、このコントローラ経由で行う。
【0052】
[処理フロー]
次に、図5を用いて、本願発明に係るJAVAスクリプトを利用したプルプリント印刷方式について説明する。本願発明では、正確にプリンタで処理中のジョブ状況を把握するために、印刷要求時にジョブ完了イベントだけでなく、ポーリング要望を行う。以降、本実施形態の印刷のシーケンスを説明する。
【0053】
クライアント端末101は、プリントサーバ100のWebアプリケーション302にWebブラウザ301を用いて接続を行い、印刷を行う文書と、出力を行うプリンタとを指定して印刷の実行を指示する(F100)。なお、このとき印刷設定等を指定することも考えられるが、本願発明に直接関係ないため、説明を省略する。
【0054】
プリントサーバ100のWebアプリケーション302は、クライアント端末101から印刷リクエストを受信するとページ生成部405で、クライアント端末101が印刷を行うプリンタに対してリクエストを送信するためのJAVAスクリプトを生成する。ここで生成されるJAVAスクリプトには、クライアント端末101のWebブラウザ301がプリンタ102に対して以下の処理を要求するための記述が含まれる。
・定期的に、プリントサーバに対して処理中の印刷ジョブ一覧を通知させるポーリング指示(ポーリング通知の実施依頼)
・印刷ジョブのイベント登録指示(ジョブの終了通知の実施依頼)
・プルプリント指示(印刷指示(印刷データの取得要求の実施依頼を含む))
【0055】
プリントサーバ100は、作成したJAVAスクリプトを、クライアント端末101のWebブラウザ301に対して印刷リクエストの応答として送信する(F101)。
【0056】
クライアント端末101のWebブラウザ301は、プリントサーバ100から送信されたJAVAスクリプトを受信し、実行する。ここで受信したJAVAスクリプトには、上述した各種依頼を行うための処理が記述されている。Webブラウザ301がこの処理を順番に実行することでクライアント端末101とプリンタ102とが通信を行い、その結果をクライアント端末101は受信する(F102〜F107)。
【0057】
クライアント端末101のWebブラウザ301が送信するプリンタ102へのポーリング指示のリクエスト(F102)は、例えば図14のようなリクエストである。図14の内容を説明する。まず、PollTo要素の配下のAddress要素にて宛先が指定されている。更に、この宛先に対して、Interval要素に指定された時間の間隔(ここでは秒で指定)でポーリング通知を実施する。このとき通知される情報としては、ClientId要素に指定されたクライアントのジョブに関して、Name要素で指定されたJOB情報(通知内容)をポーリングで通知することを示している。図14に示す例では、通知先“http://10.254.0.27:5357/70da246b-fea1-4ed3-b7ce-195c50ac07e1”に対して、60秒間隔で印刷指示者がCJ200である処理中ジョブ一覧(ActiveJobIds)を送信することを意味している。
【0058】
プリンタ102からクライアント端末101への、ポーリング指示に対する応答(F103)は、例えば図15のような応答となる。図15の内容を説明する。ここでは、プリンタ102によってポーリング指示が受け付けられたことを示している。ただし、Webブラウザ301により指示したポーリング間隔が“60(秒)”であるのに対して(図14のInterval要素)、プリンタ102からはその応答において、ポーリング間隔は“180(秒)”が指定されている(図15のInterval要素)。ポーリング間隔は、プリンタ102の設定や状況に応じてプリンタ側が主導で決定してもよい。プリンタ側が決定した情報については、クライアント端末101がプリントサーバ100に通知することとなる。
【0059】
クライアント端末101のWebブラウザ301は、プリンタ102に対してイベントの登録指示を行う(F104)。ここではWebブラウザ301は、プリンタ102が指示を受けた印刷ジョブの実行が完了した際に、プリントサーバ100に対して、その旨を通知するように指示する。そして、プリンタ102は、Webブラウザ301からの指示に対して、登録ができた場合に、その登録情報(イベントID)を、当該要求を受け付けた旨と共に通知する(F105)。
【0060】
そして、クライアント端末101のWebブラウザ301は、プリンタ102に対して、プルプリント要求を行う。プリンタ102は、受信したプルプリント要求に対して発行したジョブIDを、当該要求を受け付けた旨と共に通知する。
【0061】
クライアント端末101は、ポーリング指示の結果(F103)、イベント登録指示の結果(F105)、印刷指示の結果(F107)を受信すると、受信した処理結果とプリンタ102から通知されたID情報とをプリントサーバ100に送信する(F108)。なお、何らかの理由により、いずれかの指示が失敗した場合には、プリンタ102はプリントサーバ101にその旨を通知する。
【0062】
各指示の受付が正常に完了した後、プリンタ102は、印刷指示(F106)のプルプリント要求で指定されたURLから印刷データを取得し(F109、F110)、印刷処理を実行する。
【0063】
プリンタ102は、F103で指定したポーリング間隔時間毎にプリントサーバ100に対して、ポーリング通知として、処理中ジョブ一覧を定期的に通知する(F111)。例えば、F106にて要求されたプルプリントが完了していない状況でポーリング間隔時間が経過した場合、プリンタ102はプリントサーバ100に対して、F106で受信した処理中のジョブ情報を含めた情報を送信する(F108)。
【0064】
F106で要求を受け付けたプルプリントが完了後にポーリング間隔時間になると、処理中の印刷ジョブが存在しないため、プリントサーバ100に対して処理中のジョブ情報が存在しない通知を行う(F115)。
【0065】
プリンタ102からのポーリング通知(F111、F115)は、例えば図16に示すような構成のリクエストデータとなる。ここでは、処理中ジョブ一覧として、ActiveJobIds要素の配下に処理中のJobの数だけJobIdSet要素としてJob情報が記載される。図16に示す例の場合、プリンタジョブIDが“J300”、クライアントジョブIDが“CJ200”のジョブが存在することを通知している。この情報は、プリントサーバ100の印刷ジョブ管理サービス305が管理する印刷ジョブリスト(図12)のプリンタジョブID、クライアントジョブIDに対応する。もし、F115のように処理中のジョブが存在しない場合、JobIdSet情報が存在しないリクエストが送信されることとなる。
【0066】
プリントサーバ100はプリンタ102からポーリング通知を受信すると、プリンタ102に対してポーリングを継続させるかどうかを判断する。継続させる場合は、プリントサーバ100は、プリンタ102にポーリングの応答としてポーリング通知の継続指示を行い(F112)、終了させる場合は、プリンタ102にぽーちんぐ通知の終了指示を行う(F116)。
【0067】
プリンタ102のポーリングに対するレスポンスの通信(F112、F116)は例えば図17に示すような構成のレスポンスデータとなる。ポーリングレスポンスでは、前述のようにプリントサーバ100からプリンタ102に対してポーリングを継続するか否かの指示が含まれている。図17に示すように、EndPolling要素に“true”と設定されている場合はポーリング終了指示であり、“false”と設定されている場合にはポーリングは継続する指示である。
【0068】
[印刷要求の登録処理]
図6は、プリントサーバ100がクライアント端末101から印刷要求(F100)を受信した場合にROM204に格納されたプログラムに従って、CPU202が動作するWebアプリケーション302のフローチャートである。
【0069】
プリントサーバ100は、印刷要求を受信すると、クライアント端末101から指定されたジョブを出力するプリンタのプリンタIDと文書IDとを図12に示す印刷ジョブリストに登録する。そして、プリントサーバ100は、印刷要求を行ったクライアント端末101のクライアントジョブIDを取得する(S001)。
【0070】
次に、プリントサーバ100は、クライアント端末101がプリンタ102に対して行うリクエストが記述された、当該リクエストを発行させるためのJAVAスクリプトを作成する(S002)。このJAVAスクリプトには、クライアント端末がプリンタに対して実行させるための以下の処理が記載されている。
・プリントサーバへ処理中のジョブ一覧を定期的に通知するポーリング指示
・プリントサーバが指示したジョブの終了をプリントサーバへ通知する指示
・プリントサーバ上のデータをプルプリント(印刷)する指示
ここで記述された処理は、上述した図5に示すF102、F104、F106の指示にそれぞれ対応する。
【0071】
そして、プリントサーバ100は、作成したJAVAスクリプトを、クライアント端末101の印刷要求に対する応答として送信する(S003)。
【0072】
クライアント端末101は、プリントサーバ100から受信したJAVAスクリプトを実行し、その結果をプリントサーバ100のWebアプリケーション302に送信する。ここで送信されるJAVAスクリプトの実行結果には、プリンタ102へのポーリング指示、イベント登録指示、印刷要求処理の結果と、プリンタ102からクライアント端末101に対して送信されたID情報などが含まれている。
【0073】
プリントサーバ100のWebアプリケーション302は、クライアント端末101から送信された情報を受信すると(S004)、プリンタ102への各種リクエストが成功したか否かを判断する(S005)。リクエストが成功した場合(S005にてYES)、プリントサーバ100は、プリンタ102から受信したポーリング間隔時間をプリンタリスト(図11)に含まれるプリンタに対応付けて登録する。さらに、プリントサーバ100は、プリンタリスト(図11)のポーリング受信時間の項目に現在時刻を設定する(S006)。また、プリントサーバ100は、印刷ジョブリスト(図12)には、プリンタ102から受信したプリンタジョブIDとイベントIDとを該当ジョブに対応付けて登録を行う(S007)。そして、本処理フローを終了する。
【0074】
クライアント端末101からリクエストが失敗したと通知があった場合(S005にてNO)、プリントサーバ100は、印刷ジョブリストから該当ジョブの削除を行う(S008)。そして、プリントサーバ100は、削除したジョブの情報を図13に示す印刷履歴に登録して(S009)、処理を終了する。
【0075】
[ポーリング通知先の登録処理]
図7は、プリンタ102のROM212に格納されたプログラムに従ってCPU210が動作する処理であり、Webサービス受付部410がポーリング指示(F102)を受信した場合のフローチャートである。
【0076】
プリンタ102は、図14に示すようなポーリング指示を受信すると、ポーリングの通知先がポーリング監視リスト(図18)に既に登録済みであるかどうかを判断する(S100)。ポーリングの通知先がポーリング監視リストに登録済みである場合(S100にてYES)、プリンタ102は、ポーリング通知先の登録処理は行わず、ポーリング情報登録(S104)に進む。
【0077】
ポーリング通知先が未登録である場合(S100にてNO)、プリンタ102は、ポーリング通知先がポーリング監視リストに登録可能かを確認する。通知先の登録が可能な場合(S101にてYES)、プリンタ102は、ポーリング監視リストへのポーリング通知先の登録(S102)およびポーリング間隔の決定と登録(S103)を行う。もし、ポーリング通知先の登録数が上限に達しているなどの理由で登録できない場合(S101にてNO)、プリンタ102は、ポーリングの登録の要求者に対してポーリング登録のエラー通知を行う(S106)。そして、本処理フローを終了する。
【0078】
プリンタ102は、ポーリング通知先をポーリング監視リストに登録後、ポーリング通知情報の登録を行う(S104)。ここでのポーリング通知情報とは、ポーリング通知間隔と、前回、ポーリングを行ってからの経過時間を指す。本実施形態において、ポーリング送信を行うと、経過時間は“0”にリセットされ、その後経過した時間だけこの数字がカウントされていく。
【0079】
プリンタ102は、ポーリング通知情報を登録した後、ポーリング指示に対するポーリング登録応答として、登録が成功した旨の情報を応答として送信する(S105)。そして、本処理フローを終了する。
【0080】
[ポーリング処理]
図8は、プリンタ102のROM212に格納されたプログラムに従ってCPU210が動作する処理であり、プルプリントアプリケーション304のジョブ管理部414のポーリング処理を説明するフローチャートである。図5におけるF111やF115に対応する。
【0081】
プリンタ102が有するプルプリントアプリケーション304のジョブ管理部414は、ポーリング監視リストにおけるポーリング通知先の登録の有無を確認し、ポーリング通知先の存在を検知すると(S110にてYES)、一定時間Wait処理を行う。その後、ジョブ管理部414は、Waitした時間をポーリング監視リスト(図18)にて管理している経過時間に加算する(S111)。
【0082】
ジョブ管理部414は、登録されたポーリング通知先それぞれに対して、前回のポーリング通知からポーリング間隔時間が経過したかを確認する(S112)。確認した結果、ポーリング間隔に達していない場合(S112にてNO)、ジョブ管理部414は、再度一定時間Wait処理を行う(S111)。経過時間が登録されたポーリング間隔に達している場合(S112にてYES)、ジョブ管理部414は、経過時間を“0”にリセットする(S113)。そして、ジョブ管理部414は、ポーリング通知先の登録時に指定された送信情報を取得して、ポーリングリクエスト(図16)を通知先に対して送信する(S114)。ここでのポーリング通知先の登録時に指定された送信情報とは、ポーリング監視リスト(図18)に示す通知内容が該当する。
【0083】
そして、ジョブ管理部414は、ポーリングリクエストに応答してポーリング通知先から送信されたレスポンスデータ(図17)を受信する(S115)。ジョブ管理部414は、受信したポーリングデータに、ポーリングの終了が指示されているかどうかを判断する(S116)。ここでは、上述したようにポーリングレスポンス(図17)に含まれるEndPolling要素にて指定された値に基づいて判断する。ポーリングの終了が指示された場合(S116にてYES)、ジョブ管理部414は、ポーリング監視リストから当該ポーリング通知先に対応する情報の削除を行い(S117)、S110に戻る。ポーリングの終了が指定されていない場合(S116にてNO)、再度S111に移行し、ジョブ管理部414はポーリング処理の継続を行う。
【0084】
[ポーリング受信処理]
図9、はプリントサーバ100におけるROM204に格納されたプログラムに従ってCPU202が動作する処理であり、Webサービス303のポーリング受信処理部400のフローチャートである。本処理は、図5に示すプリンタ102からのポーリング通知(F111、F115)に起因して実行される。
【0085】
プリントサーバ100が有するWebサービス303のポーリング受信処理部400は、プリンタ102からポーリングを受信すると、プリンタリスト(図11)からポーリングが送信されたプリンタを特定する(S200)。そして、ポーリング受信処理部400は、該当プリンタのポーリング受信時刻を現在時刻で更新する(S201)。このとき、該当プリンタのポーリング受信時刻を現在時刻で更新する理由は、ポーリング間隔時間で正しくポーリング送信が行われているかを確認するためである。
【0086】
次に、ポーリング受信処理部400は、印刷ジョブリスト(図12)からポーリング通知を行ったプリンタに依頼しているジョブを確認し、その一覧のジョブと、ポーリング通知で受信したジョブ一覧と一致しているかどうかを確認する(S202)。
【0087】
ここで、プリントサーバ100の印刷ジョブリストと、ポーリングで受信したジョブ一覧とが一致しない場合(S202にてNO)、プリンタ102からポーリングで通知された情報を優先する。具体的には、ポーリング受信処理部400は、プリントサーバ100側の印刷ジョブリストに登録されているが、プリンタ102から処理中と通知されなかったジョブは、印刷ジョブリストから削除する(S204)。そして、ポーリング受信処理部400は、印刷履歴(図13)に印刷結果が「エラー」の印刷ジョブとして登録する(S205)。
【0088】
次に、ポーリング受信処理部400は、ポーリング通知にて受信した一覧にジョブが存在したかどうかを確認する(S203)。一覧にプリンタ102でポーリング通知を継続するジョブが存在する場合(S203にてYES)、プリントサーバ100はポーリングによる印刷ジョブの監視を継続する。したがって、ポーリング受信処理部400は、ポーリング終了指示(EndPolling要素)を“false”に設定したポーリングレスポンスデータ(図17)を作成する(S208)。このとき、プリンタ102はポーリングデスポンスデータを受信することにより、正常にポーリングがプリントサーバ100に到達していることを確認することができる。
【0089】
プリンタ102からのポーリングにて受信した一覧にジョブが含まれていない場合(S203にてNO)、プリントサーバ100はポーリングが不要となる。そのため、ポーリング受信処理部400は、ポーリング終了指示(EndPolling要素)を“true”に設定したポーリングレスポンスデータを作成する(S206)。その後、ポーリング受信処理部400は、プリンタリスト(図11)のポーリング受信時間とポーリング間隔情報を消去する(S207)。そしてポーリング受信処理部400は、作成したポーリングレスポンスデータをプリンタ102へ送信する(S209)。
【0090】
[ポーリング監視処理]
図10は、プリントサーバ100におけるROM204に格納されたプログラムに従って、CPU202が動作するプリンタ管理サービス306のプリンタ情報管理部403のプリンタポーリング監視フローチャートである。本処理は、図5のF108にて、プリンタから情報を受信したのち、ポーリング通知を継続的に監視する際に実行される。
【0091】
ポーリング監視は、定期的にプリンタリスト(図11)に登録されたポーリング実行中のプリンタから定期的にポーリングが送信されているかどうかを監視して、ポーリングが途絶えた場合に、ポーリングが途絶えたプリンタの印刷中ジョブを終了させるものである。
【0092】
プリンタ情報管理部403は、プリンタリスト(図11)に登録されたプリンタすべてに対して、ポーリングを実行しているプリンタのポーリング受信時刻にポーリング間隔時間を加算し、ポーリング予定時刻を算出する(S300)。
【0093】
プリンタ情報管理部403は、プリンタリストに登録されたプリンタ毎に、算出したポーリング受信予定時刻とプリントサーバ100の現在時刻とを比較する(S301)。比較の結果、ポーリング受信予定時刻が現在時刻に達していない場合(S301にてNO)、プリンタ情報管理部403は、特別な処理は行わない。そして、プリンタ情報管理部403は、全てのプリンタに対して時刻の確認をしたかどうかの判断を行う(S305)。未確認のプリンタが有る場合には(S305にてNO)、S301に戻り、プリンタ情報管理部403は未確認のプリンタに対して時刻の確認を行う。
【0094】
S301における比較の結果、プリンタのポーリング予定時刻が現在時刻に達していた場合(S301にてYES)、プリンタ情報管理部403は、着目プリンタに対する印刷ジョブが印刷ジョブリスト(図11)に存在するかどうかを確認する(S302)。印刷ジョブが存在する場合(S304にてYES)、プリンタ情報管理部403は、着目プリンタに対して発行した印刷ジョブを印刷ジョブリストから削除する(S303)。そして、プリンタ情報管理部403は、削除した印刷ジョブを印刷履歴(図13)に登録し、その印刷結果を「不明」として登録する(S304)。
【0095】
印刷ジョブが印刷ジョブリストに存在しない場合(S304にてNO)、S305へ進む。S305にて全てのプリンタについて確認が終了したら(S305にてYES)、プリンタ情報管理部403は、一定時間Wait処理を行う(S306)。Waitから復帰すると、プリンタ情報管理部403は、S300へ戻り、再度プリンタリストに登録されたプリンタのポーリング受信予定時間の算出処理を行う。
【0096】
なお、図8のS115において、プリンタはポーリング通知の応答をプリントサーバから受信しているが、何らかの理由により、応答が受信できなかった場合には、所定回数に渡ってポーリング通知を再送するような構成としても構わない。また、複数回数送信してもポーリングレスポンスを受信できない場合には当該通知先に対するポーリング通知を終了するようにしても構わない。この場合には、プリンタは、図18に示すポーリング監視リストから対象となる通知先を削除することとなる。
【0097】
また、図10のS302において、プリントサーバは、ポーリング受信予定時刻にポーリング通知が受信できなかった場合に、1回のみの判定で印刷ジョブを印刷ジョブリストから削除しているが、これに限定するものではない。例えば、ポーリング受信予定時刻に受信できなかったプリンタの監視を継続し、所定の経過時間(例えば、次のポーリング受信予定時刻)までにポーリング通知を受信できない場合にジョブを削除する構成としてもよい。また、プリントサーバは、ポーリング通知を受信できなかった回数をカウントし、所定回数以上(所定間隔)にわたってポーリング通知を受信できない場合に当該印刷ジョブを印刷ジョブリストから削除するようにしても構わない。
【0098】
なお、S303においてリストから削除した後にプリンタからポーリング通知が届いた場合には、プリントサーバは当該ポーリング通知を無視するようにしても構わない。もしくは、印刷ジョブリストに登録されていない印刷ジョブに対するポーリング通知が届いた場合には、例えばエラーとしてその旨を印刷履歴(図13)に追加するように更新しても構わない。
【0099】
以上により、プリントサーバは、依頼した印刷ジョブの処理状況が監視できなくなった場合でも、無駄な監視を継続し続けることが無くなり、プリンタとの印刷ジョブの管理状況の同期をとることができる。
【0100】
[登録されたイベントの削除処理]
次に、本実施形態に係るJAVAスクリプトを利用したプルプリント方式における印刷における課題の解決手段について述べる。ここでは、プリンタに登録されたイベント通知(本実施形態では、印刷ジョブの終了通知)に対する登録の確実な削除を行うためのイベント削除処理について説明する。図5のF104ではクライアント端末101がプリンタ102に対して、JAVAスクリプトに従い、イベント登録指示を行っている。ここで、プリントサーバ100がプリンタ102に対して、イベントの削除指示を行わない限り、プリンタ102はイベント通知の実行を継続してしまう。つまり、F104にて登録された終了通知を行うイベントを保持し続けてしまう。しかし、例えば、クライアント端末101のWebブラウザ301が閉じられた場合などは、プリントサーバ100はクライアント端末101を介して、プリンタ102に対してイベントの終了指示を送信できない。その結果、プリンタ102にて登録したイベントの削除ができず、印刷ジョブの終了通知を継続してしまう。
【0101】
上記課題を解決するための処理を、図19を用いて説明する。図19はプリントサーバ100におけるROM204に格納されたプログラムに従ってCPU202が動作する処理であり、プリントサーバ100が有するWebサービス303の印刷イベント受信部408がイベントを受信した場合の処理フローチャートである。本処理は、図5のジョブの終了通知(F113)を受信した際に実行される。
【0102】
印刷イベント受信部408は、プリンタ102からジョブ終了イベント通知を受信する(S400)。そして、印刷イベント受信部408は、印刷ジョブリスト(図12)からジョブ終了イベント通知にて通知された印刷ジョブを削除し、印刷履歴(図13)にその印刷ジョブを登録する(S401)。その後、印刷イベント受信部408は、印刷ジョブリスト(図12)に、ジョブ終了イベント通知を送信したプリンタのジョブが、他に存在するかどうかを確認する(S402)。確認の結果、ジョブ終了イベント通知を送信したプリンタのジョブが存在する場合(S402にてYES)、印刷イベント受信部408は、イベント受信応答をプリンタ102へ送信する。確認の結果、イベントを送信したプリンタのジョブが存在しない場合(S402にてNO)、印刷イベント受信部408は、イベント終了指示を含む応答(イベント終了応答)をプリンタ102へ送信する(S403)。
【0103】
一般的に、イベント通知プロトコル(Web Services Eventing(WS−Eventing)など)では、イベント通知に対してその応答の中で当該イベント通知を終了させる仕組みは存在しない。そのような場合は、例えば、イベント通知を終了させるための応答として、イベント受信エラーを用いることができる。プリントサーバは、イベントに対してその通知を終了させたい場合、イベント受信エラーを応答することで特許文献1を実装したイベントを送信した装置はイベントを削除することができる。なお、イベント受信エラーとは、例えばHTTPのエラーステータスコード(404)などを用いても構わない。
【0104】
以上により、プリンタは、登録されたイベントの実行を無駄に継続し続けることが無くなる。
【0105】
以上により、プリントサーバからプリンタに対して直接通信ができない環境下におけるプルプリントシステムにおいて、プリントサーバとプリンタとの間における印刷ジョブ等に関する管理の不整合をなくし、無駄な管理や処理をなくすことができる。
【0106】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、プルプリントシステム、印刷ジョブ管理方法、プリントサーバおよびその制御方法、並びにプログラムに関する。特にプルプリントシステムにおいて、印刷サーバとプリンタとの間の情報の同期を行う技術に関する。
【背景技術】
【0002】
近年、クラウドサービスとしてインターネット上にサービスを公開することによりビジネス展開がされてきている。プリントサーバもインターネット上のプリントサービスとして機能を提供することが求められてきている。このような背景から、プリントサーバからプリンタがインターネット越しに印刷データを取得し、プルプリントを行うようなクラウドプルプリントシステムが求められている。
【0003】
インターネット上のプリントサーバを利用してプル型のプリントを行う技術として、JAVAスクリプト(JavaScript:登録商標)を利用したプルプリント方式が存在する。JAVAスクリプトを利用したプルプリント方式とは、プリントサーバが印刷を行うプリンタに対して依頼したいコマンドを送付するJAVAスクリプトを生成し、Webブラウザに送信する。JAVAスクリプトを受信したWebブラウザは、受信したJAVAスクリプトを実行すると、JAVAスクリプトにて指定されたプリンタへのプルプリントのリクエストを送信することで、プリンタに対して印刷を依頼する方式である。このとき、印刷データは、URL等により指定される。なお、指定されたURLから印刷データを取得して印刷を行うプルプリント技術の説明は非特許文献1に記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007−257481号公報
【非特許文献】
【0005】
【非特許文献1】“Print Service Definition Version 1.0 For Web Services on Devices”、[online]、2007年1月29日、Microsoft、[平成23年6月22日検索]、インターネット<URL:http://msdn.microsoft.com/ja-jp/windows/hardware/gg463146>
【発明の概要】
【発明が解決しようとする課題】
【0006】
イントラネット内にプリントサーバとプリンタが存在する印刷システムでは、プリントサーバから直接プリンタにネットワーク通信を行うことで、依頼した印刷ジョブの状況確認やプリンタで発生したイベントの通知先の登録・削除依頼を行うことができた。
【0007】
しかし、クラウドサービスのようにインターネット上に展開するプリントサーバからは、プリンタとの間にファイアウォールが配置され、直接プリンタに対してネットワークでアクセスすることができない。そこで、JAVAスクリプトを利用したプルプリント方式では、クラウドサービスを応用してサービス提供するプリントサーバがJAVAスクリプトに印刷要求だけではなく、ジョブ終了通知イベントを送信するコマンドを含める方法がある。プリンタは、ジョブ終了通知イベントを送信するプリントサーバのアドレスをイベント通知先としてメモリ領域に保持しておき、ジョブの終了通知をプリントサーバに送信することで印刷ジョブの状況をプリントサーバに通知することを実現している。
【0008】
しかしながら、イベントによるジョブ終了通知だけではプリントサーバでジョブの状況が把握できない場合が発生してしまう場合がある。例えば、ジョブ終了イベントは、印刷ジョブが完了した場合にしか通知されない。ここで、イベントが登録された状況でジョブが完了していないのにプリンタが再起動されてしまうと、揮発メモリに保持されたプリントサーバへのイベント通知がクリアされてしまう。その結果、再起動後のプリンタは、プリントサーバに対して情報を送信することができない。このような場合、プリントサーバはプリンタに依頼したジョブの終了通知が送信されない理由がプリンタでジョブが完了していないのか、再起動されたなどの要因により、イベント送信ができない状況なのか判断することができない。その結果、プリントサーバは、印刷を依頼したプリンタにおける依頼中の印刷ジョブの状況を把握することができないため、当該印刷ジョブを管理し続けてしまう。
【0009】
また、別の課題も存在する。プリンタに対してイベント登録を行った場合、イベント通知が不要になるとプリンタに対してイベント削除依頼を行うことで、プリンタに登録されたイベント情報を削除する必要がある。しかし、上述したように、クラウドサービスのようなインターネット上に展開するプリントサーバからは、ファイアウォール越しに存在するプリンタに対して、直接プリンタに対してイベントの削除依頼を行うことができない。そのため、JAVAスクリプトを利用したプルプリント方式では印刷時の処理を応用し、イベント削除依頼も印刷者のWebブラウザを介してプリンタに通知することでクラウド上のプリントサービスからプリンタに対してイベント削除依頼を行うことが考えられる。
【0010】
しかし、このイベント削除依頼の手法には課題が存在する。印刷を行う場合、印刷要求を行うクライアントがWebブラウザを用いてプリントサーバに対して接続を行うことで、印刷要求を送信することが可能である。しかし、印刷要求を送信したクライアントが印刷完了後に、再度Webブラウザを用いてプリントサーバに接続することが保障されない。
【0011】
つまり、クライアントが印刷要求だけ行い、プリントサーバとの接続を切断してしまうと、プリントサーバは、クライアントを介したプリンタへの依頼ができないため、プリンタにおけるイベント通知先の削除を行うことができない。プリンタに登録されたイベントの削除が行われないと、プリンタは登録されたイベント送信先に対して、イベントの送信をし続けたり、不要なイベント送信先情報を保持し続けてしまう。その結果、プリンタのイベント登録数が上限に達してしまい、新規にほかの印刷者がプリンタに対してイベント登録を行うことができなくなる。
【0012】
このイベントを不適切な宛先に対して送信し続けてしまう課題を解決するために、特許文献1ではイベント送信を行った結果、エラーが返信された場合には、印刷デバイスがそのイベント送信先を宛先から削除するという技術である。しかし、イベント送信先が成功を応答した場合は削除されないため、同一宛先に対する印刷デバイスによるイベントの複数回にわたる配信は継続される。よって、イベントに対するエラーが発生しない場合は、イベント通知先が印刷デバイスにて保持され続けてしまう。
【課題を解決するための手段】
【0013】
上記課題を解決するために、本願発明は以下の構成を有する。すなわち、内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムであって、前記プリントサーバは、前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段と、前記プリンタから前記通知を受信する受信手段と、前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段とを有し、前記プリンタは、前記クライアント端末が前記プログラムを実行することによる、印刷ジョブへの処理および印刷ジョブの処理状況に関する通知の実行の指示を受け付ける受付手段と、前記受付手段にて受け付けた指示に従って、指定された前記プリントサーバの宛先に対して、一定時間ごとに前記通知を行う通知手段とを有し、前記プリントサーバの監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了する。
【発明の効果】
【0014】
プリントサーバからプリンタに対して直接通信ができない環境下におけるプルプリントシステムにおいて、プリントサーバとプリンタとの間における印刷ジョブ等に関する管理対象の不整合や無駄な処理をなくすことができる。
【図面の簡単な説明】
【0015】
【図1】印刷システム全体構成図。
【図2】印刷システムハードウェア構成図。
【図3】印刷システムのサービス構成図。
【図4】印刷システムソフトウェア構成図。
【図5】印刷システムシーケンス図。
【図6】プリントサーバにおける印刷要求受信フローチャート。
【図7】プリンタにおけるポーリング登録フローチャート。
【図8】プリンタにおけるポーリング処理フローチャート。
【図9】プリントサーバにおけるポーリング受信フローチャート。
【図10】プリントサーバにおけるポーリング管理フローチャート。
【図11】プリントサーバで管理するプリンタリストの構成例を示す図。
【図12】プリントサーバで管理する印刷ジョブリストの構成例を示す図。
【図13】プリントサーバで管理する印刷履歴の構成例を示す図。
【図14】ポーリング登録リクエストの記述例を示す図。
【図15】ポーリング登録レスポンスの記述例を示す図。
【図16】ポーリングリクエストの記述例を示す図。
【図17】ポーリングレスポンスの記述例を示す図。
【図18】プリンタで管理するポーリングリストの構成例を示す図。
【図19】プリントサーバにおけるイベント受信処理フローチャート。
【発明を実施するための形態】
【0016】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【0017】
[システム構成]
図1は、本実施形態に係る印刷システムの全体構成を示す図である。図1において、クライアント端末101、プリントサーバ100、プリンタ102は、ネットワーク104、105を介して接続されている。ルータ103は外部ネットワークであるネットワーク104と内部ネットワークである105を接続するものである。なお、図1には不図示であるが、ネットワーク104とネットワーク105との間にはファイアウォールが配置され、ネットワーク間の通信はセキュリティ等の観点から制限されている。本実施形態においては、別途示した場合を除いて、ネットワーク105に存在する機器に対し、ネットワーク104に位置する各種機器を起因として、接続を行うことはできないものとする。ネットワーク104の例として、インターネットが挙げられ、またネットワーク105の例として、LAN(Local Area Network)が挙げられる。
【0018】
クライアント端末101は、例えば、デスクトップパソコン、ノートパソコン、モバイルパソコン、PDA(パーソナルデータアシスタント)等が該当するが、プログラムの実行環境が内蔵された携帯電話であってもよい。クライアント端末101では、本実施形態にて用いられるWebブラウザ(不図示)のプログラムを実行する環境が内蔵されている。
【0019】
クライアント端末101からプリントサーバ100上の文書をプリンタ102で印刷を行う場合、プリントサーバ100は、クライアント端末101のWebブラウザから送信された印刷リクエストを受信する。
【0020】
プリントサーバ100は、印刷リクエストを実現するためのJAVAスクリプトを作成し、クライアント端末101のWebブラウザに送信する。クライアント端末101のWebブラウザがJAVAスクリプトを受信し、そのJAVAスクリプトを実行すると印刷を行うプリンタに対してプルプリント要求が送信される。プリンタ102は、クライアント端末101から受信したプルプリント要求に従ってプリントサーバ100から印刷する文書データを取得し、印刷を行う。なお、本願発明においては、クライアント端末101が有するWebブラウザが実行するスクリプト言語として、JAVAスクリプトを用いているがこれに限定するものではない。例えば、Webブラウザが実行可能なスクリプト言語であれば、他の言語を用いて実現しても構わない。
【0021】
[ハードウェア構成]
図2は、本実施形態に係る印刷システムのクライアント端末101、プリントサーバ100、およびプリンタ102のハードウェア構成図である。なお、本実施形態において、プリントサーバ100とクライアント端末101の構成は同じものとし、ここではクライアント端末101を例にとって説明する。
【0022】
まず、クライアント端末101の構成について説明する。図2において、CPU202は装置全体の制御を行う。また、CPU202は、ハードディスク(HDD)205等の記憶手段に格納されているアプリケーションプログラム、OS等を実行し、プログラムの実行に必要な情報、ファイル等を一時的にRAM203等に格納する制御を行う。ROM204は、記憶手段として機能し、内部には、基本I/Oプログラム等のプログラム、印刷処理の際に使用する印刷データ、プリンタ情報等の各種データを記憶する。RAM203は、一時記憶手段として機能し、CPU202の主メモリ、ワークエリア等として機能する。HDD205は、外部記憶手段の一つであり、大容量メモリとして機能する。また、HDD205は、Webブラウザ等のアプリケーションプログラム、プリントサーバプログラム、OS、関連プログラム等を格納している。
【0023】
ディスプレイ206は、表示手段であり、キーボード207から入力したコマンドや、プリンタのステータス等を表示する。外部装置I/F208は、プリンタ、USB機器、周辺機器を接続するためのI/Fである。キーボード207は、ユーザが指示を入力するための指示入力手段である。システムバス201は、印刷システムのプリントサーバ内におけるデータの流れを司る。ネットワークインタフェースカード(NIC)219は、NIC209、各種ネットワークを介して外部装置とのデータのやり取りを行う。なお、上記コンピュータの構成はその一例であり、図2の構成例に限定されるものではない。例えば、データやプログラムの格納先は、その特徴に応じてROM、RAM、HDDなどで変更することも可能である。
【0024】
次にプリンタ102の構成例について説明する。コントローラ230は、プリンタ102の制御系を司る。CPU210は、装置全体の制御を行い、システムバス218に接続される各種デバイスとのアクセスを統括的に制御する。この制御は、ROM212に記憶された制御プログラム等、あるいはディスクコントローラ(DKC216)を介して接続された外部メモリ223に記憶された制御プログラムやリソースデータ(資源情報)等に基づいて行われる。RAM211は、CPU210の主メモリ、ワークエリア等として機能し、増設ポート(不図示)に接続されるオプションRAMによりメモリ容量を拡張することができるように構成されている。HDD213は、大容量メモリとして機能する外部記憶手段であり、プルプリントアプリケーションプログラム及び関係プログラム等を格納している。
【0025】
操作パネル(操作部)221は、プルプリントの操作を行うユーザインタフェースやプルプリント切り替えボタンが配置される。また、操作パネル221には、プリンタ102の動作モード等の設定やプリンタ102の動作状況の表示、複写指定等の操作を行うためのボタンおよび液晶パネルやLED214等の表示部も配置される。ネットワークインタフェースカード(NIC)219は、各種ネットワークを介して外部装置とのデータのやり取りを行う。
【0026】
なお、図2で示したプリントエンジン220は、既知の印刷技術を利用するものであり、好適な実施系として例えば電子写真方式(レーザービーム方式)やインクジェット方式、昇華方(熱転写)方式等が挙げられる。しかし、これに限定するものではない。ラスタコントローラ215は、PDL・PDF形式である印刷データを画像データに変換するコントローラである。機器I/F217は、USB等で接続可能な外部機器との接続I/Fである。また、図2には不図示であるが、各装置内には、時刻を取得する部位があり、各処理部からの要求に応じて、要求を受信した時点での時刻を通知できるものとする。
【0027】
[モジュール構成]
図3は、本実施形態に係る印刷システムにて提供されるモジュール間の関係を示す構成図である。
【0028】
プリントサーバ100は、プリンタ管理サービス306を提供する。プリンタ管理サービス306は、印刷を行うプリンタそれぞれの情報を保持するサービスである。プリンタ管理サービス306は、図11に示すようなプリンタリストを保有する。プリンタリストには、プリントサーバ100がプリンタ102を一意に識別するためのプリンタIDやプリンタ名情報、プリンタのIPアドレス情報が含まれる。さらに、プリンタリストには、それらに加え、プリンタ102に依頼したポーリング通知の状況としてポーリングを受信した時間とポーリング間隔時間とが登録されている。なお、これに限定するものではなく、他のプリンタに情報を含んでもよい。例えば、プリンタIPアドレスは、グローバルアドレスとプライベートアドレスとをそれぞれ有してもよいし、どのネットワークに含まれるかを示す情報を更に有してもよい。
【0029】
プリンタIDは、プリントサーバ内部でプリンタ102を一意に区別するためのID(識別子)である。本実施形態において、ポーリング通知とは、プリンタ102が一定時間間隔でプリントサーバ100に対して印刷ジョブの処理状況を送信する通信を意味する。本実施形態では、このポーリング通知でプリンタ102は、プリントサーバ100に対して処理中のジョブ一覧(処理中ジョブ一覧)を含むデータ(図16)をプリントサーバ100に送信する。ここで送信されるデータの具体的な例は、図16を用いて後述する。
【0030】
プリントサーバ100は、ポーリング通知の状況として、図11に示すように、各プリンタから前回受信したポーリング時刻(ポーリング受信時間)を保持する。なお、最初のポーリング時刻は、プリンタ102にてポーリング登録が正常に完了した時刻となる。ポーリング間隔は、プリンタ102から指定されたポーリング通知の間隔時間であり、定期的にポーリング通知が行われる際には、この情報にて指定された間隔でポーリングが行われる。
【0031】
また、プリンタリストに登録された情報に基づいて、プリンタ102からの定期ポーリングの有無の確認も行う。例えば、図11のプリンタID“P003”に示すように、ポーリング通知が行われていないプリンタには、ポーリング受信時間とポーリング間隔時間の情報は設定されていないものとする。
【0032】
印刷ジョブ管理サービス305は、ユーザから要望された印刷ジョブを管理するサービスであり、文書データ等を印刷データとしてストレージ307に保持し、管理する。また、印刷ジョブ管理サービス305は、図12に示すような印刷ジョブリストを保有し、プリンタ102に対して依頼を行っている印刷ジョブを管理する。
【0033】
クライアントジョブIDはプリントサーバ内部で印刷ジョブを一意に区別するためのID(識別子)である。プリンタIDは、図11に示すプリンタリストにて示されるプリンタIDに対応しており、どのプリンタに対して印刷ジョブの実行を依頼したかを一意に区別するための情報である。プリンタジョブIDは、印刷ジョブの実行を依頼したプリンタ側で当該印刷ジョブに対して発行されたジョブIDである。プリントサーバ100が、プリンタ102と印刷ジョブの情報をやり取りする場合、プリンタ102が発行したプリンタジョブIDを用いて印刷ジョブを識別する。文書IDとは、プリントサーバ100内のストレージ307に保持された文書を一意に識別する情報であり、印刷している文書を区別するための情報である。
【0034】
ストレージ307は、プリントサーバ100の情報処理装置に内蔵するHDDまたは、外部接続しているHDD、または、ネットワークストレージ等の記憶装置である。このストレージ307には、印刷ジョブにて印刷を指定される文書データが保持されている。ストレージは例えば、HDD205等にて実現される。
【0035】
Webアプリケーション302は、クライアント端末101上に動作するWebブラウザ301で表示可能なWebページを作成する。そして、Webアプリケーション302は、クライアント端末101のWebブラウザ301からのリクエストに応答し、作成したWebページを返信する。また、Webアプリケーション302は、クライアント端末101のWebブラウザ301がプリンタに要求を送信するためのJAVAスクリプトを作成し、Webブラウザ301へ送信する。
【0036】
Webサービス303は、プリンタ102との通信を行うモジュールである。本実施形態において、プリンタ102との通信とは、プリンタ102からの印刷データ取得要求、ポーリング通知、およびイベント通知が挙げられる。Webサービス303は、プリンタ102から送信されたこれらの要求を受信すると、それぞれの要求に従った処理を行う。そして、Webサービス303は、プリンタ102に対して処理結果としての応答を返す。
【0037】
なお、印刷ジョブ管理サービス305、Webアプリケーション302、Webサービス303はそれぞれ独立したプログラムである。なお、本実施形態では、1のプリントサーバ100にてこれらのモジュールによる機能を実現する構成としたが、別々の情報処理装置に配置することも可能である。つまり、これらのモジュールは、それぞれネットワークに繋がった情報処理装置に配置され、それぞれのモジュール間で通信を行う。
【0038】
プリンタ102のプルプリントアプリケーション304は、プリンタ102でプルプリントを実行するアプリケーションである。プルプリントアプリケーション304は、印刷ジョブの実行要求に伴って、印刷データのURLを通知されると、そのURLから印刷データを取得して印刷を行うプルプリント機能を備える。さらには、プルプリントアプリケーション304は、登録されたポーリング通知先に対して一定時間間隔で処理中のジョブ一覧を送信するポーリング機能と、プリンタで印刷するジョブが完了した時にイベント通知を行う機能も備える。このときの通知先は、プリントサーバ100となる。
【0039】
クライアント端末101のWebブラウザ301は、プリントサーバ100から送信されたJAVAスクリプトが実行可能なWebブラウザである。
【0040】
[ソフトウェア構成]
図4は、本実施形態に係る印刷システムにおける、図3に示した各モジュールの更に詳細なソフトウェア構成図である。まず、図4(A)を用いて、プリントサーバ100の構成について説明する。プリントサーバ100が有する印刷ジョブ管理サービス305の印刷データ管理部401は、印刷データ(文書データ)の管理を行う。ここでの印刷データの管理とは、印刷データ管理部401は、Webサービス303から印刷データの取得要求を受け取ると、ストレージ307から指定の印刷データを取得し、Webサービス303に渡すことである。また、印刷データ管理部401は、必要に応じて、印刷データの追加、削除を行う。
【0041】
印刷ジョブ情報管理部402は、クライアントからクライアント端末101を介して要求された印刷ジョブ情報や印刷履歴情報を管理する。ここで管理される印刷ジョブ情報は、図12に示す印刷ジョブリストであり、印刷ジョブを一意に識別するID情報や出力するプリンタを特定する情報で構成される。また、印刷履歴情報とは、図13に示す印刷履歴情報であり、ジョブを識別するID情報や印刷結果情報が存在する。この印刷履歴情報に含まれる印刷結果情報は、そのステータスとして本実施形態では、印刷ジョブの「正常終了」、「エラー(終了)」、「不明」を含むものとする。
【0042】
ここで、「エラー(終了)」ステータスは、プリンタに指示した印刷ジョブであるが、その印刷ジョブが監視できなくなった状態の印刷ジョブに対して設定される。つまり、正常終了の通知を受けないまま、プリンタ側での実行が終了してしまっている印刷ジョブに対して設定される。「不明」ステータスは、ポーリング通知を受信できなくなったプリンタに対して実行を指示した印刷ジョブに対して設定される。ポーリング通知に基づいた履歴情報の設定に関しては、各処理フローを用いて後述する。なお、印刷ジョブリストや印刷履歴情報の構成は図12および図13に示すものに限定するものではなく、更なる情報が含まれていても構わない。
【0043】
プリンタ管理サービス306のプリンタ情報管理部403では、図11に示すプリンタリストを管理する。また、プリンタ情報管理部403は、プリンタリストに登録されたプリンタのポーリング状況を定期的に確認し、プリンタにて印刷中のジョブに問題が発生していないか確認する。ここでの確認とは、例えば、ポーリング受信時間からポーリング間隔の時間分が経過していないかなどを確認する。
【0044】
Webアプリケーション302のリクエスト受付部406は、クライアント端末101のWebブラウザ301から、印刷リクエスト等を受けるモジュールである。セッション管理部404は、Webブラウザ301からのリクエストをセッションとして管理する。ページ生成部405は、Webブラウザ301からのリクエストに応じてWeb画面を作成し、生成したWeb画面をWebブラウザ301に返信する。ここで、Webブラウザ301に送信するのはWeb画面だけではなく、ページ生成部405はプリンタ102に送信するリクエストをJAVAスクリプトで生成してWebブラウザ301に返信する場合もある。
【0045】
Webサービス303のリクエスト受付部409は、プリンタ102のプルプリントアプリケーション304から印刷ジョブ取得要求や、印刷ジョブのステータス通知イベント、ポーリング通知イベントを受信するモジュールである。印刷ジョブ取得部407は、リクエスト受付部409が印刷ジョブ取得要求を受けると印刷ジョブ管理サービス305に印刷データ取得要求を行い、指定された印刷データを取得し、クライアント端末101に対して送信する。
【0046】
印刷イベント受信部408は、プリンタ102から印刷処理が完了したジョブのステータス情報を受信するモジュールである。印刷イベント受信部408は、プリンタ102からジョブに対する印刷処理の完了のイベントを受信すると、図12に示す印刷ジョブリストから当該ジョブを削除する。そして、印刷イベント受信部408は、当該ジョブを図13に示す印刷履歴情報に指定された最終ステータス情報(印刷結果)とともに登録する。
【0047】
ポーリング受信処理部400は、プリンタ102から定期的に送信される処理中ジョブ一覧情報から印刷ジョブ情報管理部402が保有する印刷ジョブリストの妥当性を判断するモジュールである。ポーリング受信処理部400は、受信した処理中ジョブ一覧と保持している印刷ジョブリスト(図12)の情報とを比較し、処理中とされるジョブの間に差異がある場合には、差異が発生しないように同期をとる。ここでの処理中であるジョブの同期の取り方については、後述する。
【0048】
次に、図4(b)を用いて、プリンタ102の構成について述べる。プルプリントアプリケーション304のWebサービス受付部410は、クライアント端末101のWebブラウザ301から、印刷リクエストやイベント登録、ポーリング登録等を受ける。Webサービス送信部411は、プリントサーバ100のWebサービス303に対して、印刷ジョブ取得リクエストや、印刷ジョブの状態変更イベント通知や定期的に処理中のジョブ一覧送信を行うポーリング通知等を行う。
【0049】
印刷ジョブ取得部412は、プルプリント要求で受信したURLから、Webサービス送信部411を介してプリントサーバ100のWebサービス303から印刷データを取得する。そして、印刷ジョブ取得部412は、取得した印刷データを印刷ジョブ投入部416に送る。印刷ジョブ投入部416は、コントローラ230に印刷データを送信する。その結果、コントローラ230が受信した印刷データを用いて印刷処理を実行する。
【0050】
印刷制御部415は、印刷ジョブのステータスをコントローラ230から受け取り、ジョブ管理部414に通知する。ジョブ管理部414は、通知された印刷ジョブのステータスがイベント送信条件に合致するかどうかを判断する。そして、条件に合致する場合にはジョブ管理部414は、Webサービス送信部411を介してイベント通知を行う。
【0051】
またジョブ管理部414は、クライアント端末101からポーリング通知指示を受けた場合、ポーリング通知指示にて指定された宛先に対して定期的に処理中のジョブリストを通知するポーリング通知を行う。ジョブ管理部414は、ポーリング通知に関連して、図18に示すようなポーリング監視リストを備え、どの通知先に対してどのくらいの間隔でどのような内容を送信するかを管理する。ここで、通知内容に指定されたActiveJobIdsは、プリンタが処理中の印刷ジョブのうち、ポーリング通知の宛先にて管理されている印刷ジョブの情報を処理中ジョブ一覧として送信することを示す。この処理中ジョブ一覧には、プリントサーバ100側でジョブを識別できるように、例えば、図12に示すクライアントジョブID、プリンタジョブIDなどが含まれる。プルプリントコントローラ413は、プルプリントアプリケーション304全体の動作管理を行うものであり、各部への動作指示等は、このコントローラ経由で行う。
【0052】
[処理フロー]
次に、図5を用いて、本願発明に係るJAVAスクリプトを利用したプルプリント印刷方式について説明する。本願発明では、正確にプリンタで処理中のジョブ状況を把握するために、印刷要求時にジョブ完了イベントだけでなく、ポーリング要望を行う。以降、本実施形態の印刷のシーケンスを説明する。
【0053】
クライアント端末101は、プリントサーバ100のWebアプリケーション302にWebブラウザ301を用いて接続を行い、印刷を行う文書と、出力を行うプリンタとを指定して印刷の実行を指示する(F100)。なお、このとき印刷設定等を指定することも考えられるが、本願発明に直接関係ないため、説明を省略する。
【0054】
プリントサーバ100のWebアプリケーション302は、クライアント端末101から印刷リクエストを受信するとページ生成部405で、クライアント端末101が印刷を行うプリンタに対してリクエストを送信するためのJAVAスクリプトを生成する。ここで生成されるJAVAスクリプトには、クライアント端末101のWebブラウザ301がプリンタ102に対して以下の処理を要求するための記述が含まれる。
・定期的に、プリントサーバに対して処理中の印刷ジョブ一覧を通知させるポーリング指示(ポーリング通知の実施依頼)
・印刷ジョブのイベント登録指示(ジョブの終了通知の実施依頼)
・プルプリント指示(印刷指示(印刷データの取得要求の実施依頼を含む))
【0055】
プリントサーバ100は、作成したJAVAスクリプトを、クライアント端末101のWebブラウザ301に対して印刷リクエストの応答として送信する(F101)。
【0056】
クライアント端末101のWebブラウザ301は、プリントサーバ100から送信されたJAVAスクリプトを受信し、実行する。ここで受信したJAVAスクリプトには、上述した各種依頼を行うための処理が記述されている。Webブラウザ301がこの処理を順番に実行することでクライアント端末101とプリンタ102とが通信を行い、その結果をクライアント端末101は受信する(F102〜F107)。
【0057】
クライアント端末101のWebブラウザ301が送信するプリンタ102へのポーリング指示のリクエスト(F102)は、例えば図14のようなリクエストである。図14の内容を説明する。まず、PollTo要素の配下のAddress要素にて宛先が指定されている。更に、この宛先に対して、Interval要素に指定された時間の間隔(ここでは秒で指定)でポーリング通知を実施する。このとき通知される情報としては、ClientId要素に指定されたクライアントのジョブに関して、Name要素で指定されたJOB情報(通知内容)をポーリングで通知することを示している。図14に示す例では、通知先“http://10.254.0.27:5357/70da246b-fea1-4ed3-b7ce-195c50ac07e1”に対して、60秒間隔で印刷指示者がCJ200である処理中ジョブ一覧(ActiveJobIds)を送信することを意味している。
【0058】
プリンタ102からクライアント端末101への、ポーリング指示に対する応答(F103)は、例えば図15のような応答となる。図15の内容を説明する。ここでは、プリンタ102によってポーリング指示が受け付けられたことを示している。ただし、Webブラウザ301により指示したポーリング間隔が“60(秒)”であるのに対して(図14のInterval要素)、プリンタ102からはその応答において、ポーリング間隔は“180(秒)”が指定されている(図15のInterval要素)。ポーリング間隔は、プリンタ102の設定や状況に応じてプリンタ側が主導で決定してもよい。プリンタ側が決定した情報については、クライアント端末101がプリントサーバ100に通知することとなる。
【0059】
クライアント端末101のWebブラウザ301は、プリンタ102に対してイベントの登録指示を行う(F104)。ここではWebブラウザ301は、プリンタ102が指示を受けた印刷ジョブの実行が完了した際に、プリントサーバ100に対して、その旨を通知するように指示する。そして、プリンタ102は、Webブラウザ301からの指示に対して、登録ができた場合に、その登録情報(イベントID)を、当該要求を受け付けた旨と共に通知する(F105)。
【0060】
そして、クライアント端末101のWebブラウザ301は、プリンタ102に対して、プルプリント要求を行う。プリンタ102は、受信したプルプリント要求に対して発行したジョブIDを、当該要求を受け付けた旨と共に通知する。
【0061】
クライアント端末101は、ポーリング指示の結果(F103)、イベント登録指示の結果(F105)、印刷指示の結果(F107)を受信すると、受信した処理結果とプリンタ102から通知されたID情報とをプリントサーバ100に送信する(F108)。なお、何らかの理由により、いずれかの指示が失敗した場合には、プリンタ102はプリントサーバ101にその旨を通知する。
【0062】
各指示の受付が正常に完了した後、プリンタ102は、印刷指示(F106)のプルプリント要求で指定されたURLから印刷データを取得し(F109、F110)、印刷処理を実行する。
【0063】
プリンタ102は、F103で指定したポーリング間隔時間毎にプリントサーバ100に対して、ポーリング通知として、処理中ジョブ一覧を定期的に通知する(F111)。例えば、F106にて要求されたプルプリントが完了していない状況でポーリング間隔時間が経過した場合、プリンタ102はプリントサーバ100に対して、F106で受信した処理中のジョブ情報を含めた情報を送信する(F108)。
【0064】
F106で要求を受け付けたプルプリントが完了後にポーリング間隔時間になると、処理中の印刷ジョブが存在しないため、プリントサーバ100に対して処理中のジョブ情報が存在しない通知を行う(F115)。
【0065】
プリンタ102からのポーリング通知(F111、F115)は、例えば図16に示すような構成のリクエストデータとなる。ここでは、処理中ジョブ一覧として、ActiveJobIds要素の配下に処理中のJobの数だけJobIdSet要素としてJob情報が記載される。図16に示す例の場合、プリンタジョブIDが“J300”、クライアントジョブIDが“CJ200”のジョブが存在することを通知している。この情報は、プリントサーバ100の印刷ジョブ管理サービス305が管理する印刷ジョブリスト(図12)のプリンタジョブID、クライアントジョブIDに対応する。もし、F115のように処理中のジョブが存在しない場合、JobIdSet情報が存在しないリクエストが送信されることとなる。
【0066】
プリントサーバ100はプリンタ102からポーリング通知を受信すると、プリンタ102に対してポーリングを継続させるかどうかを判断する。継続させる場合は、プリントサーバ100は、プリンタ102にポーリングの応答としてポーリング通知の継続指示を行い(F112)、終了させる場合は、プリンタ102にぽーちんぐ通知の終了指示を行う(F116)。
【0067】
プリンタ102のポーリングに対するレスポンスの通信(F112、F116)は例えば図17に示すような構成のレスポンスデータとなる。ポーリングレスポンスでは、前述のようにプリントサーバ100からプリンタ102に対してポーリングを継続するか否かの指示が含まれている。図17に示すように、EndPolling要素に“true”と設定されている場合はポーリング終了指示であり、“false”と設定されている場合にはポーリングは継続する指示である。
【0068】
[印刷要求の登録処理]
図6は、プリントサーバ100がクライアント端末101から印刷要求(F100)を受信した場合にROM204に格納されたプログラムに従って、CPU202が動作するWebアプリケーション302のフローチャートである。
【0069】
プリントサーバ100は、印刷要求を受信すると、クライアント端末101から指定されたジョブを出力するプリンタのプリンタIDと文書IDとを図12に示す印刷ジョブリストに登録する。そして、プリントサーバ100は、印刷要求を行ったクライアント端末101のクライアントジョブIDを取得する(S001)。
【0070】
次に、プリントサーバ100は、クライアント端末101がプリンタ102に対して行うリクエストが記述された、当該リクエストを発行させるためのJAVAスクリプトを作成する(S002)。このJAVAスクリプトには、クライアント端末がプリンタに対して実行させるための以下の処理が記載されている。
・プリントサーバへ処理中のジョブ一覧を定期的に通知するポーリング指示
・プリントサーバが指示したジョブの終了をプリントサーバへ通知する指示
・プリントサーバ上のデータをプルプリント(印刷)する指示
ここで記述された処理は、上述した図5に示すF102、F104、F106の指示にそれぞれ対応する。
【0071】
そして、プリントサーバ100は、作成したJAVAスクリプトを、クライアント端末101の印刷要求に対する応答として送信する(S003)。
【0072】
クライアント端末101は、プリントサーバ100から受信したJAVAスクリプトを実行し、その結果をプリントサーバ100のWebアプリケーション302に送信する。ここで送信されるJAVAスクリプトの実行結果には、プリンタ102へのポーリング指示、イベント登録指示、印刷要求処理の結果と、プリンタ102からクライアント端末101に対して送信されたID情報などが含まれている。
【0073】
プリントサーバ100のWebアプリケーション302は、クライアント端末101から送信された情報を受信すると(S004)、プリンタ102への各種リクエストが成功したか否かを判断する(S005)。リクエストが成功した場合(S005にてYES)、プリントサーバ100は、プリンタ102から受信したポーリング間隔時間をプリンタリスト(図11)に含まれるプリンタに対応付けて登録する。さらに、プリントサーバ100は、プリンタリスト(図11)のポーリング受信時間の項目に現在時刻を設定する(S006)。また、プリントサーバ100は、印刷ジョブリスト(図12)には、プリンタ102から受信したプリンタジョブIDとイベントIDとを該当ジョブに対応付けて登録を行う(S007)。そして、本処理フローを終了する。
【0074】
クライアント端末101からリクエストが失敗したと通知があった場合(S005にてNO)、プリントサーバ100は、印刷ジョブリストから該当ジョブの削除を行う(S008)。そして、プリントサーバ100は、削除したジョブの情報を図13に示す印刷履歴に登録して(S009)、処理を終了する。
【0075】
[ポーリング通知先の登録処理]
図7は、プリンタ102のROM212に格納されたプログラムに従ってCPU210が動作する処理であり、Webサービス受付部410がポーリング指示(F102)を受信した場合のフローチャートである。
【0076】
プリンタ102は、図14に示すようなポーリング指示を受信すると、ポーリングの通知先がポーリング監視リスト(図18)に既に登録済みであるかどうかを判断する(S100)。ポーリングの通知先がポーリング監視リストに登録済みである場合(S100にてYES)、プリンタ102は、ポーリング通知先の登録処理は行わず、ポーリング情報登録(S104)に進む。
【0077】
ポーリング通知先が未登録である場合(S100にてNO)、プリンタ102は、ポーリング通知先がポーリング監視リストに登録可能かを確認する。通知先の登録が可能な場合(S101にてYES)、プリンタ102は、ポーリング監視リストへのポーリング通知先の登録(S102)およびポーリング間隔の決定と登録(S103)を行う。もし、ポーリング通知先の登録数が上限に達しているなどの理由で登録できない場合(S101にてNO)、プリンタ102は、ポーリングの登録の要求者に対してポーリング登録のエラー通知を行う(S106)。そして、本処理フローを終了する。
【0078】
プリンタ102は、ポーリング通知先をポーリング監視リストに登録後、ポーリング通知情報の登録を行う(S104)。ここでのポーリング通知情報とは、ポーリング通知間隔と、前回、ポーリングを行ってからの経過時間を指す。本実施形態において、ポーリング送信を行うと、経過時間は“0”にリセットされ、その後経過した時間だけこの数字がカウントされていく。
【0079】
プリンタ102は、ポーリング通知情報を登録した後、ポーリング指示に対するポーリング登録応答として、登録が成功した旨の情報を応答として送信する(S105)。そして、本処理フローを終了する。
【0080】
[ポーリング処理]
図8は、プリンタ102のROM212に格納されたプログラムに従ってCPU210が動作する処理であり、プルプリントアプリケーション304のジョブ管理部414のポーリング処理を説明するフローチャートである。図5におけるF111やF115に対応する。
【0081】
プリンタ102が有するプルプリントアプリケーション304のジョブ管理部414は、ポーリング監視リストにおけるポーリング通知先の登録の有無を確認し、ポーリング通知先の存在を検知すると(S110にてYES)、一定時間Wait処理を行う。その後、ジョブ管理部414は、Waitした時間をポーリング監視リスト(図18)にて管理している経過時間に加算する(S111)。
【0082】
ジョブ管理部414は、登録されたポーリング通知先それぞれに対して、前回のポーリング通知からポーリング間隔時間が経過したかを確認する(S112)。確認した結果、ポーリング間隔に達していない場合(S112にてNO)、ジョブ管理部414は、再度一定時間Wait処理を行う(S111)。経過時間が登録されたポーリング間隔に達している場合(S112にてYES)、ジョブ管理部414は、経過時間を“0”にリセットする(S113)。そして、ジョブ管理部414は、ポーリング通知先の登録時に指定された送信情報を取得して、ポーリングリクエスト(図16)を通知先に対して送信する(S114)。ここでのポーリング通知先の登録時に指定された送信情報とは、ポーリング監視リスト(図18)に示す通知内容が該当する。
【0083】
そして、ジョブ管理部414は、ポーリングリクエストに応答してポーリング通知先から送信されたレスポンスデータ(図17)を受信する(S115)。ジョブ管理部414は、受信したポーリングデータに、ポーリングの終了が指示されているかどうかを判断する(S116)。ここでは、上述したようにポーリングレスポンス(図17)に含まれるEndPolling要素にて指定された値に基づいて判断する。ポーリングの終了が指示された場合(S116にてYES)、ジョブ管理部414は、ポーリング監視リストから当該ポーリング通知先に対応する情報の削除を行い(S117)、S110に戻る。ポーリングの終了が指定されていない場合(S116にてNO)、再度S111に移行し、ジョブ管理部414はポーリング処理の継続を行う。
【0084】
[ポーリング受信処理]
図9、はプリントサーバ100におけるROM204に格納されたプログラムに従ってCPU202が動作する処理であり、Webサービス303のポーリング受信処理部400のフローチャートである。本処理は、図5に示すプリンタ102からのポーリング通知(F111、F115)に起因して実行される。
【0085】
プリントサーバ100が有するWebサービス303のポーリング受信処理部400は、プリンタ102からポーリングを受信すると、プリンタリスト(図11)からポーリングが送信されたプリンタを特定する(S200)。そして、ポーリング受信処理部400は、該当プリンタのポーリング受信時刻を現在時刻で更新する(S201)。このとき、該当プリンタのポーリング受信時刻を現在時刻で更新する理由は、ポーリング間隔時間で正しくポーリング送信が行われているかを確認するためである。
【0086】
次に、ポーリング受信処理部400は、印刷ジョブリスト(図12)からポーリング通知を行ったプリンタに依頼しているジョブを確認し、その一覧のジョブと、ポーリング通知で受信したジョブ一覧と一致しているかどうかを確認する(S202)。
【0087】
ここで、プリントサーバ100の印刷ジョブリストと、ポーリングで受信したジョブ一覧とが一致しない場合(S202にてNO)、プリンタ102からポーリングで通知された情報を優先する。具体的には、ポーリング受信処理部400は、プリントサーバ100側の印刷ジョブリストに登録されているが、プリンタ102から処理中と通知されなかったジョブは、印刷ジョブリストから削除する(S204)。そして、ポーリング受信処理部400は、印刷履歴(図13)に印刷結果が「エラー」の印刷ジョブとして登録する(S205)。
【0088】
次に、ポーリング受信処理部400は、ポーリング通知にて受信した一覧にジョブが存在したかどうかを確認する(S203)。一覧にプリンタ102でポーリング通知を継続するジョブが存在する場合(S203にてYES)、プリントサーバ100はポーリングによる印刷ジョブの監視を継続する。したがって、ポーリング受信処理部400は、ポーリング終了指示(EndPolling要素)を“false”に設定したポーリングレスポンスデータ(図17)を作成する(S208)。このとき、プリンタ102はポーリングデスポンスデータを受信することにより、正常にポーリングがプリントサーバ100に到達していることを確認することができる。
【0089】
プリンタ102からのポーリングにて受信した一覧にジョブが含まれていない場合(S203にてNO)、プリントサーバ100はポーリングが不要となる。そのため、ポーリング受信処理部400は、ポーリング終了指示(EndPolling要素)を“true”に設定したポーリングレスポンスデータを作成する(S206)。その後、ポーリング受信処理部400は、プリンタリスト(図11)のポーリング受信時間とポーリング間隔情報を消去する(S207)。そしてポーリング受信処理部400は、作成したポーリングレスポンスデータをプリンタ102へ送信する(S209)。
【0090】
[ポーリング監視処理]
図10は、プリントサーバ100におけるROM204に格納されたプログラムに従って、CPU202が動作するプリンタ管理サービス306のプリンタ情報管理部403のプリンタポーリング監視フローチャートである。本処理は、図5のF108にて、プリンタから情報を受信したのち、ポーリング通知を継続的に監視する際に実行される。
【0091】
ポーリング監視は、定期的にプリンタリスト(図11)に登録されたポーリング実行中のプリンタから定期的にポーリングが送信されているかどうかを監視して、ポーリングが途絶えた場合に、ポーリングが途絶えたプリンタの印刷中ジョブを終了させるものである。
【0092】
プリンタ情報管理部403は、プリンタリスト(図11)に登録されたプリンタすべてに対して、ポーリングを実行しているプリンタのポーリング受信時刻にポーリング間隔時間を加算し、ポーリング予定時刻を算出する(S300)。
【0093】
プリンタ情報管理部403は、プリンタリストに登録されたプリンタ毎に、算出したポーリング受信予定時刻とプリントサーバ100の現在時刻とを比較する(S301)。比較の結果、ポーリング受信予定時刻が現在時刻に達していない場合(S301にてNO)、プリンタ情報管理部403は、特別な処理は行わない。そして、プリンタ情報管理部403は、全てのプリンタに対して時刻の確認をしたかどうかの判断を行う(S305)。未確認のプリンタが有る場合には(S305にてNO)、S301に戻り、プリンタ情報管理部403は未確認のプリンタに対して時刻の確認を行う。
【0094】
S301における比較の結果、プリンタのポーリング予定時刻が現在時刻に達していた場合(S301にてYES)、プリンタ情報管理部403は、着目プリンタに対する印刷ジョブが印刷ジョブリスト(図11)に存在するかどうかを確認する(S302)。印刷ジョブが存在する場合(S304にてYES)、プリンタ情報管理部403は、着目プリンタに対して発行した印刷ジョブを印刷ジョブリストから削除する(S303)。そして、プリンタ情報管理部403は、削除した印刷ジョブを印刷履歴(図13)に登録し、その印刷結果を「不明」として登録する(S304)。
【0095】
印刷ジョブが印刷ジョブリストに存在しない場合(S304にてNO)、S305へ進む。S305にて全てのプリンタについて確認が終了したら(S305にてYES)、プリンタ情報管理部403は、一定時間Wait処理を行う(S306)。Waitから復帰すると、プリンタ情報管理部403は、S300へ戻り、再度プリンタリストに登録されたプリンタのポーリング受信予定時間の算出処理を行う。
【0096】
なお、図8のS115において、プリンタはポーリング通知の応答をプリントサーバから受信しているが、何らかの理由により、応答が受信できなかった場合には、所定回数に渡ってポーリング通知を再送するような構成としても構わない。また、複数回数送信してもポーリングレスポンスを受信できない場合には当該通知先に対するポーリング通知を終了するようにしても構わない。この場合には、プリンタは、図18に示すポーリング監視リストから対象となる通知先を削除することとなる。
【0097】
また、図10のS302において、プリントサーバは、ポーリング受信予定時刻にポーリング通知が受信できなかった場合に、1回のみの判定で印刷ジョブを印刷ジョブリストから削除しているが、これに限定するものではない。例えば、ポーリング受信予定時刻に受信できなかったプリンタの監視を継続し、所定の経過時間(例えば、次のポーリング受信予定時刻)までにポーリング通知を受信できない場合にジョブを削除する構成としてもよい。また、プリントサーバは、ポーリング通知を受信できなかった回数をカウントし、所定回数以上(所定間隔)にわたってポーリング通知を受信できない場合に当該印刷ジョブを印刷ジョブリストから削除するようにしても構わない。
【0098】
なお、S303においてリストから削除した後にプリンタからポーリング通知が届いた場合には、プリントサーバは当該ポーリング通知を無視するようにしても構わない。もしくは、印刷ジョブリストに登録されていない印刷ジョブに対するポーリング通知が届いた場合には、例えばエラーとしてその旨を印刷履歴(図13)に追加するように更新しても構わない。
【0099】
以上により、プリントサーバは、依頼した印刷ジョブの処理状況が監視できなくなった場合でも、無駄な監視を継続し続けることが無くなり、プリンタとの印刷ジョブの管理状況の同期をとることができる。
【0100】
[登録されたイベントの削除処理]
次に、本実施形態に係るJAVAスクリプトを利用したプルプリント方式における印刷における課題の解決手段について述べる。ここでは、プリンタに登録されたイベント通知(本実施形態では、印刷ジョブの終了通知)に対する登録の確実な削除を行うためのイベント削除処理について説明する。図5のF104ではクライアント端末101がプリンタ102に対して、JAVAスクリプトに従い、イベント登録指示を行っている。ここで、プリントサーバ100がプリンタ102に対して、イベントの削除指示を行わない限り、プリンタ102はイベント通知の実行を継続してしまう。つまり、F104にて登録された終了通知を行うイベントを保持し続けてしまう。しかし、例えば、クライアント端末101のWebブラウザ301が閉じられた場合などは、プリントサーバ100はクライアント端末101を介して、プリンタ102に対してイベントの終了指示を送信できない。その結果、プリンタ102にて登録したイベントの削除ができず、印刷ジョブの終了通知を継続してしまう。
【0101】
上記課題を解決するための処理を、図19を用いて説明する。図19はプリントサーバ100におけるROM204に格納されたプログラムに従ってCPU202が動作する処理であり、プリントサーバ100が有するWebサービス303の印刷イベント受信部408がイベントを受信した場合の処理フローチャートである。本処理は、図5のジョブの終了通知(F113)を受信した際に実行される。
【0102】
印刷イベント受信部408は、プリンタ102からジョブ終了イベント通知を受信する(S400)。そして、印刷イベント受信部408は、印刷ジョブリスト(図12)からジョブ終了イベント通知にて通知された印刷ジョブを削除し、印刷履歴(図13)にその印刷ジョブを登録する(S401)。その後、印刷イベント受信部408は、印刷ジョブリスト(図12)に、ジョブ終了イベント通知を送信したプリンタのジョブが、他に存在するかどうかを確認する(S402)。確認の結果、ジョブ終了イベント通知を送信したプリンタのジョブが存在する場合(S402にてYES)、印刷イベント受信部408は、イベント受信応答をプリンタ102へ送信する。確認の結果、イベントを送信したプリンタのジョブが存在しない場合(S402にてNO)、印刷イベント受信部408は、イベント終了指示を含む応答(イベント終了応答)をプリンタ102へ送信する(S403)。
【0103】
一般的に、イベント通知プロトコル(Web Services Eventing(WS−Eventing)など)では、イベント通知に対してその応答の中で当該イベント通知を終了させる仕組みは存在しない。そのような場合は、例えば、イベント通知を終了させるための応答として、イベント受信エラーを用いることができる。プリントサーバは、イベントに対してその通知を終了させたい場合、イベント受信エラーを応答することで特許文献1を実装したイベントを送信した装置はイベントを削除することができる。なお、イベント受信エラーとは、例えばHTTPのエラーステータスコード(404)などを用いても構わない。
【0104】
以上により、プリンタは、登録されたイベントの実行を無駄に継続し続けることが無くなる。
【0105】
以上により、プリントサーバからプリンタに対して直接通信ができない環境下におけるプルプリントシステムにおいて、プリントサーバとプリンタとの間における印刷ジョブ等に関する管理の不整合をなくし、無駄な管理や処理をなくすことができる。
【0106】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムであって、
前記プリントサーバは、
前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段と、
前記プリンタから前記通知を受信する受信手段と、
前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段と
を有し、
前記プリンタは、
前記クライアント端末が前記プログラムを実行することによる、印刷ジョブへの処理および印刷ジョブの処理状況に関する通知の実行の指示を受け付ける受付手段と、
前記受付手段にて受け付けた指示に従って、指定された前記プリントサーバの宛先に対して、一定時間ごとに前記通知を行う通知手段と
を有し、
前記プリントサーバの監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とするプルプリントシステム。
【請求項2】
前記プログラムには、印刷ジョブの処理が終了した際に、当該印刷ジョブの終了通知を前記プリンタに送信させるための指示を更に含み、
当該終了通知の指示を受けたプリンタの通知手段は、前記印刷ジョブの処理が終了した際に、前記プリントサーバへ終了通知を送信することを特徴とする請求項1に記載のプルプリントシステム。
【請求項3】
前記受信手段は、前記プリンタの通知手段から終了通知を受信した場合、当該プリンタに対して印刷指示を行っている他の印刷ジョブが有るか否かを判定し、他の印刷ジョブが無い場合には、当該終了通知の応答に、印刷ジョブの処理状況に関する通知を終了させる指示を含めることを特徴とする請求項2に記載のプルプリントシステム。
【請求項4】
前記通知手段は、前記プリントサーバから印刷ジョブの処理状況に関する通知を終了させる指示を受け付けた場合、当該プリントサーバへの通知を終了することを特徴とする請求項3に記載のプルプリントシステム。
【請求項5】
前記監視手段は、監視している印刷ジョブのうち、前記プリンタから送信された通知に処理中として通知されなかった印刷ジョブの監視を終了することを特徴とする請求項1乃至4のいずれか一項に記載のプルプリントシステム。
【請求項6】
前記通知手段は、前記一定時間として、前記プリンタが指定した間隔で前記印刷ジョブの処理状況に関する通知を送信することを特徴とする請求項1乃至5のいずれか一項に記載のプルプリントシステム。
【請求項7】
前記プログラムは、前記クライアント端末が有するWebブラウザにて実行されるJAVAスクリプトであることを特徴とする請求項1乃至6のいずれか一項に記載のプルプリントシステム。
【請求項8】
前記監視手段は、監視が終了した印刷ジョブの履歴情報を保持し、印刷ジョブに対する監視を終了した際の当該印刷ジョブの状況を当該履歴情報に含めることを特徴とする請求項1乃至7のいずれか一項に記載のプルプリントシステム。
【請求項9】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおけるプリントサーバであって、
前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段と、
前記プリンタから前記通知を受信する受信手段と、
前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段と
を有し、
前記監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とするプリントサーバ。
【請求項10】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおける印刷ジョブ管理方法であって、
前記プリントサーバにおいて、
生成手段が、前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成工程と、
受信手段が、前記プリンタから前記通知を受信する受信工程と、
監視手段が、前記受信工程にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視工程と
を有し、
前記プリンタにおいて、
受付手段が、前記クライアント端末が前記プログラムを実行することによる、印刷ジョブへの処理および当該印刷ジョブの処理状況に関する通知の実行の指示を受け付ける受付工程と、
通知手段が、前記受付工程にて受け付けた指示に従って、指定された前記プリントサーバの宛先に対して、一定時間ごとに前記通知を行う通知工程と
を有し、
前記プリントサーバの監視工程において、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とする印刷ジョブ管理方法。
【請求項11】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおけるプリントサーバの制御方法であって、
生成手段が、前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成工程と、
受信手段が、前記プリンタから前記通知を受信する受信工程と、
監視手段が、前記受信工程にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視工程と
を有し、
前記監視工程において、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とする制御方法。
【請求項12】
コンピュータを、
クライアント端末からプリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記コンピュータへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段、
前記プリンタから前記通知を受信する受信手段、
前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段
として機能させ、
前記監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とするプログラム。
【請求項1】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムであって、
前記プリントサーバは、
前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段と、
前記プリンタから前記通知を受信する受信手段と、
前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段と
を有し、
前記プリンタは、
前記クライアント端末が前記プログラムを実行することによる、印刷ジョブへの処理および印刷ジョブの処理状況に関する通知の実行の指示を受け付ける受付手段と、
前記受付手段にて受け付けた指示に従って、指定された前記プリントサーバの宛先に対して、一定時間ごとに前記通知を行う通知手段と
を有し、
前記プリントサーバの監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とするプルプリントシステム。
【請求項2】
前記プログラムには、印刷ジョブの処理が終了した際に、当該印刷ジョブの終了通知を前記プリンタに送信させるための指示を更に含み、
当該終了通知の指示を受けたプリンタの通知手段は、前記印刷ジョブの処理が終了した際に、前記プリントサーバへ終了通知を送信することを特徴とする請求項1に記載のプルプリントシステム。
【請求項3】
前記受信手段は、前記プリンタの通知手段から終了通知を受信した場合、当該プリンタに対して印刷指示を行っている他の印刷ジョブが有るか否かを判定し、他の印刷ジョブが無い場合には、当該終了通知の応答に、印刷ジョブの処理状況に関する通知を終了させる指示を含めることを特徴とする請求項2に記載のプルプリントシステム。
【請求項4】
前記通知手段は、前記プリントサーバから印刷ジョブの処理状況に関する通知を終了させる指示を受け付けた場合、当該プリントサーバへの通知を終了することを特徴とする請求項3に記載のプルプリントシステム。
【請求項5】
前記監視手段は、監視している印刷ジョブのうち、前記プリンタから送信された通知に処理中として通知されなかった印刷ジョブの監視を終了することを特徴とする請求項1乃至4のいずれか一項に記載のプルプリントシステム。
【請求項6】
前記通知手段は、前記一定時間として、前記プリンタが指定した間隔で前記印刷ジョブの処理状況に関する通知を送信することを特徴とする請求項1乃至5のいずれか一項に記載のプルプリントシステム。
【請求項7】
前記プログラムは、前記クライアント端末が有するWebブラウザにて実行されるJAVAスクリプトであることを特徴とする請求項1乃至6のいずれか一項に記載のプルプリントシステム。
【請求項8】
前記監視手段は、監視が終了した印刷ジョブの履歴情報を保持し、印刷ジョブに対する監視を終了した際の当該印刷ジョブの状況を当該履歴情報に含めることを特徴とする請求項1乃至7のいずれか一項に記載のプルプリントシステム。
【請求項9】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおけるプリントサーバであって、
前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段と、
前記プリンタから前記通知を受信する受信手段と、
前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段と
を有し、
前記監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とするプリントサーバ。
【請求項10】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおける印刷ジョブ管理方法であって、
前記プリントサーバにおいて、
生成手段が、前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成工程と、
受信手段が、前記プリンタから前記通知を受信する受信工程と、
監視手段が、前記受信工程にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視工程と
を有し、
前記プリンタにおいて、
受付手段が、前記クライアント端末が前記プログラムを実行することによる、印刷ジョブへの処理および当該印刷ジョブの処理状況に関する通知の実行の指示を受け付ける受付工程と、
通知手段が、前記受付工程にて受け付けた指示に従って、指定された前記プリントサーバの宛先に対して、一定時間ごとに前記通知を行う通知工程と
を有し、
前記プリントサーバの監視工程において、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とする印刷ジョブ管理方法。
【請求項11】
内部ネットワークに配置されたクライアント端末およびプリンタと、外部ネットワークに配置されたプリントサーバとを含むプルプリントシステムにおけるプリントサーバの制御方法であって、
生成手段が、前記クライアント端末から前記プリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記プリントサーバへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成工程と、
受信手段が、前記プリンタから前記通知を受信する受信工程と、
監視手段が、前記受信工程にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視工程と
を有し、
前記監視工程において、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とする制御方法。
【請求項12】
コンピュータを、
クライアント端末からプリンタに対する印刷要求を受信すると、前記クライアント端末が実行することで、印刷ジョブへの処理および前記コンピュータへの印刷ジョブの処理状況に関する通知を前記プリンタに実行させる指示を行うプログラムを生成し、当該プログラムを前記クライアント端末に送信する生成手段、
前記プリンタから前記通知を受信する受信手段、
前記受信手段にて受信した通知を用いて、前記プリンタに実行を指示した印刷ジョブを監視する監視手段
として機能させ、
前記監視手段は、前記プリンタから、前回の通知を受信したときから一定時間を経過しても次の通知が受信されない場合には、当該プリンタに処理を指示した印刷ジョブの監視を終了することを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【公開番号】特開2013−12053(P2013−12053A)
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願番号】特願2011−144553(P2011−144553)
【出願日】平成23年6月29日(2011.6.29)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成25年1月17日(2013.1.17)
【国際特許分類】
【出願日】平成23年6月29日(2011.6.29)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]