(57)【要約】【課題】仮想化ソフトウェアが提供するカスタマイズされたプリントプロバイダ環境であっても印刷振り分けを実現することができる新規な印刷振り分けシステムを提供する。【解決手段】本発明によれば、プリントプロバイダから印刷ジョブを受領したことに応答して中間データをファイル出力するプリントプロセッサと、前記中間データに含まれるイメージデータを描画する仮想プリンタドライバと、前記中間データに含まれるジョブ情報に基づいて前記印刷ジョブに係る出力先を決定する出力先決定部と、前記出力先決定部が決定した出力先に対応するプリンタドライバに出力データを配信する出力データ配信部と、ＯＳの機能を利用してユーザーセッションで前記出力データ配信部を起動するアプリケーション起動部とを含むデータ処理装置が提供される。【選択図】図３
2014059693.tif 000002
【特許請求の範囲】
【請求項１】
プリントプロバイダから印刷ジョブを受領したことに応答して中間データをファイル出力するプリントプロセッサと、
前記中間データに含まれるイメージデータを描画する仮想プリンタドライバと、
前記中間データに含まれるジョブ情報に基づいて前記印刷ジョブに係る出力先を決定する出力先決定部と、
前記出力先決定部が決定した出力先に対応するプリンタドライバに出力データを配信する出力データ配信部と、
前記プリントプロセッサによって起動されるアプリケーション起動部と
を含み、
前記アプリケーション起動部は、
ＯＳの機能を利用してユーザーセッションで前記出力データ配信部を起動することを特徴とする、
データ処理装置。
【請求項２】
前記ＯＳの機能はAsyncUIである、請求項１に記載のデータ処理装置。
【請求項３】
前記プリントプロセッサは、印刷ジョブのジョブＩＤを前記出力データ配信部に渡す、請求項１または２に記載のデータ処理装置。
【請求項４】
前記プリントプロセッサは、前記出力データ配信部の起動結果を前記仮想プリンタドライバに通知し、
前記仮想プリンタドライバは、前記出力データ配信部の起動が失敗した場合に、プリントキューの印刷ジョブをエラー状態にし、該印刷ジョブの再印刷を受け付ける、請求項１〜３のいずれか一項に記載のデータ処理装置。
【請求項５】
前記プリントプロセッサは、前記中間データの生成を開始する前に前記アプリケーション起動部を起動し、前記出力データ配信部は、前記中間データの生成を所定時間にわたって待機する、請求項１〜４のいずれか一項に記載のデータ処理装置。
【請求項６】
前記出力データ配信部は、前記中間データの生成が前記所定時間内に完了しなかった場合に印刷エラーをＵＩ表示する、請求項５に記載のデータ処理装置。
【請求項７】
コンピュータを
プリントプロバイダから印刷ジョブを受領したことに応答して中間データをファイル出力するプリントプロセッサ、
前記中間データに含まれるイメージデータを描画する仮想プリンタドライバ、
前記中間データに含まれるジョブ情報に基づいて前記印刷ジョブに係る出力先を決定する出力先決定手段、
前記出力先決定手段が決定した出力先に対応するプリンタドライバに出力データを配信する出力データ配信手段、
前記プリントプロセッサによって起動される手段であって、ＯＳの機能を利用してユーザーセッションで前記出力データ配信手段を起動する、アプリケーション起動手段、
として機能させるためのコンピュータ実行可能なプログラム。
【請求項８】
前記ＯＳの機能はAsyncUIである、請求項７に記載のプログラム。
【請求項９】
プリントプロバイダから印刷ジョブを受領したことに応答して中間データをファイル出力するプリントプロセッサと、
前記中間データに含まれるイメージデータを描画する仮想プリンタドライバと、
前記中間データに含まれるジョブ情報に基づいて前記印刷ジョブに係る出力先を決定する出力先決定手段と、
前記出力先決定手段が決定した出力先に対応するプリンタドライバに出力データを配信する出力データ配信手段と、
前記プリントプロセッサによって起動されるアプリケーション起動手段と
を含み、
前記アプリケーション起動手段は、
ＯＳの機能を利用してユーザーセッションで前記出力データ配信手段を起動することを特徴とする、
データ処理システム。
【請求項１０】
前記ＯＳの機能はAsyncUIである、請求項９に記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置、システムおよびプログラムに関する。
【背景技術】
【０００２】
従来、プリンタ共有システムを利用するユーザーは、印刷用ダイアログに表示される複数の印刷先の中から所望の印刷先に対応するプリンタドライバを選択する必要があるが、膨大な数のプリンタドライバが選択可能に表示されるような場合、その中から所望のプリンタドライバを探し出すことは煩雑な作業であるだけでなく、ときに、意図しないプリンタドライバを誤って指定してしまうといった問題を引き起こす。
【０００３】
この問題の解決として、本出願人が先に出願した特開２０１０−２７１９８８号公報（特許文献１）は、“仮想プリンタドライバ”を搭載した印刷振り分けシステムを開示する。ここでいう“仮想プリンタドライバ”とは、共有に係る全プリンタドライバを抽象化した存在としてユーザーに見せるものであり、ユーザーは、印刷の際、仮想プリンタドライバのアイコンを選択して実行ボタンをクリックするだけでよい。なぜなら、実際の出力先（実ドライバ）は、仮想プリンタドライバが印刷時に取得可能な情報（ログイン名、ＩＰアドレス、コンピュータ名、文書名など）に基づいて動的に決定するからである。
【０００４】
一方、近年のクラウドコンピューティングの普及に伴い、今後、仮想マシンを使用してプリンタ共有システムを構築するケースがますます増えていくことが予想される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、実マシン環境で動作するアプリケーション機能が仮想マシン環境で必ず動作するとは限らない。この点につき、先に述べた本出願人に係る印刷振り分けシステムにおいては、その印刷振り分け機能が、シトリックス社のCitrix Print Manager Serviceが提供するカスタマイズされたプリントプロバイダ環境では動作しないという問題が生じていた。以下、この点につき、図１および図２に基づいて具体的に説明する。
【０００６】
まず、図１に基づいて、本発明の前提となる印刷振り分け機能のメカニズムを説明する。
【０００７】
図１は、本発明の前提となる印刷振り分け機能を搭載したデータ処理装置５００を模式的に示す。データ処理装置５００において、アプリケーション５０２が印刷を要求すると、これを受けて、プリントプロバイダ５０４がプリントプロセッサ５１０に対して印刷を指示するとともに、仮想プリンタドライバ５２０に対して描画を指示する。
【０００８】
プリントプロバイダ５０４から印刷指示を受けたプリントプロセッサ５１０は、中間データ（ページイメージ、ジョブ情報）をファイル出力する。
【０００９】
一方、描画指示を受けた仮想プリンタドライバ５２０の描画部は、中間ファイルに対する描画処理を実行し、この描画処理の完了に応答して、プリントプロバイダ５０４が仮想プリンタドライバ５２０のＵＩ部を起動する。
【００１０】
ここで、本発明の前提となるデータ処理装置５００では、仮想プリンタドライバ５２０のＵＩ部が出力データ配信部５４０をユーザーセッションで起動し、当該出力データ配信部５４０が出力先決定部５３０を呼び出すように構成されている。
【００１１】
出力データ配信部５４０から呼び出された出力先決定部５３０は、中間データから読み出したジョブ情報に含まれる所定のキー（ログイン名、ＩＰアドレス、コンピュータ名、文書名など）と出力先対応付けテーブル５３２を照合して出力先を決定し、出力データ配信部５４０にその結果を返す。
【００１２】
出力データ配信部５４０は、決定した出力先に対応するプリンタドライバに対してページイメージ（出力データ）を配信し、出力先プリンタドライバ５７０は、受け取ったページイメージをプリンタに出力する。
【００１３】
一方、図２は、仮想マシン環境におけるデータ処理装置５００の振る舞いを示す。仮想マシンモニターが提供するプラットフォームにおいては、プリントプロバイダが必要に応じてカスタマイズされている場合がある。以下、仮想マシン環境で動作するこのようなプリントプロバイダをカスタムプリントプロバイダ６００として参照する。
【００１４】
仮想マシン環境において、アプリケーション５０２が印刷を要求すると、これを受けて、カスタムプリントプロバイダ６００がプリントプロセッサ５１０に対して印刷を指示するとともに、仮想プリンタドライバ５２０に対して描画を指示する。
【００１５】
カスタムプリントプロバイダ６００から印刷指示を受けたプリントプロセッサ５１０は、中間データ（ページイメージ、ジョブ情報）をファイル出力し、描画指示を受けた仮想プリンタドライバ５２０の描画部は、中間ファイルに対する描画処理を実行する。
【００１６】
しかし、このとき、カスタムプリントプロバイダ６００は、描画処理が完了しても仮想プリンタドライバ５２０のＵＩ部を起動しない。そのため、本来、仮想プリンタドライバ５２０のＵＩ部によって起動されるべき出力データ配信部５４０が起動せず、その結果、印刷先の振り分けが実施されない。
【００１７】
本発明は、上記従来技術における課題に鑑みてなされたものであり、本発明は、仮想化ソフトウェアが提供するカスタマイズされたプリントプロバイダ環境において、印刷振り分けを実現し、且つ、ユーザーに対して印刷状態を適切に通知することができる新規な印刷振り分けシステムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
本発明者は、カスタマイズされたプリントプロバイダ環境において、印刷振り分けを実現し、且つ、ユーザーに対して印刷状態を適切に通知することができる新規な印刷振り分けシステムにつき鋭意検討した結果、以下の構成に想到し、本発明に至ったのである。
【００１９】
すなわち、本発明によれば、プリントプロバイダから印刷ジョブを受領したことに応答して中間データをファイル出力するプリントプロセッサと、前記中間データに含まれるイメージデータを描画する仮想プリンタドライバと、前記中間データに含まれるジョブ情報に基づいて前記印刷ジョブに係る出力先を決定する出力先決定部と、前記出力先決定部が決定した出力先に対応するプリンタドライバに出力データを配信する出力データ配信部と、前記プリントプロセッサによって起動されるアプリケーション起動部とを含み、前記アプリケーション起動部は、ＯＳの機能を利用してユーザーセッションで前記出力データ配信部を起動することを特徴とする、データ処理装置が提供される。
【図面の簡単な説明】
【００２０】
【図１】印刷振り分け機能を搭載したデータ処理装置を示す図。
【図２】印刷振り分け機能を搭載したデータ処理装置を示す図。
【図３】本実施形態のデータ処理装置を示す図。
【図４】印刷先振り分け処理のフローを表す図。
【図５】本実施形態のデータ処理装置のセッション状態を表す図。
【図６】本実施形態におけるプリントプロセッサ１０が実行する処理を表す図。
【図７】印刷先振り分け処理のフローを表す図。
【図８】印刷先振り分け処理のフローを表す図。
【発明を実施するための形態】
【００２１】
以下、本発明を、実施形態をもって説明するが、本発明は後述する実施形態に限定されるものではない。なお、以下に参照する各図においては、共通する要素について同じ符号を用い、適宜、その説明を省略するものとする。
【００２２】
図３は、本発明の実施形態であるデータ処理装置１００を模式的に示す図である。
【００２３】
本実施形態のデータ処理装置１００は、プリントプロセッサ１０と、仮想プリンタドライバ２０と、出力先決定部３０と、出力データ配信部４０と、アプリケーション起動部５０とを含んで構成される。
【００２４】
プリントプロセッサ１０は、プリントプロバイダから印刷ジョブを受領したことに応答して中間データ（イメージデータ、ジョブ情報）をファイル出力する。なお、図３は、データ処理装置１００が仮想マシン上で動作する場合を示しており、プリントプロセッサ１０は、カスタマイズされたプリントプロバイダ２００によって制御されている。
【００２５】
出力先決定部３０は、中間データに含まれるジョブ情報と出力先対応付けテーブル３２を照らして印刷ジョブに係る出力先を決定する。
【００２６】
出力データ配信部４０は、出力先決定部３０が決定した出力先に対応する出力先プリンタドライバ７０に出力データを配信する。
【００２７】
アプリケーション起動部５０は、オペレーションシステム（ＯＳ）６０の機能であるAsyncUIを利用して出力データ配信部４０をユーザーセッションで起動する。ここで、AsyncUIとは、システムプロセスで動作するモジュールからユーザープロセスで動作するモジュールを起動する手段としてＯＳが提供するものである。
【００２８】
以上、本実施形態のデータ処理装置１００を構成する各機能部について概説してきたが、続いて、データ処理装置１００が実行する印刷先の振り分け処理の内容を図４に基づいて具体的に説明する。
【００２９】
アプリケーション１０２が印刷を要求すると、これを受けて、カスタムプリントプロバイダ２００が、プリントプロセッサ１０に対して印刷を指示するとともに、仮想プリンタドライバ２０に対して描画を指示する。
【００３０】
これを受けたプリントプロセッサ１０は、中間データ（ページイメージ、ジョブ情報）をファイル出力する。一方、描画指示を受けた仮想プリンタドライバ２０の描画部は、描画処理を実行し、これを完了する。
【００３１】
中間データをファイル出力したプリントプロセッサ１０は、続いて、アプリケーション起動部５０を呼び出す。呼び出されたアプリケーション起動部５０は、ＯＳ６０のAsyncUIに対して出力データ配信部４０の起動を依頼する。これに応答して、AsyncUIは、出力データ配信部４０をユーザーセッションで起動する。
【００３２】
起動された出力データ配信部４０は、出力先決定部３０を呼び出す。呼び出された出力先決定部３０は、中間データから読み出したジョブ情報と出力先対応付けテーブル３２を照合して出力先を決定し、出力データ配信部４０にその結果を返す。
【００３３】
出力データ配信部４０は、決定した出力先に対応するプリンタドライバに対してページイメージ（出力データ）を配信し、出力先プリンタドライバ７０は、受け取ったページイメージをプリンタに出力して印刷を実行する。
【００３４】
続いて、データ処理装置１００のセッション状態を図５に基づいて説明する。
【００３５】
ユーザーがユーザーセッション（Session 1）でアプリケーション１０２から印刷指示を行うと、これを受けたカスタムプリントプロバイダ２００は、システムセッション（Session 0）でプリントプロセッサ１０に印刷指示を行い、これを受けたプリントプロセッサ１０は、システムセッション（Session 0）でアプリケーション起動部５０を呼び出す。
【００３６】
呼び出されたアプリケーション起動部５０は、AsyncUIを通じてユーザーセッション（Session 1）で出力データ配信部４０を起動し、ユーザーセッションで起動された出力データ配信部４０は、出力先決定部３０に問い合わせて出力先を受け取る。
【００３７】
出力データ配信部４０は、出力先決定部３０から受け取った出力先に対応するプリンタドライバに対してユーザーセッション（Session 0）でページイメージ（出力データ）を配信し、出力先プリンタドライバ７０は、受け取ったページイメージをプリンタに出力して印刷を実行する。
【００３８】
次に、図６に基づいて、本実施形態のデータ処理装置１００におけるプリントプロセッサ１０が実行する処理の詳細について説明する。
【００３９】
プリントプロセッサ１０は、カスタムプリントプロバイダ２００から印刷指示とともに渡される印刷ジョブ情報に基づいて、中間データをファイル出力する。具体的には、印刷ジョブ情報に基づいて、ページ数分のページイメージのファイルを作成するとともに、１つの印刷ジョブにつき１つのジョブ情報を作成する。プリントプロセッサ１０は、印刷ジョブ情報から抽出したジョブＩＤをprefixとして名前付けを行い、作成した各中間ファイルについてユニークなファイル名を決定する。
【００４０】
例えば、カスタムプリントプロバイダ２００から受領した印刷ジョブにおいて、ページ数が「3」、ジョブＩＤが「00020」であった場合、プリントプロセッサ１０は、以下のように命名された中間ファイル（３つのページイメージファイルと１つのジョブ情報ファイル）を出力する。
ページイメージファイル：00020.001.emf, 00020.002.emf, 00020.003.emf
ジョブ情報ファイル：00020.jcf
【００４１】
その後、プリントプロセッサ１０は、アプリケーション起動部５０を起動すると同時に、中間ファイルの命名に使用したジョブＩＤをアプリケーション起動部５０に渡す。
【００４２】
アプリケーション起動部５０は、AsyncUIを通じてユーザーセッションで出力データ配信部４０を起動する。このとき、アプリケーション起動部５０は、プリントプロセッサ１０から受け取ったジョブＩＤを出力データ配信部４０に渡す。
【００４３】
続いて、出力データ配信部４０は、出力先決定部３０を呼び出し、これにアプリケーション起動部５０から受け取ったジョブＩＤを渡す。出力先決定部３０は、受け取ったジョブＩＤに基づいて、出力対象となる中間ファイル（ページイメージ、ジョブ情報）を特定し、そのジョブ情報に含まれる所定のキー（ログイン名、ＩＰアドレス、コンピュータ名、文書名など）と出力先対応付けテーブル３２を照合して出力先を決定する。
【００４４】
その後、印刷ジョブが正常に出力先プリンタドライバ７０へ出力されると、プリントプロセッサ１０は中間ファイルを削除する。
【００４５】
次に、図７に基づいて、中間ファイル生成から出力データ配信部４０の起動までにおける例外処理を説明する。
【００４６】
出力データ配信部４０のモジュールが指定の場所に無い場合や、メモリ不足等の理由により出力データ配信部４０の起動がタイムアウトしたような場合において、AsyncUIを介した出力データ配信部４０の起動に失敗することが考えられる。
【００４７】
この点につき、本実施形態におけるアプリケーション起動部５０は、出力データ配信部４０からAsyncUIを介して起動結果を受け取り、その起動結果の内容をプリントプロセッサ１０に通知する。これを受けたプリントプロセッサ１０は、カスタムプリントプロバイダ２００を通じて仮想プリンタドライバ２０に当該起動結果の内容を通知する。仮想プリンタドライバ２０は、通知された起動結果が成功であれば、印刷フローを正常終了し、プリントキューの印刷ジョブを削除する。
【００４８】
一方、通知された起動結果が失敗であれば、プリントキューの印刷ジョブをエラーステータスに変更して印刷フローを終了する。この場合、ユーザーは、プリンターフォルダーからプリントキューを開くことにより、印刷振り分けが正常に行われなかったことを確認することができる。また、プリントキューから右クリックして「再印刷」を命令することにより、再度印刷振り分けを行うことができる。
【００４９】
最後に、図８に基づいて、印刷指示から出力先決定までの代替処理を説明する。
【００５０】
上述したように、中間ファイルを出力した後に出力データ配信部４０の起動する構成を採用する場合、印刷サイズが大きい印刷ジョブ（例えば、ページ数が多い印刷ジョブ）のように中間ファイルの出力に長い時間を要するケースにおいて、中間ファイルの生成プロセスがボトルネックとなり、出力完了までに要する時間が長くなってしまうおそれがある。
【００５１】
この点につき、図８に示す代替実施形態においては、プリントプロセッサ１０は、中間データファイルの出力プロセスよりも先に出力データ配信部４０を呼び出す構成を採用する。
【００５２】
代替実施形態においては、AsyncUIを介して起動された出力データ配信部４０は、中間データが完全に生成されたかどうかを判定する。中間データが完全に生成されている場合、出力先決定部３０を呼び出して出力先を問い合わせ、決定した出力先へページイメージを配信する。一方、中間データの生成が完了していない場合には、中間データの完成を待機するか否かを決定する。
【００５３】
待機する場合は、所定の待機時間を経た後に、再度、中間データが生成されるかどうかを確認する。待機しない場合は、エラーをＵＩ表示して終了する。なお、上述した待機判定は、待機時間と確認上限回数を予め定めておき、確認回数が上限値に達したか否かによって行うことができる。
【００５４】
以上、説明したように、本実施形態によれば、仮想化ソフトウェアが提供するカスタマイズされたプリントプロバイダ環境が仮想プリンタドライバのＵＩ部を呼び出さない場合であっても、プリントプロセッサ１０が出力データ配信部４０を起動するので、印刷先振り分けが確実に遂行される。また、このとき、出力データ配信部４０は、ユーザーセッションで起動するので、印刷状態（印刷成功、印刷失敗等）をユーザーが視認可能な態様でＵＩ表示することが可能になる。
【００５５】
上述した実施形態の各機能は、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）などのオブジェクト指向プログラミング言語などで記述された装置実行可能なプログラムにより実現でき、本実施形態のプログラムは、ハードディスク装置、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、フレキシブルディスク、ＥＥＰＲＯＭ、ＥＰＲＯＭなどの装置可読な記録媒体に格納して頒布することができ、また他装置が可能な形式でネットワークを介して伝送することができる。
【００５６】
以上、本発明について実施形態をもって説明してきたが、本発明は上述した実施形態に限定されるものではない。例えば、図３に示したデータ処理装置１００を構成する上述した各機能部は、適切な単位でネットワーク上に分散配置されていてもよく、その場合、本発明は、ネットワークを介したデータ処理システムとして構築される。その他、当業者が推考しうる実施態様の範囲内において、本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【符号の説明】
【００５７】
１０…プリントプロセッサ
２０…仮想プリンタドライバ
３０…出力先決定部
３２…出力先対応付けテーブル
４０…出力データ配信部
５０…アプリケーション起動部
６０…オペレーションシステム
７０…出力先プリンタドライバ
１００…データ処理装置
１０２…アプリケーション
２００…カスタムプリントプロバイダ
５００…データ処理装置
５０２…アプリケーション
５０４…プリントプロバイダ
５１０…プリントプロセッサ
５２０…仮想プリンタドライバ
５３０…出力先決定部
５３２…出力先対応付けテーブル
５４０…出力データ配信部
５７０…出力先プリンタドライバ
６００…カスタムプリントプロバイダ
【先行技術文献】
【特許文献】
【００５８】
【特許文献１】特開２０１０−２７１９８８号公報
【図１】
2014059693.tif 000003
【図２】
2014059693.tif 000004
【図３】
2014059693.tif 000005
【図４】
2014059693.tif 000006
【図５】
2014059693.tif 000007
【図６】
2014059693.tif 000008
【図７】
2014059693.tif 000009
【図８】
2014059693.tif 000010