以下、添付図面を参照しながら、本発明に係る情報処理システム、クライアント端末、情報処理方法およびプログラムの実施形態を詳細に説明する。
図1は、本実施形態の情報処理システム100の構成の一例を示す図である。図1に示すように、情報処理システム100は、クライアント端末10と、プリンタ20と、プリントサーバ30と、を備え、これらは例えばインターネットなどのネットワーク40を介して接続される。これらの装置は無線で接続されてもよいし有線で接続されてもよい。
本実施形態の情報処理システム100は、クライアント端末10に印刷ジョブを蓄積し、クライアント端末10に蓄積された印刷ジョブをプリンタ20から出力させる機能(クライアントプルプリント)と、クライアント端末10からの印刷ジョブをプリントサーバ30に蓄積し、プリントサーバ30に蓄積された印刷ジョブをプリンタ20から出力させる機能(プルプリント)とが共存するシステムである。本実施形態の情報処理システム100におけるクライアント端末10は、ユーザの指示に従って印刷ジョブを生成し、その生成した印刷ジョブのパラメータ(設定されたポート)に応じて、クライアント端末10およびプリントサーバ30の何れかを動的に選択し、選択した方に印刷ジョブを渡す。本実施形態はプルプリント及びクライアントプルプリントが共存するシステムであるが、これに限らず、例えばプルプリントのみが利用されるシステムであっても構わない。
なお、説明の便宜上、図1では、情報処理システム100に含まれるクライアント端末10およびプリンタ20の各々の台数が1台ずつである場合を例に挙げているが、これに限らず、これらの台数は任意に変更可能である。
クライアント端末10は、1以上のユーザによって利用される端末である。例えばユーザは、自身の業務や課題、あるいはその他任意の作業に関して、クライアント端末10を利用することができる。クライアント端末10は、例えばPC(Personal Computer)で構成される。一人のユーザがクライアント端末10を専有して利用するような形態もあれば、複数のユーザで共有されることを想定したクライアント端末10もある。クライアント端末10の具体的な構成については後述する。
プリントサーバ30は、「情報処理装置」の一例であり、クライアント端末10から受信した印刷ジョブが所定の条件を満たすか否かを判定し、その判定結果に応じた処理を行う。例えば印刷要求を行ったユーザのクライアント10端末上に所定のUI(例えば通知または確認のためのダイアログ等)を表示させた後に、印刷ジョブを出力先(何れかのプリンタ20)へ送信する、あるいは、自装置に蓄積する処理を行う。
プリンタ20は、クライアント端末10、あるいは、プリントサーバ30に蓄積された印刷ジョブを出力する装置である。なお、ここでは、出力装置の一例として、プリンタ20を例に挙げて説明するが、これに限らず、出力装置の種類は任意である。例えば出力装置としてMFP、コピー機、スキャナ、LPなどの画像形成装置の他、プロジェクタ等の表示出力を行う装置を用いてもよい。
図2は、クライアント端末10およびプリントサーバ30が有する機能の一例を示す図である。説明の便宜上、図2の例では、本実施形態に関する機能を例示しているが、クライアント端末10およびプリントサーバ30が有する機能はこれらに限られるものではない。
まず、クライアント端末10が有する機能について説明する。この例では、クライアント端末10のオペレーティングシステム(OS)上で動作するプログラムとして、クライアント端末情報送信部101、印刷アプリケーション102、プリンタドライバ103、スプーラ104、スプーラ監視部105、サービスプロセス110、ログイン中の複数のユーザと1対1に対応する複数のユーザプロセス120などがある。
クライアント端末情報送信部101は、情報処理システム100の起動時(各機器の電源投入時)に、クライアント端末10を特定可能なクライアント端末情報をプリントサーバ30へ送信する。この例では、クライアント端末情報は、クライアント端末10の名称を示すクライアント名と、ネットワーク40上のクライアント端末10を識別するためのIPアドレスと、から構成される。また、クライアント端末情報の送信先となるプリントサーバ30の宛先は予め登録されている。
印刷アプリケーション102は、ログイン中のユーザの操作に応じて、文書データなどのオリジナルデータ(印刷ジョブの元となるデータ)を作成する機能、印刷設定画面を表示する機能、印刷設定画面からオリジナルデータの印刷指示を受け付ける機能などを有している。この例では、ユーザは、印刷設定画面からオリジナルデータの印刷を指示する際に、対象となるオリジナルデータの指定に加えて、クライアント端末10に登録されたプリンタに対応するプリンタアイコンを指定する。つまり、印刷指示には、印刷対象のオリジナルデータの指定と、プリンタアイコンの指定とが少なくとも含まれる。なお、クライアント端末10には、印刷先を指定するプリンタアイコンが複数作成(登録)され、その設定値として利用するプリンタドライバ103やポートも設定される。この例では、プリンタドライバ103はプリンタアイコンごとに存在し、印刷アプリケーション102は、印刷設定画面から印刷指示を受け付けると、その受け付けた印刷指示により指定されたプリンタアイコンに対応するプリンタドライバ103に対して、該印刷指示により指定されたオリジナルデータを含み、かつ、該オリジナルデータの印刷を要求する印刷要求を送信する。この例では、この印刷要求はOSを介してプリンタドライバ103へ渡される。OSは、印刷アプリケーション102からの印刷要求に、クライアント名を付加してプリンタドライバ103へ渡す。
プリンタドライバ103は、印刷ジョブを生成する機能を提供する。プリンタドライバ103は、印刷アプリケーション102から印刷要求を渡されると、その印刷要求に基づいて印刷ジョブを生成し、その生成した印刷ジョブと、印刷要求に付加されていたクライアント名とを含む情報(以下の説明では「印刷ジョブ情報」と称する)をスプーラ104へ渡す。印刷ジョブは、描画データと、該描画データの印刷のために必要な情報を示す印刷情報と、を含む。印刷情報としては、印刷命令、ポートを示すポート情報、印刷条件(部数や色の設定等)、印刷を要求したユーザを識別するユーザ情報などを含む。これらの情報は、例えばPJL(Printer Job Language)などの任意の言語で記述されてもよいし、Windows(登録商標)などの標準の形式で定められてもよい。
スプーラ104は、プリンタドライバ103によって生成された印刷ジョブ情報を一時的に保存し、順次に実行していくための機能を提供する。スプーラ監視部105は、スプーラ104に印刷ジョブ情報が蓄積されるのを監視する。この例では、スプーラ監視部105は、スプーラ104に蓄積される印刷ジョブに含まれるポート情報を見て、該印刷ジョブの出力先が、情報処理システム100で利用(クライアントプルプリントまたはプルプリントで利用)されるプリンタ20であるか否かを判断することで、該印刷ジョブは情報処理システム100のジョブであるか否かを判断することができる。該印刷ジョブは情報処理システム100のジョブであると判断した場合、スプーラ監視部105は、該印刷ジョブを含む印刷ジョブ情報をスプーラ104から取り出して、印刷を指示したユーザに対応するユーザプロセス120へ渡す。
サービスプロセス110は、ユーザのログイン状態に関わらず(認証されてログイン中になったユーザの存在の有無に関わらず)、システムに共通のサービスとして動作する(クライアント端末10の起動中に起動し続ける)。サービスプロセス110は、クライアント端末10のハードウェアを管理、制御するなど、クライアント端末10の稼動や使用そのものをサポートするためのシステムソフトウェアである。サービスプロセス110の具体的な内容については後述する。
複数のユーザプロセス120は、クライアント端末10を使用する権限を有する複数のユーザのアカウントと1対1に対応し、それぞれがユーザのセッションで動作する。ユーザプロセス120は、クライアント端末10のハードウェア資源を動作させて所定の機能を提供するためのアプリケーションソフトウェアである。アカウントは、クライアント端末10を利用するための情報(ログインするための情報)であり、ユーザを一意に識別するユーザIDで構成されてもよいし、ユーザ名(アカウント名)とパスワードとの組み合わせで構成されてもよい。各ユーザプロセス120は、対応するユーザが認証されてログインになったタイミングで起動し、該ユーザのログオフとともに終了する。すなわち、ユーザプロセス120は、ユーザがログイン中にのみ動作し、該ユーザがログオフすると終了する(動作しない)。なお、「ログイン」とは、ユーザアカウントの存在が確認され(認証され)、クライアント端末10の利用が許可された状態であり、「ログオフ」とは、ユーザがクライアント端末10の利用を終えた状態(クライアント端末10を利用する権限を破棄した状態、つまりログイン状態が維持されない状態)である。ユーザのログイン/ログオフはOSによって管理され、OSの指令に応じて、ユーザプロセス120は起動/終了する。
ここでは、OSは、ユーザが、クライアント端末10を使用する権限を有するか否かを判断する認証処理を実行する機能を有する。この例では、未だユーザが認証されていない状態では、アカウント(ユーザ名とパスワードの組み合わせ等)の入力を受け付けるためのアカウント入力画面が表示部(クライアント端末10が有する後述の表示部16)に表示され、OSは、アカウント入力画面を介して受け付けたアカウントを用いて認証処理を実行する。例えば外部サーバがユーザの身元を確認するための(認証するための)情報(以下では「元情報」と称する)を保持する形態であれば、OSは、アカウント入力画面を介して受け付けたアカウントを外部サーバへ渡して認証処理の実行を要求し、その結果を受け取ることもできる。また、クライアント端末10が元情報を管理する形態であれば、OSは、予めクライアント端末10内に保持された元情報の中に、アカウント入力画面を介して受け付けたアカウントが存在するか否かを判断する認証処理を実行することができる。OSによりユーザが認証された場合(認証処理の結果が肯定の場合)、該ユーザに対応するユーザプロセス120がアクティブ(有効)な状態になる。
ユーザプロセス120の具体的な内容については後述するが、ユーザプロセス120は、スプーラ監視部105から印刷ジョブ情報を受け取ると、該印刷ジョブ情報に含まれる印刷ジョブのポート情報を確認することで、該印刷ジョブの出力先が自装置かプリントサーバ30かを判断することができる。印刷ジョブの出力先がプリントサーバ30であると判断した場合、ユーザプロセス120は、スプーラ監視部105から受け取った印刷ジョブ情報を、そのまま(後述のルール判断等を行うことなく)プリントサーバ30へ送信する。印刷ジョブの出力先が自装置であった場合のユーザプロセス120の動作については後述の説明で明らかになる。
次に、プリントサーバ30が有する機能について説明する。図2に示すように、プリントサーバ30は、クライアント端末情報登録部301、クライアント端末情報記憶部302、印刷ジョブ情報受信部303、ルール判断部304、ルール情報記憶部305、アクション実行部306、印刷ジョブ蓄積部307、印刷ジョブ要求受付部308、印刷ジョブ送信部309を有する。
クライアント端末情報登録部301は、クライアント端末10からクライアント端末情報を受信すると、その受信したクライアント端末情報をクライアント端末情報記憶部302に登録する。例えば図3に示すように、クライアント端末情報登録部301は、クライアント端末情報ごとに割り当てたID(通し番号等)ごとに、クライアント端末情報(この例ではクライアント名とIPアドレス)を対応付けてクライアント端末情報記憶部301に登録する。
図2に戻って説明を続ける。印刷ジョブ情報受信部303は、クライアント端末10から印刷ジョブ情報を受信する。ルール判断部304は、ルール情報記憶部305に記憶されたルール情報と、印刷ジョブ情報受信部303により受信された印刷ジョブ情報に含まれる印刷ジョブとに基づいて、アクション実行部306で実行するアクションを判断(アクションを決定)する。図4は、ルール情報記憶部305に記憶されたルール情報の一例を示す図である。図4の例では、ルール情報は、条件とアクションとの組の集合である。例えば印刷ジョブの印刷情報が、「カラー印刷が指定」という条件に合致する場合、対応するアクションとして「白黒に変換し、白黒で出力することをユーザへ通知した後に、蓄積または指定されたプリンタへ出力」することが決定される。つまり、白黒に変換するというアクションと、白黒で出力することをユーザへ通知するというアクションと、通知を行った後に蓄積または指定されたプリンタへ出力するというアクションとが決定される(この例では、複数のアクションが決定されている)。また、例えば印刷ジョブの印刷情報が「出力先としてプリンタAが指定」という条件に合致する場合、対応するアクションとして「印刷ジョブをプリントサーバ30に蓄積」することが決定される。また、例えば印刷ジョブの印刷情報が「出力先としてプリンタBが指定」という条件に合致する場合、対応するアクションとして「印刷ジョブをそのままプリンタBへ出力」することが決定される。
ルール判断部304は「判断部」の一例であり、クライアント端末10から受信した印刷ジョブに基づいて、クライアント端末10に情報を表示する表示処理が必要か否かを判断していると考えることができる。より具体的には、ルール判断部304は、1以上の条件ごとに実行すべき処理を対応付けたルール情報と、印刷ジョブとに基づいて、表示処理が必要か否かを判断する。ここでは、表示処理は、ユーザへの通知を行うためのダイアログ、または、ユーザの確認入力を受け付けるためのダイアログを表示する処理である。例えばアクションとして「白黒に変換し、白黒で出力することをユーザへ通知した後に、蓄積または指定されたプリンタへ出力」することが決定された場合を想定する。この場合において、「白黒で出力することをユーザへ通知する」というアクションは、図5に示すような、白黒で出力することをユーザへ通知するためのダイアログを、クライアント端末10に表示する表示処理の実行を意味する。
なお、ルール情報の例は図4の態様に限られるものではなく、条件とアクションとの組は任意に設定可能である。例えば「カラー印刷が指定」という条件に対して、「白黒に変換し、白黒で出力することの可否をユーザに確認し、ユーザが許可した場合に、蓄積または指定されたプリンタへ出力」というアクションが紐付けられてもよい。ここで、「白黒で出力することの可否をユーザに確認」というアクションは、図6に示すような、白黒で出力することの可否の確認入力を受け付けるためのダイアログをクライアント端末10に表示する表示処理の実行を意味する。そして、「ユーザが許可した場合に、蓄積または指定されたプリンタへ出力」というアクションは、白黒で出力することの可否の確認入力を受け付けるためのダイアログに対して、白黒で出力することを許可する確認入力を受け付けた場合(この例では図6に示す「OKボタン」の押下を受け付けた場合)に、印刷ジョブをプリントサーバ30へ蓄積または指定されたプリンタへ出力することを意味する。
例えば1つの印刷ジョブに対して、複数種類の表示処理(ユーザへの通知を行うためのダイアログを表示する処理、ユーザの確認入力を受け付けるためのダイアログを表示する処理)が決定される場合もありえる。この場合、ルール判断部304は、決定した複数種類の表示処理(アクション)をアクション実行部306に実行させる。
図2に戻って説明を続ける。アクション実行部306は、ルール判断部304により決定されたアクションを実行する。以下では、ルール判断部304により、アクションとして表示処理が決定されている場合(ルール判断部304により表示処理が必要と判断された場合)を例に挙げて説明する。アクション実行部306は、ルール判断部304により表示処理が必要と判断された場合、印刷ジョブに対応するユーザを特定可能なユーザ特定情報と、表示処理の実行を要求する情報を示す表示要求情報と、をクライアント端末10へ送信する。この例では、アクション実行部306は、「情報送信部」の機能を有している。
表示要求情報には、ルール判断部304により決定された表示処理の実行に必要な情報や、該表示処理の実行を要求する情報(リクエスト情報)などが含まれている。例えばルール判断部304により、図5に示すような、白黒で出力することをユーザへ通知するためのダイアログを、クライアント端末10に表示する表示処理が必要と判断された場合、表示要求情報には、図5に示すダイアログを表示する処理の実行を要求するリクエスト情報や、図5に示すダイアログを構成するテキスト(「白黒で出力します」)やレイアウトを示す情報が含まれる。この図5に示すダイアログを構成するテキストやレイアウトを示す情報は、図5に示すダイアログを表示する処理の実行に必要な情報の一例である。また、この例では、アクション実行部306は、印刷ジョブ情報受信部303で受信した印刷ジョブ情報に含まれる印刷ジョブの上述のユーザ情報を、該印刷ジョブに対応するユーザを特定可能なユーザ特定情報として抽出する。さらに、この例では、アクション実行部306は、クライアント端末情報記憶部302に記憶されたクライアント端末情報のうち、印刷ジョブ情報受信部303で受信した印刷ジョブ情報に含まれるクライアント名を含むクライアント端末情報を特定し、その特定したクライアント端末情報に含まれるIPアドレスにより、表示要求情報とユーザ特定情報の送信先となるクライアント端末10を特定する。そして、特定したクライアント端末10に対して、表示要求情報とユーザ特定情報を送信する。
また、例えばルール判断部304により複数の表示処理が必要と判断された場合、アクション実行部306は、該複数の表示処理ごとに、ユーザ特定情報と表示要求情報をクライアント端末10へ送信し、クライアント端末10(後述の制御部115)は、ユーザ特定情報と表示要求情報との組ごとに、表示処理を実行させるための制御を行う。
また、アクション実行部306は、ルール判断部304により、印刷ジョブをプリンタ20へ出力することが決定された場合、クライアント端末10から受信した印刷ジョブを該プリンタ20へ送信する。一方、アクション実行部306は、ルール判断部304により、印刷ジョブを蓄積することが決定された場合、クライアント端末10から受信した印刷ジョブを印刷ジョブ蓄積部307へ蓄積(保存)する。
印刷ジョブ要求受付部308は、印刷ジョブを要求する印刷ジョブ要求をプリンタ20から受け付ける。印刷ジョブ送信部309は、印刷ジョブ要求受付部308で受け付けた印刷ジョブ要求に従って、印刷ジョブ蓄積部307に記憶された印刷ジョブを取り出してプリンタ20へ送信する。
次に、図7を用いて、クライアント端末10が有するサービスプロセス110およびユーザプロセス120の詳細な機能について説明する。
図7に示すように、サービスプロセス110は、印刷ジョブ蓄積部111、印刷ジョブ要求受付部112、印刷ジョブ送信部113、情報受信部114、および、制御部115を有する。
印刷ジョブ蓄積部111は印刷ジョブを蓄積する。印刷ジョブ蓄積部111の役割については、後述するユーザプロセス120の説明で明らかになる。印刷ジョブ要求受付部112は印刷ジョブ要求をプリンタ20から受け付ける。印刷ジョブ送信部113は、印刷ジョブ要求受付部112で受け付けた印刷ジョブ要求に従って、印刷ジョブ蓄積部111に記憶された印刷ジョブを取り出してプリンタ20へ送信する。これらの機能は、プリントサーバ30側の機能と同様である。
情報受信部114は、プリントサーバ30から、前述のユーザ特定情報と前述の表示要求情報を受信する。
制御部115は、複数のユーザプロセス120のうち、ユーザ特定情報により特定されるユーザに対応するユーザプロセス120に対して、表示要求情報により要求される表示処理を実行させるための制御を行う。制御部115は、特定部116、要求通知制御部117、所在情報検知部118、書き込み部119を有する。
特定部116は、情報受信部114により受信されたユーザ特定情報(この例では印刷情報に含まれる上述のユーザ情報)を確認して、該ユーザ特定情報により特定されるユーザに対応するユーザプロセス120を特定する。
要求通知制御部117は、特定部116により特定されたユーザプロセス120(ユーザ特定情報により特定されるユーザに対応するユーザプロセス120)に対して、表示処理の実行要求を受け付けたことを示す要求通知を通知するための制御を行う。ここでは、要求通知制御部117は、ユーザプロセス120に対して要求通知を通知するための制御として、特定部116により特定されたユーザプロセス120が有する後述の要求管理パイプ127(「要求管理用中間媒体」の一例)に、要求通知を書き込む制御を行う。要求通知は、実行要求を受け付けた処理(表示処理)を特定可能な情報であればよく、該処理を実行するための情報は必要としない。この例では、要求管理パイプ127は、名前付きパイプであり、上述のユーザ情報を含む名前が付されている。この例では、要求通知制御部121は、情報受信部114により受信されたユーザ情報を含む要求管理パイプ127を特定し、その特定した要求管理パイプ127に対して要求通知を書き込む制御を行う。
説明の便宜上、ここでユーザプロセス120が有する機能について説明する。ここでは、ユーザA用のユーザプロセス120に着目して説明するが、他のユーザプロセス120についても同様である。図7に示すように、ユーザプロセス120は、印刷ジョブ情報取得部121、振分部122、印刷ジョブ情報送信部123、ルール判断部124、ルール情報記憶部125、アクション実行部126、要求管理パイプ127、処理用パイプ128、要求通知検知部129、所在情報通知制御部130、情報検知部131、処理部132を有する。
印刷ジョブ情報取得部121は、前述のスプーラ監視部105から印刷ジョブ情報を取得する。振分部122は、印刷ジョブ情報取得部121により取得された印刷ジョブ情報に含まれる印刷ジョブのポート情報を確認し、該印刷ジョブの出力先を判断する。そして、振分部122は、印刷ジョブの出力先が自装置である場合は、印刷ジョブ情報取得部121により取得された印刷ジョブ情報に含まれる印刷ジョブをルール判断部124へ渡し、印刷ジョブの出力先がプリントサーバ30である場合は、印刷ジョブ情報取得部121により取得された印刷ジョブ情報を印刷ジョブ情報送信部123へ渡す。印刷ジョブ情報送信部123は、振分部122から渡された印刷ジョブ情報をプリントサーバ30へ送信する。
ルール判断部124は、ルール情報記憶部125に記憶されたルール情報と、振分部122から渡された印刷ジョブとに基づいて、アクション実行部126に実行させるアクションを決定する。アクション実行部126は、ルール判断部124により決定されたアクションを実行する。これらの機能は、プリントサーバ30側の機能と同様である。例えばアクション実行部126は、ルール判断部124により、印刷ジョブをプリンタ20へ出力することが決定された場合、振分部122から渡された印刷ジョブを該プリンタ20へ送信する。一方、アクション実行部126は、ルール判断部124により、印刷ジョブを蓄積することが決定された場合、振分部122から渡された印刷ジョブを、サービスプロセス110側の印刷ジョブ蓄積部111へ蓄積(保存)する。
要求管理パイプ127は、「要求管理用中間媒体」の一例であり、ユーザプロセス120に対応するユーザを識別するユーザ情報を含み、かつ、要求通知の検知および後述の所在情報の通知に用いる中間媒体である。この例では、要求管理パイプ127は、ユーザ情報を含む名前が付された名前付きパイプであるが、これに限られるものではない。この例では、ユーザプロセス120は、起動時に、要求管理パイプ127および処理用パイプ128を作成する。処理用パイプ128は、「処理用中間媒体」の一例であり、ユーザプロセス120が実行する処理(この例では表示処理)に必要な情報を受け入れるための中間媒体である。この例では、処理用パイプ128は名前付きパイプであり、処理用パイプ128ごとにユニークな名前が付される。また、処理用パイプ128は、1つの処理(1つのアクションに対応する処理)ごとに生成される。
要求通知検知部129は、要求通知を検知する。この例では、要求通知検知部129は、要求管理パイプ127に要求通知が書き込まれたか否かを検知することで、要求通知を検知することができる。
所在情報通知制御部130は、要求通知検知部129により要求通知が検知された場合、要求通知に対応する表示処理の実行に必要な情報を受け入れるための処理用パイプ128の所在を特定可能な所在情報(この例では処理用パイプ128に付された名前)を、サービスプロセス110の制御部115へ通知するための制御を行う。この例では、所在情報通知制御部130は、所在情報を制御部115へ通知するための制御として、要求管理パイプ127に所在情報を書き込む制御を行う。
情報検知部131は、処理用パイプ128に書き込まれた情報を検知する。処理部132は複数の処理用パイプ128ごとに設けられており、対応する処理用パイプ128に格納された情報を用いて処理を実行する。より具体的には、情報検知部131は、処理用パイプ128に情報が書き込まれたことを検知すると、対応する処理部132に対してその旨を通知する。この通知を受けた処理部132は、対応する処理用パイプ128に格納された情報を用いて処理を実行する。例えば処理用パイプ128に格納された情報が、図5に示すダイアログを表示する表示処理の実行に必要な情報である場合、処理部132は、処理用パイプ128に格納された情報を用いて、図5に示すダイアログを表示する処理を実行する。この例では、複数の処理用パイプ128ごとに処理部132が設けられており、複数のアクションと1対1に対応する複数の処理を並列に実行することができる。例えば図5に示すようなダイアログを表示する処理と、図6に示すようなダイアログを表示する処理とを並列に実行することもできる。
再び、サービスプロセス110の制御部115が有する機能の説明に戻る。図7に示す所在情報検知部118は、所在情報を検知する。この例では、所在情報検知部118は、特定部116により特定されたユーザプロセス120が有する要求管理パイプ127に、所在情報が書き込まれたか否かを検知することで、所在情報を検知する。
書き込み部119は、所在情報検知部118により所在情報が検知された場合、その検知された所在情報により特定される処理用パイプ128に対して、表示要求情報により要求される表示処理に必要な情報を書き込む。この例では、書き込み部119は、所在情報により特定される処理用パイプ128に、情報受信部114により受信された表示要求情報に含まれる、表示処理の実行に必要な情報(例えばダイアログを構成するテキストやレイアウトを示す情報等)を書き込む。
図8は、クライアント端末10の起動時の動作例を示すフローチャートである。まず、クライアント端末10に対する電力供給が開始されると(電源オンになると)、クライアント端末情報送信部101は、上述のクライアント端末情報をプリントサーバ30へ送信する(ステップS1)。次に、クライアント端末10のOSは、サービスプロセス110を起動する(ステップS2)。次に、OSは、ユーザの認証を行うと(ステップS3)、認証したユーザに対応するユーザプロセス120を起動する(ステップS4)。
図9は、ユーザプロセス120が起動した後のクライアント端末10の動作例を示すフローチャートである。この例では、ユーザが自身のアカウントを入力しクライアント端末10にログインすると、該ユーザのセッションで動作するユーザプロセス120が起動する。ログイン後の画面として、該ユーザの個人設定が反映された画面が表示され、そこでユーザは印刷アプリケーション102を起動して、印刷ジョブのオリジナルデータを作成する。そして、作成したオリジナルデータの印刷を指示する。前述したように、ユーザは、オリジナルデータの印刷を指示する際に、対象となるオリジナルデータの指定に加えて、出力先のプリンタ20に対応するプリンタアイコンを指定する。
印刷アプリケーション102は、ユーザからの印刷指示を受け付けると(ステップS11)、その受け付けた印刷指示により指定されたプリンタアイコンに対応するプリンタドライバ103に対して、該印刷指示により指定されたオリジナルデータを含み、かつ、該オリジナルデータの印刷を要求する印刷要求を送信する。この例では、この印刷要求はOSを介してプリンタドライバ103へ渡される。OSは、印刷アプリケーション102からの印刷要求に、クライアント名を付加してプリンタドライバ103へ渡す。
次に、プリンタドライバ103は、OSを介して印刷アプリケーション102から渡された印刷要求に基づいて印刷ジョブを生成し、その生成した印刷ジョブと、印刷要求に付加されていたクライアント名とを含む印刷ジョブ情報を生成する(ステップS12)。次に、プリンタドライバ103は、ステップ12で生成した印刷ジョブ情報をスプーラ104に渡す。スプーラ104は、プリンタドライバ103から受け付けた印刷ジョブ情報を保管(一時的に保存)する(ステップS13)。
スプーラ監視部105は、スプーラ104上に印刷ジョブ情報が登録されるのを常時監視し、情報処理システム100の印刷ジョブ情報が登録されると、スプーラ104から該印刷ジョブ情報を取得し(ステップS14)、起動中のユーザプロセス120へ渡す。
ユーザプロセス120の印刷ジョブ情報取得部121により印刷ジョブ情報が取得されると、ユーザプロセス120の振分部122は、該印刷ジョブ情報に含まれる印刷ジョブのポート情報を確認し、該印刷ジョブの出力先を判断する(ステップS15)。出力先が自装置であると判断された場合(ステップS15:Yes)、ルール判断部124は、ルール情報記憶部125に記憶されたルール情報と、振分部122から渡された印刷ジョブとに基づいて、アクション実行部126に実行させるアクションを決定する(ステップS16)。そして、アクション実行部126は、ステップS16で決定されたアクションを実行する(ステップS17)。
一方、出力先が自装置ではないと判断された場合(ステップS15:No)、つまり、この例では出力先がプリントサーバ30であると判断された場合、振分部122は、印刷ジョブ情報取得部121により取得された印刷ジョブ情報をプリントサーバ30へ送信する(ステップS18)。
図10は、クライアント端末10から印刷ジョブ情報を受信した場合のプリントサーバ30の動作例を示すフローチャートである。図10に示すように、印刷ジョブ情報受信部303は、クライアント端末10から印刷ジョブ情報を受信する(ステップS21)。次に、ルール判断部304は、ルール情報記憶部125に記憶されたルール情報と、振分部122から渡された印刷ジョブとに基づいて、アクション実行部126に実行させるアクションを決定する(ステップS22)。そして、アクション実行部126は、ステップS22で決定されたアクションを実行する(ステップS23)。上述したように、例えばアクション実行部306は、ルール判断部304により表示処理が必要と判断された場合、クライアント端末10から受信した印刷ジョブ情報に含まれる印刷ジョブに対応するユーザを特定可能なユーザ特定情報と、表示処理の実行を要求する情報を示す表示要求情報と、をクライアント端末10へ送信する。
図11は、上述のユーザ特定情報と上述の表示要求情報をプリントサーバ30から受信した場合のクライアント端末10の動作例を示すフローチャートである。図11に示すように、サービスプロセス110の情報受信部114は、ユーザ特定情報と表示要求情報をプリントサーバ30から受信する(ステップS41)。次に、サービスプロセス110の特定部116は、ステップS41で受信されたユーザ特定情報を確認して、該ユーザ特定情報により特定されるユーザに対応するユーザプロセス120を特定する(ステップS42)。次に、サービスプロセス110の要求通知制御部117は、ステップS42で特定されたユーザプロセス120が有する要求管理パイプ127に上述の要求通知を書き込む制御を行う(ステップS43)。
次に、ユーザプロセス120の要求通知検知部129により要求通知が検知された場合(ステップS44:Yes)、ユーザプロセス120の所在情報通知制御部130は、該要求通知により要求される処理に対応する処理用パイプ128の所在を特定可能な所在情報を要求管理パイプ127に書き込む制御を行う(ステップS45)。
そして、サービスプロセス110の所在情報検知部118により所在情報が検知された場合(ステップS46:Yes)、サービスプロセス110の書き込み部119は、該所在情報により特定される処理用パイプ128に、ステップS41で受信された表示要求情報により要求される表示処理に必要な情報を書き込む(ステップS47)。
そして、ユーザプロセス120の情報検知部131によって、処理用パイプ128に書き込まれた情報が検知された場合(ステップS48:Yes)、対応する処理部132は、該処理用パイプ128に格納された情報を用いて表示処理を実行する(ステップS49)。
図12は、クライアント端末10のハードウェア構成の一例を示す図である。図12に示すように、クライアント端末10は、CPU11と、ROM12と、HDD13と、RAM14と、入力部15と、表示部16と、通信I/F17と、を備える。なお、プリンタ20、プリントサーバ30も同等のハードウェアを備える。
CPU11は、ROM12やHDD13などの記憶装置からプログラムやデータをRAM14上に読み出し、処理を実行することで、クライアント端末10全体の制御や各種の機能を実現する演算装置である。以上に説明したクライアント端末10が有する機能は、CPU11がROM12等に格納されたプログラムを実行することにより実現される。プリントサーバ30が有する機能についても同様である。
ROM12は、電源を切っても(クライアント端末10に対する電力供給が遮断されても)プログラムやデータを保持することができる不揮発性の半導体メモリ(記憶装置)の一例である。ROM12には、クライアント端末10の起動時に実行されるBIOS、OS設定、及びネットワーク設定などのプログラムやデータが格納されている。
HDD13は、プログラムやデータを格納する不揮発性の記憶装置の一例である。HDD13には、クライアント端末10全体を制御する基本ソフトウェアであるOS、及びOS上において各種機能を提供するアプリケーションソフトウェア(以下、単に「アプリケーション」と称する)などがある。なお、クライアント端末10は、HDD13に替え、記憶媒体としてフラッシュメモリを用いるドライブ装置(例えばソリッドステートドライブ:SSD)を利用するものであってもよい。
RAM14は、プログラムやデータを一時保存する揮発性の記憶装置の一例であり、CPU11が実行する処理の作業領域(ワークエリア)として機能する。
入力部15は、ユーザが各種の操作信号を入力するのに用いられるデバイスであり、例えばキーボードやマウス、タッチパネルなどで構成され得る。表示部16は、各種の情報(例えばクライアント端末10による処理の結果等)を表示するデバイスであり、例えば液晶型のディスプレイ装置で構成され得る。なお、例えばタッチパネルなどのように、入力部15と表示部16とが一体で構成される形態であってもよい。また、入力部15および表示部16は必要なときに接続して利用する形態であってもよい。
通信I/F17は、クライアント端末10をネットワーク40に接続するためのインタフェースである。
以上に説明したように、プリントサーバ30は、クライアント端末10から受信した印刷ジョブに基づいて、表示処理が必要と判断した場合、該印刷ジョブに対応するユーザを特定可能なユーザ特定情報と、該表示処理の実行を要求する情報を示す表示要求情報と、をクライアント端末10へ送信する。クライアント端末10のサービスプロセス110は、表示要求情報とユーザ特定情報とを受け付けた場合、複数のユーザプロセス120のうち、該受け付けたユーザ特定情報により特定されるユーザに対応するユーザプロセスに対して、該受け付けた表示要求情報により要求される表示処理を実行させるための制御を行う。これにより、外部からの要求を受け付けたサービスプロセス110から、同時に存在し得る複数のユーザプロセス120の各々へ適切に処理を振り分けることができる。
以上、本発明に係る実施形態について説明したが、本発明は、上述の実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上述の実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態および変形例にわたる構成要素を適宜組み合わせてもよい。
また、上述した各実施形態のクライアント端末10(CPU11)が実行するプログラムは、インストール可能な形式または実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disc)、USB(Universal Serial Bus)等のコンピュータで読み取り可能な記録媒体に記録して提供するように構成してもよいし、インターネット等のネットワーク経由で提供または配布するように構成してもよい。また、各種プログラムを、ROM等に予め組み込んで提供するように構成してもよい。