(57)【特許請求の範囲】
【請求項１】
ホストと、それぞれプロセッサと記憶手段とを備え該ホストから依頼されたジョブを処理する複数の画像形成装置とがネットワークで結合され、該画像形成装置の記憶手段に、該ホストから該画像形成装置に対する要求に基づき、通知先アドレスとフィルター要素としてのイベント種別とを含むサブスクリプションが登録されたデータベースと、イベントジェネレータとイベント通知マネージャとを含むイベント通知プログラムとが格納された、ネットワークにおけるイベント通知システムにおいて、
該サブスクリプションに含まれるイベント種別はイベント種別コードで表され、
該イベントジェネレータは該プロセッサに対し、該画像形成装置の状態変化に応答して、イベントコードを伴ったイベントを生成させ、
該イベントコードは、該イベント種別コードと、該イベント種別に属する状態変化を示す値、及び、該イベント種別がジョブ状態である場合には該ホストにおいてプリンタドライバにより付加されたユーザＩＤを含み、
該イベント種別がジョブ状態である場合、該サブスクリプションにはフィルター要素として該イベント種別とオペレーティングシステムにログインしたときの該ユーザＩＤが含まれ、
該イベント通知マネージャは該プロセッサに対し、該画像形成装置でのイベントの発生に応答して、該イベントの種別がジョブ状態である場合には、該データベースに登録されている該サブスクリプションのうち、該フィルター要素が、該イベントコードに含まれた該イベント種別コードと該ユーザＩＤに一致しているものについて、その通知先アドレスにイベントを通知させる、
ことを特徴とする、ネットワークにおけるイベント通知システム。
【請求項２】
該イベント種別がジョブ状態である場合、該サブスクリプションは、イベント種別とユーザＩＤとが結合された１つのフィルター要素を含むことを特徴とする請求項１に記載のイベント通知システム。
【請求項３】
該イベント通知マネージャは該プロセッサに対し、該イベントの生成に応答して、該イベントコードがジョブに関するものであれば、該通知先アドレスに、ジョブ識別子をさらに含むイベントを通知させる、
ことを特徴とする請求項１または２に記載のイベント通知システム。
【請求項４】
該画像形成装置は、プリンタ、スキャナ、ファクシミリ装置又は複合機であることを特徴とする請求項１乃至３のいずれか１つに記載のイベント通知システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホストと複数のデバイスとがネットワークで結合され、該ホストからデバイスに対する要求に応じて登録されたイベントの種類及び通知先アドレスに基づいて、デバイスで発生したイベントをホストに通知する、ネットワークにおけるイベント通知システムに関する。
【背景技術】
【０００２】
画像形成装置などのネットワークデバイスで発生したイベントを、ネットワークを介しホストに通知する仕様がＷＳ−Ｅｖａｎｔｉｎｇとして定められており、これによれば、登録要求したホストに対してのみ、要求に係る種類（Ｆｉｌｔｅｒ要素）のイベントを通知すればよく、また、特別な管理装置を介する必要がない。
【０００３】
しかし、特定の画像形成装置のジョブ状態の変化などの通知であっても、無関係な画像形成装置へ通知しなければならず、画像形成装置の処理負担が増大し、これにより、ホストの処理負担も増大するとともにネットワークトラフィックも増大する。
【０００４】
そこで、下記特許文献１では、イベント種別がジョブ状態の変化などの場合には上記仕様の例外として、ジョブ処理を要求したホストに対してのみ、イベントを通知することにより、この問題を解決している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２３３９９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、例えば、ユーザがデスクトップコンピュータで画像形成装置に対し印刷ジョブの処理を要求した後、会議等の為に移動してノートパソコンを開いても、該ユーザはこの印刷ジョブについて印刷完了通知を受け取ることができない。
【０００７】
また、画像形成装置は、イベントが発生する毎に、イベントの種類と登録元アドレスとを対応させたサブスクリプションズテーブルのみならず、イベントの種類が特定監視先（ジョブ処理要求元）のみ通知すべきものであるか否かを判定するためのテーブルも検索しなければならないので、画像形成装置の処理負担を充分に軽減することができない。
【０００８】
このような問題は、画像形成装置以外のネットワークデバイスについても同様に生ずる。
【０００９】
本発明の目的は、このような問題点に鑑み、同一ユーザが１つのホストでデバイスに対しジョブ処理を要求した後、他のホストへ移動しても、このジョブの変化の通知を該デバイスから受信できるようにするとともに、ネットワークに結合されたそれぞれのデバイス及びホストの処理負担増大並びにネットワークトラフィックの増大を抑制することが可能な、ネットワークにおけるイベント通知システムを提供することにある。
【課題を解決するための手段】
【００１０】
本発明の第１態様では、ホストと、それぞれプロセッサと記憶手段とを備え該ホストから依頼されたジョブを処理する複数の画像形成装置とがネットワークで結合され、該画像形成装置の記憶手段に、該ホストから該画像形成装置に対する要求に基づき、通知先アドレスとフィルター要素としてのイベント種別とを含むサブスクリプションが登録されたデータベースと、イベントジェネレータとイベント通知マネージャとを含むイベント通知プログラムとが格納された、ネットワークにおけるイベント通知システムにおいて、
該サブスクリプションに含まれるイベント種別はイベント種別コードで表され、
該イベントジェネレータは該プロセッサに対し、該画像形成装置の状態変化に応答して、イベントコードを伴ったイベントを生成させ、
該イベントコードは、該イベント種別コードと、該イベント種別に属する状態変化を示す値、及び、該イベント種別がジョブ状態である場合には該ホストにおいてプリンタドライバにより付加されたユーザＩＤを含み、
該イベント種別がジョブ状態である場合、該サブスクリプションにはフィルター要素として該イベント種別とオペレーティングシステムにログインしたときの該ユーザＩＤが含まれ、
該イベント通知マネージャは該プロセッサに対し、該画像形成装置でのイベントの発生に応答して、該イベントの種別がジョブ状態である場合には、該データベースに登録されている該サブスクリプションのうち、該フィルター要素が、該イベントコードに含まれた該イベント種別コードと該ユーザＩＤに一致しているものについて、その通知先アドレスにイベントを通知させる。
【００１１】
本発明によるイベント通知システムの第２態様では、第１態様において、該イベント種別がジョブ状態である場合、該サブスクリプションは、イベント種別とユーザＩＤとが結合された１つのフィルター要素を含む。
【００１２】
本発明によるイベント通知システムの第３態様では、第２態様において、該イベント通知マネージャは該プロセッサに対し、該イベントの生成に応答して、該イベントコードがジョブに関するものであれば、該通知先アドレスに、ジョブ識別子をさらに含むイベントを通知させる。
【発明の効果】
【００１３】
上記第１態様の構成によれば、一方では、デバイスに処理が要求されるジョブデータにユーザＩＤが含まれ、他方では、デバイスに登録されたサブスクリプションには、イベントの種別がジョブ状態である場合、フィルター要素としてイベント種別のみならずユーザＩＤも含まれ、イベント通知プログラムにより、デバイスでのイベントの発生に応答して、データベースに含まれているサブスクリプションのうち、そのイベント種別がジョブ状態であり、かつ、そのユーザＩＤが該ジョブデータに含まれるユーザＩＤと一致しているものについて、その通知先アドレスにイベントを通知するので、同一ユーザが１つのホストでデバイスに対しジョブ処理を要求した後、他のホストへ移動しても、このジョブの変化の通知を該デバイスから受信することができるとともに、ネットワークに結合されたそれぞれのデバイス及びホストの処理負担増大並びにネットワークトラフィックの増大を抑制することができるという効果を奏する。
【００１６】
本発明の他の目的、特徴的な構成及び効果は、以下の説明を特許請求の範囲及び図面の記載と関係づけて読むことにより明らかになる。 
【図面の簡単な説明】
【００１７】
【図１】本発明の実施例１に係る、ネットワークにおけるイベント通知システムを示す概略ブロック図である。
【図２】図１のシステムを代表する１つのＰＣと１つの画像形成装置とのシステムのハードウェア構成を示す概略ブロック図である。
【図３】図１のシステムを代表する１つのＰＣと１つの画像形成装置とのシステムの概略機能ブロック図である。
【図４】レジストリに登録されているプリンタドライバの設定データの一部を示す説明図である。
【図５】（Ａ）〜（Ｃ）はそれぞれ、図３中のイベントデータベースに含まれるイベント種別テーブル、イベントテーブル及びサブスクリプションズテーブルの構成例を示す図である。
【図６】（Ａ）は図３中のサブスクライバによるイベント通知登録要求処理を示すフローチャートであり、（Ｂ）は図３中のサブスクリプションマネージャによる処理を示すフローチャートである。
【図７】図３中の、画像形成装置本体部での印刷ジョブの処理と通知マネージャとの関係を示す機能ブロック図である。
【図８】図３中の通知マネージャによる処理を示す概略フローチャートである。
【図９】図３中のサブスクライバによるイベント通知登録解除処理要求を示す概略フローチャートである。
【図１０】本発明の実施例２に係るサブスクリプションズテーブルの構成例を示す図である。
【図１１】画像形成装置本体部での印刷ジョブの処理と通知マネージャとの関係を示す機能ブロック図である。
【図１２】通知マネージャによる処理を示す概略フローチャートである。
【実施例１】
【００１８】
図１は、本発明の実施例１に係る、ネットワークにおけるイベント通知システムを示す概略ブロック図である。
【００１９】
このシステムでは、ホストとしての（Ｎ＋１）台のＰＣ（パーソナルコンピュータ）１０〜１Ｎと、これらで使用されるデバイスとしての画像形成装置２０〜２２とが、ネットワーク３０で結合されている。
【００２０】
図２は、図１のシステムを代表するＰＣ１０と画像形成装置２０とのハードウェア構成を示す概略ブロック図である。
【００２１】
ＰＣ１０では、ＣＰＵ４１がインターフェイス４２を介してＰＲＯＭ４３、ＤＲＡＭ４４、補助記憶装置４５、ネットワークインターフェイス４６及び会話型入出力装置４７に結合されている。図２では、簡単化の為に、複数種のインターフェイスを１つのブロック４２で表している。
【００２２】
ＰＲＯＭ４３は、例えばフラッシュメモリであり、これにＢＩＯＳ（Basic Input/Output System）が格納されている。ＤＲＡＭ４４は、主記憶装置として用いられる。補助記憶装置４５には、ＯＳ（オペレーティングシステム）、各種ドライバ及びアプリケーション並びにデータが格納されている。該ドライバ及びアプリケーションには、図３に示すＰＣ１０内の後述のものが含まれる。ネットワークインターフェイス４６は、ネットワーク３０に結合されている。会話型入出力装置４７は、例えば入力装置としてのキーボード及びポインティングデバイスと、表示装置とを備えている。
【００２３】
画像形成装置２０では、ＣＰＵ２１がインターフェイス５２を介してＰＲＯＭ５３、ＤＲＡＭ５４、補助記憶装置５５、ネットワークインターフェイス５６、操作パネル５７、スキャナ５８、プリンタ５９及びファックスモデム５Ａに結合されている。図２では、簡単化の為に、複数種のインターフェイスを１つのブロック５２で表している。
【００２４】
ＰＲＯＭ５３には、ＢＩＯＳ、ＯＳ、各種ドライバ、及び、画像形成装置として機能させるための各種アプリケーションが格納されている。該アプリケーションには、図３に示す画像形成装置２０内の後述のものが含まれる。ＤＲＡＭ５４は、主記憶装置として用いられる。補助記憶装置５５には、印刷用データ、スキャナ５８で読み取った画像データ、後述の補助ファイル、及びファクシミリ受信データが保存される。ネットワークインターフェイス５６は、ネットワーク３０に結合されている。操作パネル５７は、入力部及び表示部を供えている。スキャナ５８は、画像ファイル生成のために用いられ、このファイルは印刷、ファクシミリ送信又はファイル送信のために用いられる。プリンタ５９は、プリントエンジン並びに用紙の給紙部、搬送部及び排紙部を備えている。
【００２５】
図１中の他のＰＣ及び画像形成装置についても上記同様である。
【００２６】
図３は、図１のシステムを代表するＰＣ１０と画像形成装置２０との概略機能ブロック図である。
【００２７】
ＰＣ１０にインストールされているプリンタドライバ６０Ａ、６０Ｂ及び６０Ｃはそれぞれ、図１の画像形成装置２０、２１及び２２に対するものである。文書作成アプリ６１で文書を作成して用紙サイズ、部数、後処理などの印刷パラメータをダイアログボックスで設定した後、印刷開始指示を与えると、印刷ジョブデータがＯＳのＧＤＩ（Graphics Device Interface）６２を介し、選択されているプリンタドライバ６０Ａに供給されて、画像形成装置２０が解釈可能なＰＤＬ（Page Description Language）データに変換され、通信部６３及びネットワーク３０を介して画像形成装置２０に送信される。
【００２８】
データベースとしてのレジストリ６４には、ＯＳ、デバイスドライバ及びアプリケーションの設定情報が、ツリー形式で登録されており、ツリーのパスを指定して、エントリー（キー）の値及びデータ型を読み出し／書き込み可能となっている。
【００２９】
図４は、レジストリ６４に登録されているプリンタドライバ６０Ａの登録データのうちのPrintersキーのパス"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Print\Printers"の下に属する１つのプリンターノードの、さらに下のプリンタドライバノードの下の設定データの一部を示す。図４中、名前、種類、データはそれぞれエントリーの名前、データ型及び値である。
【００３０】
例えば、StatusMonitorキーは、データ型が数値（REG_DWORD）で、値が０(0x00000000)であることを示している。すなわち、画像形成装置２０で発生したイベントをＰＣ１０で表示させるステータスモニターが、オフに設定されていることを示している。IPAddressキーは、データ型が文字列(REG_SG)で値が"192.168.2.1"であり、画像形成装置２０のＩＰアドレスが１９２．１６８．２．１であることを示している。また、Notification1キーは、データ型が文字列の配列(REG_MULTI_SG)で値が｛"JobStatus", "1"｝であり、画像形成装置２０からＰＣ１０へのイベント通知の種別が"JobStatus"で通知有であることを示している。同様に、Notification2キーは、データ型が文字列の配列で値が｛"PrinterStatus", "0"｝であり、画像形成装置２０からＰＣ１０へのイベント通知の種別が"PrinterStatus"で通知無であることを示している。
【００３１】
プリンタドライバ６０Ａには、イベント通知設定部６５が含まれ、これにより、上記印刷パラメータの設定時に、ステータスモニターのオン／オフやイベント種別毎の上記通知有無を設定可能となっている。この点は、プリンタドライバ６０Ｂ及び６０Ｃについても同様である。
【００３２】
ＰＣ１０から画像形成装置２０〜２２のそれぞれに対するイベントの登録及びこれらからＰＣ１０へのイベントの通知は、ＷＳ−Ｅｖｅｎｔｉｎｇ仕様に基づいて行われる。すなわち、サブスクライバ６６から画像形成装置２０へのイベント通知登録要求（Subscribe要求）に基づき画像形成装置２０に登録されたイベントの種別及び通知先アドレスに従って、画像形成装置２０で発生したイベントがステータスモニター６７に通知されて表示される。
【００３３】
ステータスモニター６７は、イベントシンク６７０とＵＩ部６７１とを備え、イベントシンク６７０は、通知されたイベントをイベントログ部６８に記録するとともにＵＩ部６７１に通知する。ＵＩ部６７１はこれに応答して、通知内容をダイアログボックスにポップアップ表示させる。上記ログは、ＯＳのイベントビュアで閲覧することができる。
【００３４】
サブスクライバ６６及びイベントシンク６７０は、いずれも常駐プログラムであって、ＯＳがＷｉｎｄｏｗｓ（登録商標）である場合、Ｗｉｎｄｏｗｓサービスアプリケーションである。なお、イベントシンク６７０からＵＩ部６７１への通知は、イベントシンク６７０がイベントログ部６８にイベントを記録することにより発生するEntryWrittenイベントにより、間接的にＵＩ部６７１を呼び出す方式であってもよい。
【００３５】
サブスクライバ６６及びイベントシンク６７０は、ＯＳにより、ＯＳの起動時に起動され、ＯＳの終了時に終了される。
【００３６】
サブスクライバ６６は、ＳＯＡＰ処理部６９内のＳＯＡＰプロキシに対しＷｅｂサービスメソッドを呼び出すと、その内容が該プロキシでＸＭＬシリアライズされてＳＯＡＰメッセージに変換され、通信部６３内のＨＴＴＰ／ＴＣＰ／ＩＰプロトコルスタックを介し画像形成装置２０に送信される。画像形成装置２０からのイベント通知メッセージは、ネットワーク３０及び通信部６３を介しＳＯＡＰ処理部６９内のＳＯＡＰリスナでＸＭＬデシリアライズされ、イベント通知オブジェクトとしてイベントシンク６７０に伝達される。
【００３７】
画像形成装置２０では、印刷ジョブデータがネットワーク３０及び通信部７０内のＴＣＰ／ＩＰプロトコルスタックを介し画像形成装置本体部７１に供給されて、このデータがビットマップ展開され、そのラスタデータで感光ドラムが露光させて静電潜像が形成され、この像がトナーで現像され、用紙に転写され、定着されて排紙される。
【００３８】
一方、ＰＣ１０からのイベント通知登録要求のＳＯＡＰメッセージは、ネットワーク３０及び通信部７０内のＨＴＴＰ／ＴＣＰ／ＩＰプロトコルスタックを介しＳＯＡＰ処理部７２に供給されてＸＭＬデシリアライズされ、イベント通知登録要求オブジェクトとしてイベントソース７３のサブスクリプションマネージャ７３０に供給される。サブスクリプションマネージャ７３０は、これに応答して後述のように、イベントデータベース８０にイベント通知情報を登録する。
【００３９】
図５（Ａ）〜（Ｃ）はそれぞれ、このイベントデータベース８０に含まれるイベント種別テーブル８１、イベントテーブル８２及びサブスクリプションズテーブル８３の構成例を示す。イベント種別テーブル８１には、通知可能なイベント種別の名前とコードとが対応して登録されている。イベントテーブル８２には、イベントの名前とコードとが対応して登録されている。この例では、イベントコードは４桁であり、その上位２桁がイベントの種別コード、下位２桁がイベントのサブコードとなっている。すなわち、イベントコード０１００〜０１０４はイベント種別がJobStatusEventであり、イベントコード０２００〜０２０２はイベント種別がPrinterStatusEventであることを示している。
【００４０】
イベント通知登録要求のＳＯＡＰメッセージには、要求元のＩＰアドレスを含むReplyToアドレス（サブスクライバ６６のアドレス）と、要求元のＩＰアドレスを含むNotifyToアドレス（イベントシンク６７０のアドレス）と、要求先のＩＰアドレスを含むToアドレス（サブスクリプションマネージャ７３０のアドレス）と、Filter要素としてのイベント種別とが含まれる。イベント種別がJobStatusEventの場合にはFilter要素としてさらに、要求元のユーザＩＤ（UserID）が含まれる。上記アドレスにおけるＰＣ１０内及び画像形成装置２０内でのポート番号及びパスは、既定のものが用いられる。これらアドレスは、構成ファイル（不図示）に記述したものを用いてもよい。
【００４１】
サブスクリプションマネージャ７３０は、上記ＳＯＡＰメッセージの内容に基づき後述のようにしてSubscription（行）を作成して図５（Ｃ）に示すようなサブスクリプションズテーブル８３に登録する。
【００４２】
画像形成装置本体部７１でイベントが発生すると、そのコードがイベントソース７３の通知マネージャ７３１に供給される。通知マネージャ７３１はこれに応答して、サブスクリプションズテーブル８３から、このコードの上位２桁に一致するイベント種別コードを持つ行を読み出す毎に、後述の処理を行う。
【００４３】
図６は、サブスクライバ６６によるイベント通知登録（Subscribe）要求処理を示すフローチャートである。この処理は、ＯＳの起動時に、ＯＳにより呼び出されて実行される。ステップＳ０〜Ｓ３の処理は、全プリンタドライバのそれぞれについて行うループ処理である。以下、括弧内は図中のステップ識別符号である。
【００４４】
（Ｓ０）レジストリ６４に登録されている全てのプリンタドライバ設定情報から、すなわち、例えば上記Printersキーのパスの下に属する各プリンタのドライバに関するキー群のキーをスキャンして、StatusMonitorキーのエントリーを１つ取得する。なお、プリンタドライバキーからの相対パスが既知であれば、プリンタドライバキーを見つける毎にStatusMonitorキーのパスを直接指定してそのエントリーを取得してもよい。
【００４５】
（Ｓ１）ヒットした場合には、ステップＳ２へ進み、ヒットするものが無ければ、すなわち全プリンタドライバについて処理済みであれば、図６（Ａ）の処理を終了する。
【００４６】
（Ｓ２）StatusMonitorキーの値が１であればステップＳ３へ進み、０であればステップＳ０へ戻る。
【００４７】
（Ｓ３）このStatusMonitorキーが属するプリンタドライバキーの下のキー群のうち、"Notification"が含まれるキーのエントリーを取得し、上記通知有無の値が通知有を示していれば、すなわちその配列のインデックスが１の要素の値が１であれば、インデックスが０の要素の文字列をイベント種別として取得する。該種別がジョブに関するもの、本実施例ではJobStatausEventであればさらに、ＯＳのログインユーザＩＤをレジストリ６４内の特定のパスから取得する。該種別及びユーザＩＤをFilter要素の値として含むSubscribe要求のＳＯＡＰメッセージを、サブスクリプションマネージャ７３０に送信する。
【００４８】
このＳＯＡＰメッセージには、ＰＣ１０のＩＰアドレスを含むサブスクライバ６６のアドレスが、ReplyToアドレスとして、該ＩＰアドレスを含むイベントシンク６７０のアドレスが、NotifyToアドレスとして、前記キー群に含まれるIPAddressキーの値をイベント通知登録要求先ＩＰアドレスとして含む画像形成装置２０のサブスクリプションマネージャ７３０のアドレスが、Toアドレスとして含まれている。
【００４９】
このステップＳ３の処理は、"Notification"が含まれるキーのそれぞれについて行う。次にステップＳ０へ戻る。
【００５０】
図６（Ｂ）は、上記Subscribe要求に対するサブスクリプションマネージャ７３０の処理を示す概略フローチャートである。
【００５１】
（Ｓ１０）イベント通知登録要求であればステップＳ１１へ進み、そうでなければステップＳ１２へ進む。
【００５２】
（Ｓ１１）サブスクリプションマネージャ７３０は、イベント種別テーブル８１を参照して、上記Subscribe要求メッセージに含まれるイベント種別をコードに変換し、サブスクリプションＩＤを生成し、現日時をタイムスタンプとして取得し、有効フラグを‘１’とし、これらの値と、イベント種別コードが０１であればさらに上記ユーザＩＤと、要求元ＩＰアドレスとを含む行を、Subscriptionとしてサブスクリプションズテーブル８３に登録し、このサブスクリプションＩＤを含む応答メッセージを、サブスクライバ６６に返信して図６（Ｂ）の処理を終了する。
【００５３】
サブスクライバ６６は、後述の図９の処理等で使用するため、このサブスクリプションＩＤを記憶しておく。
【００５４】
（Ｓ１２）要求に応じた他の処理を行って図６（Ｂ）の処理を終了する。
【００５５】
サブスクリプションマネージャ７３０は、定期的に、サブスクリプションズテーブル８３について有効フラグ更新処理を行う。すなわち、このテーブル８３の各行について、有効フラグが‘１’であり、且つ、現日時とこの行に含まれるタイムスタンプとの差が有効期限と等しいか大きければ、有効フラグを‘０’とし、この行に含まれるＩＰアドレスのホストのサブスクライバ６６へ有効期限が切れたことを通知する。
【００５６】
サブスクライバ６６は、この通知の内容を、ＵＩ部６７１を介しポップアップ表示させる。ユーザは、イベント通知設定部６５及びサブスクライバ６６を介し、サブスクリプションマネージャ７３０に対しサブスクリプションＩＤを伴ったRenew要求を行うことにより、有効フラグを‘１’にさせるとともにタイムスタンプを現時刻で更新させることができる。
【００５７】
図７は、画像形成装置本体部７１での印刷ジョブの処理と通知マネージャ７３１との関係を示す機能ブロック図である。
【００５８】
通信部７０から受け取った印刷ジョブデータは図２のＤＲＡＭ４４に格納され、そのヘッダには、ユーザＩＤが含まれている。このユーザＩＤは、ＰＣ１０において上記プリンタドライバにより付加されたものである。ジョブ管理部７１０は、ジョブを受け付けると、ジョブＩＤを付与する。このジョブＩＤは、画像形成装置２０のＩＰアドレス又はユーザＩＤを付加することにより、ＰＣ１０で同時期に他の画像形成装置に要求したジョブのＩＤと重ならないようにしてもよい。
【００５９】
印刷処理部７１１は、印刷ジョブ状態の変化時である処理開始時、印刷停止時、印刷一時停止時、印刷再開時及び印刷完了時のそれぞれ時点において、イベントジェネレータ７１２を呼び出す。イベントジェネレータ７１２は、このようなジョブ状態の変化の場合、図５（Ｂ）に示すイベントコード０１００〜０１０４のうち前記時点に対応したものと、上記ユーザＩＤとジョブＩＤとを、構造体のデータ又はクラスのインスタンスであるEventArgs（イベントデータ）７１３の値として設定するとともに、イベントハンドラとしての通知マネージャ７３１を呼び出す。イベントジェネレータ７１２は、他の状態の変化の場合、その変化を示すイベントコードと、上記ユーザＩＤ及びジョブＩＤをＮＵＬＬ値にしたものとを、EventArgs７１３の値として設定するとともに、イベントハンドラとしての通知マネージャ７３１を呼び出す。
【００６０】
通知マネージャ７３１はこれらのそれぞれの呼び出しに応答して、図８に示す処理を開始する。
【００６１】
（Ｓ２０）EventArgs７１２の内容を取得する。次に、サブスクリプションズテーブル８３の各行について、以下のステップＳ２１〜Ｓ２８の処理を実行する。
【００６２】
（Ｓ２１）サブスクリプションズテーブル８３から１行のデータ（サブスプリクション）を読み出す。
【００６３】
（Ｓ２２）この行の有効フラグが‘１’であればステップＳ２３へ進み、そうでなければステップＳ２８へ進む。
【００６４】
（Ｓ２３）上記行のイベント種別コードが、EventArgs７１２のイベントコードの上位２桁であるイベント種別コードと一致すれば、ステップＳ２４へ進み、そうでなければステップＳ２８へ進む。
【００６５】
（Ｓ２４）EventArgs７１２にユーザＩＤが含まれていれば、即ち、ユーザＩＤがＮＵＬＬでなければ、ステップＳ２５へ進み、含まれていなければステップＳ２７へ進む。
【００６６】
（Ｓ２５）このユーザＩＤが、上記行のユーザＩＤに一致すれば、ステップＳ２６へ進み、そうでなければ、ステップＳ２８へ進む。
【００６７】
（Ｓ２６）上記行に含まれるＩＰアドレスのホストのイベントシンク６７０へ、イベントコードに対応したイベントが発生したことを通知するための情報を、ＳＯＡＰ処理部７２に供給する。
【００６８】
ＳＯＡＰ処理部７２はこの情報をＸＭＬのＳＯＡＰメッセージに変換し（シリアライズし）、通信部７０及びネットワーク３０を介してＰＣ１０に送信する。次にステップＳ２８へ進む。
【００６９】
この情報には、EventArgs７１２のイベントコードの上位２桁に対応したイベント種別の名前と、該イベントコードに対応したイベントの名前と、EventArgs７１２のジョブＩＤと、現日時であるイベント発生日時とが含まれている。
【００７０】
前記メッセージは、ＳＯＡＰ処理部６９でオブジェクトに変換されて、イベントシンク６７０へ伝達され、イベントログ部６８に記録されると共に、ＵＩ部６７１でダイアログボックスにその内容がポップアップ表示される。
【００７１】
（Ｓ２７）ステップＳ２６と同じ処理を行う。但し、通知内容にはジョブＩＤが含まれない。
【００７２】
（Ｓ２８）サブスクリプションズテーブル８３の最終行でなければ、ステップＳ２１へ戻り、最終行であれば図８の処理を終了する。
【００７３】
以上の構成において、例えば、ユーザがデスクトップコンピュータとノートパソコンとを同一ユーザＩＤ（ＯＳのログイン時のユーザＩＤ）で利用しているとする。ノートパソコンについては、ＯＳがブートした後に、ＵＩ部６７１が自動起動されるように設定しておく。
【００７４】
このような条件の下で、ユーザは、デスクトップパソコンのＯＳを起動させる。これにより、図６（Ａ）及び（Ｂ）の処理が実行されて、サブスクリプションズテーブル８３ＡのSubscriptionID＝１の行が登録される。次いで画像形成装置２０に対し印刷ジョブの処理を要求した後、会議等の為に移動して、ノートパソコンのＯＳを起動させる。これにより、図６（Ａ）及び（Ｂ）の処理が実行されて、サブスクリプションズテーブル８３ＡのSubscriptionID＝２の行が登録される。その後、印刷処理が完了して図８の処理が実行されると、このユーザの両パソコンに対してのみ、上記印刷ジョブの完了が通知されることになる。なお、この通知は、ノートパソコンのＯＳの起動が、この印刷ジョブの処理を要求する前であっても、行われる。
【００７５】
図９は、サブスクライバ６６によるイベント通知登録解除処理要求を示す概略フローチャートである。この処理は、ＯＳの動作終了時に、ＯＳにより呼び出されて実行される。ステップＳ３０〜Ｓ３２の処理は、上述のように記憶している全サブスクリプションのそれぞれについて行うループ処理である。
【００７６】
（Ｓ３０）上述のように記憶している全サブスクリプションＩＤのうちの１つを読み出す。
【００７７】
（Ｓ３１）読み出すものがなかったら図９の処理を終了し、そうでなければステップＳ３２へ進む。
【００７８】
（Ｓ３２）このサブスクリプションＩＤを含むイベント通知登録解除要求（Unsubscribe要求）のＳＯＡＰメッセージを、サブスクリプションマネージャ７３０に送信し、このサブスクリプションＩＤを記憶から削除し、ステップＳ３０へ戻る。
【００７９】
サブスクリプションマネージャ７３０は、この要求に応答して、サブスクリプションズテーブル８３から該当行を削除する。
【００８０】
図１中の他のＰＣ及び画像形成装置についても上記同様である。
【００８１】
本実施例１によれば、一方では、画像形成装置に処理が要求されるジョブデータにユーザＩＤ（図７参照）が含まれ、他方では、画像形成装置に登録されたサブスクリプションには、イベントの種別がジョブ状態、例えばJobStatusEventである場合、フィルター要素としてイベント種別のみならずユーザＩＤも含まれ（図５（Ｃ）参照）、イベント通知マネージャ７３１により、画像形成装置でのイベントの発生に応答して、サブスクリプションズテーブル８３に含まれているサブスクリプションのうち、そのイベント種別がジョブ状態であり、かつ、そのユーザＩＤが該ジョブデータに含まれるユーザＩＤと一致しているものについて、その通知先アドレスにイベントを通知するので、同一ユーザが１つのＰＣで画像形成装置に対しジョブ処理を要求した後、他のＰＣでこのジョブの変化の通知を該デバイスから受信することが可能であるとともに、両ＰＣに対してのみイベント通知が行われるので、ネットワークに結合されたそれぞれの画像形成装置及びＰＣの処理負担増大並びにネットワークトラフィックの増大を抑制することができるという効果を奏する。
【００８２】
また、イベントジェネレータ７１２により、画像形成装置内での状態変化がジョブ状態の変化である場合、ジョブ処理要求元のユーザＩＤがイベントデータとしてのEventArg７１２に設定され、この場合、イベント通知マネージャ７３１は、サブスクリプションズテーブル８３に含まれているサブスクリプションのうち、そのイベントの種類に該状態変化の値が属し且つそのユーザＩＤが該イベントデータのユーザＩＤに対応するものについて、イベントを通知すればよいので、従来のようにイベント発生毎にイベントの種類が特定監視先のみ通知すべきものであるか否かを判定するためのテーブルを検索する必要が無く、画像形成装置の処理負担を軽減することができるという効果を奏する。
【００８３】
また、一方では、イベントコードが、イベント種別コードとイベント種別に属する状態変化を示すコードとを含み、他方では、サブスクリプションズテーブル８３のサブスクリプションに含まれるイベント種別がイベント種別コードで表されているので、イベント通知マネージャ７３１は、該サブスクリプションのイベント種別コードが該イベントコードのイベント種別コードに一致しているか否かでフィルタリングを行うことができ、これにより、画像形成装置での処理が簡単になって、デバイスでの処理負担がより軽減されるという効果を奏する。
【００８４】
さらに、該状態変化がジョブ状態の変化である場合、イベント通知マネージャ７３１は、イベントジェネレータ７１２で設定されたジョブＩＤを通知内容に追加するだけで、より詳細なイベント情報を容易に通知することができるという効果を奏する。
【００８５】
また、ＯＳの起動時にサブスクライバ６６を起動させることにより、レジストリ６４が参照されて、ユーザが希望しているイベント通知登録が画像形成装置に対し自動的に行われるとともに、該画像形成装置に対する処理要求後直ちに該画像形成装置でイベントが発生してもこれをＰＣへ通知することができるという効果を奏する。
【００８６】
また、ＯＳの終了時にサブスクライバ６６により、通知登録要求が行われている画像形成装置に対しイベント通知登録解除要求が行われるので、前記効果を維持しつつ、サブスクリプションマネージャ７３０の負荷を軽減することができるという効果を奏する。
【実施例２】
【００８７】
実施例２では、ＰＣ１０の省電力モード移行時、例えばスタンバイモード又はスリープモードへの移行時に、その移行イベントの発生に応答して、ＰＣ１０で図９の処理を行い、省電力モードからの復帰時に、その復帰イベントの発生に応答して、ＰＣ１０及び画像形成装置２０でそれぞれ図６（Ａ）及び（Ｂ）の処理を行う。
【００８８】
図１０は、本実施例２で用いられるサブスクリプションズテーブル８３Ａの構成を示す。
【００８９】
このテーブル８３Ａは、ユーザＩＤの列が削除され、ユーザＩＤがイベント種別コードに組み込まれている点で、図５（Ｃ）のサブスクリプションズテーブル８３と異なっている。例えば、図５（Ｃ）のテーブルの第１行のフィルター要素であるイベント種別コード"01"と、フィルター要素であるユーザＩＤ"TARO.SUZUKI"とが、図１０のテーブルでは、両者が結合されて１つのイベント種別コード"TARO.SUZUKI:01"（１つのフィルター要素）となっている。
【００９０】
これに対応して、図１１のEventArgs７１２Ａは、ユーザＩＤがイベントコードに組み込まれている点で、図７のEventArgs７１２と異なっている。例えば、図７のEventArgs７１２のイベントコード"0104"とユーザＩＤ"TARO.SUZUKI"とが、図１１のEventArgs７１２Ａでは、両者が結合されて１つのイベントコード"TARO.SUZUKI:0104"となっている。
【００９１】
図１２は、通知マネージャ７３１Ａによる処理を示す概略フローチャートである。このフローチャートは、図８と、ステップＳ２５及びＳ２７が省略されている点で異なっている。但し、Ｓ２６Ａでは、EventArgs７１２ＡにジョブＩＤが含まれていればこれもイベント通知内容に含める。
【００９２】
他の構成は、実施例１と同一である。
【００９３】
本実施例２によれば、イベントの種別がジョブ状態である場合、一方では、イベントコードがユーザＩＤを含み、他方では、サブスクリプションズテーブル８３Ａのサブスクリプションが、イベント種別コードとユーザＩＤとが結合された１つのフィルター要素を含むので、イベント通知マネージャ７３１Ａは、ユーザＩＤの有無に拘わらず、各サブスクリプションについて、フィルター要素がイベントコードの一部（サブコード）を除いたものと一致しているか否かでフィルタリングを行うことができ、これにより、実施例１の場合よりも画像形成装置での処理が簡単になって、処理負担が軽減されるという効果を奏する。
【００９４】
以上において、本発明の好適な実施例を説明したが、本発明には他にも種々の変形例が含まれ、上記複数の実施例で述べた構成要素の他の組み合わせ、各構成要素の機能を実現する他の構成を用いたもの、当業者であればこれらの構成又は機能から想到するであろう他の構成も、本発明に含まれる。
【００９５】
例えば、上記イベントコード"TARO.SUZUKI:0104"を、ユーザＩＤと本来のイベントコードとを逆順に配置し、且つ、この本来のイベントコードの上位２桁と下位２桁とを逆順に配置して、"0401:TARO.SUZUKI"とし、図１２のステップＳ２３ではこの上位２桁を削除することによりイベント種別コード"01:TARO.SUZUKI"とし、サブスクリプションズテーブル８３Ａにおいてもイベント種別コードをこのような構成にしてもよい。
【００９６】
また、上記実施例ではJobStatusEventのジョブが印刷ジョブの場合を説明したが、印刷ジョブのPrintJobStatusEventやスキャンジョブのScanJobStatusEventなどのそれぞれを用い、それぞれを上述のように処理する構成であってもよい。
【００９７】
また、図６（Ａ）のステップＳ０で用いるデータベースはレジストリ６４に限定されず、他のデータベースであってもよいことは勿論である。
【００９８】
さらに、イベントシンク６７０は、プリンタドライバ起動時に起動し、プリンタドライバの動作終了時に終了する構成であってもよい。また、サブスクライバ６６とイベントシンク６７０とを１つの常駐アプリケーションとし、ＯＳ起動時に起動する構成であってもよい。
【００９９】
また、ネットワークデバイスは、複合機に限定されず、プリンタ、スキャナ、ファクシミリ装置又は他のデバイスであってもよい。
【符号の説明】
【０１００】
１０〜１Ｎ  ＰＣ
２０〜２２  画像形成装置
３０  ネットワーク
４１、５１  ＣＰＵ
４２、５２  インターフェイス
４３、５３  ＰＲＯＭ
４４、５４  ＤＲＡＭ
４５、５５  補助記憶装置
４６、５６  ネットワークインターフェイス
４７  会話型入出力装置
５７  操作パネル
５８  スキャナ
５９  プリンタ
５Ａ  ファックスモデム
６０Ａ〜６０Ｃ  プリンタドライバ
６１  文書作成アプリ
６２  ＧＤＩ
６３、７０  通信部
６４  レジストリ
６５  イベント通知設定部
６６  サブスクライバ
６７  ステータスモニター
６７０  イベントシンク
６７１  ＵＩ部
６８  イベントログ部
６９、７２  ＳＯＡＰ処理部
７１  画像形成装置本体部
７１０  ジョブ管理部
７１１  印刷処理部
７１２  イベントジェネレータ
７１３  EventArgs
７３  イベントソース
７３０  サブスクリプションマネージャ
７３１、７３１Ａ  通知マネージャ
８０  イベントデータベース
８１  イベント種別テーブル
８２  イベントテーブル
８３、８３Ａ  サブスクリプションズテーブル
【図１】
0005378553.tif 000002
【図２】
0005378553.tif 000003
【図３】
0005378553.tif 000004
【図４】
0005378553.tif 000005
【図５】
0005378553.tif 000006
【図６】
0005378553.tif 000007
【図７】
0005378553.tif 000008
【図８】
0005378553.tif 000009
【図９】
0005378553.tif 000010
【図１０】
0005378553.tif 000011
【図１１】
0005378553.tif 000012
【図１２】
0005378553.tif 000013