JP2006065566A - バッチ処理装置、および、プログラム - Google Patents
バッチ処理装置、および、プログラム Download PDFInfo
- Publication number
- JP2006065566A JP2006065566A JP2004246991A JP2004246991A JP2006065566A JP 2006065566 A JP2006065566 A JP 2006065566A JP 2004246991 A JP2004246991 A JP 2004246991A JP 2004246991 A JP2004246991 A JP 2004246991A JP 2006065566 A JP2006065566 A JP 2006065566A
- Authority
- JP
- Japan
- Prior art keywords
- job
- execution
- time
- batch processing
- executed
- 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.)
- Pending
Links
Images
Abstract
【課題】 バッチ処理のジョブ実行スケジュールを最適化する。
【解決手段】 ジョブ実行制御部113は、ジョブ格納部161に格納されているジョブの実行順序を決定し、順次ジョブを取得する。ジョブ実行時間算出部112は、取得されたジョブの実行時間を算出し、当該ジョブの終了時刻を求める。ジョブ実行制御部113は、当該ジョブが指定された時間内に終了するか否かを判別する。ジョブ実行制御部113は、指定時間内に終了しないジョブに指定されている条件に基づいて、実行するか繰下実行するかを決定し、繰下実行する場合には新たなジョブスケジュールを設定する。ジョブ実行部114は、実行するジョブを順次実行する。ジョブ実行制御部113は、既定時間帯経過後に実行が継続されているジョブについて中断するか否かを判別し、中断する場合には当該ジョブの実行スケジュールを再設定する。
【選択図】 図2
【解決手段】 ジョブ実行制御部113は、ジョブ格納部161に格納されているジョブの実行順序を決定し、順次ジョブを取得する。ジョブ実行時間算出部112は、取得されたジョブの実行時間を算出し、当該ジョブの終了時刻を求める。ジョブ実行制御部113は、当該ジョブが指定された時間内に終了するか否かを判別する。ジョブ実行制御部113は、指定時間内に終了しないジョブに指定されている条件に基づいて、実行するか繰下実行するかを決定し、繰下実行する場合には新たなジョブスケジュールを設定する。ジョブ実行部114は、実行するジョブを順次実行する。ジョブ実行制御部113は、既定時間帯経過後に実行が継続されているジョブについて中断するか否かを判別し、中断する場合には当該ジョブの実行スケジュールを再設定する。
【選択図】 図2
Description
本発明は、バッチ処理装置、および、プログラムに関し、特に、効率的なバッチ処理を実行可能なバッチ処理装置、および、プログラムに関する。
コンピュータを用いた処理において、複数のジョブを所定の時間帯に一括して処理するバッチ処理が知られている。例えば、通信により営業所などから事務処理センタに受注データなどを送信するような業務処理の場合などにバッチ処理が適用される。このような場合、通常、データの受付をおこなう時間帯が規定されており、その時間帯に送信するために、各ジョブ毎に実行する時間帯が予め指定されている。そして、時間帯内にジョブが終了しない場合には、ジョブの優先度を上げることで、時間内で終了できるようにすることが従来行われている。
しかしながら、ジョブの優先度を上げても時間帯内に終了しない場合もあり、時間帯を経過してもジョブの実行が継続される事態も生じている。通常、バッチ処理は、通常の業務時間とは異なる時間帯(例えば、終業後や始業前など)におこなうが、このように設定されている時間帯が終了してもバッチ処理が継続されていると、通常の業務に影響することになる。
このような問題を解消するため、時間内に終了しないジョブについては翌サービス時に持ち越すようバッチ処理をスケジュールする手法が提案されている(例えば、特許文献1)。
しかしながら、このような手法では、時間内に終了しないジョブについては一律に翌サービス時に持ち越されてしまうので、例えば、バッチ処理後の通常業務に必要なジョブについても持ち越されてしまい、バッチ処理結果を業務に反映させることができないという問題があった。
特開2000−112887号公報
本発明は、上記実状に鑑みてなされたものであり、効率的なバッチ処理の実行を可能とするバッチ処理装置等を提供することを目的とする。
上記目的を達成するため、本発明の第1の観点にかかるバッチ処理装置は、
所定の時間帯にバッチ処理をおこなうバッチ処理装置において、
バッチ処理対象のジョブ毎の実行時間を予め算出する実行時間算出手段と、
各ジョブが前記所定の時間帯に終了するか否かを判別する実行時間判別手段と、
前記実行時間判別手段の判別結果に応じて、各ジョブの実行スケジュールを設定するスケジュール設定手段と、
前記スケジュール設定手段が設定した実行スケジュールに基づいてジョブを実行するジョブ実行手段と、を備え、
前記スケジュール設定手段は、ジョブの実行が前記所定時間帯内に終了しない場合、各ジョブ毎に指定されている条件に基づいて、ジョブの実行スケジュールを再設定する、
ことを特徴とする。
所定の時間帯にバッチ処理をおこなうバッチ処理装置において、
バッチ処理対象のジョブ毎の実行時間を予め算出する実行時間算出手段と、
各ジョブが前記所定の時間帯に終了するか否かを判別する実行時間判別手段と、
前記実行時間判別手段の判別結果に応じて、各ジョブの実行スケジュールを設定するスケジュール設定手段と、
前記スケジュール設定手段が設定した実行スケジュールに基づいてジョブを実行するジョブ実行手段と、を備え、
前記スケジュール設定手段は、ジョブの実行が前記所定時間帯内に終了しない場合、各ジョブ毎に指定されている条件に基づいて、ジョブの実行スケジュールを再設定する、
ことを特徴とする。
上記バッチ処理装置は、
ジョブの実行にかかる動作を規定する属性情報を記憶する属性情報記憶手段をさらに備えていることが望ましく、この場合、
前記実行時間算出手段は、各ジョブ毎に指定されている条件と、前記属性情報記憶手段に記憶されている属性情報とに基づいて実行時間を算出し、
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、各ジョブの実行スケジュールを設定することが望ましい。
ジョブの実行にかかる動作を規定する属性情報を記憶する属性情報記憶手段をさらに備えていることが望ましく、この場合、
前記実行時間算出手段は、各ジョブ毎に指定されている条件と、前記属性情報記憶手段に記憶されている属性情報とに基づいて実行時間を算出し、
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、各ジョブの実行スケジュールを設定することが望ましい。
上記バッチ処理装置において、
前記実行時間算出手段は、算出した実行時間に基づいて、各ジョブの終了時刻を算出し、
前記実行時間判別手段は、前記実行時間算出手段が算出した終了時刻に基づいて、各ジョブが前記所定の時間帯内で終了するか否かを判別することが望ましい。
前記実行時間算出手段は、算出した実行時間に基づいて、各ジョブの終了時刻を算出し、
前記実行時間判別手段は、前記実行時間算出手段が算出した終了時刻に基づいて、各ジョブが前記所定の時間帯内で終了するか否かを判別することが望ましい。
上記バッチ処理装置において、
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合、次回のバッチ処理時に繰り下げて実行するようスケジュールを設定することができる。
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合、次回のバッチ処理時に繰り下げて実行するようスケジュールを設定することができる。
上記バッチ処理装置において、
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合であっても、当該ジョブを実行するようスケジュールを設定することができる。
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合であっても、当該ジョブを実行するようスケジュールを設定することができる。
上記バッチ処理装置において、
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合、当該ジョブを該所定時間帯まで実行し、未完了となる処理を次回のバッチ処理時に繰り下げて実行するようスケジュールを設定することができる。
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合、当該ジョブを該所定時間帯まで実行し、未完了となる処理を次回のバッチ処理時に繰り下げて実行するようスケジュールを設定することができる。
上記バッチ処理装置は、
前記所定の時間帯の経過時以降に前記ジョブ実行手段が実行しているジョブがあるか否かを判別する実行ジョブ判別手段と、
前記実行ジョブ判別手段が実行ジョブがあると判別した場合、当該ジョブを中断すべきか否かを判別する中断判別手段と、をさらに備えていてもよく、この場合、
前記ジョブ実行手段は、前記中断判別手段が中断すべきと判別したジョブの実行を中断し、
前記スケジュール設定手段は、前記ジョブ実行手段が中断したジョブの実行スケジュールを設定することが望ましい。
前記所定の時間帯の経過時以降に前記ジョブ実行手段が実行しているジョブがあるか否かを判別する実行ジョブ判別手段と、
前記実行ジョブ判別手段が実行ジョブがあると判別した場合、当該ジョブを中断すべきか否かを判別する中断判別手段と、をさらに備えていてもよく、この場合、
前記ジョブ実行手段は、前記中断判別手段が中断すべきと判別したジョブの実行を中断し、
前記スケジュール設定手段は、前記ジョブ実行手段が中断したジョブの実行スケジュールを設定することが望ましい。
上記バッチ処理装置において、
前記中断判別手段は、ジョブの実行が当該バッチ処理以外の処理に影響するか否かを判別し、影響する場合に当該ジョブを中断すべきと判別することが望ましい。
前記中断判別手段は、ジョブの実行が当該バッチ処理以外の処理に影響するか否かを判別し、影響する場合に当該ジョブを中断すべきと判別することが望ましい。
上記バッチ処理装置は、
複数のジョブの実行順序を決定する実行順序決定手段と、
前記実行順序決定手段が決定した実行順に前記ジョブを順次指定するジョブ指定手段と、をさらに備えていることが望ましく、この場合、
前記実行時間算出手段は、前記ジョブ指定手段が指定したジョブと、当該ジョブの前に実行されるジョブの実行時間を算出することが望ましい。
複数のジョブの実行順序を決定する実行順序決定手段と、
前記実行順序決定手段が決定した実行順に前記ジョブを順次指定するジョブ指定手段と、をさらに備えていることが望ましく、この場合、
前記実行時間算出手段は、前記ジョブ指定手段が指定したジョブと、当該ジョブの前に実行されるジョブの実行時間を算出することが望ましい。
また、前記実行時間算出処理は、前記ジョブ指定手段が指定したジョブの1つ前のジョブについての終了時刻を起点に、該指定されたジョブの終了時刻を算出することが望ましい。
さらに、前記実行時間算出処理は、前記ジョブ指定手段が指定したジョブの数に応じて、各ジョブの実行時間を可変的に算出することが望ましい。
上記目的を達成するため、本発明の第2の観点にかかるプログラムは、
コンピュータにバッチ処理を実行させるためのプログラムであって、
前記コンピュータに、
バッチ処理にかかる動作を規定する属性情報を記憶する機能と、
バッチ処理対象となるジョブの処理時間を算出する機能と、
各ジョブ毎に指定されている条件と、算出された処理時間とに基づいて指定されている時間内に終了しないジョブについて、そのまま実行するか次回バッチ処理時に繰り下げて実行するかを判別する機能と、
繰り下げて実行するジョブの実行スケジュールを設定する機能と、
指定された終了時間経過後も実行しているジョブについて、バッチ処理以外の要件に基づいて中断要否を判別し、中断すべきと判別した場合にジョブの実行を中断する機能と、
中断したジョブを再度実行するための実行スケジュールを設定する機能と、
を実現させることを特徴とする。
コンピュータにバッチ処理を実行させるためのプログラムであって、
前記コンピュータに、
バッチ処理にかかる動作を規定する属性情報を記憶する機能と、
バッチ処理対象となるジョブの処理時間を算出する機能と、
各ジョブ毎に指定されている条件と、算出された処理時間とに基づいて指定されている時間内に終了しないジョブについて、そのまま実行するか次回バッチ処理時に繰り下げて実行するかを判別する機能と、
繰り下げて実行するジョブの実行スケジュールを設定する機能と、
指定された終了時間経過後も実行しているジョブについて、バッチ処理以外の要件に基づいて中断要否を判別し、中断すべきと判別した場合にジョブの実行を中断する機能と、
中断したジョブを再度実行するための実行スケジュールを設定する機能と、
を実現させることを特徴とする。
本発明によれば、所定の時間帯内に終了しないジョブについて、各ジョブ毎に指定されている条件に基づいて実行スケジュールを設定する。ここで、条件に応じて、ジョブを実行するか繰り下げて実行するかを決定してスケジュールを設定する。また、バッチ処理をおこなうための時間帯を経過してもジョブの実行が継続している場合は、他の処理への影響に基づいてジョブの実行を中断し、再度実行されるようスケジュールが設定される。これにより、例えば、バッチ処理後の業務に必要となるジョブなどについては、バッチ処理時間帯内で終了できるよう優先的に実行され、実行結果を業務処理に反映させることができる。また、他の処理に影響がある場合のみ、時間帯経過後のバッチ処理が中断されるので、時間帯内に終了しないジョブについても、可能な限り実行を継続させることができる。
(実施形態1)
以下、本発明を実施するための形態を図面を参照して説明する。本実施形態では、複数のジョブをパラレル(並列)に実行することでバッチ処理をおこなう場合を例に説明する。本実施形態では、バッチ処理装置100によりこのようなバッチ処理をおこなう。なお、バッチ処理装置100は、バッチ処理のために予め規定されている時間帯(以下、「既定時間帯」とする)にバッチ処理を実行するものとし、本実施形態では、既定時間帯を8:00〜9:00とする。また、バッチ処理装置100は、既定時間帯の間はバッチ処理をおこなうが、その他の時間帯については、他の用途(以下、「通常用途」とする)に用いられるものとする。
以下、本発明を実施するための形態を図面を参照して説明する。本実施形態では、複数のジョブをパラレル(並列)に実行することでバッチ処理をおこなう場合を例に説明する。本実施形態では、バッチ処理装置100によりこのようなバッチ処理をおこなう。なお、バッチ処理装置100は、バッチ処理のために予め規定されている時間帯(以下、「既定時間帯」とする)にバッチ処理を実行するものとし、本実施形態では、既定時間帯を8:00〜9:00とする。また、バッチ処理装置100は、既定時間帯の間はバッチ処理をおこなうが、その他の時間帯については、他の用途(以下、「通常用途」とする)に用いられるものとする。
バッチ処理装置100の構成を図1を参照して説明する。図1は、バッチ処理装置100の構成を示すブロック図である。バッチ処理装置100は、例えば、ワークステーションやパーソナルコンピュータなどといった情報処理装置であり、図示するように、制御部110と、通信制御部120と、入力制御部130と、出力制御部140と、プログラム格納部150と、記憶部160と、から構成される。
制御部110は、例えば、CPU(Central Processing Unit:中央演算処理装置)やワークエリアとなる所定の記憶装置(RAM(Random Access Memory)など)から構成され、バッチ処理装置100の各部を制御するとともに、プログラム格納部150に格納されている所定の動作プログラムに基づいて後述する各処理を実行する。なお、制御部110は、例えば、タイマ回路などといった計時動作をおこなうための構成を有しているものとし、現在時刻を取得したり動作時間の算出などをおこなうものとする。このような構成は、ソフトウェア処理により実現されてもよい。
通信制御部120は、例えば、NIC(Network Interface Card)やルータ、モデム、などといった通信装置や、シリアル転送もしくはパラレル転送用のコネクタ類などから構成され、バッチ処理装置100と外部装置とを接続して通信をおこなう。外部装置との通信は、所定の通信ネットワークや接続ケーブルなどを介して行われる。通信制御部120は、例えば、LAN(Local Area Network:構内通信網)やWAN(Wide Area Network:広域通信網)などを介して、バッチ処理装置100と他の情報処理装置等(パーソナルコンピュータなど)とを接続する。
入力制御部130は、例えば、キーボードやポインティング・デバイスなどの所定の入力装置13を接続し、入力装置13から入力された指示などを制御部110に伝達する。
出力制御部140は、例えば、ディスプレイ装置やプリンタなどの所定の出力装置14を接続し、制御部110の処理結果などを必要に応じて出力装置14に出力する。
プログラム格納部150は、例えば、ハードディスク装置やROM(Read Only Memory)などといった所定の記憶装置から構成され、制御部110が実行する種々の動作プログラムが格納されている。プログラム格納部150に格納される動作プログラムは、バッチ処理装置100の基本動作を司る任意のOS(Operating System:基本ソフトウェア)の他に、後述する各処理を実現するための動作プログラムが格納されている。後述するバッチ処理装置100による処理は、制御部110がこれらの動作プログラムを実行することで実現される。
すなわち、プログラム格納部150に格納されている動作プログラムを実行することで、制御部110は、図2に示すような構成として機能する。図示するように、制御部110は、ジョブ要求受信部111、ジョブ実行制御部112、ジョブ実行時間算出部113、ジョブ実行部114、として機能する。
ジョブ要求受信部111は、バッチ処理対象となるジョブ(以下、「バッチジョブ」とする)の入力を受け付ける。バッチジョブは、例えば、バッチ処理装置100のユーザが入力装置13などを操作することにより入力される他、通信制御部120を介して外部装置等から入力される。
ジョブ実行時間算出部112は、実行対象となるバッチジョブの実行時間を、予め規定されている条件に基づいて算出する。
ジョブ実行制御部113は、算出された実行時間に基づいて、ジョブ毎の実行可否の判定や、既定の実行時間内に終了しない場合の繰下実行の設定などをおこなう。
ジョブ実行部114は、実行対象となるジョブを実行する。
本実施の形態では、制御部110がプログラム格納部150に格納されているプログラムを実行することにより、いわゆるソフトウェア処理で上記機能を実現するが、これらの機能に特化した回路(いわゆる、ASIC(Application Specific Integrated Circuit))などをバッチ処理装置100に構成することで、いわゆるハードウェア処理によって上記機能が実現されてもよい。
記憶部160は、例えば、RAMやハードディスク装置などといった所定の記憶装置から構成され、種々のデータを格納する。本実施形態では、プログラム格納部150に格納されている動作プログラムを実行することにより、制御部110が記憶部160を制御する。これにより、記憶部160は、図2に示すような、ジョブ格納部161、属性情報格納部162、実行結果格納部163、として機能する。
ジョブ格納部161は、ジョブ要求受信部111が受け付けたジョブを格納するための記憶領域であり、いわゆる、スプール用の記憶領域として機能する。ジョブ格納部161に記録される情報の例を図3(a)に示す。
図示するように、ジョブ格納部161には「ジョブスケジュールテーブル」が作成され、ジョブ要求受信部111が受け付けたジョブの実行スケジュールや実行時の条件等が記録される。本実施形態では、バッチ処理装置100にジョブが投入(入力)される際、当該ジョブの実行条件が指定されて入力される。このような実行条件は、ユーザにより入力可能な他、所定のプログラムの実行により自動的に入力される。また、各ジョブは、ユーザがバッチ処理装置100に対し入力する他、例えば、通信制御部120を介して外部装置などから入力される。理解を容易にするため、本実施形態では、図3(a)に示す、「ジョブA」、「ジョブB」、「ジョブC」、「ジョブD」の4つのジョブを対象として以下説明する。
図3(a)に示すように、「ジョブスケジュールテーブル」には、投入されたジョブ毎に、「実行優先度」、「実行指定」、「繰下実行」、「ジョブ要求時間」、「実行ジョブ種別」、「実行動作」、「終了予定時刻」、などの項目が用意される。
「実行優先度」には、当該ジョブを実行する際の優先度を示す情報が記録される。本実施形態では、優先度を1〜100の数値で表し、数値が大きいほど優先度が高いことを示すものとする。
「実行指定」には、当該ジョブの実行時期を規定する情報が記録される。当該ジョブを実行する時間帯が決められている場合には、「日付」と「時間」の項目に、それぞれ所望する日時情報が記録される。また、日時を指定せず、すぐに実行させたいジョブについては「即実行」が記録される。
「繰下実行」には、日時指定されたジョブが指定された時刻までに終了できない場合の動作を規定する情報が記録される。本実施形態では、指定時刻までに終了できないことが予想される場合に、当該ジョブを次回バッチ処理時に繰り下げて実行するか否かを示す情報を記録する。本実施形態では、繰下実行してもよいジョブには「許可」が指定される。一方、例えば、実行結果がすぐに必要となるジョブについては、繰下実行してしまうと、要求された時期に実行結果を得ることができない。したがって、このようなジョブについては「不許可」が指定される。
「ジョブ要求時間」には、当該ジョブについて所望される実行開始時刻を示す情報が記録される。
「実行ジョブ種別」には、当該ジョブの種別(例えば、「アプリケーション」など)を示す情報が記録される。
「実行動作」には、当該ジョブにより実行される処理を示す情報が記録される。本実施形態では、バッチ処理装置100により実行可能な処理が予め複数用意されており、当該ジョブが必要とする処理を示す情報が記録される。各処理毎の詳細は、属性情報格納部162に記録されている。
「終了予定時刻」には、各ジョブ毎に算出される終了予定時刻が記録される。終了予定時刻は、実行するジョブ数に応じて変動するので、算出される毎に更新される。
次に、属性情報格納部162について説明する。属性情報格納部162は、バッチ処理装置100が実行する各処理についての属性情報を格納する。属性情報格納部162に記録される情報の例を図3(b)に示す。
図示するように、属性情報格納部162には「動作情報テーブル」が作成され、各ジョブが要求する処理を実行する際の動作を規定する属性情報が記録されている。本実施形態では、理解を容易にするため、「処理1」、「処理2」、「処理3」、「処理4」の4つの処理を対象として以下説明する。
図3(b)に示すように、「動作情報テーブル」には、実行される処理毎に、「実行アプリケーション」、「CPU最大使用率」、「CPU使用時間」、「終了コード」、などの項目が用意されている。
「実行アプリケーション」には、当該処理で用いられるアプリケーションを指定する情報が記録されている。
「CPU最大使用率」は、当該アプリケーションを単独で実行した場合に割り当てられているCPU使用率を示す情報が記録されている。
「CPU使用時間」には、規定されているCPU最大使用率で当該アプリケーションを実行した場合のCPU使用時間、すなわち、当該処理の実行時間を示す情報が記録されている。
「終了コード」には、当該処理の終了時のステータスを示すコードが記録されている。終了コードは各処理毎に予め割り当てられているものであり、終了の形態毎にコードが用意されている。終了形態として、例えば、「正常終了」(「正常」)、「エラー終了」(「エラー」)、「繰下終了」(「繰下」)、などが想定される。ここで、「正常終了」は、当該処理が完了した場合をいい、「エラー終了」は、当該処理がエラーにより中止・中断等された場合をいい、「繰下終了」は、当該処理が繰り下げて実行されることになったために中止・中断された場合をいう。ここで、「繰下終了」には、実行前に算出する終了予定時刻が指定時間を超過するため実行しなかった場合、および、指定時間を超過した実行を中断して繰下実行とした場合などが含まれ、これらの違いをコードにより示すものとする。
次に実行結果格納部163について説明する。実行結果格納部163は、実行したバッチジョブの実行結果を示す情報を格納する。実行結果格納部163に格納される情報の例を図3(c)に示す。
図示するように、実行結果格納部163には「実行結果テーブル」が作成され、バッチ処理により実行されたジョブ毎の実行結果を示す情報が記録される。図示するように、「実行結果テーブル」には、実行したジョブ毎に、「開始日時」、「終了日時」、「終了コード」、「再設定ジョブ」、「処理結果」、などの項目が用意される。
「開始日時」には、当該ジョブの実行を開始した日時を示す情報が記録され、「終了日時」には、当該ジョブの実行が終了した日時を示す情報が記録される。
「終了コード」には、当該ジョブを終了したときのステータスを示す終了コードが記録される。
「再設定ジョブ」には、当該ジョブが繰下実行される場合に再設定されたジョブを指定する情報が記録される。すなわち、繰下実行の場合、当初設定されたスケジュールでは実行せずに翌営業日などに実行するため、当該ジョブの実行スケジュールや実行条件を再設定することとなる。「再設定ジョブ」にはこのように再設定されたジョブ名などを示す情報が記録される。
「処理結果」には、当該ジョブの実行により生成されたデータやファイルなどが格納される。
このような構成のバッチ処理装置100の動作を以下説明する。本実施形態では、バッチ処理装置100が所定のアプリケーション等を実行することにより、投入された複数のジョブをパラレル(並列)に実行することでバッチ処理をおこなう。バッチ処理装置100によりバッチジョブを実行するための「バッチジョブ実行処理」を図4に示すフローチャートを参照して説明する。本実施形態では、バッチ処理をおこなう時間帯が予め規定されているものとし、このような規定の時間帯となったことを契機に「バッチジョブ実行処理」が開始されるものとする。
処理が開始されると、ジョブ実行制御部113が、今回のバッチ処理の対象となるジョブがいずれであるかを特定する(ステップS1101)。ここでは、ジョブ要求受信部111が受け付けて、ジョブ格納部161の「ジョブスケジュールテーブル」に格納されたジョブを実行対象とする。本実施形態では、理解を容易にするため、図3(a)に示した、「ジョブA」、「ジョブB」、「ジョブC」、「ジョブD」の4つのジョブを実行対象とする。
実行対象となるジョブを特定すると、ジョブ実行制御部113は、これらのジョブの実行順序Pを決定する(ステップS1102)。ここでは、ジョブ格納部161の「ジョブスケジュールテーブル」を参照して実行順序を決定する。実行順序は、指定されている日時が現在日時を過ぎているもので、実行優先度がより高いジョブを優先する。また、実行優先度が同じ場合は、「ジョブ要求時間」の順とする。実行順序Pは、例えば、1〜pの数値で表し、1から順に実行していく。本実施形態では、「ジョブA」の実行順序が1となり、以下、「ジョブC」、「ジョブB」、「ジョブD」の順となる。すなわち、実行順序Pの範囲は1〜4となり、最終順序pは「4」となる。以下、この実行順序に従って処理を説明する。
実行順序を決定すると、ジョブ実行制御部113は、実行順序Pが「1」となるジョブ、すなわち、1番目に実行するジョブを指定する(ステップS1103)。本実施形態では「ジョブA」が該当する。
1番目に実行するジョブが指定されると、ジョブ実行時間算出部112により、ジョブの実行時間を算出するための「実行時間算出処理」が実行される(ステップS1200)。この「実行時間算出処理」を図5に示すフローチャートを参照して説明する。
ジョブ実行時間算出部112は、まず、現在処理しているジョブの総数をNとする(ステップS1201)。ここでは、1番目に実行するジョブを対象としているので、N=1となる。
次にジョブ実行時間算出部112は、当該ジョブを単独で実行した場合の実行時間である単独実行時間Δtを算出する(ステップS1202)。ここでは、属性情報格納部162の「動作情報テーブル」(図3(b))で規定されている「最大CPU使用率」と「CPU使用時間」に基づいて数1を演算することにより単独実行時間Δtを算出する。
ここでは、ジョブAを対象としているので、ジョブAの単独実行時間Δtは「25分」となる。
ジョブ実行時間算出部112は、現在の対象ジョブ数が複数であるか否かを判別する(ステップS1203)。ここでは、1番目に実行するジョブAのみを対象としているので、N=1となる(ステップS1203:No)。すなわち、現在のジョブ数が1であるので、ステップS1202で求めた単独実行時間Δtが、現時点でのジョブAの予想実行時間となる。この場合、ジョブ実行時間算出部112は、ステップS1209に進む。
ジョブ実行時間算出部112は、求めた実行時間に基づき、当該ジョブの終了時刻に換算し、終了予定時刻とする(ステップS1209)。ここで、ジョブAの指定開始時刻が8:00であるので、ジョブAの終了予定時刻は8:25となる(図8(a))。ジョブ実行制御部113は「ジョブスケジュールテーブル」にアクセスし、ジョブ実行時間算出部112が算出したジョブAの終了予定時刻を、ジョブAについての「終了予定時刻」に記録する。
終了時刻に換算すると、「実行時間算出処理」を終了し、「バッチジョブ実行処理」(図4)のフローに戻る。
ジョブ数が1の場合の「実行時間算出処理」が終了すると、ジョブ実行制御部113により「実行最適化処理」が実行される(ステップS1300)。「実行最適化処理」は、算出した終了時刻と、各ジョブ毎に指定されている実行条件とに基づいて、ジョブの実行を最適化するための処理である。この「実行最適化処理」を図6に示すフローチャートを参照して説明する。
まず、ジョブ実行制御部113は、実行順序がP番目のジョブに実行日時が指定されているか否かを判別する(ステップS1301)。ここでは、ジョブ格納部161の「ジョブスケジュールテーブル」(図3(a))を参照して判別する。現在、P番目のジョブはジョブAであるので、実行日時が指定されている(ステップS1301:Yes)。
実行日時が指定されている場合、ジョブ実行制御部113は、「実行時間算出処理」で求めた終了予定時刻に基づいて、当該ジョブが指定された時刻までに終了するか否かを判別する(ステップS1302)。ジョブAについての指定時間は、8:00〜9:00であり、算出された終了予定時刻は「8:25」である。したがって、指定時間内に終了することになる(ステップS1302:Yes)。
現在対象としているジョブが指定時間内に終了する場合、ジョブ実行制御部113は、当該ジョブを実行することにより、既に実行しているジョブに影響があるか否かを判別する(ステップS1303)。ここでは、1番目に実行するジョブAを対象としているので、これより前に実行しているジョブは存在しない。したがって、ジョブAの実行が、既実行ジョブには影響することはない(ステップS1303:No)。
この場合、「実行最適化処理」を終了し、「バッチジョブ実行処理」(図4)のフローに戻る。
「実行最適化処理」が終了すると、ジョブ実行部114により、当該ジョブ(ジョブA)の実行が開始される(ステップS1104)。
ジョブの実行が開始されると、ジョブ実行制御部113により、現在指定されている実行順序Pが最終であるか否かを判別する(ステップS1105)。ここでは、ジョブAの実行順序Pが「1」であり、最終の実行順序pは「4」であるので、次が存在する(ステップS1105:No)。この場合、ジョブ実行制御部113は、現在の実行順序Pを+1して次の実行順序を指定し(ステップS1106)、指定された順序のジョブについて「実行時間算出処理」を実行する(ステップS1200)。
すなわち、実行順序が2番目のジョブCについて処理される。「実行時間算出処理」が開始されると(図5参照)、現在のジョブ総数が特定される(ステップS1201)。この場合、既にジョブAが実行されているので、現在対象となっているジョブの総数は、ジョブAとジョブCの2つとなる(N=2)。
ジョブ実行時間算出部112は、ジョブAとジョブCそれぞれについての単独実行時間Δtを算出すると(ステップS1202)、現在のジョブ数が複数(N=2)であるので(ステップS1203:Yes)、各ジョブについての基準実行時間TEを算出する(ステップS1204)。
基準実行時間TEは、複数のジョブを並列に実行する場合に、当該ジョブ数で算出した各ジョブの実行時間をいう。すなわち、複数のジョブを並列に実行する場合、1つのCPUで複数のジョブを実行することになるので、各ジョブはそれぞれの最大CPU使用率では実行されない。本実施形態では、複数のジョブを並列に実行する場合、CPU使用率はすべてのジョブに均等に割り当てるものとする。したがって、ジョブ数がNの場合の各ジョブのCPU使用率は「100/N(%)」となる。
ここで、実行するジョブ数Nが増加すると、各ジョブ毎のCPU使用率は、既定のCPU最大使用率よりも低下する。そして、CPU使用率が低下すると、各ジョブに要するCPU使用時間は増大する。したがって、この増大率を示す係数(以下、「時間増分係数α」とする)を求め、各ジョブの単独実行時間Δtに乗算することで、基準実行時間TEが求めることができる。ここで、時間増分係数αは数2を演算することにより算出され、基準実行時間TEは数3を演算することにより算出される。
(数3)
TE=Δt×α
TE=Δt×α
ジョブAとジョブCの場合(N=2)の各基準実行時間TEを演算すると、図8(b)に示すように、ジョブAの基準実行時間TEaは「30分」となり、ジョブCの基準実行時間TEcは「20分」となる。
ここで、ジョブAが指定されたときのジョブAの基準実行時間TEaは「25分」であり、ジョブCが指定されたときに算出されたジョブAの基準実行時間TEa(30分)と異なる。これは、複数のジョブを並列に実行する場合、実行するジョブの数に応じて、各ジョブに割り当てられるCPU使用率が変化するためである。したがって、ジョブ実行時間算出部112は、指定されたジョブの数に応じて、各ジョブの実行時間を可変的に算出する。この結果、指定されたジョブの数に応じて、各ジョブ毎に算出される実行時間は随時変動することになる。
各ジョブについての基準実行時間TEを算出すると、ジョブ実行時間算出部112は、各基準実行時間TEのうち、最小となる最小実行時間TEminを特定する(ステップS1205)。ここでは、ジョブCの基準実行時間TEcが最小実行時間TEminとなる。
最小実行時間TEminを特定すると、ジョブ実行時間算出部112は、最小実行時間TEminとなるジョブがP番目のジョブ、すなわち、現在指定されているジョブであるか否かを判別する(ステップS1206)。ここでは、現在指定されているジョブがジョブCであり、ジョブCについての基準実行時間TEcが最小実行時間TEminである(ステップS1206:Yes)。
この場合、ジョブ実行時間算出部112は、(P−1)番目までのジョブについての残実行時間を算出する(ステップS1207)。すなわち、現在指定されているジョブCの基準実行時間TEcが最小実行時間TEminであるので、最小実行時間TEminをそのままジョブCの実行時間Tcとすることができる。
一方、既に実行されているジョブAについては、ジョブCの終了後も継続して実行される。この場合、図8(c)に示すように、ジョブCが終了するまでの20分間は、ジョブ数「2」(n=2)で処理されるが、ジョブCが終了した後は、ジョブAは単独で実行されることになる(n=1)。
したがって、ジョブ実行時間算出部112は、継続して実行するジョブの基準実行時間TEから、最小実行時間TEminを減算した暫定残実行時間TR1を算出する(図8(c))。ジョブ実行時間算出部112はさらに、暫定残実行時間TR1をそのときの実行ジョブ数に応じて最適化する。
すなわち、現在のジョブAの基準実行時間TEaは「30分」であり、最小実行時間TEminは「20分」なので、ジョブAについての暫定残実行時間TR1aは「10分」となる。ここで、暫定残実行時間TR1aは、ジョブ数が2の場合の実行時間なので、ジョブAを単独で実行した場合の実行時間に最適化する。これは、継続して実行するジョブについて、実行するジョブ数Nが減少するにしたがってCPU使用率が高くなるため、その分実行時間が短くなるためである。この時間短縮率を表す係数(以下、「時間短縮係数β」とする)を求め、暫定残実行時間TR1に乗じることで、修正した残実行時間(以下、「修正残時間TR2」とする)を求めることができる。ここで、算出対象のジョブ数をnとすると、時間短縮係数βは、n=1の場合は数4を演算することで求められ、n≧2の場合は数5を演算することで求められる。また、修正残時間TR2は数6を演算することで求められる。
(数6)
TR2=TR1×β
TR2=TR1×β
ここでは、ジョブC終了後は、ジョブAが単独で実行されることになる。したがって、算出対象のジョブ数nは1となるので、上記数4で時間短縮係数βを求めると、ジョブAの修正残時間TR2aは、図8(d)に示すように「8分」となる。
ステップS1207では、(P−1)番目までのジョブについての残実行時間を求めるが、ジョブAより以前から実行されているジョブはないので、残実行時間の算出はここで終了する。この場合、ジョブAについての実行時間Taは、最小実行時間TEminにジョブAの修正残時間TR2aを加算した「28分」となる。
P番目のジョブ(ジョブC)の実行時間と、(P−1)番目までのジョブ(ジョブA)の実行時間が求められると、ジョブ実行時間算出部112は、時刻換算して、各ジョブの終了予定時刻を求める(ステップS1209)。ジョブCの実行時間Tcは「20分」であり、ジョブAの実行時間Taは「28分」であるので、図8(d)に示すように、ジョブAの終了予定時刻は「8:28」、ジョブCの終了予定時刻は「8:20」となる。ジョブ実行制御部113は、「ジョブスケジュールテーブル」にアクセスし、ジョブCについての終了予定時刻を記録するとともに、ジョブAについての終了予定時刻を更新する。
終了予定時刻が算出されると「実行時間算出処理」を終了し、「バッチジョブ実行処理」(図4)のフローに戻る。ここでは、続いて「実行最適化処理」が実行される(ステップS1300)。
「実行最適化処理」(図6参照)ではまず、ジョブ実行制御部113が、P番目のジョブについて実行時間の指定があるか否かを判別する(ステップS1301)。現在、P番目のジョブはジョブCであるので、ジョブCについての実行条件を「ジョブスケジュールテーブル」(図3(a))から取得する。ジョブCについては「即実行」が指定されているので、実行時間の指定はない(ステップS1301:No)。この場合、ジョブCの終了時刻については考慮する必要がないので、指定時間内の終了判別(ステップS1302)をスキップする。
この場合、ジョブ実行制御部113は、ジョブCの実行により、既に実行されているジョブ(ジョブA)に影響するか否かを判別する(ステップS1303)。ここで、「既実行ジョブへの影響」とは、現在処理対象としているジョブを実行することにより、既に実行しているジョブが、指定時間内に終了しなくなることをいう。ジョブCが処理対象となっている場合、ステップS1208において、ジョブAの終了予定時刻が「8:28」となっており、ジョブAは、指定された時間内に終了することになる。したがって、ジョブCの実行がジョブAに影響することはない(ステップS1303:No)。
ここで、上述したように、指定されたジョブ数に応じて、各ジョブの実行時間が変動するが、これに伴い、各ジョブ毎に算出される終了予定時刻も随時変動する。ジョブ実行制御部113は、指定されたジョブ数に応じて変動する終了予定時刻に基づいて、既実行ジョブへの影響の有無を随時判別する。
ステップS1303で、ジョブCの実行がジョブAに影響することがないと判別された場合、ジョブCをジョブAと並列に実行しても問題がない(指定されたスケジュール通りに実行可能)ため「実行最適化処理」を終了して、「バッチジョブ実行処理」(図4)のフローに戻る。「バッチジョブ実行処理」では、ジョブ実行部114によりジョブCの実行が開始される(ステップS1104)。
ジョブCの次の実行順となるジョブ(ジョブB)が存在するので(ステップS1105:Yes)、次の実行順序を指定して(ステップS1106)、「実行時間算出処理」を実行する(ステップS1200)。すなわち、次に実行するジョブBを「P番目のジョブ」として処理をおこなう。
「実行時間算出処理」(図5参照)ではまず、ジョブ実行時間算出部112が、現在の対象ジョブ数Nを「3」(ジョブA、ジョブC、ジョブB)とし(ステップS1201)、各ジョブの単独実行時間Δtを算出する(ステップS1202)。
ジョブ数が複数なので(ステップS1203:Yes)、ジョブ実行時間算出部112は、ジョブ数が「3」(N=3)の場合の基準実行時間TEを算出する(ステップS1204)。この場合、図9(a)に示すように、ジョブAの基準実行時間TEaは「45分」となり、ジョブCの基準実行時間TEcは「30分」となり、ジョブBの基準実行時間TEbは「90分」となる。
ジョブ実行時間算出部112は、各ジョブの基準実行時間TEから最小実行時間TEminを特定する(ステップS1205)。ここでは、ジョブCの基準実行時間TEc(30分)が最小実行時間TEminに該当する。この場合、P番目のジョブであるジョブBではないので(ステップS1206:No)、ジョブ実行時間算出部112は、P番目のジョブまでの残実行時間の算出をおこなう(ステップS1208)。
ジョブCについては、最小実行時間TEminがそのままジョブCの実行時間Tcとなる。したがって、ジョブ実行時間算出部112は、ジョブC終了後のジョブAとジョブBについての残実行時間を算出する。ジョブ実行時間算出部112はまず、各ジョブの暫定残実行時間TR1を算出する。この場合、図9(b)に示すように、ジョブAの暫定残実行時間TR1aは「15分」となり、ジョブBの暫定残実行時間TR1bは「60分」となる。
さらに、ジョブ実行時間算出部112は、ジョブAとジョブBの2つのジョブが実行される場合の修正残時間TR2を求める。すなわち、n=2であるので、上記数5で算出した時間短縮係数βを用いて修正残時間TR2を求める。この結果、図9(c)に示すように、ジョブAの修正残時間TR2aは「10分」となり、ジョブBの修正残時間TR2bは「40分」となる。
対象ジョブが複数ある場合、ジョブ実行時間算出部112は、算出した修正残時間TR2のうち、最小となる最小実行時間TR2minを特定する。ここでは、ジョブAの修正残時間TR2が最小実行時間TR2minとなるので、最小実行時間TEmin(30分)に最小実行時間TR2min(10分)を加算した時間である「40分」をジョブAの実行時間Taとする。
ジョブBについては、ジョブAの終了後も継続して実行するので、ジョブ実行時間算出部112は、ジョブBについての残実行時間をさらに算出する。この場合、ジョブBの修正残時間TR2bから最小実行時間TR2minを減算した時間である「30分」を暫定実行時間TR1として、ジョブBの残実行時間を算出する。この場合、算出対象のジョブはジョブBのみであるので、n=1の場合の時間短縮係数βを用いて修正残時間TR2bを新たに算出する。この場合、ジョブBの修正残時間TR2bは「21分」となる。
ここでは、他のジョブがないため(n=1)、ジョブ実行時間算出部112は、最小実行時間TEmin(30分)に、最小実行時間TR2min(10分)と、修正残時間TR2b(21分)を加算した時間である「61分」をジョブBの実行時間Tbとする。
各ジョブの実行時間が求められると、ジョブ実行時間算出部112は、時刻換算して、各ジョブの終了予定時刻を求める(ステップS1209)。すなわち、ジョブAの実行時間Taは「40分」、ジョブCの実行時間Tcは「30分」、ジョブBの実行時間は「61分」であるので、図9(d)に示すように、ジョブAの終了予定時刻は8:40、ジョブCの終了予定時刻は8:30、ジョブBの終了予定時刻は9:01となる。ジョブ実行制御部113は、「ジョブスケジュールテーブル」にアクセスし、ジョブBについての終了予定時刻を記録するとともに、ジョブAとジョブCについての終了予定時刻を更新する。
終了予定時刻が算出されると「実行時間算出処理」を終了し、「バッチジョブ実行処理」(図4)のフローに戻る。ここでは、続いて「実行最適化処理」が実行される(ステップS1300)。
「実行最適化処理」(図6参照)では、ジョブ実行制御部113により、P番目のジョブ(ジョブB)に実行時間が指定されているか否かが判別される(ステップS1301)。「ジョブスケジュールテーブル」(図3(a))より、ジョブBには実行時間が指定されているので(ステップS1301:Yes)、ジョブ実行制御部113は、ジョブBが指定時間内に終了するか否かを判別する(ステップS1302)。
ジョブBの終了予定時刻は「9:01」であるので、指定された終了時刻である9:00を超過する(ステップS1302:No)。この場合、ジョブ実行制御部113は、ジョブB(P番目のジョブ)の繰下実行が許可されているか否かを判別する(ステップS1304)。
ここでは、「ジョブスケジュールテーブル」(図3(a))を参照し、当該ジョブにおける繰下実行が許可されているか否かを判別する。ジョブBについては、繰下実行が許可されていない(ステップS1304:No)。すなわち、ジョブBについては、終了時刻が指定時刻を超過してしまう場合であっても、そのまま実行を継続することが指示されている。
この場合、ジョブ実行制御部113は、ジョブBの実行により、既に実行しているジョブに影響するか否かを判別する(ステップS1306)。ここでは、ジョブBの実行以前に、ジョブAとジョブCが実行されているので、これらのジョブの終了時刻がジョブBの実行により指定時刻を超過してしまうか否かを判別する。
「実行時間算出処理」のステップS1208において、ジョブAの終了予定時刻が8:40となっているので、ジョブAは指定された時間内に終了することになる。また、ジョブCは「即実行」が指定されているので、終了時刻を考慮する必要がない。したがって、ジョブBを実行しても、ジョブAとジョブCには影響しないことになる(ステップS1306:No)。
この場合、ジョブA、ジョブC、ジョブBを並列に実行しても問題ないので、「実行最適化処理」を終了し、「バッチジョブ実行処理」(図4)のフローに戻る。
「バッチジョブ実行処理」では、ジョブ実行部114がジョブBの実行を開始する(ステップS1104)。次に実行するジョブ(ジョブD)が残っているので(ステップS1105:No)、次の実行順序となるジョブを指定し(ステップS1106)、当該ジョブ(ジョブD)を対象とした「実行時間算出処理」を実行する(ステップS1200)。
「実行時間算出処理」(図5参照)では、ジョブ数が「3」(N=3)の場合と同様の処理により、ジョブA、ジョブC、ジョブB、ジョブDが実行される場合(N=4)の各ジョブ終了予定時刻がそれぞれ求められる(ステップS1201〜S309)。ここでは、図9(e)に示すように、ジョブAの終了予定時刻が「8:55」、ジョブCの終了予定時刻が「8:40」、ジョブBの終了予定時刻が「9:15」、ジョブDの終了予定時刻が「9:15」となる。ジョブ実行制御部113は、「ジョブスケジュールテーブル」にアクセスし、各ジョブの終了予定時刻を記録・更新する。終了予定時刻が求められると、続いて「実行最適化処理」が実行される(ステップS1300)。
「実行最適化処理」(図6参照)では、ジョブDは実行時間が指定されているので(ステップS1301:Yes)、ジョブ実行制御部113は、ジョブDが指定された時間に終了するか否かを判別する(ステップS1302)。ジョブDの終了予定時刻が9:15であるので、指定された時刻を超過する(ステップS1302:No)。この場合、ジョブ実行制御部113は、ジョブDに繰下実行が許可されているか否かを判別する(ステップS1304)。
「ジョブスケジュールテーブル」(図3(a))より、ジョブDは繰下実行が許可されているので(ステップS1304:Yes)、ジョブ実行制御部113は、ジョブDを実行対象から除外し(ステップS1305)、繰下実行の実行スケジュールを設定する(ステップS1309)。ここでは、ジョブDの実行スケジュールを、次回バッチ処理時(例えば、翌日もしくは翌営業日の既定時間帯)に更新し、例えば、「ジョブD’」とする。これにより、ジョブDは当初の実行指定日時には実行されず、更新されたスケジュールにしたがって実行される。繰下実行のスケジュールが設定されると、「実行最適化処理」を終了し、「バッチジョブ実行処理」のフローに戻る。
ここで、対象となっているジョブに繰下実行が許可されていない場合であって、当該ジョブの実行により既実行ジョブに影響する場合(ステップS1304:No、S1306:Yes)の処理例を説明する。この場合、ジョブ実行制御部113は、影響を受ける既実行ジョブ(すなわち、対象となっているジョブを実行することにより、指定時間内に終了しない既実行ジョブ)に繰下実行が許可されているか否かを判別する(ステップS1307)。
該当する既実行ジョブに繰下実行が許可されている場合(ステップS1307:Yes)、ジョブ実行部114は当該ジョブの実行を中断し、現在の実行対象から除外し(ステップS1308)、当該ジョブを繰下実行する際の実行スケジュールを設定して(ステップS1309)、「実行最適化処理」を終了する。
一方、該当する既実行ジョブには繰下実行が許可されていない場合(ステップS1307:No)、当該ジョブについては指定された時間を超過しても実行を継続することになるので、そのまま「実行最適化処理」を終了する。
「実行最適化処理」が終了すると、「バッチジョブ実行処理」(図4)のステップS1104において、現在対象となっているジョブ(P番目のジョブ)の実行が開始されるが、「実行最適化処理」のステップS1305において、当該ジョブが実行対象から除外された場合は、この処理はスキップされる。ジョブDの場合、繰下実行により実行対象から除外されているため、ステップS1104でジョブDは実行されない。
本例では、ジョブA、ジョブC、ジョブB、ジョブDを対象としているので、ジョブD以降に処理対象となるジョブは存在しない(ステップS1105:Yes)。すなわち、対象となるすべてのジョブについて、実行開始もしくは繰越実行の設定がなされたので、ジョブ実行制御部113は、既定時間帯経過時の最適化をおこなうための「ジョブ終了処理」を実行する(ステップS1400)。この「ジョブ終了処理」を図7に示すフローチャートを参照して説明する。「ジョブ終了処理」は、現在時刻が既定時間帯の終了時刻(すなわち、9:00)となった時点で開始されるものとする。
処理が開始されると、ジョブ実行制御部113は、現時点で実行されているジョブがあるか否かを判別する(ステップS1401)。すなわち、既定時間帯を経過しても実行が継続されているジョブがあるか否かを判別する。
実行中のジョブがある場合(ステップS1401:Yes)、ジョブ実行制御部113は、当該ジョブの実行が通常処理に影響するか否かを判別する(ステップS1402)。すなわち、バッチ処理装置100は、既定時間帯の間はバッチ処理をおこなうが、その他の時間帯については通常用途に用いられるため、バッチ処理の延長が通常用途のための処理(通常処理)に影響する場合がある。したがって、ジョブ実行制御部113は、通常処理のためのプログラムの実行状態や、延長して実行されているバッチジョブのCPU使用率や終了予定時刻などに基づき、バッチジョブの延長実行が通常処理に影響するか否かを判別する。
ここで、「通常処理への影響」とは、例えば、バッチジョブを実行しているために、通常処理のためのプログラムを実行できなかったり、正常に動作できない場合などをいうものとする。なお、既定時間帯以外の時間帯においては、バッチジョブの実行よりも通常処理が優先されるものとする。
ステップS1402の判別では、例えば、「排他的な実行が要求されるプログラムが実行されたことによる割り込みが発生した場合」や、「現在実行しているバッチジョブの予定終了時刻が、予め実行開始時間がスケジュールされているプログラムの実行開始時刻以降となっている場合」、「現在実行しているバッチジョブのCPU使用率と、実行しようとするプログラムが必要とするCPU使用率の合計が100%を超える場合」、「現在実行しているバッチジョブによるメモリの使用により、実行しようとするプログラムの実行に必要なメモリ量を確保できない場合」などに「通常処理に影響する」と判別される。
バッチジョブの延長実行が通常処理に影響する場合(ステップS1402:Yes)、ジョブ実行部114は、現在実行しているジョブを中断し(ステップS1403)、当該ジョブを繰下実行対象とする(ステップS1404)。
ここでは、上記「バッチジョブ実行処理」により、既定時間帯を過ぎて実行してもよいジョブのみが現在実行されていることになるが、既定時間帯以外の時間帯では通常処理が優先されるので、繰下実行の許否にかかわらず、現在実行されているバッチジョブを中断する。そして、ジョブ実行制御部113は、中断したバッチジョブについて、次回のバッチ処理時に実行されるよう実行スケジュールを再設定する。
この場合、ジョブ実行部114は、実行結果格納部163の「実行結果テーブル」に、中断したジョブをキーとするレコードを作成し、必要な情報を記録する(ステップS1405)。ここでは、中断した時刻を「終了日時」に記録するとともに、当該ジョブに割り当てられている「繰下終了」を示す終了コードを「終了コード」に記録する。さらに、次回バッチ処理用に再設定したジョブ情報を「再設定ジョブ」に記録する。
なお、バッチジョブの延長実行が通常処理に影響しない場合(ステップS1402:No)は、全ジョブが終了するまで上記処理を繰り返す(ステップS1406:No)。
一方、既定時間帯経過後に実行しているバッチジョブがない場合(ステップS1401:No)、ジョブ実行部114は、既定時間帯に終了したバッチジョブについてのレコードを「実行結果テーブル」に作成し、必要な情報を記録する。
すなわち、「ジョブ終了処理」では、既定時間帯を経過しても実行されているジョブについて、中断すべきか否かが判別され、中断する場合には、当該ジョブを再度実行するためのスケジュールが設定されることになる。
実行対象となっていたバッチジョブのすべてが終了すると(ステップS1406:Yes)、「ジョブ終了処理」を終了して「バッチジョブ実行処理」(図4)のフローに戻り、バッチ処理にかかる全処理を終了する。
以上説明したように、上記実施形態にかかるバッチ処理装置100によれば、複数のジョブを並列に実行するバッチ処理において、バッチジョブを優先順に順次実行する過程において、既定の時間帯に処理が終了するか否かを随時判別する。そして、既定時間帯に終了しないことが予想されるジョブについては、繰下実行の可否を判別し、繰下実行してもよいジョブについては次回のバッチ処理時に繰り下げるよう実行スケジュールを再設定する。これにより、繰下実行することができないジョブの実行が優先され、できるだけ既定時間帯内でバッチ処理が終了できるよう最適化することができる。
また、既定時間帯の経過後にバッチジョブが延長実行されている場合においては、通常処理に対する影響によってバッチジョブの中断要否を判別し、通常処理に影響がでる場合には、バッチジョブの実行を中断し、繰下実行するようバッチジョブの実行スケジュールを再設定する。これにより、通常処理に影響しない範囲で、可能な限りバッチジョブを実行させることができる。
(実施形態2)
上記実施形態1では、複数のジョブを並列(パラレル)に実行する場合を例示したが、複数のジョブを直列(シリアル)に順次実行する場合にも本発明を適用することができる。例えば、印刷動作のバッチ処理をおこなう場合において、印刷を実行する装置(プリンタ)とシリアル接続されている場合、印刷データはシリアルにプリンタに送られることになる。このような場合を実施形態2として以下説明する。本実施形態では、図10に示すように、バッチ処理装置200と、バッチ処理装置200に接続されたプリンタ300によって処理をおこなう。
上記実施形態1では、複数のジョブを並列(パラレル)に実行する場合を例示したが、複数のジョブを直列(シリアル)に順次実行する場合にも本発明を適用することができる。例えば、印刷動作のバッチ処理をおこなう場合において、印刷を実行する装置(プリンタ)とシリアル接続されている場合、印刷データはシリアルにプリンタに送られることになる。このような場合を実施形態2として以下説明する。本実施形態では、図10に示すように、バッチ処理装置200と、バッチ処理装置200に接続されたプリンタ300によって処理をおこなう。
バッチ処理装置200は、例えば、ワークステーションやパーソナルコンピュータなどの情報処理であり、プリンタ300に印刷ジョブを送信して、バッチ処理による印刷を実行する。プリンタ300に送出される印刷ジョブはバッチ処理装置200によって作成されたり、例えば、LANなどの通信ネットワーク等を介してバッチ処理装置200に接続されている他の情報処理装置(例えば、パーソナルコンピュータなど)で作成される。他の装置で作成された印刷ジョブは、LANなどを介してバッチ処理装置200に入力される。この場合、バッチ処理装置200は、いわゆるプリントサーバとして機能することになる。
このようなバッチ処理装置200の構成を図11を参照して説明する。図11は、バッチ処理装置200の構成を示すブロック図である。
図示するように、バッチ処理装置200は、制御部210と、通信制御部220と、入力制御部230(入力装置23)と、出力制御部240(出力装置24)と、プログラム格納部250と、記憶部260と、から構成される。これらは、実施形態1におけるバッチ処理装置100の制御部110と、通信制御部120と、入力制御部130(入力装置13)と、出力制御部140(出力装置14)と、プログラム格納部150と、記憶部160のそれぞれと同様の構成である。
なお、本実施形態にかかる通信制御部220は、少なくとも、プリンタ300に印刷ジョブをシリアル転送するための構成を有しているものとし、所定のケーブル等を介してバッチ処理装置200とプリンタ300とを接続する。また、通信制御部220は、プリンタ300との通信の他、他の情報処理装置とバッチ処理装置200とを接続するための構成を有していてもよい。この場合、通信制御部220は、例えば、LANやWANを介してバッチ処理装置200と他の情報処理装置とを接続する。
本実施形態では、プログラム格納部250に格納されている動作プログラムを実行することで、制御部210は、図12に示すような構成として機能する。図示するように、制御部210は、ジョブ要求受信部211、実行時間算出部212、実行量算出部213、ジョブ実行制御部214、ジョブ実行部215、として機能する。
ジョブ要求受信部211は、バッチ処理対象となる印刷ジョブの入力を受け付ける。印刷ジョブは、例えば、バッチ処理装置200のユーザが入力装置23などを操作することにより入力される他、通信制御部220を介して外部装置等から入力される。
実行時間算出部212は、印刷ジョブのバッチ処理にかかる実行時間を算出する。本実施形態では、プリンタ300への印刷ジョブの転送が完了するまでの時間や、実行した印刷ジョブについての印刷が完了するまでの時間などを算出するとともに、これらに基づいて、転送が完了する時刻(予定転送完了時刻)などを算出する。
実行量算出部213は、印刷ジョブのバッチ処理による実行量を算出する。本実施形態では、プリンタ300に転送可能な印刷データ量に応じた印刷量(ページ数)などを算出する。
ジョブ実行制御部214は、各印刷ジョブ毎に設定されている実行条件や算出された転送時間などに基づいて、印刷ジョブ毎の実行可否の判定や、指定された時間内に終了できない場合の繰下実行の設定などをおこなう。
ジョブ実行部215は、通信制御部220を制御し、実行対象となった印刷ジョブをプリンタ300に送信し、プリンタ300に印刷を実行させる。
本実施の形態では、制御部210がプログラム格納部250に格納されているプログラムを実行することにより、いわゆるソフトウェア処理で上記機能を実現するが、これらの機能に特化した回路(ASIC)などをバッチ処理装置200に構成することで、いわゆるハードウェア処理によって上記機能が実現されてもよい。
また、本実施形態では、プログラム格納部250に格納されている動作プログラムを実行することにより、制御部210が記憶部260を制御する。これにより、記憶部260は、図12に示すような、ジョブ格納部261、属性情報格納部262、実行結果格納部263、として機能する。
ジョブ格納部261は、ジョブ要求受信部211が受け付けた印刷ジョブを格納するための記憶領域である。ジョブ格納部261に記録される情報の例を図13に示す。
図示するように、ジョブ格納部261には「印刷ジョブスケジュールテーブル」が作成され、ジョブ要求受信部211が受け付けた印刷ジョブの実行スケジュールや実行時の条件等が記録される。本実施形態では、バッチ処理装置200に印刷ジョブが投入(入力)される際、当該印刷ジョブの実行条件が指定されて入力される。このような実行条件は、ユーザにより入力可能な他、所定のプログラムの実行により自動的に入力される。また、各印刷ジョブは、ユーザがバッチ処理装置100に対し入力する他、例えば、通信制御部220を介して外部装置などから入力される。理解を容易にするため、本実施形態では、図13に示した、「ジョブX」、「ジョブY」、「ジョブZ」の3つの印刷ジョブを対象として以下説明する。
図13に示すように、「印刷ジョブスケジュールテーブル」には、投入された印刷ジョブ毎に、「実行優先度」、「実行指定」、「繰下実行」、「ジョブ要求時間」、「実行ジョブ種別」、「出力先」、「印刷データ」、「データ量」、「ページ数」、「転送完了予定時刻」、「印刷完了予定時刻」、などの項目が用意される。
「実行優先度」には、各印刷ジョブ毎に、実行する優先度を示す情報が記録される。本実施形態では、優先度を1〜100の数値で表し、数値が大きいほど優先度が高いことを示すものとする。
「実行指定」には、各印刷ジョブ毎の実行時期を規定する情報が記録される。当該印刷ジョブを実行する時間帯が決められている場合には、「日付」と「時間」の項目に、それぞれ所望する日時情報が記録される。また、日時を指定せず、すぐに実行させたい印刷ジョブについては「即実行」が記録される。
「繰下実行」には、日時指定された印刷ジョブについて、バッチ処理装置200の処理が指定された時刻までに完了できない場合の動作を規定する情報が記録される。本実施形態では、バッチ処理装置200の処理は印刷ジョブをプリンタ300に転送するまでをいう。したがって、「バッチ処理装置200の処理が指定時刻までに完了できない」とは、当該印刷ジョブのプリンタ300への転送が指定時刻までに完了しないことをいう。
本実施形態では、指定時刻までに印刷ジョブの転送が完了しないと予想される場合には、指定時刻までに転送可能な分の印刷データを転送し、転送できない分の印刷データを印刷するための印刷ジョブの実行を次回バッチ処理時に繰り下げる。このような繰下実行をしてもよい印刷ジョブには「許可」が指定される。一方、例えば、印刷結果がすぐに必要となる印刷ジョブについては、繰下実行してしまうと、要求された時期にすべてのページを得ることができない。したがって、このような印刷ジョブについては「不許可」が指定される。
「ジョブ要求時間」には、当該印刷ジョブについて所望される実行開始時刻を示す情報が記録される。
「実行ジョブ種別」には、当該ジョブの種別を示す情報が記録される。本実施形態では、印刷ジョブを対象としているので、例えば、「印刷」が記録される。
「出力先」には、当該印刷ジョブの出力先となるプリンタが指定される。本実施形態では、バッチ処理装置200の印刷ジョブの出力先がプリンタ300であるので、プリンタ300を特定するための情報や印刷ジョブをプリンタ300に送信するために規定される情報が記録される。ここでは、例えば、プリンタ300に割り当てられている識別情報が記録される。プリンタ300の識別情報として、例えば、プリンタ300に割り当てられているプリンタ名(例えば「プリンタ1」)などが記録される。
「印刷データ」には、当該印刷ジョブが印刷対象としているデータ(印刷データ)を指定する情報が記録される。例えば、当該印刷データのファイル名や、格納場所を示すパスなどが記録される。印刷データは、例えば、文書作成ソフトウェア等で作成された文書ファイルなどである。
「データ量」には、当該印刷ジョブが印刷対象としている印刷データのデータ量が記録される。また、「対象ページ」には、印刷対象となるページ範囲を示す情報が記録される。すなわち、印刷対象となるページ数を示す。ここで、本実施形態では、理解を容易にするため、1ページ分のデータ量を「100KB」とする。
「予定転送完了時刻」には、実行時間算出部212が算出する、予定転送完了時刻が記録され、「予定印刷完了時刻」には、実行時間算出部212が算出する予定印刷完了時刻が記録される。
次に、属性情報格納部262について説明する。属性情報格納部262は、バッチ処理装置200とプリンタ300による印刷動作について規定されている情報が記録される。属性情報格納部262に記録される情報の例を図14(a)および図14(b)に示す。
図14(a)は、属性情報格納部262に作成される「性能情報テーブル」の例を示す図である。この「性能情報テーブル」には、バッチ処理装置200とプリンタ300の協働による、バッチ処理による印刷動作の性能に関する情報が記録される。すなわち、図示するように、「性能情報テーブル」には、プリンタの性能に関する「プリンタ性能」に関する情報と、バッチ処理装置200のスプール処理性能に関する「スプール性能」に関する情報が記録される。
「プリンタ性能」に関連する情報について、図14(a)を参照して説明する。図示するように、項目「プリンタ性能」には、プリンタ300(プリンタ1)について、「転送速度」、「印刷速度」、「受信バッファ容量」、「通信情報」、などの項目が用意される。
「転送速度」には、バッチ処理装置200からプリンタ300にデータ転送する際の転送速度が記録される。ここでは、1秒間に転送可能なデータ量により転送速度を示す。本実施形態では、理解を容易にするため転送速度を「10KB/秒」とする。すなわち、10秒間で1ページ分のデータが転送可能ということになる。
「印刷速度」には、プリンタ300の印刷速度が記録される。本実施形態では、1分間に印刷可能なページ数により印刷速度を示す。本実施形態では、印刷速度を「6ページ/秒」とする。
「受信バッファ容量」には、プリンタ300が有する受信バッファの容量が記録される。本実施形態では、受信バッファ容量を「500KB」とする。受信バッファについての詳細は後述する。
「通信情報」には、印刷ジョブを通信によりプリンタ300に転送させるのに必要な情報が記録される。例えば、バッチ処理装置200とプリンタ300とが、シリアル接続により直接接続されている場合には、プリンタ300と接続しているポートを示すポート名などが記録される。また、バッチ処理装置200とプリンタ300とが、例えば、TCP/IP(Transmission Control Protocol/Internet Protocol)に基づくLANなどを介して接続されている場合には、プリンタ300に割り当てられているIPアドレスなどが記録される。
次に、「性能情報テーブル」に記録される「スプール性能」に関する情報について説明する。ここで、本実施形態にかかるバッチ処理装置200は、印刷ジョブを実行する際に、例えば、記憶部260を構成するRAM(Random Access Memory)やハードディスク装置などの記憶領域を用いて印刷ジョブをスプールしてからプリンタ300に送信するものである。
図14(a)に示す項目「スプール性能」には、バッチ処理装置200がスプール処理をおこなう際の能力を示す情報が記録される。図示するように、「スプール性能テーブル」には、バッチ処理装置200が印刷ジョブをスプールする際の「最大CPU使用率」と「スプール速度」を示す情報などが格納されている。
「最大CPU使用率」には、バッチ処理装置200のCPUがスプール処理のために使用できる使用率(CPU使用率)の最大値が記録される。本実施形態では、バッチ処理装置200によるスプール処理時の最大CPU使用率を「50%」とする。
「スプール速度」には、バッチ処理装置200が、CPU使用率に制限がない状態(すなわち、CPU使用率が100%)で印刷データをスプールする際の処理速度が記録される。本実施形態では、1ページ分の印刷データのスプール処理に要するCPU使用時間によりスプール速度を示す。本実施形態では、スプール速度を「0.5秒/ページ」とする。
次に実行結果格納部263について説明する。実行結果格納部263は、実行した印刷ジョブの実行結果を示す情報を格納する。実行結果格納部263に格納される情報の例を図14(b)に示す。
図示するように、実行結果格納部263には「実行結果テーブル」が作成され、バッチ処理により実行された印刷ジョブ毎の実行結果を示す情報が記録される。図示するように、「実行結果テーブル」には、実行した印刷ジョブ毎に、「開始日時」、「終了日時」、「指定ページ」、「転送済ページ」、「再設定ジョブ」、などの項目が用意される。
「開始日時」には、当該印刷ジョブのプリンタ300への送信開始日時を示す情報が記録され、「終了日時」には、当該印刷ジョブの実行により印刷ジョブの転送が終了した日時を示す情報が記録される。
「指定ページ」には、当該印刷ジョブが指定した印刷対象のページ範囲を示す情報が記録される。
「転送済ページ」には、当該印刷ジョブが対象とする印刷データの総ページ数のうち、プリンタ300へ転送が完了した印刷データのページ範囲を示す情報が記録される。
「再設定ジョブ」には、転送が未完了の印刷データの印刷を繰下実行する場合に、繰下実行用に再設定した印刷ジョブを指定する情報が記録される。
次にプリンタ300について説明する。プリンタ300は、印刷対象となっているデータに基づいて、用紙等に画像を形成して印刷するページプリンタなどであり、例えば、シリアル接続によりバッチ処理装置200と接続される。プリンタ300は、バッチ処理装置200からの指示により印刷動作を実行するものであり、バッチ処理装置200から転送される印刷ジョブにしたがって、順次印刷をおこなう。
また、プリンタ300は、バッチ処理装置200から転送された印刷ジョブをバッファするための「受信バッファ」を有しているものとする。この受信バッファは、バッチ処理装置200から受信した印刷ジョブをバッファすることで、バッチ処理装置200を転送動作から早期に解放する。本実施形態では、受信バッファの容量を「500KB」とする。すなわち、5ページ分のデータをバッファすることができる。本実施形態では、受信バッファにより5ページ分の転送時間が吸収されるものとし、バッファした印刷データの印刷時間により生じる転送時間の誤差については考慮しないもとのする。
このような構成のバッチ処理装置200およびプリンタ300の動作を以下説明する。本実施形態では、バッチ処理により印刷を実行するが、実施形態1と同様、バッチ処理をおこなう時間帯(既定時間帯)が予め規定されているものとする。本実施形態における「既定時間帯」は、例えば、8:00〜9:00とする。
バッチ処理装置200がプリンタ300に印刷ジョブを送出するまでの動作である「印刷ジョブ実行処理」を図15に示すフローチャートを参照して説明する。この「印刷ジョブ実行処理」は、現在時刻が既定時間帯の開始時刻となったことを契機に開始されるものとする。なお、バッチ処理装置200は、既定時間帯では印刷ジョブのバッチ処理をおこなうが、その他の時間帯では、他の用途で用いられるものとする。
処理が開始されると、ジョブ実行制御部214が、今回のバッチ処理の対象となる印刷ジョブがいずれであるかを特定する(ステップS2101)。ここでは、ジョブ要求受信部211が受け付けて、ジョブ格納部261の「印刷ジョブスケジュールテーブル」に格納された印刷ジョブを実行対象とする。本実施形態では、理解を容易にするため、図13に示した、「ジョブX」、「ジョブY」、「ジョブZ」の3つのジョブを実行対象とする。
実行対象となる印刷ジョブを特定すると、ジョブ実行制御部214は、これらの印刷ジョブの実行順序P(1〜p)を決定する(ステップS2102)。実行順序の決定方法は、実施形態1と同様とする。ジョブX、ジョブY、ジョブZの場合、「ジョブX」の実行順序が1となり、以下、「ジョブZ」、「ジョブY」の順となる。すなわち、実行順序Pの範囲は1〜3となり、最終順序pは「3」となる。以下、この実行順序に従って処理を説明する。
実行順序を決定すると、ジョブ実行制御部214は、実行順序Pが「1」となる印刷ジョブ、すなわち、1番目に実行する印刷ジョブを指定する(ステップS2103)。本実施形態では「ジョブX」が該当する。
1番目に実行する印刷ジョブが指定されると、実行時間算出部212により、当該ジョブにかかるバッチ処理装置200の処理時間を算出するための「処理時間算出処理」が実行される(ステップS2200)。この「処理時間算出処理」を図16に示すフローチャートを参照して説明する。
実行時間算出部212はまず、バッチ処理装置200による当該印刷ジョブのスプール処理にかかる処理時間(スプール処理時間)を算出する(ステップS2201)。ここで、本実施形態では、対象となる印刷データを、例えば、記憶部260を構成するハードディスクなどにスプールして処理することで、バッチ処理装置200のCPUを効率的に使用する。なお、本実施形態でのスプール処理は、1ページ目の印刷データのスプール後、印刷データの転送を開始するものとする。
ここでは、「性能情報テーブル」(図14(a))の「スプール性能」に記録されている情報に基づき、印刷データのページ数に応じたスプール処理時間が算出される。ここで、バッチ処理装置200が1ページ分の印刷データをスプールするのに要する時間(以下、「単位スプール時間Δs」とする)は、スプール速度と最大CPU使用率により数7を演算することで求められる。
本実施形態では、スプール速度が0.5秒/ページであり、最大CPU使用率が50%であるので、単位スプール時間Δsは「1秒」となる。なお、このような単位スプール時間を「性能情報テーブル」に予め記録しておいてもよい。
ここで、ジョブXの総ページ数は「100ページ」であるので、単位スプール時間Δsをページ数で乗じることで、ジョブXの印刷データのスプール処理に要する時間を求めることができる。この場合、ジョブXについてのスプール処理時間は、図19(a)に示すように、「100秒」ということになる。
次に、実行時間算出部212は、当該印刷ジョブのプリンタ300への転送にかかる転送時間を算出する(ステップS2202)。本実施形態では、1ページ分のデータ量が100KBであり、転送速度が10KB/秒であるので、1ページ分のデータの転送時間(単位転送時間)は「10秒」となる。したがって、単位転送時間に総ページ数を乗じることで、全ページ分の転送時間が求められることになるが、本実施形態では、プリンタ300の受信バッファの効果により、5ページ分の転送時間が吸収される。したがって、総ページ数から5ページ分差し引いたページ数に基づいて転送時間を算出する。
ジョブXの総ページ数は100ページであるので、95ページ分の転送時間を算出する。1ページ当たりの転送時間が10秒なので、ジョブXについての転送時間は、図19(a)に示すように、「950秒」となる。
実行時間算出部212が転送時間を算出すると、ジョブ実行制御部214は、現在対象としているP番目の印刷ジョブが、2番目以降の実行順序(P≧2)であるか否かを判別する(ステップS2203)。
ジョブXは、実行順序が1番目の印刷ジョブ(P=1)であるから該当しない(ステップS2203:No)。この場合、当該印刷ジョブの実行開始時刻に基づいた予定転送完了時刻を算出をおこなう(ステップS2205)。ここでは、バッチ処理装置200が、当該印刷ジョブについての処理開始から、プリンタ300への印刷データの転送が完了するまでの時間を算出することで、予定転送完了時刻を求める。本実施形態では、スプール処理をおこなうので、各印刷ジョブに関するバッチ処理装置200の処理の起点は、スプール処理の開始時点となる。したがって、スプール処理を開始してから、印刷データの転送が完了するまでの時間を算出する。
本実施形態では、1ページ目がスプールされると転送が開始される。1ページ分のスプール処理時間は1秒であるので、スプール開始の1秒後に印刷データの転送が開始されることになる。したがって、ステップS2202で求めた転送時間に+1秒した時間が、スプールを開始してから転送が完了するまでの時間となる。印刷データの転送完了後の印刷動作はプリンタ300の動作であるので、印刷データのバッチ処理に関してバッチ処理装置200が行う処理は、スプール処理と転送処理となる。したがって、スプール開始から印刷データの転送が完了するまでの時間を、以下「装置処理時間」とする。
ジョブXの場合、算出した転送時間が「950秒」であるので、図19(a)に示すように、ジョブXについての装置処理時間は「951秒」となる。ここで、ジョブXについて指定されている実行時間帯が「8:00〜9:00」となっているので、バッチ処理装置200は、8:00にジョブXの処理を開始することになる。したがって、ジョブXの予定転送完了時刻は、図20(a)に示すように、8:00から951秒後の「8:15:51」となる。ジョブ実行制御部214は、実行時間算出部212が算出した予定転送完了時刻を、「印刷ジョブスケジュールテーブル」(図13)のジョブXのレコードに記録する。
予定転送完了時刻を算出すると、「処理時間算出処理」を終了し、「印刷ジョブ実行処理」(図15)のフローに戻る。
「印刷ジョブ実行処理」では、続いて、当該印刷ジョブの実行スケジュールを最適化するための「ジョブスケジュール最適化処理」が実行される(ステップS2300)。「ジョブスケジュール最適化処理」を図17に示すフローチャートを参照して説明する。
ジョブ実行制御部214は、「印刷ジョブスケジュールテーブル」(図13)にアクセスし、現在対象となっているP番目の印刷ジョブ(ジョブX)に、実行時間帯が指定されているか否かを判別する(ステップS2301)。
ジョブXについては、実行時間帯が指定されているので(ステップS2301:Yes)、ジョブ実行制御部214は、当該印刷ジョブ(ジョブX)について算出した予定転送完了時刻が指定された実行時間帯を超過するか否かを判別する(ステップS2302)。ここでは、「処理時間算出処理」(図16)のステップS2203で算出した予定転送完了時刻に基づいて判別する。
ジョブXについて指定されている実行時間帯は「8:00〜9:00」であり、ステップS2203で算出したジョブXの予定転送完了時刻は「8:15:51」であるので、ジョブXの転送は、指定された実行時間帯を超過せずに完了することになる(ステップS2202:No)。
この場合、ジョブ実行制御部214は、「ジョブスケジュール最適化処理」を終了し、「印刷ジョブ実行処理」(図15)のフローに戻る。
「印刷ジョブ実行処理」では、ジョブ実行部215がP番目の印刷ジョブの実行を開始する(ステップS2104)。すなわち、ジョブXのスプール処理を開始する。そして、印刷データの1ページ目がスプールされると、ジョブ実行部215は、印刷データの転送を開始する。実行を開始すると、ジョブ実行部215は、開始日時を「実行結果テーブル」(図14(b))の「開始日時」に記録する。
P番目の印刷ジョブの実行を開始すると、ジョブ実行制御部214は、次の実行順序があるか否かを判別する(ステップS2105)。本実施形態では、p=3であり、ジョブXの実行順序は1であるので、次の実行順序が存在する(ステップS2105:No)。
この場合、ジョブ実行制御部214は、現在の実行順序Pを+1し(ステップS2106)、新たな実行順序Pに対応する印刷ジョブ(すなわち、ジョブZ)を対象として、「処理時間算出処理」を実行する(ステップS2200)。
ここでは、ジョブXの場合と同様に、実行時間算出部212が、ジョブZについてのスプール処理時間と転送時間を算出する(ステップS2201、S2202)。
次にジョブ実行制御部214は、現在対象としている印刷ジョブの実行順序が2番目以降(P≧2)であるか否かを判別する(ステップS2203)。ジョブZの実行順序は「2」であるので該当する(ステップS2203:Yes)。
この場合、ジョブ実行制御部214は、「印刷ジョブスケジュールテーブル」にアクセスし、(P−1)番目の印刷ジョブについて算出された予定転送完了時刻を取得する(ステップS2204)。
そして、実行時間算出部212は、(P−1)番目の印刷ジョブの予定転送完了時刻を起点として、P番目の印刷ジョブの予定転送完了時刻を算出する(ステップS2205)。すなわち、バッチ処理装置200からプリンタ300への印刷データの転送はシリアルにおこなわれるので、前の印刷データについての処理が完了しなければ、バッチ処理装置200は次の印刷データを処理することができない。したがって、1つ前の印刷ジョブ(すなわち、(P−1)番目の印刷ジョブ)についての転送完了後に次の印刷ジョブ(すなわち、P番目の印刷ジョブ)の処理を開始した場合の転送完了時刻を算出する。
ここで、ジョブZについての対象ページ数は「50ページ」であるため、ジョブZについてのスプール処理時間は、図19(b)に示すように、「50秒」となる。また、45ページ分の転送時間は「450秒」となる。したがって、ジョブZについての装置処理時間は「451秒」となる。ここで、ジョブXの予定転送完了時刻は「8:15:51」なので、ジョブZの予定転送完了時刻は、図20(b)に示すように、8:15:51から451秒後の「8:23:22」となる。
実行時間算出部212が予定転送完了時刻を算出すると、ジョブ実行制御部214は、算出された予定転送完了時刻を「印刷ジョブスケジュールテーブル」のジョブZのレコードに記録する。
ジョブZについての予定転送完了時刻が算出されると、「処理時間算出処理」を終了し、「印刷ジョブ実行処理」(図15)のフローに戻る。ここでは、続いて、ジョブZについての「ジョブスケジュール最適化処理」が実行される(ステップS2300)。
「ジョブスケジュール最適化処理」(図17参照)では、ジョブ実行制御部214が、P番目のジョブ(ジョブZ)に実行時間帯の指定があるか否かを判別する(ステップS2301)。「印刷ジョブスケジュールテーブル」(図13)より、ジョブZについては「即実行」が指定されているので、実行時間帯の指定はない(ステップS2301:No)。すなわち、終了時刻を考慮する必要がないので、「ジョブスケジュール最適化処理」を終了し、「印刷ジョブ実行処理」(図15)のフローに戻る。
この場合、ジョブ実行部215が、P番目の印刷ジョブ(ジョブZ)の実行を開始する。ここでは、(P−1)番目の印刷ジョブであるジョブXの印刷データの転送完了後に、ジョブZのスプール処理が開始されることになる。印刷ジョブの実行を開始すると、ジョブ実行部215は、開始日時を「実行結果テーブル」(図14(b))の「開始日時」に記録する。
P番目の印刷ジョブが実行開始されると、ジョブ実行制御部214は、次の実行順序があるか否かを判別する(ステップS2105)。ジョブZの実行順序Pは2であり、p=3であるので、次の実行順序が存在する(ステップS2105:No)。したがって、ジョブ実行制御部214は、実行順序Pを+1し(ステップS2106)、P番目の印刷ジョブ(すなわち、ジョブY)について「処理時間算出処理」を実行する(ステップS2200)。
ここでは、上記ジョブZの場合と同様、2番目以降の印刷ジョブについての処理であるので、実行時間算出部212は、(P−1)番目の印刷ジョブ(ジョブZ)の予定転送完了時刻を起点として、P番目の印刷ジョブ(ジョブY)の予定転送完了時刻を算出する(ステップS2201、S2202、S2203:Yes、S2204、S2205)。
ジョブYの対象ページ数は「1000ページ」であるので、ジョブYのスプール処理時間は、図19(c)に示すように、「1000秒」となる。また、995ページ分の転送時間は「9950秒」となる。したがって、ジョブYについてのバッチ処理装置200の装置処理時間は「9951秒」となる。そして、(P−1)番目のジョブZの予定転送完了時刻が「8:23:22」なので、ジョブYの予定転送完了時刻は、図20(c)に示すように、8:23:26から9951秒後の「11:09:13」となる。
ジョブYについての予定転送完了時刻が算出されると、ジョブ実行制御部214は、算出された予定転送完了時刻を「印刷ジョブスケジュールテーブル」(図13)のジョブYのレコードに記録し、「処理時間算出処理」を終了する。
続いて「ジョブスケジュール最適化処理」が実行される(図15、ステップS2300)。「ジョブスケジュール最適化処理」(図17参照)では、ジョブ実行制御部214が、ジョブYに実行時間帯が指定されているか否かを判別する(ステップS2301)。「印刷ジョブスケジュールテーブル」(図13)より、ジョブYについては、実行時間帯が指定されているので(ステップS2301:Yes)、ジョブ実行制御部214はさらに、ジョブYの予定転送完了時刻が指定されている終了時刻を超過するか否かを判別する(ステップS2302)。
ジョブYに指定されている終了時刻は「9:00」であり、ジョブYについて算出された予定転送完了時刻は「11:09:13」であるので、ジョブYの予定転送完了時刻は指定された終了時刻を超過する(ステップS2302:Yes)。
この場合、ジョブ実行制御部214は、当該印刷ジョブについて繰下実行が許可されているか否かを判別する(ステップS2303)。「印刷ジョブスケジュールテーブル」(図13)より、ジョブYは繰下実行が許可されている(ステップS2303:Yes)。
この場合、実行量算出部213は、指定されている終了時刻までに転送可能なページ数を算出する(ステップS2304)。ここでは、指定終了時刻が9:00であるので、8:59:59までに転送可能なページ数を算出することとする。この場合、(P−1)番目の印刷ジョブ(ジョブZ)についてのバッチ処理装置200の処理が終了した時点から8:59:59までの間に転送可能なページ数を算出する。
ジョブZの予定転送完了時刻が「8:23:22」であるので、8:23:22から8:59:59までの時間は「36分37秒間」となる。ここで、8:23:22からジョブZのスプール処理が開始されるので、スプール開始と転送開始の時間差である1秒を除外した「36分36秒間(2196秒間)」で転送可能なページ数を算出する。本実施形態では、転送速度が10KB/秒なので、2196秒間では、21960KB分のデータを転送できる。1ページ分のデータ量が100KBなので、2196秒間に転送可能なページ数は「219ページ」となる。ここで、プリンタ300の受信バッファの効果により、5ページ分の転送時間を無視できるので、5ページ分加算した「224ページ」分を転送できることになる。
転送可能ページ数が算出されると、ジョブ実行制御部214は、当該印刷ジョブの再設定をおこなう(ステップS2305)。ここでは、算出された転送可能ページまでが印刷範囲となるよう現在の印刷ジョブを更新すると共に、指定時刻までに転送できないページを次回バッチ処理時に処理するための新たな印刷ジョブを設定する。
ジョブYの場合、指定時刻までに転送可能なページ数が224ページなので、ジョブ実行制御部214は、「印刷ジョブスケジュールテーブル」(図13)のジョブYのレコードにおける「対象ページ」を、現在の「1〜1000」から、「1〜224」に更新する。ジョブ実行制御部214はさらに、次回バッチ処理時に繰下実行する新たな印刷ジョブ(例えば、「ジョブY’」とする)を設定する。ここでは、ジョブYのレコードをコピーした上で、実行指定日を、例えば、+1日することで、翌日のバッチ処理時を指定する。さらに、「対象ページ」を、今回転送できないページ範囲である「225〜1000」とする。
このように印刷ジョブの再設定がされると、「ジョブスケジュール最適化処理」を終了し、「印刷ジョブ実行処理」(図15)のフローに戻る。
なお、予定転送完了時刻が指定終了時刻を超過する場合であって、当該印刷ジョブに繰下実行が許可されていない場合(ステップS2302:Yes、S2304:No)は、印刷ジョブの再設定をおこなわずに、当該印刷ジョブの実行を開始する。これは、当該印刷ジョブには、指定終了時刻までに転送が完了しない場合であっても、印刷データの転送処理を継続するよう指定されているためである。
「印刷ジョブ実行処理」では、ジョブ実行部215が、P番目の印刷ジョブの実行を開始する(ステップS2104)。ここでは、ジョブYの実行が開始されるが、ステップS2305で再設定がされているので、指定時間内に転送可能なページ分の処理が開始される。すなわち、ジョブYの印刷データについて、1〜224ページまでのスプール処理と転送処理がおこなわれる。印刷ジョブの実行を開始すると、ジョブ実行部215は、開始日時を「実行結果テーブル」(図14(b))の「開始日時」に記録する。なお、繰下実行のために新たに作成された印刷ジョブ(ジョブY’)は、次回のバッチ処理時に実行対象として処理される。
ジョブYの実行順序Pは3であり、最終順序pが3であるので、ジョブYが最終となる(ステップS2105:Yes)。すなわち、実行対象となっているすべての印刷ジョブについて、バッチ処理装置200が実行する処理がおこなわれたことになる。したがって、ジョブ実行制御部214は「印刷ジョブ実行処理」を終了する。
実行対象の印刷ジョブがすべて実行されると、「中断判別処理」が実行される(ステップS2400)。この「中断判別処理」は、既定時間帯が経過した時点で実行されているバッチ処理装置200のバッチ処理動作を継続するか中断するかを判別するための処理である。したがって、「中断判別処理」は、既定時間帯が経過した時点(すなわち、9:00)で開始される。「中断判別処理」の詳細を図18に示すフローチャートを参照して説明する。
処理が開始されると、ジョブ実行制御部214は、現在、すなわち、既定時間帯の経過後に実行している印刷ジョブがあるか否かを判別する(ステップS2401)。ここでは、バッチ処理装置200が処理を継続している印刷ジョブの有無が判別される。すなわち、バッチ処理装置200によるスプール処理もしくはプリンタ300への転送処理が継続されている印刷ジョブが対象となる。
ここでは、終了時刻が指定されていない印刷ジョブや、繰下実行が不許可となっている印刷ジョブについての処理が、既定時間帯を経過しても実行されている可能性がある。このような印刷ジョブがある場合(ステップS2401:Yes)、ジョブ実行制御部214は、当該印刷ジョブの実行継続が、バッチ処理装置200の通常処理に影響するか否かを判別する(ステップS2402)。
上述したように、バッチ処理装置200は、既定時間帯にはバッチ処理を実行するが、その他の時間帯については、その他の通常処理のために用いられる。ここで、既定時間帯以外の時間帯では、通常処理が優先されるものとする。したがって、ステップS2402では、既定時間帯経過後の印刷ジョブの実行が通常処理に影響するか否かを判別する。ここでの判別要件や判別例は、実施形態1の「終了処理」におけるステップS1402と同様とする。
通常処理に影響する場合(ステップS2402:Yes)、ジョブ実行部215は、実行している印刷ジョブを中断する(ステップS2403)。ジョブ実行部215は、中断した日時を「実行結果テーブル」(図14(b))の「終了日時」に記録する。
続いて、実行量算出部213が、中断した印刷ジョブについて、プリンタ300に転送された印刷データのページ数を算出する(ステップS2404)。ここでは、例えば、「実行結果テーブル」(図14(b))に記録されている「開始日時」と「終了日時」に基づいてページ数を算出する。すなわち、「開始日時」にはバッチ処理装置200がスプール処理を開始した時刻が記録されているので、この時刻の1秒後から、「終了日時」に記録されている印刷ジョブの実行が中断された時刻までの時間が、転送時間となる。そして、この転送時間と、転送速度、ページ当たりのデータ量、および、受信バッファによって吸収されるページ数に基づいて、実行が中断されるまでにプリンタ300に転送された印刷データのページ数(転送済ページ数)を求めることができる。
ジョブ実行部215は、実行量算出部213が算出した転送済ページの範囲を、「実行結果テーブル」(図14(b))の「転送済ページ」に記録するとともに、当該印刷ジョブに当初指定されていたページ範囲を「指定ページ数」に記録する。
次にジョブ実行制御部214は、転送できなかったページについての印刷ジョブを再設定する(ステップS2405)。ここでは、転送できなかったページに印刷を、次回バッチ処理時に実行するための新たな印刷ジョブを設定する。ジョブ実行制御部214は、「印刷ジョブスケジュールテーブル」の当該印刷ジョブのレコードをコピーした上で、実行指定日を、例えば、+1日することで、翌日のバッチ処理時を指定する。さらに、「対象ページ」を、今回転送できなかったページ範囲とする。
なお、バッチジョブの延長実行が通常処理に影響しない場合(ステップS2402:No)は、全ジョブが終了するまで上記処理を繰り返す(ステップS2406:No)。
一方、既定時間帯経過後に実行しているバッチジョブがない場合(ステップS2401:No)、ジョブ実行部215は、既定時間帯に終了した印刷ジョブについての終了日時などを「実行結果テーブル」に記録する。
実行対象となっていたバッチジョブのすべてが終了すると(ステップS2406:Yes)、「中断判別処理」を終了して「印刷ジョブ実行処理」(図15)のフローに戻り、バッチ処理にかかる全処理を終了する。
以上説明したように、本実施形態にかかるバッチ処理装置200によれば、複数のジョブをシリアルでバッチ処理する場合、1つ前のジョブの処理終了時刻に基づいて次のジョブの処理時間を算出しながら、ジョブスケジュールを最適化する。
また、本実施形態で示した印刷処理のように、所定単位の実行結果が随時得られるような処理(ページ単位の印刷など)においては、ジョブの実行が完了しない場合に、途中までの結果物が得られるようにジョブを実行し、残りの結果物を得るための処理を再スケジュールすることができる。ここで、既定時間帯を延長したジョブの実行によって通常処理に影響する場合、ジョブを中断するとともに、中断によって得られなかった結果物を得るための処理を再設定する。
したがって、予め規定されている時間帯内で可能な限り処理が完了できるようにジョブを実行することができる。また、既定時間帯を延長してジョブを実行する場合、通常処理に影響しない範囲でジョブの実行を継続することができる。
上記実施形態2では、バッチ処理装置200が前のジョブの転送完了後に次のジョブの処理を開始するようにしたが、例えば、プリンタ300の印刷動作が終了しなければ次の印刷データを転送できない場合などには、各印刷ジョブ毎の印刷終了時刻を算出し、これに基づいて印刷ジョブの実行スケジュールを設定してもよい。この場合、実行時間算出部212は、「性能情報テーブル」(図14(b))に記録されているプリンタ300の印刷速度に基づいて、印刷処理時間を算出する(図19参照)。
上記実施形態2の例では、1ページ分の転送時間が10秒であるため、プリンタ300では、バッチ処理装置200による転送処理の開始から10秒後に印刷動作が開始される。転送処理の開始は、スプール開始の1秒後なので、算出した印刷処理時間に11秒を加算した時間が、スプール開始から印刷が終了するまでの時間となる。この時間と、スプール開始時刻とに基づいて、実行時間算出部212は、印刷終了時刻を求めることができる。この場合、1つ前の印刷ジョブについての印刷終了時刻を起点として、次の印刷ジョブについての処理時間を算出することになる。
このような処理により、プリンタ300の印刷動作が終了しなければバッチ処理装置200が次の動作を実行できない場合や、バッチ処理に使える時間帯がプリンタ300にも規定されている場合などにおいて、印刷完了時刻に基づいてジョブの実行スケジュールを最適化することができる。
また、上記実施形態2にかかるバッチ処理装置200の構成をプリンタ300が有していてもよい。この場合、プリンタ300に接続される情報処理装置などから印刷ジョブ(印刷データ)を受け付けて、バッチ処理対象の印刷ジョブについて、バッチ処理装置200と同様の処理をおこなう。この場合、各印刷ジョブ毎に印刷完了時刻を算出しながら、実行スケジュールを設定して印刷をおこなう。
上記各実施形態は一例であり、本発明の適用範囲はこれに限られない。すなわち、種々の応用が可能であり、あらゆる実施の形態が本発明の範囲に含まれる。
例えば、上記実施形態1はパラレル(並列)処理の場合を示し、実施形態2はシリアル処理の場合を示したが、実施形態1と実施形態2を組み合わせて実施してもよい。この場合、バッチ処理装置が、投入されたジョブ毎に、パラレル処理であるかシリアル処理であるかを判別しながら、実行時間の算出等をおこなってもよい。
また、実施形態1に示したパラレル処理においても、処理結果を随時取得できるような処理内容であれば、ジョブを途中まで実行して、残りの実行を再設定する処理をおこなってもよい。
上記実施形態2では、シリアル処理の例としてプリンタへの印刷ジョブの転送を示したが、これに限らず、種々の処理に本発明を適用することができる。例えば、WANなどを介して遠隔の装置にデータを転送する場合などに適用してもよい。
また、上記実施形態2では、バッチ処理装置200に接続されているプリンタが1台の場合を例示したが、複数のプリンタに対しバッチ処理をおこなってもよい。この場合、「性能情報テーブル」に各プリンタの性能情報を記録しておき、プリンタ性能に応じて負荷分散させながら、印刷ジョブが指定された時間内に転送完了できるようスケジュール設定してもよい。
上記各実施形態で示した計算方法は一例であり、実行時間や実行量などは任意の計算方法で算出してもよい。例えば、実施形態2では、データ量に基づいてページ数を求めたが、印刷データにページを示すコード等を付加することにより、転送可能なページ数や転送済のページ数を算出するようにしてもよい。
また、上記各実施形態では、バッチ処理を1日に1度実施する例を示したが、バッチ処理の実行頻度や実行時間帯などは任意である。また、上記各実施形態で示した、ジョブの実行条件は一例であり、任意に条件を設定してもよい。
また、上記各実施形態では、実行順序に従って、1つずつジョブを実行したが、例えば、実行対象となるジョブを特定後、全ジョブについての終了時刻をまとめて算出して、今回実行するジョブと繰り下げるジョブとを決定した上で、全ジョブの実行を開始するようにしてもよい。
上記実施の形態にかかるバッチ処理装置100、200は、専用装置によって実現可能なことはもとより、汎用のコンピュータシステムによって構成することもできる。この場合、上記各処理を実現するためのプログラムを汎用コンピュータシステムにインストールしてOSとの協働により実行することで、汎用コンピュータシステムを上記バッチ処理装置100、200として機能させることができる。
このようなプログラムの提供方法は任意であり、CD−ROMなどの記録媒体に格納して提供可能なことはもとより、例えば、インターネットなどの通信媒体を介して提供してもよい。
100…バッチ処理装置、111…ジョブ要求受信部、112…ジョブ実行時間算出部、113…ジョブ実行制御部、114…ジョブ実行部、161…ジョブ格納部、162…属性情報格納部、163…実行結果格納部、200…バッチ処理装置、211…ジョブ要求受信部、212…実行時間算出部、213…実行量算出部、214…ジョブ実行制御部、215…ジョブ実行部、261…ジョブ格納部、262…属性情報格納部、263…実行結果格納部、300…プリンタ
Claims (12)
- 所定の時間帯にバッチ処理をおこなうバッチ処理装置において、
バッチ処理対象のジョブ毎の実行時間を予め算出する実行時間算出手段と、
各ジョブが前記所定の時間帯に終了するか否かを判別する実行時間判別手段と、
前記実行時間判別手段の判別結果に応じて、各ジョブの実行スケジュールを設定するスケジュール設定手段と、
前記スケジュール設定手段が設定した実行スケジュールに基づいてジョブを実行するジョブ実行手段と、を備え、
前記スケジュール設定手段は、ジョブの実行が前記所定時間帯内に終了しない場合、各ジョブ毎に指定されている条件に基づいて、ジョブの実行スケジュールを再設定する、
ことを特徴とするバッチ処理装置。 - ジョブの実行にかかる動作を規定する属性情報を記憶する属性情報記憶手段をさらに備え、
前記実行時間算出手段は、各ジョブ毎に指定されている条件と、前記属性情報記憶手段に記憶されている属性情報とに基づいて実行時間を算出し、
前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、各ジョブの実行スケジュールを設定する、
ことを特徴とする請求項1に記載のバッチ処理装置。 - 前記実行時間算出手段は、算出した実行時間に基づいて、各ジョブの終了時刻を算出し、
前記実行時間判別手段は、前記実行時間算出手段が算出した終了時刻に基づいて、各ジョブが前記所定の時間帯内で終了するか否かを判別する、
ことを特徴とする請求項1または2に記載のバッチ処理装置。 - 前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合、次回のバッチ処理時に繰り下げて実行するようスケジュールを設定する、
ことを特徴とする請求項1乃至3のいずれか1項に記載のバッチ処理装置。 - 前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合であっても、当該ジョブを実行するようスケジュールを設定する、
ことを特徴とする請求項1乃至4のいずれか1項に記載のバッチ処理装置。 - 前記スケジュール設定手段は、各ジョブ毎に指定されている条件に基づいて、当該ジョブの実行が前記所定時間帯内に終了しない場合、当該ジョブを該所定時間帯まで実行し、未完了となる処理を次回のバッチ処理時に繰り下げて実行するようスケジュールを設定する、
ことを特徴とする請求項1乃至5のいずれか1項に記載のバッチ処理装置。 - 前記所定の時間帯の経過時以降に前記ジョブ実行手段が実行しているジョブがあるか否かを判別する実行ジョブ判別手段と、
前記実行ジョブ判別手段が実行ジョブがあると判別した場合、当該ジョブを中断すべきか否かを判別する中断判別手段と、をさらに備え、
前記ジョブ実行手段は、前記中断判別手段が中断すべきと判別したジョブの実行を中断し、
前記スケジュール設定手段は、前記ジョブ実行手段が中断したジョブの実行スケジュールを設定する、
ことを特徴とする請求項1乃至6のいずれか1項に記載のバッチ処理装置。 - 前記中断判別手段は、ジョブの実行が当該バッチ処理以外の処理に影響するか否かを判別し、影響する場合に当該ジョブを中断すべきと判別する、
ことを特徴とする請求項7に記載のバッチ処理装置。 - 複数のジョブの実行順序を決定する実行順序決定手段と、
前記実行順序決定手段が決定した実行順に前記ジョブを順次指定するジョブ指定手段と、をさらに備え、
前記実行時間算出手段は、前記ジョブ指定手段が指定したジョブと、当該ジョブの前に実行されるジョブの実行時間を算出する、
ことを特徴とする請求項1乃至8のいずれか1項に記載のバッチ処理装置。 - 前記実行時間算出処理は、前記ジョブ指定手段が指定したジョブの1つ前のジョブについての終了時刻を起点に、該指定されたジョブの終了時刻を算出する、
ことを特徴とする請求項9に記載のバッチ処理装置。 - 前記実行時間算出処理は、前記ジョブ指定手段が指定したジョブの数に応じて、各ジョブの実行時間を可変的に算出する、
ことを特徴とする請求項9または10に記載のバッチ処理装置。 - コンピュータにバッチ処理を実行させるためのプログラムであって、
前記コンピュータに、
バッチ処理にかかる動作を規定する属性情報を記憶する機能と、
バッチ処理対象となるジョブの処理時間を算出する機能と、
各ジョブ毎に指定されている条件と、算出された処理時間とに基づいて指定されている時間内に終了しないジョブについて、そのまま実行するか次回バッチ処理時に繰り下げて実行するかを判別する機能と、
繰り下げて実行するジョブの実行スケジュールを設定する機能と、
指定された終了時間経過後も実行しているジョブについて、バッチ処理以外の要件に基づいて中断要否を判別し、中断すべきと判別した場合にジョブの実行を中断する機能と、
中断したジョブを再度実行するための実行スケジュールを設定する機能と、
を実現させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004246991A JP2006065566A (ja) | 2004-08-26 | 2004-08-26 | バッチ処理装置、および、プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004246991A JP2006065566A (ja) | 2004-08-26 | 2004-08-26 | バッチ処理装置、および、プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2006065566A true JP2006065566A (ja) | 2006-03-09 |
Family
ID=36112019
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004246991A Pending JP2006065566A (ja) | 2004-08-26 | 2004-08-26 | バッチ処理装置、および、プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2006065566A (ja) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009239603A (ja) * | 2008-03-27 | 2009-10-15 | Brother Ind Ltd | 画像処理装置 |
JP2011248724A (ja) * | 2010-05-28 | 2011-12-08 | Fujitsu Ltd | 管理装置,管理方法,および管理プログラム |
JP2012133724A (ja) * | 2010-12-24 | 2012-07-12 | Fujitsu Ltd | ジョブネット組替装置、ジョブネット組替プログラム及びジョブネット組替方法 |
JP2012164239A (ja) * | 2011-02-09 | 2012-08-30 | Mitsubishi Electric Corp | 検索処理装置 |
JP2012173756A (ja) * | 2011-02-17 | 2012-09-10 | Mizuho Information & Research Institute Inc | ジョブシミュレーションシステム、ジョブシミュレーション方法及びジョブシミュレーションプログラム |
JP2013101523A (ja) * | 2011-11-09 | 2013-05-23 | Fuji Xerox Co Ltd | 処理要求実行管理装置及びプログラム |
JP2015176239A (ja) * | 2014-03-13 | 2015-10-05 | トヨタ自動車株式会社 | 作業計画作成システム |
US9459916B2 (en) | 2013-11-13 | 2016-10-04 | Fujitsu Limited | System and method for controlling execution of jobs performed by plural information processing devices |
JP2019179280A (ja) * | 2018-03-30 | 2019-10-17 | 日本電気株式会社 | ジョブ実行管理システム、およびジョブ実行管理方法 |
CN112882767A (zh) * | 2021-02-08 | 2021-06-01 | 建信金融科技有限责任公司 | 一种spring batch批处理作业网页维护的方法及系统 |
JP7012905B1 (ja) * | 2020-12-28 | 2022-01-28 | 三菱電機株式会社 | スケジュール生成装置、スケジュール生成方法及びスケジュール生成プログラム |
-
2004
- 2004-08-26 JP JP2004246991A patent/JP2006065566A/ja active Pending
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009239603A (ja) * | 2008-03-27 | 2009-10-15 | Brother Ind Ltd | 画像処理装置 |
JP2011248724A (ja) * | 2010-05-28 | 2011-12-08 | Fujitsu Ltd | 管理装置,管理方法,および管理プログラム |
JP2012133724A (ja) * | 2010-12-24 | 2012-07-12 | Fujitsu Ltd | ジョブネット組替装置、ジョブネット組替プログラム及びジョブネット組替方法 |
JP2012164239A (ja) * | 2011-02-09 | 2012-08-30 | Mitsubishi Electric Corp | 検索処理装置 |
JP2012173756A (ja) * | 2011-02-17 | 2012-09-10 | Mizuho Information & Research Institute Inc | ジョブシミュレーションシステム、ジョブシミュレーション方法及びジョブシミュレーションプログラム |
JP2013101523A (ja) * | 2011-11-09 | 2013-05-23 | Fuji Xerox Co Ltd | 処理要求実行管理装置及びプログラム |
US9459916B2 (en) | 2013-11-13 | 2016-10-04 | Fujitsu Limited | System and method for controlling execution of jobs performed by plural information processing devices |
JP2015176239A (ja) * | 2014-03-13 | 2015-10-05 | トヨタ自動車株式会社 | 作業計画作成システム |
US9841755B2 (en) | 2014-03-13 | 2017-12-12 | Toyota Jidosha Kabushiki Kaisha | Job plan creation system |
JP2019179280A (ja) * | 2018-03-30 | 2019-10-17 | 日本電気株式会社 | ジョブ実行管理システム、およびジョブ実行管理方法 |
JP7014010B2 (ja) | 2018-03-30 | 2022-02-01 | 日本電気株式会社 | ジョブ実行管理システム、およびジョブ実行管理方法 |
JP7012905B1 (ja) * | 2020-12-28 | 2022-01-28 | 三菱電機株式会社 | スケジュール生成装置、スケジュール生成方法及びスケジュール生成プログラム |
WO2022144973A1 (ja) * | 2020-12-28 | 2022-07-07 | 三菱電機株式会社 | スケジュール生成装置、スケジュール生成方法及びスケジュール生成プログラム |
CN112882767A (zh) * | 2021-02-08 | 2021-06-01 | 建信金融科技有限责任公司 | 一种spring batch批处理作业网页维护的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9996388B1 (en) | Systems and methods for managing the execution of processing jobs | |
US9612874B1 (en) | Systems and methods for managing the execution of processing jobs | |
EP3540590B1 (en) | Information processing system, print system, and method and program for controlling information processing system | |
JP3977060B2 (ja) | 周辺機器、情報処理装置、通知方法、及び情報処理方法 | |
JP5522080B2 (ja) | プリントシステムおよび画像形成装置 | |
US8564813B2 (en) | Distributed printing system, print control method for determining printing output locations according to content and estimated time information, and program | |
JP2010092467A (ja) | 印刷ジョブ送信装置、印刷ジョブの管理方法、印刷システム、プログラムおよびその記録媒体 | |
JP2002333962A (ja) | ユーザインタフェースシステム | |
JP3861868B2 (ja) | ジョブ管理装置、ジョブ管理プログラム、およびそれらを備えた画像形成装置 | |
US8149449B2 (en) | Systems and methods for print scheduling | |
JP2006065566A (ja) | バッチ処理装置、および、プログラム | |
JP6217669B2 (ja) | プリンタードライバープログラム | |
JP2002182878A (ja) | 印刷制御装置および方法および印刷システムおよびコンピュータプログラムとその記録媒体 | |
JP6274160B2 (ja) | 画像形成装置、画像形成装置の制御プログラム、および管理方法 | |
JP2003044236A (ja) | 画像処理システムおよび画像処理システムの制御方法 | |
JP3663881B2 (ja) | 機器情報管理装置 | |
JP2007087130A (ja) | サーバ装置、サーバ装置の印刷処理方法、記憶媒体およびプログラム | |
JP3821147B2 (ja) | 画像形成装置及び画像形成システム | |
JP2015005028A (ja) | 画像処理装置、及び、制御装置 | |
JP3710678B2 (ja) | 印刷装置およびその印刷方法 | |
JP2005186559A (ja) | 印刷装置およびサーバ装置およびジョブ処理方法およびコンピュータが読み取り可能なプログラムを格納した記憶媒体およびプログラム | |
JP4543941B2 (ja) | 印刷システムおよび印刷管理装置および印刷管理プログラム | |
JP5257751B2 (ja) | 画像処理システム及びメモリ管理方法並びにメモリ管理プログラム | |
JP5040603B2 (ja) | 印刷指示装置及びプログラム | |
JP2003218955A (ja) | データ送信装置、それを備えた端末装置、及びデータ送信制御方法 |