説明

印刷制御装置及び制御方法及びプログラム

【課題】複数の異なる印刷制御装置が同時に同一の印刷装置に対して複数の印刷処理の依頼をした際に、ジョブの削除やジョブの保留に伴う処理順の変更などによる印刷データの矛盾を発生させず保持でき、且つ印刷速度低下を招かないシステムの提供を目的とする。
【解決手段】本発明は、印刷装置に接続された情報処理装置であって、ジョブの状態及びデータ及び制御方法を管理する管理手段と、前記印刷装置へ前記ジョブを送信する前に、前記管理手段に前記ジョブの制御方法を問い合わせるジョブ制御問い合わせ手段と、前記ジョブ制御問い合わせ手段によって受信した前記ジョブの制御方法に基づいて、前記ジョブのデータを保存するタイミングを制御するジョブ制御手段とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は、印刷制御装置及び制御方法及びプログラムに関する。特にスプールしたジョブにおけるジョブデータの保存に関する。
【背景技術】
【0002】
近年、企業のオフィス等に複写装置、印刷装置が普及し、誰でも簡単に複写、印刷ができるようになった。こういった状況に伴って、社内文書の印刷物の流出を代表とするセキュリティ上の問題、無駄なプリント、誰が出力したかわからない放置プリントなどの問題が発生している。これらの問題を解決するために、ユーザ毎に各印刷処理に対する印刷文書名、印刷日時、用紙、部数、カラー/モノクロ等を集計する印刷履歴管理システムを実現している。
【0003】
印刷履歴管理システムでは、管理情報(例えば、顧客情報や印刷単価)をジョブに紐付け、印刷ログ(履歴)の一部として集計している。集計結果から、ユーザやグループ毎に設定した印刷上限を超えた場合はジョブを削除する等、高度なジョブ制御をするシステムが実現されている。例えば、特許文献1においては、画像処理装置の出力枚数を利用者毎に集計するためのシステムが開示されている。このシステムでは、複合機、プリントサーバ、クライアントPC(Personal Computer)および管理装置がネットワークに接続されている。そして、複合機の複写機能を利用した場合の利用者毎の出力枚数が当該複合機において管理されるとともに、複写機のプリンタ機能を利用した場合の利用者毎の出力枚数がプリンタサーバで管理されるようになっている。
【0004】
このような印刷履歴管理システムによって、印刷ジョブ(印刷を指示するコマンド、描画命令、印刷属性、及び実行時刻等の付属情報を含む一連のデータストリームを指す。以下「ジョブ」と略すことがある)に含まれる描画命令や印刷属性(以下これらを総称して「印刷データ」と呼ぶ)を解析し、カラー印刷ジョブ等のジョブ削除や、強制的に両面印刷する等のジョブ制限を行うジョブ制御システムを実現している。その他に印刷ログを集計する方法として、特許文献2には、印刷装置が印刷ログ(履歴)を作成し、集計サーバが印刷装置固有のコマンドを定期的に発行する。そして、その時点の印刷ログを取得する方法、および印刷装置が自ら印刷ログを集計サーバに通知する方法が開示されている。
【0005】
また、特許文献3には、印刷指示した情報処理装置(クライアントPC)が、印刷属性を元に印刷ログを作成し、集計サーバに通知する方法が開示されている。
【0006】
一方、ジョブのPDL(ページ記述言語)データや、PDLデータから印刷イメージ画像をビットマップに展開したデータ、またPDLデータとビットマップの中間データ(以下、これらデータを総称してアーカイブデータと呼ぶ)を保存し、情報漏洩が発生した場合、流出経路を速やかに特定するジョブアーカイブシステムが実現している。印刷データや印刷イメージを保存することをユーザに告知することで、ユーザの情報管理の意識を高め、不正印刷の防止に役立っている。特許文献4では、プリントサーバが印刷データを受信し、印刷データからビットマップを生成し、印刷ログとして保存する方法が開示されている。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開平11−205498号公報
【特許文献2】特開2002−268966号公報
【特許文献3】特開2000−112706号公報
【特許文献4】特開2002−14937号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
上述した印刷履歴システムとジョブアーカイブシステムは、それぞれ別個のシステムとして印刷制御システムに適用される場合は問題ないが、両者が同時に一つの印刷制御システムに単純に適用されると、不具合が発生する場合がある。例えば、ジョブの削除や保留が行われると、印刷履歴システムとジョブアーカイブシステムの実行タイミングによって、そのジョブのデータがアーカイブされないといったことが挙げられる。
【0009】
また、印刷データの保存はファイルを作成し、ファイルに印刷データを複製することにより実現する。一般的に、ファイルサイズが大きくなると、複製には時間を要することとなる。例えば、ポートモニタが印刷データの複製機能を持ち、印刷データ送信時に複製処理及び保存処理を行うとすると、印刷データの複製が終了するまで印刷データの送信を完了できず、印刷処理の速度低下の一因となりうる。
【0010】
本発明は、上記問題に鑑みてなされたもので、複数の異なる印刷制御装置が同時に同一の印刷装置に対して複数の印刷処理の依頼をした際に、ジョブの削除やジョブの保留に伴う処理順の変更などに影響されずジョブデータを保持し、且つ印刷速度低下を招かないシステムの提供を目的とする。
【課題を解決するための手段】
【0011】
上記課題を解決するために、本発明は以下の構成を特徴とする。印刷装置に接続された情報処理装置であって、ジョブの状態及びデータ及び制御方法を管理する管理手段と、前記印刷装置へ前記ジョブを送信する前に、前記管理手段に前記ジョブの制御方法を問い合わせるジョブ制御問い合わせ手段と、前記ジョブ制御問い合わせ手段によって受信した前記ジョブの制御方法に基づいて、前記ジョブのデータを保存するタイミングを制御するジョブ制御手段とを有する。
【発明の効果】
【0012】
上記構成によれば、クライアントコンピュータでジョブを削除し、印刷装置において印刷を行わない場合においても印刷データを保存することが可能になる。
【0013】
また、ジョブの送信を保留する場合において、ジョブの送信を待たず、印刷データの保存が可能になる。これにより、ジョブ保留後、印刷が実行された場合、再アーカイブすることがなく、利便性が向上する。また、ジョブの送信を再開後におけるジョブの送信時は、ジョブの送信速度の低下を招かない。
【0014】
また、予めアーカイブしていたジョブの印刷データに対し、属性変更が発生した場合においては、属性変更後のジョブを保存することが可能になり、最終的に印刷を行ったデータに対するジョブアーカイブを実現可能となる。
【0015】
以上により、複数の異なる目的をもった印刷制御装置を同時に稼動し、同一の印刷装置に対して印刷処理を依頼したとしても、印刷制御装置の仕様上の制限を発生させず、保持データを漏れなく保持し、且つ印刷速度低下を招かないシステムの提供するという目的を達成することが可能となる。
【図面の簡単な説明】
【0016】
【図1】本発明の実施形態にかかる印刷システムの構成の一例を示すブロック図である。
【図2】本発明の実施形態にかかる印刷システムの詳細な構成の一例を示すブロック図である。
【図3】本発明の実施形態にかかる印刷装置の管理情報の表示に関する一例である。
【図4】実施形態にかかる印刷履歴管理システムを構成するクライアントコンピュータ上で動作するモジュール及びジョブの流れの一例を示す図である。
【図5】実施形態にかかるジョブアーカイブシステムを構成するクライアントコンピュータ上で動作するモジュール及びジョブの流れの一例を示す図である。
【図6】印刷履歴管理システムにおけるジョブ削除のシーケンスを示す一例である。
【図7】印刷履歴管理システムにおけるジョブ保留のシーケンスを示す一例である。
【図8】ジョブアーカイブシステムにおけるジョブアーカイブのシーケンスを示す一例である。
【図9】実施形態にかかるポートモニタの基本動作を示すフローの一例である。
【図10】第一の実施形態にかかるジョブ開始時における、ポートモニタの基本動作を示すフローの一例である。
【図11】第一の実施形態にかかるジョブ送信時における、ポートモニタの基本動作を示すフローの一例である。
【図12】第一の実施形態にかかるジョブ終了時における、ポートモニタの基本動作を示すフローの一例である。
【図13】実施形態にかかるジョブアーカイブシステムにおけるアーカイブモジュールの基本フローを示す一例である。
【図14】実施形態にかかる印刷履歴管理システムにおけるスプーラ監視モジュールの基本フローを示す一例である。
【図15】実施形態にかかる情報入力UIの基本動作を示すフローの一例である。
【図16】第二の実施形態にかかるジョブ開始時における、ポートモニタの基本動作を示すフローの一例である。
【図17】第二の実施形態にかかるジョブ送信時における、ポートモニタの基本動作を示すフローの一例である。
【図18】第二の実施形態にかかるジョブ終了時における、ポートモニタの基本動作を示すフローの一例である。
【図19】第三の実施形態にかかるジョブ開始時における、ポートモニタの基本動作を示すフローの一例である。
【図20】第三の実施形態にかかるジョブ送信時における、ポートモニタの基本動作を示すフローの一例である。
【発明を実施するための形態】
【0017】
以下、図面を参照して、本発明の好適な実施形態を例示的に詳しく説明する。ただし、この実施の形態に記載されている構成要素はあくまで例示であり、本発明の技術的範囲は、特許請求の範囲によって確定されるのであって、以下の個別の実施形態によって限定されるわけではない。まず、各実施形態に共通の構成を、図1乃至図8を参照して説明する。
【0018】
<システム構成>
図1は、本発明の実施形態にかかる印刷システムの構成を示すブロック図である。情報処理装置101〜104は、イーサネット(登録商標)などのネットワークケーブルによって、ネットワーク106に接続されている。さらに、各情報処理装置は、アプリケーションプログラム等の各種のプログラムを実行可能であり、印刷データをプリンタに対応するプリンタ言語に変換する機能を有するプリンタドライバを搭載している。また、ネットワーク106に接続されている他の機器と双方向に通信可能な通信装置を備えている。 プリンタドライバは複数のプリンタをサポートするものである。また、プリンタ(印刷装置)は、電子写真方式を採用したレーザービームプリンタ、インクジェット方式を採用したインクジェットプリンタ、熱転写方式を利用したプリンタ等の様々な方式のもののうち何れであってもよい。
【0019】
情報処理装置101はホストコンピュータであるサーバ(以下、管理サーバと呼ぶ)としての機能を有する。情報処理装置102はホストコンピュータであるサーバ(以下、プリントサーバと呼ぶ)としての機能を有する。管理サーバ101およびプリントサーバ102はネットワークケーブルによってネットワーク106に接続されており、ネットワーク106に接続された各機器で使用されるファイルを蓄積したり、ネットワーク106に接続された機器の使用状態を監視したりする。また、管理サーバ101およびプリントサーバ102は、ネットワーク106に接続されている他の機器と双方向に通信可能な通信装置を備えており、情報処理装置の他、複数のプリンタの管理も行っている。
【0020】
クライアントコンピュータ103、104、管理サーバ101、及びプリントサーバ102は一般的な情報処理装置である。管理サーバ101、およびプリントサーバ102は、クライアントコンピュータ103、104としての機能を併せて持つこともできる。(以降、管理サーバ、プリントサーバをクライアントと呼ぶこともある)、クライアントコンピュータ103、104、管理サーバ101、及びプリントサーバ102には、それぞれ異なる制御を行う印刷制御プログラムが実行可能に格納されている。
【0021】
管理サーバ101は、印刷装置105の情報を管理し、印刷装置の印刷ログ、動作ログ等を集計し保持する機能を備えている。さらに、管理サーバ101はクライアントコンピュータ103、104、及びプリントサーバ102から印刷ログやアーカイブデータを収集し保持する機能を有している。さらに、管理サーバ101はユーザ情報、ネットワーク機器の情報を管理している。プリントサーバ102は、クライアントコンピュータ103、104から印刷要求が出された印刷データを含むジョブを格納し、印刷装置に送信する。印刷データとは、印刷装置がサポートしているPDLで記載された描画命令や、ビットマップ等の印刷されるデータのことである。
【0022】
また、プリントサーバ102は、クライアントコンピュータ103、104から印刷データを含まないジョブ情報(例えば、オーナー名、ジョブID等の印刷物に印字されない情報)のみを受け取ってクライアントコンピュータ103、104の印刷順序を管理する。そして、印刷の順番が来たクライアントコンピュータに対して印刷データを含むジョブの送信許可を通知する。さらに、印刷装置105のステータスやジョブの各種情報を取得してクライアントコンピュータ103、104に通知する機能を揃えている。ネットワークプリンタ105は印刷装置であり、ネットワークインタフェース(不図示)を介してネットワーク106に接続されている。さらに、クライアントコンピュータ102、103、104から送信される印刷データを含むジョブを解析して1ページずつイメージに変換して、1ページ毎に印刷する。ネットワーク106にはクライアントコンピュータ103、104、サーバ101、102、ネットワークプリンタ105等が接続されている。
【0023】
図2を用いて、情報処理装置及び印刷装置の内部構成を説明する。CPU200はクライアントコンピュータ102、103、104の制御手段である。CPU200は、ハードディスク装置(HD)205に格納されているアプリケーションプログラム、プリンタドライバプログラム、OSや本発明のネットワークプリンタ制御プログラム等を実行する。さらに、RAM202にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。ROM201は記憶手段であり、内部には基本I/Oプログラム等のプログラム、文書処理の際に使用するフォントデータ、テンプレート用データ等の各種データが記憶される。一時記憶手段であるRAM202は、CPU200の主メモリ、ワークエリア等として機能する。FDドライブ203は記憶媒体読み込み手段及び書き込み手段である。
【0024】
後述する図5に示すように、FDドライブ203を介して、記憶媒体としてのフロッピー(登録商標)ディスク(FD)204に記憶されたプログラム等をクライアントである本コンピュータシステムにロードすることができる。なお、記憶媒体読み込み手段はFDドライブに限定するものではなく、記憶媒体もまたFDに限らず、CD−ROM、CD−R、CD−RW、PCカード、DVD、ICメモリカード、MO、メモリスティック等、任意である。FD204には、コンピュータによって読み取り可能なプログラムが格納されている。HD205は外部記憶手段の一つであり、大容量メモリとして機能するハードディスク装置であり、アプリケーションプログラム、プリンタドライバプログラム、OS、ネットワークプリンタ制御プログラム、関連プログラム等が格納されている。さらにスプーラがここに保持される。スプーラは、クライアントコンピュータにおいてはクライアントスプーラであり、プリントサーバ102ではサーバスプーラである。また、プリントサーバ102では、クライアントコンピュータから受けたジョブ情報を格納し、順序制御を行うためのテーブルも生成された後、この外部記憶手段であるHD205に格納される。キーボード(KBD)206は、ユーザがクライアントコンピュータに対して、また、オペレータや管理者がプリントサーバに対して、デバイスの制御コマンドの命令等を入力する手段である。表示部(CRT)207は、キーボード206から入力されたコマンドや、プリンタの状態等をユーザに対し表示するものである。システムバス208、クライアントコンピュータ内のデータの流れを司るものである。情報処理装置1の構成要素はシステムバス208によって互いに接続している。ポインティングデバイス(PD)209は、ポインティングデバイス209を介してクライアントコンピュータは外部装置とのデータのやり取りを行う。接続部210は、前述の双方向インタフェース211を介して後述する印刷装置2の接続部226に接続し、印刷制御コマンド(送信データ)を受信や、印刷装置内部の状態等を通知する事も可能である。
【0025】
本実施形態では、FD204からネットワークプリンタ制御プログラム及び関連データを直接にRAM202にロードして実行する例を示す。その他、FD204からネットワークプリンタ制御プログラムを動作させる際に、既にHD205にインストールされているネットワークプリンタ制御プログラムをRAM202にロードするようにしてもよい。プログラム及び関連データを実行する際の呼び出し方法はここで示したものに限定するわけではなく、これ以外の方法で実行しても良い。なお、ネットワークプリンタ制御プログラムを記憶する媒体は、FD以外にCD−ROM、CD−R、PCカード、DVD、ICメモリカード等であってもよい。さらに、ネットワークプリンタ制御プログラムをROM201に記憶しておき、これをメモリマップの一部となすように構成し、直接にCPU200で実行することも可能である。
【0026】
次に印刷装置の詳細構成を説明する。印刷装置2は、詳細を後述する接続部226、データ制御部(プリンタエンジン)225、操作部224、外部メモリ223、PCPU220、PRAM222、及びPROM221を主要な構成要素する。これらの構成要素がシステムバス227を介して互いに接続されている。プリンタCPU(PCPU)220は、印刷装置2の全体制御を司るものである。PCPU220は、後述するPROM221或いは外部メモリ223に記憶された制御プログラムに基づいて、接続部226で受信したプリンタ制御コマンド(送信データ)より、画像信号をデータ制御部225に送信する。PRAM222は、PCPU220の主メモリとして、PCPU220による制御実行時、ワークデータエリアとして使用される各種データの一時記憶領域を備えている。外部メモリ223は、オプションとしても接続され、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶する。PROM221はプリンタ内部メモリであり、外部メモリと同様に、各種データや本印刷装置を制御するプリンタ制御プログラム等を記憶している。
【0027】
データ制御部225はプリンタエンジンであり、PCPU220により制御され、PROM221、或いは外部メモリ223に記憶された制御プログラムよりシステムバス227を介して出力された画像信号を受け、実際の印刷処理を行う。操作部224は、操作パネルや操作スイッチ等の入力部、及びLED、液晶パネル等の表示部等から構成され、オペレータの操作を受け、結果を表示するものである。オペレータは操作部224を介して本実施形態における印刷装置2の設定を指示や、確認することが可能である。接続部226は、前述の双方向インタフェース211を介して情報処理装置1の接続部210に接続し、印刷制御コマンド(送信データ)を受信や、印刷装置内部の状態等を通知する事も可能である。また、以上の各装置と同等の機能を実現するソフトウェアをもって、ハードウェア装置の代替として構成することもできる。ジョブを作成するクライアントコンピュータ、ジョブを送信するプリントサーバ、システムを管理する管理サーバは、同一の情報処理装置であっても、別の情報処理装置であっても本発明は適用することが可能である。
【0028】
図3は、実施の形態にかかる情報入力画面の一例である。このダイアログは、後述する図4に記載のスプーラ監視モジュールによって、クライアントコンピュータの表示部207に表示され、ユーザからキーボード206等の入力装置による入力を受け付ける。課金コード入力領域301、入力確定ボタン302、ジョブ操作ボタン(一時停止303、再開304、削除305)、表示の更新ボタン306、ジョブリスト表示部307を持つ。ジョブリスト表示部307では、ジョブリストを、ジョブ毎にジョブID、ドキュメント名、ジョブオナー、課金コード、状態の項目を一覧表示することができる。ユーザの指示により、ジョブを複数選択可能である。選択されたジョブは反転表示される。ジョブが選択されると、課金コード入力領域301が有効になり、任意の文字列を入力すること可能になる。
【0029】
<ジョブの流れ>
図4は、本実施形態にかかる印刷履歴管理システムを構成するクライアントコンピュータ上で動作するモジュール、印刷装置の関係および、ジョブの流れの一例を示す図である。クライアントコンピュータでは、例えば一般的に普及しているパーソナルコンピュータ(本発明の情報処理装置に相当する)にMicrosoft社のWindows(登録商標)をOSとして使用する。さらに、印刷処理機能を有するMicrosoft社製のWord(登録商標)等のアプリケーション401を起動する。ユーザは、キーボード206やポインティングデバイス209等の指示装置を用いて、ドキュメントを作成し、アプリケーションに用意された印刷指示手段によって、印刷指示をする。アプリケーション401は、印刷データをプリンタドライバ402に渡し、ジョブを作成する。プリンタドライバ402は作成したジョブをスプーラ403に渡す。スプーラ403は複数のドライバから渡されたジョブを、ユーザ指定のプリンタ毎にジョブをスケジューリングし、プリンタが接続されているポートに対応するポートモニタ404にジョブを渡す。ポートモニタ404は、ポート(例えばUSBポートやネットワークポート)に対応するデバイスドライバ405を適宜呼び出し、デバイスドライバ405にジョブを渡す。デバイスドライバ405は、所定の方法に基づき、接続部210を介し、印刷装置406とコネクションを確立し、印刷装置406にジョブを渡す。スプーラ監視モジュール407は、クライアントコンピュータ起動時に自動的に動作開始し、OSにおいて利用可能なスプーラ機能を用い、スプーラ403を監視する。プリンタドライバの追加、削除、変更ならびに、プリンタドライバ毎のジョブの生成、状態を監視する。スプーラにジョブが生成されたと判定されたときは、利用可能なジョブリスト408の記憶領域に、ジョブを状態やサイズ、プリンタドライバ名、オーナー名、ドキュメント名、日時等の付属情報とともに格納する。同時に情報入力UI410表示する。情報入力UI410は、クライアントコンピュータの表示部207に、図3に図示する情報入力ダイアログを表示する。情報入力UI410はユーザからの入力を受け取ったら、HD205に格納されているジョブリスト408に記憶されているジョブ情報に、入力情報を反映する。さらに、スプーラ監視モジュール407は、所定のログ通知時刻になるとログをサーバ通知モジュール409に渡す。サーバ通知モジュール409は所定の方法に基づき、接続部210を介し図示していないログ種集サーバとコネクションを確立し、ログをログ種集サーバに通知する。
【0030】
図5は、本実施形態にかかるジョブアーカイブシステムを構成するクライアントコンピュータ上で動作するモジュール、印刷装置の関係および、ジョブの流れの一例を示す図である。クライアントコンピュータでは、例えば一般的に普及しているパーソナルコンピュータ(本発明の情報処理装置に相当する)にMicrosoft社のWindows(登録商標)をOSとして使用する。さらに、印刷処理機能を有するMicrosoft社製Word(登録商標)等のアプリケーション501を起動する。ユーザは、キーボード206やポインティングデバイス209等の入力装置を用いて、ドキュメントを作成し、アプリケーションに用意された印刷指示手段によって、印刷指示をする。アプリケーション501は、印刷データをプリンタドライバ502に渡し、ジョブを作成する。プリンタドライバ502は作成したジョブをスプーラ503に渡す。スプーラ503は複数のドライバから渡されたジョブを、ユーザ指定のプリンタ毎にジョブをスケジューリングし、プリンタが接続されているポートに対応するポートモニタ504にジョブを渡す。
【0031】
ポートモニタ504は、ポート(例えばUSBポートやネットワークポート)に対応するデバイスドライバ505を適宜呼び出し、デバイスドライバ505にジョブを渡す。デバイスドライバ505は、所定の方法に基づき、接続部210を介し、印刷装置506とコネクションを確立し、印刷装置506にジョブを渡す。アーカイブモジュール507は、クライアントコンピュータ起動時に自動的に動作開始する。さらに、ポートモニタ504からジョブのジョブデータを受け取り、アーカイブデータを生成し、HD205に格納されているアーカイブデータ508に保存する。さらに、アーカイブモジュール507は、所定のアーカイブデータ送信時刻になると、アーカイブデータ508からアーカイブデータを取得し、サーバ通知モジュール509に渡す。サーバ通知モジュール509は所定の方法に基づき、接続部210を介しアーカイブデータ種集サーバ(不図示)とコネクションを確立し、アーカイブデータをアーカイブデータ種集サーバに通知する。
【0032】
<ジョブ削除のシーケンス>
図6は、印刷履歴管理システムにおけるジョブ削除のシーケンスを示す一例である。スプーラシステムは、スプール済みのジョブ一覧からプリンタ毎にジョブを順番に取り出し、ポートモニタの公開関数を適宜呼び出し、印刷装置にジョブを送信する。最初に、ジョブの開始時にポートモニタの公開関数であるStartDocPort()を呼ぶ。StartDocPort()が呼び出されたポートモニタは、スプーラ監視モジュールにジョブの開始を通知し、スプーラ監視モジュールからジョブ制御結果を受け取る。スプーラ監視モジュールは、印刷実行者が印刷権限を有する上限値を超えて印刷を実施する印刷上限超過や、印刷制限(例えば、カラー禁止)など印刷を許可しない条件を満たす場合は、ジョブ制御結果として「ジョブ削除」を通知する。ジョブ制御結果が「ジョブ削除」の場合、ポートモニタは、該当ジョブの削除をスプーラに依頼し、StartDocPort()を終了する。ジョブの削除を依頼されたスプーラシステムは、ポートモニタの公開関数WritePort()を呼び出さず、ポートモニタの公開関数のEndDocPort()を呼び出す。EndDocPort()が呼び出されたポートモニタは、スプーラ監視モジュールにジョブの終了を通知し、EndDocPort()を終了する。EndDocPort()の呼び出しが終了したスプーラシステムは、該当ジョブをスプーラから削除する。
【0033】
従来例においては、以上のような流れでジョブ削除の処理を行うが、この手法では削除対象となるジョブのアーカイブができないこととなる。
【0034】
<ジョブ保留のシーケンス>
図7は、印刷履歴管理システムにおけるジョブ保留のシーケンスを示す一例である。スプーラシステムは、スプール済みのジョブ一覧からプリンタ毎にジョブを順番に取り出し、ポートモニタの公開関数を適宜呼び出し、印刷装置にジョブを送信する。最初に、ジョブの開始時にポートモニタの公開関数であるStartDocPort()を呼ぶ。StartDocPort()が呼び出されたポートモニタは、スプーラ監視モジュールにジョブの開始を通知し、スプーラ監視モジュールからジョブ制御結果を受け取る。スプーラ監視モジュールは、課金コードが設定されていない、指定期間内の印刷上限超過等、印刷の即時実行を許可しない条件を満たす場合は、ジョブ制御結果に「ジョブ保留」を通知する。ジョブ制御結果が「ジョブ保留」の場合、ポートモニタは、該当ジョブのリスタートと一時停止をスプーラに依頼し、StartDocPort()を終了する。ジョブのリスタートと一時停止を依頼されたスプーラシステムは、ポートモニタの公開関数WritePort()を呼び出さず、ポートモニタの公開関数のEndDocPort()を呼び出す。EndDocPort()が呼び出されたポートモニタは、スプーラ監視モジュールにジョブの終了を通知し、EndDocPort()を終了する。
【0035】
一定時間が経過後、ユーザによって課金コードが入力されたなど、ジョブの保留条件が解除された場合、スプーラ監視モジュールは該当ジョブの再開をスプーラシステムに依頼する。ジョブの再開を依頼されたスプーラシステムは、ポートモニタの公開関数であるStartDocPort()を呼ぶ。StartDocPort()が呼び出されたポートモニタは、スプーラ監視モジュールにジョブの開始を通知し、スプーラ監視モジュールからジョブ制御結果としてジョブ実行許可を受け取る。ジョブ制御結果が「ジョブ実行許可」を受け取ったポートモニタは、StartDocPort()を終了する。次に、スプーラシステムは、ポートモニタの公開関数WritePort()を呼び出し、該当ジョブをポートモニタに渡す。ジョブサイズが大きい場合は、必要に応じて分割し、WritePort()呼び出しを複数回実行する。WritePort()を呼ばれたポートモニタは、渡されたジョブを印刷装置に送付し、送付成功サイズをスプーラシステムに返す。スプーラシステムは、1回のWritePort()呼び出しで返された送付成功サイズが、渡したジョブサイズ未満の場合は、残りのサイズのジョブを次のWritePort()呼び出しで渡す。該当ジョブの全データを送信終了するまで繰り返す。全データの送付が終わるとスプーラシステムは、ポートモニタの公開関数のEndDocPort()を呼び出す。EndDocPort()が呼び出されたポートモニタは、スプーラ監視モジュールにジョブの終了を通知し、EndDocPort()を終了する。EndDocPort()の呼び出しが終了したスプーラシステムは、該当ジョブをスプーラから削除する。印刷装置からジョブの終了を通知されたポートモニタは、ジョブの結果をスプーラ監視モジュールに通知する。
【0036】
以上のような流れでジョブ保留の処理を行うが、この手法では保留対象となるジョブのアーカイブは処理再開時に行うこととなり、送信処理の際の負荷が増大してしまう。また、当該ジョブに対するアーカイブができないこととなる。
【0037】
<ジョブアーカイブのシーケンス>
図8は、のジョブアーカイブシステムにおけるジョブアーカイブのシーケンスを示す一例である。スプーラシステムは、スプール済みのジョブ一覧からプリンタ毎にジョブを順番に取り出し、ポートモニタの公開関数を適宜呼び出し、印刷装置にジョブを送信する。最初に、ジョブの開始時にポートモニタの公開関数であるStartDocPort()を呼ぶ。StartDocPort()が呼び出されたポートモニタは、アーカイブモジュールにジョブの開始を通知し、アーカイブモジュールからジョブ制御結果を受け取る。アーカイブモジュールは、アーカイブが必要と判断した場合は、ジョブ制御結果に「アーカイブ必要」を通知する。
【0038】
ジョブ制御結果が「アーカイブ必要」の場合、ポートモニタは、StartDocPort()を終了する。次に、スプーラシステムは、ポートモニタの公開関数WritePort()を呼び出し、該当ジョブをポートモニタに渡す。ジョブサイズが大きい場合は、必要に応じて分割し、WritePort()呼び出しを複数回実行する。WritePort()を呼ばれたポートモニタは、渡されたジョブを印刷装置に送付する。さらにポートモニタは、印刷装置への送付成功サイズのジョブをアーカイブモジュールに渡す。ジョブを受け取ったアーカイブモジュールは、アーカイブデータを作成し保持する。スプーラシステムは、1回のWritePort()呼び出しで返された送付成功サイズが、渡したジョブサイズ未満の場合は、残りのサイズのジョブを次のWritePort()呼び出しで渡す。該当ジョブの全データを送信終了するまで繰り返す。全データの送付が終わるとスプーラシステムは、ポートモニタの公開関数のEndDocPort()を呼び出す。EndDocPort()が呼び出されたポートモニタは、アーカイブモジュールにジョブの終了を通知し、EndDocPort()を終了する。EndDocPort()の呼び出しが終了したスプーラシステムは、該当ジョブをスプーラから削除する。
【0039】
<第一の実施形態>
以下に第一の実施形態を、図9、図10、図11、図12、図13、図14、図15を用いて説明する。図9〜図12までは一連のフローを分割したものである。また、図6〜図8における処理の主体(スプーラ、ポートモニタ、印刷装置、スプーラ監視モジュール、アーカイブモジュール)はそれぞれ図9〜図15に対応している。
【0040】
図9は、本実施形態にかかるポートモニタの基本動作を示すフローの一例である。説明の簡便のため、ポートモニタは、Microsoft社のWindows(登録商標)上のスプーラシステム起動時に自動で起動され、スプーラシステム終了時に自動で終了するものとする。また、MSDN(Microsoft Developer Network)(登録商標)で公開されているプリントモニタ関数を実装しているものとする。S901で、スプーラからの呼び出された関数を判定し、公開関数StartDoc()である場合は、図10(A)に示すフローに進み、ジョブ開始時の処理を行う。S901でStartDoc()と判定しなかった場合は、S902へ進み、スプーラからの呼び出された関数を判定し、公開関数WritePort()である場合は、図11(B)に示すフローに進み、ジョブ送信処理を行う。S902でStartDoc()と判定しなかった場合は、S903へ進み、スプーラからの呼び出された関数を判定し、公開関数EndDocPort()である場合は、図12(C)に示すフローに進み、ジョブ終了処理を行う。S903において、公開関数EndDocPort()でないと判定された場合は、S901へ戻る。この場合、他の関数の処理を行っても良いが、本実施形態ではそれらに関する説明は省略する。
【0041】
図10は、第一の実施形態にかかるジョブ開始時における、ポートモニタの基本動作を示すフローの一例である。S1001で、フラグを初期化する。ここでのフラグとは、処理対象のジョブについて、ジョブを削除するか否かを決定する「削除フラグ」、ジョブをアーカイブするか否かを決定する「アーカイブフラグ」、ジョブがアーカイブ済みか示す「アーカイブ済みフラグ」の3つを指す。CPU200を用い、RAM202等の記憶装置のワーク領域にジョブ毎に領域を確保し、各フラグに初期値「0」として設定し、保存する。ここでの初期値“0”は全て「否」を示す値とする。次にS1002で、ジョブ制御の問い合わせをする。すなわち、利用可能な通信手段を用い、スプーラ監視モジュールおよびアーカイブモジュールに、ジョブの制御方法を問い合わせる。これがジョブ制御問い合わせ手段としての役割を有することとなる。次にS1003で、CPU200を用いてS1002の問い合わせ結果からジョブの削除が必要か否かを判定する。S1003で、ジョブの削除が必要と判定したときはS1004へ進み、CPU200を用いて、RAM202等の記憶領域に確保した削除フラグに1をセットし、保存する。その後、図9のS901へ戻る(D)。S1003で、ジョブの削除が必要であると判定しなかったときは、S1005へ進み、CPU200を用いてS1002の問い合わせ結果が、ジョブのアーカイブが必要か否かを判定する。S1005で、ジョブのアーカイブが必要と判定したときは、S1006でCPU200を用いて、RAM202等の記憶領域に確保したアーカイブフラグに1をセットし、保存する。その後、図9のS901へ戻る(D)。S1005で、ジョブのアーカイブが必要と判定しなかったときは、図9のS901へ戻る(D)。
【0042】
図11は、第一の実施形態にかかるジョブ送信時における、ポートモニタの基本動作を示すフローの一例である。S1101で、該当ジョブがアーカイブ必要で、且つアーカイブ済みでないか判定する。すなわちCPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブのアーカイブフラグが1で、且つアーカイブ済みフラグが0のときは、該当ジョブにおいてアーカイブが必要で、且つ既にアーカイブ済みでないと判定する。S1101で該当ジョブがアーカイブ必要で、且つアーカイブ済みでないと判定した場合はS1102へ進み、ジョブをアーカイブする。すなわち、利用可能な通信手段により、ジョブをアーカイブモジュールに渡す。アーカイブモジュールは、受け取ったジョブを利用可能な方法によりアーカイブし、HD205等の記憶装置に確保した領域にアーカイブデータを保存する。S1101で該当ジョブにおいてアーカイブが必要でない、または、アーカイブ済みであると判定した場合はS1103へ進み、該当ジョブを送信するか否かを判定する。すなわち、CPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブの削除フラグが1になっている場合は、送信の必要がないと判定し、図9のS901へ戻る(D)。S1103で、ジョブ送信が必要と判定した場合は、S1104へ進み、利用可能な方法によりジョブを、デバイスドライバ405を介して印刷装置に送信する。続いて、図9のS901へ戻る(D)。
【0043】
図12は、第一の実施形態にかかるジョブ終了時における、ポートモニタの基本動作を示すフローの一例である。S1201でジョブの削除が必要か判定する。すなわち、CPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブのジョブ削除フラグが1になっている場合は、ジョブの削除が必要と判定する。S1201でジョブの削除が必要と判定した場合は、S1202へ進み、ジョブの削除を実行する。ポートモニタは、スプーラシステムにて利用可能な手段により、該当ジョブの削除を依頼する。例えば、Microsoft社のWindows(登録商標)に用意されているスプーラ関数SetJob()にパラメータとして、該当ジョブのジョブハンドルコマンドJOB_CONTROL_CANCELを渡す等の方法により実現する。その後、S1203へ進む。S1201でジョブの削除が必要でないと判定したときは、S1203へ進む。S1203では、ジョブがアーカイブ済みか否かを判定する。すなわち、CPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブのアーカイブフラグが1になっている場合は、ジョブのアーカイブが終了したと判定する。その後、S1205へ進む。S1203でジョブがアーカイブ済みであると判定したときは、S1204でアーカイブ済みフラグに1をセットする。すなわち、CPU200を用いて、RAM202等の記憶領域に確保したアーカイブ済みフラグに1をセットし、保存する。その後、S1205へ進む。S1205では、スプーラ監視モジュールに対しジョブ結果通知を行う。その後、図9のS901へ戻る(D)。
【0044】
<アーカイブモジュールの基本フロー>
図13は、本実施形態にかかるジョブアーカイブシステムにおけるアーカイブモジュールの基本フローを示す一例である。説明の簡便のため、アーカイブモジュールは、クライアントコンピュータに搭載されたOS起動とともに起動し、また、予めポートモニタとの間に通信経路が開かれているものとする。S1301で、ポートモニタからジョブ制御の問い合わせを受信したか否かを判定する。S1301でポートモニタからジョブ制御の問い合わせと判定した場合は、S1302へ進み、ポートモニタへの応答処理を実行する。すなわち、予めアーカイブモジュールに備えられた応答処理の方法に基づき、ポートモニタにアーカイブが必要である旨を通知する。その後、S1301へ戻る。ここでの応答処理の方法は従来技術のものを利用してかまわないため、ここでは特に明記しない。S1301でポートモニタからジョブ制御の問い合わせでないと判定した場合、S1303へ進み、ジョブデータを受信したか否かを判定する。S1303でジョブデータを受信したと判定した場合は、S1304へ進み、予め備えられたアーカイブ処理の方法に基づき、CPU200を用い、アーカイブデータを作成し、HD205等の記憶装置に保持する。ここでのアーカイブ処理の方法は従来技術のものを利用してよいため、ここでは特に明記しない。その後、S1301に進む。S1303でジョブデータを受信していないと判定した場合は、S1305へ進み、ジョブ終了通知を受信したか否かを判定する。S1305でジョブデータを受信したと判定した場合は、S1306へ進み、所定のアーカイブ処理の方法に基づきS1304で作成したアーカイブデータを、アーカイブ収集サーバに通知するためにサーバ通知モジュール509を介して送信する。その後、S1301へ戻る。S1305でジョブデータを受信していないと判定した場合は、S1301へ戻る。
【0045】
<スプーラ監視モジュールの基本フロー>
図14は、本実施形態にかかる印刷履歴管理システムにおけるスプーラ監視モジュールの基本フローを示す一例である。説明の簡便のため、スプーラ監視モジュールは、クライアントコンピュータに搭載されたOS起動とともに起動し、予めポートモニタとの間に通信経路が開かれているものとする。S1401で、ポートモニタからジョブ制御の問い合わせを受信したか判定する。S1401でポートモニタからジョブ制御の問い合わせと判定した場合は、S1402へ進み、ポートモニタへの応答処理を実行する。すなわち、予めスプーラ監視モジュールに備えられた応答処理の方法に基づき、ポートモニタにジョブ削除が必要と通知する。ただし、応答処理はジョブ削除に限定するものではなく、前に述べたジョブ保留やその他の内容であっても良い。その後、S1401へ戻る。ここでの応答処理の方法は従来技術のものを利用してかまわないため、ここでは特に明記しない。S1401でジョブ制御の問い合わせとして判定されなかった場合は、S1403へ進む。S1403では、ジョブ一覧を取得する。例えば、Microsoft社のWindows(登録商標)に用意されているWin32関数EnumJob()を呼び出し、印刷ジョブの一覧を取得し、予めRAM202、HD205等の記憶装置に確保されているワーク領域に保存する。続いてS1404へ進み、S1403で取得したジョブ一覧の中に、新規ジョブが発生したか否かを判定する。すなわち、CPU200を用い、印刷履歴管理システムが保持するジョブリストと比較し、新しいジョブIDのジョブが追加されている場合は、新規のジョブが発生したと判定する。ジョブリストに関しては後述する。S1404にて新規ジョブが発生していないと判定された場合は、S1409へ進む。S1404にて、新規ジョブが発生したと判定された場合はS1405へ進み、S1403で取得した新規ジョブと新規ジョブに付属する情報をジョブ一覧から抽出し、ジョブリストに追加する。
【0046】
ここでのジョブリストとは、ジョブ毎に、ジョブIDおよび、ドキュメント名等のジョブに付属する情報を持ち、さらに、ジョブ毎に、課金コード等の印刷システムが付加する追加情報を合わせて持つ。また、ジョブリストはスプーラ監視モジュールが起動時にRAM202、HD205等の記憶装置に確保した所定の場所に保存される。ジョブに付属する情報は、Microsoft社のWindows(登録商標)に用意されているWin32関数GetJob()や、印刷システム独自の手段などで取得する。
【0047】
その後、S1406へ進む。次に、S1406で、S1405で作成したジョブリストにジョブが1件以上あるか否かを判定する。すなわち、CPU200を用い、RAM202、HD205等の記憶装置に確保した所定の場所に保存されているジョブリスト408を検索し、ジョブのレコード数を計算する。ジョブリスト中のジョブが0件であると判断したときは、S1401へ戻る。S1406で、ジョブが1件以上であると判定したときはS1407へ進み、情報入力UI410が表示済か否かを判定する。例えば、Microsoft社のWindows(登録商標)に用意されているWin32関数FindWindow()を呼び出し、情報入力UI410が使用するウィンドウが存在する場合は、既に情報入力UI410が表示済と判定する。
【0048】
情報入力UIが表示済の場合は、S1401へ戻る。S1407で情報入力UI410が表示していないと判定した場合はS1408へ進み、所定の手続きに基づき、情報入力UI410を表示部207等の表示装置に表示する。その後、S1401へ戻る。S1404で新規ジョブが発生していないと判定したときは、S1409へ進み、ジョブが終了したか否かを判定する。すなわち、CPU200を用いて、S1403で取得したジョブ一覧とRAM202、HD205等の記憶装置に確保した所定の場所に保存されているジョブリスト408を比較する。ジョブ一覧からジョブリストに含まれているジョブがなくなっていれば、ジョブリストに保持していたジョブが終了したと判定する。S1409でジョブが終了したと判定したときはS1410へ進み、ログをログ収集サーバに通知するために送付する。すなわち、CPU200を用いて、RAM202、HD205等の記憶装置に確保した所定の場所に保存されているジョブリスト408から終了ジョブのレコードを取り出し、ログを作成し、サーバ通知モジュール409にログを渡す。その後、ジョブリスト408からは該当レコードを削除し、RAM202、HD205等の記憶装置に確保した所定の場所に保存する。サーバ通知モジュール409は、所定の手続きによりログをログ収集サーバに通知する。その後、S1401へ戻り、以降の処理を繰り返す。S1409にてジョブが終了していないと判定した場合は、S1405へ進み、以降の処理を実行する。
【0049】
<情報入力UIの基本フロー>
図15は、本実施形態にかかる情報入力UIの基本動作を示すフローの一例である。S1501で、ボタンクリック等のイベントが発生したか否かを判定する。例えば、Microsoft社のMSDN Library(登録商標)で開示されている方法では、マウスによるクリックやキーボード入力等の操作と、ウィンドウ内のボタンやリストボックス等の各リソースを一意に決定するIDが、イベントとして通知される。イベントが発生するまでS1501を繰り返す。S1501でイベント発生したと判定した場合はS1502へ進み、イベントがジョブ選択か否かを判定する。すなわち、S1501で取得したイベントに、図3におけるジョブリスト領域のレコードの示すIDと、マウスの左ボタン操作が含まれるときは、ジョブ選択と判定する。S1502でジョブ選択と判定した場合はS1503へ進み、該当レコードを利用可能な方法で反転表示する。その後、S1501へ戻り、以降の処理を繰り返す。S1502でジョブ選択と判定しなかった場合はS1504へ進み、「入力」ボタンがクリックされたか否かを判定する。すなわち、S1501で取得したイベントに、図3における「入力」ボタンを示すIDと、マウスの左ボタン操作が含まれるときは、「入力」ボタンクリックと判定する。
【0050】
S1504で「入力」ボタンクリックと判定した場合はS1505で、ジョブリストに課金コードを設定する。CPU200を用い、利用可能な方法により、図3ジョブリスト領域の反転表示されているレコードを検索し、見つかったレコードからジョブIDを取得する。RAM202やHD205等の記憶装置に保存されているジョブリストのうち、該当IDを持つレコードの課金コード領域に、図3における第一コード、第2コード、第3コードのそれぞれの値を設定する。その後、S1501へ進み、以降の処理を繰り返す。S1504で「入力」ボタンクリックと判定しなかった場合はS1506で、「一時停止」ボタンがクリックされたか否かの判定をする。すなわち、S1501で取得したイベントに、図3における「一時停止」ボタンを示すIDと、マウスの左ボタン操作が含まれるときは、「一時停止」ボタンクリックと判定する。S1506で「一時停止」ボタンクリックと判定した場合はS1507へ進み、CPU200を用い、利用可能な方法により、図3においてジョブリスト領域の反転表示されているレコードを検索し、見つかったレコードからジョブIDを取得する。次に、Microsoft社のWindows(登録商標)に用意されているWin32関数SetJob()で該当ジョブを指定し、ジョブの一時停止処理(pause)を行う。その後、S1501へ戻り、以降の処理を繰り返す。
【0051】
S1506で「一時停止」ボタンクリックと判定しなかった場合はS1508へ進み、「再開」ボタンがクリックされたか否かを判定する。すなわち、S1501で取得したイベントに、図3における「再開」ボタンを示すIDと、マウスの左ボタン操作が含まれるときは、「再開」ボタンクリックと判定する。S1508で「再開」ボタンクリックと判定した場合はS1509へ進み、CPU200を用い、利用可能な方法により、図3におけるジョブリスト領域の反転表示されているレコードを検索し、見つかったレコードからジョブIDを取得する。次に、Microsoft社のWindows(登録商標)に用意されているWin32関数SetJob()で該当ジョブを指定し、ジョブの再開(Resume)を行う。その後、S1501へ戻り、以降の処理を繰り返す。S1508で「再開」ボタンクリックと判定しなかった場合はS910へ進み、「削除」ボタンがクリックされたか否かを判定する。すなわち、S1501で取得したイベントに、図3における「削除」ボタンを示すIDと、マウスの左ボタン操作が含まれるときは、「削除」ボタンクリックと判定する。S1510で「削除」ボタンクリックと判定した場合はS1511へ進み、CPU200を用い、予め用意されている方法により、図3におけるジョブリスト領域の反転表示されているレコードを検索し、見つかったレコードからジョブIDを取得する。
【0052】
次に、Microsoft社のWindows(登録商標)に用意されているWin32関数SetJob()で該当ジョブを指定し、ジョブの削除(Delete)を行う。その後、S1501へ戻り、以降の処理を繰り返す。S1510で「削除」ボタンクリックと判定しなかった場合はS1512へ進み、「更新」ボタンがクリックされたか否かを判定するする。すなわち、S1501で取得したイベントに、図3における「更新」ボタンを示すIDと、マウスの左ボタン操作が含まれるときは、「更新」ボタンクリックと判定する。S1512で「更新」ボタンクリックと判定した場合はS1513へ進み、ジョブ一覧を再取得する。例えば、Microsoft社のWindows(登録商標)に用意されているWin32関数EnumJob()、Win32関数GetJob()等や、印刷システム独自の手段を呼び出し、印刷ジョブおよび付属情報の一覧を取得する。取得したジョブ情報で、予めRAM202、HD205等の記憶装置に確保されているジョブリストの情報を更新する。続いて、S1514へ進み、S1513で更新したジョブリスト情報を元に、図3におけるジョブリスト領域の表示を更新する。その後、S1501へ戻り、以降の処理を繰り返す。S1512において、「更新」ボタンクリックと判定しなかった場合は、S1501へ進み、以降の処理を繰り返す。
【0053】
以上説明した方法によれば、印刷履歴管理システムがジョブを削除する場合でも、削除の処理のタイミングよりも前にアーカイブを行うこととなる。よって、ジョブアーカイブシステムは削除の処理に影響されること無く、ジョブをアーカイブすることが可能になる。
【0054】
<第二の実施形態>
以下に第二の実施形態について図9、図13、図14、図15、図16、図17、図18を用いて説明する。第一の実施形態では、ジョブを削除する印刷履歴管理システムについて説明したが、第二の実施形態では、あるユーザにおける処理可能なジョブの上限値を超えたときにジョブを削除せず実行を停止するシステムへの適用を考える。ここでは、第一の実施形態と共通点も存在するため、異なる点のみ説明する。図16、図17、図18のフローが第一の実施形態と異なる。また、第一の実施形態と同様、図6〜図8における処理の主体(スプーラ、ポートモニタ、印刷装置、スプーラ監視モジュール、アーカイブモジュール)はそれぞれ図16〜図18にも対応している。
【0055】
図16は、第二の実施形態にかかるジョブ開始時における、ポートモニタの基本動作を示すフローの一例である。第一の実施形態で述べた図10に対応するフローとなっている。S1601で、フラグを初期化する。ここでのフラグとは、ジョブを保留するか否かを決定する「保留フラグ」、ジョブをアーカイブするか否かを決定する「アーカイブフラグ」、ジョブがアーカイブ済みか示す「アーカイブ済みフラグ」である。CPU200を用い、RAM202等の記憶装置のワーク領域にジョブ毎に領域を確保し、各フラグに初期値「0」を設定し保存する。
【0056】
次にS1602で、ジョブ制御の問い合わせをする。すなわち、利用可能な通信手段を用い、スプーラ監視モジュールおよびアーカイブモジュールに、ジョブの制御方法を問い合わせる。続いて、S1603で、CPU200を用いてS1602の問い合わせ結果に基づいてジョブの保留が必要か否かを判定する。S1603で、ジョブの保留が必要と判定したときはS1604へ進み、CPU200を用いて、RAM202等の記憶領域に確保した保留フラグに1をセットし、保存する。その後、図9のS901へ戻る(D)。S1603で、ジョブの削除が必要と判定しなかったときは、S1605へ進み、CPU200を用いてS1602の問い合わせ結果に基づいて、ジョブのアーカイブが必要か否かを判定する。S1605で、ジョブのアーカイブが必要と判定したときは、S1606へ進み、CPU200を用いて、RAM202等の記憶領域に確保したアーカイブフラグに1をセットし、保存する。その後、図9のS901へ戻る(D)。S1605で、ジョブのアーカイブが必要と判定しなかったときは、図9のS901へ戻る(D)。
【0057】
図17は、第二の実施形態にかかるジョブ送信時における、ポートモニタの基本動作を示すフローの一例である。第一の実施形態で述べた図11に対応するフローとなっている。S1701で、該当ジョブに対しアーカイブが必要で、且つアーカイブ済みでないかを判定する。すなわちCPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブのアーカイブフラグが「1」で、且つアーカイブ済みフラグが「0」ときは、該当ジョブに対しアーカイブが必要で、且つアーカイブ済みでないと判定する。S1701で該当ジョブがアーカイブ必要で、且つアーカイブ済みでないと判定した場合はS1702へ進み、ジョブをアーカイブする。すなわち、利用可能な通信手段により、ジョブをアーカイブモジュールに渡す。アーカイブモジュールは、受け取ったジョブを利用可能な方法によりアーカイブし、HD205等の記憶装置に確保した領域にアーカイブデータを保存する。S1701で該当ジョブに対しアーカイブ必要でない、または、アーカイブ済みと判定した場合はS1703へ進み、該当ジョブを送信せずに保留するか送信するかを判定する。すなわち、CPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブの保留フラグが1になっている場合は、送信の必要がなく保留すると判定し、図9のS901へ進む(D)。S1703で、保留せず、ジョブ送信が必要と判定した場合は、S1704へ進み、利用可能な方法によりジョブを印刷装置に送信する。次に、図9のS901へ進む(D)。
【0058】
図18は、第二の実施形態にかかるジョブ終了時における、ポートモニタの基本動作を示すフローの一例である。これは第一の実施形態における図12に対応するフローである。S1801でジョブの保留が必要か否かを判定する。すなわちCPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブのジョブ保留フラグが1になっている場合は、ジョブの保留が必要と判定する。S1801でジョブの保留が必要と判定した場合は、S1802へ進み、ジョブの保留を実行する。ポートモニタは、スプーラシステムにおいて利用可能な手段により、該当ジョブの一時停止、及び、リスタートを依頼する。例えば、Microsoft社のWindows(登録商標)に用意されているスプーラ関数SetJob()にパラメータとして、該当ジョブのジョブハンドル用コマンドJOB_CONTROL_PAUSE、JOB_CONTROL_RESTARTを渡す等の方法により実現する。リスタートの後、S1803に進む。S1801でジョブの保留が必要でないと判定したときは、S1803へ進む。S1803では、ジョブがアーカイブ済みか否かを判定する。すなわち、CPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブのアーカイブフラグが1になっている場合は、ジョブのアーカイブが終了したと判定する。S1803でジョブがアーカイブ済みと判定したときは、S1804へ進み、アーカイブ済みフラグを1にセットする。すなわち、CPU200を用いて、RAM202等の記憶領域に確保したアーカイブ済みフラグに1をセットし、保存する。その後、S1805へ進む。S1805においてアーカイブ済みで無いと判定したときは、S1805へ進む。S1805ではジョブ結果通知をスプーラ監視モジュールに対し行う。その後、図9のS901へ戻る(D)。
【0059】
以上説明した方法によれば、ジョブの印刷を保留する場合においても、アーカイブシステムは保留の制御指示を受けたタイミングでジョブをアーカイブすることが可能になる。また、ジョブ保留後に印刷が実行された場合、再アーカイブする必要がなく、利便性が向上する。また、ジョブ処理再開後の印刷では、アーカイブすることがないので、アーカイブによる負荷が発生せず、印刷パフォーマンスの劣化が発生しない。
【0060】
<第三の実施形態>
以下に第三の実施形態について図9、図13、図14、図15、図18、図19、図20を用いて説明する。第二の実施形態では、ジョブを保留する印刷履歴管理システムについて説明したが、第三の実施形態においては、ジョブデータを修正し片面印刷を強制的に両面印刷に変更する等、属性変更をするシステムへの適用を考える。第二の実施形態との共通点もあるため、ここでは第二の実施形態と異なる点のみ説明する。図19、図20のフローが第二の実施形態と異なる。また、第二の実施形態と同様、図6〜図8における処理の主体(スプーラ、ポートモニタ、印刷装置、スプーラ監視モジュール、アーカイブモジュール)はそれぞれ図19、図20にも対応している。
【0061】
図19は、第三の実施形態にかかるジョブ開始時における、ポートモニタの基本動作を示すフローの一例である。S1901で、フラグを初期化する。ここでのフラグとは、ジョブを保留するか否かを決定する「保留フラグ」、ジョブの属性変更を行うか否かを決定する「変更フラグ」、ジョブの属性変更済みかを示す「変更済みフラグ」、ジョブをアーカイブするか否かを決定する「アーカイブフラグ」、ジョブがアーカイブ済みか示す「アーカイブ済みフラグ」である。CPU200を用い、RAM202等の記憶装置のワーク領域にジョブ毎に領域を確保し、各フラグに初期値「0」を設定し、保存する。次にS1902で、ジョブ制御の問い合わせをする。すなわち、利用可能な通信手段を用い、スプーラ監視モジュールおよびアーカイブモジュールに、ジョブの制御方法を問い合わせる。
【0062】
次にS1903で、CPU200を用いてS1902の問い合わせ結果に基づいてジョブの保留が必要か否かを判定する。S1903で、ジョブの保留が必要と判定したときはS1904へ進み、CPU200を用いてRAM202等の記憶領域に確保した保留フラグに1をセットし、保存する。その後、図9のS901へ戻る(D)。S1903で、ジョブの保留が必要と判定しなかったときは、S1905へ進み、CPU200を用いてS1902の問い合わせ結果に基づいて、ジョブのアーカイブが必要か否かを判定する。S1905で、ジョブのアーカイブが必要と判定したときは、S1906へ進み、CPU200を用いてRAM202等の記憶領域に確保したアーカイブフラグに1をセットし、保存する。その後、図9のS901へ戻る(D)。S1905で、ジョブのアーカイブが必要と判定しなかったときは、S1907へ進み、CPU200を用いてS1902の問い合わせ結果に基づいて、ジョブの属性変更が必要か否かを判定する。S1907で、ジョブの属性変更が必要と判断したときは、S1908へ進み、CPU200を用いて、RAM202等の記憶領域に確保した変更フラグに1をセットし、保存する。その後、図9のS901へ戻る(D)。S1907で、ジョブのアーカイブが必要と判定しなかったときは、図9のS901へ戻る(D)。
【0063】
図20は、第三の実施形態にかかるジョブ送信時における、ポートモニタの基本動作を示すフローの一例である。S2001で、該当ジョブがジョブの属性変更が必要か否かを判定する。すなわちCPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブの変更フラグが1になっているときは、該当ジョブの属性変更が必要であると判定する。S2001で該当ジョブに対し属性変更が必要と判定した場合はS2002で、ジョブの属性変更をする。すなわち、利用可能な通信手段により、ジョブの変更指示をスプーラ監視モジュール407から受ける。受けた変更指示に基づいて、スプーラ403から渡されたジョブに属性変更を実施する。例えば、CPU200を用い、スプーラ403から渡されたジョブ、または分割された一部のジョブを解析し、変更対象となる属性を検索し、必要に応じて更新する。属性変更をしたならば、RAM202等の記憶領域に確保したワーク領域に確保された該当ジョブの変更済みフラグを「1」にセットする。その後、S2003へ進む。S2001で該当ジョブに対し属性変更が必要ないと判定した場合はS2003へ進む。
【0064】
S2003では、該当ジョブに対しアーカイブが必要か否かを判定する。すなわちCPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブのアーカイブフラグが「1」且つ、変更済みフラグが「1」またはアーカイブ済みフラグが「0」ときは、該当ジョブに対しアーカイブが必要であると判定する。S2003で該当ジョブがアーカイブ必要と判定した場合はS2004へ進み、ジョブをアーカイブする。すなわち、利用可能な通信手段により、ジョブをアーカイブモジュール507に渡す。アーカイブモジュール507は、受け取ったジョブを利用可能な方法によりアーカイブし、HD205等の記憶装置に確保した領域にアーカイブデータを保存する。S2003で該当ジョブに対しアーカイブが必要でない、またはアーカイブ済みと判定した場合はS2005で、該当ジョブを印刷装置へ送信するか、ジョブを保留して送信しないかを判定する。すなわち、CPU200を用い、RAM202等の記憶領域に確保したワーク領域に確保されたフラグを検索し、該当ジョブの保留フラグが1になっている場合は、ジョブを保留し送信の必要がないと判定して、図9のS901へ戻る(D)。S2005で、ジョブ送信が必要と判定した場合は、S2006で利用可能な方法によりジョブを印刷装置に送信する。その後、図9のS901へ戻る(D)。
【0065】
以上説明した方法によれば、ジョブ保留後にジョブ属性を変更した場合、ジョブ属性変更後の印刷データで再度アーカイブすることが可能になり、より実印刷を反映したジョブアーカイブを実現可能となる。
【0066】
第一の実施形態では、印刷履歴管理システムがジョブを削除する場合でも、ジョブアーカイブシステムはジョブをアーカイブすることが可能になる。
【0067】
第二の実施形態では、ジョブの印刷を保留する場合においても、アーカイブシステムは保留時にジョブをアーカイブすることが可能になる。また、ジョブ再開後に印刷が実行された場合、再アーカイブすることがなく、利便性が向上する。また、ジョブ再開後の印刷では、アーカイブすることがないので、アーカイブの負荷による印刷パフォーマンスの劣化が発生しない。
【0068】
第三の実施形態では、ジョブ保留に伴ってジョブ属性を変更した場合、ジョブ属性変更後の印刷データを、再度アーカイブすることが可能になり、最終的に印刷した設定におけるジョブアーカイブを実現可能となる。
【0069】
以上により、同一の印刷装置に対して複数の印刷処理を依頼したとしても、印刷制御装置の仕様上の制限を発生させず、保持データを漏れなく、且つ印刷速度低下を招かないシステムの提供するという目的を達成することが可能となる。
【0070】
<その他の実施形態>
なお本発明は、複数の機器(例えばホストコンピュータ、インタフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(例えば、複写機、ファクシミリ装置など)に適用してもよい。
【0071】
本発明の各工程は、ネットワーク又は各種記憶媒体を介して取得したソフトウエア(プログラム)をパソコン等の処理装置(CPU、プロセッサ)にて実行することでも実現できる。

【特許請求の範囲】
【請求項1】
印刷装置に接続された情報処理装置であって、
ジョブの状態及びデータ及び制御方法を管理する管理手段と、
前記印刷装置へ前記ジョブを送信する前に、前記管理手段に前記ジョブの制御方法を問い合わせるジョブ制御問い合わせ手段と、
前記ジョブ制御問い合わせ手段によって受信した前記ジョブの制御方法に基づいて、前記ジョブのデータを保存するタイミングを制御するジョブ制御手段と
を有することを特徴とする情報処理装置。
【請求項2】
前記ジョブ制御手段は、前記ジョブ制御問い合わせ手段により受信した前記ジョブの制御方法が削除である場合、前記印刷装置へ前記ジョブを送信せず前記ジョブのデータを保存し、前記ジョブのデータの保存が終了した後に前記ジョブを削除することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記ジョブ制御手段は、前記ジョブ制御問い合わせ手段により受信した前記ジョブの制御方法が保留である場合、前記印刷装置へ前記ジョブを送信せず前記ジョブのデータを保存し、前記ジョブのデータの保存が終了した後にジョブの実行を保留することを特徴とする請求項1または2に記載の情報処理装置。
【請求項4】
前記ジョブ制御手段は、前記ジョブ制御問い合わせ手段により受信した前記ジョブの制御方法が属性変更である場合、前記ジョブに対し属性変更の後のデータを保存することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
【請求項5】
印刷装置に接続された情報処理装置の制御方法であって、
前記情報処理装置の管理手段が、ジョブの状態及びデータ及び制御方法を管理する管理工程と、
前記情報処理装置のジョブ制御問い合わせ手段が、前記印刷装置へ前記ジョブを送信する前に、前記管理手段に前記ジョブの制御方法を問い合わせるジョブ制御問い合わせ工程と、
前記情報処理装置のジョブ制御手段が、前記ジョブ制御問い合わせ工程によって受信した前記ジョブの制御方法に基づいて、前記ジョブのデータを保存するタイミングを制御するジョブ制御工程と
を有することを特徴とする制御方法。
【請求項6】
コンピュータを、
ジョブの状態及びデータ及び制御方法を管理する管理手段と、
印刷装置へ前記ジョブを送信する前に、前記管理手段に前記ジョブの制御方法を問い合わせるジョブ制御問い合わせ手段と、
前記ジョブ制御問い合わせ手段によって受信した前記ジョブの制御方法に基づいて、前記ジョブのデータを保存するタイミングを制御するジョブ制御手段と
して機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate


【公開番号】特開2010−204746(P2010−204746A)
【公開日】平成22年9月16日(2010.9.16)
【国際特許分類】
【出願番号】特願2009−47019(P2009−47019)
【出願日】平成21年2月27日(2009.2.27)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】