(57)【要約】【課題】各部が分散構成されたシステムにおいて、ワークフローの処理中にシステムのいずれかで障害が発生した場合、分散配置された各構成の処理状態の情報の不整合による再開時に生じる不都合を抑制する。【解決手段】情報処理システム１は、ワークフローを実行させるためのジョブを生成するサーバ２と、ジョブを構成する処理単位の状態がジョブごとに記憶されるワークフローＤＢ３と、処理単位を実行する複数のタスク実行部４と、サーバ２により処理単位が格納される依頼キュー６Ａと、依頼キュー６Ａから処理単位が取り出され、タスク実行部４で実行された後、タスク実行部４により処理単位に対する処理結果が格納される結果キュー６Ｂと、システムのいずれかで障害が発生した後のシステムの再起動時、又は予め定められたタイミングに、依頼キュー６Ａ及び結果キュー６Ｂの格納状態に基づいて処理単位の状態を示す情報を出力する出力手段７０１とを備える。【選択図】図１
2020119018.tif 000002
【特許請求の範囲】
【請求項１】
各部が分散構成されたシステムであって、
１以上の処理単位が任意に組み合わされて定義されたワークフローを管理するとともに、前記ワークフローを実行させるためのジョブを生成する管理部と、
前記管理部により前記処理単位の状態が前記ジョブごとに記憶される記憶部と、
前記処理単位を実行する複数の処理部と、
前記管理部により実行要求として前記処理単位が格納される処理要求格納部と、
前記処理要求格納部から前記処理単位が取り出され、前記処理部で実行された後、前記処理部により前記処理単位に対する処理結果が格納される処理結果格納部と、
前記管理部、前記記憶部、及び前記複数の処理部のいずれかで障害が発生した後の前記システムの再起動時、又は予め定められたタイミングに、前記処理要求格納部及び前記処理結果格納部の格納状態に基づいて前記処理単位の状態を示す情報を出力する出力部と、
を備えた情報処理システム。
【請求項２】
前記出力部は、前記記憶部に記憶されている前記処理単位の状態が依頼済みの前記処理単位について、前記処理要求格納部及び前記処理結果格納部の格納状態に基づいて前記処理単位の状態を示す情報を出力する、
請求項１に記載の情報処理システム。
【請求項３】
前記格納状態は、格納されているか否かの状態である、
請求項１又は２に記載の情報処理システム。
【請求項４】
前記出力部は、前記処理要求格納部に前記処理単位が格納されておらず、前記処理結果格納部に前記処理結果が格納されているときは、前記処理結果に応じた前記処理単位の状態を示す情報を出力する、
請求項３に記載の情報処理システム。
【請求項５】
前記出力部は、前記処理結果が正常終了の場合、前記処理単位の状態を示す情報として処理が正常終了した旨を示す情報を前記管理部に出力する、
請求項４に記載の情報処理システム。
【請求項６】
前記出力部は、前記処理結果が正常終了の場合、前記処理単位の状態を示す情報として処理が正常終了した旨を示す情報を前記管理部に出力する、
請求項４に記載の情報処理システム。
【請求項７】
前記出力部は、前記処理要求格納部に前記処理単位が格納されており、前記処理結果格納部に前記処理結果が格納されていないときは、前記処理部が処理単位を実行中である旨の情報を出力する、
請求項３に記載の情報処理システム。
【請求項８】
前記出力部は、予め定められた時間を経過しても前記処理結果格納部に前記処理結果が格納されない場合、前記処理部に障害が発生した可能性があることを示す情報を出力する、
請求項７に記載の情報処理システム。
【請求項９】
前記出力部は、前記処理要求格納部に前記処理単位が格納されておらず、前記処理結果格納部に前記処理結果が格納されていないときは、当該処理単位を再実行する要求の情報を前記管理部に出力する、
請求項３に記載の情報処理システム。
【請求項１０】
自装置が適用されるシステムの再起動時、又は予め定められたタイミングに、１以上の処理単位が任意に組み合わされて定義されたワークフローを実行させるためのジョブを構成する前記処理単位が実行要求として格納される処理要求格納部、及び前記処理単位に対する処理結果が格納される前記処理結果格納部の格納状態に基づいて、前記処理単位の状態を示す情報を出力する出力部、
を備えた情報処理装置。
【請求項１１】
コンピュータを、
当該コンピュータが適用されるシステムの再起動時、又は予め定められたタイミングに、１以上の処理単位が任意に組み合わされて定義されたワークフローを実行させるためのジョブを構成する前記処理単位が実行要求として格納される処理要求格納部、及び前記処理単位に対する処理結果が格納される前記処理結果格納部の格納状態に基づいて、前記処理結果の状態を示す情報を出力する出力手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理システム、情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
近年、ワークフローシステムにおいて、ワークフローを記述したシナリオを実行中に障害が発生した場合でも、処理データに対して一貫性をもってシナリオの再実行を可能とするワークフロー実行装置が提案されている（例えば、特許文献１参照。）。
【０００３】
特許文献１に記載されたワークフロー実行方法は、アクティビティの実行時にシナリオインスタンスＩＤに対応してシナリオステータスを組にしてシナリオステータス管理手段に格納し、シナリオの実行中に障害を検知した場合、シナリオステータス管理手段のシナリオステータスカラムを更新して未完終了フラグを設定し、シナリオの再実行時には新規シナリオインスタンスＩＤを発行し、未完終了フラグが設定されているシナリオステータス管理手段のシナリオインスタンスＩＤを取得し、この取得したシナリオインスタンスＩＤをキーに検索して、保存されているデータオブジェクトを取得し、このデータオブジェクトに付与されているデータオブジェクトＩＤを新たなシナリオインスタンスＩＤに関連付けて採番される新しいデータオブジェクトＩＤに書き換えてシナリオを再実行する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第３４６３０２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
各部が分散構成されたシステムにおいて、ワークフローの処理中にシステムのいずれかで障害が発生したためにステータスの更新ができない場合、再起動したときに再実行してはいけない処理が実行される等の不都合が発生することがある。
【０００６】
本発明の課題は、各部が分散構成されたシステムにおいて、ワークフローの処理中にシステムのいずれかで障害が発生した場合、分散配置された各構成の処理状態の情報の不整合による再開時に生じる不都合を抑制することができる情報処理システム、情報処理装置及びプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
［１］各部が分散構成されたシステムであって、
１以上の処理単位が任意に組み合わされて定義されたワークフローを管理するとともに、前記ワークフローを実行させるためのジョブを生成する管理部と、
前記管理部により前記処理単位の状態が前記ジョブごとに記憶される記憶部と、
前記処理単位を実行する複数の処理部と、
前記管理部により実行要求として前記処理単位が格納される処理要求格納部と、
前記処理要求格納部から前記処理単位が取り出され、前記処理部で実行された後、前記処理部により前記処理単位に対する処理結果が格納される処理結果格納部と、
前記管理部、前記記憶部、及び前記複数の処理部のいずれかで障害が発生した後の前記システムの再起動時、又は予め定められたタイミングに、前記処理要求格納部及び前記処理結果格納部の格納状態に基づいて前記処理単位の状態を示す情報を出力する出力部と、を備えた情報処理システム。
［２］前記出力部は、前記記憶部に記憶されている前記処理単位の状態が依頼済みの前記処理単位について、前記処理要求格納部及び前記処理結果格納部の格納状態に基づいて前記処理単位の状態を示す情報を出力する、前記［１］に記載の情報処理システム。
［３］前記格納状態は、格納されているか否かの状態である、前記［１］又は［２］に記載の情報処理システム。
［４］前記出力部は、前記処理要求格納部に前記処理単位が格納されておらず、前記処理結果格納部に前記処理結果が格納されているときは、前記処理結果に応じた前記処理単位の状態を示す情報を出力する、前記［３］に記載の情報処理システム。
［５］前記出力部は、前記処理結果が正常終了の場合、前記処理単位の状態を示す情報として処理が正常終了した旨を示す情報を前記管理部に出力する、前記［４］に記載の情報処理システム。
［６］前記出力部は、前記処理結果が異常終了の場合、前記処理単位の状態を示す情報として処理が異常終了した旨を示す情報を前記管理部に出力する、前記［４］に記載の情報処理システム。
［７］前記出力部は、前記処理要求格納部に前記処理単位が格納されており、前記処理結果格納部に前記処理結果が格納されていないときは、前記処理部が処理単位を実行中である旨の情報を出力する、前記［３］に記載の情報処理システム。
［８］前記出力部は、予め定められた時間を経過しても前記処理結果格納部に前記処理結果が格納されない場合、前記処理部に障害が発生した可能性があることを示す情報を出力する、前記［７］に記載の情報処理システム。
［９］前記出力部は、前記処理要求格納部に前記処理単位が格納されておらず、前記処理結果格納部に前記処理結果が格納されていないときは、当該処理単位を再実行する要求の情報を前記管理部に出力する、前記［３］に記載の情報処理システム。
［１０］自装置が適用されるシステムの再起動時、又は予め定められたタイミングに、１以上の処理単位が任意に組み合わされて定義されたワークフローを実行させるためのジョブを構成する前記処理単位が実行要求として格納される処理要求格納部、及び前記処理単位に対する処理結果が格納される前記処理結果格納部の格納状態に基づいて、前記処理単位の状態を示す情報を出力する出力部、を備えた情報処理装置。
［１１］コンピュータを、当該コンピュータが適用されるシステムの再起動時、又は予め定められたタイミングに、１以上の処理単位が任意に組み合わされて定義されたワークフローを実行させるためのジョブを構成する前記処理単位が実行要求として格納される処理要求格納部、及び前記処理単位に対する処理結果が格納される前記処理結果格納部の格納状態に基づいて、前記処理結果の状態を示す情報を出力する出力手段として機能させるためのプログラム。
【発明の効果】
【０００８】
請求項１、１０、１１に係る発明によれば、各部が分散構成されたシステムにおいて、ワークフローの処理中にシステムのいずれかで障害が発生した場合、分散配置された各構成の処理状態の情報の再開時に生じる不都合を抑制することができる。
請求項２、３に係る発明によれば、処理要求格納部及び処理結果格納部の両方の格納状態を調べることにより処理結果の状態が分かる。
請求項４に係る発明によれば、処理単位に対する処理が処理部で完了した後に障害が発生したことが分かる。
請求項５、６に係る発明によれば、処理単位に対する処理が処理部で完了した後に処理結果を示す情報として正常終了した旨又は異常終了した旨を管理部に知らせることができる。
請求項７に係る発明によれば、処理単位の処理を処理部に依頼した後に障害が発生したことが分かる。
請求項８に係る発明によれば、処理単位の処理を処理部に依頼した後に予め定められた時間を経過しても処理結果格納部に処理結果が格納されない場合には、処理部に障害が発生した可能性があることが分かる。
請求項９に係る発明によれば、処理要求格納部及び処理結果格納部のいずれにも格納されていない場合、処理単位の処理を処理部に依頼する前に障害が発生したことが分かる。
【図面の簡単な説明】
【０００９】
【図１】図１は、本発明の実施の形態に係る情報処理システムの構成例を示すブロック図である。
【図２】図２は、ワークフローＤＢに格納されるレコードの一例を示し、図２（ａ）は、ワークフローインスタンスＤＢレコードの一例を示す図、図２（ｂ）は、タスクインスタンスＤＢレコードの一例を示す図である。
【図３】図３（ａ）〜（ｃ）は、タスク処理の流れの一例を示す図である。
【図４】図４（ａ）、（ｂ）は、タスク処理の流れの一例を示す図である。
【図５】図５は、タスク処理の流れの一例を示す図である。
【図６】図６は、タスク処理の流れの一例を示す図である。
【図７】図７は、情報処理システムの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について図面を参照して説明する。なお、各図中、実質的に同一の機能を有する構成要素については、同一の符号を付してその重複した説明を省略する。
【００１１】
［実施の形態の要約］
本実施の形態に係る情報処理システムは、各部が分散構成されたシステムであって、１以上の処理単位が任意に組み合わされて定義されたワークフローを管理するとともに、ワークフローを実行させるためのジョブを生成する管理部と、管理部により処理単位の状態がジョブごとに記憶される記憶部と、処理単位を実行する複数の処理部と、管理部により実行要求として処理単位が格納される処理要求格納部と、処理要求格納部から処理単位が取り出され、処理部で実行された後、処理部により処理単位に対する処理結果が格納される処理結果格納部と、管理部、記憶部、及び複数の処理部のいずれかで障害が発生した後のシステムの再起動時、又は予め定められたタイミングに、処理要求格納部及び処理結果格納部の格納状態に基づいて処理単位の状態を示す情報を出力する出力部とを備える。
【００１２】
予め定められたタイミングには、例えば、次の場合がある。
（ａ）ワークフローの実行開始前
（ｂ）ワークフローの実行終了後
これらは、システムが稼働していない時間帯（例えば、１日のうちシステム稼働前又は稼働後）であるが、これらに限られない。
【００１３】
［実施の形態］
図１は、本発明の実施の形態に係る情報処理システムの構成例を示すブロック図である。この情報処理システム１は、各部が分散構成されたシステムであって、ワークフローサーバ２と、ワークフローデータベース（ＤＢ）３と、処理を実行する複数のタスク実行部４Ａ、４Ｂ、４Ｃ・・・（これらを総称するときは、以下「タスク実行部４」ともいう。）と、クライアント５と、依頼キュー６Ａと、結果キュー６Ｂと、情報処理装置７とを有し、これらがネットワーク８によって互いに接続されている。ワークフローサーバ２は、管理部の一例である。ワークフローＤＢ３は、記憶部の一例である。タスク実行部４は、処理部の一例である。ワークフローサーバ２、ワークフローＤＢ３及びタスク実行部４は、分散配置された各構成の一例である。依頼キュー６Ａは、処理要求格納部の一例である。結果キュー６Ｂは、処理結果格納部の一例である。
【００１４】
なお、依頼キュー６Ａ及び結果キュー６Ｂは、ワークフローサーバ２や情報処理装置７に設けられていてもよく、クラウドサーバ等の外部サーバに設けられていてもよい。また、依頼キュー６Ａ及び結果キュー６Ｂは、順序の制御がワークフローサーバ２等で行われるのであれば、キュー形式に限られず、それぞれ対応するメモリを用いてもよく、共通に使用するメモリを用いてもよい。
【００１５】
「ワークフロー」とは、処理の流れを意味し、情報処理システム１は、処理の流れを自動化又は半自動化するシステムである。「処理」には、例えば、手書きされた帳票等の文書に対するＯＣＲ（光学文字認識）処理、ＯＣＲ結果の確認・修正処理、承認処理、文書データの登録処理等がある。
【００１６】
ワークフローＤＢ３には、プロセル管理部２１によりタスクの状態がジョブごとに記憶される。ワークフローＤＢ３には、ワークフローインスタンスＤＢレコード３１（図２（ａ）参照）、タスクインスタンスＤＢレコード３２（図２（ｂ）参照）、ワークフロー定義等が記憶されている。ジョブは、少なくとも１つのタスクから構成されている。タスクは、処理単位の一例である。
【００１７】
依頼キュー６Ａには、タスク管理部２２からタスク実行部４に処理を依頼する際にタスク管理部２２によりタスク（図１では、task1,task2・・・で表す。）６１が格納される。なお、依頼キュー６Ａは、タスク実行部４に応じて分けてもよく、タスク実行部４に共通に使用されるようにしてもよい。依頼キュー６Ａには、処理される順序に従って１つ又は２つ以上のタスク６１が格納される。
【００１８】
タスク６１には、ワークフローインスタンスＩＤ、タスクインスタンスＩＤ、タスク実行部４を識別するタスク実行部識別情報（ＵＲＬ、タスク実行部名等）、タスクの実行に必要なパラメータ等の情報が登録される。ワークフローインスタンスＩＤは、ワークフローインスタンスを識別する識別情報の一例である。タスクインスタンスＩＤは、タスクインスタンスを識別する識別情報の一例である。ワークフローインスタンスは、ジョブの一例である。
【００１９】
結果キュー６Ｂには、タスク実行部４からタスク管理部２２にタスク６１に対する処理結果を返す際にタスク実行部４により処理結果（図１では、result1，result2・・・で表す。）６２が格納される。結果キュー６Ｂには、処理される順序に従って１つ又は２つ以上の処理結果６２が格納されるなお、結果キュー６Ｂは、タスク実行部４に応じて分けてもよく、タスク実行部４に共通に使用されるようにしてもよい。また、依頼キュー６Ａ及び結果キュー６Ｂは、同一の記憶部内に設けてもよい。
【００２０】
処理結果６２には、ワークフローインスタンスＩＤ、タスクインスタンスＩＤ、タスク６１の実行結果（正常終了／異常終了）等の情報が登録される。
【００２１】
タスク実行部４は、処理に対応して設けられている。処理が例えば、ＯＣＲ処理の場合、ＯＣＲ処理を実行する機能を有するタスク実行部４がそのＯＣＲ処理を実行する。タスク実行部４は、依頼キュー６Ａに格納されたタスク６１に含まれるタスク実行部識別情報が自己を示している場合、そのタスク６１を依頼キュー６Ａから取り出して処理を実行する。タスク実行部４は、タスク６１を実行した後、タスク６１に対して正常終了で完了（正常完了）したか、異常終了で完了（異常完了）したかの実行結果を含む処理結果６２を結果キュー６Ｂに格納する。
【００２２】
図２は、ワークフローＤＢ３に格納されるレコードの一例を示し、図２（ａ）は、ワークフローインスタンスＤＢレコード３１の一例を示し、図２（ｂ）は、タスクインスタンスＤＢレコード３２の一例を示す。
【００２３】
ワークフローインスタンスＤＢレコード３１は、ワークフローインスタンスＩＤ、ワークフロー名、ステータス等の項目を有する。ワークフローインスタンスＩＤには、ワークフローインスタンスＩＤが記録される。ワークフロー名には、ワークフローの名前が記録される。ステータスには、ワークフローインスタンスの実行状況が記録され、「Active」、「Completed」の２種がある。「Active」は、ワークフローインスタンスが生成されたことを意味する。「Completed」は、ワークフローインスタンスが正常終了したことを意味する。なお、ワークフローインスタンスＩＤの代わりに、ジョブを識別するジョブＩＤを用いてもよい。
【００２４】
タスクインスタンスＤＢレコード３２は、タスクインスタンスＩＤ、ワークフローインスタンスＩＤ、ワークフロー名、ステータス等の項目を有する。タスクインスタンスＩＤには、タスクインスタンスＩＤが記録される。ワークフロー名には、ワークフローの名前が記録される。ステータスには、タスクの実行状況が記録され、「Ready」、「Running」、「Completed」、「Failed」の４種がある。「Ready」は、タスクインスタンスが生成されたことを意味する。「Running」は、タスク実行部４が処理を実行中であることを意味する。処理を依頼した直後に「Running」となる。「Completed」は、タスクの処理が正常終了したことを意味する。「Failed」は、タスクの処理が失敗したことを意味する。「Ready」、「Running」、「Completed」、及び「Failed」は、処理単位の状態を示す情報の一例である。「Running」は、処理単位の依頼済みの一例である。「Completed」は、処理が正常終了した旨の情報の一例である。「Failed」は、処理が異常終了した旨の情報の一例である。
【００２５】
（ワークフローサーバの構成）
ワークフローサーバ２は、プロセス管理部２１と、タスク管理部２２とを備える。
【００２６】
プロセス管理部２１は、複数の処理の流れが定義されたワークフローを管理する。プロセス管理部２１は、ワークフローＤＢ３からワークフロー定義を読み込み、クライアント５からの指示に基づいてワークフローインスタンスを生成し、実行する。すなわち、プロセス管理部２１は、ワークフロー定義に基づき実行するタスクを選択し、その後の制御はタスク管理部２２に任せ、タスク管理部２２から処理完了通知を受け取ったら、次に実行するタスクを選択する。また、プロセス管理部２１は、後述する障害検出手段７００からエラー通知を受け取った場合には、エラーをクライアント５に通知する。
【００２７】
プロセス管理部２１は、ワークフローインスタンスの実行状況をワークフローＤＢ３の図２（ａ）に示すワークフローインスタンスＤＢレコード３１のステータスに保存、更新する。すなわち、プロセス管理部２１は、ワークフローインスタンスを生成した際に、実行状況としてワークフローインスタンスＤＢレコード３１のステータスに「Active」を記録し、正常終了すると「Completed」に更新する。
【００２８】
（タスク管理部の構成）
タスク管理部２２は、プロセス管理部２１から実行を依頼されたタスクの実行を管理する。実際の処理はタスク実行部４に依頼する。
【００２９】
タスク管理部２２は、タスク実行部４に処理を依頼する場合、依頼キュー６Ａにプロセス管理部２１が選択したタスク６１を記録する。タスク実行部４からの処理結果６２を取得する場合、結果キュー６Ｂから処理結果６２を取得する。
【００３０】
タスク管理部２２は、タスク６１の実行状況をワークフローＤＢ３の図２（ｂ）に示すタスクインスタンスＤＢレコード３２のステータスに記録、更新する。すなわち、タスク管理部２２は、プロセス管理部２１から実行を依頼された際に、ワークフローインスタンスに紐付いたタスク６１の実行状況としてタスクインスタンスＤＢレコード３２のステータスに「Ready」を記録し、タスク実行部４に処理を依頼する直前に「Running」に更新し、タスク実行部４からの処理結果が正常終了であれば「Completed」に更新し、異常終了であれば「Failed」に更新する。
【００３１】
タスク管理部２２は、タスクの実行状況のステータスを「Completed」に更新した場合、処理完了通知をプロセス管理部２１に返し、「Failed」に更新した場合、エラー通知をプロセス管理部２１に返す。「Running」状態の場合はタスク実行部４で処理が行われるため、タスク管理部２２は、プロセス管理部２１からの制御は一切受け付けない。
【００３２】
（情報処理装置の構成）
情報処理装置７は、制御部７０と、記憶部７１と、通信部７２とを備える。
【００３３】
制御部７０は、ＣＰＵ（Central Processing Unit）、インターフェース等から構成されている。ＣＰＵは、記憶部７１に記憶されたプログラム７１０に従って動作することにより、障害検出手段７００、出力手段７０１等として機能する。なお、障害検出手段７００を情報処理装置７に設けずにワークフローサーバ２、ワークフローＤＢ３に設けてもよく、これらとは独立して設けてもよい。
【００３４】
記憶部７１は、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）、ハードディスク等から構成されている。記憶部７１は、プログラム７１０等の各種の情報を記憶する。
【００３５】
障害検出手段７００は、例えば、ワークフローサーバ２、ワークフローＤＢ３及び各タスク実行部４に定期的に確認信号を送信し、確認信号に対する応答信号の有無により障害を検出する。例えば、ワークフローサーバ２、ワークフローＤＢ３又はタスク実行部４がダウンした場合、応答信号を送信できなくなり、障害検出手段７００は障害を検出する。
【００３６】
出力手段７０１は、障害検出手段７００により障害が検出された後のシステムの再起動時、又は予め定められたタイミング（例えば、システムの稼働前又は稼働後）に、依頼キュー６Ａ及び結果キュー６Ｂの格納状態に基づいてタスクの状態を示す情報をワークフローサーバ２に出力する。すなわち出力手段７０１は、ワークフローＤＢ３に記憶されているタスクの状態が依頼済みの「Running」のワークフローについて、依頼キュー６Ａ及び結果キュー６Ｂの格納状態に基づいてタスクの状態を示す情報を出力する。ここで、「格納状態」は、タスク６１又は処理結果６２が格納されているか否かの状態である。
【００３７】
「Running」状態は、タスク管理部２２がタスク実行部４にタスクの処理を依頼した後に障害が発生し、その処理結果６２を取得していないままの状態である。依頼キュー６Ａにタスク実行部４が未処理のタスク６１が蓄積されている場合もあれば、結果キュー６Ｂにタスク管理部２２が未取得の処理結果６２が蓄積されている場合もあれば、依頼キュー６Ａ及び結果キュー６Ｂのいずれにも情報が格納されていない場合がある。ワークフローサーバ２は、再稼働しているため、依頼したときの制御状態は、消滅しており、受け取ることができない状態にある。
【００３８】
出力手段７０１は、依頼キュー６Ａにタスク６１が格納されておらず、結果キュー６Ｂに処理結果６２が格納されているときは、処理結果６２に応じたタスク６１の状態を示す情報をタスク管理部２２に出力する。この場合、処理結果６２が正常終了の場合、タスク６１の状態を示す情報として処理が正常終了した旨の情報（例えば、処理完了通知）をタスク管理部２２に出力する。一方、処理結果６２が異常終了の場合、タスク６１の状態を示す情報として処理が異常終了した旨の情報（例えば、エラー通知）をタスク管理部２２に出力する。
【００３９】
また、出力手段７０１は、依頼キュー６Ａにタスク６１が格納されており、結果キュー６Ｂに処理結果６２が格納されていないときは、タスク実行部４が処理を実行中である旨の情報（例えば、処理実行中）をタスク管理部２２に出力する。この場合、出力手段７０１は、予め定められた時間を経過しても結果キュー６Ｂに処理結果６２が格納されない場合、タスク実行部４に障害が発生した可能性があることを示す情報（例えば、警告）をタスク管理部２２に出力する。
【００４０】
出力手段７０１は、依頼キュー６Ａにタスク６１が格納されておらず、結果キュー６Ｂに処理結果６２が格納されていないときは、当該タスク６１を再実行する要求の情報をタスク管理部２２に出力する。
【００４１】
（実施の形態の動作）
次に、情報処理システム１の動作の一例について図３から図７を参照して説明する。図３から図６は、タスク処理の流れの一例を示す図である。図７は、情報処理システム１の動作の一例を示すフローチャートである。
【００４２】
（１）タスク処理の流れ
図３（ａ）に示すように、連続して処理されるタスク１、タスク２及びタスク３からなるワークフローインスタンスが生成されたとする。また、タスク１はタスク実行部４Ａが実行し、タスク２はタスク実行部４Ｂが実行し、タスク３はタスク実行部４Ｃが実行するものとする。
【００４３】
ワークフローサーバ２のプロセス管理部２１は、クライアント７から処理が依頼されると、例えば、図３（ｂ）に示すように、ワークフローインスタンスＤＢレコード３１のワークフローインスタンスＩＤに「testwf-id1」を記録し、ワークフロー名に「testwf」を記録し、ステータスに「Active」を記録する。
【００４４】
タスク実行部４Ａにタスク１の処理が依頼されると、ワークフローサーバ２のタスク管理部２２は、例えば、図３（ｃ）に示すように、タスクインスタンスＤＢレコード３２のタスクインスタンスＩＤに「task1id1-testwf-id1」を記録し、タスク名に「task1」を記録し、ワークフローインスタンスＩＤに「testwf-id1」を記録し、ワークフロー名に「testwf」を記録し、ステータスに「Ready」を記録する。
【００４５】
タスク実行部４Ａがタスク１の処理を開始すると、例えば、図４（ａ）に示すように、タクス管理部２２は、タスクインスタンスＤＢレコード３２のステータスを「Ready」から「Running」に更新する。「Running」の状態では、タスク実行部４Ａがタスク６１の処理を行っているため、プロセス管理部２１では制御はできない状態にある。
【００４６】
タスク実行部４Ａによるタスク１の処理が終了すると、例えば、図４（ｂ）に示すように、タスク管理部２２は、タスクインスタンスＤＢレコード３２のステータスを「Running」から「Completed」に更新する。
【００４７】
タスク実行部４Ｂにタスク２が依頼されると、例えば、図５に示すように、タスク管理部２２は、タスクインスタンスＤＢレコード３２に新たなレコードを記録する。すなわち、タスクインスタンスＤＢレコード３２の２行目のタスクインスタンスＩＤに「task2id1-testwf-id1」が記録され、タスク名に「task2」が記録され、ワークフローインスタンスＩＤに「testwf-id1」が記録され、ワークフロー名に「testwf」が記録され、ステータスに「Ready」が記録される。
【００４８】
タスク実行部４Ｂによりタスク２の処理が終了し、タスク２と同様にタスク３の処理が終了してワークフローが終了すると、図６に示すように、タスクインスタンスＤＢレコード３２の３行目のタスクインスタンスＩＤに「task3id1-testwf-id1」が記録され、タスク名に「task3」が記録され、ワークフローインスタンスＩＤに「testwf-id1」が記録され、ワークフロー名に「testwf」が記録され、ステータスに「Completed」が記録される。
【００４９】
（２）障害発生後の再起動時、又は予め定められたタイミングになった場合
障害検出手段７００により障害が検出された後の再起動時（Ｓ１：Ｙｅｓ）、又は予め定められたタイミングになった場合（Ｓ２：Ｙｅｓ）、出力手段７０１は、タスクインスタンスＤＢレコード３２のステータスが「Running」のレコードがあるか否かを判断する（Ｓ３）。「Running」のレコードがなければ（Ｓ３：Ｎｏ）、処理は終了する。
【００５０】
タスクインスタンスＤＢレコード３２のステータスが「Running」のレコードがある場合（Ｓ３：Ｙｅｓ）、出力手段７０１は、結果キュー６Ｂに処理結果６２が格納されているか否かを判断する（Ｓ４）。
【００５１】
結果キュー６Ｂに処理結果６２が格納されている場合（Ｓ４：Ｙｅｓ）、正常終了で完了したか否かを判断する（Ｓ５）。結果キュー６Ｂに処理結果６２が格納されている場合、タスク実行部４での処理が完了した後に障害が発生したと推定することができる。
【００５２】
結果キュー６Ｂに格納された処理結果６２に含まれる実行結果が正常終了を示している場合、すなわち正常終了で完了している場合（Ｓ５：Ｙｅｓ）、出力手段７０１は、タスクインスタンスＤＢレコード３２のステータスを「Completed」に更新し、当該タスク６１の処理完了をプロセス管理部２１に通知する（Ｓ６）。処理完了通知により、プロセス管理部２１が次のタスク６１に制御を移すことになる。
【００５３】
上記ステップＳ４において、結果キュー６Ｂに格納された処理結果６２に含まれる実行結果が異常終了を示している場合、すなわち正常終了で完了していない場合（Ｓ５：Ｎｏ）、出力手段７０１は、タスクインスタンスＤＢレコード３２のステータスを「Failed」に更新し、当該タスク６１のエラーをプロセス管理部２１に通知する（Ｓ７）。なお、この場合、該当するタスク６１の前方のタスク６１に制御を戻すようにプロセス管理部２１に通知してもよく、該当するワークフローインスタンスを削除してもよい。また、エラーの通知を含むこれらのうちいずれを採用するかをクライアント７に選択させてもよい。
【００５４】
上記ステップＳ４において、結果キュー６Ｂに処理結果６２が格納されていない場合（Ｓ４：Ｎｏ）、出力手段７０１は、依頼キュー６Ａにタスク６１が格納されているか否かを判断する（Ｓ８）。
【００５５】
依頼キュー６Ａにタスク６１が格納されている場合（Ｓ８：Ｙｅｓ）、出力手段７０１は、予め定められた時間結果キュー６Ｂに処理結果６２が格納されるまで待機する（Ｓ９）。結果キュー６Ｂに処理結果６２が格納されておらず、依頼キュー６Ａにタスク６１が格納されている場合は、タスク実行部４に処理が依頼された後に障害が発生したと推定することができる。しかし、タスク実行部４が処理済みであるか否かは不明であることから、ステップＳ９において、予め定められた時間結果キュー６Ｂに処理結果６２が格納されるまで待機する。
【００５６】
予め定められた時間経過前に結果キュー６Ｂに処理結果６２が格納された場合（Ｓ１０：Ｙｅｓ）、上記ステップＳ５に進む。
【００５７】
予め定められた時間経過しても結果キュー６Ｂに処理結果６２が格納されない場合（Ｓ１０：Ｎｏ）、出力手段７０１は、警告をタスク管理部２２に通知する（Ｓ１１）。出力手段７０１は、警告をタスク管理部２２だけでなく、プロセス管理部２１や障害検出手段７００やクライアント５に通知して出力するようにしてもよい。
【００５８】
上記ステップＳ８において、依頼キュー６Ａにタスク６１が格納されていない場合（Ｓ８：Ｎｏ）、すなわち結果キュー６Ｂ及び依頼キュー６Ａのいずれにも格納されていない場合は、タスク実行部４に処理が依頼される前に障害が発生したと推定することができ、実際のタスク６１の処理が実行されていないことから、出力手段７０１は、当該タスク６１の再実行をタスク管理部２２に依頼する（Ｓ１２）。
【００５９】
以上、本発明の実施の形態を説明したが、本発明の実施の形態は上記実施の形態に限定されるものではなく、本発明の要旨を変更しない範囲内で種々の変形、実施が可能である。例えば、依頼キュー６Ａに格納するタスク、結果キュー６Ｂに格納する処理結果に格納した時刻を埋め込み、依頼キュー６Ａ及び結果キュー６Ｂでの滞留時間が長いものを対象にしてもよい。
【００６０】
制御部７０の各手段は、それぞれ一部又は全部を再構成可能回路（ＦＰＧＡ：Field Programmable Gate Array）、特定用途向け集積回路（ＡＳＩＣ：Application Specific Integrated Circuit）等のハードウエア回路によって構成してもよい。
【００６１】
また、本発明の要旨を変更しない範囲内で、上記実施の形態の構成要素の一部を省くことや変更することが可能である。
【００６２】
また、本発明の要旨を変更しない範囲内で、上記実施の形態のフローにおいて、ステップの追加、削除、変更、入替え等が可能である。また、上記実施の形態で用いたプログラムをＣＤ−ＲＯＭ等のコンピュータで読み取り可能な記録媒体に記録して提供することができ、クラウドサーバ等の外部サーバに格納しておき、ネットワークを介して利用することもできる。
【符号の説明】
【００６３】
１…情報処理システム、２…ワークフローサーバ、
４、４Ａ、４Ｂ、４Ｃ…タスク実行部、５…クライアント、６Ａ…依頼キュー、
６Ｂ…結果キュー、７…情報処理装置、８…ネットワーク、２１…プロセス管理部、
２２…タスク管理部、３１…ワークフローインスタンスＤＢレコード、
３２…タスクインスタンスＤＢレコード、７０…制御部、７１…記憶部、
７２…通信部、７００…障害検出手段、７０１…出力手段、７１０…プログラム
【図１】
2020119018.tif 000003
【図２】
2020119018.tif 000004
【図３】
2020119018.tif 000005
【図４】
2020119018.tif 000006
【図５】
2020119018.tif 000007
【図６】
2020119018.tif 000008
【図７】
2020119018.tif 000009