(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024092762
(43)【公開日】2024-07-08
(54)【発明の名称】情報処理プログラム、情報処理方法、および情報処理装置
(51)【国際特許分類】
G06F 11/07 20060101AFI20240701BHJP
G06F 9/48 20060101ALI20240701BHJP
G06F 11/14 20060101ALI20240701BHJP
【FI】
G06F11/07 196
G06F9/48 370
G06F9/48 300J
G06F11/07 140A
G06F11/14 612
【審査請求】未請求
【請求項の数】6
【出願形態】OL
(21)【出願番号】P 2022208903
(22)【出願日】2022-12-26
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】吉川 大貴
(72)【発明者】
【氏名】北山 亨
(72)【発明者】
【氏名】原 佑輔
(72)【発明者】
【氏名】下川 健一郎
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042GA23
5B042KK02
5B042MA08
5B042MC21
(57)【要約】
【課題】ジョブフローを再起動する起点となるジョブを適切に設定し易くすること。
【解決手段】情報処理装置100は、ジョブ群の第1ジョブの異常を検出する。情報処理装置100は、記憶部122を参照して、第1ジョブに対応付けられたジョブフロー121を再起動する条件を特定し、検出した第1ジョブの異常が、特定した条件を満たすか否かを判定する。情報処理装置100は、条件を満たすと判定した場合、記憶部122を参照して、第1ジョブに対応付けられたジョブフロー121を再起動する起点とする1以上の第2ジョブを示す情報を取得する。情報処理装置100は、ジョブフロー121を再起動する起点とする1以上の第2ジョブを示す情報に基づいて、それぞれの第2ジョブを起点に、ジョブフロー121を再起動する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
ジョブフローに実行順序が規定されたジョブ群の第1ジョブの異常を検出し、
前記ジョブ群の少なくともいずれかのジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とするジョブを示す情報とを記憶する記憶部を参照して、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすか否かを判定し、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【請求項2】
前記記憶部は、前記第1ジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とする複数のジョブを示す情報とを記憶し、
前記再起動する処理は、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする複数のジョブを示す情報に基づいて、前記複数のジョブのそれぞれのジョブを起点に、前記ジョブフローを再起動する、ことを特徴とする請求項1に記載の情報処理プログラム。
【請求項3】
前記条件は、前記第1ジョブの異常の種類を表し、
前記判定する処理は、
前記記憶部を参照して、検出した前記第1ジョブの異常の種類が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件が表す前記第1ジョブの異常の種類と一致する場合、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定する、ことを特徴とする請求項1または2に記載の情報処理プログラム。
【請求項4】
前記再起動する処理は、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、利用者の所定の操作入力を受け付けるまで待ってから、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する、ことを特徴とする請求項1または2に記載の情報処理プログラム。
【請求項5】
ジョブフローに実行順序が規定されたジョブ群の第1ジョブの異常を検出し、
前記ジョブ群の少なくともいずれかのジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とするジョブを示す情報とを記憶する記憶部を参照して、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすか否かを判定し、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【請求項6】
ジョブフローに実行順序が規定されたジョブ群の第1ジョブの異常を検出し、
前記ジョブ群の少なくともいずれかのジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とするジョブを示す情報とを記憶する記憶部を参照して、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすか否かを判定し、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する、
制御部を有することを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理プログラム、情報処理方法、および情報処理装置に関する。
【背景技術】
【0002】
従来、ジョブフローに従って、ジョブ群を実行するシステムがある。ジョブ群のいずれかのジョブに異常が発生し、当該いずれかのジョブが終了した場合、ジョブフロー全体も一旦終了してしまうため、ジョブフローを再起動することが望まれる。
【0003】
先行技術としては、例えば、ジョブの新規エラーを検知し、同時期に複数のリカバリー候補を特定した場合、優先対応順位に基づいて、ジョブのリカバリー処理を実行するものがある。また、例えば、対象のジョブに対応付けられた監視対象の監視により取得した監視情報に基づいて変更した基準時刻または基準時間に基づいて、対象のジョブの異常に関する判定を行う技術がある。また、例えば、イベントの通知元のジョブの特定情報に対応するイベントの通知先のジョブの特定情報によって特定されるジョブを再実行する技術がある。また、例えば、システムの状態を、対象ジョブと対象ジョブが実行された際の依存関係があるジョブとが実行される前の状態に戻す技術がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2020-160817号公報
【特許文献2】特開2019-139262号公報
【特許文献3】特開2015-204036号公報
【特許文献4】特開2022-133010号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
例えば、いずれかのジョブに異常が発生した場合、異常が発生したジョブ、異常が発生したジョブの1つ前のジョブ、または、ジョブフローの先頭に存在するジョブなどのうち予め設定された起点となるジョブから、ジョブフローを再起動する手法が考えられる。しかしながら、上記手法では、ジョブフローを再起動する起点となるジョブを適切に設定することが難しい。例えば、ジョブフローを再起動する起点として複数のジョブを設定することができない。
【0006】
1つの側面では、本発明は、ジョブフローを再起動する起点となるジョブを適切に設定し易くすることを目的とする。
【課題を解決するための手段】
【0007】
1つの実施態様によれば、ジョブフローに実行順序が規定されたジョブ群の第1ジョブの異常を検出し、前記ジョブ群の少なくともいずれかのジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とするジョブを示す情報とを記憶する記憶部を参照して、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすか否かを判定し、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する情報処理プログラム、情報処理方法、および情報処理装置が提案される。
【発明の効果】
【0008】
一態様によれば、ジョブフローを再起動する起点となるジョブを適切に設定し易くすることが可能になる。
【図面の簡単な説明】
【0009】
【
図1】
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。
【
図2】
図2は、情報処理システム200の一例を示す説明図である。
【
図3】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
【
図4】
図4は、情報処理装置100の機能的構成例を示すブロック図である。
【
図5】
図5は、ジョブフロー500の一例を示す説明図である。
【
図6】
図6は、ジョブフロー500を記憶する一例を示す説明図である。
【
図7】
図7は、再起動情報管理テーブル700の記憶内容の一例を示す説明図である。
【
図8】
図8は、実行履歴管理テーブル800の記憶内容の一例を示す説明図である。
【
図9】
図9は、ジョブフロー500を再起動する一例を示す説明図である。
【
図10】
図10は、再起動処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下に、図面を参照して、本発明にかかる情報処理プログラム、情報処理方法、および情報処理装置の実施の形態を詳細に説明する。
【0011】
(実施の形態にかかる情報処理方法の一実施例)
図1は、実施の形態にかかる情報処理方法の一実施例を示す説明図である。情報処理装置100は、ジョブフローを起動するコンピュータである。情報処理装置100は、例えば、サーバ、または、PC(Personal Computer)などである。
【0012】
ジョブフローは、例えば、ジョブ群の実行順序を規定する。ジョブフローは、例えば、ジョブ群のデータ依存関係を示す。ジョブ群のいずれかのジョブは、複数のジョブのそれぞれのジョブが出力したデータを利用するジョブであってもよい。ジョブ群のいずれかのジョブが出力したデータを、複数のジョブが利用することがあってもよい。
【0013】
ジョブフローは、例えば、ジョブ群のそれぞれのジョブを表すノードと、ジョブ群のうち異なる2つのジョブのそれぞれのジョブを表すノード間を接続する有向エッジとを含む有向グラフによって表現することができる。有向エッジは、具体的には、ジョブ群のいずれかのジョブを表すノードと、当該いずれかのジョブの次に実行する、当該いずれかのジョブが出力するデータを利用する他のジョブを表すノードとを接続する。
【0014】
あるジョブを表すノードから有向エッジを逆に辿って到達可能なノードが表す他のジョブは、当該あるジョブより実行順序が前方のジョブとして扱われる。あるジョブを表すノードから有向エッジを順に辿って到達可能なノードが表す他のジョブは、当該あるジョブより実行順序が後方のジョブとして扱われる。あるジョブを表すノードから有向エッジを順に辿っても逆に辿っても到達不能なノードが表す他のジョブは、当該あるジョブと並列するジョブとして扱われる。あるジョブと、当該あるジョブと並列する他のジョブとは、並列して実行可能である。
【0015】
起動は、ジョブフローに実行順序が規定されたジョブ群を実行開始することを意味する。ジョブ群のすべてのジョブを完了することが、ジョブフローを完了することに対応する。ジョブフローに従って、ジョブ群を実行開始した後、ジョブ群のいずれかのジョブに異常が発生し、当該いずれかのジョブが終了することが考えられる。
【0016】
異常は、例えば、タイムアウトによるエラー、ジョブを実行する環境に起因するエラー、ジョブの処理内容に起因するエラー、または、実行順序が前方の他のジョブの処理内容に起因するエラーなどが考えられる。ジョブ群のいずれかのジョブに異常が発生し、当該いずれかのジョブが終了した場合、ジョブフローも一旦終了してしまうことになる。
【0017】
このため、ジョブフローを再起動することが望まれる。この際、ジョブ群は、実行待ちのジョブと、実行済みのジョブとを含む。実行済みのジョブは、いずれかのジョブの異常を解消するために、実行済みであるが再実行することが好ましいジョブであることが考えられる。実行済みのジョブは、再実行しなくてもよいジョブであることが考えられる。実行済みのジョブは、再実行することによりエラーが発生し得る、再実行しないことが好ましいジョブであることが考えられる。
【0018】
例えば、いずれかのジョブに発生した異常の種類に応じて、いずれのジョブが、再実行することが好ましいジョブになるのかが変化する場合がある。例えば、ジョブフローを再起動した際、再実行することが好ましいジョブを再実行しないと、いずれかのジョブの異常を解消することができない場合がある。例えば、ジョブフローを再起動した際、再実行しなくてもよいジョブを再実行してしまうと、ジョブフローを完了する際にかかる処理負担および処理時間の増大化を招くことがある。従って、ジョブフローを再起動する起点とするジョブを柔軟に変更可能にすることが望まれる。
【0019】
しかしながら、ジョブフローを再起動する起点となるジョブを適切に設定可能にすることが難しい。例えば、いずれかのジョブに異常が発生した場合について、当該異常の種類に応じて、ジョブフローを再起動する起点となるジョブを切り替えることができないという問題がある。
【0020】
これに対し、あるジョブに異常が発生した場合、当該あるジョブ自体、当該あるジョブの1つ前に実行した他のジョブ、または、ジョブフローの先頭に存在する他のジョブなどの予め設定された起点となるジョブから、ジョブフローを再起動する手法が考えられる。上記手法は、具体的には、ジョブフローの分岐技術を活用し、あるジョブに異常が発生した場合、当該異常に関するエラーコードに応じて、当該あるジョブから、当該あるジョブより実行順序が前方である単一の他のジョブに分岐するよう、ジョブフローを制御する。
【0021】
上記手法でも、ジョブフローを再起動する起点となるジョブを適切に設定可能にすることが難しいことがある。上記手法では、例えば、いずれかのジョブに異常が発生した場合について、ジョブフローを再起動する起点として、単一のジョブしか設定することができず、複数のジョブを設定することができないという問題がある。
【0022】
また、例えば、いずれかのジョブに異常が発生した場合、ジョブフローを再起動する前に、ジョブフローの運用者が、当該異常に対処することが好ましい場合がある。一方で、上記手法では、いずれかのジョブに異常が発生した場合、分岐先となる他のジョブを自動的に実行開始してしまうため、ジョブフローの運用者が、当該異常に対処する余地がない場合がある。
【0023】
そこで、本実施の形態では、ジョブフローを再起動する起点となるジョブを適切に設定し易くすることができる情報処理方法について説明する。
【0024】
図1において、情報処理装置100は、ジョブフロー121を記憶する。ジョブフロー121は、例えば、ジョブ群の実行順序を規定する。
図1の例では、ジョブ群は、具体的には、ジョブ1~10を含む。ジョブフロー121は、例えば、ジョブ群のデータ依存関係を示す。
【0025】
ジョブフロー121は、ジョブ1~10のそれぞれを表すノード101~110を含む有向グラフによって表現される。ジョブiを表すノード10iと、ジョブiの次に実行する、ジョブiが出力するデータを利用するジョブjを表すノード10jとは、有向エッジによって接続される。従って、有向エッジは、データ依存関係を示す。
【0026】
情報処理装置100は、ジョブフロー121に従って、ジョブ群を実行する。情報処理装置100は、例えば、ジョブ1と、ジョブ2と、ジョブ3と、ジョブ4とを順に実行する。情報処理装置100は、例えば、ジョブ5と、ジョブ6とを並列に実行する。情報処理装置100は、例えば、ジョブ5と、ジョブ6とを完了した後、ジョブ7と、ジョブ8とを順に実行する。情報処理装置100は、例えば、ジョブ1~4と、ジョブ5~8とを並列に実行していてもよい。情報処理装置100は、例えば、ジョブ4と、ジョブ8とを完了した後、ジョブ9と、ジョブ10とを順に実行する。
【0027】
情報処理装置100は、記憶部122を有する。記憶部122は、ジョブ群の少なくともいずれかのジョブに対応付けて、ジョブフロー121を再起動する条件と、ジョブ群のうちジョブフロー121を再起動する起点とする1以上のジョブを示す情報との1以上の組み合わせを記憶する。条件は、例えば、いずれかのジョブに何らかの異常が発生したことである。条件は、例えば、いずれかのジョブに特定の種類の異常が発生したことであってもよい。
【0028】
図1の例では、情報処理装置100は、具体的には、ジョブ8に対応付けて、ジョブフロー121を再起動する条件と、ジョブ群のうちジョブフロー121を再起動する起点とするジョブ5,6を示す情報とを、記憶部122に記憶する。条件は、例えば、ジョブ8に何らかの異常が発生したことである。条件は、例えば、ジョブ8に特定の種類の異常が発生したことであってもよい。
【0029】
(1-1)情報処理装置100は、ジョブ群の第1ジョブの異常を検出する。情報処理装置100は、発生した第1ジョブの異常の種類を特定してもよい。ここで、情報処理装置100は、ジョブ群の第1ジョブの異常により第1ジョブを実行失敗した場合、ジョブフロー121を完了せずに一旦終了することになる。
【0030】
従って、情報処理装置100は、ジョブ群の第1ジョブの異常により第1ジョブを実行失敗した場合、ジョブ群のうち実行中の他のジョブが存在すれば、他のジョブも同様に実行失敗することがある。このため、第1ジョブの異常に起因して、他のジョブの異常が発生することがある。他のジョブの異常は、例えば、第1ジョブの異常に起因して、強制的に実行失敗することである。
【0031】
図1の例では、情報処理装置100は、具体的には、ジョブ群のジョブ8の異常を検出したとする。情報処理装置100は、具体的には、発生したジョブ8の異常の種類を特定してもよい。ここでは、情報処理装置100は、ジョブ群のジョブ8の異常が発生した際、ジョブ群のうち実行中の他のジョブが存在せず、他のジョブの異常は発生しなかったとする。
【0032】
(1-2)情報処理装置100は、記憶部122を参照して、第1ジョブに対応付けられたジョブフロー121を再起動する条件を特定し、検出した第1ジョブの異常が、特定した条件を満たすか否かを判定する。情報処理装置100は、例えば、第1ジョブに対応付けられた条件が、第1ジョブに何らかの異常が発生したことを示す場合、検出した第1ジョブの異常が、第1ジョブに対応付けられた条件を満たすと判定する。
【0033】
情報処理装置100は、例えば、第1ジョブに対応付けられた条件が、第1ジョブに特定の種類の異常が発生したことを示す場合、特定した第1ジョブの異常の種類が、特定の種類であれば、第1ジョブに対応付けられた条件を満たすと判定する。情報処理装置100は、例えば、第1ジョブに対応付けられた条件が、第1ジョブに特定の種類の異常が発生したことを示す場合、特定した第1ジョブの異常の種類が、特定の種類でなければ、第1ジョブに対応付けられた条件を満たさないと判定する。
【0034】
図1の例では、情報処理装置100は、具体的には、検出したジョブ8の異常が、ジョブ8に対応付けられたジョブフロー121を再起動する条件を満たすと判定したとする。これにより、情報処理装置100は、第1ジョブに対応付けて記憶部122に記憶された、ジョブ群のうちジョブフロー121を再起動する起点とするジョブを示す情報を利用することが好ましい状況であると判断することができる。
【0035】
(1-3)情報処理装置100は、条件を満たすと判定した場合、記憶部122を参照して、第1ジョブに対応付けられたジョブフロー121を再起動する起点とする1以上の第2ジョブを示す情報を取得する。情報処理装置100は、ジョブフロー121を再起動する起点とする1以上の第2ジョブを示す情報に基づいて、それぞれの第2ジョブを起点に、ジョブフロー121を再起動する。
【0036】
図1の例では、情報処理装置100は、具体的には、条件を満たすと判定したため、記憶部122を参照して、ジョブ8に対応付けられた、ジョブ群のうちジョブフロー121を再起動する起点とするジョブ5,6を示す情報を取得する。情報処理装置100は、具体的には、取得した情報に基づいて、ジョブ5,6を起点に、ジョブフロー121を再起動する。
【0037】
情報処理装置100は、具体的には、ジョブフロー121を再起動すると、ジョブ5,6を起点に、ジョブ5,6より実行順序が後方である他のジョブを順に実行する。情報処理装置100は、具体的には、ジョブフロー121を再起動すると、起点としたジョブ5,6と並列する他のジョブのうち、未実行の他のジョブがあれば順に実行することが好ましい。ここでは、情報処理装置100は、具体的には、ジョブフロー121を再起動する前に、ジョブ1~4を完了済みであり、ジョブ9,10を実行待ちであるとする。
【0038】
情報処理装置100は、より具体的には、ジョブフロー121を再起動すると、ジョブ5,6を並列に実行する。情報処理装置100は、より具体的には、ジョブ5,6を完了した後、ジョブ7,8を順に実行する。情報処理装置100は、より具体的には、ジョブ8を完了した後、ジョブ4も完了済みであるため、ジョブ9,10を順に実行する。
【0039】
これにより、情報処理装置100は、ジョブフロー121を再起動する起点となるジョブを適切に制御することができる。情報処理装置100は、例えば、いずれかのジョブに異常が発生した場合について、当該異常の種類に応じて、ジョブフロー121を再起動する起点となるジョブを切り替えることができる。情報処理装置100は、例えば、いずれかのジョブに異常が発生した場合について、ジョブフロー121を再起動する起点として複数のジョブを設定することができる。このため、情報処理装置100は、ジョブフロー121を効率よく再起動することができ、ジョブ群のすべてのジョブを完了する際にかかる処理負担および処理時間の低減化を図ることができる。
【0040】
ここでは、情報処理装置100が、条件を満たすと判定した場合、自装置の利用者による操作入力を待たずに、ジョブフロー121を再起動する場合について説明したが、これに限らない。自装置の利用者は、例えば、ジョブフロー121の運用者、または、ジョブフロー121の管理者などである。例えば、情報処理装置100が、条件を満たすと判定した場合、自装置の利用者による特定の操作入力を待ってから、ジョブフロー121を再起動する場合があってもよい。特定の操作入力は、例えば、ジョブフロー121の再起動を許可することを示す操作入力である。これにより、情報処理装置100は、ジョブフロー121を再起動する前に、ジョブフロー121の運用者、または、ジョブフロー121の管理者などが、いずれかのジョブに発生した異常に対処し易くすることができる。
【0041】
ここでは、情報処理装置100が、単独で動作する場合について説明したが、これに限らない。例えば、情報処理装置100が、他のコンピュータと協働する場合があってもよい。具体的には、情報処理装置100が、自装置でジョブ群を実行せず、ジョブ群を実行する他のコンピュータを制御する場合があってもよい。例えば、複数のコンピュータが、協働で情報処理装置100としての機能を実現する場合があってもよい。具体的には、クラウド上に情報処理装置100としての機能が実現される場合があってもよい。情報処理装置100が、他のコンピュータと協働する場合の一例については、
図2を用いて後述する。
【0042】
(情報処理システム200の一例)
次に、
図2を用いて、
図1に示した情報処理装置100を適用した、情報処理システム200の一例について説明する。
【0043】
図2は、情報処理システム200の一例を示す説明図である。
図2において、情報処理システム200は、情報処理装置100と、1以上のジョブ実行装置201と、クライアント装置202とを含む。
【0044】
情報処理システム200において、情報処理装置100とジョブ実行装置201とは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、LAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどである。また、情報処理システム200において、情報処理装置100とクライアント装置202とは、有線または無線のネットワーク210を介して接続される。
【0045】
情報処理装置100は、ジョブフローを起動するコンピュータである。情報処理装置100は、ジョブフローを記憶する。情報処理装置100は、ジョブ群を実行開始する開始トリガーを受け付ける。情報処理装置100は、例えば、ジョブ群を実行することを要求するリクエストを、ジョブ群を実行開始する開始トリガーとして、クライアント装置202から受け付ける。
【0046】
情報処理装置100は、1以上のジョブ実行装置201を制御する。情報処理装置100は、例えば、ジョブ群を1以上のジョブ実行装置201に振り分ける。情報処理装置100は、例えば、ジョブフローに従って、それぞれのジョブ実行装置201に振り分けたジョブを当該ジョブ実行装置201で実行するよう、1以上のジョブ実行装置201を制御する。
【0047】
情報処理装置100は、具体的には、開始トリガーを受け付けたことに応じて、それぞれのジョブ実行装置201に振り分けたジョブを当該ジョブ実行装置201で実行するよう、1以上のジョブ実行装置201を制御し、ジョブフローを起動する。
【0048】
情報処理装置100は、ジョブ群の少なくともいずれかのジョブに対応付けて、ジョブフローを再起動する条件と、ジョブ群のうちジョブフローを再起動する起点とする1以上のジョブを示す情報との1以上の組み合わせを記憶する記憶部を有する。
【0049】
情報処理装置100は、ジョブ群のうち、いずれかのジョブ実行装置201で実行した第1ジョブの異常を検出する。情報処理装置100は、例えば、いずれかのジョブ実行装置201から、第1ジョブの異常を表す通知を受信することにより、第1ジョブの異常を検出する。通知は、例えば、第1ジョブの異常の種類を示す情報を含んでいてもよい。情報処理装置100は、例えば、通知に基づいて、発生した第1ジョブの異常の種類を特定する。
【0050】
情報処理装置100は、例えば、第1ジョブの異常を検出すると、ジョブフローを完了せずに異常終了するよう、1以上のジョブ実行装置201を制御する。情報処理装置100は、記憶部を参照して、検出した第1ジョブの異常が、第1ジョブに対応付けられたジョブフローを再起動する条件を満たすか否かを判定する。情報処理装置100は、条件を満たすと判定した場合、記憶部を参照して、第1ジョブに対応付けられたジョブフローを再起動する起点とする1以上の第2ジョブを示す情報に基づいて、1以上の第2ジョブを特定する。
【0051】
情報処理装置100は、特定した1以上の第2ジョブのそれぞれの第2ジョブを起点に、ジョブフローを再起動する。情報処理装置100は、例えば、特定した1以上の第2ジョブのそれぞれの第2ジョブを起点に、ジョブ群の全部または一部を実行するよう、1以上のジョブ実行装置201を制御する。
【0052】
情報処理装置100は、ジョブ群のすべてのジョブを完了し、ジョブフローを完了すると、ジョブ群のすべてのジョブを完了し、ジョブフローを完了したことを表す通知を、クライアント装置202に送信する。情報処理装置100は、例えば、サーバ、または、PCなどである。
【0053】
ジョブ実行装置201は、ジョブ群のいずれかのジョブを実行するコンピュータである。ジョブ実行装置201は、情報処理装置100の制御に従って、自装置に振り分けられたジョブを実行する。ジョブ実行装置201は、自装置に割り振られたジョブの次に実行するジョブが、他のジョブ実行装置201に振り分けられていれば、自装置に振り分けられたジョブが出力するデータを、次に実行するジョブが振り分けられた他のジョブ実行装置201に送信する。
【0054】
ジョブ実行装置201は、自装置に割り振られたジョブの異常が発生した場合、自装置に割り振られたジョブの異常を表す通知を生成し、情報処理装置100に送信する。ジョブ実行装置201は、例えば、自装置に割り振られたジョブの異常の種類を特定し、特定したジョブの異常の種類を示す情報を含み、自装置に割り振られたジョブの異常を表す通知を生成し、情報処理装置100に送信してもよい。ジョブ実行装置201は、例えば、サーバ、または、PCなどである。
【0055】
クライアント装置202は、情報処理システム200の利用者によって用いられるコンピュータである。情報処理システム200の利用者は、例えば、ジョブフローの運用者、または、ジョブフローの管理者などである。クライアント装置202は、例えば、情報処理システム200の利用者による操作入力に基づき、ジョブ群を実行することを要求するリクエストを生成し、情報処理装置100に送信する。
【0056】
クライアント装置202は、例えば、ジョブ群のすべてのジョブを完了し、ジョブフローを完了したことを表す通知を、情報処理装置100から受信する。クライアント装置202は、例えば、ジョブ群のすべてのジョブを完了し、ジョブフローを完了したことを表す通知を、情報処理システム200の利用者が参照可能に出力する。情報処理装置100は、例えば、PC、タブレット端末、または、スマートフォンなどである。
【0057】
ここでは、情報処理装置100とジョブ実行装置201とが異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、ジョブ実行装置201としての機能を有し、ジョブ実行装置201としても動作する場合があってもよい。
【0058】
ここでは、情報処理装置100とクライアント装置202とが異なる装置である場合について説明したが、これに限らない。例えば、情報処理装置100が、クライアント装置202としての機能を有し、クライアント装置202としても動作する場合があってもよい。
【0059】
(情報処理装置100のハードウェア構成例)
次に、
図3を用いて、情報処理装置100のハードウェア構成例について説明する。
【0060】
図3は、情報処理装置100のハードウェア構成例を示すブロック図である。
図3において、情報処理装置100は、CPU(Central Processing Unit)301と、メモリ302と、ネットワークI/F(Interface)303と、記録媒体I/F304と、記録媒体305とを有する。また、各構成部は、バス300によってそれぞれ接続される。
【0061】
ここで、CPU301は、情報処理装置100の全体の制御を司る。メモリ302は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU301のワークエリアとして使用される。メモリ302に記憶されるプログラムは、CPU301にロードされることにより、コーディングされている処理をCPU301に実行させる。
【0062】
ネットワークI/F303は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータに接続される。そして、ネットワークI/F303は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークI/F303は、例えば、モデムやLANアダプタなどである。
【0063】
記録媒体I/F304は、CPU301の制御に従って記録媒体305に対するデータのリード/ライトを制御する。記録媒体I/F304は、例えば、ディスクドライブ、SSD(Solid State Drive)、USB(Universal Serial Bus)ポートなどである。記録媒体305は、記録媒体I/F304の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体305は、例えば、ディスク、半導体メモリ、USBメモリなどである。記録媒体305は、情報処理装置100から着脱可能であってもよい。
【0064】
情報処理装置100は、上述した構成部の他、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を複数有していてもよい。また、情報処理装置100は、記録媒体I/F304や記録媒体305を有していなくてもよい。
【0065】
(ジョブ実行装置201のハードウェア構成例)
ジョブ実行装置201のハードウェア構成例は、具体的には、
図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0066】
(クライアント装置202のハードウェア構成例)
クライアント装置202のハードウェア構成例は、具体的には、
図3に示した情報処理装置100のハードウェア構成例と同様であるため、説明を省略する。
【0067】
以下の説明では、主として情報処理装置100が、単独で動作し、ジョブ群を実行する場合について説明する。
【0068】
(情報処理装置100の機能的構成例)
次に、
図4を用いて、情報処理装置100の機能的構成例について説明する。
【0069】
図4は、情報処理装置100の機能的構成例を示すブロック図である。情報処理装置100は、記憶部400と、取得部401と、実行部402と、検出部403と、判定部404と、起動部405と、出力部406とを含む。
【0070】
記憶部400は、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域によって実現される。以下では、記憶部400が、情報処理装置100に含まれる場合について説明するが、これに限らない。例えば、記憶部400が、情報処理装置100とは異なる装置に含まれ、記憶部400の記憶内容が情報処理装置100から参照可能である場合があってもよい。
【0071】
取得部401~出力部406は、制御部の一例として機能する。取得部401~出力部406は、具体的には、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域に記憶されたプログラムをCPU301に実行させることにより、または、ネットワークI/F303により、その機能を実現する。各機能部の処理結果は、例えば、
図3に示したメモリ302や記録媒体305などの記憶領域に記憶される。
【0072】
記憶部400は、各機能部の処理において参照され、または更新される各種情報を記憶する。記憶部400は、例えば、ジョブフローを記憶する。ジョブフローは、例えば、ジョブ群の実行順序を規定する。ジョブフローは、例えば、ジョブ群のデータ依存関係を示す。ジョブ群のいずれかのジョブは、複数のジョブのそれぞれのジョブが出力したデータを利用するジョブであってもよい。ジョブ群のいずれかのジョブが出力したデータを、複数のジョブが利用することがあってもよい。
【0073】
ジョブフローは、例えば、ジョブ群のそれぞれのジョブを表すノードと、ジョブ群のうち異なる2つのジョブのそれぞれのジョブを表すノード間を接続する有向エッジとを含む有向グラフによって表現することができる。有向エッジは、具体的には、ジョブ群のいずれかのジョブを表すノードと、当該いずれかのジョブより実行順序が1つ後方であり、当該いずれかのジョブが出力するデータを利用する他のジョブを表すノードとを接続する。記憶部400は、具体的には、ジョブフロー管理テーブル600を用いて、ジョブフローを記憶する。ジョブフロー管理テーブル600の一例については、具体的には、
図6を用いて後述する。
【0074】
記憶部400は、例えば、ジョブ群の少なくともいずれかのジョブに対応付けて、ジョブフローを再起動する条件と、ジョブ群のうちジョブフローを再起動する起点とする1以上のジョブを示す情報との1以上の組み合わせを記憶する。条件は、例えば、いずれかのジョブに何らかの異常が発生したことである。条件は、例えば、いずれかのジョブに特定の種類の異常が発生したことであってもよい。記憶部400は、具体的には、再起動情報管理テーブル700を用いて、いずれかのジョブに対応付けて、ジョブフローを再起動する条件と、ジョブ群のうちジョブフローを再起動する起点とする1以上のジョブを示す情報との1以上の組み合わせを記憶する。再起動情報管理テーブル700の一例については、具体的には、
図7を用いて後述する。
【0075】
記憶部400は、例えば、ジョブフローが異常終了した時点における、ジョブ群のそれぞれのジョブの終了状況を表す情報を記憶する。ジョブフローの異常終了は、ジョブフローが完了せずに終了したことである。終了状況は、ジョブが実行待ちであるのか、ジョブが正常終了したのか、または、ジョブが異常終了したのかを示す。ジョブの異常終了は、ジョブが完了せずに終了したことである。記憶部400は、具体的には、ジョブ群のそれぞれのジョブの終了状況を管理する実行履歴管理テーブル800を記憶する。実行履歴管理テーブル800の一例については、具体的には、
図8を用いて後述する。
【0076】
記憶部400は、例えば、ジョブフローが異常終了した場合において、いずれかのジョブの異常が発生し、当該いずれかのジョブが異常終了していれば、当該いずれかのジョブの異常の種類を示す情報を記憶していてもよい。異常は、例えば、タイムアウトによるエラー、ジョブを実行する環境に起因するエラー、ジョブの処理内容に起因するエラー、または、実行順序が前方の他のジョブの処理内容に起因するエラーなどが考えられる。記憶部400は、具体的には、ジョブの異常の種類を示す情報を、実行履歴管理テーブル800に記憶する。実行履歴管理テーブル800の一例については、具体的には、
図8を用いて後述する。
【0077】
取得部401は、各機能部の処理に用いられる各種情報を取得する。取得部401は、取得した各種情報を、記憶部400に記憶し、または、各機能部に出力する。また、取得部401は、記憶部400に記憶しておいた各種情報を、各機能部に出力してもよい。取得部401は、例えば、自装置の利用者による操作入力に基づき、各種情報を取得する。自装置の利用者は、例えば、ジョブフローの運用者、または、ジョブフローの管理者などである。取得部401は、例えば、情報処理装置100とは異なる装置から、各種情報を受信してもよい。
【0078】
取得部401は、例えば、ジョブ群を実行することを要求するリクエストを取得する。取得部401は、具体的には、自装置の利用者による操作入力に基づき、ジョブ群を実行することを要求するリクエストの入力を受け付けることにより、当該リクエストを取得する。取得部401は、具体的には、ジョブ群を実行することを要求するリクエストを他のコンピュータから受信することにより取得してもよい。
【0079】
取得部401は、例えば、ジョブフローが異常終了したことを検出するための情報を取得する。取得部401は、例えば、ジョブフローが異常終了したことを表す通知を取得する。通知は、例えば、ジョブフローが異常終了した際に情報処理装置100によって発行される。通知は、例えば、実行部402によって発行されてもよい。
【0080】
取得部401は、例えば、ジョブ群の第1ジョブの異常を検出するための情報を取得する。取得部401は、具体的には、ジョブフローが異常終了した時点における、ジョブ群のそれぞれのジョブの終了状況を表す情報を取得する。終了状況は、ジョブが実行待ちであるのか、ジョブが正常終了したのか、または、ジョブが異常終了したのかを示す。取得部401は、より具体的には、実行履歴管理テーブル800を取得する。
【0081】
取得部401は、いずれかの機能部の処理を開始する開始トリガーを受け付けてもよい。開始トリガーは、例えば、自装置の利用者による所定の操作入力があったことである。開始トリガーは、例えば、他のコンピュータから、所定の情報を受信したことであってもよい。開始トリガーは、例えば、いずれかの機能部が所定の情報を出力したことであってもよい。
【0082】
取得部401は、例えば、ジョブ群を実行することを要求するリクエストを取得したことを、実行部402の処理を開始する開始トリガーとして受け付けてもよい。取得部401は、例えば、ジョブフローが異常終了したことを検出するための情報を取得したことを、検出部403の処理を開始する開始トリガーとして受け付けてもよい。取得部401は、例えば、ジョブ群の第1ジョブの異常を検出するための情報を取得したことを、検出部403の処理を開始する開始トリガーとして受け付けてもよい。
【0083】
実行部402は、ジョブフローに従って、ジョブ群を順に実行する。実行部402は、例えば、取得部401でジョブ群を実行することを要求するリクエストを取得した場合、ジョブフローに従って、ジョブ群を順に実行する。これにより、実行部402は、ジョブ群を実行することができ、ジョブフローを完了することができる。
【0084】
実行部402は、例えば、起動部405でジョブフローが再起動された場合、ジョブフローに従って、ジョブフローを再起動する起点とする1以上の第2ジョブのそれぞれの第2ジョブを起点に、ジョブ群の全部または一部を順に実行する。実行部402は、具体的には、起点とするそれぞれの第2ジョブより実行順序が後方の他のジョブを実行する。
【0085】
この際、実行部402は、具体的には、起点とするそれぞれの第2ジョブと並列する他のジョブのうち、実行済みである他のジョブを再実行しないようにする。実行部402は、具体的には、ジョブフローに従って、起点とするそれぞれの第2ジョブと並列する他のジョブのうち、未実行である他のジョブを実行するようにする。これにより、実行部402は、ジョブ群の全部または一部を適切に再実行することができ、ジョブフローを再起動して完了することができる。
【0086】
実行部402は、いずれかのジョブの異常により当該いずれかのジョブが異常終了した場合、ジョブフローを完了せずに異常終了する。実行部402は、ジョブフローを完了せずに異常終了する際、実行中のジョブが存在すれば、当該ジョブを異常終了する。実行部402は、ジョブフローを完了せずに異常終了する場合、それぞれのジョブの終了状況を、実行履歴管理テーブル800に反映する。実行部402は、いずれかのジョブの異常により当該いずれかのジョブが異常終了した場合、当該いずれかのジョブの異常の種類を示す情報を、実行履歴管理テーブル800に反映してもよい。
【0087】
これにより、実行部402は、ジョブフローを完了せずに異常終了する場合、ジョブフローを再起動する際に有用なそれぞれのジョブの終了状況を残しておくことができ、ジョブフローを、どのように再起動すればよいのかを判断し易くすることができる。実行部402は、いずれかのジョブの異常が発生した場合、当該いずれかのジョブの異常の種類を示す情報を残しておくことができ、ジョブフローを、どのように再起動すればよいのかを判断し易くすることができる。
【0088】
検出部403は、ジョブ群の第1ジョブの異常を検出する。検出部403は、例えば、取得部401で取得したジョブ群の第1ジョブの異常を検出するための情報に基づいて、第1ジョブの異常を検出する。検出部403は、具体的には、取得部401で取得したジョブ群のそれぞれのジョブの終了状況を表す情報に基づいて、第1ジョブが異常終了していれば、第1ジョブの異常が発生したと判定し、第1ジョブの異常を検出する。これにより、検出部403は、ジョブフローを再起動する指針を得ることができる。
【0089】
判定部404は、検出部403で第1ジョブの異常を検出した際、記憶部400を参照して、第1ジョブに対応付けられたジョブフローを再起動する1以上の条件が存在するか否かを判定する。
【0090】
判定部404は、1以上の条件が存在すると判定した場合、記憶部400を参照して、検出部403で検出した第1ジョブの異常が、第1ジョブに対応付けられたジョブフローを再起動するいずれかの条件を満たすか否かを判定する。判定部404は、例えば、記憶部400を参照して、第1ジョブに対応付けられた、ジョブフローを再起動する1以上の条件を特定する。判定部404は、例えば、特定した1以上の条件のうち第1条件が、第1ジョブに何らかの異常が発生したことを示す場合、検出部403で検出した第1ジョブの異常が、第1条件を満たすと判定する。
【0091】
判定部404は、例えば、特定した1以上の条件のうち第1条件が、第1ジョブに特定の種類の異常が発生したことを示す場合、記憶部400を参照して、第1ジョブの異常の種類を特定する。判定部404は、例えば、特定した種類が、第1条件が示す特定の種類と一致する場合、第1条件を満たすと判定する。判定部404は、例えば、特定した種類が、第1条件が示す特定の種類と一致しない場合、第1条件を満たさないと判定する。
【0092】
これにより、判定部404は、ジョブフローを再起動するか否かを決定することができる。判定部404は、第1ジョブに対応付けられた、ジョブフローを再起動する1以上の条件のうち、いずれの条件を満たすか否かに基づいて、ジョブフローを再起動する起点とする第2ジョブを柔軟に変更可能にすることができる。
【0093】
起動部405は、判定部404で、いずれかの条件を満たすと判定した場合、ジョブフローを再起動する。起動部405は、例えば、記憶部400を参照して、第1ジョブに対応付けられ、判定部404で満たすと判定したいずれかの条件と組み合わせられた、ジョブフローを再起動する起点とする1以上の第2ジョブを示す情報を取得する。起動部405は、例えば、取得した情報に基づいて、1以上の第2ジョブのそれぞれの第2ジョブを起点に、ジョブフローを再起動する。
【0094】
起動部405は、具体的には、ジョブフローに従って、1以上の第2ジョブのそれぞれの第2ジョブを起点に、当該第2ジョブより実行順序が後方の他のジョブと、当該第2ジョブと並列する未実行の他のジョブとを実行するよう、実行部402を制御する。起動部405は、より具体的には、1以上の第2ジョブのそれぞれの第2ジョブを起点とするよう、実行部402に設定する。
【0095】
これにより、起動部405は、ジョブフローを再起動する起点となるジョブを適切に設定することができ、ジョブ群を適切に完了することができ、ジョブフローを適切に完了することができる。また、起動部405は、実行部402でジョブフローを完了し易くすることができる。起動部405は、例えば、実行部402でジョブ群の全部を実行せずに済ませることができ、処理負担および処理時間の低減化を図ることができる。
【0096】
起動部405は、判定部404で、第1ジョブに対応付けられたジョブフローを再起動する1以上の条件が存在しないと判定した場合、予め設定されたいずれかのジョブを起点に、ジョブフローを再起動する。予め設定されたいずれかのジョブは、第1ジョブと、第1ジョブの直前のジョブと、ジョブフローの先頭のジョブとのいずれかのジョブである。
【0097】
起動部405は、具体的には、ジョブフローに従って、予め設定されたいずれかのジョブを起点に、当該いずれかのジョブより実行順序が後方の他のジョブと、当該いずれかのジョブと並列する未実行の他のジョブとを実行するよう、実行部402を制御する。
【0098】
これにより、起動部405は、ジョブフローを再起動する起点となるジョブが設定されていなくても、ジョブフローを再起動することができ、ジョブ群を完了することができ、ジョブフローを完了することができる。また、起動部405は、実行部402でジョブフローを完了し易くすることができる。起動部405は、例えば、実行部402でジョブ群の全部を実行せずに済ませることができ、処理負担および処理時間の低減化を図ることができる。
【0099】
起動部405は、判定部404で、いずれの条件も満たさないと判定した場合、予め設定されたいずれかのジョブを起点に、ジョブフローを再起動する。予め設定されたいずれかのジョブは、第1ジョブと、第1ジョブの直前のジョブと、ジョブフローの先頭のジョブとのいずれかのジョブである。
【0100】
起動部405は、具体的には、ジョブフローに従って、予め設定されたいずれかのジョブを起点に、当該いずれかのジョブより実行順序が後方の他のジョブと、当該いずれかのジョブと並列する未実行の他のジョブとを実行するよう、実行部402を制御する。
【0101】
これにより、起動部405は、ジョブフローを再起動する起点となるジョブが設定されていなくても、ジョブフローを再起動することができ、ジョブ群を完了することができ、ジョブフローを完了することができる。また、起動部405は、実行部402でジョブフローを完了し易くすることができる。起動部405は、例えば、実行部402でジョブ群の全部を実行せずに済ませることができ、処理負担および処理時間の低減化を図ることができる。
【0102】
出力部406は、少なくともいずれかの機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークI/F303による外部装置への送信、または、メモリ302や記録媒体305などの記憶領域への記憶である。これにより、出力部406は、少なくともいずれかの機能部の処理結果を自装置の利用者に通知可能にし、情報処理装置100の利便性の向上を図ることができる。
【0103】
出力部406は、例えば、ジョブフローを完了したことを示す通知を、自装置の利用者が参照可能に出力する。これにより、出力部406は、自装置の利用者が、ジョブフローを完了したことを把握可能にすることができる。
【0104】
(情報処理装置100の動作例)
次に、
図5~
図9を用いて、情報処理装置100の動作例について説明する。まず、
図5および
図6を用いて、情報処理装置100が、ジョブフロー管理テーブル600を用いて、ジョブフロー500を記憶する一例について説明する。
【0105】
図5は、ジョブフロー500の一例を示す説明図である。
図5に示すように、ジョブフロー500は、ジョブ群の実行順序を規定する。
図5の例では、ジョブ群は、具体的には、ジョブ1~10を含む。ジョブフロー500は、ジョブ群のデータ依存関係を示す。
【0106】
ジョブフロー500は、具体的には、ジョブ1~10のそれぞれを表すノード501~510を含む有向グラフによって表現される。ジョブiを表すノード50iと、ジョブiの次に実行する、ジョブiが出力するデータを利用するジョブjを表すノード50jとは、有向エッジによって接続される。従って、有向エッジは、データ依存関係を示す。次に、
図6の説明に移行する。
【0107】
図6は、ジョブフロー500を記憶する一例を示す説明図である。
図6において、情報処理装置100は、ジョブフロー管理テーブル600を用いて、ジョブフロー500を記憶する。ジョブフロー管理テーブル600は、例えば、
図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
【0108】
図6に示すように、ジョブフロー管理テーブル600は、ジョブフロー名と、ジョブIDと、ジョブ名と、先行ジョブIDと、後続ジョブIDとのフィールドを有する。ジョブフロー管理テーブル600は、ジョブごとに各フィールドに情報を設定することにより、ジョブ関連情報がレコード600-aとして記憶される。aは、任意の整数である。
【0109】
ジョブフロー名のフィールドには、ジョブ群の実行順序を規定するジョブフローに付与されたジョブフロー名が設定される。ジョブフロー名のフィールドには、例えば、ジョブフロー500に付与されたジョブフロー名として「ジョブフローA」が設定される。
【0110】
ジョブIDのフィールドには、上記ジョブ群のいずれかのジョブを識別するジョブIDが設定される。例えば、ジョブフロー500に実行順序が規定されたジョブ群のいずれかのジョブiを識別するジョブIDは、iであるとする。ジョブ名のフィールドには、上記ジョブIDによって識別される上記いずれかのジョブに付与されたジョブ名が設定される。例えば、ジョブiに付与されたジョブ名は、ジョブiであるとする。
【0111】
先行ジョブIDのフィールドには、上記ジョブIDによって識別される上記いずれかのジョブの1つ前に実行される他のジョブを識別する先行ジョブIDが設定される。後続ジョブIDのフィールドには、上記ジョブIDによって識別される上記いずれかのジョブの1つ後に実行される他のジョブを識別する後続ジョブIDが設定される。
【0112】
次に、
図7を用いて、情報処理装置100が記憶する、ジョブフロー500に対応する再起動情報管理テーブル700の記憶内容の一例について説明する。再起動情報管理テーブル700は、例えば、
図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
【0113】
図7は、再起動情報管理テーブル700の記憶内容の一例を示す説明図である。
図7に示すように、再起動情報管理テーブル700は、ジョブフロー名と、ジョブIDと、ジョブ名と、再起動条件と、再起動ポイントとのフィールドを有する。再起動情報管理テーブル700は、ジョブごとに各フィールドに情報を設定することにより、再起動情報がレコード700-bとして記憶される。bは、任意の整数である。また、例えば、1つのジョブに対して複数の再起動情報が存在していてもよい。
【0114】
ジョブフロー名のフィールドには、ジョブ群の実行順序を規定するジョブフローに付与されたジョブフロー名が設定される。ジョブフロー名のフィールドには、例えば、ジョブフロー500に付与されたジョブフロー名として「ジョブフローA」が設定される。
【0115】
ジョブIDのフィールドには、上記ジョブ群のいずれかのジョブを識別するジョブIDが設定される。例えば、ジョブフロー500に実行順序が規定されたジョブ群のいずれかのジョブiを識別するジョブIDは、iであるとする。ジョブ名のフィールドには、上記ジョブIDによって識別される上記いずれかのジョブに付与されたジョブ名が設定される。例えば、ジョブiに付与されたジョブ名は、ジョブiであるとする。
【0116】
再起動条件のフィールドには、上記ジョブIDによって識別される上記いずれかのジョブの異常終了時に、再起動情報を参照して上記ジョブフローを再起動する条件が設定される。再起動条件のフィールドには、上記ジョブフローを再起動する条件が存在しない場合、「n/a」が設定される。
【0117】
再起動条件のフィールドには、例えば、上記ジョブフローを再起動する条件として、上記ジョブIDによって識別される上記いずれかのジョブに発生する異常の種類を表す終了コードが設定される。設定された終了コードは、上記ジョブIDによって識別される上記いずれかのジョブに発生した異常の種類が、当該終了コードが表す特定の種類と一致する場合に、再起動情報を参照して上記ジョブフローを再起動することを示す。
【0118】
再起動ポイントのフィールドには、上記ジョブフローを再起動する起点となる1以上のジョブを示す情報が設定される。再起動条件のフィールドに、「n/a」が設定され、上記ジョブフローを再起動する起点とする1以上のジョブが存在しない場合、再起動ポイントのフィールドにも、同様に、「n/a」が設定される。再起動ポイントのフィールドには、上記ジョブフローを再起動する起点となる1以上のジョブを示す情報として、1以上のジョブのそれぞれのジョブに付与されたジョブ名が設定される。
【0119】
ここで、情報処理装置100は、ジョブフロー500に従って、ジョブ群のそれぞれのジョブを順に実行開始したとする。情報処理装置100は、ジョブ群のいずれかのジョブに異常が発生したため、実行中のジョブを異常終了し、ジョブフロー500を異常終了したとする。情報処理装置100は、ジョブフロー500を異常終了した時点における、ジョブ群のそれぞれのジョブの終了状況と、ジョブ群のそれぞれのジョブの終了コードとを表す実行履歴情報を、実行履歴管理テーブル800に格納する。
【0120】
次に、
図8を用いて、情報処理装置100が、ジョブ群のそれぞれのジョブの終了状況を表す実行履歴情報を格納した実行履歴管理テーブル800の記憶内容の一例について説明する。実行履歴管理テーブル800は、例えば、
図3に示した情報処理装置100のメモリ302や記録媒体305などの記憶領域により実現される。
【0121】
図8は、実行履歴管理テーブル800の記憶内容の一例を示す説明図である。
図8に示すように、実行履歴管理テーブル800は、ジョブフロー名と、ジョブIDと、ジョブ名と、ジョブのステータスと、ジョブの終了コードとのフィールドを有する。実行履歴管理テーブル800は、ジョブごとに各フィールドに情報を設定することにより、実行履歴情報がレコード800-cとして記憶される。cは、任意の整数である。
【0122】
ジョブフロー名のフィールドには、ジョブ群の実行順序を規定するジョブフローに付与されたジョブフロー名が設定される。ジョブフロー名のフィールドには、例えば、ジョブフロー500に付与されたジョブフロー名として「ジョブフローA」が設定される。
【0123】
ジョブIDのフィールドには、上記ジョブ群のいずれかのジョブを識別するジョブIDが設定される。例えば、ジョブフロー500に実行順序が規定されたジョブ群のいずれかのジョブiを識別するジョブIDは、iであるとする。ジョブ名のフィールドには、上記ジョブIDによって識別される上記いずれかのジョブに付与されたジョブ名が設定される。例えば、ジョブiに付与されたジョブ名は、ジョブiであるとする。
【0124】
ジョブのステータスのフィールドには、上記ジョブIDによって識別される上記いずれかのジョブの終了状況を表すステータスが設定される。ステータスは、上記ジョブIDによって識別される上記いずれかのジョブが異常終了したか、上記ジョブIDによって識別される上記いずれかのジョブが正常終了したか、または、上記ジョブIDによって識別される上記いずれかのジョブが実行待ちかを示す。
【0125】
ジョブの終了コードのフィールドには、上記ジョブIDによって識別される上記いずれかのジョブの終了コードが設定される。終了コードは、例えば、値が0であれば、上記ジョブIDによって識別される上記いずれかのジョブに異常が発生せず、上記ジョブIDによって識別される上記いずれかのジョブが正常終了したことを示す。
【0126】
終了コードは、例えば、値が1以上であれば、上記ジョブIDによって識別される上記いずれかのジョブに異常が発生し、上記ジョブIDによって識別される上記いずれかのジョブが異常終了したことを示す。終了コードは、例えば、上記ジョブIDによって識別される上記いずれかのジョブが実行待ちである場合、「n/a」である。
【0127】
次に、
図9を用いて、情報処理装置100が、再起動情報管理テーブル700と、実行履歴管理テーブル800とを参照して、ジョブフロー500を再起動する一例について説明する。
【0128】
図9は、ジョブフロー500を再起動する一例を示す説明図である。
図9において、情報処理装置100は、ジョブフロー500を異常終了したことに応じて、実行履歴管理テーブル800を参照して、ジョブ群のうち、異常終了した1以上のジョブを特定する。
図9の例では、情報処理装置100は、具体的には、実行履歴管理テーブル800の各レコード800-iにおける「ジョブのステータス」のフィールドを参照して、異常終了したジョブ4,8を特定する。
【0129】
情報処理装置100は、実行履歴管理テーブル800を参照して、異常終了したジョブの終了コードを特定する。
図9の例では、情報処理装置100は、具体的には、実行履歴管理テーブル800のうち、異常終了したジョブ4に対応するレコード800-4における「ジョブの終了コード」のフィールドを参照して、当該ジョブ4に対応する終了コード「1」を特定する。同様に、情報処理装置100は、具体的には、実行履歴管理テーブル800のうち、異常終了したジョブ8に対応するレコード800-8における「ジョブの終了コード」のフィールドを参照して、当該ジョブ8に対応する終了コード「2」を特定する。
【0130】
情報処理装置100は、ジョブフロー500を再起動する前に、異常終了した1以上のジョブと、異常終了したそれぞれのジョブの終了コードとを示す情報を、ジョブフロー500の運用者が参照可能に出力してもよい。情報処理装置100は、ジョブフロー500の運用者による特定の操作入力を受け付けてから、ジョブフロー500を再起動する。
【0131】
ここでは、情報処理装置100は、ジョブフロー500の運用者による特定の操作入力を受け付けたとする。情報処理装置100は、ジョブフロー500の運用者による特定の操作入力を受け付けたため、下記(9-1)~下記(9-5)に示すように、ジョブフロー500を再起動する。
【0132】
(9-1)情報処理装置100は、再起動情報管理テーブル700のうち、異常終了した1以上のジョブのそれぞれのジョブに対応するレコード700-iにおける「再起動条件」のフィールドを参照して、当該ジョブに対応する1以上の条件を特定する。
【0133】
図9の例では、情報処理装置100は、具体的には、再起動情報管理テーブル700のうち、異常終了したジョブ4に対応する、レコード700-4およびレコード700-5を読み出す。情報処理装置100は、具体的には、読み出したレコード700-4およびレコード700-5における「再起動条件」のフィールドを参照して、異常終了したジョブ4に対応する2つの条件を特定する。情報処理装置100は、より具体的には、異常終了したジョブ4に対応する、条件「Code≦1」および条件「Code≧2」を特定する。
【0134】
同様に、情報処理装置100は、具体的には、再起動情報管理テーブル700のうち、異常終了したジョブ8に対応する、レコード700-9およびレコード700-10を読み出す。情報処理装置100は、具体的には、読み出したレコード700-9およびレコード700-10における「再起動条件」のフィールドを参照して、異常終了したジョブ8に対応する2つの条件を特定する。情報処理装置100は、より具体的には、異常終了したジョブ8に対応する、条件「Code≦1」および条件「Code≧2」を特定する。
【0135】
(9-2)情報処理装置100は、異常終了した1以上のジョブのそれぞれのジョブについて特定した終了コードが、特定した当該ジョブに対応する1以上の条件の少なくともいずれかの条件を満たすか否かを判定する。情報処理装置100は、再起動情報管理テーブル700を参照して、異常終了したそれぞれのジョブについて、満たすと判定した当該ジョブに対応する条件と組み合わせられた、ジョブフロー500を再起動する起点とする1以上のジョブを特定する。情報処理装置100は、異常終了した1以上のジョブのそれぞれのジョブと、当該ジョブについて特定したジョブフロー500を再起動する起点とする1以上のジョブとの組み合わせを、リストに登録する。
【0136】
図9の例では、情報処理装置100は、具体的には、異常終了したジョブ4について特定した終了コード「1」が、特定したジョブ4に対応する条件「Code≦1」を満たすと判定する。情報処理装置100は、具体的には、異常終了したジョブ4について、満たすと判定したジョブ4に対応する条件「Code≦1」と組み合わせられた、ジョブフロー500を再起動する起点とするジョブ1を特定する。情報処理装置100は、具体的には、異常終了したジョブ4と、異常終了したジョブ4について特定したジョブフロー500を再起動する起点とするジョブ1との組み合わせを、リストに登録する。
【0137】
情報処理装置100は、具体的には、異常終了したジョブ8について特定した終了コード「2」が、特定したジョブ8に対応する条件「Code≧2」を満たすと判定する。情報処理装置100は、具体的には、異常終了したジョブ8について、満たすと判定したジョブ8に対応する条件「Code≧2」と組み合わせられた、ジョブフロー500を再起動する起点とするジョブ7を特定する。情報処理装置100は、具体的には、異常終了したジョブ8と、異常終了したジョブ8について特定したジョブフロー500を再起動する起点とするジョブ7との組み合わせを、リストに登録する。
【0138】
(9-3)ここで、異常終了した1以上のジョブのうち、いずれかのジョブに対応する1以上の条件が存在しない場合が考えられる。この場合、情報処理装置100は、ジョブフロー500を再起動する起点として、当該いずれかのジョブ、当該いずれかのジョブの1つ前に実行したジョブ、または、ジョブフロー500の先頭のジョブのうち、予め設定された所定のジョブを特定する。情報処理装置100は、当該いずれかのジョブと、特定した当該所定のジョブとの組み合わせを、リストに登録する。
【0139】
(9-4)ここで、異常終了した1以上のジョブのうち、いずれかのジョブに対応する1以上の条件のいずれの条件も満たされない場合が考えられる。この場合、情報処理装置100は、ジョブフロー500を再起動する起点として、当該いずれかのジョブ、当該いずれかのジョブの1つ前に実行したジョブ、または、ジョブフロー500の先頭のジョブのうち、予め設定された所定のジョブを特定する。情報処理装置100は、当該いずれかのジョブと、特定した当該所定のジョブとの組み合わせを、リストに登録する。
【0140】
(9-5)情報処理装置100は、同一のジョブを重複実行しないよう、ジョブフロー500を再起動する起点とする、リストに登録したそれぞれのジョブを起点に、ジョブフローを再起動する。
図9の例では、情報処理装置100は、具体的には、ジョブフロー500を再起動する起点とする、リストに登録したジョブ1,7を起点に、ジョブフロー500を再起動する。
【0141】
これにより、情報処理装置100は、ジョブフロー500を再起動する起点となるジョブを適切に制御することができる。情報処理装置100は、例えば、いずれかのジョブに異常が発生した場合について、当該異常の種類に応じて、ジョブフロー500を再起動する起点となるジョブを切り替えることができる。
【0142】
情報処理装置100は、例えば、いずれかのジョブに異常が発生した場合について、ジョブフローを再起動する起点として複数のジョブを設定することができる。このため、情報処理装置100は、ジョブフロー500を効率よく再起動することができ、ジョブ群のすべてのジョブを完了する際にかかる処理負担および処理時間の低減化を図ることができる。
【0143】
情報処理装置100は、自装置の利用者による特定の操作入力を待ってから、ジョブフロー500を再起動することができる。このため、情報処理装置100は、ジョブフロー500を再起動する前に、ジョブフロー500の運用者、または、ジョブフロー500の管理者などが、いずれかのジョブに発生した異常に対処し易くすることができる。
【0144】
ここでは、情報処理装置100が、ジョブフロー500の運用者による特定の操作入力を受け付けてから、ジョブフロー500を再起動する場合について説明したが、これに限らない。例えば、情報処理装置100が、ジョブフロー500の運用者による特定の操作入力を受け付けずに、ジョブフロー500を再起動する場合があってもよい。この場合、情報処理装置100は、異常終了した1以上のジョブと、異常終了したそれぞれのジョブの終了コードとを示す情報を、ジョブフロー500の運用者が参照可能に出力しなくてもよい。
【0145】
(情報処理装置100の適用例)
次に、情報処理装置100の適用例について説明する。情報処理装置100は、例えば、データ利活用の分野において、数十以上の業務システムのデータを収集し、加工および統合するような大規模システムのジョブフローに適用することができる。これにより、情報処理装置100は、大規模システムのジョブフローを柔軟に再起動可能にすることができる。このため、情報処理装置100は、大規模システムの異常時の復旧速度の向上、大規模システムの安定性の向上、または、大規模システムの運用コストの低減化などを図ることができる。
【0146】
(再起動処理手順)
次に、
図10を用いて、ジョブフローが異常終了したことに応じて情報処理装置100が実行する再起動処理手順の一例について説明する。再起動処理は、例えば、
図3に示したCPU301と、メモリ302や記録媒体305などの記憶領域と、ネットワークI/F303とによって実現される。
【0147】
図10は、再起動処理手順の一例を示すフローチャートである。
図10において、情報処理装置100は、実行履歴管理テーブル800を参照して、ジョブのステータスに基づいて、異常終了した1以上のジョブを特定する(ステップS1001)。そして、情報処理装置100は、異常終了した1以上のジョブを自装置の利用者が参照可能に出力し、自装置の利用者による特定の操作入力を受け付けるまで待機する(ステップS1002)。
【0148】
次に、情報処理装置100は、特定した1以上のジョブのうち、まだ処理対象としていないジョブを選択する(ステップS1003)。そして、情報処理装置100は、再起動情報管理テーブル700を参照して、選択したジョブに対応する1以上の再起動情報を取得し、実行履歴管理テーブル800を参照して、選択したジョブに対応する実行履歴情報を取得する(ステップS1004)。
【0149】
次に、情報処理装置100は、取得した1以上の再起動情報に基づいて、選択したジョブに対応する1以上の条件が存在するか否かを判定する(ステップS1005)。ここで、1以上の条件が存在しない場合(ステップS1005:No)、情報処理装置100は、ステップS1008の処理に移行する。一方で、1以上の条件が存在する場合(ステップS1005:Yes)、情報処理装置100は、ステップS1006の処理に移行する。
【0150】
ステップS1006では、情報処理装置100は、取得した実行履歴情報が示す終了コードが、取得した1以上の再起動情報の少なくともいずれかの再起動情報が示すいずれかの終了コードと一致するか否かを判定する(ステップS1006)。ここで、一致しない場合(ステップS1006:No)、情報処理装置100は、ステップS1008の処理に移行する。一方で、一致する場合(ステップS1006:Yes)、情報処理装置100は、ステップS1007の処理に移行する。
【0151】
ステップS1007では、情報処理装置100は、終了コードが一致したいずれかの再起動情報が示す起点となる1以上のジョブを特定し、選択したジョブに対応付けてリストに登録する(ステップS1007)。
【0152】
次に、情報処理装置100は、まだ処理対象としていないジョブが残っているか否かを判定する(ステップS1008)。ここで、まだ処理対象としていないジョブが残っている場合(ステップS1008:Yes)、情報処理装置100は、ステップS1003の処理に移行する。一方で、まだ処理対象としていないジョブが残っていない場合(ステップS1008:No)、情報処理装置100は、ステップS1009の処理に移行する。
【0153】
ステップS1009では、情報処理装置100は、異常終了した1以上のジョブのうち、リストにおいて起点となる1以上のジョブと対応付けられていない、未登録のジョブが存在するか否かを判定する(ステップS1009)。ここで、未登録のジョブが存在しない場合(ステップS1009:No)、情報処理装置100は、ステップS1011の処理に移行する。一方で、未登録のジョブが存在する場合(ステップS1009:Yes)、情報処理装置100は、ステップS1010の処理に移行する。
【0154】
ステップS1010では、情報処理装置100は、未登録のジョブごとに、起点となる所定のジョブを、当該未登録のジョブに対応付けてリストに登録する(ステップS1010)。所定のジョブは、例えば、起点となる、当該未登録のジョブ、当該未登録のジョブの1つ前に実行するジョブ、または、当該未登録のジョブより実行順序が前方であるジョブフローの先頭のジョブなどである。そして、情報処理装置100は、ステップS1011の処理に移行する。
【0155】
ステップS1011では、情報処理装置100は、同一のジョブを重複実行しないよう、リストに登録された、起点となる1以上のジョブのそれぞれのジョブを起点に、ジョブフローを再起動する(ステップS1011)。そして、情報処理装置100は、再起動処理を終了する。これにより、情報処理装置100は、ジョブフローを再起動することができる。
【0156】
ここで、情報処理装置100は、
図10の一部ステップの処理の順序を入れ替えて実行してもよい。例えば、ステップS1005,S1006の処理の順序は入れ替え可能である。例えば、ステップS1002の処理は、ステップS1008の後であってもよい。また、情報処理装置100は、
図10の一部ステップの処理を省略してもよい。例えば、ステップS1002の処理は省略可能である。
【0157】
以上説明したように、情報処理装置100によれば、ジョブフローに実行順序が規定されたジョブ群の第1ジョブの異常を検出することができる。情報処理装置100によれば、ジョブ群の少なくともいずれかのジョブに対応付けて、ジョブフローを再起動する条件と、ジョブ群のうち、ジョブフローを再起動する起点とするジョブを示す情報とを、記憶部400に記憶することができる。情報処理装置100によれば、記憶部400を参照して、検出した第1ジョブの異常が、第1ジョブに対応付けられたジョブフローを再起動する条件を満たすか否かを判定することができる。情報処理装置100によれば、条件を満たすと判定した場合、記憶部400を参照して、第1ジョブに対応付けられたジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、第2ジョブを起点に、ジョブフローを再起動することができる。これにより、情報処理装置100は、ジョブフローを適切に再起動することができる。情報処理装置100は、ジョブフローを再起動する起点を柔軟に制御可能にすることができる。
【0158】
情報処理装置100によれば、記憶部400に、第1ジョブに対応付けて、ジョブフローを再起動する条件と、ジョブ群のうち、ジョブフローを再起動する起点とする複数のジョブを示す情報とを記憶することができる。情報処理装置100によれば、条件を満たすと判定した場合、第1ジョブに対応付けられたジョブフローを再起動する起点とする複数のジョブを示す情報に基づいて、複数のジョブのそれぞれのジョブを起点に、ジョブフローを再起動することができる。情報処理装置100は、ジョブフローを再起動する起点を複数設定することができる。
【0159】
情報処理装置100によれば、記憶部400に、第1ジョブの異常の種類を表す条件を記憶することができる。情報処理装置100によれば、記憶部400を参照して、検出した第1ジョブの異常の種類が、第1ジョブに対応付けられたジョブフローを再起動する条件が表す第1ジョブの異常の種類と一致するか否かを判定することができる。情報処理装置100によれば、一致する場合、検出した第1ジョブの異常が、第1ジョブに対応付けられたジョブフローを再起動する条件を満たすと判定することができる。これにより、情報処理装置100は、第1ジョブの異常の種類に応じて、ジョブフローを再起動する起点を柔軟に制御可能にすることができる。
【0160】
情報処理装置100によれば、第1ジョブの異常を検出した際、記憶部400を参照して、第1ジョブに対応付けられたジョブフローを再起動する条件が存在するか否かを判定することができる。情報処理装置100によれば、存在しないと判定した場合、第1ジョブと、第1ジョブの直前のジョブと、ジョブフローの先頭のジョブとのうち、予め設定されたいずれかのジョブを起点に、ジョブフローを再起動することができる。これにより、情報処理装置100は、条件が設定されていなくても、ジョブフローを再起動可能にすることができる。
【0161】
情報処理装置100によれば、条件を満たさないと判定した場合、第1ジョブと、第1ジョブの直前のジョブと、ジョブフローの先頭のジョブとのうち、予め設定されたいずれかのジョブを起点に、ジョブフローを再起動することができる。これにより、情報処理装置100は、第1ジョブの異常が、設定された条件を満たさない場合にも、ジョブフローを再起動可能にすることができる。
【0162】
情報処理装置100によれば、条件を満たすと判定した場合、利用者の所定の操作入力を受け付けるまで待機することができる。情報処理装置100によれば、利用者の所定の操作入力を受け付けるまで待ってから、ジョブフローを再起動することができる。これにより、情報処理装置100は、利用者が、第1ジョブの異常に対処する余地を作成することができる。
【0163】
なお、本実施の形態で説明した情報処理方法は、予め用意されたプログラムをPCやワークステーションなどのコンピュータで実行することにより実現することができる。本実施の形態で説明した情報処理プログラムは、コンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。記録媒体は、ハードディスク、フレキシブルディスク、CD(Compact Disc)-ROM、MO(Magneto Optical disc)、DVD(Digital Versatile Disc)などである。また、本実施の形態で説明した情報処理プログラムは、インターネットなどのネットワークを介して配布してもよい。
【0164】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0165】
(付記1)ジョブフローに実行順序が規定されたジョブ群の第1ジョブの異常を検出し、
前記ジョブ群の少なくともいずれかのジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とするジョブを示す情報とを記憶する記憶部を参照して、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすか否かを判定し、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する、
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【0166】
(付記2)前記記憶部は、前記第1ジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とする複数のジョブを示す情報とを記憶し、
前記再起動する処理は、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする複数のジョブを示す情報に基づいて、前記複数のジョブのそれぞれのジョブを起点に、前記ジョブフローを再起動する、ことを特徴とする付記1に記載の情報処理プログラム。
【0167】
(付記3)前記条件は、前記第1ジョブの異常の種類を表し、
前記判定する処理は、
前記記憶部を参照して、検出した前記第1ジョブの異常の種類が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件が表す前記第1ジョブの異常の種類と一致する場合、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定する、ことを特徴とする付記1または2に記載の情報処理プログラム。
【0168】
(付記4)前記第1ジョブの異常を検出した際、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件が存在しないと判定した場合、前記第1ジョブと、前記第1ジョブの直前のジョブと、前記ジョブフローの先頭のジョブとのうち、予め設定されたいずれかのジョブを起点に、前記ジョブフローを再起動する、ことを特徴とする付記1または2に記載の情報処理プログラム。
【0169】
(付記5)前記第1ジョブの異常を検出した際、前記記憶部を参照して、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たさないと判定した場合、前記第1ジョブと、前記第1ジョブの直前のジョブと、前記ジョブフローの先頭のジョブとのうち、予め設定されたいずれかのジョブを起点に、前記ジョブフローを再起動する、ことを特徴とする付記1または2に記載の情報処理プログラム。
【0170】
(付記6)前記再起動する処理は、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、利用者の所定の操作入力を受け付けるまで待ってから、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する、ことを特徴とする付記1または2に記載の情報処理プログラム。
【0171】
(付記7)ジョブフローに実行順序が規定されたジョブ群の第1ジョブの異常を検出し、
前記ジョブ群の少なくともいずれかのジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とするジョブを示す情報とを記憶する記憶部を参照して、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすか否かを判定し、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する、
処理をコンピュータが実行することを特徴とする情報処理方法。
【0172】
(付記8)ジョブフローに実行順序が規定されたジョブ群の第1ジョブの異常を検出し、
前記ジョブ群の少なくともいずれかのジョブに対応付けて、前記ジョブフローを再起動する条件と、前記ジョブ群のうち、前記ジョブフローを再起動する起点とするジョブを示す情報とを記憶する記憶部を参照して、検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすか否かを判定し、
検出した前記第1ジョブの異常が、前記第1ジョブに対応付けられた前記ジョブフローを再起動する条件を満たすと判定した場合、前記記憶部を参照して、前記第1ジョブに対応付けられた前記ジョブフローを再起動する起点とする第2ジョブを示す情報に基づいて、前記第2ジョブを起点に、前記ジョブフローを再起動する、
制御部を有することを特徴とする情報処理装置。
【符号の説明】
【0173】
101~110,501~510 ノード
100 情報処理装置
121,500 ジョブフロー
122,400 記憶部
200 情報処理システム
201 ジョブ実行装置
202 クライアント装置
210 ネットワーク
300 バス
301 CPU
302 メモリ
303 ネットワークI/F
304 記録媒体I/F
305 記録媒体
401 取得部
402 実行部
403 検出部
404 判定部
405 起動部
406 出力部
600 ジョブフロー管理テーブル
700 再起動情報管理テーブル
900 実行履歴管理テーブル