[1]実施例
図1は実施例に係る情報処理システム1の全体構成を示した図である。情報処理システム1は情報処理装置11と、ユーザが情報処理装置11に対する処理の指示を与える操作を行うために用いる端末装置12(1)~12(n)(ただし、nは任意の自然数)を備える。以下、端末装置12(1)~12(n)を互いに区別しない場合、それらを「端末装置12」という。情報処理装置11と端末装置12の各々は無線及び有線の少なくとも一方により互いに通信可能である。
情報処理装置11は画像形成機能、画像読取機能、文字認識機能、メール送信機能及びFAX送受信機能を備える複合機である。端末装置12はコンピュータであり、例えばデスクトップ型コンピュータ、ノートブック型コンピュータ、タブレット型コンピュータ等、それらの形態は様々に異なってよい。
図2は情報処理装置11のハードウェア構成を示した図である。情報処理装置11は、プログラム及び各種データを記憶するメモリ101と、メモリ101に記憶されているプログラムに従い各種データ処理を行うプロセッサ102と、ユーザに対し画像を表示するディスプレイ103と、ディスプレイ103と積層配置されユーザのタッチ操作を受け付けるタッチパネル104を備える。
情報処理装置11は、さらに、紙等のシート状記録媒体に画像形成を行うプリンタユニット105と、紙等のシート状記録媒体に形成された画像を光学的に読み取るスキャナユニット106と、インターネットプロトコルに従いデータ通信を行う通信ユニット107と、電話回線を通じてデータ通信を行う通信ユニット108を備える。
図3は情報処理システム1の機能構成を示した図である。すなわち、情報処理装置11のプロセッサ102がメモリ101に記憶されているプログラムに従う処理を実行することにより、図3に示される構成部を備える装置が実現される。また、端末装置12の各々が備えるプロセッサがメモリに記憶されているプログラムに従う処理を実行することにより、図3に示される構成部を備える装置が実現される。
情報処理装置11は、ユーザに操作を促す画像を表示するとともにユーザの操作を受け付ける操作部131(0)と、画像形成等の各種処理を実行する処理部111と、処理部111に対し処理の実行を指示する指示部112を備える。操作部131(0)はプロセッサ102の制御下で動作するディスプレイ103とタッチパネル104により実現される。
処理部111は、画像形成処理を行う画像形成部1111と、画像読取処理を行う画像読取部1112と、文字認識処理を行う文字認識部1113と、電子メールの送信処理を行うメール送信部1114と、FAXの送受信処理を行うFAX送受信部1115と、アプリケーションプログラムのインストール等のデータ更新処理を行うデータ更新部1116を備える。
画像形成部1111はプロセッサ102の制御下で動作するプリンタユニット105により実現される。画像読取部1112はプロセッサ102の制御下で動作するスキャナユニット106により実現される。文字認識部1113はプロセッサ102により実現される。メール送信部1114はプロセッサ102及びプロセッサ102の制御下で動作する通信ユニット108により実現される。FAX送受信部1115はプロセッサ102及びプロセッサ102の制御下で動作する通信ユニット107により実現される。データ更新部1116はプロセッサ102により実現される。
指示部112は、各種データを記憶する記憶部1121と、操作部131(0)及び端末装置12(1)~12(n)が備える操作部131(1)~131(n)からユーザにより要求されたジョブの内容を示すデータであるジョブデータを取得するジョブデータ取得部1122と、処理部111から処理部111の状態を示すデータである状態データを取得する状態データ取得部1123を備える。以下、操作部131(0)及び端末装置12(1)~12(n)が備える操作部131(1)~131(n)を区別しない場合、それらを「操作部131」という。
本願において、「ジョブ」とは、ユーザにより要求される処理の単位を意味し、1又は複数の処理を含む。また、本願において「タスク」とは、ジョブを構成し、使用するリソースが各々定まる1又は複数の処理を意味する。また、本願において「リソース」とは、装置又は装置群が備える要素のうち情報処理に必要な要素を意味する。例えば、FAX送信というジョブは、スキャナユニット106というリソースを使用する原稿読取というタスクと、通信ユニット108というリソースを使用するデータ転送というタスクにより構成される。また、以下の説明において、第1のジョブが要求された後に第2のジョブが要求された場合の第1のジョブを第2のジョブの「先着のジョブ」と呼び、第2のジョブを第1のジョブの「後着のジョブ」と呼ぶ。
指示部112は、さらに、記憶部1121に記憶されているデータに基づき監視対象のイベントの発生を検知するイベント検知部1124と、イベント検知部1124による監視対象のイベントの検知をトリガに記憶部1121に記憶されているデータに基づき処理部111が行う処理の計画(以下、「処理計画」という)を生成する処理計画生成部1125と、処理計画生成部1125により生成された処理計画に従い処理部111に対し処理の指示を示すデータである指示データを出力する指示データ出力部1126と、ジョブの要求元の操作部131(すなわち、要求元のユーザ)にジョブの推定される完了時刻等の通知を行う通知部1127を備える。
本願において、「イベント」とは、情報処理システムの動作又は状態の変化を意味する。
記憶部1121はプロセッサ102の制御下で動作するメモリ101により実現される。ジョブデータ取得部1122、状態データ取得部1123、イベント検知部1124、処理計画生成部1125及び指示データ出力部1126はプロセッサ102により実現される。通知部1127はプロセッサ102及びプロセッサ102の制御下で動作する通信ユニット107により実現される。
記憶部1121には、ジョブデータ取得部1122が操作部131から取得したジョブデータを格納するジョブテーブルと、状態データ取得部1123が処理部111から取得した状態データを格納する状態テーブルと、タスクの種別毎にタスクの実行において使用されるリソースを示すデータである使用リソースデータを格納する使用リソーステーブルと、処理計画生成部1125により生成された処理計画を示すデータである処理計画データを格納する処理計画テーブルが記憶されている。
図4はジョブテーブルのデータ構成を示した図である。ジョブテーブルはジョブの各々に応じたジョブデータを含むデータレコードの集まりである。ジョブテーブルに含まれるデータレコードには、ジョブデータにより要求されたジョブを識別するジョブ番号と、ジョブデータの受領時刻と、ジョブデータの要求元の操作部131を識別する要求元識別情報とを示すデータが含まれる。また、ジョブテーブルに含まれるジョブデータには、要求されたジョブの種別を示すジョブ種別と、ジョブの処理対象のデータ量(例えば、インストールするプログラムのデータ量、読み取る原稿の枚数等)と、ジョブを構成する1又は複数のタスク(タスク1、タスク2、・・・)の各々の種別とを示すデータが含まれる。
図5は状態テーブルのデータ構成を示した図である。状態テーブルは情報処理装置11が備える複数のリソースの各々に応じた状態データの集まりである。状態データには、リソースを識別するリソース名と、リソースの現在の状態とを示すデータが含まれる。
図6は使用リソーステーブルのデータ構成を示した図である。使用リソーステーブルはタスクの種別の各々に応じた使用リソースデータの集まりである。使用リソースデータには、タスクの種別を示すタスク種別と、タスクの実行において使用されるリソース及び当該リソースの使用が排他的であるか否かを示すデータと、タスクの実行中にユーザに対する操作を要求するか否かを示すとともにユーザに対する操作を要求する場合はタスクにおける操作の要求のタイミングを示すデータとが含まれる。
図7は処理計画テーブルのデータ構成を示した図である。処理計画テーブルは情報処理装置11が備えるリソースの各々に応じて設けられている。処理計画テーブルは、ジョブ番号とタスク番号の組み合わせにより特定されるタスクの各々に応じたデータレコードの集まりである。処理計画テーブルに含まれるデータレコードには、ジョブ番号と、タスク番号と、タスクの実行の開始が予定されている時刻(以下、「予定開始時刻」という)と、実際にタスクの実行が開始された時刻(以下、「開始時刻」という)と、推定されるタスクの実行に要する時間(以下、「推定所要時間」という)と、タスクの実行が完了した時刻(以下、「完了時刻」という)とを示すデータが含まれる。
図3に示されるように、端末装置12(1)~12(n)は操作部131(1)~131(n)を備える。操作部131(1)~131(n)は、ユーザに操作を促す画像を表示するとともにユーザの操作を受け付ける。操作部131(1)~131(n)は、例えば端末装置12がデスクトップ型コンピュータやノートブック型コンピュータであればプロセッサとプロセッサの制御下で動作するディスプレイ及びキーボード等の入力装置により実現され、端末装置12がタブレット型コンピュータであればプロセッサとプロセッサの制御下で動作するディスプレイ及びタッチパッドにより実現される。
図8は指示部112が行う処理のフローを示した図である。情報処理装置11が起動した後、いずれかの操作部131に対し、ユーザが処理部111により行われる何らかの処理を要求するための操作を行うと、操作の行われた操作部131から指示部112に対し要求された処理の内容を示すジョブデータが送信される。操作部131から送信されたジョブデータはジョブデータ取得部1122により取得され、ジョブテーブル(図4)に格納される。
また、処理部111は、画像形成部1111等の状態が変化すると、変化後の状態を示す状態データを指示部112に引き渡す。処理部111から引き渡された状態データは状態データ取得部1123により取得され、状態テーブル(図5)に格納される。
イベント検知部1124は記憶部1121に記憶されているジョブテーブル及び状態テーブルを監視し、これらのテーブルの更新(監視対象のイベントの一例)を検知する。イベント検知部1124によりジョブテーブル又は状態テーブルの更新が検知されると(ステップS01;Yes)、処理計画生成部1125はジョブテーブル、状態テーブル及び使用リソーステーブルに格納されているデータに基づき、処理部111の処理計画を生成し(ステップS02)、生成した処理計画を示すように処理計画テーブル(図7)のデータを更新する(ステップS03)。ステップS02において処理計画生成部1125が処理計画を生成する手順については後述する。
イベント検知部1124は、ジョブテーブル及び状態テーブルに加え、記憶部1121に記憶されている処理計画テーブルも監視し、処理計画テーブルの更新を検知する。イベント検知部1124により処理計画テーブルの更新が検知されると、通知部1127は更新後の処理計画テーブルに格納されているデータが示す実行中又は未実行のジョブの各々に関し、当該ジョブの状態(実行中、未実行等)と、当該ジョブの更新後の完了時刻と、当該ジョブがユーザに対する操作を要求する場合、当該操作の要求時刻とを示す通知データを生成し、生成した通知データを当該ジョブの要求元の操作部131に送信する(ステップS04)。その後、指示部112は処理をステップS01に戻す。
操作部131は、指示部112から通知データを受信すると、受信した通知データが示すジョブの状態、完了時刻及びユーザに対する操作の要求時刻をユーザに通知する画面(以下、「通知画面」という)を表示する。図9は、通知画面を例示した図である。
続いて、ステップS03において処理計画生成部1125が処理計画を生成する手順を、具体例を用いて説明する。図10は処理計画生成部1125が処理計画を生成する手順を説明するための図である。図10の横軸は時刻を示す。図10(a)は、何も処理を行っていない状態の処理部111が、ジョブ番号が「1233」であるジョブ(以下、「ジョブ1233」のようにいう)を要求するジョブデータを時刻t11に取得し、当該ジョブデータの取得をトリガとして処理計画生成部1125がステップS02において生成する処理計画を示す。
ジョブ1233の種別はアプリケーションインストールであり、タスク1「データダウンロード」、タスク2「インストール」、タスク3「アドレス帳更新」及びタスク4「再起動」で構成されている。処理計画生成部1125は、まず、これらのタスクの各々の所要時間を、タスクの種別とジョブの処理対象のデータ量に基づき推定する。
なお、処理計画生成部1125が処理計画を生成する時点でジョブの処理対象のデータ量が不明な場合、処理計画生成部1125はジョブに対し既定値として与えられているデータ量を用いてタスクの所要時間を推定する。例えば、原稿読取という種別のタスクの所要時間は、ユーザによってセットされる原稿の枚数によって増減するため、タスクの実行前に処理対象の枚数は不明である。この場合、処理計画生成部1125は原稿読取という種別のジョブに既定値として与えられる枚数(例えば、最大枚数として想定される100枚)の原稿がセットされると仮定して所要時間を推定する。
処理計画生成部1125は、ジョブ1233のタスクの各々の所要時間を推定すると、続いて、図10(a)に示すように、ジョブ1233の要求された時刻t11にタスク1を開始し、タスク1が完了する時刻t12にタスク2を開始し、タスク2が完了する時刻t13にタスク3を開始し、タスク4が完了する時刻t14にタスク5を開始し、時刻t15にジョブ1233の全てのタスクが完了する、という処理計画を生成する。
時刻t11から時刻t12までの期間(以下、「期間t11-t12」のようにいう)の長さは処理計画生成部1125が推定したタスク1の所要時間である。同様に、期間t12-t13の長さは処理計画生成部1125が推定したタスク2の所要時間であり、期間t13-t14の長さは処理計画生成部1125が推定したタスク3の所要時間であり、期間t14-t15の長さは処理計画生成部1125が推定したタスク4の所要時間である。
ジョブ1233には先着のジョブがなく、先着のジョブとの間にリソース使用における競合は生じない。そのため、処理計画生成部1125はリソース使用における競合を解消するためのタスクの開始時刻の調整(後述)を行う必要がない。従って、処理計画生成部1125は図10(a)に示される処理計画を示すように、処理計画テーブル(図7)のデータを更新する(ステップS03)。
図10(b)は、処理部111が、図10(a)の処理計画に従いジョブ1233を実行中の時刻t21に、新たなジョブ1234を要求するジョブデータを取得した場合に、当該ジョブデータの取得をトリガとして処理計画生成部1125がステップS02において生成する仮の処理計画を示す。この仮の処理計画は、先着のジョブ1233と後着のジョブ1234との間のリソース使用における競合を考慮せずに生成された処理計画(以下、「競合調整前の処理計画」という)である。
ジョブ1234の種別はスキャンであり、タスク1「原稿読取」及びタスク2「データ転送」で構成される。競合調整前の処理計画に従う場合、処理部111は、ジョブ1234の要求された時刻t21にタスク1を開始し、タスク1が完了する時刻t22にタスク2を開始し、時刻t23にジョブ1234の全てのタスクが完了することになる。
期間t21-t22の長さは処理計画生成部1125が推定したジョブ1234のタスク1の所要時間であり、期間t22-t23の長さは処理計画生成部1125が推定したジョブ1234のタスク2の所要時間である。
続いて、処理計画生成部1125は使用リソーステーブル(図6)を参照し、先着のジョブ1233と後着のジョブ1234との間にリソース使用における競合の有無を判定し、競合があれば競合が解消されるように、後着のジョブ1234のタスクの開始時刻を後ろにずらす。
図10(b)の処理計画においては、ジョブ1233のタスク3「アドレス帳更新」が実行される期間t13-t14においてアドレスデータベースが使用不可となり、タスク4「再起動」が実行される期間t14-t15において全てのリソースが使用不可となる。
ジョブ1234のタスク1「原稿読取」はアドレスデータベースを使用しないため、ジョブ1233のタスク3「アドレス帳更新」が実行される期間t13-t14において実行可能である。ただし、ジョブ1233のタスク4「再起動」が実行される期間t14-t15においては、ジョブ1234のタスク1「原稿読取」は実行不可能である。従って、処理計画生成部1125は、ジョブ1234のタスク1「原稿読取」を速やかに開始した場合、このタスク1「原稿読取」が時刻t14までに完了するか否かを判定する。図10(b)の例の場合、ジョブ1234のタスク1「原稿読取」を速やかに開始した場合、このタスク1「原稿読取」は時刻t14までに完了する。従って、処理計画生成部1125はジョブ1234のタスク1「原稿読取」の開始時刻を後ろにずらすことなく維持する。
一方、ジョブ1234のタスク2「データ転送」はアドレスデータベースを使用するため、ジョブ1233のタスク3「アドレス帳更新」が実行される期間t13-t14において実行不可能である。さらに、ジョブ1234のタスク2「データ転送」は、ジョブ1233のタスク4「再起動」が実行される期間t14-t15においても実行不可能である。従って、処理計画生成部1125は、ジョブ1234のタスク2「データ転送」の開始時刻を、ジョブ1233のタスク4「再起動」が完了する時刻t15までずらす。これにより、先着のジョブ1233と後着のジョブ1234との間にリソース使用における競合が生じなくなる。
図10(c)は、処理計画生成部1125が、上記のように競合を解消するように後着のジョブ1234に含まれるタスク2「データ転送」の開始時刻を調整した後の処理計画(以下、「競合調整後の処理計画」という)を示した図である。図10(c)に示されるように、この場合、ジョブ1234の完了時刻は時刻t24となる。処理計画生成部1125は、上記のように生成した競合調整後の処理計画を示すように、処理計画テーブル(図7)のデータを更新する(ステップS03)。
図10(d)は、従来技術に従い、タスク単位ではなくジョブ単位でリソース使用における競合を解消するように生成された処理計画を示した図である。ジョブ単位でリソース使用における競合を解消する場合、全てのリソースが使用不可となる再起動を伴う先着のジョブ1233が完了する時刻t15まで後着のジョブ1234は実行されない。すなわち、ジョブ1234の開始時刻はジョブ1233が完了する時刻t15までずらされる。そのため、ジョブ1234が完了する時刻は時刻t26となる。
図10(d)に示される処理計画に従う場合、後着のジョブ1234が要求されてから完了するまでの時間は、後着のジョブ1234が要求された時点における先着のジョブ1233の未処理部分の所要時間と後着のジョブ1234の所要時間の合計値となる。
図10(c)と図10(d)を比較すると明らかなように、本実施例に係る指示部112の処理計画生成部1125により生成される処理計画に従う場合、従来技術によって生成される処理計画に従う場合と比較し、時間T1だけ後着のジョブ1234の完了時刻が早くなる。
図11~図13は、ステップS02において処理計画生成部1125が処理計画を生成する手順を説明するための、図10とは別の例を示した図である。
図11は、時刻t11にジョブ0001の要求があった後、時刻t21にジョブ0002の要求があった場合に、処理計画生成部1125が生成する競合調整前の処理計画(図11(a))と、競合調整後の処理計画(図11(b))を示した図である。
ジョブ0002のタスク1はジョブ0001のタスク2と同時に実行されるとリソース使用における競合を生じ、また、ジョブ0002のタスク2はジョブ0001のタスク3と同時に実行されるとリソース使用における競合を生じることが想定されている。
処理計画生成部1125は、図11(a)に示される競合調整前の処理計画を生成した後、まず後着のジョブ0002のタスク1に着目し、ジョブ0002のタスク1と先着のジョブのタスクとの間でリソース使用における競合が生じるか否かを判定する。この場合、競合が生じるため、処理計画生成部1125はジョブ0002のタスク1の開始時刻を、競合が解消する最も早い時刻である時刻t13にずらす。
続いて、処理計画生成部1125は後着のジョブ0002のタスク2に着目し、ジョブ0002のタスク2と先着のジョブのタスクとの間で生じているリソース使用における競合が生じるか否かを判定する。この場合、競合が生じるため、処理計画生成部1125はジョブ0002のタスク2の開始時刻を、競合が解消する最も早い時刻である時刻t14にずらす。これにより、図11(b)に示される競合調整後の処理計画が生成される。
図12は、処理部111が図11(b)に示される処理計画に従い処理を行っている状況下で、時刻t31にジョブ0003の要求があった場合に、処理計画生成部1125が生成する競合調整前の処理計画(図12(a))と、競合調整後の処理計画(図12(b))を示した図である。
ジョブ0003のタスク1はジョブ0001のタスク3と同時に実行されるとリソース使用における競合を生じ、また、ジョブ0003のタスク2はジョブ0002のタスク1と同時に実行されるとリソース使用における競合を生じることが想定されている。
処理計画生成部1125は、図12(a)に示される競合調整前の処理計画を生成した後、まず後着のジョブ0003のタスク1に着目し、ジョブ0003のタスク1と先着のジョブのタスクとの間でリソース使用における競合が生じるか否かを判定する。この場合、競合は生じないため、処理計画生成部1125はジョブ0003のタスク1の開始時刻を時刻t31から変更しない。
続いて、処理計画生成部1125は後着のジョブ0003のタスク2に着目し、ジョブ0003のタスク2と先着のジョブのタスクとの間でリソース使用における競合が生じるか否かを判定する。この場合、競合が生じるため、処理計画生成部1125はジョブ0003のタスク2の開始時刻を、競合が解消する最も早い時刻である時刻t24にずらす。これにより、図12(b)に示される競合調整後の処理計画が生成される。
図13は、処理部111が図12(b)に示される処理計画に従い処理を行っている状況下で、時刻t41にジョブ0004の要求があった場合に、処理計画生成部1125が生成する競合調整前の処理計画(図13(a))と、競合調整後の処理計画(図13(b))を示した図である。
ジョブ0004のタスク1はジョブ0001のタスク2と同時に実行されるとリソース使用における競合を生じ、また、ジョブ0004のタスク2はジョブ0002のタスク2又はジョブ0003のタスク1と同時に実行されるとリソース使用における競合を生じることが想定されている。
処理計画生成部1125は、図13(a)に示される競合調整前の処理計画を生成した後、まず後着のジョブ0004のタスク1に着目し、ジョブ0004のタスク1と先着のジョブのタスクとの間でリソース使用における競合が生じるか否かを判定する。この場合、競合が生じるため、処理計画生成部1125はジョブ0004のタスク1の開始時刻を、競合が解消する最も早い時刻である時刻t13にずらす。
続いて、処理計画生成部1125は後着のジョブ0004のタスク2に着目し、ジョブ0004のタスク2と先着のジョブのタスクとの間でリソース使用における競合が生じるか否かを判定する。この場合、競合が生じるため、処理計画生成部1125はジョブ0004のタスク2の開始時刻を、競合が解消する最も早い時刻である時刻t24にずらす。これにより、図13(b)に示される競合調整後の処理計画が生成される。
上記のように、処理計画生成部1125は新たなジョブの要求があれば、競合調整前の処理計画を生成した後、後着のジョブのタスク1に着目し、着目したタスクと先着のいずれかのジョブのタスクとの間でリソース使用における競合が生じるか否かを判定する。そして、競合が生じないと判定した場合、処理計画生成部1125は着目しているタスクの開始時刻を変更しない。一方、競合が生じると判定した場合、処理計画生成部1125は着目しているタスクの開始時刻を、競合が解消する最も早い時刻にずらす。
処理計画生成部1125は、続いて、後着のジョブのタスク2、タスク3、・・・と順次、着目するタスクを変更し、タスク1に関し上述した競合の有無の判定及び開始時刻の変更と同様の処理を、着目したタスクに関し行う。そして、処理計画生成部1125が後着のジョブの最後のタスクに関し競合の有無の判定及び開始時刻の変更を完了した際に生成されている処理計画が競合調整後の処理計画となる。
上述した情報処理システム1が備える指示部112は、ジョブ単位で要求される処理を実行する処理部111に対し異なるタイミングで要求された2つのジョブのうち先着のジョブを構成する複数のタスクのうちいずれかのタスクが実行されている間に使用されていないリソースを用いて、当該2つのジョブのうち後着のジョブを構成する複数のタスクのうちいずれかのタスクの実行が可能であるか否かを判定する。そして、指示部112は、後着のジョブを構成するいずれかのタスクの実行が可能であると判定した場合、当該タスクの実行を処理部111に指示する。
上記のような構成を備える情報処理システム1によれば、情報処理システム1が複数のジョブの要求を受けた場合、リソース使用における競合が避けられ、かつ、後着のジョブが要求されてから完了するまでの時間が、後着のジョブが要求された時点における先着のジョブの未処理部分の所要時間と後着のジョブの所要時間の合計値より短縮される。
また、上述した情報処理システム1が備える通知部1127は、後着のジョブが実行中にユーザに対する操作の要求を伴う場合、当該操作の要求時刻をユーザに通知する。従って、後着のジョブを要求したユーザは操作の要求時刻を知ることができる。
また、上述した情報処理システム1が備える指示部112は、監視対象のイベントの発生をトリガに、先着のジョブのいずれかのタスクが実行されている間に使用されていないリソースを用いて後着のジョブのいずれかのタスクの実行が可能であるか否かを判定する。従って、監視対象のイベントが発生する毎に、後着のジョブの完了時刻が早められるか否かが判定される。
[2]変形例
上述した実施例は本発明の実施の一例に過ぎず、以下のように変形されてもよい。また、実施例及び各変形例は、必要に応じて組み合わせて実施されてもよい。
[2-1]第1変形例
上述した実施例においては、先着のジョブの完了時刻が、後着のジョブの実行によって遅延することはない。本発明はこの点において限定されず、後着のジョブの実行によって先着のジョブの完了時刻が遅延することが許容されてもよい。後着のジョブの実行によって先着のジョブの完了時刻が遅延することを許容するように上述した実施例を変形した第1変形例を以下に説明する。
第1変形例に係る記憶部1121には、ジョブの優先度と、優先度に応じた遅延時間の許容範囲を示すデータを格納するテーブル(以下、「ジョブ優先度テーブル」という)が記憶されている。
図14はジョブ優先度テーブルの内容を例示した図である。例えば、図14に示されるジョブ優先度テーブルの第1行に格納されているデータは、ジョブ種別が「プリントアウト」であるジョブは優先度が高く、遅延時間の許容範囲が所要時間の0倍であることを示している。この場合、ジョブ種別が「プリントアウト」であるジョブの完了時刻が後着のジョブの実行により遅延することは一切許容されない。
また、例えば、図14に示されるジョブ優先度テーブルの第4行に格納されているデータは、ジョブ種別が「FAX送信」であるジョブは優先度が中程度であり、遅延時間の許容範囲が所要時間の0.5倍であることを示している。この場合、ジョブ種別が「FAX送信」であるジョブの完了時刻が後着のジョブの実行によって遅延する場合であっても、その遅延時間がこのジョブの本来の所要時間の0.5倍以下であれば、後着のジョブの実行が許容される。
図15は第1変形例に係る処理計画生成部1125が処理計画を生成する手順を説明するための図である。図15(a)は、時刻t11にジョブ0001の要求があった後、時刻t21にジョブ0002の要求があった場合に、処理計画生成部1125が生成する競合調整前の処理計画を示している。ジョブ0002のタスク1はジョブ0001のタスク2と同時に実行されるとリソース使用における競合を生じることが想定されている。また、ジョブ0001の所要時間は時間T2である。
処理計画生成部1125は、後着のジョブ0002のタスク1に着目し、ジョブ0002のタスク1を時刻t21に開始可能か否かを判定する。この場合、時刻t21において先着のジョブ0001のタスク2は開始されていないため、処理計画生成部1125はジョブ0002のタスク1を時刻t21に開始可能と判定する。
続いて、処理計画生成部1125は、ジョブ0002のタスク1を時刻t21に開始した場合、先着のジョブ0001のタスクのうち、ジョブ0002のタスク1との間でリソース使用における競合を生じるタスクを特定する。この場合、ジョブ0001のタスク2が競合を生じるタスクとして特定される。
続いて、処理計画生成部1125は、上記のように特定した先着のジョブ0001のタスク2の開始時刻を、競合が解消する最も早い時刻である時刻t22にずらす。図15(b)は、ジョブ0001のタスク2の開始時刻が時刻t22にずらされた状態の処理計画を示している。この場合、ジョブ0001の完了時刻の遅延時間は時間T3となる。
処理計画生成部1125はジョブ優先度テーブル(図14)を参照し、ジョブ0001の種別に応じた遅延時間の許容範囲を特定する。例えば、ジョブ0001の種別が「プリントアウト」であれば、ジョブ0001の遅延時間の許容範囲は所要時間T2の0倍、すなわち、遅延は許容されない。従って、処理計画生成部1125は図15(b)に示される処理計画を破棄し、後着のジョブ0002のタスク1の開始時刻を、競合が解消する最も早い時刻である時刻t13にずらす。図15(c)は、ジョブ0002のタスク1の開始時刻が時刻t13にずらされた状態の処理計画を示している。この場合、図15(c)に示される処理計画が、競合調整後の処理計画となる。
一方、例えば、ジョブ0001の種別が「FAX送信」であれば、ジョブ0001の遅延時間の許容範囲は所要時間T2の0.5倍となる。処理計画生成部1125は、図15(b)に示される処理計画に従う場合、ジョブ0001の完了時刻の遅延時間T3が、ジョブ0001の所要時間T2の0.5倍以下であるか否かを判定する。この場合、遅延時間T3は所要時間T2の0.5倍以下であるため、処理計画生成部1125は図15(b)に示される処理計画を、競合調整後の処理計画として採用する。
上述した第1変形例に係る情報処理システム1が備える指示部112は、先着のジョブを構成する複数のタスクのうちいずれかのタスクが実行されている間に使用されていないリソースを用いて後着のジョブを構成する複数のタスクのうちいずれかのタスクの実行が可能であり、かつ、当該タスクの実行により先着のジョブの完了時刻の遅延時間が許容範囲内であると判定した場合、当該タスクの実行を処理部111に指示する。従って、後着のジョブの完了時刻を早めるために、先着のジョブの完了時刻が許容範囲を超えて遅延することはない。
また、上述した第1変形例に係る情報処理システム1が備える指示部112は、先着のジョブの優先度に応じて異なる許容範囲を用いる。従って、後着のジョブの完了時刻を早めるために、先着のジョブの完了時刻が先着のジョブの優先度に応じた許容範囲を超えて遅延することはない。
[2-2]第2変形例
上述した第1変形例においては、先着のジョブの完了時刻の遅延時間が許容範囲内であるか否かによって、先着のジョブの実行中における後着のジョブの実行の可否が決定される。第2変形例においては、先着のジョブが実行中にユーザに対する操作の要求を伴う場合、当該操作の要求時刻の遅延時間が許容範囲内であるか否かによって、先着のジョブの実行中における後着のジョブの実行の可否が決定される。
図16は第2変形例に係る処理計画生成部1125が処理計画を生成する手順を説明するための図である。図16(a)は、時刻t11にジョブ0001の要求があった後、時刻t21にジョブ0002の要求があった場合に、処理計画生成部1125が生成する競合調整前の処理計画を示している。ジョブ0002のタスク1はジョブ0001のタスク2と同時に実行されるとリソース使用における競合を生じることが想定されている。また、ジョブ0001のタスク2の完了時刻には、ユーザに対する操作(例えば、追加原稿の有無確認のための操作)の要求が行われることが想定されている。
処理計画生成部1125は、後着のジョブ0002のタスク1に着目し、ジョブ0002のタスク1を時刻t21に開始可能か否かを判定する。この場合、時刻t21において先着のジョブ0001のタスク2は開始されていないため、処理計画生成部1125はジョブ0002のタスク1を時刻t21に開始可能と判定する。
続いて、処理計画生成部1125は、ジョブ0002のタスク1を時刻t21に開始した場合、先着のジョブ0001のタスクのうち、ジョブ0002のタスク1との間でリソース使用における競合を生じるタスクを特定する。この場合、ジョブ0001のタスク2が競合を生じるタスクとして特定される。
続いて、処理計画生成部1125は、上記のように特定した先着のジョブ0001のタスク2の開始時刻を、競合が解消する最も早い時刻である時刻t22にずらす。図16(b)は、ジョブ0001のタスク2の開始時刻が時刻t22にずらされた状態の処理計画を示している。この場合、ジョブ0001のタスク2の完了時刻は時刻t13から時刻t15へずれる。従って、図16(b)に示される処理計画に従う場合、ジョブ0001の実行に伴うユーザに対する操作の要求時刻の遅延時間は時間T4となる。
処理計画生成部1125は、操作の要求時刻の遅延時間T4が、予め定められた許容範囲内(例えば、30秒以下)であるか否かを判定する。遅延時間T4が許容範囲外であれば、処理計画生成部1125は図16(b)に示される処理計画を破棄し、後着のジョブ0002のタスク1の開始時刻を、競合が解消する最も早い時刻である時刻t13にずらす。図16(c)は、ジョブ0002のタスク1の開始時刻が時刻t13にずらされた状態の処理計画を示している。この場合、図16(c)に示される処理計画が、競合調整後の処理計画となる。
一方、遅延時間T4が許容範囲内であれば、処理計画生成部1125は、図16(b)に示される処理計画を、競合調整後の処理計画として採用する。
図16(b)に示される処理計画が競合調整後の処理計画として採用された場合、先着のジョブを要求したユーザに対し操作の要求が行われる時刻が変更されることになる。従って、ユーザに対しその旨が通知されることが望ましい。図17は第2変形例において、先着のジョブを要求したユーザに対する操作の要求時刻が変更された場合に、当該ユーザが用いる操作部131に表示される通知画面を例示した図である。
上述した第2変形例に係る情報処理システム1が備える指示部112は、先着のジョブのいずれかのタスクが実行されている間に使用されていないリソースを用いて後着のジョブのいずれかのタスクの実行が可能であり、かつ、当該タスクの実行により先着のジョブに伴うユーザに対する操作の要求時刻の遅延時間が許容範囲内であると判定した場合、当該タスクの実行を処理部111に指示する。従って、後着のジョブの完了時刻を早めるために、先着のジョブに伴うユーザに対する操作の要求時刻が許容範囲を超えて遅延することはない。
また、上述した第2変形例に係る情報処理システム1が備える通知部1127は、先着のジョブの実行に伴うユーザに対する操作の要求時刻を当該ユーザに通知する。従って、後着のジョブの完了時刻を早めるために、先着のジョブに伴うユーザに対する操作の要求時刻が変化した場合、先着のジョブを要求したユーザは変化後の操作の要求時刻を知ることができる。
[2-3]第3変形例
第3変形例においては、先着のジョブのタスクとの間で生じるリソースの利用における競合を解消するために、後着のジョブのタスクの開始時刻が後ろにずらされる場合、当該リソースを代替する代替リソースが使用可能であり、代替リソースを用いることによって後着のジョブのタスクの完了時刻が早まるならば、代替リソースが使用される。
図18は第3変形例に係る情報処理システム2の全体構成を示した図である。情報処理システム2は、情報処理システム1が備える情報処理装置11と端末装置12(1)~12(n)に加え、情報処理装置11と同様の構成を備える情報処理装置21(1)~21(m)(ただし、mは任意の自然数)を備える。以下、情報処理装置21(1)~21(m)を互いに区別しない場合、それらを「情報処理装置21」という。情報処理装置11と情報処理装置21の各々は無線及び有線の少なくとも一方により互いに通信可能である。
図19は第3変形例に係る指示部112が行う処理のフローを示した図である。また、図20は第3変形例に係る処理計画生成部1125が処理計画を生成する手順を説明するための図である。
指示部112は、まず、上述した実施例におけるステップS01~S04と同様の処理を行う。ステップS02において、処理計画生成部1125は、図20(a)に示される競合調整前の処理計画を生成するものとする。ジョブ0002のタスク2はジョブ0001のタスク2と同時に実行されるとリソース使用における競合を生じることが想定されている。この場合、処理計画生成部1125はリソース使用における競合を解消するために、ジョブ0002のタスク2の開始時刻を時刻t13にずらす。図20(b)はジョブ0002のタスク2の開始時刻が時刻t13にずらされた状態の処理計画を示している。ステップS03において、処理計画生成部1125は図20(b)の処理計画を示すように処理計画テーブルを更新する。その後、通知部1127はジョブ0001及びジョブ0002の要求元の操作部131に通知データを送信し、それらの操作部131には通知画面が表示される(ステップS04)。
続いて、処理計画生成部1125は、ステップS02において生成した処理計画において、先着のジョブとの間でリソース使用における競合を解消するために開始時刻が後ろにずらされた後着のジョブのタスクがあるか否かを判定する(ステップS05)。開始時刻が後ろにずらされた後着のジョブのタスクがない場合(ステップS05;No)、指示部112は処理をステップS01に戻す。
一方、開始時刻が後ろにずらされた後着のジョブのタスクがある場合(ステップS05;Yes)、指示部112は開始時刻が後ろにずらされた後着のジョブのタスク(該当するタスクが複数ある場合は、例えば開始時刻が最も早いタスク)の代行を依頼した場合に要する時間を問い合わせる照会データを生成し、生成した照会データを情報処理装置21の各々に送信する(ステップS06)。図20の例の場合、指示部112は情報処理装置21の各々に、ジョブ0002のタスク2に関する照会データを送信する。
情報処理装置11から照会データを受信した情報処理装置21は、照会データに応じて、代行対象のタスクを実行可能であるか否かを判定し、実行可能である場合は代行対象のタスクの完了までに要する時間を示すデータを、照会データに対する応答データとして情報処理装置11に送信する。
処理計画生成部1125は、ステップS06において送信した照会データに対する応答データがいずれかの情報処理装置21から受信されたか否かを判定する(ステップS07)。いずれの情報処理装置21からも応答データが受信されなかった場合(ステップS07;No)、指示部112は処理をステップS01に戻す。
一方、いずれかの情報処理装置21から応答データが受信された場合(ステップS07;Yes)、処理計画生成部1125は応答データが示す時間(応答データが複数ある場合はそれらの応答データが示す時間のうち最短のもの)で代行対象のタスクが実行された場合、図20(b)に示される現状の処理計画に従う場合と比較し、代行対象のタスクの完了時刻が早まるか否かを判定する(ステップS08)。
代行対象のタスクの完了時刻が早まらない場合(ステップS08;No)、指示部112は処理をステップS01に戻す。一方、代行対象のタスクの完了時刻が早まる場合(ステップS08;Yes)、処理計画生成部1125は応答データ(応答データが複数ある場合は最短の時間を示すもの)の送信元の情報処理装置21にタスクの代行を依頼した場合の処理計画を生成する(ステップS09)。図20(c)は、ステップS09において処理計画生成部1125が生成する処理計画を例示している。
続いて、通知部1127は、代行対象のタスクを含むジョブの要求元の操作部131に、代替リソースが使用可能であることを通知するとともに代替リソースが使用された場合の影響を通知し、代替リソースの使用の可否を問い合わせる通知データを送信する(ステップS10)。図21は、ステップS10において通知部1127から送信された通知データに従い操作部131が表示する通知画面を例示している。ユーザが通知画面において代替リソースの使用を許可又は禁止する操作を行うと、操作部131から情報処理装置11にユーザの操作に応じた応答データが送信される。
処理計画生成部1125は、ステップS10において操作部131に送信された通知データに対する応答データが代替リソースの使用の許可を示すか否かを判定する(ステップS11)。応答データが代替リソースの使用の許可を示さない場合(ステップS11;No)、指示部112は処理をステップS01に戻す。一方、応答データが代替リソースの使用の許可を示す場合(ステップS11;Yes)、指示部112はステップS06において送信した照会データに対する応答データ(応答データが複数ある場合は最短の時間を示すもの)の送信元の情報処理装置21に、タスクの代行を依頼するジョブデータを送信する(ステップS12)。
続いて、処理計画生成部1125は、ステップS09において生成した処理計画を示すように、処理計画テーブルを更新する(ステップS13)。続いて、通知部1127は、ステップS13において更新された処理計画テーブルが示すジョブの完了時刻等を通知する通知データを生成し、ジョブの要求元の操作部131に送信する(ステップS14)。その後、指示部112は処理をステップS01に戻す。
上述した第3変形例に係る情報処理システム2が備える指示部112は、先着のジョブのいずれかのタスクが実行されている間に使用されているリソースが使用可能となった後に当該リソースを使用して後着のジョブのいずれかのタスクが実行された場合の当該タスクの完了時刻よりも、当該リソースを代替する代替リソース(情報処理装置21が備えるリソース)を使用して当該タスクが実行された場合の当該タスクの完了時刻が早い場合、代替リソースを使用した当該タスクの実行を処理部(情報処理装置21の処理部)に指示する。従って、代替リソースを使用せずに後着のジョブが実行された場合と比較し、後着のジョブの完了時刻が早まる。
また、上述した第3変形例に係る情報処理システム2が備える通知部1127は、指示部112により代替リソースを使用したタスクの実行が処理部に指示される前に、後着のジョブを要求したユーザに対し代替リソースが使用されることを通知する。従って、後着のジョブを要求したユーザは、後着のジョブの実行に代替リソースが使用されることを知ることができる。
[2-4]その他の変形例
(1)処理部111が実行可能な処理の種別は上述した実施例に示したものに限られない。
(2)情報処理装置11が備える構成部が、複数の装置に分散配置されてもよい。例えば、処理部111と指示部112が互いに通信可能な異なる装置に配置されてもよい。
(3)指示部112は、先着のジョブの実行中に、先着のジョブとの間で競合が生じないリソースを用いて後着のジョブのタスクの実行を処理部111に指示する限り、処理計画を生成しなくてもよい。
(4)上述した第3変形例においては、代替リソースが指示部112を備える情報処理装置11とは異なる装置に配置されているものとしたが、情報処理装置11が備える代替リソースが使用されてもよい。
(5)上述した第3変形例においては、代替リソースを備える情報処理装置21が情報処理装置11と同様の構成を備えるものとしたが、代替リソースを備える装置は情報処理装置11と異なる構成であってもよい。例えば、情報処理装置11と通信可能な記憶装置、画像形成装置、FAX送受信装置、画像読取装置等が備えるリソースが、代替リソースとして用いられてもよい。
(6)イベント検知部1124が監視するイベントは、ジョブテーブル、状態テーブル及び処理計画テーブルの更新に限られない。例えば、一定時間の経過が監視対象のイベントであってもよい。
(7)第1変形例においては、先着のジョブの完了時刻の遅延時間に関する許容範囲として、ジョブの優先度に応じた一定倍数を所要時間に乗じた時間が用いられるものとした。先着のジョブの完了時刻の遅延時間に関する許容範囲の形態はこれに限られない。例えば、ジョブの優先度に関係なく所要時間に一定の倍数を乗じた時間が遅延時間の許容範囲として用いられてもよいし、固定時間長が遅延時間の許容範囲として用いられてもよい。
(8)第1変形例においては、後着のジョブの実行による先着のジョブの遅延を許容するか否かの判定は、先着のジョブの完了時刻に基づき行われるものとした。また、第2変形例においては、後着のジョブの実行による先着のジョブの遅延を許容するか否かの判定は、先着のジョブに伴うユーザに対する操作の要求時刻に基づき行われるものとした。後着のジョブの実行による先着のジョブの遅延を許容するか否かの判定の基準は、これらに限られない。
例えば、先着のジョブの完了時刻(第1変形例)及び先着のジョブに伴うユーザに対する操作の要求時刻(第2変形例)に限られず、先着のジョブの実行に伴いユーザに対し通知が行われる他の時刻に基づき、後着のジョブの実行による先着のジョブの遅延を許容するか否かの判定が行われてもよい。例えば、ジョブの進行中に紙切れ等のエラーが発生する可能性がある場合、そのようなエラーの通知がユーザに対し行われる可能性のある時刻(または、そのような通知が発生する可能性のある時期の開始時刻等)が許容範囲であるか否かに基づき、後着のジョブの実行による先着のジョブの遅延を許容するか否かの判定が行われてもよい。
また、後着のジョブの実行による先着のジョブの遅延を許容するか否かの判定の基準として、先着のジョブに関する時刻の変化量又は時間の増減量に代えて、もしくは加えて、後着のジョブに関する時刻の変化量又は時間の増減量が用いられてもよい。例えば、先着のジョブを遅延させた場合に後着のジョブの完了時刻の変化量(完了時刻までの待ち時間の減少量)が閾値以上である場合には、先着のジョブの遅延を許容し、後着のジョブを実行する、といった基準が用いられてもよい。
また、個別のジョブに関する時刻の変化量又は時間の増減量に代えて、複数のジョブに関する時刻の変化量又は時間の増減量が、後着のジョブの実行による先着のジョブの遅延を許容するか否かの判定の基準に用いられてもよい。例えば、先着のジョブのタスクを遅延させた場合に、後着の複数のジョブの完了時刻の変化量(完了時刻までの待ち時間の減少量)の合計値が閾値以上である場合には、先着のジョブの遅延を許容し、後着のジョブを実行する、といった基準が用いられてもよい。また、情報処理システムが備えるリソースの稼働率が閾値以上に増加する場合には、先着のジョブの遅延を許容し、後着のジョブを実行する、といった基準が用いられてもよい。