JP2019197277A - プログラム - Google Patents

プログラム Download PDF

Info

Publication number
JP2019197277A
JP2019197277A JP2018089461A JP2018089461A JP2019197277A JP 2019197277 A JP2019197277 A JP 2019197277A JP 2018089461 A JP2018089461 A JP 2018089461A JP 2018089461 A JP2018089461 A JP 2018089461A JP 2019197277 A JP2019197277 A JP 2019197277A
Authority
JP
Japan
Prior art keywords
print
task
printing
background task
gui
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018089461A
Other languages
English (en)
Other versions
JP7166785B2 (ja
JP2019197277A5 (ja
Inventor
弘和 三枝
Hirokazu Saegusa
弘和 三枝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2018089461A priority Critical patent/JP7166785B2/ja
Priority to US16/402,060 priority patent/US11119816B2/en
Priority to CN201910376015.0A priority patent/CN110456991B/zh
Publication of JP2019197277A publication Critical patent/JP2019197277A/ja
Publication of JP2019197277A5 publication Critical patent/JP2019197277A5/ja
Priority to JP2022163764A priority patent/JP7439207B2/ja
Application granted granted Critical
Publication of JP7166785B2 publication Critical patent/JP7166785B2/ja
Priority to JP2024019186A priority patent/JP2024045498A/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1202Dedicated interfaces to print systems specifically adapted to achieve a particular effect
    • G06F3/1222Increasing security of the print job
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/12Digital output to print unit, e.g. line printer, chain printer
    • G06F3/1201Dedicated interfaces to print systems
    • G06F3/1223Dedicated interfaces to print systems specifically adapted to use a particular technique
    • G06F3/1237Print job management
    • G06F3/1238Secure printing, e.g. user identification, user rights for device usage, unallowed content, blanking portions or fields of a page, releasing held jobs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4411Configuring for operating with peripheral devices; Loading of device drivers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Security & Cryptography (AREA)
  • Multimedia (AREA)
  • Accessory Devices And Overall Control Thereof (AREA)

Abstract

【課題】 一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷が中止されることを抑制する。【解決手段】 クライアントには、印刷指示を受け付けた場合に、UIを提供するアプリケーションであり、バックグラウンドタスクのコンポーネントと、フォアグラウンドタスクのコンポーネントを含むプログラムがインストールされている。OSによってバックグラウンドタスクのコンポーネントが起動されたことに応じて、バックグラウンドタスクは、フォアグラウンドタスクの起動をOSに要求する。起動したフォアグラウンドタスクは、処理の実行中を示すUIを表示する。また、フォアグラウンドタスクは、取得したプリントチケットに基づいてユーザ操作を受け付けるUIを表示しないと判断したことに従って、処理の完了を示す情報を前記OSに通知する。【選択図】 図7

Description

本発明は、印刷に関わるGUIを提供するアプリケーションのプログラムに関するものである。
プリンタドライバを利用し、印刷装置に対して印刷データを送信する構成が一般に知られる。ホストコンピュータには、基本ソフトウェアであるオペレーティングシステム(OS)がインストールされており、プリンタドライバはそのOSの規定する仕様に従って構成され、OSから呼び出されて動作する。印刷装置を提供するベンダは、OSの仕様に適合するプリンタドライバを提供することにより、そのOSを用いてプリンタに印刷を指示する手段を提供することができる。OSとしてMicrosoft(登録商標)のWindows(登録商標)8より前のバージョンを利用する場合、プリンタドライバは、V3プリンタドライバと呼ばれるアーキテクチャで構成される。V3プリンタドライバは、ユーザからの印刷要求が発生したタイミングでGUI(Graphical User Interface)を表示し、何らかの操作をユーザに促すような機能を提供することができる。例えば、印刷要求が発生すると、V3プリンタドライバの構成物であるコンフィグレーションモジュールの規定のイベントが呼び出されるため、コンフィグレーションモジュールは、そのイベント処理の中でユーザインタフェースを表示することが可能である。例えば、特許文献1には、利用できない項目をユーザが設定しようとする場合に、利用できない理由をデバイスに問い合わせて、メッセージとして利用できない理由を表示する印刷制御方法を開示している。
また、近年、Windows(登録商標)において、V4プリンタドライバと呼ばれる新しいアーキテクチャが登場している。V4プリンタドライバは、セキュリティ性が重視されているため、プリンタドライバそのもののカスタマイズ性がV3プリンタドライバと比較して低下している。例えば、前述のコンフィグレーションモジュールはOSにより提供され、ベンダは、その動作をカスタマイズする設定ファイルやスクリプトファイルのみを提供可能である。このようなカスタマイズ性の低下を補うため、印刷装置を提供するベンダは、プリンタドライバの機能を補助するための専用のアプリケーションを提供することができる。このアプリケーションはUWP Device Apps(Universal Windows Platform Device Apps)と呼ばれる。UWP Device Appsは、所定のユーザ操作などを契機としてプリントに関する処理を実行させるWorkflow(WF)と呼ばれる機能を備えることが可能である。
WF機能では、まず、バックグラウンドタスクと呼ばれるUIを持たないスレッドがOSによって起動される。バックグラウンドタスクは、印刷設定や印刷対象のドキュメントを取得し、印刷のカスタマイズなどの処理を行う。また、バックグラウンドタスクは、印刷のカスタマイズ等の処理を行うためにユーザ入力を必要とすると判断すると、UIの呼び出し処理を行い、UIを表示する。
特開2008−9901号公報
ここで、バックグラウンドタスクには実行に関わる制約があり、UIを表示していない状態でOSに定められた一定時間内に処理を完遂しないとOSによって処理が中断されるという特性を持つ。この実行に関わる制約は、ユーザの認知していないところでコンピュータのバッテリーやネットワークなどのリソースを多く消費する重い処理が実行され続けることを抑制するために設けられている。従って、WF機能のためのバックグラウンドタスクは、UIを起動するかどうかを一定時間内に判断しなければならない。
ところで、WF機能を活用することで、印刷開始指示が行われたことを契機として処理を行わせることが考えられる。例えば、印刷開始指示が行われたことを契機として、印刷設定や印刷対象のドキュメントを解析して、必要に応じてユーザ操作を行うためのUIを呼び出して、ユーザに確認処理を行わせるといったことが考えられる。
しかしながら、印刷設定や印刷対象のドキュメントのサイズが大きい場合や、UWP Device Appsが動作するコンピュータのスペックが低い場合など、WFのバックグラウンドタスクによる処理に時間がかかる恐れがある。また、コンピュータが高負荷状態の場合などの条件を満たす場合などにも、WFのバックグラウンドタスクによる処理に時間がかかる恐れがある。
例えば、バックグラウンドタスクにより印刷データを解釈してUIを起動するか否かの判断処理を行っている間に、OSが定めた一定時間が経過してしまう恐れがある。この場合、OSのタスク制御により当該バックグラウンドタスクの実行が強制的に中止されてしまい、印刷ジョブが破棄されてしまうといった課題がある。
本発明は、上述の課題の少なくとも1つを鑑みなされたものである。本発明の目的の1つは、OSが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できる仕組みを提供することである。また、本発明の別の目的は、一定時間内に判断処理を完遂できないと判断したことに従って、UIを表示するフォアグラウンドタスクを起動し、当該フォアグラウンドタスクでユーザ入力が必要か否かを判断する仕組みを提供することである。
上記の少なくとも1つの目的を達成するために本発明のプログラムは、印刷指示を受け付けた場合に、UIを提供することが可能なアプリケーションのプログラムであり、バックグラウンドタスクを実行するためのコンポーネントと、フォアグラウンドタスクを実行するためのコンポーネントを少なくとも含むアプリケーションのプログラムであって、OSに対して前記印刷指示が入力され、前記OSによって前記バックグラウンドタスクのコンポーネントが起動されたことに応じて、前記バックグラウンドタスクは、前記フォアグラウンドタスクのコンポーネントの起動を前記OSに要求する要求ステップを、コンピュータに実行させ、前記要求に基づき前記フォアグラウンドタスクが起動されたことに従って、前記フォアグラウンドタスクは、前記印刷指示を受け付けたことに従って生成されたプリントチケットを取得する取得ステップと、処理を実行中であることを示すUIを表示する第1の表示制御ステップと、前記取得ステップで取得したプリントチケットに基づいてユーザ操作を受け付けるUIを表示するか否かを判断する判断ステップと、前記判断ステップで前記ユーザ操作を受け付けるUIを表示しないと判断したことに従って、処理の完了を示す情報を前記OSに通知する通知ステップと、を前記コンピュータに実行させることを特徴とする。
本発明の1つの側面によれば、OSが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できるようになる。
印刷システムの一例を示す図である。 クライアントコンピュータのハードウェア構成の一例を示す図である。 クライアントコンピュータのソフトウェア構成の一例を示す図である。 Metadataの一例を説明する図である。 ドライバ、拡張アプリ、プリンタの関係を説明する模式図である。 クライアントコンピュータの制御の一例を説明するフローチャートである。 クライアントコンピュータの制御の一例を説明するフローチャートである。 クライアントコンピュータに表示される画面の一例を示す図である。 クライアントコンピュータに表示される画面の一例を示す図である。 印刷データに付与される印刷設定を説明するための図である。 プリンタの能力情報を説明するための図である。 クライアントコンピュータの制御の一例を説明するフローチャートである。 クライアントコンピュータの制御の一例を説明するフローチャートである。
以下、本発明を実施するための実施形態について図面を用いて説明する。なお、以下の実施の形態は特許請求の範囲に係る発明を限定するものでなく、また実施の形態で説明されている特徴の組み合わせのすべてが発明の解決手段に必須のものとは限らない。
<第1の実施形態>
まず図1を用いて、本発明に係る印刷システムの構成を説明する。図1は、本発明に係る印刷システムの一例を示す図である。本実施形態の印刷システムは、情報処理装置の一例であるクライアントコンピュータ101、クライアントコンピュータ101へ対してデータを配信するサーバ104と、ページ記述言語(PDL)形式の印刷データを受信し印刷を行うプリンタ102を備える。各装置は、Wide Area Network(WAN)を含むネットワーク103を通じて相互に通信可能である。
なお、プリンタ102は、印刷機能のみを備えるシングルファンクションプリンタでも、印刷機能、スキャン機能、複写機能を備えるマルチファンクションプリンタでも構わない。また、クライアントコンピュータ101は、ネットワーク103に対し一台に限らず、複数台接続されていてもよい。クライアントコンピュータ101は、プリンタ102などに印刷データを送信することができる。
図2は、図1のクライアントコンピュータ101のハードウェア構成を示すブロック図である。クライアントコンピュータ101は、CPU(Central Processing Unit)、RAM(Random Access Memory)202、外部メモリ209、ROM(Read Only Memory)203を有する。
CPU201を含む制御部200は、クライアントコンピュータ101全体の動作を制御する。CPU201は、ROM203又は外部メモリ209に記憶されたプログラムをRAM202に展開し、それを実行してUI画面の制御や印刷データの生成、印刷データの転送などの各種制御を行う。ROM203は、CPU201で実行可能な制御プログラムやブートプログラム等を格納する。RAM202は、CPU201の主記憶メモリであり、ワークエリア又は各種プログラムを展開するための一時記憶領域として用いられる。外部メモリI/F208を介して制御部200に接続される外部メモリ209は、OS210、アプリケーション212、アプリケーション実行環境213、プリンタドライバ211などを記憶する。
本実施形態では外部メモリ209としてHDD(Hard Disk Drive)等の補助記憶装置を想定しているが、HDDの代わりにSSD(Solid State Drive)などの不揮発性メモリを用いるようにしても良い。このように、CPU201、ROM203、RAM202、外部メモリ209等のハードウェアは、いわゆるコンピュータを構成している。
操作入力装置I/F204は、キーボードやポインティングデバイス(マウス)、タッチ入力デバイスなどの操作入力装置205を制御するインタフェースである。操作入力装置205は、ユーザからの操作を受け付ける受付部として機能する。ディスプレイI/F206はディスプレイ207への画面の表示を制御する。ディスプレイ207は、ユーザに対して情報を表示する表示部として機能する。
制御部200は、ネットワークI/F214を介してネットワーク103に接続される。ネットワークI/F214は、ネットワーク103上のプリンタに印刷データを送信したり、ネットワーク103上のサーバからストアアプリケーションやプリンタドライバなどを受信したりする。なお、ネットワーク103上の外部端末とのデータ通信は例えばIEEE802.11シリーズに準拠する無線通信やLTEや5Gなどの移動通信システムや、LANケーブルなどの有線ケーブルを介した通信である。
続けて、図3を用いて、クライアントコンピュータ101のソフトウェア構成の一例について説明する。まず、クライアントコンピュータ101内の動作ソフトウェアについて説明する。クライアントコンピュータ101内のソフトウェアは、OS210、アプリケーション実行環境213とアプリケーション212の3つの層から構成される。
まず、OS210を構成する個々の要素について説明する。OS210は、大きくプリンティングシステム337、プリンタドライバ211、外部設定ファイル群352とスレッドプール355から構成される。
まず、外部設定ファイル群352について説明する。外部設定ファイル群352に含まれるMetadata320は、プリント拡張アプリ300とプリントキュー308の双方の識別子を持つ定義情報であり各々を関連付ける役割を持つ。Metadata320については、図4を用いて後述する。
レジストリ353は、OS210の設定群が記述された領域である。レジストリ353には、印刷時起動アプリランチャ350によるバックグラウンドタスクの起動を有効とするか無効とするかを示す設定が登録されている。なお、当該レジストリ353に登録されている設定は、OS210の設定画面を介して変更可能である。
続いてプリンティングシステム337を構成する要素について説明する。プリントキュー308は、ネットワーク103内に存在するプリンタを使用して印刷を行う際に、印刷ジョブを一時的に保存する領域である。本実施形態では、プリンタ102に対応するプリントキュー308が作成されているものとする。
スプーラ325は、アプリケーション212のいずれかから印刷された印刷対象データであるXPS(XML Paper Specification)ファイルを一時的に保存及び管理するモジュールである。スプーラ325に保存されたXPSファイルは、フィルタパイプラインマネージャ335を通して、PDL(Page Description Language)に変換された後に、スプーラ325を通じてプリンタ102へと送信される。
フィルタパイプラインマネージャ335は、1以上のフィルタ330をロードして、XPSファイルをPDLファイルへと変換するモジュールである。フィルタパイプラインマネージャ335は、OS210が提供する印刷アーキテクチャ(印刷システムとも呼ぶ)の一部として構成されている。OS210は、フィルタコンフィグ336の定義に基づき、プリンタドライバ211を構成する要素の一つである1以上のフィルタ330を読み込み、当該1以上のフィルタを使用してPDLを生成する。PDLは、例えば、PCLやLIPSなどを採用することができる。
コンフィグレーションモジュール331は、PrintTicket(プリントチケットとも呼ぶ)の生成、変更を行うモジュールである。また、モジュール331は、組み合わせることができない設定が行われないよう制限する禁則機能を有する。また、コンフィグレーションモジュールはプリンタの能力情報であるPrintCapabilitiesを管理する。
プリント拡張アプリ300の詳細印刷設定UI部304、印刷時起動バックグラウンドタスク部305と印刷時起動UI部303は、コンフィグレーションモジュール331が提供するAPIを呼び出すことができる。各部は、当該APIを呼び出すことで、XML(Extensible Markup Language)形式のPrintTicketやPrintCapabilitiesを取得することができる。
V4プリンタドライバを提供するプリンタベンダは、プリンタドライバ211として、禁則ルールやデバイスの機能が記述されたデバイス機能テキストファイル332や、スクリプトファイル333をOS211に提供する。ファイル332、333に基づき、コンフィグレーションモジュール331の動作はカスタマイズされる。
印刷時起動アプリランチャ350は、印刷時起動バックグラウンドタスク部305などが提供するバックグラウンドタスクの実行を制御するモジュールである。ランチャ350は、ユーザにより印刷開始指示が入力されたことをOS210が検知し、印刷を行う場合に、印刷時起動バックグラウンドタスク部305を起動する。なお、レジストリ353にバックグラウンドタスクの起動を無効とする設定が記憶されている場合、OS210はバックグラウンドタスクの実行を抑制する。
プリンタドライバ211は、フィルタ330、フィルタコンフィグ336、スクリプトファイル333とデバイス機能テキストファイル332、で構成される。フィルタ330は、フィルタパイプラインマネージャ335によって呼び出されるフィルタであり、入力されたXPSファイルをPDLへと変換して出力する機能を有している。フィルタコンフィグ336は、フィルタパイプラインマネージャ335が参照する定義ファイルであり、1以上のフィルタ330を呼び出す順序が記述されている。スクリプトファイル333とデバイス機能テキストファイル332は、コンフィグレーションモジュール331によって呼び出されるファイルであり、コンフィグレーションモジュール331の動作をカスタマイズできる。
スレッドプール355は、各種アプリケーション212やOS210内のモジュール群が実行される際に利用されるスレッドを格納するモジュールである。
アプリケーション実行環境213は、デスクトップアプリ実行環境323、タッチアプリ実行環境301から構成される。
タッチアプリ実行環境301は、後述するアプリケーション212の一種であるOS210上で動作するタッチアプリ321やプリント拡張アプリ300を実行するための実行環境である。実行環境301は、サーバ104から配布されたUWP(Universal Windows Platform)アプリケーションを動作させるための実行環境であり、UWPアプリケーションの実行を制御する。
デスクトップアプリ実行環境323は、後述するアプリケーション212の一種であるデスクトップアプリ322を実行するための実行環境である。デスクトップアプリ実行環境323は、「Win32/64アプリケーション」や「.NETアプリケーション」などの実行を制御する。
アプリケーション212は、タッチアプリ321、プリント拡張アプリ300とデスクトップアプリ322の三種類のアプリケーションで構成される。タッチアプリ321は、タッチアプリ実行環境301で動作するアプリケーションである。タッチアプリ321は、インターネット上で公開されるアプリケーション配布システムを通じて、ダウンロードされ、クライアントコンピュータ101にインストールされる。タッチアプリ321は、必要なモジュール群がパッケージ化して署名されており、OS210内のAPIの呼び出しが制限されている。
プリント拡張アプリ300は、タッチアプリ321の一種であり、タッチアプリ321と同様にタッチアプリ実行環境301の上で動作する。プリント拡張アプリ300は、OS210がアプリケーション配布システムからインターネットを経由して取得する。また、本実施形態のプリント拡張アプリ300は、印刷時に独自にカスタマイズしたUIを表示させるWorkflow(WF)と呼ばれる機能を持つ。
プリント拡張アプリ300は、タイルアプリ部302、詳細印刷設定UI部304、印刷時起動バックグラウンドタスク部305、印刷時起動UI部303で構成される。
タイルアプリ部302部は、拡張アプリ300を起動するユーザ操作を受け付けたことに従って実行されるUI部であり、登録されたプリンタのステータス表示などの機能を提供する。
詳細印刷設定UI部304は、OS210によって発行された詳細印刷設定イベントを受信したことに従って実行されるUI部である。詳細印刷設定UI部304は、コンフィグレーションモジュール331からAPIを通じて取得したPrintTicketとPrintCapabilitiesに基づき印刷設定用のUIを生成して表示する。UI部304は、ユーザ操作に従って、適宜、PrintTicketの設定を変更し、コンフィグレーションモジュール331に返却する。
印刷時起動バックグラウンドタスク部305は、印刷イベントが発行された際に実行すべきバックグラウンドタスクに対応するコンポーネントである。タスク部305が提供するタスクは、生存時間に限りがあり、一定時間が経過するとOS210によって強制的に終了させられる。
印刷時起動バックグラウンドタスク部305は、コンフィグレーションモジュール331のAPIを通じてPrintTicketの取得や読み書きをすることができる。また、WF機能を利用する場合、バックグラウンドタスクにより、印刷時起動UI部303を起動するか否かを判断し、必要に応じてフォアグラウンドタスクのコンポーネントであるUI部303の起動をOS210に要求することが既定されている。また、アプリストア334に変更した値を読み書きすることで、印刷時起動UI部303と値の受け渡しをすることができる。印刷時起動UI部303を起動しないと判断すると場合は、ランチャ350は、プリント拡張アプリ300を起動することなく印刷データの生成を行う。
更に、バックグラウンドタスクにより起動された印刷時起動UI部303は、印刷対象のデータとなるXPSやPrintTicketを編集して、OS210に返すことができる。
バックグラウンドタスクによってOS210に対して起動要求が行われると、OS210は、印刷時起動UI部303を起動する。印刷時起動UI部303は、PrintTicketやPrintCapabilitiesの取得と設定の変更ができる他に、印刷対象のデータのXPSファイルを取得することができる。XPSファイルの変更を行う場合には、一度、アプリストア334を通じて編集後のXPSファイルを印刷時起動バックグラウンドタスク部305に渡し、タスク部305が編集したXPSファイルをOS210に返す必要がある。本実施形態において、印刷時起動UI部303は、印刷に関する確認を行うためのUIや、未入力の設定をユーザに入力させるためのUIなどを表示するものとする。
続けて、プリンタとプリント拡張アプリ300の関係について図4を用いて説明する。図4は、デバイスであるプリンタ102と、プリント拡張アプリ300と、を関連付けるMetadata320を示す記述の一例である。
図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とは、プリンタから返却される、プリンタを一意に特定するための識別情報である。
図4(B)には、プリント拡張アプリ300を示すDeviceCompanionApplicationsタグ411が記述されている。項目412は、プリンタベンダを識別する識別情報と、当該ベンダのプリンタに対して「1234abcd.MFPUtility」というプリント拡張アプリ300が提供可能であることを示している。
クライアントコンピュータ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を自動的にインストールする。
図5は、印刷環境の一例を示す図である。プリンタであるMFP501は、MFP1_abcdというHardware IDを有する。MFP501をクライアントコンピュータ101に接続し、MFP501に対応するプリンタドライバをインストールする場合、OS210は、接続されたプリンタに対応するMetadata320を取得する。また、当該Metadataに基づき、MFPUtility506というプリント拡張アプリを取得し、MFP501と関連付ける。なお、単一のプリンタ(例えばMFP501)に印刷データを送信するプリンタドライバは複数種類存在し得る。つまり、1つのデバイスであるMFP501に対応するプリンタドライバとして、複数のプリンタドライバがインストールされていてもよい。機種別プリンタドライバ508は、プリンタベンダにより提供されるMFP501の専用プリンタドライバである。共通プリンタドライバ509は、プリンタベンダにより提供される、該プリンタベンダの複数種類のプリンタ102を処理可能な、共通プリンタドライバである。そして、複数ベンダにより提供される印刷装置に共通して利用可能なクラスドライバである標準プリンタドライバ510は、OS210によって提供されるプリンタドライバである。標準プリンタドライバ510は、標準化された印刷方法を利用することで、幅広いプリンタを処理可能なプリンタドライバである。
なお、OS210は、利用可能なプリンタドライバのうち、もっとも機能が高く新しいプリンタドライバを自動的に選定しインストールするものとする。なお、プリンタドライバには、Hardware IDや、Compatible IDと呼ばれる装置を特定するための情報が含まれている。クライアントコンピュータ101にプリンタが接続されると、OS210はプリンタからこれらのID情報を取得し、該当するIDを有するプリンタドライバを探索し、インストールする。
プリンタを提供するプリンタベンダは、図4で説明したMetadata320を提供することで、それぞれのプリンタに対してどのプリント拡張アプリ300を提供するかを制御することができる。例えば、プリンタベンダは、複数のプリンタで共通して一つのプリント拡張アプリ300を提供することもできるし、プリンタの種別に応じて、異なる種類のプリント拡張アプリを提供することもできる。
例えば、本実施形態では、MFPUtility506を使用する他のプリンタとして、MFP502が登録されているものとする。また、本実施形態では、MFP503に対して印刷を行う場合に使用するプリント拡張アプリとしてMFPUtility507が対応付けられているものとする。
以降、本実施形態では、説明のため、MFP501がプリンタ102に対応するプリンタであり、MFPUtility506がプリンタ102に対応付けられたプリント拡張アプリ300(UWP Device Apps)である場合を想定して説明する。また、機種別ドライバ508が印刷に使用するV4プリンタドライバであるものとして説明する。
ここで、本実施形態のプリンタ102は、認証プリント機能(セキュアプリント機能とも呼ぶ)を有している。本実施形態において、PINプリント機能などの認証プリント機能を使用する場合、プリンタドライバは、PrintTicketにユーザにより設定された認証情報(PINコードや、パスワードなど)を付与した印刷ジョブをプリンタ102に対して送信する。認証情報を含む印刷ジョブを受信したプリンタ102は、認証情報が印刷装置の操作部に入力されるまで印刷を行わないよう制御する。
認証プリントなどに代表するプリンタ102が保有する機能は、プリンタドライバ211のデバイス機能テキストファイル332に記載されている。プリント拡張アプリ300は、デバイス機能テキストファイル332に基づいてコンフィグレーションモジュール331が生成したPrintCapabilitiesを受け取ることで、プリンタ102が保有する機能を把握する。ユーザは、プリンタドライバ508がOS210と協働して表示する印刷設定画面を介して認証情報を入力することができる。
また、プリント拡張アプリ300は、WFを活用する機能として、印刷開始指示が入力されたことを契機として、認証情報の確認や入力をユーザに行わせる機能を有している。
ところで、前述したようにWFの起動時には、バックグランドタスクを起動することが既定されている。しかしながら、バックグラウンドタスクの実行には制約があり、UIを表示していない状態でOSに定められた一定時間内に処理を完遂しないとOSによって処理が中断されるという特性を持つ。この実行に関わる制約は、ユーザの認知していないところでコンピュータのバッテリーやネットワークなどのリソースを多く消費する重い処理が実行され続けることを抑制するために設けられている。従って、WF機能のためのバックグラウンドタスクは、UIを起動するかどうかを一定時間内に判断しなければならない。
ここで、印刷設定や印刷対象のドキュメントのサイズが大きい場合や、UWP Device Appsが動作するコンピュータのスペックが低い場合、WFのバックグラウンドタスクによる処理に時間がかかる恐れがある。また、コンピュータが高負荷状態の場合などの条件を満たす場合などにも、WFのバックグラウンドタスクによる処理に時間がかかる恐れがある。例えば、バックグラウンドタスクにより印刷データを解釈してUIを起動するか否かの判断処理を行っている間に、OSが定めた一定時間が経過してしまう恐れがある。この場合、OSのタスク制御により当該バックグラウンドタスクの実行が強制的に中止されてしまい、印刷ジョブが破棄されてしまうといった課題がある。
本実施形態は、上述の問題点を鑑み、OSが定めた一定時間内にバックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制する仕組みについて説明する。具体的には、バックグラウンドタスクを実行するためのコンポーネントであるタスク部305が、OSから呼び出しされたことに応じて、常にフォアグラウンドタスクであるUI部303を呼び出すUI表示の制御を行う仕組みについて説明する。
まず、PrintCapabilitiesとPrintTicketについて説明する。図11は、印刷に使用するプリンタドライバ211が記憶するデバイス機能テキストファイル332に基づいて生成されたPrintCapabilitiesの一例である。
PrintCapabilitiesは、1つのFeatureの中に、複数のOptionを持つ。Featureは、設定可能な機能を表す。Feature内のOptionは選択肢を表している。図11の情報1101は、認証プリントのFeatureとOptionを例示する図である。JobSecurePrintのFeatureの選択肢として、ns0000:SecurePrintとns0000:Noneの2つが選択可能であることが定義されている。
また、図10を用いて、認証プリントの設定がなされたPrintTicketについて説明する。PrintTicketには、PrintCapabilitiesで定義された設定値のいずれかが、現在の印刷設定として格納される。
情報1001は、印刷時に暗証番号の入力を求める認証プリント機能が設定されていることを示している。JobSecurePrintのFeatureで内包するOptionがns0000:SecurePrintになっているので、認証プリントがオンに設定されていることを示している。なお、認証プリントがオンに設定されていない場合、Optionにns0000:Noneが設定される。
また、情報1002に示すpsf:ParameterInitの要素は、テキスト入力の値を示している。図10では、印刷設定画面を介して認証プリントのためにパスワード「XXXXXX」が設定されている場合を例示している。なお、印刷設定画面を介してパスワードが設定されていない場合、コンフィグレーションモジュール331によってpsf:ParameterInitの要素を含まないPrintTicketが生成されるものとする。
続けて、プリンタ102を使用する印刷について図9を用いて説明する。なお、本実施形態では、UWPアプリであるタッチアプリ321から印刷を行う場合を例示しているがこれに限定されるものではない。デスクトップアプリ322から印刷を行うことも可能である。
図9(A)は、タッチアプリ321がディスプレイ207に表示する画面の一例である。タッチアプリ321にはコンテンツを表示する領域を有している。また、メニューキー900は、メニューを表示するためのキーである。図9(A)では、メニューが表示されている場合を例示している。メニューには複数の選択肢が表示されており、ユーザはメニューから印刷キー901を選択することができる。
印刷キー901が選択されたことを検知すると、タッチアプリ321は、OS210に印刷ダイアログ表示の要求を依頼する。
図9(B)は、OS210が表示する印刷ダイアログの一例を示している。印刷ダイアログは、OS210によって表示される簡易的な印刷設定を行うダイアログである。印刷ダイアログは、印刷設定のための項目920と印刷指示に関する項目930を有している。ユーザは、項目920を選択して、簡易的な印刷設定を行うことができる。
OS210は、通常使うプリンタとして設定されているプリンタドライバに対応するプリントキュー308に対して設定されているPrintTicketをコンフィグレーションモジュール331から取得し、印刷ダイアログ上に表示する。
項目921は、選択されているプリンタドライバの名称が表示される。ユーザは項目8921を選択して、使用するプリンタドライバを切り替えることができる。また、項目922は、設定されている印刷設定の例である。
また、項目931は、プリント拡張アプリ300が提供する詳細印刷設定UI部304を呼び出す場合に使用する表示アイテムである。項目932は、タッチアプリ321が提供するコンテンツに基づく印刷を開始する場合に使用する表示アイテムである。
OS210は、印刷ダイアログとして表示している項目932が押下されたことを検知すると、印刷イベントを発生させる。印刷イベント発生後に、タッチアプリ321はOS210と協働して印刷対象となるコンテンツ(印刷コンテンツとも呼ぶ)に基づいてXPSファイルを生成し、図6のフローチャートにて説明する印刷処理に進む。
印刷処理における具体的な制御方法について図6及び図7に示すフローチャートを用いて説明する。
図6及び図7のフローチャートに示す各動作(ステップ)は、CPU201が外部メモリ209に記憶された各モジュール、コンポーネント、アプリケーションを実現するためのプログラムをRAM202に読み出し、実行することにより実現される。各制御モジュール、コンポーネント、アプリケーションによって提供される制御を説明する場合、CPU201によって実現される各部を主語として説明する。また、表示、ユーザ操作の受け付け、及びデータ送受信処理などの一部処理は、CPU201、各I/F及び、I/Fに接続された入出力デバイスが協働して実現するものとする。
図5のフローチャートは、印刷イベントが発生したことに応じて実行される。なお、印刷イベントを引き起こすアプリケーションは、タッチアプリ321であっても、デスクトップアプリ322であっても良い。
S601において、OS210は、印刷イベントを発生させたアプリケーション212と協働して生成したXPSファイルをスプーラ325に転送する。XPSファイルの転送が完了すると処理をS602に進める。
S602において、OS210は、WF機能の起動処理を実行する。本処理の詳細については、図7を用いて後述する。WF機能の起動処理に関する一連の処理が完了すると、OS210は、処理をS603に進める。
S603において、OS210のフィルタパイプラインマネージャ335は、スプーラ325からPrintTicketとXPSファイルを取得する。
S604において、フィルタパイプラインマネージャ335は、フィルタコンフィグ336の定義に基づき、印刷に使用するプリンタドライバに対応するフィルタ330を外部メモリ209から読み出し、RAM202に展開する。
続けて、S605において、フィルタパイプラインマネージャ335は、XPSファイルを展開したフィルタに入力し、フィルタによる変換処理を実行させる。当該変換処理は複数のフィルタを使用して行われても良い。また、フィルタパイプラインマネージャ335は、変換の結果得られたPDLをスプーラ325に転送する。
S606において、スプーラ325は、ネットワークI/F214と協働して、変換したPDLとPrintTicketを含む印刷ジョブをプリンタ102に送信する。一覧の処理により送信された印刷ジョブを受信したプリンタ102は、当該印刷ジョブに基づいて印刷処理を実行する。
続けて図7を用いて、S602において実行されるWF機能の起動処理を具体的に説明する。
S701において、OS210は、レジストリ353の設定を読み込む。S702において、OS210は、レジストリ353にバックグラウンドタスクの起動を有効とする設定が記憶されていない場合(起動を無効とする設定が記憶されている場合)、一連のWF機能の起動処理をスキップし、処理をS603以降に進める。一方、OS210は、レジストリ353にレジストリ353にバックグラウンドタスクの起動を有効とする設定が記憶されている場合は、処理をS703に進める。
S703において、OS210は、印刷時起動アプリランチャ350を起動する。S704において、印刷時起動アプリランチャ350は、OS210に対してプリント拡張アプリ300のコンポーネントである印刷時起動バックグラウンドタスク部305の起動要求を行う。具体的には、印刷時起動アプリランチャ350は、印刷に使用されるプリンタドライバに基づき、プリントキューを特定する。続けてタッチアプリ実行環境301と協働して、特定されたプリントキューに関連付けられたUWP Device Appsのバックグラウンドタスクを実行するコンポーネントを起動するよう制御する。本実施形態では、プリント拡張アプリ300のタスク部305のコンポーネントが起動されるものとする。
S705において、バックグラウンドタスク部305は、OS210に対してフォアグラウンドタスクである印刷時起動UI部303のコンポーネントを起動するよう要求する。要求を受け付けたOS210は、スレッドプール355内のスレッドとしてプリント拡張アプリ300が提供する印刷時起動UI部303を割り当て、UI部303によってディスプレイ207上に画面の表示を行える状態に遷移させる。また、UI部303は、ユーザとのやり取りを継続するために遅延オブジェクトを取得する。
S706において、印刷時起動UI部303は、プログレス画面をディスプレイ207上に表示する。図8は、印刷時起動UI部303によってディスプレイ207上に表示される画面の一例であり、図8(A)はプログレス画面の一例を示している。プログレス画面には、801に示すプログレスリングが表示される。UI部303は、プログレスリングを回し続けるなどの動きを表示することで、処理の実行中であることをユーザに示す。また、802に示す「印刷中…」などの文字列を表示し、印刷に関する処理の実行中であることをユーザに示す。
図7の説明に戻り、S707において、UI部303は、OS210に、UIスレッドとは非同期に実行される解析スレッドの起動を要求する。OS210は、スレッドプール355内に当該解析スレッドを割り当てる。当該解析スレッドは、PrintTicketをコンフィグレーションモジュール331から取得し、取得したPrintTicketの解析を試みる。なお、本実施形態では、解析処理とUI制御処理を別スレッドで制御する場合を例示しているがこれに限定されるものではない。
S708において、印刷時起動UI部303は、S707のPrintTicketの解析処理を試みた結果に基づいて、PrintTicketに認証プリントが設定されているかどうかを判断する。解析処理の結果、認証プリントが設定されていないと判断した場合には、処理をS711に進める。一方、解析処理の結果、認証プリントが設定されていると判断した場合には、処理をS709に進める。
S709において、印刷時起動UI部303のUIスレッドは、ディスプレイ207上に表示する画面を入力画面に切り替える。図8(B)は入力画面の一例である。領域810は、認証情報を入力するためのテキストボックスを示している。ユーザは、領域810にパスワードやPINコードなどを入力する。ボタン811は、OKボタンであり、クリックなどの操作イベントを受け付けた際に、810に入力された認証情報を確定させるキーである。このOKボタン811は、819に認証情報が入力されるまでグレーアウトで表示してもよい。キャンセルボタン812は、印刷をキャンセルする場合に使用するキーである。キャンセルキーが押下された場合、印刷ジョブの実行が中止される。
図7の説明に戻り、S710において、印刷時起動UI部303のUIスレッドは、ユーザ操作を受け付け、当該ユーザ操作に基づき、PrintTicketの設定を変更する。具体的には、入力された認証情報に基づき、図10で例示した情報1002を書き換える。また、情報1002に相当する属性が無ければ、PrintTicketに当該属性を追加する。
また、UI部303は、ユーザとのやり取りが完了したことをOS210に通知するため、遅延オブジェクトを解放するメソッドを呼び出す。遅延オブジェクトが解放し、フォアグラウンドタスクの終了処理が完了すると、処理の主体がバックグラウンドタスクに遷移する。
続けて、S711において、バックグラウンドタスク部305は、UI部303によって設定が変更されたPrintTicketとXPSファイルを取得する。
S712において、バックグラウンドタスク部305は、PrintTicketとXPSファイルをフィルタパイプラインマネージャ335に送信し、一連のWF機能に関する処理を完了する。
なお、S702において、バックグラウンドタスクを起動しないと判断した場合、モジュール331から取得したPrintTicketと、印刷指示に応じて生成されたXPSファイルがフィルタパイプラインマネージャ335に送信されるものとする。
以上説明した実施形態により、バックグラウンドタスクを構成するコンポーネントであるタスク部305が、OSにより呼び出されたことに応じて、フォアグラウンドタスクであるUI部303を呼び出し、UIを表示することができる。従って、フォアグラウンドタスクであるUI部303が遅延オブジェクトを取得した後に、当該UI部303でPrintTicketを解析できるようになる。従って、バックグラウンドタスクによる処理を完遂できないことに伴って印刷処理が中止されることを抑制できるようになる。また、UI部が呼び出された後に、プログレスリングなどの処理中であることを示すUIが表示される。従って、ユーザに対して処理の実行中であることを分かりやすく通知することができる。
<第2の実施形態>
第1の実施形態では、PrintTicketの解析をフォアグラウンドタスクに委ねることで、WF機能の実行に起因して印刷ジョブが破棄されることを抑制する仕組みについて説明した。第2の実施形態では、バックグラウンドタスク部305でUIを起動するかどうかの判断を行えるケースもあることに着目する。このようなケースにおいて、バックグラウンドタスク部305で判断が行えるケースにおいては、UIを起動しないようにすることで、印刷時のパフォーマンスをより高める仕組みについて説明する。
具体的には第2の実施形態では、バックグラウンドタスク部305でPrintTicketを解析し、UIの起動が必要となるかどうかチェックする。また、バックグラウンドタスク部305で、実行時間を計測し、処理が完遂できないと判断したことに従って、フォアグラウンドタスクを起動するよう制御する仕組みについて説明する。
なお、第2の実施形態におけるハードウェア構成やソフトウェア構成は、第1の実施形態と同様のため省略する。
具体的な制御方法について図12のフローチャートを用いて説明する。図12のフローチャートは、第1の実施形態で説明した図7のフローチャートに代えて実行される処理を説明するフローチャートである。図7のフローチャートとの差異は、バックグラウンドタスクの起動処理の後に、S1220〜S1224の処理が追加されている点である。
S1201〜S1204の処理は、第1の実施形態のS701〜S704と同様であるため省略する。S1204でバックグラウンドタスクが起動すると、S1220の処理に進む。
S1220において、タスク部305は、タイマーを起動し経過時間のカウントを開始する。S1221において、タスク部305は、PrintTicketをコンフィグレーションモジュール331から取得し、解析する。なお、S1221の解析処理はタイマーのカウントとは非同期で実行されるものとする。
S1222において、タスク部305は、S1221で実行した解析の結果が得られたか否かを判断する。S1221で実行した解析の結果が得られた場合、処理をS1223に進め、S1221で実行した解析の結果が得られていない場合、処理をS1224に進める。S1223では、S1221の解析の結果に基づき、PrintTicketに認証プリントが設定されているか否かを判断する。認証プリントが設定されていると判断すると、処理をS1205に進め、認証プリントが設定されていない場合には、一連の処理を終了し、処理をS603以降のデータ変換、送信処理に進める。S1205の処理は第1の実施形態におけるS705の処理と同様のため省略する。またS1205の処理が完了すると第1の実施形態のS706以降で説明したフォアグラウンドタスクによる処理に進む。
一方、S1224において、タスク部305は、タイマーのカウント時間が、内部的に保持する所定の閾値を超過したかどうかを判断する。タイマーのカウント時間が、内部的に保持する所定の閾値を超過した場合には、処理をS1205へ進める。一方、タイマーのカウント時間が、内部的に保持する所定の閾値を超過していない場合には、S1222に戻り、解析の結果を待つ。所定の閾値は、バックグラウンドタスクにおける実行に関わる制約に達してしまう前に、フォアグラウンドタスクを起動できるよう、適宜適切な閾値が設定されるものとする。
以上により、バックグラウンドタスクの制約内で判断が完了できる場合においては、バックグラウンドタスクにより判断を行うようにすることができる。従って、印刷に係るパフォーマンスを高めることができる。
<第3の実施形態>
第3の実施形態では、第2の実施形態においてバックグラウンドタスク内で実行させたタイマーのカウントに相当する機能をOS210に実行させるケースについて説明する。本実施形態では、OS210がバックグラウンドタスクを強制終了する前に、タイムアウト例外を発行するよう構成する。また、バックグラウンドタスク部305は、当該タイムアウト例外のスローを検知したことに従って、例外処理としてUI部を起動するよう構成する。
なお、第3の実施形態におけるハードウェア構成やソフトウェア構成は、第1の実施形態と同様のため省略する。
まず、OS210による例外の発行について説明する。OS210は、印刷のイベントが発生すると、プリント拡張アプリ300のプロセスを生成し、印刷時起動バックグラウンドタスク部305のスレッドを生成する。生成後、バックグラウンドタスクに処理を実行させる。OS210は生成したスレッドの実行時間を管理する。OS210は、当該スレッドを生成してから一定時間以上経過した場合、当該スレッドに対して、タイムアウト例外をスローする。本実施形態では、バックグラウンドタスク部305が、当該例外のスローを検知したことに応じて、フォアグラウンドタスクを起動するよう制御する。
具体的な制御方法について図13のフローチャートを用いて説明する。図13のフローチャートは、第1の実施形態で説明した図7のフローチャートに代えて実行される処理を説明するフローチャートである。図7のフローチャートとの差異は、バックグラウンドタスクの起動処理の後に、S1321〜S1324の処理が追加されている点である。
S1301〜S1304の処理は、第1の実施形態のS701〜S704と同様であるため省略する。S1304でバックグラウンドタスクが起動すると、S1321の処理に進む。
S1321において、タスク部305は、PrintTicketをコンフィグレーションモジュール331から取得し解析する。
S1322において、タスク部305は、S1321で実行した解析の結果が得られたか否かを判断する。S1321で実行した解析の結果が得られた場合、処理をS1323に進め、S1321で実行した解析の結果が得られていない場合、処理をS1324に進める。S1323では、S1321の解析の結果に基づき、PrintTicketに認証プリントが設定されているか否かを判断する。認証プリントが設定されていると判断すると、処理をS1305に進め、認証プリントが設定されていない場合には、一連の処理を終了し、処理をS603以降のデータ変換、送信処理に進める。S1305の処理は第1の実施形態におけるS705の処理と同様のため省略する。またS1305の処理が完了すると第1の実施形態のS706以降で説明したフォアグラウンドタスクによる処理に進む。
一方、S1324において、タスク部305は、OS210からタイムアウト例外を受け取ったか否かを判断する。タスク部305は、タイムアウト例外を受け取った場合、処理をS1305に進める。タイムアウト例外を受け取っていない場合は、S1321の処理に戻り、バックグラウンドタスクによる解析及び判断処理を継続する。
以上説明したように、本実施形態では、OS210がバックグラウンドタスクのスレッドを強制終了する前にバックグラウンドタスクに対してタイムアウト例外を発行する。また、バックグラウンドタスクは当該タイムアウト例外を受け取ったことに応じてフォアグラウンドタスクを起動し、遅延オブジェクトを取得する。この処理により、バックグラウンドタスクのために割り当てられたスレッドでは、PrintTicketの解析及びUIを起動するかどうかの判断のみに演算リソースを割くことができる。従って、演算のパフォーマンスを高めることができる。
<その他の実施形態>
なお、本実施形態では、WF機能で表示するUIの一例として認証プリントの認証情報の入力画面を説明したがこれに限定されるものではない。例えば、印刷指示を受け付けた後に表示するUIとして印刷プレビューを表示するようにしてもよい。また、本実施形態では、V4ドライバがプリンタドライバの場合を例示したが、V4FAXドライバに適用することもできる。例えば、V4FAXドライバに適用する場合、WF機能を使用して宛先の入力や確認を行う画面を表示するようにしてもよい。
本発明は、上述の各実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASICやFPGA)によっても実現可能である。
101 クライアントコンピュータ
102 プリンタ
201 CPU

Claims (9)

  1. 印刷指示を受け付けた場合に、GUI(Graphical User Interface)を提供することが可能であり、バックグラウンドタスクを実行するためのコンポーネントと、フォアグラウンドタスクを実行するためのコンポーネントを少なくとも含むアプリケーションのプログラムであって、
    OS(Operating System)によって前記バックグラウンドタスクのコンポーネントが起動されたことに応じて、前記バックグラウンドタスクは、前記フォアグラウンドタスクのコンポーネントの起動を前記OSに要求する要求ステップを、コンピュータに実行させ、
    前記要求に基づき前記フォアグラウンドタスクが起動されたことに従って、前記フォアグラウンドタスクは、
    前記印刷指示を受け付けたことに従って、印刷に関するデータを取得する取得ステップと、
    処理を実行中であることを示すGUIを表示する第1の表示制御ステップと、
    前記取得ステップで取得したデータに基づいてユーザ操作を受け付けるGUIを表示するか否かを判断する判断ステップと、
    前記判断ステップで前記ユーザ操作を受け付けるGUIを表示しないと判断したことに従って、処理の完了を示す情報を前記OSに通知する通知ステップと、
    を前記コンピュータに実行させることを特徴とするプログラム。
  2. 前記フォアグラウンドタスクは、前記判断ステップで前記ユーザ操作を受け付けるGUIを表示すると判断したことに従って、ユーザ操作を受け付けるためのGUIを表示する第2の表示制御ステップを前記コンピュータに更に実行させ、
    前記通知ステップでは、更に、前記ユーザ操作を受け付けるためのGUIを介してユーザ操作を受け付けたことに従って、前記処理の完了を示す情報を前記OSに通知することを特徴とする請求項1に記載のプログラム。
  3. 前記バックグラウンドタスクは、
    前記バックグラウンドタスクの実行時間を計測する計測ステップと、
    前記印刷に関するデータを取得する第2の取得ステップと、
    前記第2の取得ステップで取得したデータに基づいて前記フォアグラウンドタスクを起動するか否かを判断する第2の判断ステップと、を前記コンピュータに更に実行させ、
    前記要求ステップでは、前記第2の判断ステップによって、前記フォアグラウンドタスクを起動すると判断した場合、又は、前記実行時間に基づき所定時間が経過したと判断した場合に、前記フォアグラウンドタスクの起動を前記OSに要求することを特徴とする請求項1又は2に記載のプログラム。
  4. 前記バックグラウンドタスクは、
    前記印刷に関するデータを取得する第2の取得ステップと、
    前記第2の取得ステップで取得したデータに基づいて前記フォアグラウンドタスクを起動するか否かを判断する第2の判断ステップと、
    前記OSによって発行される例外を受信する受信ステップと、
    前記発行された例外が、タイムアウトを示す例外であることに従って前記フォアグラウンドタスクの起動を前記OSに要求する例外処理ステップと、
    を前記コンピュータに更に実行させることを特徴とする請求項1又は2に記載のプログラム。
  5. 前記印刷に関するデータは、印刷設定を示すプリントチケットであることを特徴とする請求項1乃至4のいずれか1項に記載のプログラム。
  6. 前記通知ステップによる通知が行われた後に、プリンタドライバと前記OSによって印刷データが生成されることを特徴とする請求項1乃至5のいずれか1項に記載のプログラム。
  7. 印刷指示を受け付けた場合に、GUI(Graphical User Interface)を提供することが可能であり、バックグラウンドタスクを実行するためのコンポーネントと、フォアグラウンドタスクを実行するためのコンポーネントを少なくとも含むアプリケーションのプログラムであって、
    OS(Operating System)によって前記バックグラウンドタスクのコンポーネントが起動された場合において、前記バックグラウンドタスクは、起動されたことに応じて、前記フォアグラウンドタスクのコンポーネントの起動を要求する要求ステップをコンピュータに実行させ、
    前記要求に基づき前記フォアグラウンドタスクが起動されたことに従って、前記フォアグラウンドタスクは、GUI表示に関する処理を実行することを特徴とするプログラム。
  8. 前記アプリケーションのプログラムは、前記アプリケーションに関連するV4プリンタドライバのインストールに応じて、前記コンピュータにインストールされるUWP(Universal Windows Platform)アプリケーションのプログラムであることを特徴とする請求項1乃至7のいずれか1項に記載のプログラム。
  9. 前記印刷に関するデータは、印刷設定を示すプリントチケットであり、
    前記判断ステップでは、前記取得ステップで取得したプリントチケットに認証プリントの設定がなされていることに従って、前記ユーザ操作を受け付けるGUIを表示すると判断し、
    前記第2の表示制御ステップでは、前記認証プリントで使用する認証情報の入力を受け付けるGUIを表示することを特徴とする請求項2に記載のプログラム。
JP2018089461A 2018-05-07 2018-05-07 印刷に関わる画面を表示するためのプログラム及びアプリケーション Active JP7166785B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2018089461A JP7166785B2 (ja) 2018-05-07 2018-05-07 印刷に関わる画面を表示するためのプログラム及びアプリケーション
US16/402,060 US11119816B2 (en) 2018-05-07 2019-05-02 Storage medium storing an application program
CN201910376015.0A CN110456991B (zh) 2018-05-07 2019-05-07 存储应用程序的存储介质和提供用户界面的方法
JP2022163764A JP7439207B2 (ja) 2018-05-07 2022-10-12 プログラム
JP2024019186A JP2024045498A (ja) 2018-05-07 2024-02-13 アプリケーションプログラム、記憶媒体、制御方法、及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018089461A JP7166785B2 (ja) 2018-05-07 2018-05-07 印刷に関わる画面を表示するためのプログラム及びアプリケーション

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2022163764A Division JP7439207B2 (ja) 2018-05-07 2022-10-12 プログラム

Publications (3)

Publication Number Publication Date
JP2019197277A true JP2019197277A (ja) 2019-11-14
JP2019197277A5 JP2019197277A5 (ja) 2021-08-19
JP7166785B2 JP7166785B2 (ja) 2022-11-08

Family

ID=68383798

Family Applications (3)

Application Number Title Priority Date Filing Date
JP2018089461A Active JP7166785B2 (ja) 2018-05-07 2018-05-07 印刷に関わる画面を表示するためのプログラム及びアプリケーション
JP2022163764A Active JP7439207B2 (ja) 2018-05-07 2022-10-12 プログラム
JP2024019186A Pending JP2024045498A (ja) 2018-05-07 2024-02-13 アプリケーションプログラム、記憶媒体、制御方法、及び情報処理装置

Family Applications After (2)

Application Number Title Priority Date Filing Date
JP2022163764A Active JP7439207B2 (ja) 2018-05-07 2022-10-12 プログラム
JP2024019186A Pending JP2024045498A (ja) 2018-05-07 2024-02-13 アプリケーションプログラム、記憶媒体、制御方法、及び情報処理装置

Country Status (3)

Country Link
US (1) US11119816B2 (ja)
JP (3) JP7166785B2 (ja)
CN (1) CN110456991B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021131979A1 (ja) * 2019-12-27 2021-07-01 キヤノン株式会社 制御方法及び情報処理装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7341647B2 (ja) * 2018-10-05 2023-09-11 キヤノン株式会社 情報処理装置、制御方法及びプログラム
JP2023059509A (ja) * 2021-10-15 2023-04-27 シャープ株式会社 情報処理装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318779A (ja) * 2000-05-09 2001-11-16 Canon Inc 印刷制御方法及び装置と記憶媒体並びに印刷システム
JP2008009901A (ja) * 2006-06-30 2008-01-17 Konica Minolta Business Technologies Inc 印刷制御方法および印刷制御装置
JP2013145494A (ja) * 2012-01-16 2013-07-25 Canon Inc 情報処理装置、制御方法、及びプログラム
JP2014106693A (ja) * 2012-11-27 2014-06-09 Canon Inc デバイス、情報処理装置及び情報処理システム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004310213A (ja) * 2003-04-02 2004-11-04 Seiko Epson Corp 印刷管理システムおよびこれに用いられるプログラム並びに印刷管理方法
JP5200215B2 (ja) 2008-01-11 2013-06-05 京セラドキュメントソリューションズ株式会社 画像形成装置及び画像形成システム
JP4978661B2 (ja) 2009-06-05 2012-07-18 コニカミノルタビジネステクノロジーズ株式会社 画像処理装置
KR20110025544A (ko) * 2009-09-04 2011-03-10 삼성전자주식회사 화상형성장치와 연결된 호스트장치 및 그 인쇄제어방법
JP6217686B2 (ja) 2015-04-06 2017-10-25 コニカミノルタ株式会社 携帯端末、プログラムおよび通信システム
JP6579788B2 (ja) * 2015-04-23 2019-09-25 キヤノン株式会社 画像形成装置、画像形成装置の制御方法、及びプログラム
JP6472368B2 (ja) 2015-11-25 2019-02-20 キヤノン株式会社 情報処理装置、情報処理装置の制御方法、及びプログラム
JP6890938B2 (ja) * 2016-08-12 2021-06-18 キヤノン株式会社 情報処理装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001318779A (ja) * 2000-05-09 2001-11-16 Canon Inc 印刷制御方法及び装置と記憶媒体並びに印刷システム
JP2008009901A (ja) * 2006-06-30 2008-01-17 Konica Minolta Business Technologies Inc 印刷制御方法および印刷制御装置
JP2013145494A (ja) * 2012-01-16 2013-07-25 Canon Inc 情報処理装置、制御方法、及びプログラム
JP2014106693A (ja) * 2012-11-27 2014-06-09 Canon Inc デバイス、情報処理装置及び情報処理システム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021131979A1 (ja) * 2019-12-27 2021-07-01 キヤノン株式会社 制御方法及び情報処理装置

Also Published As

Publication number Publication date
CN110456991B (zh) 2023-08-29
JP7439207B2 (ja) 2024-02-27
JP2024045498A (ja) 2024-04-02
JP7166785B2 (ja) 2022-11-08
US20190340015A1 (en) 2019-11-07
US11119816B2 (en) 2021-09-14
JP2022179678A (ja) 2022-12-02
CN110456991A (zh) 2019-11-15

Similar Documents

Publication Publication Date Title
US11789676B2 (en) Information apparatus, controlling method for information apparatus, and storage medium
JP7439207B2 (ja) プログラム
JP6415025B2 (ja) 画像形成装置、システム、制御方法、およびプログラム
US20120081731A1 (en) Printing system, printing method, print server, control method and computer-readable medium
US9367266B2 (en) Information processing apparatus, control method, and storage medium
EP3540590A1 (en) Information processing system, print system, and method and program for controlling information processing system
US12014097B2 (en) Recording medium, control method and information processing apparatus having print setting that selectively requires a password
JP2002182878A (ja) 印刷制御装置および方法および印刷システムおよびコンピュータプログラムとその記録媒体
JP4669037B2 (ja) 画像処理装置、ネットワークインタフェース装置、制御方法、画像処理システム、及びプログラム
EP3789867A1 (en) Application and information processing apparatus
US20170351446A1 (en) Information processing apparatus, method for controlling information processing apparatus, and storage medium
JP6481508B2 (ja) 端末装置、プログラム及び出力システム
US11625205B2 (en) Information processing apparatus, server apparatus, control method, and storage medium
JP2012221334A (ja) 画像形成システムとその処理方法、画像形成装置、印刷管理サーバー、プリントサーバ、御方法及びプログラム
JP5887900B2 (ja) ジョブ制御システム、ジョブ制御方法、情報処理装置、ジョブ制御プログラム
CN110764720A (zh) 打印设备、打印设备的控制方法和存储介质
JP7328405B2 (ja) 情報処理装置、情報処理装置の制御方法及び印刷設定アプリケーション
JP7328410B2 (ja) アプリケーション、方法及び記録媒体
WO2022202480A1 (ja) サポートプログラムおよび印刷システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210506

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220316

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220329

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220523

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220927

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221026

R151 Written notification of patent or utility model registration

Ref document number: 7166785

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151