(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-16
(45)【発行日】2024-02-27
(54)【発明の名称】プログラム
(51)【国際特許分類】
G06F 3/12 20060101AFI20240219BHJP
【FI】
G06F3/12 324
G06F3/12 353
G06F3/12 338
G06F3/12 310
(21)【出願番号】P 2022163764
(22)【出願日】2022-10-12
(62)【分割の表示】P 2018089461の分割
【原出願日】2018-05-07
【審査請求日】2022-11-07
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100126240
【氏名又は名称】阿部 琢磨
(74)【代理人】
【識別番号】100223941
【氏名又は名称】高橋 佳子
(74)【代理人】
【識別番号】100159695
【氏名又は名称】中辻 七朗
(74)【代理人】
【識別番号】100172476
【氏名又は名称】冨田 一史
(74)【代理人】
【識別番号】100126974
【氏名又は名称】大朋 靖尚
(72)【発明者】
【氏名】三枝 弘和
【審査官】征矢 崇
(56)【参考文献】
【文献】特開2013-145494(JP,A)
【文献】特開2010-280185(JP,A)
【文献】特開2017-097667(JP,A)
【文献】特開2016-197379(JP,A)
【文献】特開2009-170997(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/12
(57)【特許請求の範囲】
【請求項1】
オペレーティングシステム
を記憶するコンピュータに
記憶される
アプリケーションであり、表示制御を含まないバックグラウンドタスクと表示制御を含むフォアグラウンドタスクで構成されるアプリケーションであって、
前記コンピュータに、
印刷指示
が入力された前記バックグラウンドタスクにより起動された前記フォアグラウンドタスクにより前記印刷指示の対象となる画像データを印刷装置に送信する前に所定のオブジェクトを表示させる工程と、
印刷設定に含まれる所定の機能に関する設定値が所定の値であることに基づき、前記所定のオブジェクトを非表示とし、前記所定の機能に関する設定を受け付ける他のオブジェクトを表示する工程と、
前記他のオブジェクトを介して設定される設定値を前記オペレーティングシステムに提供する工程と、
前記印刷設定に含まれる前記所定の機能に関する設定値が前記所定の値でないことに基づき、前記所定のオブジェクトから前記他のオブジェクトへ表示を変えることなく前記所定の値を含んでいない前記印刷設定を前記オペレーティングシステムに提供する工程と、
を実行させることを特徴とする
アプリケーション。
【請求項2】
前記所定の値は、前記所定の機能が有効であることを示す設定値であることを特徴とする請求項1に記載の
アプリケーション。
【請求項3】
前記他のオブジェクトを介して設定される設定値は、前記印刷設定に追加されて前記オペレーティングシステムに提供されることを特徴とする請求項1または2に記載の
アプリケーション。
【請求項4】
前記他のオブジェクトを介して設定される設定値は、前記印刷指示に従って送信された印刷データに基づく印刷を開始するために、前記印刷データの送信先となる印刷装置に入力される情報であることを特徴とする請求項1乃至3のいずれか一項に記載の
アプリケーション。
【請求項5】
前記所定の機能は認証プリントであることを特徴とする請求項1乃至4のいずれか一項に記載の
アプリケーション。
【請求項6】
前記印刷設定をPrintTicketの形式で取得することを特徴とする請求項1乃至5のいずれか一項に記載の
アプリケーション。
【請求項7】
前記所定のオブジェクトは、処理中をユーザに示すためのオブジェクトであることを特徴とする請求項1乃至6のいずれか一項に記載の
アプリケーション。
【請求項8】
前記
アプリケーションは、フォアグラウンド要素とバックグラウンド要素で構成され、
前記所定のオブジェクトを表示させる工程は、前記フォアグラウンド要素により行われ、
前記他のオブジェクトを介して設定される設定値を前記オペレーティングシステムに提供する工程はバックグラウンド要素により行われることを特徴とする請求項1乃至7のいずれか一項に記載の
アプリケーション。
【請求項9】
オペレーティングシステムが記憶されたコンピュータに記憶されるアプリケーションであり、表示制御を含まないバックグラウンドタスクと表示制御を含むフォアグラウンドタスクで構成されるアプリケーションであって、
前記コンピュータに、
前記アプリケーションが印刷設定を取得する前に、印刷指示が入力された前記バックグラウンドタスクにより起動された前記フォアグラウンドタスクにより所定のオブジェクトを表示させる工程と、
前記印刷設定に含まれる所定の機能に関する設定値が所定の値であることに基づき、前記所定のオブジェクトを非表示とし、前記所定の機能に関する設定を受け付ける他のオブジェクトを表示する工程と、
前記他のオブジェクトを介して設定される設定値を前記オペレーティングシステムに提供する工程と、
前記印刷設定に含まれる前記所定の機能に関する設定値が前記所定の値でないことに基づき、前記所定のオブジェクトから前記他のオブジェクトへ表示を変えることなく前記所定の値を含んでいない前記印刷設定を前記オペレーティングシステムに提供する工程と、
を実行させることを特徴とするアプリケーション。
【請求項10】
オペレーティングシステム
を記憶するコンピュータ
に記憶されるアプリケーションであり、表示制御を含まないバックグラウンドタスクと表示制御を含むフォアグラウンドタスクで構成されるアプリケーションを実行することで実現される前記コンピュータの制御方法であって、
印刷指示
が入力された前記バックグラウンドタスクにより起動された前記フォアグラウンドタスクにより、前記印刷指示の対象となる画像データを印刷装置に送信する前に所定のオブジェクトを表示させる工程と、
印刷設定に含まれる所定の機能に関する設定値が所定の値であることに基づき、前記所定のオブジェクトを非表示とし、前記所定の機能に関する設定を受け付ける他のオブジェクトを表示する工程と、
前記他のオブジェクトを介して設定される設定値を前記オペレーティングシステムに提供する工程と、
前記印刷設定に含まれる前記所定の機能に関する設定値が前記所定の値でないことに基づき、前記所定のオブジェクトから前記他のオブジェクトへ表示を変えることなく前記所定の値を含んでいない前記印刷設定を前記オペレーティングシステムに提供する工程と、
を実行させることを特徴とする制御方法。
【請求項11】
前記所定の値は、前記所定の機能が有効であることを示す設定値であることを特徴とする請求項
10に記載の制御方法。
【請求項12】
前記他のオブジェクトを介して設定される設定値は、前記印刷設定に追加されて前記オペレーティングシステムに提供されることを特徴とする請求項
10または1
1に記載の制御方法。
【請求項13】
前記他のオブジェクトを介して設定される設定値は、前記印刷指示に従って送信された印刷データに基づく印刷を開始するために、前記印刷データの送信先となる印刷装置に入力される情報であることを特徴とする請求項
10乃至1
2のいずれか一項に記載の制御方法。
【請求項14】
前記所定の機能は認証プリントであることを特徴とする請求項
10乃至1
3のいずれか一項に記載の制御方法。
【請求項15】
前記所定のオブジェクトは、処理中をユーザに示すためのオブジェクトであることを特徴とする請求項
10乃至1
4のいずれか一項に記載の制御方法。
【請求項16】
オペレーティングシステムと、表示制御を含まないバックグラウンドタスクと表示制御を含むフォアグラウンドタスクで構成されるアプリケーションと、を記憶する情報処理装置であって、
印刷指示が入力された前記バックグラウンドタスクにより起動された前記フォアグラウンドタスクにより、前記印刷指示の対象となる画像データを送信する前に、所定のオブジェクトを表示させ、印刷設定に含まれる所定の機能に関する設定値が所定の値であることに基づき、前記所定のオブジェクトを非表示とし、前記所定の機能に関する設定を受け付ける他のオブジェクトを表示させる表示制御手段と、
前記他のオブジェクトを介して設定される設定値を前記オペレーティングシステムに手協する提供手段と、を有し、
前記提供手段は、前記印刷設定に含まれる前記所定の機能に関する設定値が前記所定の値でないことに基づき、前記所定のオブジェクトから前記他のオブジェクトへ表示を変えることなく前記所定の値を含んでいない前記印刷設定を前記オペレーティングシステムに提供することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、印刷に関わるGUIを提供するアプリケーションのプログラムに関するものである。
【背景技術】
【0002】
プリンタドライバを利用し、印刷装置に対して印刷データを送信する構成が一般に知られる。ホストコンピュータには、基本ソフトウェアであるオペレーティングシステム(OS)がインストールされており、プリンタドライバはそのOSの規定する仕様に従って構成され、OSから呼び出されて動作する。印刷装置を提供するベンダは、OSの仕様に適合するプリンタドライバを提供することにより、そのOSを用いてプリンタに印刷を指示する手段を提供することができる。OSとしてMicrosoft(登録商標)のWindows(登録商標)8より前のバージョンを利用する場合、プリンタドライバは、V3プリンタドライバと呼ばれるアーキテクチャで構成される。V3プリンタドライバは、ユーザからの印刷要求が発生したタイミングでGUI(Graphical User Interface)を表示し、何らかの操作をユーザに促すような機能を提供することができる。例えば、印刷要求が発生すると、V3プリンタドライバの構成物であるコンフィグレーションモジュールの規定のイベントが呼び出されるため、コンフィグレーションモジュールは、そのイベント処理の中でユーザインタフェースを表示することが可能である。例えば、特許文献1には、利用できない項目をユーザが設定しようとする場合に、利用できない理由をデバイスに問い合わせて、メッセージとして利用できない理由を表示する印刷制御方法を開示している。
【0003】
また、近年、Windows(登録商標)において、V4プリンタドライバと呼ばれる新しいアーキテクチャが登場している。V4プリンタドライバは、セキュリティ性が重視されているため、プリンタドライバそのもののカスタマイズ性がV3プリンタドライバと比較して低下している。例えば、前述のコンフィグレーションモジュールはOSにより提供され、ベンダは、その動作をカスタマイズする設定ファイルやスクリプトファイルのみを提供可能である。このようなカスタマイズ性の低下を補うため、印刷装置を提供するベンダは、プリンタドライバの機能を補助するための専用のアプリケーションを提供することができる。このアプリケーションはUWP Device Apps(Universal Windows Platform Device Apps)と呼ばれる。UWP Device Appsは、所定のユーザ操作などを契機としてプリントに関する処理を実行させるWorkflow(WF)と呼ばれる機能を備えることが可能である。
【0004】
WF機能では、まず、バックグラウンドタスクと呼ばれるUIを持たないスレッドがOSによって起動される。バックグラウンドタスクは、印刷設定や印刷対象のドキュメントを取得し、印刷のカスタマイズなどの処理を行う。また、バックグラウンドタスクは、印刷のカスタマイズ等の処理を行うためにユーザ入力を必要とすると判断すると、UIの呼び出し処理を行い、UIを表示する。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
ここで、バックグラウンドタスクには実行に関わる制約があり、UIを表示していない状態でOSに定められた一定時間内に処理を完遂しないとOSによって処理が中断されるという特性を持つ。この実行に関わる制約は、ユーザの認知していないところでコンピュータのバッテリーやネットワークなどのリソースを多く消費する重い処理が実行され続けることを抑制するために設けられている。従って、WF機能のためのバックグラウンドタスクは、UIを起動するかどうかを一定時間内に判断しなければならない。
【0007】
ところで、WF機能を活用することで、印刷開始指示が行われたことを契機として処理を行わせることが考えられる。例えば、印刷開始指示が行われたことを契機として、印刷設定や印刷対象のドキュメントを解析して、必要に応じてユーザ操作を行うためのUIを呼び出して、ユーザに確認処理を行わせるといったことが考えられる。
【0008】
しかしながら、印刷設定や印刷対象のドキュメントのサイズが大きい場合や、UWP Device Appsが動作するコンピュータのスペックが低い場合など、WFのバックグラウンドタスクによる処理に時間がかかる恐れがある。また、コンピュータが高負荷状態の場合などの条件を満たす場合などにも、WFのバックグラウンドタスクによる処理に時間がかかる恐れがある。
【0009】
例えば、バックグラウンドタスクにより印刷データを解釈してUIを起動するか否かの判断処理を行っている間に、OSが定めた一定時間が経過してしまう恐れがある。この場合、OSのタスク制御により当該バックグラウンドタスクの実行が強制的に中止されてしまい、印刷ジョブが破棄されてしまうといった課題がある。
【0010】
本発明は、上述の課題の少なくとも1つを鑑みなされたものである。本発明の目的の1つは、OSが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できる仕組みを提供することである。また、本発明の別の目的は、一定時間内に判断処理を完遂できないと判断したことに従って、UIを表示するフォアグラウンドタスクを起動し、当該フォアグラウンドタスクでユーザ入力が必要か否かを判断する仕組みを提供することである。
【課題を解決するための手段】
【0011】
上記の少なくとも1つの目的を達成するために本発明のアプリケーションは、オペレーティングシステムを記憶するコンピュータに記憶されるされるアプリケーションであり、表示制御を含まないバックグラウンドタスクと表示制御を含むフォアグラウンドタスクで構成されるアプリケーションであって、前記コンピュータに、印刷指示が入力された前記バックグラウンドタスクにより起動された前記フォアグラウンドタスクにより前記印刷指示の対象となる画像データを印刷装置に送信する前に所定のオブジェクトを表示させる工程と、印刷設定に含まれる所定の機能に関する設定値が所定の値であることに基づき、前記所定のオブジェクトを非表示とし、前記所定の機能に関する設定を受け付ける他のオブジェクトを表示する工程と、前記他のオブジェクトを介して設定される設定値を前記オペレーティングシステムに提供する工程と、前記印刷設定に含まれる前記所定の機能に関する設定値が前記所定の値でないことに基づき、前記所定のオブジェクトから前記他のオブジェクトへ表示を変えることなく前記所定の値を含んでいない前記印刷設定を前記オペレーティングシステムに提供する工程と、を実行させることを特徴とする。
【発明の効果】
【0012】
本発明の1つの側面によれば、OSが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できるようになる。
【図面の簡単な説明】
【0013】
【
図2】クライアントコンピュータのハードウェア構成の一例を示す図である。
【
図3】クライアントコンピュータのソフトウェア構成の一例を示す図である。
【
図4】Metadataの一例を説明する図である。
【
図5】ドライバ、拡張アプリ、プリンタの関係を説明する模式図である。
【
図6】クライアントコンピュータの制御の一例を説明するフローチャートである。
【
図7】クライアントコンピュータの制御の一例を説明するフローチャートである。
【
図8】クライアントコンピュータに表示される画面の一例を示す図である。
【
図9】クライアントコンピュータに表示される画面の一例を示す図である。
【
図10】印刷データに付与される印刷設定を説明するための図である。
【
図11】プリンタの能力情報を説明するための図である。
【
図12】クライアントコンピュータの制御の一例を説明するフローチャートである。
【
図13】クライアントコンピュータの制御の一例を説明するフローチャートである。
【発明を実施するための形態】
【0014】
以下、本発明を実施するための実施形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせのすべてが発明の解決手段に必須のものとは限らない。
【0015】
<第1の実施形態>
まず
図1を用いて、本発明に係る印刷システムの構成を説明する。
図1は、本発明に係る印刷システムの一例を示す図である。本実施形態の印刷システムは、情報処理装置の一例であるクライアントコンピュータ101、クライアントコンピュータ101へ対してデータを配信するサーバ104と、ページ記述言語(PDL)形式の印刷データを受信し印刷を行うプリンタ102を備える。各装置は、Wide Area Network(WAN)を含むネットワーク103を通じて相互に通信可能である。
【0016】
なお、プリンタ102は、印刷機能のみを備えるシングルファンクションプリンタでも、印刷機能、スキャン機能、複写機能を備えるマルチファンクションプリンタでも構わない。また、クライアントコンピュータ101は、ネットワーク103に対し一台に限らず、複数台接続されていてもよい。クライアントコンピュータ101は、プリンタ102などに印刷データを送信することができる。
【0017】
図2は、
図1のクライアントコンピュータ101のハードウェア構成を示すブロック図である。クライアントコンピュータ101は、CPU(Central Processing Unit)、RAM(Random Access Memory)202、外部メモリ209、ROM(Read Only Memory)203を有する。
【0018】
CPU201を含む制御部200は、クライアントコンピュータ101全体の動作を制御する。CPU201は、ROM203又は外部メモリ209に記憶されたプログラムをRAM202に展開し、それを実行してUI画面の制御や印刷データの生成、印刷データの転送などの各種制御を行う。ROM203は、CPU201で実行可能な制御プログラムやブートプログラム等を格納する。RAM202は、CPU201の主記憶メモリであり、ワークエリア又は各種プログラムを展開するための一時記憶領域として用いられる。外部メモリI/F208を介して制御部200に接続される外部メモリ209は、OS210、アプリケーション212、アプリケーション実行環境213、プリンタドライバ211などを記憶する。
【0019】
本実施形態では外部メモリ209としてHDD(Hard Disk Drive)等の補助記憶装置を想定しているが、HDDの代わりにSSD(Solid State Drive)などの不揮発性メモリを用いるようにしても良い。このように、CPU201、ROM203、RAM202、外部メモリ209等のハードウェアは、いわゆるコンピュータを構成している。
【0020】
操作入力装置I/F204は、キーボードやポインティングデバイス(マウス)、タッチ入力デバイスなどの操作入力装置205を制御するインタフェースである。操作入力装置205は、ユーザからの操作を受け付ける受付部として機能する。ディスプレイI/F206はディスプレイ207への画面の表示を制御する。ディスプレイ207は、ユーザに対して情報を表示する表示部として機能する。
【0021】
制御部200は、ネットワークI/F214を介してネットワーク103に接続される。ネットワークI/F214は、ネットワーク103上のプリンタに印刷データを送信したり、ネットワーク103上のサーバからストアアプリケーションやプリンタドライバなどを受信したりする。なお、ネットワーク103上の外部端末とのデータ通信は例えばIEEE802.11シリーズに準拠する無線通信やLTEや5Gなどの移動通信システムや、LANケーブルなどの有線ケーブルを介した通信である。
【0022】
続けて、
図3を用いて、クライアントコンピュータ101のソフトウェア構成の一例について説明する。まず、クライアントコンピュータ101内の動作ソフトウェアについて説明する。クライアントコンピュータ101内のソフトウェアは、OS210、アプリケーション実行環境213とアプリケーション212の3つの層から構成される。
【0023】
まず、OS210を構成する個々の要素について説明する。OS210は、大きくプリンティングシステム337、プリンタドライバ211、外部設定ファイル群352とスレッドプール355から構成される。
【0024】
まず、外部設定ファイル群352について説明する。外部設定ファイル群352に含まれるMetadata320は、プリント拡張アプリ300とプリントキュー308の双方の識別子を持つ定義情報であり各々を関連付ける役割を持つ。Metadata320については、
図4を用いて後述する。
【0025】
レジストリ353は、OS210の設定群が記述された領域である。レジストリ353には、印刷時起動アプリランチャ350によるバックグラウンドタスクの起動を有効とするか無効とするかを示す設定が登録されている。なお、当該レジストリ353に登録されている設定は、OS210の設定画面を介して変更可能である。
【0026】
続いてプリンティングシステム337を構成する要素について説明する。プリントキュー308は、ネットワーク103内に存在するプリンタを使用して印刷を行う際に、印刷ジョブを一時的に保存する領域である。本実施形態では、プリンタ102に対応するプリントキュー308が作成されているものとする。
【0027】
スプーラ325は、アプリケーション212のいずれかから印刷された印刷対象データであるXPS(XML Paper Specification)ファイルを一時的に保存及び管理するモジュールである。スプーラ325に保存されたXPSファイルは、フィルタパイプラインマネージャ335を通して、PDL(Page Description Language)に変換された後に、スプーラ325を通じてプリンタ102へと送信される。
【0028】
フィルタパイプラインマネージャ335は、1以上のフィルタ330をロードして、XPSファイルをPDLファイルへと変換するモジュールである。フィルタパイプラインマネージャ335は、OS210が提供する印刷アーキテクチャ(印刷システムとも呼ぶ)の一部として構成されている。OS210は、フィルタコンフィグ336の定義に基づき、プリンタドライバ211を構成する要素の一つである1以上のフィルタ330を読み込み、当該1以上のフィルタを使用してPDLを生成する。PDLは、例えば、PCLやLIPSなどを採用することができる。
【0029】
コンフィグレーションモジュール331は、PrintTicket(プリントチケットとも呼ぶ)の生成、変更を行うモジュールである。また、モジュール331は、組み合わせることができない設定が行われないよう制限する禁則機能を有する。また、コンフィグレーションモジュールはプリンタの能力情報であるPrintCapabilitiesを管理する。
【0030】
プリント拡張アプリ300の詳細印刷設定UI部304、印刷時起動バックグラウンドタスク部305と印刷時起動UI部303は、コンフィグレーションモジュール331が提供するAPIを呼び出すことができる。各部は、当該APIを呼び出すことで、XML(Extensible Markup Language)形式のPrintTicketやPrintCapabilitiesを取得することができる。
【0031】
V4プリンタドライバを提供するプリンタベンダは、プリンタドライバ211として、禁則ルールやデバイスの機能が記述されたデバイス機能テキストファイル332や、スクリプトファイル333をOS211に提供する。ファイル332、333に基づき、コンフィグレーションモジュール331の動作はカスタマイズされる。
【0032】
印刷時起動アプリランチャ350は、印刷時起動バックグラウンドタスク部305などが提供するバックグラウンドタスクの実行を制御するモジュールである。ランチャ350は、ユーザにより印刷開始指示が入力されたことをOS210が検知し、印刷を行う場合に、印刷時起動バックグラウンドタスク部305を起動する。なお、レジストリ353にバックグラウンドタスクの起動を無効とする設定が記憶されている場合、OS210はバックグラウンドタスクの実行を抑制する。
【0033】
プリンタドライバ211は、フィルタ330、フィルタコンフィグ336、スクリプトファイル333とデバイス機能テキストファイル332、で構成される。フィルタ330は、フィルタパイプラインマネージャ335によって呼び出されるフィルタであり、入力されたXPSファイルをPDLへと変換して出力する機能を有している。フィルタコンフィグ336は、フィルタパイプラインマネージャ335が参照する定義ファイルであり、1以上のフィルタ330を呼び出す順序が記述されている。スクリプトファイル333とデバイス機能テキストファイル332は、コンフィグレーションモジュール331によって呼び出されるファイルであり、コンフィグレーションモジュール331の動作をカスタマイズできる。
【0034】
スレッドプール355は、各種アプリケーション212やOS210内のモジュール群が実行される際に利用されるスレッドを格納するモジュールである。
【0035】
アプリケーション実行環境213は、デスクトップアプリ実行環境323、タッチアプリ実行環境301から構成される。
【0036】
タッチアプリ実行環境301は、後述するアプリケーション212の一種であるOS210上で動作するタッチアプリ321やプリント拡張アプリ300を実行するための実行環境である。実行環境301は、サーバ104から配布されたUWP(Universal Windows Platform)アプリケーションを動作させるための実行環境であり、UWPアプリケーションの実行を制御する。
【0037】
デスクトップアプリ実行環境323は、後述するアプリケーション212の一種であるデスクトップアプリ322を実行するための実行環境である。デスクトップアプリ実行環境323は、「Win32/64アプリケーション」や「.NETアプリケーション」などの実行を制御する。
【0038】
アプリケーション212は、タッチアプリ321、プリント拡張アプリ300とデスクトップアプリ322の三種類のアプリケーションで構成される。タッチアプリ321は、タッチアプリ実行環境301で動作するアプリケーションである。タッチアプリ321は、インターネット上で公開されるアプリケーション配布システムを通じて、ダウンロードされ、クライアントコンピュータ101にインストールされる。タッチアプリ321は、必要なモジュール群がパッケージ化して署名されており、OS210内のAPIの呼び出しが制限されている。
【0039】
プリント拡張アプリ300は、タッチアプリ321の一種であり、タッチアプリ321と同様にタッチアプリ実行環境301の上で動作する。プリント拡張アプリ300は、OS210がアプリケーション配布システムからインターネットを経由して取得する。また、本実施形態のプリント拡張アプリ300は、印刷時に独自にカスタマイズしたUIを表示させるWorkflow(WF)と呼ばれる機能を持つ。
【0040】
プリント拡張アプリ300は、タイルアプリ部302、詳細印刷設定UI部304、印刷時起動バックグラウンドタスク部305、印刷時起動UI部303で構成される。
【0041】
タイルアプリ部302部は、拡張アプリ300を起動するユーザ操作を受け付けたことに従って実行されるUI部であり、登録されたプリンタのステータス表示などの機能を提供する。
【0042】
詳細印刷設定UI部304は、OS210によって発行された詳細印刷設定イベントを受信したことに従って実行されるUI部である。詳細印刷設定UI部304は、コンフィグレーションモジュール331からAPIを通じて取得したPrintTicketとPrintCapabilitiesに基づき印刷設定用のUIを生成して表示する。UI部304は、ユーザ操作に従って、適宜、PrintTicketの設定を変更し、コンフィグレーションモジュール331に返却する。
【0043】
印刷時起動バックグラウンドタスク部305は、印刷イベントが発行された際に実行すべきバックグラウンドタスクに対応するコンポーネントである。タスク部305が提供するタスクは、生存時間に限りがあり、一定時間が経過するとOS210によって強制的に終了させられる。
【0044】
印刷時起動バックグラウンドタスク部305は、コンフィグレーションモジュール331のAPIを通じてPrintTicketの取得や読み書きをすることができる。また、WF機能を利用する場合、バックグラウンドタスクにより、印刷時起動UI部303を起動するか否かを判断し、必要に応じてフォアグラウンドタスクのコンポーネントであるUI部303の起動をOS210に要求することが既定されている。また、アプリストア334に変更した値を読み書きすることで、印刷時起動UI部303と値の受け渡しをすることができる。印刷時起動UI部303を起動しないと判断すると場合は、ランチャ350は、プリント拡張アプリ300を起動することなく印刷データの生成を行う。
【0045】
更に、バックグラウンドタスクにより起動された印刷時起動UI部303は、印刷対象のデータとなるXPSやPrintTicketを編集して、OS210に返すことができる。
【0046】
バックグラウンドタスクによってOS210に対して起動要求が行われると、OS210は、印刷時起動UI部303を起動する。印刷時起動UI部303は、PrintTicketやPrintCapabilitiesの取得と設定の変更ができる他に、印刷対象のデータのXPSファイルを取得することができる。XPSファイルの変更を行う場合には、一度、アプリストア334を通じて編集後のXPSファイルを印刷時起動バックグラウンドタスク部305に渡し、タスク部305が編集したXPSファイルをOS210に返す必要がある。本実施形態において、印刷時起動UI部303は、印刷に関する確認を行うためのUIや、未入力の設定をユーザに入力させるためのUIなどを表示するものとする。
【0047】
続けて、プリンタとプリント拡張アプリ300の関係について
図4を用いて説明する。
図4は、デバイスであるプリンタ102と、プリント拡張アプリ300と、を関連付けるMetadata320を示す記述の一例である。
【0048】
図4(A)は、プリンタとプリント拡張アプリ300を関連付けるMetadata320において、対応デバイス情報を示す記述の一例である。Metadata320には、Metadata320を利用するプリンタの一覧を示すHardwareIDListタグ402が記述されている。項目403は、MFP1_abcdというHardware IDを持つプリンタがこのMetadata320を利用することを示している。同様に、項目404は、MFP2_ijklというHardware IDを持つプリンタがMetadata320を利用することを示している。このように、1つのMetadata320に、そのMetadata320を利用するプリンタを複数列挙することができる。本実施形態では、一例としてMetadata320に、2つのプリンタのHardware IDが指定されている場合を例示しているがこれに限定されるものではない。1つであっても、3つ以上であっても構わない。なお、Hardware IDとは、プリンタから返却される、プリンタを一意に特定するための識別情報である。
【0049】
図4(B)には、プリント拡張アプリ300を示すDeviceCompanionApplicationsタグ411が記述されている。項目412は、プリンタベンダを識別する識別情報と、当該ベンダのプリンタに対して「1234abcd.MFPUtility」というプリント拡張アプリ300が提供可能であることを示している。
【0050】
クライアントコンピュータ101にプリンタ102が接続されると、OS210は、プリンタから取得したHardware IDに基づきMicrosoft(登録商標)が管理するMetadata用サーバに問い合わせを行う。Metadata用サーバは、登録されているMetadataを検索し、該当するMetadataを応答する。OS210は、応答に基づきMetadata320を保存する。更に、OS210は、保存したMetadata320のDeviceCompanionApplicationsタグ411に記述されたプリント拡張アプリをアプリケーション配布サーバから取得する。そして、外部メモリ209にプリント拡張アプリをインストールし、プリンタ102と関連付ける。これにより、プリンタ102に対してプリンタドライバ211を経由して印刷要求が発生した際に、プリント拡張アプリ300を起動できるようになる。このMetadata320はプリンタベンダにより提供されるものである。プリンタベンダは、このMetadata320を事前にMicrosoft(登録商標)が管理するMetadata用サーバに提供する。クライアントコンピュータは、V4プリンタドライバ211のインストール時にMetadata用サーバにアクセスし、インストールすべきドライバに最適なプリント拡張アプリ300を自動的にインストールする。
【0051】
図5は、印刷環境の一例を示す図である。プリンタであるMFP501は、MFP1_abcdというHardware IDを有する。MFP501をクライアントコンピュータ101に接続し、MFP501に対応するプリンタドライバをインストールする場合、OS210は、接続されたプリンタに対応するMetadata320を取得する。また、当該Metadataに基づき、MFPUtility506というプリント拡張アプリを取得し、MFP501と関連付ける。なお、単一のプリンタ(例えばMFP501)に印刷データを送信するプリンタドライバは複数種類存在し得る。つまり、1つのデバイスであるMFP501に対応するプリンタドライバとして、複数のプリンタドライバがインストールされていてもよい。機種別プリンタドライバ508は、プリンタベンダにより提供されるMFP501の専用プリンタドライバである。共通プリンタドライバ509は、プリンタベンダにより提供される、該プリンタベンダの複数種類のプリンタ102を処理可能な、共通プリンタドライバである。そして、複数ベンダにより提供される印刷装置に共通して利用可能なクラスドライバである標準プリンタドライバ510は、OS210によって提供されるプリンタドライバである。標準プリンタドライバ510は、標準化された印刷方法を利用することで、幅広いプリンタを処理可能なプリンタドライバである。
【0052】
なお、OS210は、利用可能なプリンタドライバのうち、もっとも機能が高く新しいプリンタドライバを自動的に選定しインストールするものとする。なお、プリンタドライバには、Hardware IDや、Compatible IDと呼ばれる装置を特定するための情報が含まれている。クライアントコンピュータ101にプリンタが接続されると、OS210はプリンタからこれらのID情報を取得し、該当するIDを有するプリンタドライバを探索し、インストールする。
【0053】
プリンタを提供するプリンタベンダは、
図4で説明したMetadata320を提供することで、それぞれのプリンタに対してどのプリント拡張アプリ300を提供するかを制御することができる。例えば、プリンタベンダは、複数のプリンタで共通して一つのプリント拡張アプリ300を提供することもできるし、プリンタの種別に応じて、異なる種類のプリント拡張アプリを提供することもできる。
【0054】
例えば、本実施形態では、MFPUtility506を使用する他のプリンタとして、MFP502が登録されているものとする。また、本実施形態では、MFP503に対して印刷を行う場合に使用するプリント拡張アプリとしてMFPUtility507が対応付けられているものとする。
【0055】
以降、本実施形態では、説明のため、MFP501がプリンタ102に対応するプリンタであり、MFPUtility506がプリンタ102に対応付けられたプリント拡張アプリ300(UWP Device Apps)である場合を想定して説明する。また、機種別ドライバ508が印刷に使用するV4プリンタドライバであるものとして説明する。
【0056】
ここで、本実施形態のプリンタ102は、認証プリント機能(セキュアプリント機能とも呼ぶ)を有している。本実施形態において、PINプリント機能などの認証プリント機能を使用する場合、プリンタドライバは、PrintTicketにユーザにより設定された認証情報(PINコードや、パスワードなど)を付与した印刷ジョブをプリンタ102に対して送信する。認証情報を含む印刷ジョブを受信したプリンタ102は、認証情報が印刷装置の操作部に入力されるまで印刷を行わないよう制御する。
【0057】
認証プリントなどに代表するプリンタ102が保有する機能は、プリンタドライバ211のデバイス機能テキストファイル332に記載されている。プリント拡張アプリ300は、デバイス機能テキストファイル332に基づいてコンフィグレーションモジュール331が生成したPrintCapabilitiesを受け取ることで、プリンタ102が保有する機能を把握する。ユーザは、プリンタドライバ508がOS210と協働して表示する印刷設定画面を介して認証情報を入力することができる。
【0058】
また、プリント拡張アプリ300は、WFを活用する機能として、印刷開始指示が入力されたことを契機として、認証情報の確認や入力をユーザに行わせる機能を有している。
【0059】
ところで、前述したようにWFの起動時には、バックグランドタスクを起動することが既定されている。しかしながら、バックグラウンドタスクの実行には制約があり、UIを表示していない状態でOSに定められた一定時間内に処理を完遂しないとOSによって処理が中断されるという特性を持つ。この実行に関わる制約は、ユーザの認知していないところでコンピュータのバッテリーやネットワークなどのリソースを多く消費する重い処理が実行され続けることを抑制するために設けられている。従って、WF機能のためのバックグラウンドタスクは、UIを起動するかどうかを一定時間内に判断しなければならない。
【0060】
ここで、印刷設定や印刷対象のドキュメントのサイズが大きい場合や、UWP Device Appsが動作するコンピュータのスペックが低い場合、WFのバックグラウンドタスクによる処理に時間がかかる恐れがある。また、コンピュータが高負荷状態の場合などの条件を満たす場合などにも、WFのバックグラウンドタスクによる処理に時間がかかる恐れがある。例えば、バックグラウンドタスクにより印刷データを解釈してUIを起動するか否かの判断処理を行っている間に、OSが定めた一定時間が経過してしまう恐れがある。この場合、OSのタスク制御により当該バックグラウンドタスクの実行が強制的に中止されてしまい、印刷ジョブが破棄されてしまうといった課題がある。
【0061】
本実施形態は、上述の問題点を鑑み、OSが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制する仕組みについて説明する。具体的には、バックグラウンドタスクを実行するためのコンポーネントであるタスク部305が、OSから呼び出しされたことに応じて、常にフォアグラウンドタスクであるUI部303を呼び出すUI表示の制御を行う仕組みについて説明する。
【0062】
まず、PrintCapabilitiesとPrintTicketについて説明する。
図11は、印刷に使用するプリンタドライバ211が記憶するデバイス機能テキストファイル332に基づいて生成されたPrintCapabilitiesの一例である。
【0063】
PrintCapabilitiesは、1つのFeatureの中に、複数のOptionを持つ。Featureは、設定可能な機能を表す。Feature内のOptionは選択肢を表している。
図11の情報1101は、認証プリントのFeatureとOptionを例示する図である。JobSecurePrintのFeatureの選択肢として、ns0000:SecurePrintとns0000:Noneの2つが選択可能であることが定義されている。
【0064】
また、
図10を用いて、認証プリントの設定がなされたPrintTicketについて説明する。PrintTicketには、PrintCapabilitiesで定義された設定値のいずれかが、現在の印刷設定として格納される。
【0065】
情報1001は、印刷時に暗証番号の入力を求める認証プリント機能が設定されていることを示している。JobSecurePrintのFeatureで内包するOptionがns0000:SecurePrintになっているので、認証プリントがオンに設定されていることを示している。なお、認証プリントがオンに設定されていない場合、Optionにns0000:Noneが設定される。
【0066】
また、情報1002に示すpsf:ParameterInitの要素は、テキスト入力の値を示している。
図10では、印刷設定画面を介して認証プリントのためにパスワード「XXXXXX」が設定されている場合を例示している。なお、印刷設定画面を介してパスワードが設定されていない場合、コンフィグレーションモジュール331によってpsf:ParameterInitの要素を含まないPrintTicketが生成されるものとする。
【0067】
続けて、プリンタ102を使用する印刷について
図9を用いて説明する。なお、本実施形態では、UWPアプリであるタッチアプリ321から印刷を行う場合を例示しているがこれに限定されるものではない。デスクトップアプリ322から印刷を行うことも可能である。
【0068】
図9(A)は、タッチアプリ321がディスプレイ207に表示する画面の一例である。タッチアプリ321にはコンテンツを表示する領域を有している。また、メニューキー900は、メニューを表示するためのキーである。
図9(A)では、メニューが表示されている場合を例示している。メニューには複数の選択肢が表示されており、ユーザはメニューから印刷キー901を選択することができる。
【0069】
印刷キー901が選択されたことを検知すると、タッチアプリ321は、OS210に印刷ダイアログ表示の要求を依頼する。
【0070】
図9(B)は、OS210が表示する印刷ダイアログの一例を示している。印刷ダイアログは、OS210によって表示される簡易的な印刷設定を行うダイアログである。印刷ダイアログは、印刷設定のための項目920と印刷指示に関する項目930を有している。ユーザは、項目920を選択して、簡易的な印刷設定を行うことができる。
【0071】
OS210は、通常使うプリンタとして設定されているプリンタドライバに対応するプリントキュー308に対して設定されているPrintTicketをコンフィグレーションモジュール331から取得し、印刷ダイアログ上に表示する。
【0072】
項目921は、選択されているプリンタドライバの名称が表示される。ユーザは項目8921を選択して、使用するプリンタドライバを切り替えることができる。また、項目922は、設定されている印刷設定の例である。
【0073】
また、項目931は、プリント拡張アプリ300が提供する詳細印刷設定UI部304を呼び出す場合に使用する表示アイテムである。項目932は、タッチアプリ321が提供するコンテンツに基づく印刷を開始する場合に使用する表示アイテムである。
【0074】
OS210は、印刷ダイアログとして表示している項目932が押下されたことを検知すると、印刷イベントを発生させる。印刷イベント発生後に、タッチアプリ321はOS210と協働して印刷対象となるコンテンツ(印刷コンテンツとも呼ぶ)に基づいてXPSファイルを生成し、
図6のフローチャートにて説明する印刷処理に進む。
【0075】
印刷処理における具体的な制御方法について
図6及び
図7に示すフローチャートを用いて説明する。
【0076】
図6及び
図7のフローチャートに示す各動作(ステップ)は、CPU201が外部メモリ209に記憶された各モジュール、コンポーネント、アプリケーションを実現するためのプログラムをRAM202に読み出し、実行することにより実現される。各制御モジュール、コンポーネント、アプリケーションによって提供される制御を説明する場合、CPU201によって実現される各部を主語として説明する。また、表示、ユーザ操作の受け付け、及びデータ送受信処理などの一部処理は、CPU201、各I/F及び、I/Fに接続された入出力デバイスが協働して実現するものとする。
【0077】
図5のフローチャートは、印刷イベントが発生したことに応じて実行される。なお、印刷イベントを引き起こすアプリケーションは、タッチアプリ321であっても、デスクトップアプリ322であっても良い。
【0078】
S601において、OS210は、印刷イベントを発生させたアプリケーション212と協働して生成したXPSファイルをスプーラ325に転送する。XPSファイルの転送が完了すると処理をS602に進める。
【0079】
S602において、OS210は、WF機能の起動処理を実行する。本処理の詳細については、
図7を用いて後述する。WF機能の起動処理に関する一連の処理が完了すると、OS210は、処理をS603に進める。
【0080】
S603において、OS210のフィルタパイプラインマネージャ335は、スプーラ325からPrintTicketとXPSファイルを取得する。
【0081】
S604において、フィルタパイプラインマネージャ335は、フィルタコンフィグ336の定義に基づき、印刷に使用するプリンタドライバに対応するフィルタ330を外部メモリ209から読み出し、RAM202に展開する。
【0082】
続けて、S605において、フィルタパイプラインマネージャ335は、XPSファイルを展開したフィルタに入力し、フィルタによる変換処理を実行させる。当該変換処理は複数のフィルタを使用して行われても良い。また、フィルタパイプラインマネージャ335は、変換の結果得られたPDLをスプーラ325に転送する。
【0083】
S606において、スプーラ325は、ネットワークI/F214と協働して、変換したPDLとPrintTicketを含む印刷ジョブをプリンタ102に送信する。一覧の処理により送信された印刷ジョブを受信したプリンタ102は、当該印刷ジョブに基づいて印刷処理を実行する。
【0084】
続けて
図7を用いて、S602において実行されるWF機能の起動処理を具体的に説明する。
【0085】
S701において、OS210は、レジストリ353の設定を読み込む。S702において、OS210は、レジストリ353にバックグラウンドタスクの起動を有効とする設定が記憶されていない場合(起動を無効とする設定が記憶されている場合)、一連のWF機能の起動処理をスキップし、処理をS603以降に進める。一方、OS210は、レジストリ353にレジストリ353にバックグラウンドタスクの起動を有効とする設定が記憶されている場合は、処理をS703に進める。
【0086】
S703において、OS210は、印刷時起動アプリランチャ350を起動する。S704において、印刷時起動アプリランチャ350は、OS210に対してプリント拡張アプリ300のコンポーネントである印刷時起動バックグラウンドタスク部305の起動要求を行う。具体的には、印刷時起動アプリランチャ350は、印刷に使用されるプリンタドライバに基づき、プリントキューを特定する。続けてタッチアプリ実行環境301と協働して、特定されたプリントキューに関連付けられたUWP Device Appsのバックグラウンドタスクを実行するコンポーネントを起動するよう制御する。本実施形態では、プリント拡張アプリ300のタスク部305のコンポーネントが起動されるものとする。
【0087】
S705において、バックグラウンドタスク部305は、OS210に対してフォアグラウンドタスクである印刷時起動UI部303のコンポーネントを起動するよう要求する。要求を受け付けたOS210は、スレッドプール355内のスレッドとしてプリント拡張アプリ300が提供する印刷時起動UI部303を割り当て、UI部303によってディスプレイ207上に画面の表示を行える状態に遷移させる。また、UI部303は、ユーザとのやり取りを継続するために遅延オブジェクトを取得する。
【0088】
S706において、印刷時起動UI部303は、プログレス画面をディスプレイ207上に表示する。
図8は、印刷時起動UI部303によってディスプレイ207上に表示される画面の一例であり、
図8(A)はプログレス画面の一例を示している。プログレス画面には、801に示すプログレスリングが表示される。UI部303は、プログレスリングを回し続けるなどの動きを表示することで、処理の実行中であることをユーザに示す。また、802に示す「印刷中…」などの文字列を表示し、印刷に関する処理の実行中であることをユーザに示す。
【0089】
図7の説明に戻り、S707において、UI部303は、OS210に、UIスレッドとは非同期に実行される解析スレッドの起動を要求する。OS210は、スレッドプール355内に当該解析スレッドを割り当てる。当該解析スレッドは、PrintTicketをコンフィグレーションモジュール331から取得し、取得したPrintTicketの解析を試みる。なお、本実施形態では、解析処理とUI制御処理を別スレッドで制御する場合を例示しているがこれに限定されるものではない。
【0090】
S708において、印刷時起動UI部303は、S707のPrintTicketの解析処理を試みた結果に基づいて、PrintTicketに認証プリントが設定されているかどうかを判断する。解析処理の結果、認証プリントが設定されていないと判断した場合には、処理をS711に進める。一方、解析処理の結果、認証プリントが設定されていると判断した場合には、処理をS709に進める。
【0091】
S709において、印刷時起動UI部303のUIスレッドは、ディスプレイ207上に表示する画面を入力画面に切り替える。
図8(B)は入力画面の一例である。領域810は、認証情報を入力するためのテキストボックスを示している。ユーザは、領域810にパスワードやPINコードなどを入力する。ボタン811は、OKボタンであり、クリックなどの操作イベントを受け付けた際に、810に入力された認証情報を確定させるキーである。このOKボタン811は、819に認証情報が入力されるまでグレーアウトで表示してもよい。キャンセルボタン812は、印刷をキャンセルする場合に使用するキーである。キャンセルキーが押下された場合、印刷ジョブの実行が中止される。
【0092】
図7の説明に戻り、S710において、印刷時起動UI部303のUIスレッドは、ユーザ操作を受け付け、当該ユーザ操作に基づき、PrintTicketの設定を変更する。具体的には、入力された認証情報に基づき、
図10で例示した情報1002を書き換える。また、情報1002に相当する属性が無ければ、PrintTicketに当該属性を追加する。
【0093】
また、UI部303は、ユーザとのやり取りが完了したことをOS210に通知するため、遅延オブジェクトを解放するメソッドを呼び出す。遅延オブジェクトが解放し、フォアグラウンドタスクの終了処理が完了すると、処理の主体がバックグラウンドタスクに遷移する。
【0094】
続けて、S711において、バックグラウンドタスク部305は、UI部303によって設定が変更されたPrintTicketとXPSファイルを取得する。
【0095】
S712において、バックグラウンドタスク部305は、PrintTicketとXPSファイルをフィルタパイプラインマネージャ335に送信し、一連のWF機能に関する処理を完了する。
【0096】
なお、S702において、バックグラウンドタスクを起動しないと判断した場合、モジュール331から取得したPrintTicketと、印刷指示に応じて生成されたXPSファイルがフィルタパイプラインマネージャ335に送信されるものとする。
【0097】
以上説明した実施形態により、バックグラウンドタスクを構成するコンポーネントであるタスク部305が、OSにより呼び出されたことに応じて、フォアグラウンドタスクであるUI部303を呼び出し、UIを表示することができる。従って、フォアグラウンドタスクであるUI部303が遅延オブジェクトを取得した後に、当該UI部303でPrintTicketを解析できるようになる。従って、バックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できるようになる。また、UI部が呼び出された後に、プログレスリングなどの処理中であることを示すUIが表示される。従って、ユーザに対して処理の実行中であることを分かりやすく通知することができる。
【0098】
<第2の実施形態>
第1の実施形態では、PrintTicketの解析をフォアグラウンドタスクに委ねることで、WF機能の実行に起因して印刷ジョブが破棄されることを抑制する仕組みについて説明した。第2の実施形態では、バックグラウンドタスク部305でUIを起動するかどうかの判断を行えるケースもあることに着目する。このようなケースにおいて、バックグラウンドタスク部305で判断が行えるケースにおいては、UIを起動しないようにすることで、印刷時のパフォーマンスをより高める仕組みについて説明する。
【0099】
具体的には第2の実施形態では、バックグラウンドタスク部305でPrintTicketを解析し、UIの起動が必要となるかどうかチェックする。また、バックグラウンドタスク部305で、実行時間を計測し、処理が完遂できないと判断したことに従って、フォアグラウンドタスクを起動するよう制御する仕組みについて説明する。
【0100】
なお、第2の実施形態におけるハードウェア構成やソフトウェア構成は、第1の実施形態と同様のため省略する。
【0101】
具体的な制御方法について
図12のフローチャートを用いて説明する。
図12のフローチャートは、第1の実施形態で説明した
図7のフローチャートに代えて実行される処理を説明するフローチャートである。
図7のフローチャートとの差異は、バックグラウンドタスクの起動処理の後に、S1220~S1224の処理が追加されている点である。
【0102】
S1201~S1204の処理は、第1の実施形態のS701~S704と同様であるため省略する。S1204でバックグラウンドタスクが起動すると、S1220の処理に進む。
【0103】
S1220において、タスク部305は、タイマーを起動し経過時間のカウントを開始する。S1221において、タスク部305は、PrintTicketをコンフィグレーションモジュール331から取得し、解析する。なお、S1221の解析処理はタイマーのカウントとは非同期で実行されるものとする。
【0104】
S1222において、タスク部305は、S1221で実行した解析の結果が得られたか否かを判断する。S1221で実行した解析の結果が得られた場合、処理をS1223に進め、S1221で実行した解析の結果が得られていない場合、処理をS1224に進める。S1223では、S1221の解析の結果に基づき、PrintTicketに認証プリントが設定されているか否かを判断する。認証プリントが設定されていると判断すると、処理をS1205に進め、認証プリントが設定されていない場合には、一連の処理を終了し、処理をS603以降のデータ変換、送信処理に進める。S1205の処理は第1の実施形態におけるS705の処理と同様のため省略する。またS1205の処理が完了すると第1の実施形態のS706以降で説明したフォアグラウンドタスクによる処理に進む。
【0105】
一方、S1224において、タスク部305は、タイマーのカウント時間が、内部的に保持する所定の閾値を超過したかどうかを判断する。タイマーのカウント時間が、内部的に保持する所定の閾値を超過した場合には、処理をS1205へ進める。一方、タイマーのカウント時間が、内部的に保持する所定の閾値を超過していない場合には、S1222に戻り、解析の結果を待つ。所定の閾値は、バックグラウンドタスクにおける実行に関わる制約に達してしまう前に、フォアグラウンドタスクを起動できるよう、適宜適切な閾値が設定されるものとする。
【0106】
以上により、バックグラウンドタスクの制約内で判断が完了できる場合においては、バックグラウンドタスクにより判断を行うようにすることができる。従って、印刷に係るパフォーマンスを高めることができる。
【0107】
<第3の実施形態>
第3の実施形態では、第2の実施形態においてバックグラウンドタスク内で実行させたタイマーのカウントに相当する機能をOS210に実行させるケースについて説明する。本実施形態では、OS210がバックグラウンドタスクを強制終了する前に、タイムアウト例外を発行するよう構成する。また、バックグラウンドタスク部305は、当該タイムアウト例外のスローを検知したことに従って、例外処理としてUI部を起動するよう構成する。
【0108】
なお、第3の実施形態におけるハードウェア構成やソフトウェア構成は、第1の実施形態と同様のため省略する。
【0109】
まず、OS210による例外の発行について説明する。OS210は、印刷のイベントが発生すると、プリント拡張アプリ300のプロセスを生成し、印刷時起動バックグラウンドタスク部305のスレッドを生成する。生成後、バックグラウンドタスクに処理を実行させる。OS210は生成したスレッドの実行時間を管理する。OS210は、当該スレッドを生成してから一定時間以上経過した場合、当該スレッドに対して、タイムアウト例外をスローする。本実施形態では、バックグラウンドタスク部305が、当該例外のスローを検知したことに応じて、フォアグラウンドタスクを起動するよう制御する。
【0110】
具体的な制御方法について
図13のフローチャートを用いて説明する。
図13のフローチャートは、第1の実施形態で説明した
図7のフローチャートに代えて実行される処理を説明するフローチャートである。
図7のフローチャートとの差異は、バックグラウンドタスクの起動処理の後に、S1321~S1324の処理が追加されている点である。
【0111】
S1301~S1304の処理は、第1の実施形態のS701~S704と同様であるため省略する。S1304でバックグラウンドタスクが起動すると、S1321の処理に進む。
【0112】
S1321において、タスク部305は、PrintTicketをコンフィグレーションモジュール331から取得し解析する。
【0113】
S1322において、タスク部305は、S1321で実行した解析の結果が得られたか否かを判断する。S1321で実行した解析の結果が得られた場合、処理をS1323に進め、S1321で実行した解析の結果が得られていない場合、処理をS1324に進める。S1323では、S1321の解析の結果に基づき、PrintTicketに認証プリントが設定されているか否かを判断する。認証プリントが設定されていると判断すると、処理をS1305に進め、認証プリントが設定されていない場合には、一連の処理を終了し、処理をS603以降のデータ変換、送信処理に進める。S1305の処理は第1の実施形態におけるS705の処理と同様のため省略する。またS1305の処理が完了すると第1の実施形態のS706以降で説明したフォアグラウンドタスクによる処理に進む。
【0114】
一方、S1324において、タスク部305は、OS210からタイムアウト例外を受け取ったか否かを判断する。タスク部305は、タイムアウト例外を受け取った場合、処理をS1305に進める。タイムアウト例外を受け取っていない場合は、S1321の処理に戻り、バックグラウンドタスクによる解析及び判断処理を継続する。
【0115】
以上説明したように、本実施形態では、OS210がバックグラウンドタスクのスレッドを強制終了する前にバックグラウンドタスクに対してタイムアウト例外を発行する。また、バックグラウンドタスクは当該タイムアウト例外を受け取ったことに応じてフォアグラウンドタスクを起動し、遅延オブジェクトを取得する。この処理により、バックグラウンドタスクのために割り当てられたスレッドでは、PrintTicketの解析及びUIを起動するかどうかの判断のみに演算リソースを割くことができる。従って、演算のパフォーマンスを高めることができる。
【0116】
<その他の実施形態>
なお、本実施形態では、WF機能で表示するUIの一例として認証プリントの認証情報の入力画面を説明したがこれに限定されるものではない。例えば、印刷指示を受け付けた後に表示するUIとして印刷プレビューを表示するようにしてもよい。また、本実施形態では、V4ドライバがプリンタドライバの場合を例示したが、V4FAXドライバに適用することもできる。例えば、V4FAXドライバに適用する場合、WF機能を使用して宛先の入力や確認を行う画面を表示するようにしてもよい。
【0117】
本発明は、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASICやFPGA)によっても実現可能である。
【符号の説明】
【0118】
101 クライアントコンピュータ
102 プリンタ
201 CPU