JP6500668B2 - ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム - Google Patents

ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム Download PDF

Info

Publication number
JP6500668B2
JP6500668B2 JP2015143376A JP2015143376A JP6500668B2 JP 6500668 B2 JP6500668 B2 JP 6500668B2 JP 2015143376 A JP2015143376 A JP 2015143376A JP 2015143376 A JP2015143376 A JP 2015143376A JP 6500668 B2 JP6500668 B2 JP 6500668B2
Authority
JP
Japan
Prior art keywords
job
processing
processing apparatus
server
time
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.)
Expired - Fee Related
Application number
JP2015143376A
Other languages
English (en)
Other versions
JP2017027240A (ja
Inventor
知弘 佐藤
知弘 佐藤
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
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 Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP2015143376A priority Critical patent/JP6500668B2/ja
Priority to US15/019,307 priority patent/US9569149B2/en
Publication of JP2017027240A publication Critical patent/JP2017027240A/ja
Application granted granted Critical
Publication of JP6500668B2 publication Critical patent/JP6500668B2/ja
Expired - Fee Related 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/1211Improving printing performance
    • G06F3/1215Improving printing performance achieving increased printing speed, i.e. reducing the time between printing start and printing end
    • 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/1211Improving printing performance
    • G06F3/1212Improving printing performance achieving reduced delay between job submission and print start
    • G06F3/1213Improving printing performance achieving reduced delay between job submission and print start at an intermediate node or at the final node
    • 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/126Job scheduling, e.g. queuing, determine appropriate device
    • 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/1278Dedicated interfaces to print systems specifically adapted to adopt a particular infrastructure
    • G06F3/1285Remote printer device, e.g. being remote from client or server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00127Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture
    • H04N1/00204Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a digital computer or a digital computer system, e.g. an internet server
    • H04N1/00244Connection or combination of a still picture apparatus with another apparatus, e.g. for storage, processing or transmission of still picture signals or of information associated with a still picture with a digital computer or a digital computer system, e.g. an internet server with a server, e.g. an internet server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00915Assigning priority to, or interrupting, a particular operation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00915Assigning priority to, or interrupting, a particular operation
    • H04N1/0092Assigning priority according to size job or task, e.g. small jobs first
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/00912Arrangements for controlling a still picture apparatus or components thereof not otherwise provided for
    • H04N1/00954Scheduling operations or managing resources
    • 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/124Parallel printing or parallel ripping
    • 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/1259Print job monitoring, e.g. job status
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N2201/00Indexing scheme relating to scanning, transmission or reproduction of documents or the like, and to details thereof
    • H04N2201/0077Types of the still picture apparatus
    • H04N2201/0094Multifunctional device, i.e. a device capable of all of reading, reproducing, copying, facsimile transception, file transception

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Facsimiles In General (AREA)

Description

本発明は、ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラムに関する。
特許文献1には、少ない待ち時間で印刷出力を行うことができるし、負荷を管理する装置の故障によりシステム全体が稼働しなくなってしまう問題を解消することができる出力ジョブ分散方法を提供することを課題とし、複数のプリンタサーバと複数の情報処理装置とを備えたネットワークシステムの出力ジョブ分散方法において、1つのプリンタサーバが情報処理装置から出力ジョブを受信したとき、他の複数のプリンタサーバへ出力ジョブ到着通知を送信し、それを受信したプリンタサーバからそのプリンタサーバの管理している出力ジョブ処理時間を受信すると、自らの管理する出力ジョブ処理時間と受信した出力ジョブ処理時間とを比較して最も出力ジョブ処理時間の短いプリンタを選択し、そのプリンタが他のプリンタサーバにより管理されているならば、出力ジョブを上記他のプリンタサーバへ転送する方法が開示されている。つまり、このネットワークシステムは、それぞれ複数の出力装置を管理している複数の出力制御装置がネットワークを介して接続されているネットワークシステムであって、ある出力制御装置がジョブを受け付けると、他のすべての出力制御装置にジョブ到着通知を送信し、ジョブ到着通知を受信した、他の出力制御装置は、自身の管理している複数の出力装置の予測処理時間を返し、ジョブ到着を通知した出力制御装置は、他の出力制御装置から送られてきた出力装置の処理時間状況と、自身の管理している出力装置の予測処理時間を比較し、最も短い時間でジョブが出力できる装置を見つけだし、ジョブをその出力制御装置に送り、管理下の出力装置から出力するものである。
特開2000−231465号公報
複数のジョブ処理装置のうち、いずれかのジョブ処理装置でジョブが発生した場合に、処理速度が最も速い装置を選択してジョブ処理を実行することが行われている。例えば、特許文献1には、前述したネットワークシステムの構成が開示されている。
しかし、この構成では、すべての外部装置からの返信を待ってから最も処理時間が短い装置に対してジョブを転送するため、タイムラグが発生する。そのため、返信した時点とは状況が変わってしまい、ジョブの処理に要する時間が予測処理時間より長くかかる場合が発生する。
本発明は、複数のジョブ処理装置のいずれかで処理が必要なジョブが発生した際に、ジョブが発生したジョブ処理装置から他のジョブ処理装置に処理時間の問い合わせを行い、その結果を受けて最も処理時間の短いジョブ処理装置にジョブを転送してジョブ処理を実行する場合に比べて、より短い時間で処理を実行するようにしたジョブ処理システム、ジョブ処理装置及びジョブ処理プログラムを提供することを目的としている。
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項1の発明は、通信回線を介して第一のジョブ処理装置と第二のジョブ処理装置とが接続されているジョブ処理システムであって、第一のジョブ処理装置は、第一のジョブ処理装置において処理対象のジョブが発生した場合に、第一のジョブ処理装置で処理を実行した場合の完了予測時刻を算出する算出手段、少なくとも処理対象のジョブと完了予測時刻とを第二のジョブ処理装置に対して送信する送信手段、を有し、第二のジョブ処理装置は、第一のジョブ処理装置からジョブと完了予測時刻とを受信する受信手段、受信したジョブを第二のジョブ処理装置で処理を行った場合の完了予測時刻を算出する算出手段、第一のジョブ処理装置における完了予測時刻が第二のジョブ処理装置における完了予測時刻より早い場合は、受信したジョブを破棄する破棄手段、第一のジョブ処理装置における完了予測時刻が第二のジョブ処理装置における完了予測時刻より遅い場合は、受信したジョブの処理を開始するとともに、受信したジョブの処理を開始したことを第一のジョブ処理装置に通知する通知手段、受信したジョブの処理が完了した場合に、処理済みのジョブを第一のジョブ処理装置に送信する処理済みジョブ送信手段、を有するジョブ処理システムである。
請求項2の発明は、第二のジョブ処理装置は処理を開始した場合に、第一のジョブ処理装置に対して完了予測時刻も通知し、第一のジョブ処理装置は第一のジョブ処理装置で処理を実行した場合の完了予測時刻を、第二のジョブ処理装置から完了予測時刻の通知を受けた時点又はそれ以降に、再度算出して、第二のジョブ処理装置の完了予測時刻と比較する、請求項1に記載のジョブ処理システムである。
請求項3の発明は、再度算出した第一のジョブ処理装置の完了予測時刻が第二のジョブ処理装置の完了予測時刻より早い場合は、第一のジョブ処理装置は第二のジョブ処理装置に対して、第二のジョブ処理装置が開始した処理の中止を送信する、請求項2に記載のジョブ処理システムである。
請求項4の発明は、前記第一のジョブ処理装置において、処理対象のジョブが発生した場合に、ジョブを構成する文書データのサイズを抽出し、文書データのサイズが予め定められた値未満又は以下の場合に、前記算出手段による処理を行う、請求項1に記載のジョブ処理システムである。
請求項の発明は、他のジョブ処理装置からジョブと完了予測時刻とを受信する受信手段、受信したジョブをジョブ処理装置で処理を行った場合の完了予測時刻を算出する算出手段、他のジョブ処理装置における完了予測時刻がジョブ処理装置における完了予測時刻より早い場合は、受信したジョブを破棄する破棄手段、他のジョブ処理装置における完了予測時刻がジョブ処理装置における完了予測時刻より遅い場合は、受信したジョブの処理を開始するとともに、受信したジョブの処理を開始したことを他のジョブ処理装置に通知する通知手段、受信したジョブの処理が完了した場合に、処理済みのジョブを他のジョブ処理装置に送信する処理済みジョブ送信手段、を有するジョブ処理装置である。
請求項の発明は、ジョブ処理装置は処理を開始した場合に、他のジョブ処理装置に対して完了予測時刻も通知する、請求項に記載のジョブ処理装置である。
請求項の発明は、コンピュータを、他のジョブ処理装置からジョブと完了予測時刻とを受信する受信手段、受信したジョブを前記コンピュータであるジョブ処理装置で処理を行った場合の完了予測時刻を算出する算出手段、他のジョブ処理装置における完了予測時刻がジョブ処理装置における完了予測時刻より早い場合は、受信したジョブを破棄する破棄手段、他のジョブ処理装置における完了予測時刻がジョブ処理装置における完了予測時刻より遅い場合は、受信したジョブの処理を開始するとともに、受信したジョブの処理を開始したことを他のジョブ処理装置に通知する通知手段、受信したジョブの処理が完了した場合に、処理済みのジョブを他のジョブ処理装置に送信する処理済みジョブ送信手段、として機能させるためのジョブ処理プログラムである。
請求項1のジョブ処理システムによれば、複数のジョブ処理装置のいずれかで処理が必要なジョブが発生した際に、ジョブが発生したジョブ処理装置から他のジョブ処理装置に処理時間の問い合わせを行い、その結果を受けて最も処理時間の短いジョブ処理装置にジョブを転送してジョブ処理を実行する場合に比べて、より短い時間での処理の実行が可能となる。
請求項2のジョブ処理システムによれば、第二のジョブ処理装置の完了予測時刻を受信した後に、第一のジョブ処理装置は第一のジョブ処理装置で処理を実行した場合の完了予測時刻を再度算出して、第二のジョブ処理装置の完了予測時刻と比較することができる。
請求項3のジョブ処理システムによれば、再度算出した第一のジョブ処理装置の完了予測時刻が第二のジョブ処理装置の完了予測時刻より早い場合は、第一のジョブ処理装置は第二のジョブ処理装置に対して処理の中止を送信することができる。
請求項4のジョブ処理装置によれば、通信回線への高負荷を回避しながら、短い時間での処理の実行が可能となる。
請求項のジョブ処理装置によれば、複数のジョブ処理装置のいずれかで処理が必要なジョブが発生した際に、ジョブが発生したジョブ処理装置から他のジョブ処理装置に処理時間の問い合わせを行い、その結果を受けて最も処理時間の短いジョブ処理装置にジョブを転送してジョブ処理を実行する場合に比べて、より短い時間での処理の実行が可能となる。
請求項のジョブ処理装置によれば、ジョブ処理装置はジョブ処理を開始した場合に、他のジョブ処理装置に対して完了予測時刻も通知することができる。
請求項のジョブ処理プログラムによれば、複数のジョブ処理装置のいずれかで処理が必要なジョブが発生した際に、ジョブが発生したジョブ処理装置から他のジョブ処理装置に処理時間の問い合わせを行い、その結果を受けて最も処理時間の短いジョブ処理装置にジョブを転送してジョブ処理を実行する場合に比べて、より短い時間での処理の実行が可能となる。
本実施の形態の構成例についての概念的なモジュール構成図である。 本実施の形態を利用したシステム構成例を示す説明図である。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示すフローチャートである。 本実施の形態による処理例を示す説明図である。 本実施の形態による処理例を示すフローチャートである。 プラグインIDリストのデータ構造例を示す説明図である。 プラグイン処理能力管理テーブルのデータ構造例を示す説明図である。 ジョブ管理テーブルのデータ構造例を示す説明図である。 プラグイン処理能力管理テーブルのデータ構造例を示す説明図である。 本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図1は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア(コンピュータ・プログラム)、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム(コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム)、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、1モジュールを1プログラムで構成してもよいし、複数モジュールを1プログラムで構成してもよく、逆に1モジュールを複数プログラムで構成してもよい。また、複数モジュールは1コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって1モジュールが複数コンピュータで実行されてもよい。なお、1つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続(データの授受、指示、データ間の参照関係等)の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、2以上の値(もちろんのことながら、すべての値も含む)が同じであってもよい。また、「Aである場合、Bをする」という意味を有する記載は、「Aであるか否かを判断し、Aであると判断した場合はBをする」の意味で用いる。ただし、Aであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク(一対一対応の通信接続を含む)等の通信手段で接続されて構成されるほか、1つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」(社会システム)にすぎないものは含まない。
また、各モジュールによる処理ごとに又はモジュール内で複数の処理を行う場合はその処理ごとに、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、RAM(Random Access Memory)、外部記憶媒体、通信回線を介した記憶装置、CPU(Central Processing Unit)内のレジスタ等を含んでいてもよい。
本実施の形態であるジョブ処理システムは、図1の例に示すように、通信回線190を介して接続された情報処理装置100、サーバ150を有している。なお、1つの情報処理装置100に対して、サーバ150は複数あってもよい。図1の例に示すサーバ150B、サーバ150C、サーバ150Dは、サーバ150Aと同等の構成を有している。なお、以下の説明では、サーバ150として説明する。
ジョブ処理システムは、提供されている複数のプラグイン機能を組み合わせて、予め1つの処理フローとして定義しておき、取り込んだ文書を、その処理フローにしたがってジョブ処理していくシステムである。このようなジョブ処理システムにおいて、1台のサーバでは、各プラグイン機能を同時に処理できるプロセス数に限りがあるため、一度に大量の文書が投入されると、各プラグインの実行で、処理待ちのジョブが発生し、全体のパフォーマンスが低下することが起こりえる。
そこで、各プラグイン機能(例えば、イメージ変換処理、文字認識処理など)で発生した待ちジョブを、外部のサーバ(以下、外部サーバともいう)に処理を委託し、自身(以下、メインサーバともいう)と外部サーバとで同時に処理できるジョブ数を増やすことで、全体のパフォーマンスを向上させる方法が考えられる。
メインサーバと外部サーバを連携させ、同時に処理できるジョブ数を増やすためには、メインサーバの各プラグイン処理で発生した待ちジョブを、自分より早く処理結果を返してくれる外部サーバを、いち早く見つけ、処理を依頼することが必要である。
外部サーバを見つけだす技術としては、例えば特許文献1に開示されているような技術がある。
しかし、特許文献1に開示されている技術では、外部サーバの状況を判断してから処理依頼するため、実際にジョブが届いた時点で、外部サーバの状況が変わっており、処理結果が予測より遅く返ってきてしまう可能性がある。これを回避する方法として、依頼時に外部サーバのリソースを予約してから処理する技術もあるが、複雑なスケジューリング処理が必要となる。
本実施の形態は、サーバ(メインサーバ、外部サーバ)の時々刻々と変化する処理状況に対応するものである。
なお、フローファイルは、ジョブ処理システムに投入された処理対象データを、どのように処理するか定義したファイルである。複数のプラグイン機能の組み合わせで定義される。処理対象データとして、例えば、文書等がある。以下、処理対象データとして文書を例示して説明する
ジョブは、投入された文書を、フローファイルにしたがって処理していくときの実行単位である。ジョブを一意に定義する「ジョブID」と、投入された文書が各プラグイン機能によって処理された結果の「文書データ」と、その「文書データサイズ」と、各プラグイン機能の処理によって生成される「ジョブ属性」から構成される。なお「ジョブID」は重複しないIDで定義されている。例えば、GUID(Globally Unique IDentifier)等を用いればよい。
本実施の形態における情報処理装置100は前述のメインサーバに該当し、サーバ150は前述の外部サーバに該当する。サーバ150に依頼する処理を、情報処理装置100でも処理可能である。
情報処理装置100は、サーバ情報登録モジュール105、サーバ情報管理モジュール110、プラグイン処理能力管理モジュール115、ジョブ処理/ジョブ情報管理モジュール120、サーバ処理管理モジュール125、フローファイル登録モジュール130、フローファイル管理モジュール135を有している。
サーバ150は、プラグイン処理能力管理モジュール155、ジョブ処理/ジョブ情報管理モジュール160、情報処理装置処理管理モジュール165を有している。
情報処理装置100は、入力された文書を、ジョブの処理対象データとして管理し、予め登録されているフローファイルに定義されたプラグイン機能を順番に呼び出し、ジョブ処理する。
サーバ情報登録モジュール105は、サーバ情報管理モジュール110と接続されている。サーバ情報登録モジュール105は、サーバ150の情報を登録する。サーバ150の情報は、ユーザーの操作によって入力されたものであってもよいし、そのサーバ150から送信されてきたものであってもよい。
サーバ情報管理モジュール110は、サーバ情報登録モジュール105、サーバ処理管理モジュール125と接続されている。サーバ情報管理モジュール110は、サーバ150を一意に判別でき、サーバ150のサービスにアクセスできるID情報(例えば、サービスURL(Uniform Resource Locator))を管理する。
サーバ処理管理モジュール125は、サーバ情報管理モジュール110、ジョブ処理/ジョブ情報管理モジュール120と接続されており、また、通信回線190を介して、サーバ150Aの情報処理装置処理管理モジュール165、サーバ150B、サーバ150C、サーバ150Dと接続されている。サーバ処理管理モジュール125は、情報処理装置100とサーバ150とのやり取りを管理する。少なくとも処理対象のジョブと完了予測時刻とをサーバ150(サーバ150A、サーバ150B、サーバ150C、サーバ150D)に対して送信する。
プラグイン処理能力管理モジュール115は、ジョブ処理/ジョブ情報管理モジュール120と接続されている。プラグイン処理能力管理モジュール115は、プラグイン機能ごとに、下記情報を管理する。
(1)プラグインID
(2)処理の完了予測時刻
具体的には、情報処理装置100で、処理中のジョブと、処理予約されているジョブ(待ちジョブ)、各々の処理が完了する完了予測時刻を管理している。例えば、ジョブIDとそのジョブIDで示されるジョブにおける完了予測時刻の組み合わせであり、具体的には、[(jobid1,time1),(jobid2,time2),・・・,(jobidN,timeN)]と表記されるデータを管理する。
(3)単位データあたりの処理時間
ジョブ処理/ジョブ情報管理モジュール120は、プラグイン処理能力管理モジュール115、サーバ処理管理モジュール125、フローファイル管理モジュール135と接続されている。ジョブ処理/ジョブ情報管理モジュール120は、投入された文書を処理するために「ジョブID」を発行し、ジョブを生成して管理する。生成されたジョブを、フローファイルに定義された「プラグインID」をもとに、各プラグイン機能を、順に呼び出し、処理していく。
ジョブ処理/ジョブ情報管理モジュール120は、情報処理装置100において処理対象のジョブが発生した場合に、情報処理装置100で処理を実行した場合の完了予測時刻を算出する。
フローファイル登録モジュール130は、フローファイル管理モジュール135と接続されている。フローファイル登録モジュール130は、情報処理装置100から投入された文書を処理するためのフローファイルを作成、登録する。フローファイルは、複数のプラグインを指定することで定義する。
フローファイル管理モジュール135は、ジョブ処理/ジョブ情報管理モジュール120、フローファイル登録モジュール130と接続されている。フローファイル管理モジュール135は、フローファイル登録モジュール130で登録されたフローファイルを管理する。
サーバ150は、フローファイル中の特定のプラグイン機能の処理を実行可能である。
情報処理装置処理管理モジュール165は、ジョブ処理/ジョブ情報管理モジュール160と接続されており、また、通信回線190を介して、情報処理装置100のサーバ処理管理モジュール125、サーバ150B、サーバ150C、サーバ150Dと接続されている。情報処理装置処理管理モジュール165は、情報処理装置100とのやり取りを管理する。少なくとも情報処理装置100からジョブと情報処理装置100における完了予測時刻とを受信する。
プラグイン処理能力管理モジュール155は、ジョブ処理/ジョブ情報管理モジュール160と接続されている。プラグイン処理能力管理モジュール155は、プラグイン機能ごとに、下記情報を管理する。
(1)プラグインID
(2)処理の完了予測時刻
具体的には、現在サーバ150で処理しているジョブと、処理予約されているジョブ、のすべての処理が完了する完了予測時刻を管理する。例えば、ジョブIDとそのジョブIDで示されるジョブにおける完了予測時刻の組み合わせであり、具体的には、[(jobid1,time1),(jobid2,time2),・・・,(jobidN,timeN)]と表記されるデータを管理する。
(3)単位データあたりの処理時間
ジョブ処理/ジョブ情報管理モジュール160は、プラグイン処理能力管理モジュール155、情報処理装置処理管理モジュール165と接続されている。ジョブ処理/ジョブ情報管理モジュール160は、情報処理装置処理管理モジュール165によって受信されたジョブをサーバ150自身のプラグイン機能で処理した方が早く処理が完了するかどうかを判断する。
ジョブ処理/ジョブ情報管理モジュール160は、情報処理装置処理管理モジュール165によって受信されたジョブをサーバ150で処理を行った場合の完了予測時刻を算出する。
そして、情報処理装置100における完了予測時刻がサーバ150における完了予測時刻より早い場合はジョブを破棄する。
また、情報処理装置100における完了予測時刻がサーバ150における完了予測時刻より遅い場合はジョブ処理を開始するとともにジョブ処理を開始したことを情報処理装置100に通知する。
そして、ジョブ処理が完了した場合に、処理済みのジョブを情報処理装置100に送信する。
また、ジョブ処理/ジョブ情報管理モジュール160は、ジョブ処理を開始した場合に、情報処理装置100に対して完了予測時刻も通知するようにしてもよい。
この場合、情報処理装置100のジョブ処理/ジョブ情報管理モジュール120は、情報処理装置100で処理を実行した場合の完了予測時刻を再度算出して、サーバ150の完了予測時刻と比較する。
そして、情報処理装置100のジョブ処理/ジョブ情報管理モジュール120は、再度算出した情報処理装置100の完了予測時刻がサーバ150の完了予測時刻より早い場合は、情報処理装置100はサーバ150に対して処理の中止を送信する。これに応じて、サーバ150のジョブ処理/ジョブ情報管理モジュール160は、開始していた処理を中止する。
図2は、本実施の形態を利用したシステム構成例を示す説明図である。
フローの処理対象データを受け付ける画像処理装置210、フローのジョブ処理を行う複数のサーバ150と、サーバ150へのジョブの振り分けとフローのジョブ処理を行う情報処理装置100によって構成されているシステムである例を示す。
図2(A)に示す例では、情報処理装置100Aは、画像処理装置210A、画像処理装置210B、画像処理装置210C、サーバ150A、サーバ150F、サーバ150G、サーバ150Hと接続されている。情報処理装置100Bは、画像処理装置210D、画像処理装置210E、画像処理装置210F、サーバ150D、サーバ150E、サーバ150F、サーバ150Gと接続されている。ユーザーの操作によって、画像処理装置210で文書が読み込まれ、フローの選択が行われ、画像処理装置210から情報処理装置100に対して指示が行われる。そして、情報処理装置100では、そのフローを分割して、分割後の処理群を複数のサーバ150又は情報処理装置100に割り振る。割り振られたサーバ150、情報処理装置100で処理が行われる。画像処理装置210は、例えば、具体的には、スキャナ、ファックス、複合機(スキャナ、プリンタ、複写機、ファックス等のいずれか2つ以上の機能を有している画像処理装置)等である。また、カメラ機能を有している携帯端末(例えば、携帯電話、スマートフォン等を含む)等であってもよい。
図2(B)に示す例では、情報処理装置100A、情報処理装置100B、サーバ150A、サーバ150B、サーバ150C、画像処理装置210A、画像処理装置210B、画像処理装置210Cは、通信回線290を介してそれぞれ接続されている。通信回線290は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよい。また、情報処理装置100、サーバ150による機能は、クラウドサービスとして実現してもよい。
図3、図4は、本実施の形態(情報処理装置100)による処理例を示すフローチャートである。情報処理装置100に待ちジョブが発生すると、以下の処理を行う。
ステップS302では、情報処理装置100自身で待ちジョブの処理をした場合の「完了予測時刻_1」を算出する。
ステップS304では、各サーバ150に対して、「外部サーバID」、「ジョブID」、「プラグインID」、「文書データ」、「ジョブ属性」、「完了予測時刻_1」を送信する。
ステップS306では、情報処理装置100自身で待ちジョブの処理を開始するまでに、サーバ150から返信があったか否かを判断し、あった場合はステップS312へ進み、それ以外の場合はステップS308へ進む。
ステップS308では、各サーバ150に対して、「処理キャンセル通知」を送信する。
ステップS310では、情報処理装置100自身が待ちジョブの処理を開始する。
ステップS312では、情報処理装置100自身で待ちジョブの処理をした場合の「完了予測時刻_1’」を算出する。
ステップS314では、「完了予測時刻_1’≦完了予測時刻_2」であるか否かを判断し、「完了予測時刻_1’≦完了予測時刻_2」である場合はステップS316へ進み、それ以外の場合はステップS320へ進む。
ステップS316では、「完了予測時刻_2」を返信してきたサーバ150に対して、「処理キャンセル通知」を送信する。
ステップS318では、すべてのサーバ150に「処理キャンセル通知」を送信したか否かを判断し、送信した場合はステップS310へ戻り、それ以外の場合はステップS306へ戻る。
ステップS320では、「完了予測時刻_2」を返信してきたサーバ150以外のサーバ150に対して、「処理キャンセル通知」を送信する。
ステップS322では、情報処理装置100自身の待ちジョブを削除する。
ステップS324では、「完了予測時刻_2」を返信してきたサーバ150からの処理結果を待つ。
ステップS326では、「完了予測時刻_2」を返信してきたサーバ150からの処理結果を受信したか否かを判断し、受信した場合はステップS328へ進み、それ以外の場合はステップS324へ戻る。
ステップS328では、ジョブ情報を更新し、次の処理を行う。
なお、ステップS308、ステップS310の処理は、いずれの処理を先に行ってもよいし、又は、並列的に行ってもよい。同様に、ステップS320、ステップS322の処理は、いずれの処理を先に行ってもよいし、又は、並列的に行ってもよい。
図5は、本実施の形態(サーバ150)による処理例を示すフローチャートである。
ステップS502では、情報処理装置100から、「外部サーバID」、「ジョブID」、「プラグインID」、「文書データ」、「ジョブ属性」、「完了予測時刻_1」を受信する。
ステップS504では、「完了予測時刻_2」を算出する。
ステップS506では、「完了予測時刻_1≦完了予測時刻_2」であるか否かを判断し、「完了予測時刻_1≦完了予測時刻_2」である場合はステップS508へ進み、それ以外の場合はステップS510へ進む。
ステップS508では、情報処理装置100から受信したデータを削除する。
ステップS510では、「完了予測時刻_2」を情報処理装置100に返信する。
ステップS512では、情報処理装置100から受信したジョブの処理を開始する。
ステップS514では、処理の結果を情報処理装置100に返信する。
なお、ステップS510、ステップS512の処理は、いずれの処理を先に行ってもよいし、又は、並列的に行ってもよい。
図6は、本実施の形態(サーバ150)による処理例を示すフローチャートである。
ステップS602では、情報処理装置100から「処理キャンセル通知」を受信したか否かを判断し、受信した場合はステップS604へ進み、それ以外の場合は受信するまで待機する。
ステップS604では、その「処理キャンセル通知」に対応する処理を行っているか否かを判断し、行っている場合はステップS606へ進み、それ以外の場合はステップS608へ進む。
ステップS606では、その処理を中止する。
ステップS608では、情報処理装置100から受信したデータを破棄する。
なお、ステップS606、ステップS608の処理は、いずれの処理を先に行ってもよいし、又は、並列的に行ってもよい。
より詳細に説明する。
情報処理装置100は、各プラグイン機能の処理で、待ちジョブが発生すると、その待ちジョブを自分で処理した場合の「完了予測時刻_1」を算出する(ステップS302)。
そして、待ちジョブは残したまま、すべてのサーバ150に対し、「外部サーバID」「ジョブID」「プラグインID」「文書データ」「ジョブ属性」「完了予測時刻_1」を送る(ステップS304)。
サーバ150は、情報処理装置100より、それらの情報を受け取る(ステップS502)と、
Step11)受け取った「文書データ」を、受け取った「プラグインID」のプラグイン機能で、処理した場合の「完了予測時刻_2」を算出する(ステップS504)。
Step12)算出した「完了予測時刻_2」と、情報処理装置100より受け取った「完了予測時刻_1」と比較する(ステップS506)。
・「完了予測時刻_1」<=「完了予測時刻_2」の場合(ステップS506でYes)
情報処理装置100より受け取ったデータをすべて破棄する(ステップS508)。
・「完了予測時刻_1」>「完了予測時刻_2」の場合(ステップS506でNo)
送られてきた「ジョブID」「プラグインID」「文書データ」「ジョブ属性」を授受し、「処理開始通知」「外部サーバID」「ジョブID」「完了予測時刻_2」を情報処理装置100に返す(ステップS510)。
Step13)授受した「文書データ」「ジョブ属性」は、「プラグインID」のプラグイン機能で処理し、「外部サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性」を、情報処理装置100へ返す。
そして、処理の途中で「処理キャンセル通知」を受け取り(ステップS602でYes)、キャンセル通知されたジョブが存在する場合(ステップS604でYes)は、授受したデータをすべて破棄し、処理を中止し(ステップS606、608)、次のジョブの処理を開始する。
情報処理装置100は、以下の処理を行う。
Step21)情報処理装置100自身でその待ちジョブの処理開始するまで、いずれかのサーバ150より「処理開始通知」「外部サーバID」「ジョブID」「完了予測時刻_2」が送られてくるのを待つ(ステップS306)。
いずれかのサーバ150より「処理開始通知」「外部サーバID」「ジョブID」「完了予測時刻_2」が送られてくると、Step22)に進む(ステップS312)。
また、待ちジョブの処理開始まで、情報処理装置100自身より早く処理結果を返してくれるサーバ150が見つからなかった場合(ステップS306でYes)、すべてのサーバ150に対して「処理キャンセル通知」を送付し、自分(情報処理装置100)でジョブ処理を開始する(ステップS308、S310)。
Step22)「ジョブID」に合致するジョブの「完了予測時刻_1’」を再度抽出し(ステップS312)、受け取った「完了予測時刻_2」と再度比較する(ステップS314)。
つまり、サーバ150での見積もりが返ってくるまでの間で、情報処理装置100の処理状況に変化があった場合を考慮し、それをここでチェックする。
・「完了予測時刻_1’」<=「完了予測時刻_2」の場合(ステップS314でYes)
「完了予測時刻_2」を送ってきたサーバ150に「外部サーバID」「ジョブID」「処理キャンセル通知」を送付する(ステップS316)。
Step21に戻る。
・「完了予測時刻_1’」>「完了予測時刻_2」の場合(ステップS314でNo)
「外部サーバID」以外のサーバ150に「ジョブID」「処理キャンセル通知」を送付する(ステップS320)。
そして、情報処理装置100自身の抱えていた待ちジョブを削除し(ステップS322)、「外部サーバID」のサーバ150からのジョブ処理結果を待つ(ステップS324)。
Step23)「処理開始通知」を送ってきたサーバ150から「外部サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性」を受け取ると(ステップS326でYes)、自分(情報処理装置100)が管理しているジョブの情報を更新し、次のプラグイン機能の処理を開始する(ステップS328)。
情報処理装置100のジョブ処理/ジョブ情報管理モジュール120の処理について、より詳細に説明する。
ジョブ処理/ジョブ情報管理モジュール120は、投入された文書を処理するために「ジョブID」を発行し、ジョブを生成して管理する。生成されたジョブを、フローファイルに定義された「プラグインID」をもとに、各プラグイン機能を、順に呼び出し、処理していく。
各プラグイン機能の処理で待ちジョブが発生すると、そのジョブを情報処理装置100で処理を行うか、サーバ150で処理を行うか判断する。なお、すぐにジョブ処理を開始できる場合は、情報処理装置100で処理する。その場合、ジョブ処理終了後、後述のStep32−1)、Step32−2)の処理だけを実施する。
Step31)その待ちジョブを情報処理装置100自身で処理した場合の「完了予測時刻_1」を算出する。
「完了予測時刻_1」は、例えば、下記のように算出する。
「完了予測時刻_1」=「処理完了予測時刻」で管理されている最後のジョブの処理完了予測時刻+「単位データあたりの処理時間」×文書データサイズ
そして、待ちジョブとして登録したまま、そのジョブを処理するために必要な情報(「ジョブID」「プラグインID」「文書データ」「ジョブ属性」「完了予測時刻_1」)を、サーバ処理管理モジュール125に送る。
Step32)情報処理装置100自身でその待ちジョブを開始するまで、サーバ処理管理モジュール125より「処理開始通知」「外部サーバID」「ジョブID」「完了予測時刻_2」が渡されるのを待つ。つまり、Step31)でデータを送付したいずれかのサーバ150から「処理開始通知」が送られてくるのを待つ。
サーバ処理管理モジュール125より「処理開始通知」「外部サーバID」「ジョブID」「完了予測時刻_2」が送られてくると、Step33)に進む。
待ちジョブの処理を開始時まで、Step33)で自身より早く処理結果を返してくれるサーバ150が見つからなかった場合、すべてのサーバ150に対して「処理キャンセル通知」を送付するよう、サーバ処理管理モジュール125に依頼し、情報処理装置100自身でジョブ処理を開始する。
ジョブ処理が完了すると、次の処理を行う。
Step32−1)ジョブの開始時刻と終了時刻、処理した文書データサイズから、単位データあたりの処理時間を算出し、プラグイン処理能力管理モジュール115の「単位データあたりの処理時間」を更新する。
Step32−2)次に、更新した「単位データあたりの処理時間」と、各々のジョブの文書データサイズから、処理完了予測時刻を算出し、プラグイン処理能力管理モジュール115の「処理完了予測時刻」を更新する。例えば、「処理完了予測時刻」で管理されている各ジョブに関し、以下のように算出して、更新する。
あるジョブの[処理完了予測時刻]=直前の実行中/待ちジョブの処理完了予測時刻+「単位データあたりの処理時間」×文書データサイズ
そして、次のジョブ処理を開始する。
Step33)プラグイン処理能力管理モジュール115の「処理完了予測時刻」より、「ジョブID」に該当する処理完了予測時刻を抽出して、「完了予測時刻_1’」とし、受け取った「完了予測時刻_2」と比較する。
「完了予測時刻_1’」<=「完了予測時刻_2」の場合
サーバ処理管理モジュール125に「外部サーバID」「ジョブID」「特定外部サーバの処理キャンセル通知依頼」を送る。「完了予測時刻_2」を送ってきたサーバ150に「処理キャンセル通知」を送付するよう、サーバ処理管理モジュール125に依頼する。
そして、Step31)に戻る。
「完了予測時刻_1’」>「完了予測時刻_2」の場合
サーバ処理管理モジュール125に「外部サーバID」「ジョブID」「全サーバの処理キャンセル通知依頼」を送る。「外部サーバID」以外のサーバ150に「処理キャンセル通知」を送付するよう、サーバ処理管理モジュール125に依頼する。
そして、情報処理装置100自身の抱えていた待ちジョブを削除し、「外部サーバID」のサーバ150からのジョブ処理結果を待つ。
同時に、プラグイン処理能力管理モジュール115の「処理完了予測時刻」から、[ジョブID]に合致するデータを削除し、それ以降のジョブに対して、前述のStep33−2)の処理を行う。
Step34)「処理開始通知」を送ってきたサーバ150から「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性」を受け取ると、自分(情報処理装置100)が管理しているジョブの情報を更新し、次のプラグイン機能の処理を開始する。
情報処理装置100のサーバ処理管理モジュール125の処理について、より詳細に説明する。
サーバ処理管理モジュール125は、サーバ150とのやり取りを管理する。
ジョブ処理/ジョブ情報管理モジュール120より、「ジョブID」「プラグインID」「文書データ」「ジョブ属性」「完了予測時刻_1」が渡された場合は、サーバ情報管理モジュール110より抽出したすべての「外部サーバID」に対し、自身の「メインサーバID」と、「外部サーバID」「ジョブID」「文書データ」「プラグインID」「ジョブ属性」「完了予測時刻_1」を送る。
そして、送った「外部サーバID」のリストと、「ジョブID」と「プラグイン」を関連付けて、“送付リスト”として保持しておく。
サーバ150より「処理開始通知」「外部サーバID」「ジョブID」「完了予測時刻_2」が送られてきた場合、ジョブ処理/ジョブ情報管理モジュール120に、「処理開始通知」「外部サーバID」「ジョブID」「完了予測時刻_2」を渡す。
ジョブ処理/ジョブ情報管理モジュール120より、「外部サーバID」「ジョブID」「特定外部サーバの処理キャンセル通知依頼」が渡された場合、「外部サーバID」に「処理キャンセル通知」「ジョブID」を送付する。
同時に“送付リスト”中の「外部サーバID」のリストから、該当する外部サーバIDを削除する。
ジョブ処理/ジョブ情報管理モジュール120より、「外部サーバID」「ジョブID」「全外部サーバの処理キャンセル通知依頼」が渡された場合、「外部サーバID」に「処理キャンセル通知」「ジョブID」を送付する。
同時に“送付リスト” 中の「外部サーバID」のリストから、該当する外部サーバID以外の「外部サーバID」に「処理キャンセル通知」「ジョブID」を送付する。
「処理キャンセル通知」を送付した「外部サーバID」を、“送付リスト” の「外部サーバID」のリストから削除する。
サーバ150より「外部サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性」が送られてきた場合、“送付リスト”を参照し、ジョブ処理/ジョブ情報管理モジュール120に、「ジョブID」「プラグインID」「処理済みの文書データ」「処理済みのジョブ属性」を送り、「外部サーバID」「ジョブID」に該当する“送付リスト”を削除する。
サーバ150の情報処理装置処理管理モジュール165の処理について、より詳細に説明する。
情報処理装置処理管理モジュール165は、情報処理装置100とのやり取りを管理する。
情報処理装置100のサーバ処理管理モジュール125から送られてきた「メインサーバID」「外部サーバID」「ジョブID」「文書データ」「ジョブ属性」「プラグインID」「完了予測時刻_1」を受け取ると、それらすべての情報を、ジョブ処理/ジョブ情報管理モジュール160に送る。
ジョブ処理/ジョブ情報管理モジュール160より「処理開始通知依頼」「外部サーバID」「ジョブID」「完了予測時刻_2」が渡されると、「メインサーバID」に、「処理開始通知」「外部サーバID」「ジョブID」「完了予測時刻_2」を送る。
同時に、「メインサーバID」「外部サーバID」「ジョブID」を“送付リスト”として保持しておく。
ジョブ処理/ジョブ情報管理モジュール160より、「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性値」が送られてきた場合、保持しておいた「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」のデータの中から、「ジョブID」が合致する情報を抽出し、情報処理装置100の「サーバ処理管理モジュール125のサービスURL」に、「サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性値」を送る。
情報処理装置100のサーバ処理管理モジュール125から「処理キャンセル通知」「ジョブID」が送られてきた場合、「ジョブID」に該当する送付リスト(「メインサーバID」「外部サーバID」「ジョブID」)を破棄し、ジョブ処理/ジョブ情報管理モジュール160に「処理キャンセル通知」「ジョブID」を送る。
ジョブ処理/ジョブ情報管理モジュール160より、「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性」が送られてくると、「ジョブID」に該当する送付リストの「メインサーバID」に、「外部サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性」を送る。
サーバ150のジョブ処理/ジョブ情報管理モジュール160の処理について、より詳細に説明する。
ジョブ処理/ジョブ情報管理モジュール160は、情報処理装置処理管理モジュール165から「メインサーバID」「外部サーバID」「ジョブID」「文書データ」「ジョブ属性」「プラグインID」「完了予測時刻_1」を受け取ると、そのジョブをサーバ150自身のプラグイン機能で処理した方が早く処理が完了するかどうかを判断する。
Step41)受け取った「文書データ」を、受け取った「プラグインID」のプラグイン機能で、処理した場合の「完了予測時刻_2」を算出する。
「完了予測時刻_2」は、例えば、下記のように算出する。
「完了予測時刻_2」=「処理完了予測時刻」で管理されている最後のジョブの処理完了予測時刻+「単位データあたりの処理時間」×文書データサイズ
Step42)算出した「完了予測時刻_2」と、情報処理装置100より受け取った「完了予測時刻_1」と比較する。
「完了予測時刻_1」<=「完了予測時刻_2」の場合
情報処理装置100より受け取ったデータ(「メインサーバID」「外部サーバID」「ジョブID」「文書データ」「ジョブ属性」「プラグインID」「完了予測時刻_1」)をすべて破棄する。
「完了予測時刻_1」>「完了予測時刻_2」の場合
送られてきた「ジョブID」「プラグインID」「文書データ」「ジョブ属性」を授受する。
続いて、「処理開始通知依頼」「メインサーバID」「外部サーバID」「ジョブID」「完了予測時刻_2」を情報処理装置処理管理モジュール165に送る。
Step43)授受した「文書データ」「ジョブ属性」は、「プラグインID」のプラグイン機能で処理し、「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性」を、情報処理装置処理管理モジュール165に送る。
ジョブ処理が完了すると、サーバ150でも、情報処理装置100における前述のStep32−1)、Step32−2)の処理を実施する。
そして、次のジョブ処理を開始する。
情報処理装置処理管理モジュール165より、「処理キャンセル通知」「ジョブID」が送られてきた場合、「ジョブID」に該当する、待ちジョブがあればそれを削除、あるいは、処理中のジョブであれば、処理を終了してからジョブを削除する。
同時に、プラグイン処理能力管理モジュール115の「処理完了予測時刻」から、[ジョブID]に合致するデータを削除し、それ以降のジョブに対して、前述のStep32−2)の処理を行う。
そして、次のジョブの処理を開始する。
図7は、本実施の形態による処理例を示すフローチャートである。具体的に、サーバ150Bに処理を依頼する場合の処理例を示すものである。
情報処理装置100において、プラグインAの処理で待ちジョブが発生したとする(ステップS700)。
ステップS702では、情報処理装置100が、「完了予測時刻_1」を算出する。
ステップS704では、情報処理装置100は、サーバ150A、サーバ150B、サーバ150C、サーバ150D、サーバ150Eに対して、「ジョブID」「プラグインID」「文書データ」「ジョブ属性」「完了予測時刻_1」を送付する。
ステップS706Aでは、サーバ150Aが、「完了予測時刻_2」を算出する。
ステップS708Aでは、サーバ150Aが、「完了予測時刻_1」>「完了予測時刻_2」であれば、ジョブを授受する。
ステップS710Aでは、サーバ150Aが、情報処理装置100に対して、「完了予測時刻_2」を送付する。
ステップS720では、情報処理装置100が、「完了予測時刻_1’」<「完了予測時刻_2」であれば、特定サーバ150のみ処理キャンセルを依頼する。
ステップS722では、情報処理装置100がサーバ150Aに対して、処理キャンセルを依頼する。
ステップS724Aでは、サーバ150Aがジョブを削除する。
ステップS706Bでは、サーバ150Bが、「完了予測時刻_2」を算出する。
ステップS708Bでは、サーバ150Bが、「完了予測時刻_1」>「完了予測時刻_2」であれば、ジョブを授受する。
ステップS710Bでは、サーバ150Bが、情報処理装置100に対して、「完了予測時刻_2」を送付する。
ステップS726では、情報処理装置100が、「完了予測時刻_1’’」>「完了予測時刻_2」であれば、(待ち)ジョブ削除し、他のすべてのサーバ150に処理キャンセルを依頼し、サーバ150Bでの処理結果を待つ。
ステップS706Eでは、サーバ150Eが、「完了予測時刻_2」を算出する。
ステップS708Eでは、サーバ150Eが、「完了予測時刻_1」<「完了予測時刻_2」であれば、送られてきたジョブを削除する。
ステップS728では、情報処理装置100は、サーバ150C、サーバ150D、サーバ150Eに対して、処理キャンセルを依頼する。
ステップS730Cでは、サーバ150Cがジョブを削除する。
ステップS730Dでは、サーバ150Dがジョブを削除する。
ステップS730Eでは、サーバ150Eがジョブを削除する。
ステップS712Bでは、サーバ150Bが、送付されたジョブのプラグイン処理を実行する。
ステップS714Bでは、サーバ150Bが、情報処理装置100に対して、「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性」を送付する。
ステップS732では、情報処理装置100が、ジョブ情報を更新し、次のプラグイン処理へ進む。
なお、サーバAの「完了予測時刻_2」752Aは、情報処理装置100の「完了予測時刻_1」750よりも早いが、情報処理装置100の「完了予測時刻_1’」754よりも遅い。したがって、サーバ150Aでジョブを授受する(ジョブ開始する)が、キャンセルされることとなる。
サーバBの「完了予測時刻_2」752Bは、情報処理装置100の「完了予測時刻_1」750よりも早く、情報処理装置100の「完了予測時刻_1’’」756よりも早い。したがって、サーバ150Bでジョブを授受して、処理が行われ、情報処理装置100での待ちジョブは削除されることとなる。
図8は、本実施の形態による処理例を示す説明図である。情報処理装置100でのジョブの待ち行列(queue)が時々刻々と変化すること、そして、それにともなって、完了予測時刻が変化することを説明する。
図8(A)の例に示す時刻t1(例えば、ステップS700)では、ジョブ1を実行中であり、待ちジョブに、ジョブ2、ジョブ3、ジョブ4がある状態で、待ちジョブ5が発生したことを示している。待ちジョブ5の「完了予測時刻_1」を算出し、サーバ150に送付する。
図8(B)の例に示す時刻t2(例えば、ステップS726:サーバ150Bより、「完了予測時刻_2」が送られてきたとき)では、ジョブ1の処理が終了し(又は削除となり)、ジョブ2の処理が開始された状態である。そして、待ちジョブは、ジョブ3、ジョブ4、ジョブ5である。この時点での待ちジョブ5の「完了予測時刻_1’」を算出(情報処理装置100にとっては、2回目の完了予測時刻の算出)し、サーバ150Bの「完了予測時刻_2」と比較する。
図8(C)の例に示す時刻t3(例えば、サーバ150Cより、「完了予測時刻_2」が送られてきたとき)では、ジョブ2は、まだ処理中である。ただし、待ちジョブ3がサーバ150Xに処理委託され、削除された状態である。したがって、待ちジョブは、ジョブ4、ジョブ5である。この時点での待ちジョブ5の「処理完了予測時刻_1’’」を算出(情報処理装置100にとっては、3回目の完了予測時刻の算出)し、サーバ150Cの「完了予測時刻_2」と比較する。
なお、情報処理装置100でのジョブの待ち行列が時々刻々と変化するのは、情報処理装置100の処理状況にもよるが、図8(C)の例に示したように、サーバ150での処理状況にも影響を受ける。
図9は、本実施の形態による処理例を示すフローチャートである。
情報処理装置100において、プラグインAの処理で待ちジョブが発生したとする(ステップS900)。
ステップS902では、情報処理装置100が、「完了予測時刻_1」を算出する。
ステップS904では、情報処理装置100は、サーバ150A、サーバ150B、サーバ150C、サーバ150D、サーバ150Eに対して、「ジョブID」「プラグインID」「文書データ」「ジョブ属性」「完了予測時刻_1」を送付する。
ステップS906Aでは、サーバ150Aが、「完了予測時刻_2」を算出する。
ステップS908Aでは、サーバ150Aが、「完了予測時刻_1」>「完了予測時刻_2」であれば、ジョブを授受する。
ステップS910Aでは、サーバ150Aが、情報処理装置100に対して、「完了予測時刻_2」を送付する。
ステップS920では、情報処理装置100が、「完了予測時刻_1’」<「完了予測時刻_2」であれば、特定サーバ150のみ処理キャンセルを依頼する。
ステップS922では、情報処理装置100がサーバ150Aに対して、処理キャンセルを依頼する。
ステップS924Aでは、サーバ150Aがジョブを削除する。
ステップS906Bでは、サーバ150Bが、「完了予測時刻_2」を算出する。
ステップS908Bでは、サーバ150Bが、「完了予測時刻_1」>「完了予測時刻_2」であれば、ジョブを授受する。
ステップS910Bでは、サーバ150Bが、情報処理装置100に対して、「完了予測時刻_2」を送付する。しかし、情報処理装置100が、サーバ150Bからの「完了予測時刻_2」を受信する際には、ステップS926で示しているように、待ちジョブが実行できる状態になっていたとする。
ステップS906Eでは、サーバ150Eが、「完了予測時刻_2」を算出する。
ステップS908Eでは、サーバ150Eが、「完了予測時刻_1」<「完了予測時刻_2」であれば、送られてきたジョブを削除する。
ステップS926では、待ちジョブが実行できる状態になったら、情報処理装置100が、ジョブ処理を開始し、他のすべてのサーバ150に処理キャンセルを依頼する。
ステップS928では、情報処理装置100が、サーバ150B、サーバ150C、サーバ150D、サーバ150Eに対して、処理キャンセルを依頼する。なお、サーバ150Aには、ステップS922で処理キャンセルを依頼しているので、再度、処理キャンセルを依頼する必要はない。ただし、サーバ150Aに対しても処理キャンセルを依頼してもよい。
ステップS930Bでは、サーバ150Bがジョブを削除する。
ステップS930Cでは、サーバ150Cがジョブを削除する。
ステップS930Dでは、サーバ150Dがジョブを削除する。
ステップS930Eでは、サーバ150Eがジョブを削除する。
ステップS932では、情報処理装置100が、ジョブ処理を終了し、ジョブ情報を更新し、次のプラグイン処理へ進む。
なお、サーバAの「完了予測時刻_2」952は、情報処理装置100の「完了予測時刻_1」950よりも早いが、情報処理装置100の「完了予測時刻_1’」954よりも遅い。したがって、サーバ150Aでジョブを授受する(ジョブ開始する)が、キャンセルされることとなる。
前述の実施の形態では、各プラグイン処理で待ちジョブが発生すると、すべてのサーバ150に文書データを送付するため、通信回線に負荷がかかることとなる。
そこで、待ちジョブが発生した場合、そのジョブ処理を、どのサーバ150で処理するかを判断(判断処理A)する前に、その処理そのものを実施するか否かを判断する機能を追加してもよい。なお、判断処理Aには、前述した情報処理装置100での処理全体を含んでいてもよい。つまり、以下に示す判断は、待ちジョブが発生した直後に行うようにしてもよい。
判断する機能は、例えば、次のものがある。
(1)文書データのサイズを用いて、判断する。
対象としている文書データ(ジョブを構成する文書データ)のサイズを抽出し、その文書データのサイズが、予め定められた閾値未満又は以下である場合に、判断処理Aを実施する。
(2)完了予測時間を用いて、判断する。
待ちジョブの完了予測時間を、「文書データのサイズ×単位データあたりの処理時間」で算出し、その値が、予め定められた時間より大きい又は以上である場合に、判断処理Aを実施する。
予め定められた時間として、例えば以下の値である。
・ユーザーの指定値(閾値)。
・サーバ150で処理した場合の平均処理時間。なお、平均処理時間については後述する。
また、送付するデータサイズを小さくするために、そのプラグイン機能で使用するデータだけ抽出してから、文書データとして送付してもよい。例えば、プラグイン機能が領域を対象とする文字認識処理の場合、文字認識処理する領域のデータを切り出し、それを文書データとして送付するようにしてもよい。
また、情報処理装置100のサーバ処理管理モジュール125に、サーバ150より「処理開始通知」が送られてくる前に、ジョブ処理結果(「外部サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性値」)が送られてきた場合は、最初に返ってきたジョブ処理結果のみ、ジョブ処理/ジョブ情報管理モジュール120に送付するようにしてもよい。
そして、保持していた“送付リスト”を参照し、送られてきた「外部サーバID」以外のサーバ150の「サーバID」に「処理キャンセル通知」「ジョブID」を送付し、保持していた“送付リスト”をすべて削除する。
その後、送られてきたジョブ処理結果は、すべて破棄する。例えば、送付リストに存在しない「外部サーバID」「ジョブID」の処理結果が送られてきた場合は、それらデータを破棄するようにすればよい。
次に、より具体的な処理内容を説明する。
情報処理装置100のフローファイル登録モジュール130は、投入された文書を処理するためのフローファイルを作成、登録する。フローファイルは、複数のプラグインを指定することで定義する。
フローファイル管理モジュール135は、フローファイル登録モジュール130で登録されたフローファイルを管理する。フローID、プラグインIDのリストで管理する。プラグインIDのリストは、処理順に並べて管理されている。例えば、プラグインIDリスト1000を用いる。図10は、プラグインIDリスト1000のデータ構造例を示す説明図である。プラグインIDリスト1000は、フローID欄1005、1番目に処理されるプラグイン機能のプラグインID欄1010、2番目に処理されるプラグイン機能のプラグインID欄1020、3番目に処理されるプラグイン機能のプラグインID欄1030を有している。フローID欄1005は、本実施の形態において、フローを一意に識別するための情報(フローID:IDentification)を記憶している。1番目に処理されるプラグイン機能のプラグインID欄1010は、1番目に処理されるプラグイン機能のプラグインIDを記憶している。2番目に処理されるプラグイン機能のプラグインID欄1020は、2番目に処理されるプラグイン機能のプラグインIDを記憶している。3番目に処理されるプラグイン機能のプラグインID欄1030は、3番目に処理されるプラグイン機能のプラグインIDを記憶している。n番目に処理されるプラグイン機能のプラグインID欄10N0は、n番目に処理されるプラグイン機能のプラグインIDを記憶している。
サーバ情報登録モジュール105は、サーバ150の情報を登録する。サーバ150の情報は、ユーザーの操作によって入力されたものであってもよいし、そのサーバ150から送信されてきたものであってもよい。
サーバ情報管理モジュール110は、サーバ150を一意に判別でき、サーバ150のサービスにアクセスできるID情報(例えば、サービスURL)を管理する。
プラグイン処理能力管理モジュール115は、プラグイン機能ごとに、プラグイン処理能力管理テーブル1100のように情報を管理する。図11は、プラグイン処理能力管理テーブル1100のデータ構造例を示す説明図である。
プラグイン処理能力管理テーブル1100は、プラグインID欄1105、処理完了予測時刻欄1110、メインサーバの単位データあたりの処理時間(Sec/KB)欄1120、外部サーバの単位データあたりの処理時間(Sec/KB)欄1130を有している。プラグインID欄1105は、本実施の形態において、プラグインを一意に識別するための情報(プラグインID)を記憶している。処理完了予測時刻欄1110は、処理完了予測時刻を記憶している。メインサーバの単位データあたりの処理時間(Sec/KB)欄1120は、情報処理装置100の単位データあたりの処理時間(Sec/KB)を記憶している。外部サーバの単位データあたりの処理時間(Sec/KB)欄1130は、サーバ150の単位データあたりの処理時間(Sec/KB)を記憶している。なお、処理完了予測時刻欄1110は、情報処理装置100で現在処理しているジョブと、処理予約されているジョブ、のすべての処理が完了する予測時刻を管理している。
ジョブ処理/ジョブ情報管理モジュール120は、投入された文書を処理するためにジョブを生成し、管理する。ジョブは、ジョブ管理テーブル1200のように、ジョブを一意に表すIDと、そのジョブを処理した最後のプラグイン機能のプラグインID、文書データ(バイナリデータ)、属性と属性値のリスト、を関連付けて管理する。図12は、ジョブ管理テーブル1200のデータ構造例を示す説明図である。ジョブ管理テーブル1200は、ジョブID欄1205、処理済みのプラグインID欄1210、文書データ欄1220、文書データサイズ欄1230、ジョブ属性欄1240を有している。ジョブID欄1205は、本実施の形態において、ジョブを一意に識別するための情報(ジョブID)を記憶している。処理済みのプラグインID欄1210は、処理済みのプラグインIDを記憶している。文書データ欄1220は、文書データを記憶している。文書データサイズ欄1230は、文書データサイズを記憶している。ジョブ属性欄1240は、ジョブ属性を記憶している。
そして、ジョブ処理/ジョブ情報管理モジュール120は、生成されたジョブを、フローファイルに定義された各プラグイン機能を、順に呼び出し、処理していく。
文書が投入されてから、ジョブ処理が完了するまでの処理は、後述する「処理フローD」のとおりである。
「処理フローD」のStepD3)で、各プラグイン機能を実行する際、情報処理装置100で処理を行うか、サーバ150で処理を行うか判断する。
処理がすぐ開始できる場合は、情報処理装置100で処理を行うと判断する。
処理がすぐ開始できない場合(待ち状態になる場合)は、後述の「処理フローA」で判断を行う。
情報処理装置100で処理を行うと判断した場合は、後述の「処理フローB」で処理を行う。
サーバ150で処理を行うと判断した場合は、次の式によって「完了予測時刻_1」を算出し、
「完了予測時刻1」=現在時刻+文書データサイズ*メインサーバの単位データあたりの処理時間
サーバ処理管理モジュール125に、「ジョブID」「プラグインID」「文書データ」「ジョブ属性」「完了予測時刻_1」を渡す。
また、ジョブ処理/ジョブ情報管理モジュール120は、サーバ処理管理モジュール125より、サーバ150での処理結果(「ジョブID」「プラグインID」「処理済みの文書データ」「処理済みのジョブ属性」「処理時間」)が渡された場合は、「ジョブID」をキーにして、情報処理装置100自身が管理しているジョブの「処理済みのプラグインID」「文書データ」「文書データサイズ」「ジョブ属性値」を更新する。
同時に、
「サーバ150の単位データあたりの処理時間」=「処理時間」/「処理済みの文書データのデータサイズ」
を算出し、プラグイン処理能力管理モジュール115の該当するプラグインIDの「サーバ150の単位データあたりの平均処理時間」を更新する。
サーバ処理管理モジュール125は、サーバ150とのやり取りを管理する。
ジョブ処理/ジョブ情報管理モジュール120より「ジョブID」「プラグインID」「文書データ」「ジョブ属性」「完了予測時刻_1」が渡された場合は、サーバ情報管理モジュール110より抽出したすべての「サーバID」に、情報処理装置100自身の「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」「文書データ」「プラグインID」「ジョブ属性」「完了予測時刻_1」を送る。
そして、送った「ジョブID」と「プラグインID」と(「サーバID」、「送付時刻」)リストを、保持しておく。
サーバ150より「処理開始通知」と「サーバID」が送られてきた場合、保持しておいた「ジョブID」と「プラグインID」と(「サーバID」,「送付時刻」)リストをもとに、以下の処理を行う。
1)「処理開始通知」を送ってきたサーバ150の(「サーバID」、「送付時刻」)と「プラグインID」と「ジョブID」を保持しておく。
2)同時に、1)で保持した「サーバID」以外のサーバ150の「サーバID」に、「処理キャンセル通知」と「ジョブID」を送付する。
「処理開始通知」を送ってきたサーバ150から、「サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性値」が送られてきた場合、保持していた(「サーバID」、「送付時刻」)と「プラグインID」と「ジョブID」と受信時刻から、
「処理時間」=「受信時刻」−「送付時刻」
を算出して、ジョブ処理管理手段(ジョブ処理/ジョブ情報管理モジュール120)に、処理結果(「ジョブID」「プラグインID」「処理済みの文書データ」「処理済みのジョブ属性」「処理時間」)を渡す。
なお、サーバ150に「処理開始通知」が送られてくる前に、ジョブ処理結果(「サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性値」)が返ってきた場合は、最初に返ってきたジョブ処理結果のみ、ジョブ処理管理手段(ジョブ処理/ジョブ情報管理モジュール120)に送付する。
そして、送られてきた「サーバID」以外のサーバ150の「サーバID」に「処理キャンセル通知」と「ジョブID」を送付し、管理していたサーバ150の(「サーバID」、「送付時刻」)と「プラグインID」と「ジョブID」をすべて削除する。
その後、送られてきたジョブ処理結果は、すべて破棄する。例えば、保持している「サーバID」と「プラグインID」と「ジョブID」には存在しないジョブ処理結果であれば破棄するようにしてもよい。
サーバ150のプラグイン処理能力管理モジュール155は、プラグイン機能ごとに、プラグイン処理能力管理テーブル1300を管理する。図13は、プラグイン処理能力管理テーブル1300のデータ構造例を示す説明図である。プラグイン処理能力管理テーブル1300は、プラグインID欄1305、処理完了予測時刻欄1310、単位データあたりの処理時間(Sec/KB)欄1320を有している。プラグインID欄1305は、プラグインIDを記憶している。処理完了予測時刻欄1310は、処理完了予測時刻を記憶している。単位データあたりの処理時間(Sec/KB)欄1320は、単位データあたりの処理時間(Sec/KB)を記憶している。なお、処理完了予測時刻欄1310は、サーバ150で現在処理しているジョブと、処理予約されているジョブ、のすべての処理が完了する予測時刻を管理している。
情報処理装置処理管理モジュール165は、情報処理装置100とのやり取りを管理する。
具体的には、情報処理装置100のサーバ処理管理モジュール125から送られてきた「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」「文書データ」「ジョブ属性」「プラグインID」「完了予測時刻_1」を受け取ると、それらすべての情報を、ジョブ処理/ジョブ情報管理モジュール160に送る。
そして、ジョブ処理/ジョブ情報管理モジュール160より、「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」が送られてきた場合、情報処理装置100の「サーバ処理管理モジュール125のサービスURL」に、「処理開始通知」「サーバID」を送り、「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」を保持しておく。
また、ジョブ処理/ジョブ情報管理モジュール160より、「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性値」が送られてきた場合、保持しておいた「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」のデータの中から、「ジョブID」が合致する情報を抽出し、情報処理装置100の「サーバ処理管理モジュール125のサービスURL」に、「サーバID」「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性値」を送る。
また、情報処理装置100のサーバ処理管理モジュール125から「処理キャンセル通知」「ジョブID」が送られてきた場合、ジョブ処理/ジョブ情報管理モジュール160に、「処理キャンセル通知」「ジョブID」を送る。
ジョブ処理/ジョブ情報管理モジュール160は、情報処理装置処理管理モジュール165から「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」「文書データ」「ジョブ属性」「プラグインID」「完了予測時刻_1」を受け取ると、プラグイン処理能力管理モジュール155より、「処理完了予測時刻」「単位データあたりの処理時間」を取得し、次の式により「完了予測時刻_2」を算出する。
「完了予測時刻_2」=「処理完了予測時刻」+「処理サーバの単位データあたりの処理時間」*文書データサイズ
そして「完了予測時刻_1」と「完了予測時刻_2」を比較し、
「完了予測時刻_1」<=「完了予測時刻_2」ならば、情報処理装置100で処理を行うと判断する。
「完了予測時刻_1」>「完了予測時刻_2」ならば、サーバ150で処理を行うと判断する。
情報処理装置100で処理を行うと判断した場合は、取得した「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」「プラグインID」「文書データ」「ジョブ履歴」「完了予測時刻_1」をすべて削除する。
サーバ150で処理を行うと判断した場合は、「サーバ処理管理モジュール125のサービスURL」「サーバID」「ジョブID」を情報処理装置処理管理モジュール165に返すとともに、「プラグインID」に該当するプラグイン機能を呼び出し、「処理フローC」の処理を行う。
情報処理装置処理管理モジュール165より、「処理キャンセル通知」「ジョブID」が送られてきた場合、「ジョブID」に該当する、待ちジョブがあればそれを削除、あるいは、処理中のジョブであれば、処理を終了してからジョブを削除する。
「処理フローA」
情報処理装置100のジョブ処理/ジョブ情報管理モジュール120で、情報処理装置100で処理を行うか、サーバ150で処理を行うかの判断処理フローである。
StepA1)プラグイン処理能力管理モジュール115より、該当するプラグイン機能の情報(「プラグインID」「処理完了予測時刻」「情報処理装置100の単位データあたりの処理時間」「サーバ150に処理を委託するかどうかを判断する閾値」)を取得する。
StepA2)情報処理装置100で処理を行う場合の「完了予測時刻_1」を、次式を用いて算出する。
完了予測時刻_1=(処理完了予測時刻−現在時刻)+文書データサイズ*メインサーバの単位データあたりの処理時間
StepA3)サーバ150で処理を行う場合の「完了予測時刻_2」を、次式を用いて算出する。
完了予測時刻_2=文書データサイズ*外部サーバの単位データあたりの処理時間
算出した「完了予測時刻」と、取得した閾値を比較する。
StepA4)「完了予測時刻_1」と「完了予測時刻_2」を比較する。
「完了予測時刻_1」>「完了予測時刻_2」ならば、サーバ150で処理を行うと判断する。
「完了予測時刻_1」<=「完了予測時刻_2」ならば、情報処理装置100で処理を行うと判断する。
「処理フローB」
情報処理装置100のジョブ処理/ジョブ情報管理モジュール120で、ジョブ処理を行う場合のフローである。
StepB1)プラグイン処理能力管理モジュール115から「メインサーバの単位データあたりの処理時間」と「処理完了予測時刻」のリストを取得し、
各ジョブの「処理完了予測時刻」=現在時刻+「メインサーバの単位データあたりの処理時間」*各ジョブの文書データサイズ
を算出して、プラグイン処理能力管理モジュール115の「処理完了予測時刻」のリストを更新する。
StepB2)ジョブ処理を開始する。
StepB3)ジョブ処理が完了すると、
「単位データあたりの処理時間」=ジョブ処理時間/文書データサイズ
を算出し、例えば次の式で算出した値を使って、プラグイン処理能力管理モジュール115の「メインサーバの単位データあたりの処理時間」を更新する。
「メインサーバの単位データあたりの処理時間」=(「メインサーバの単位データあたりの処理時間」+「単位データあたりの処理時間」)/2
StepB4) StepB1)と同じ処理を実施し、プラグイン処理能力管理モジュール115の「処理完了予測時刻」のリストを更新する。
「処理フローC」
サーバ150で、特定のプラグイン機能の処理を行う場合のフローである。
StepC1)プラグイン処理能力管理モジュール155から「単位データあたりの処理時間」と「処理完了予測時刻」のリストを取得し、
各ジョブの「処理完了予測時刻」=現在時刻+「単位データあたりの処理時間」*各ジョブの「文書データ」のデータサイズ
を算出して、プラグイン処理能力管理モジュール155の「処理完了予測時刻」のリストを更新する。
StepC2)ジョブ処理を開始する。
StepC3)ジョブ処理が完了すると、「ジョブID」「処理済みの文書データ」「処理済みのジョブ属性値」を情報処理装置処理管理モジュール165に送る。
次に、
「単位データあたりの処理時間」=ジョブ処理時間/「文書データ」のデータサイズ
を算出し、例えば次の式で算出した値を使って、プラグイン処理能力管理モジュール155の「単位データあたりの処理時間」を更新する。
「単位データあたりの処理時間」=(プラグイン処理能力管理モジュール155で保持していた「単位データあたりの処理時間」+算出した「単位データあたりの処理時間」)/2
StepC4) Step1)と同じ処理を実施し、プラグイン処理能力管理モジュール155の「処理完了予測時刻」のリストを更新する。
「処理フローD」
情報処理装置100で、投入された文書をジョブとして管理し、処理するフローである。
StepD1)文書が投入されると、投入された文書をジョブ管理テーブル1200の文書データ欄1220に、データサイズを文書データサイズ欄1230に保存し、ID情報を発行してジョブID欄1205に保存する。なお、このとき、投入された文書の属性情報などがあれば、ジョブ属性欄1240に登録する。
StepD2)投入された文書を処理するフローデータを、フローファイル管理モジュール135より抽出し、1番目に処理するプラグイン機能のプラグインIDを抽出する。
投入された文書を、どのフローデータで処理するかは、例えば、どの手段で文書が投入されたかなどで判断すればよい。具体例を用いて説明すると、「フォルダAに投入」ならば「フロー001」、「共有フォルダBに投入」ならば「フロー002」、「FTP転送」ならば「フロー009」、「ファックス処理」ならば「フロー003」、「親展フォルダ投入」ならば「フロー004」、「メール処理」ならば「フロー006」等のように、文書投入に該当する処理の数だけフローを用意しておけばよい。
以降、StepD3)とStepD4)の処理を、フローデータに定義されたプラグイン機能分だけ実行していく。
StepD3)プラグインIDに該当するプラグイン機能を呼び出し、ジョブ管理テーブル1200の文書データ欄1220、ジョブ属性欄1240に対して処理を行う。
ここで、本実施の形態を用いて、情報処理装置100/サーバ150のいずれかでプラグイン処理を行う。
StepD4)ジョブ管理テーブル1200の文書データ欄1220、文書データサイズ欄1230、ジョブ属性欄1240を、StepD3)で処理された結果の文書データ、ジョブ属性に更新する。
そして、ジョブ管理テーブル1200の処理済みのプラグインID欄1210を、処理が完了したプラグインIDに更新する。
図14を参照して、本実施の形態の情報処理装置のハードウェア構成例について説明する。図14に示す構成は、例えばパーソナルコンピュータ(PC)等によって構成されるものであり、スキャナ等のデータ読み取り部1417と、プリンタ等のデータ出力部1418を備えたハードウェア構成例を示している。
CPU(Central Processing Unit)1401は、前述の実施の形態において説明した各種のモジュール、すなわち、サーバ情報登録モジュール105、サーバ情報管理モジュール110、プラグイン処理能力管理モジュール115、ジョブ処理/ジョブ情報管理モジュール120、サーバ処理管理モジュール125、プラグイン処理能力管理モジュール155、ジョブ処理/ジョブ情報管理モジュール160、情報処理装置処理管理モジュール165等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
ROM(Read Only Memory)1402は、CPU1401が使用するプログラムや演算パラメータ等を格納する。RAM(Random Access Memory)1403は、CPU1401の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはCPUバス等から構成されるホストバス1404により相互に接続されている。
ホストバス1404は、ブリッジ1405を介して、PCI(Peripheral Component Interconnect/Interface)バス等の外部バス1406に接続されている。
キーボード1408、マウス等のポインティングデバイス1409は、操作者により操作される入力デバイスである。ディスプレイ1410は、液晶表示装置又はCRT(Cathode Ray Tube)等があり、各種情報をテキストやイメージ情報として表示する。
HDD(Hard Disk Drive)1411は、ハードディスク(フラッシュメモリ等であってもよい)を内蔵し、ハードディスクを駆動し、CPU1401によって実行するプログラムや情報を記録又は再生させる。ハードディスクには、処理対象の文書データ、プラグインIDリスト1000、プラグイン処理能力管理テーブル1100、ジョブ管理テーブル1200、プラグイン処理能力管理テーブル1300等が格納される。さらに、その他の各種データ、各種コンピュータ・プログラム等が格納される。
ドライブ1412は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体1413に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース1407、外部バス1406、ブリッジ1405、及びホストバス1404を介して接続されているRAM1403に供給する。リムーバブル記録媒体1413も、ハードディスクと同様のデータ記録領域として利用可能である。
接続ポート1414は、外部接続機器1415を接続するポートであり、USB、IEEE1394等の接続部を持つ。接続ポート1414は、インタフェース1407、及び外部バス1406、ブリッジ1405、ホストバス1404等を介してCPU1401等に接続されている。通信部1416は、通信回線に接続され、外部とのデータ通信処理を実行する。データ読み取り部1417は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部1418は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
なお、図14に示す情報処理装置のハードウェア構成は、1つの構成例を示すものであり、本実施の形態は、図14に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア(例えば特定用途向け集積回路(Application Specific Integrated Circuit:ASIC)等)で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図14に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器(携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む)、情報家電、ロボット、複写機、ファックス、スキャナ、プリンタ、複合機などに組み込まれていてもよい。
また、前述の実施の形態の説明において、予め定められた値との比較において、「以上」、「以下」、「より大きい」、「より小さい(未満)」としたものは、その組み合わせに矛盾が生じない限り、それぞれ「より大きい」、「より小さい(未満)」、「以上」、「以下」としてもよい。「早い」、「遅い」についても同様である。
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク(DVD)であって、DVDフォーラムで策定された規格である「DVD−R、DVD−RW、DVD−RAM等」、DVD+RWで策定された規格である「DVD+R、DVD+RW等」、コンパクトディスク(CD)であって、読出し専用メモリ(CD−ROM)、CDレコーダブル(CD−R)、CDリライタブル(CD−RW)等、ブルーレイ・ディスク(Blu−ray(登録商標) Disc)、光磁気ディスク(MO)、フレキシブルディスク(FD)、磁気テープ、ハードディスク、読出し専用メモリ(ROM)、電気的消去及び書換可能な読出し専用メモリ(EEPROM(登録商標))、フラッシュ・メモリ、ランダム・アクセス・メモリ(RAM)、SD(Secure Digital)メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク(LAN)、メトロポリタン・エリア・ネットワーク(MAN)、ワイド・エリア・ネットワーク(WAN)、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
100…情報処理装置
105…サーバ情報登録モジュール
110…サーバ情報管理モジュール
115…プラグイン処理能力管理モジュール
120…ジョブ処理/ジョブ情報管理モジュール
125…サーバ処理管理モジュール
130…フローファイル登録モジュール
135…フローファイル管理モジュール
150…サーバ
155…プラグイン処理能力管理モジュール
160…ジョブ処理/ジョブ情報管理モジュール
165…情報処理装置処理管理モジュール
190…通信回線
210…画像処理装置
290…通信回線

Claims (7)

  1. 通信回線を介して第一のジョブ処理装置と第二のジョブ処理装置とが接続されているジョブ処理システムであって、
    第一のジョブ処理装置は、
    第一のジョブ処理装置において処理対象のジョブが発生した場合に、第一のジョブ処理装置で処理を実行した場合の完了予測時刻を算出する算出手段、
    少なくとも処理対象のジョブと完了予測時刻とを第二のジョブ処理装置に対して送信する送信手段、を有し、
    第二のジョブ処理装置は、
    第一のジョブ処理装置からジョブと完了予測時刻とを受信する受信手段、
    受信したジョブを第二のジョブ処理装置で処理を行った場合の完了予測時刻を算出する算出手段、
    第一のジョブ処理装置における完了予測時刻が第二のジョブ処理装置における完了予測時刻より早い場合は、受信したジョブを破棄する破棄手段、
    第一のジョブ処理装置における完了予測時刻が第二のジョブ処理装置における完了予測時刻より遅い場合は、受信したジョブの処理を開始するとともに、受信したジョブの処理を開始したことを第一のジョブ処理装置に通知する通知手段、
    受信したジョブの処理が完了した場合に、処理済みのジョブを第一のジョブ処理装置に送信する処理済みジョブ送信手段、
    を有するジョブ処理システム。
  2. 第二のジョブ処理装置は処理を開始した場合に、第一のジョブ処理装置に対して完了予測時刻も通知し、
    第一のジョブ処理装置は第一のジョブ処理装置で処理を実行した場合の完了予測時刻を、第二のジョブ処理装置から完了予測時刻の通知を受けた時点又はそれ以降に、再度算出して、第二のジョブ処理装置の完了予測時刻と比較する、
    請求項1に記載のジョブ処理システム。
  3. 再度算出した第一のジョブ処理装置の完了予測時刻が第二のジョブ処理装置の完了予測時刻より早い場合は、第一のジョブ処理装置は第二のジョブ処理装置に対して、第二のジョブ処理装置が開始した処理の中止を送信する、
    請求項2に記載のジョブ処理システム。
  4. 前記第一のジョブ処理装置において、処理対象のジョブが発生した場合に、ジョブを構成する文書データのサイズを抽出し、文書データのサイズが予め定められた値未満又は以下の場合に、前記算出手段による処理を行う、
    請求項1に記載のジョブ処理システム。
  5. 他のジョブ処理装置からジョブと完了予測時刻とを受信する受信手段、
    受信したジョブをジョブ処理装置で処理を行った場合の完了予測時刻を算出する算出手段、
    他のジョブ処理装置における完了予測時刻がジョブ処理装置における完了予測時刻より早い場合は、受信したジョブを破棄する破棄手段、
    他のジョブ処理装置における完了予測時刻がジョブ処理装置における完了予測時刻より遅い場合は、受信したジョブの処理を開始するとともに、受信したジョブの処理を開始したことを他のジョブ処理装置に通知する通知手段、
    受信したジョブの処理が完了した場合に、処理済みのジョブを他のジョブ処理装置に送信する処理済みジョブ送信手段、
    を有するジョブ処理装置。
  6. ジョブ処理装置は処理を開始した場合に、他のジョブ処理装置に対して完了予測時刻も通知する、
    請求項に記載のジョブ処理装置。
  7. コンピュータを、
    他のジョブ処理装置からジョブと完了予測時刻とを受信する受信手段、
    受信したジョブを前記コンピュータであるジョブ処理装置で処理を行った場合の完了予測時刻を算出する算出手段、
    他のジョブ処理装置における完了予測時刻がジョブ処理装置における完了予測時刻より早い場合は、受信したジョブを破棄する破棄手段、
    他のジョブ処理装置における完了予測時刻がジョブ処理装置における完了予測時刻より遅い場合は、受信したジョブの処理を開始するとともに、受信したジョブの処理を開始したことを他のジョブ処理装置に通知する通知手段、
    受信したジョブの処理が完了した場合に、処理済みのジョブを他のジョブ処理装置に送信する処理済みジョブ送信手段、
    として機能させるためのジョブ処理プログラム。
JP2015143376A 2015-07-17 2015-07-17 ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム Expired - Fee Related JP6500668B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015143376A JP6500668B2 (ja) 2015-07-17 2015-07-17 ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム
US15/019,307 US9569149B2 (en) 2015-07-17 2016-02-09 Job processing system, job processing apparatus, and non-transitory computer readable medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015143376A JP6500668B2 (ja) 2015-07-17 2015-07-17 ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム

Publications (2)

Publication Number Publication Date
JP2017027240A JP2017027240A (ja) 2017-02-02
JP6500668B2 true JP6500668B2 (ja) 2019-04-17

Family

ID=57775040

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015143376A Expired - Fee Related JP6500668B2 (ja) 2015-07-17 2015-07-17 ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム

Country Status (2)

Country Link
US (1) US9569149B2 (ja)
JP (1) JP6500668B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11108698B2 (en) * 2017-02-03 2021-08-31 Microsoft Technology Licensing, Llc Systems and methods for client-side throttling after server handling in a trusted client component
JP7009894B2 (ja) * 2017-10-02 2022-01-26 富士通株式会社 分散プロセス管理システム、分散プロセス管理方法、及び情報処理装置
WO2020217365A1 (ja) * 2019-04-24 2020-10-29 パナソニックIpマネジメント株式会社 統合ナビゲーションシステムおよび作業指示方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000231465A (ja) 1999-02-10 2000-08-22 Ricoh Co Ltd ジョブ分散方法
US7088462B2 (en) * 2001-06-29 2006-08-08 International Business Machines Corporation Print manager having a user interface for specifying how documents are directed to print devices
US7646505B2 (en) * 2006-01-17 2010-01-12 Ricoh Company, Ltd. Optimized printing of electronic documents
JP5002277B2 (ja) * 2007-02-06 2012-08-15 キヤノン株式会社 ジョブ処理装置、ジョブ処理装置の制御方法、記憶媒体及びプログラム
JP2008293278A (ja) * 2007-05-24 2008-12-04 Fujitsu Ltd 分散処理プログラム、分散処理装置、および分散処理方法
JP2009184288A (ja) * 2008-02-08 2009-08-20 Nec Access Technica Ltd 画像印刷装置、印刷ジョブ転送方法、および印刷ジョブ転送用プログラム
JP5241345B2 (ja) * 2008-07-01 2013-07-17 キヤノン株式会社 ジョブ処理装置及び当該ジョブ処理装置のジョブログの管理方法及びジョブ履歴管理システム
JP5609195B2 (ja) * 2010-03-23 2014-10-22 富士ゼロックス株式会社 画像処理装置、画像形成装置及びプログラム
US8836987B2 (en) * 2011-01-21 2014-09-16 Ricoh Company, Ltd. Print queue management in a print shop environment
JP5930356B2 (ja) * 2011-02-23 2016-06-08 日本電気株式会社 印刷装置の制御装置及び制御方法

Also Published As

Publication number Publication date
US20170017443A1 (en) 2017-01-19
JP2017027240A (ja) 2017-02-02
US9569149B2 (en) 2017-02-14

Similar Documents

Publication Publication Date Title
US20160011824A1 (en) Information processing apparatus, terminal apparatus, information processing method, non-transitory computer readable medium, and information processing system
US11032436B2 (en) Information processing apparatus, information processing system, and non-transitory computer readable medium storing program for workflow generation
JP2017045099A (ja) 中継装置及び中継処理プログラム
JP2007334886A (ja) ドキュメント処理ジョブのルーティング・システムおよび方法
JP6565391B2 (ja) 情報処理装置及び情報処理プログラム
JP6500668B2 (ja) ジョブ処理システム、ジョブ処理装置及びジョブ処理プログラム
US20160117340A1 (en) Information processing system, information processing apparatus, and information processing method
US11645024B2 (en) Resuming print job by using accounting information
JP5891881B2 (ja) 情報処理装置及び情報処理プログラム
US9509657B2 (en) Information processing apparatus, relay method, and computer-readable storage medium
JP2021101319A (ja) 情報処理装置及び情報処理プログラム
JP6620558B2 (ja) 情報処理装置及び情報処理プログラム
US9300631B2 (en) Information processing system, information processing apparatus, apparatus, and non-transitory computer readable medium storing information processing program
US11399112B2 (en) Information processing apparatus, non-transitory computer readable medium storing information processing program, and information processing system
JP2018015912A (ja) 画像処理装置、画像処理システム及び画像処理プログラム
US9866721B2 (en) Information processing apparatus, image forming apparatus, and non-transitory computer readable medium for file distribution to servers
JP2020170268A (ja) ファイル管理装置、ファイル管理プログラム、ファイル管理システム、及び情報処理プログラム
JP2014182412A (ja) 情報処理装置、情報処理方法およびプログラム
US20240069833A1 (en) Image forming apparatus, image forming method, and non-transitory computer readable medium
JP2018022218A (ja) 情報処理装置及び情報処理プログラム
JP7139991B2 (ja) 情報処理システム、方法、および情報処理装置
US20160088167A1 (en) Image forming device, information processing method, and non-transitory computer readable medium
US20160020984A1 (en) Information processing apparatus, method, and system, and non-transitory computer readable medium
US9531904B2 (en) Information processing apparatus, control method of information processing apparatus, and recording medium
US9071774B2 (en) Control device, image output apparatus, image output system, non-transitory computer readable medium, and control method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180911

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181009

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20181130

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: 20190219

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190304

R150 Certificate of patent or registration of utility model

Ref document number: 6500668

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

LAPS Cancellation because of no payment of annual fees