(57)【要約】【課題】  Ｅｖｅｎｔベースの印刷においても正しい処理順序で印刷終了処理を実行できる情報処理技術を提供する。【解決手段】  データ転送部が、プリンタからジョブ終了イベントを受信すると、印刷ジョブに関する処理を完了するためのジョブ終了処理を行う。通信制御部が、データ転送部の処理状況を監視し、監視の結果、ジョブ終了処理が完了したと判定した後、ジョブ管理部に印刷ジョブの終了を通知する。【選択図】図４
2010204747.tif 000002
【特許請求の範囲】
【請求項１】
プリンタとネットワークを介して接続され、前記プリンタを制御する情報処理装置であって、
前記プリンタとの通信を制御する通信制御手段と、
前記通信制御手段による制御に従って、印刷ジョブを前記プリンタに送信するデータ転送手段と、
前記印刷ジョブを管理するジョブ管理手段とを備え、
前記データ転送手段は、
前記プリンタからジョブ終了イベントを受信すると、前記印刷ジョブに関する処理を完了するためのジョブ終了処理を行うジョブ終了処理手段を有し、
前記通信制御手段は、
前記データ転送手段の処理状況を監視する監視手段と、
前記監視手段による監視の結果、前記ジョブ終了処理が完了したと判定した後、前記ジョブ管理手段に前記印刷ジョブの終了を通知する通知手段とを有する
ことを特徴とする情報処理装置。
【請求項２】
前記監視手段は、前記プリンタからの前記ジョブ終了イベントを受信してから一定期間Ｓｌｅｅｐすることで前記ジョブ終了処理が完了したと判定する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記監視手段は、前記プリンタからの前記ジョブ終了イベントを前記データ転送手段が受信したか否かを判定できない場合は、前記プリンタに問い合わせを行いステータス情報を取得し、そのステータス情報を参照することで、前記データ転送手段がジョブ終了イベントを受信したか否かを判定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
プリンタとネットワークを介して接続され、前記プリンタを制御する情報処理装置であって、
印刷ジョブを前記プリンタに送信するデータ転送手段と、
前記印刷ジョブを管理するジョブ管理手段とを備え、
前記データ転送手段は、
前記プリンタからのジョブ終了イベントを受信すると、前記印刷ジョブに関する処理を完了するためのジョブ終了処理を行うジョブ終了処理手段と、
前記ジョブ終了処理が完了してから、前記ジョブ管理手段に前記印刷ジョブの終了を通知する通知手段とを有する
ことを特徴とする情報処理装置。
【請求項５】
プリンタとネットワークを介して接続され、前記プリンタを制御する情報処理装置の制御方法であって、
前記プリンタとの通信を制御する通信制御工程と、
前記通信制御工程による制御に従って、印刷ジョブを前記プリンタに送信するデータ転送工程と、
前記印刷ジョブを記憶媒体に管理するジョブ管理工程とを備え、
前記データ転送工程は、
前記プリンタからジョブ終了イベントを受信すると、前記印刷ジョブに関する処理を完了するためのジョブ終了処理を行うジョブ終了処理工程を有し、
前記通信制御工程は、
前記データ転送工程の処理状況を監視する監視工程と、
前記監視工程による監視の結果、前記ジョブ終了処理が完了したと判定した後、前記ジョブ管理工程に前記印刷ジョブの終了を通知する通知工程とを有する
ことを特徴とする情報処理装置の制御方法。
【請求項６】
プリンタとネットワークを介して接続され、前記プリンタを制御する情報処理装置の制御方法であって、
印刷ジョブを前記プリンタに送信するデータ転送工程と、
前記印刷ジョブを記憶媒体に管理するジョブ管理工程とを備え、
前記データ転送工程は、
前記プリンタからのジョブ終了イベントを受信すると、前記印刷ジョブに関する処理を完了するためのジョブ終了処理を行うジョブ終了処理工程と、
前記ジョブ終了処理が完了してから、前記ジョブ管理工程に前記印刷ジョブの終了を通知する通知工程とを有する
ことを特徴とする情報処理装置の制御方法。
【請求項７】
プリンタとネットワークを介して接続され、前記プリンタを制御する情報処理装置の制御をコンピュータに機能させるためのプログラムであって、
前記コンピュータを
前記プリンタとの通信を制御する通信制御手段と、
前記通信制御手段による制御に従って、印刷ジョブを前記プリンタに送信するデータ転送手段と、
前記印刷ジョブを管理するジョブ管理手段として機能させ、
前記データ転送手段は、
前記プリンタからジョブ終了イベントを受信すると、前記印刷ジョブに関する処理を完了するためのジョブ終了処理を行うジョブ終了処理手段を有し、
前記通信制御手段は、
前記データ転送手段の処理状況を監視する監視手段と、
前記監視手段による監視の結果、前記ジョブ終了処理が完了したと判定した後、前記ジョブ管理手段に前記印刷ジョブの終了を通知する通知手段とを有する
ことを特徴とするプログラム。
【請求項８】
プリンタとネットワークを介して接続され、前記プリンタを制御する情報処理装置の制御をコンピュータに機能させるためのプログラムであって、
前記コンピュータを
印刷ジョブを前記プリンタに送信するデータ転送手段と、
前記印刷ジョブを管理するジョブ管理手段として機能させ、
前記データ転送手段は、
前記プリンタからのジョブ終了イベントを受信すると、前記印刷ジョブに関する処理を完了するためのジョブ終了処理を行うジョブ終了処理手段と、
前記ジョブ終了処理が完了してから、前記ジョブ管理手段に前記印刷ジョブの終了を通知する通知手段とを有する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プリンタとネットワークを介して接続され、プリンタを制御する情報処理技術に関するものである。
【背景技術】
【０００２】
従来、印刷システムは、一般的には、カラー出力を可能とするカラープリンタと、そのプリンタを制御し、印刷データを生成するホストコンピュータと、その双方を接続する通信インタフェースとから構成される。ホストコンピュータでは、オペレーティングシステムが動作しており、各種のソフトウェアがこのオペレーティングシステム上で動作する。アプリケーションソフトウェアで作成した各種ドキュメントを印刷する際には、アプリケーションソフトウェア、プリンタドライバ、オペレーティングシステムが規定の手順で関数呼出等を行う。そして、この手順によって、データをやり取りしてプリンタコマンド（印刷データを含む）を生成する。そして、プリンタドライバが、生成されたプリンタコマンドをプリンタへ転送することで印刷が行われる。プリンタドライバの中には、オペレーティングシステムが提供する通信機能を用いてプリンタと双方向通信を行い、プリンタのステータス情報を画面上に表示する機能を有し、ユーザの利便性を高めるものもある。
【０００３】
一般に、オペレーティングシステムの印刷システムは、プリントキューを備え、アプリケーションソフトウェアからの印刷ジョブを一旦スプールし、その後、順次処理する。プリントキューの働きによって、プリンタでの印刷完了を待たずにアプリケーションソフトウェアを印刷処理から開放できる。印刷システムは、スプールされた印刷ジョブを全てプリンタに送信したら印刷を終了する。
【０００４】
プリントキューにスプールされた印刷ジョブを印刷終了後に再度印刷したい場合がある。この場合、例えば、米国マイクロソフト社のＷｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）では、ユーザがプリントキューのＵＩで「印刷後ドキュメントを残す」設定をＯＮにすることにより、プリントキューに印刷ジョブを残しておくことができる。
【０００５】
また、印刷をキャンセルする際には、プリントキューからのキャンセルに加えて、プリンタのキャンセルボタンを押下することで印刷をキャンセルできるプリンタもあり、ユーザの利便性を高めるようになっている（特許文献１参照）。
【０００６】
通信インタフェースとしては、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）に加えて、近年、Ｗｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）では、ＷＳＤ（Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  ｏｎ  Ｄｅｖｉｃｅｓ）が採用されている。ＷＳＤによる印刷は、Ｅｖｅｎｔベースで行われ、例えば、プリンタが紙ジャムエラーになった場合は、Ｅｖｅｎｔによりホストコンピュータにその旨が伝えられる。印刷終了時には、プリンタからホストコンピュータへＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔが送信され、ホストコンピュータは印刷が何時終了したのかを知ることができる（非特許文献１参照）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００２−２００８２５号公報
【非特許文献】
【０００８】
【非特許文献１】印刷およびスキャン用のWeb Services on Devicesの実装（http://www.microsoft.com/japan/whdc/connect/rally/wsdspecs.mspx）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＷＳＤのようなＥｖｅｎｔベースの印刷の場合、プリンタからホストコンピュータへ送信されるＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔにより、オペレーティングシステムのデバイスドライバの１つであるポートモニタが印刷終了処理を行う。
【００１０】
しかしながら、このポートモニタの印刷終了処理とオペレーティングシステムの印刷システムの印刷終了が正しい順番で実行されない場合がある。
【００１１】
例えば、プリントキューのＵＩで「印刷後ドキュメントを残す」設定をＯＮにしてＷＳＤによる印刷中に、プリンタのキャンセルボタンを押下して印刷をキャンセルした場合、本来プリントキューに残るべき印刷ジョブが削除されてしまうという問題が発生する。
【００１２】
これは、オペレーティングシステムの印刷システムが印刷ジョブの終了処理を完了した後に、プリンタからホストコンピュータへＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔが送信されることで、ポートモニタの印刷ジョブ終了処理が発生するからである。つまり、このポートモニタの印刷ジョブ終了処理によって、プリントキューに残っている印刷ジョブがポートモニタによって削除されてしまうためである。
【００１３】
本発明は上記の課題を解決するためになされたものであり、Ｅｖｅｎｔベースの印刷においても正しい処理順序で印刷終了処理を実行できる情報処理技術を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。即ち、
プリンタとネットワークを介して接続され、前記プリンタを制御する情報処理装置であって、
前記プリンタとの通信を制御する通信制御手段と、
前記通信制御手段による制御に従って、印刷ジョブを前記プリンタに送信するデータ転送手段と、
前記印刷ジョブを管理するジョブ管理手段とを備え、
前記データ転送手段は、
前記プリンタからジョブ終了イベントを受信すると、前記印刷ジョブに関する処理を完了するためのジョブ終了処理を行うジョブ終了処理手段を有し、
前記通信制御手段は、
前記データ転送手段の処理状況を監視する監視手段と、
前記監視手段による監視の結果、前記ジョブ終了処理が完了したと判定した後、前記ジョブ管理手段に前記印刷ジョブの終了を通知する通知手段とを有する。
【００１５】
上記の目的を達成するための本発明による情報処理装置は以下の構成を備える。即ち、
プリンタとネットワークを介して接続され、前記プリンタを制御する情報処理装置であって、
印刷ジョブを前記プリンタに送信するデータ転送手段と、
前記印刷ジョブを管理するジョブ管理手段とを備え、
前記データ転送手段は、
前記プリンタからのジョブ終了イベントを受信すると、前記印刷ジョブに関する処理を完了するためのジョブ終了処理を行うジョブ終了処理手段と、
前記ジョブ終了処理が完了してから、前記ジョブ管理手段に前記印刷ジョブの終了を通知する通知手段とを有する。
【発明の効果】
【００１６】
本発明によれば、Ｅｖｅｎｔベースの印刷においても正しい処理順序で印刷終了処理を実行できる情報処理技術を提供できる。
【図面の簡単な説明】
【００１７】
【図１】本発明の実施形態１のコンピュータ装置および印刷装置の構成を示すブロック図である。
【図２】本発明の実施形態１の図１の情報処理装置に適用可能な印刷システムを示すブロック図である。
【図３】本発明の実施形態１の印刷システム上のＷＳＤ印刷における印刷終了処理を示す図である。
【図４】本発明の実施形態１の印刷システム上のＷＳＤ印刷による印刷中にプリンタのキャンセルボタンが押下され印刷をキャンセルした場合の動作を示す図である。
【図５】本発明の実施形態１のランゲージモニタ３０４がポートモニタ３０５を監視する動作を示すフローチャートである。
【図６】本発明の実施形態１のランゲージモニタ３０４がＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したか否かを判定できない場合の代替処理を示すフローチャートである。
【図７】本発明の実施形態１のＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを説明するための図である。
【図８】本発明の実施形態１のＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを説明するための図である。
【図９】本発明の実施形態１のＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信した時にポートモニタ３０５が実行する終了処理を示すフローチャートである。
【図１０】本発明の実施形態１のＧｅｔＡｃｔｉｖｅＪｏｂｓオペレーションにより取得できるジョブ情報を説明するための図である。
【図１１】本発明の実施形態２の図１の情報処理装置に適用可能な印刷システムを示すブロック図である。
【図１２】本発明の実施形態２の印刷システム上のＷＳＤ印刷における印刷終了処理を示す図である。
【発明を実施するための形態】
【００１８】
以下、添付図面を参照して本発明の最適な実施の形態を詳細に説明する。尚、以下の実施形態は、特許請求の範囲に係る本発明を限定するものでなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【００１９】
＜実施形態１＞
図１は本発明の実施形態１のコンピュータ装置および印刷装置の構成を示すブロック図である。
【００２０】
図１において、１００は情報処理装置であり、一般的なＰＣ（パーソナルコンピュータ）で構成される。情報処理装置１００には、オペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）として、例えば、米国マイクロソフト社のＷｉｎｄｏｗｓ  Ｖｉｓｔａ（登録商標）がインストールされている。情報処理装置１００は、演算制御用の制御部であるＣＰＵ１０４により制御される。
【００２１】
ＣＰＵ１０４は、ランダムアクセスメモリ部（ＲＡＭ１０１）を一時記憶部として使用し、記憶部であるハードディスクドライブ部（ＨＤＤ１０２）からＲＡＭ１０１にロードされたプログラムに従って情報処理装置１００を制御する。入力部の一例であるキーボード部（ＫＢＤ１０３）は、データ入力あるいは動作指示に使用される。表示部の一例である表示用ディスプレイ（ＬＣＤ１０６）は、データ表示や状態報知に使用される。通信制御部の一例であるネットワークボード（ＮＢ１０５）は、ネットワークを介する通信を行い、ネットワーク（Ｎｅｔｗｏｒｋ１０９）に接続されている。インタフェース部（Ｉ／Ｆ部１０８）は、周辺機器との接続を制御する。
【００２２】
プリンタ２０１は、インタフェース部（Ｉ／Ｆ部）２０２と、ＲＡＭ２０３と、ＲＯＭ２０４と、ＣＰＵ２０５と、エンジン２０６とを有する。Ｉ／Ｆ部２０２は、ネットワーク（Ｎｅｔｗｏｒｋ１０９）に接続されている。ＲＯＭ２０４には、制御プログラム等の各種プログラムが格納されている。ＣＰＵ２０５は、ＲＯＭ２０４に格納してある制御プログラムに従ってプリンタ２０１の各種構成要素を制御する。また、ＲＡＭ２０３は、ＣＰＵ２０５の主メモリとワークメモリとして用いられ、受信したデータを一旦保存するための受信バッファを有する。エンジン２０６は、ＲＡＭ２０３に保存されたデータに基づき印刷を行う。実施形態１における周辺装置であるプリンタ２０１のエンジン２０６としては、インクジェット方式を例に説明を行うが、これに限定されることなく、例えば、電子写真方式、熱転写方式等のエンジン（媒体への記録手段）等を適用することもできる。
【００２３】
図２は本発明の実施形態１の図１の情報処理装置に適用可能な印刷システムを示すブロック図である。
【００２４】
情報処理装置１００は、上述のオペレーティングシステムに加えて、印刷処理機能を有する任意のアプリケーション３０１をインストールし、更に、ネットワーク（Ｎｅｔｗｏｒｋ１０９）を介してプリンタ２０１を接続する形態が考えられる。アプリケーション３０１は、ＯＳの印刷コンポーネント３０２を介して、プリンタ２０１に対する印刷設定情報を設定することができる。ここで、印刷設定情報とは、プリンタ２０１においてアプリケーション３０１が生成したページを印刷する用紙の種類、用紙サイズ、給紙先の給紙口等の印刷するために必要な情報である。
【００２５】
ユーザインタフェースドライバ３０３は、各種印刷設定情報において設定可能な選択肢の一覧を印刷コンポーネント３０２を介してアプリケーション３０１に通知する他、各種印刷設定を設定可能なインタフェースを有する。
【００２６】
アプリケーション３０１が印刷要求した描画データは、印刷コンポーネント３０２を経由して印刷ジョブ（印刷データを含む）としてランゲージモニタ３０４に渡される。ランゲージモニタ３０４は、印刷ジョブをポートモニタ３０５に出力する。ポートモニタ３０５は、渡された印刷ジョブをプリンタ２０１に送信する。尚、実施形態１では、ポートモニタ３０５としてＷＳＤ印刷用のポートモニタであるＷＳＤＭＯＮを想定しているが、これに限定されることはなくさまざまなポートモニタを適用することができる。
【００２７】
尚、ランゲージモニタ３０４は、プリンタ２０１と双方向通信を行い、プリンタのステータス情報を取得しつつ、プリンタ２０１へ印刷ジョブを転送する通信制御部として機能する。また、ポートモニタ３０５は、ランゲージモニタ３０４からの印刷ジョブをプリンタ２０１に送信するデータ転送部として機能する。更に、印刷コンポーネント３０２は、印刷ジョブを管理するジョブ管理部（後述するＳｐｏｏｌｅｒ（スプーラ）４０１に対応）として機能する。
【００２８】
また、実施形態１のポートモニタ３０５は、プリンタ２０１からのジョブ終了イベントの受信をきっかけに、処理対象のジョブに関する処理を完了するためのジョブ終了処理を実行するジョブ終了処理部として機能する。また、ランゲージモニタ３０４は、ポートモニタ３０５の処理状況（ジョブ終了イベントの受信の有無や、ジョブ終了処理の完了の有無）を監視する監視部として機能する。また、ランゲージモニタ３０４は、ジョブ終了処理の完了後、ジョブ管理部として機能する印刷コンポーネント３０２に印刷ジョブの終了を通知する通知部として機能する。
【００２９】
図３は本発明の実施形態１の印刷システム上のＷＳＤ印刷における印刷終了処理を示す図である。
【００３０】
Ｓｐｏｏｌｅｒ（スプーラ）４０１は、印刷コンポーネント３０２の一部である。Ｓ４０５で、Ｓｐｏｏｌｅｒ４０１は、ランゲージモニタ３０４のエクスポート関数ＷｒｉｔｅＰｏｒｔ（）を呼び出し、印刷ジョブを送信する。ランゲージモニタ３０４は、受信した印刷ジョブを、ポートモニタ３０５のエクスポート関数ＷｒｉｔｅＰｏｒｔ（）を呼び出し、それを用いて、ポートモニタ３０５に送信する。ポートモニタ３０５は、受信した印刷ジョブをプリンタ２０１に送信する。この処理を、印刷ジョブを全部送信するまで繰り返す。
【００３１】
印刷ジョブを全部送信し終えたら、Ｓ４０６で、Ｓｐｏｏｌｅｒ４０１は、ランゲージモニタ３０４のエクスポート関数ＥｎｄＤｏｃＰｏｒｔ（）を呼び出す。ランゲージモニタ３０４は、確保したメモリの解放等の必要な終了処理を実行し、Ｓ４０７で、ポートモニタ３０５のエクスポート関数ＥｎｄＤｏｃＰｏｒｔ（）を呼び出す。
【００３２】
ランゲージモニタ３０４は、ポートモニタ３０５のＥｎｄＤｏｃＰｏｒｔ（）がリターン後、Ｓ４０８で、ポートモニタ３０５の終了処理が完了するまで待機する。
【００３３】
一方、Ｓ４０９で、プリンタ２０１からポートモニタ３０５に対して、プリンタ２０１の印刷終了を示すステータス情報としてＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔが送信される。Ｓ４１０で、ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したポートモニタ３０５は、終了処理を実行する。
【００３４】
実施形態１では、ポートモニタ３０５が、ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信することを想定しているが、印刷コンポーネント３０２が受信して、終了処理の完了をポートモニタ３０５に指示するようにしてもよい。
【００３５】
ポートモニタ３０５の終了処理が完了すると、Ｓ４１１で、ランゲージモニタ３０４は、ＥｎｄＤｏｃＰｏｒｔ（）をＳｐｏｏｌｅｒ４０１に対してリターンし、印刷システムの印刷が完了する。
【００３６】
図４は本発明の実施形態１の印刷システム上のＷＳＤ印刷による印刷中にプリンタのキャンセルボタンが押下され印刷をキャンセルした場合の動作を示す図である。
【００３７】
Ｓ５０５で、Ｓｐｏｏｌｅｒ４０１は、ランゲージモニタ３０４のエクスポート関数ＷｒｉｔｅＰｏｒｔ（）を呼び出し、印刷ジョブを送信する。ランゲージモニタ３０４は、受信した印刷ジョブを、ポートモニタ３０５のエクスポート関数ＷｒｉｔｅＰｏｒｔ（）を呼び出し、それを用いて、ポートモニタ３０５に送信する。ポートモニタ３０５は、受信した印刷ジョブをプリンタ２０１に送信する。この処理を、印刷ジョブを全部送信するまで繰り返す。
【００３８】
Ｓ５０６で、プリンタ２０１のキャンセルボタンが押下されると、プリンタ２０１は、Ｓ５０７で、キャンセルボタン押下を示す情報をランゲージモニタ３０４に通知する。この通知は、プリンタ２０１からランゲージモニタ３０４に対して通知を行ってもよいし、ランゲージモニタ３０４がポーリングにより定期的にプリンタ２０１に問い合わせるという方法で実現してもよい。
【００３９】
キャンセルボタン押下を示す通知を受信すると、Ｓ５０８で、ランゲージモニタ３０４は、Ｓｐｏｏｌｅｒ４０１による印刷ジョブの送信を中止するためにＪＯＢ＿ＣＯＮＴＲＯＬ＿ＤＥＬＥＴＥというパラメータをセットする。そして、ランゲージモニタ３０４は、Ｗｉｎｄｏｗｓ(登録商標)のＡＰＩであるＳｅｔＪｏｂ（）を呼び出す。ＪＯＢ＿ＣＯＮＴＲＯＬ＿ＤＥＬＥＴＥパラメータとともにＳｅｔＪｏｂ（）が呼び出されると、Ｓｐｏｏｌｅｒ４０１は印刷ジョブの送信を中止して、Ｓ５０９で、ランゲージモニタ３０４のエクスポート関数ＥｎｄＤｏｃＰｏｒｔ（）を呼び出す。
【００４０】
ランゲージモニタ３０４は、確保したメモリの解放や印刷の中止に必要な処理を実行し、Ｓ５１０で、ポートモニタ３０５のエクスポート関数ＥｎｄＤｏｃＰｏｒｔ（）を呼び出す。ランゲージモニタ３０４は、ポートモニタ３０５のＥｎｄＤｏｃＰｏｒｔ（）がリターン後、Ｓ５１１で、ポートモニタ３０５の終了処理が完了するまで待機する。
【００４１】
一方、Ｓ５１２で、プリンタ２０１からポートモニタ３０５に対して、プリンタ２０１での印刷終了を示すＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔが送信される。Ｓ５１３で、ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したポートモニタ３０５は、終了処理を実行する。
【００４２】
ポートモニタ３０５の終了処理が完了すると、Ｓ５１４で、ランゲージモニタ３０４は、ＥｎｄＤｏｃＰｏｒｔ（）をＳｐｏｏｌｅｒ４０１に対してリターンし、印刷のキャンセル処理が完了する。
【００４３】
図５は本発明の実施形態１のランゲージモニタ３０４がポートモニタ３０５を監視する動作を示すフローチャートである。
【００４４】
尚、このポートモニタ３０５を監視する動作（ポートモニタ３０５の終了処理の完了を見届ける動作）は、図３のＳ４０８及び図４のＳ５１１の処理に対応する。
【００４５】
ステップＳ６０１で、ランゲージモニタ３０４は、ポートモニタ３０５を監視し、そのポートモニタ３０５がプリンタ２０１からのＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したか否かを判定する。監視の結果、ポートモニタ３０５がプリンタ２０１からのＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信していない場合（ステップＳ６０１でＮＯ）、ポートモニタ３０５がプリンタ２０１からのＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信するまで待機する。
【００４６】
一方、監視の結果、ポートモニタ３０５がプリンタ２０１からのＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信した場合（ステップＳ６０１でＹＥＳ）、ステップＳ６０２で、ランゲージモニタ３０４は、一定時間Ｓｌｅｅｐ（スリープ）した後に、処理を終了する。つまり、ランゲージモニタ３０４は、プリンタ２０１からのジョブ終了イベント（ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔ）をポートモニタ３０５が受信してから一定期間Ｓｌｅｅｐすることで、ポートモニタ３０５における終了処理が完了したと判定する。
【００４７】
尚、この一定時間は、ポートモニタ３０５が終了処理を実行してから完了するまでの経過時間よりも長い十分な時間である。これにより、ランゲージモニタ３０４は、この一定時間分、Ｓｌｅｅｐすることで、ポートモニタ３０５の終了処理が確実に完了している時点以降で、Ｓｐｏｏｌｅｒ４０１に対して、ＥｎｄＤｏｃＰｏｒｔ（）をリターンする。換言すれば、ジョブ終了イベント（ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔ）をきっかけとするポートモニタ３０５の終了処理が完了してから、ランゲージモニタ３０４は、オペレーティングシステムの印刷システムにジョブ終了を通知する。
【００４８】
図５のフローチャートは、ランゲージモニタ３０４が、ポートモニタ３０５がＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したか否かを判定できる場合の処理である。ここで、システムの仕様によっては、ポートモニタ３０５がＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したか否かを判定できない場合がある。その場合は、例えば、図６に示すフローチャートを実行することで、ポートモニタ３０５がＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したか否かを判定するようにする。
【００４９】
図６は本発明の実施形態１のランゲージモニタ３０４がＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したか否かを判定できない場合の代替処理を示すフローチャートである。
【００５０】
尚、このフローチャートは、図５のステップＳ６０１の処理の代替処理に対応する。
【００５１】
ステップＳ７０１で、ランゲージモニタ３０４は、ＷＳＤのコマンドのひとつであるＧｅｔＡｃｔｉｖｅＪｏｂｓオペレーションをプリンタ２０１に対して実行する。ステップＳ７０２で、ランゲージモニタ３０４は、ＧｅｔＡｃｔｉｖｅＪｏｂｓオペレーションでプリンタ２０１から取得したステータス情報であるＪｏｂＳｔａｔｅがＣｏｍｐｌｅｔｅｄになっている否かを判定する。
【００５２】
Ｃｏｍｐｌｅｔｅｄになっていない場合（ステップＳ７０２でＮＯ）、ステップＳ７０１に戻り、再度、ＧｅｔＡｃｔｉｖｅＪｏｂｓオペレーションを実行する。一方、Ｃｏｍｐｌｅｔｅｄになっている場合（ステップＳ７０２でＹＥＳ）、ステップＳ７０３で、ランゲージモニタ３０４は、ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信したと判定し、処理を終了する。
【００５３】
図７及び図８は本発明の実施形態１のＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを説明するための図である。
【００５４】
ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔは、プリンタ２０１が印刷ジョブの印刷を終了したときに情報処理装置１００に対して送信されるイベントであり、印刷ジョブの最終ステータスを表している。ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔは、ＸＭＬフォーマットで記述されている。
【００５５】
図７では、ＪｏｂＣｏｍｐｌｅｔｅｄＳｔａｔｅエレメント（７０１）の値が「Ｃｏｍｐｌｅｔｅｄ」になっており、印刷ジョブが正常に終了したことがわかる。
【００５６】
図８では、ＪｏｂＣｏｍｐｌｅｔｅｄＳｔａｔｅエレメント（８０１）の値が「Ｃａｎｃｅｌｅｄ」になっており、ＪｏｂＳｔａｔｅＲｅａｓｏｎエレメント（８０２）の値がＪｏｂＣａｎｃｅｌｅｄＡｔＤｅｖｉｃｅとなっている。このことから、印刷ジョブがプリンタのキャンセルボタン押下によってキャンセルされたことがわかる。ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔの他のエレメントの説明については、実施形態１との関連が低いので省略する。
【００５７】
図９は本発明の実施形態１のＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔを受信した時にポートモニタ３０５が実行する終了処理を示すフローチャートである。
【００５８】
尚、この終了処理は、図４のＳ５１３に対応する。
【００５９】
ステップＳ１００１で、ポートモニタ３０５は、ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔのＪｏｂＣｏｍｐｌｅｔｅｄＳｔａｔｅエレメントの値を確認し、その値が「Ｃａｎｃｅｌｅｄ」であるか否かを判定する。
【００６０】
ＪｏｂＣｏｍｐｌｅｔｅｄＳｔａｔｅエレメントの値が「Ｃａｎｃｅｌｅｄ」でない場合（ステップＳ１００１でＮＯ）、ステップＳ１００３に進む。一方、ＪｏｂＣｏｍｐｌｅｔｅｄＳｔａｔｅエレメントの値が「Ｃａｎｃｅｌｅｄ」である場合（ステップＳ１００１でＹＥＳ）、ステップＳ１００２で、ポートモニタ３０５は、ＪＯＢ＿ＣＯＮＴＲＯＬ＿ＤＥＬＥＴＥパラメータをセットする。そして、ポートモニタ３０５は、ＳｅｔＪｏｂ（）を呼び出す。
【００６１】
ステップＳ１００３で、ポートモニタ３０５は、その他の必要な終了処理を行い、終了する。必要な終了処理の内容は、本実施形態とは関連が低いので省略する。
【００６２】
図１０は本発明の実施形態１のＧｅｔＡｃｔｉｖｅＪｏｂｓオペレーションにより取得できるジョブ情報を説明するための図である。
【００６３】
ステータス情報の１つとして得られるジョブ情報は、ＸＭＬ形式で記述され、ジョブに関するサマリー情報が格納されている。ＪｏｂＳｔａｔｅエレメント（１００１）は、現在のジョブの状態を表している。ＪｏｂＳｔａｔｅエレメントの値が「Ｃｏｍｐｌｅｔｅｄ」になっていれば、ジョブが終了していることを表す。それ以外にも様々な値が定義されているが本実施形態と関連が低いので説明は省略する。
【００６４】
以上説明したように、実施形態１によれば、ジョブ終了イベントをきっかけとするポートモニタの終了処理が完了してから、オペレーティングシステムの印刷システムにジョブ終了を通知する。そのため、Ｅｖｅｎｔベースの印刷においても正しい処理順序で印刷終了処理を実行できる。
【００６５】
＜実施形態２＞
実施形態２は、実施形態１の図１及び図２の構成に対して、図１１に示すように、特に、図２の構成における、ランゲージモニタ３０４が存在しない場合の構成について説明する。
【００６６】
尚、実施形態２の図１１の構成の場合、ポートモニタ３０５は、プリンタ２０１からのジョブ終了イベントの受信をきっかけに、ジョブ終了処理を実行するジョブ終了処理部として機能する。また、ポートモニタ３０５は、ジョブ終了処理の完了後、ジョブ管理部として機能する印刷コンポーネント３０２に印刷ジョブの終了を通知する通知部として機能する。
【００６７】
図１２は本発明の実施形態２の印刷システム上のＷＳＤ印刷における印刷終了処理を示す図である。
【００６８】
Ｓ８０４で、Ｓｐｏｏｌｅｒ４０１は、ポートモニタ３０５のエクスポート関数ＷｒｉｔｅＰｏｒｔ（）を呼び出し、印刷ジョブを送信する。ポートモニタ３０５は、受信した印刷ジョブをプリンタ２０１に送信する。この処理を、印刷ジョブを全部送信するまで繰り返す。
【００６９】
印刷ジョブを全部送信し終えたら、Ｓ８０５で、Ｓｐｏｏｌｅｒ４０１は、ポートモニタ３０５のエクスポート関数ＥｎｄＤｏｃＰｏｒｔ（）を呼び出す。Ｓ８０６で、ポートモニタ３０５は、プリンタ２０１からＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔが送信されてくるのを待機する。Ｓ８０７で、ＪｏｂＥｎｄＳｔａｔｅＥｖｅｎｔが送信されてきたら、Ｓ８０８で、ポートモニタ３０５は、図９の終了処理を行う。終了処理が完了したら、Ｓ８０９で、ポートモニタ３０５は、ＥｎｄＤｏｃＰｏｒｔ（）をＳｐｏｏｌｅｒ４０１に対してリターンし、印刷システムの印刷が完了する。
【００７０】
以上説明したように、実施形態２によれば、ランゲージモニタ３０４が存在しない場合でも、実施形態１と同様の効果を得ることができる。
【００７１】
尚、本発明は、上記実施形態１及び２と同等の処理を、コンピュータプログラムでも実現できる。この場合、図１及び２をはじめとする構成要素の各々は関数、もしくはＣＰＵが実行するサブルーチンで機能させれば良い。また、通常、コンピュータプログラムは、ＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されており、それを、コンピュータが有する読取装置（ＣＤ−ＲＯＭドライブ等）にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、かかるコンピュータ可読記憶媒体も本発明の範疇にあることは明らかである。
【図１】
2010204747.tif 000003
【図２】
2010204747.tif 000004
【図３】
2010204747.tif 000005
【図４】
2010204747.tif 000006
【図５】
2010204747.tif 000007
【図６】
2010204747.tif 000008
【図７】
2010204747.tif 000009
【図８】
2010204747.tif 000010
【図９】
2010204747.tif 000011
【図１０】
2010204747.tif 000012
【図１１】
2010204747.tif 000013
【図１２】
2010204747.tif 000014