(57)【要約】【課題】プロセスの定義作業を容易にするとともに、プロセスの処理効率を向上する。【解決手段】タスク記憶部１１２は、タスクを実行するために使用するサービスを記憶する。代替サービス記憶部１１４は、サービスに障害が発生した場合に、そのサービスの代わりに使用する代替サービスを記憶する。障害検出部１２１は、サービスに障害が発生しているか否かを検出する。サービス判定部１３１は、タスク記憶部１１２が記憶したサービスに障害が発生している場合に、代替サービス記憶部１１４が記憶した代替サービスを、タスクが使用するサービスであると判定する。【選択図】図４
2011175534.tif 000002
【特許請求の範囲】
【請求項１】
プロセスを実行するプロセス実行装置において、
上記プロセス実行装置は、データを記憶する記憶装置と、データを処理する処理装置と、プロセス記憶部と、タスク記憶部と、代替サービス記憶部と、障害検出部と、サービス判定部と、プロセス実行部と、タスク実行部とを有し、
上記プロセス記憶部は、上記記憶装置を用いて、上記プロセスを構成する１以上のタスクと、上記１以上のタスクの実行順序とを記憶し、
上記タスク記憶部は、上記記憶装置を用いて、上記プロセス記憶部が記憶した１以上のタスクそれぞれについて、上記タスクを実行するために使用するサービスを記憶し、
上記代替サービス記憶部は、上記記憶装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生した場合に上記サービスの代わりに使用する代替サービスを記憶し、
上記障害検出部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生しているか否かを検出し、
上記サービス判定部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記タスク記憶部が記憶したサービスを取得し、取得したサービスについて上記障害検出部が検出した結果に基づいて、上記サービスに障害が発生しているか否かを判定し、上記サービスに障害が発生していると判定した場合に、取得したサービスについて上記代替サービス記憶部が記憶した代替サービスを、上記タスクが使用するサービスであると判定し、
上記プロセス実行部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのなかから、上記プロセス記憶部が記憶した実行順序にしたがって、実行するタスクを選択し、
上記タスク実行部は、上記処理装置を用いて、上記プロセス実行部が選択したタスクについて、上記サービス判定部が判定したサービスを使用して、上記タスクを実行することを特徴とするプロセス実行装置。
【請求項２】
上記代替サービス記憶部は、上記記憶装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに発生する障害の原因と、上記原因により上記サービスに障害が発生した場合に上記サービスの代わりに使用する代替サービスとを対応づけて記憶し、
上記障害検出部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生していることを検出した場合に、上記サービスに障害が発生した原因を特定し、
上記サービス判定部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記タスク記憶部が記憶したサービスを取得し、上記障害検出部が検出した結果に基づいて、取得したサービスに障害が発生しているか否かを判定し、取得したサービスに障害が発生していると判定した場合に、取得したサービスについて上記代替サービス記憶部が記憶した代替サービスのうち、上記障害検出部が特定した原因と対応づけられた代替サービスを、上記タスクが使用するサービスであると判定することを特徴とする請求項１に記載のプロセス実行装置。
【請求項３】
上記プロセス実行装置は、更に、サービス記憶部と、障害予測部とを有し、
上記サービス記憶部は、上記記憶装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスが利用する資源を記憶し、
上記障害検出部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生していることを検出した場合に、上記サービスに障害が発生した原因である資源を特定し、
上記障害予測部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービス記憶部が記憶した資源を取得し、取得した資源に、上記障害検出部が特定した原因である資源が含まれるか否かを判定して、上記サービスに障害が発生するか否かを予測し、
上記サービス判定部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記タスク記憶部が記憶したサービスを取得し、取得したサービスについて上記障害予測部が予測した結果に基づいて、上記サービスに障害が発生するか否かを判定し、上記サービスに障害が発生すると判定した場合に、取得したサービスについて上記代替サービス記憶部が記憶した代替サービスを、上記タスクが使用するサービスであると判定することを特徴とする請求項１または請求項２に記載のプロセス実行装置。
【請求項４】
上記障害予測部は、上記処理装置を用いて、上記サービス記憶部が記憶した資源に基づいて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのなかから、上記障害検出部が特定した原因である資源を利用するサービスを抽出し、抽出したサービスについて、上記サービスに障害が発生すると予測し、
上記サービス判定部は、上記処理装置を用いて、上記タスク記憶部が記憶したサービスに基づいて、上記プロセス記憶部が記憶した１以上のタスクのなかから、障害が発生すると上記障害予測部が予測したサービスを使用するタスクを抽出し、抽出したタスクについて、使用するサービスを判定することを特徴とする請求項３に記載のプロセス実行装置。
【請求項５】
上記障害予測部は、上記処理装置を用いて、上記プロセス実行部が選択したタスクについて上記タスク記憶部が記憶したサービスを取得し、取得したサービスについて、障害が発生するか否かを予測することを特徴とする請求項３または請求項４に記載のプロセス実行装置。
【請求項６】
上記サービス判定部は、上記処理装置を用いて、上記タスク記憶部が記憶したサービスに基づいて、上記プロセス記憶部が記憶した１以上のタスクのなかから、障害が発生していることを上記障害検出部が検出したサービスを使用するタスクを抽出し、抽出したタスクについて、使用するサービスを判定することを特徴とする請求項１乃至請求項５のいずれかに記載のプロセス実行装置。
【請求項７】
上記サービス判定部は、上記処理装置を用いて、上記プロセス実行部が選択したタスクについて、使用するサービスを判定することを特徴とする請求項１乃至請求項６のいずれかに記載のプロセス実行装置。
【請求項８】
データを記憶する記憶装置と、データを処理する処理装置とを有するコンピュータを、請求項１乃至請求項７のいずれかに記載のプロセス実行装置として機能させることを特徴とするコンピュータプログラム。
【請求項９】
データを記憶する記憶装置と、データを処理する処理装置とを有するプロセス実行装置が、プロセスを実行するプロセス実行方法において、
上記記憶装置が、上記プロセスを構成する１以上のタスクと、上記１以上のタスクの実行順序とを記憶し、
上記記憶装置が、記憶した１以上のタスクそれぞれについて、上記タスクを実行するために使用するサービスを記憶し、
上記記憶装置が、記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生した場合に上記サービスの代わりに使用する代替サービスを記憶し、
上記処理装置が、上記記憶装置が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生しているか否かを検出し、
上記処理装置が、上記記憶装置が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記記憶装置が記憶したサービスを取得し、取得したサービスについて検出した結果に基づいて、上記サービスに障害が発生しているか否かを判定し、上記サービスに障害が発生していると判定した場合に、取得したサービスについて上記記憶装置が記憶した代替サービスを、上記タスクが使用するサービスであると判定し、
上記処理装置が、上記記憶装置が記憶した１以上のタスクのなかから、上記記憶装置が記憶した実行順序にしたがって、実行するタスクを選択し、
上記処理装置が、選択したタスクについて、判定したサービスを使用して、上記タスクを実行することを特徴とするプロセス実行方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プロセスを実行するプロセス実行装置に関する。
【背景技術】
【０００２】
複数のタスクとその実行順序とによりビジネスプロセスを定義し、定義にしたがってプロセスを実行する装置がある。
タスクの実行に障害が発生した場合にもプロセスの実行を続けるためには、例えば、障害発生時の処理をビジネスプロセスの定義のなかに含めておき、障害発生時にその処理を実行する。あるいは、障害発生時用のビジネスプロセスを別に定義しておき、障害発生時に、そのビジネスプロセスを実行する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−６３２１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
障害発生時の処理を、ビジネスプロセスの定義のなかに含めたり、別のビジネスプロセスを定義しておく方式は、ビジネスプロセスの設計時の作業負荷が大きく、処理の定義ミスや定義漏れが発生する可能性がある。また、障害が実際に発生してから処理を切り替えるので、ビジネスプロセスの状態を、障害発生前に戻す処理（ロールバック）が必要になる場合がある。
この発明は、例えば上記のような課題を解決するためになされたものであり、障害発生時の処理を定義する作業を軽減するとともに、ロールバックの発生を抑え、プロセスの処理効率や処理速度を向上することを目的とする。
【課題を解決するための手段】
【０００５】
この発明にかかるプロセス実行装置は、
プロセスを実行するプロセス実行装置において、
上記プロセス実行装置は、データを記憶する記憶装置と、データを処理する処理装置と、プロセス記憶部と、タスク記憶部と、代替サービス記憶部と、障害検出部と、サービス判定部と、プロセス実行部と、タスク実行部とを有し、
上記プロセス記憶部は、上記記憶装置を用いて、上記プロセスを構成する１以上のタスクと、上記１以上のタスクの実行順序とを記憶し、
上記タスク記憶部は、上記記憶装置を用いて、上記プロセス記憶部が記憶した１以上のタスクそれぞれについて、上記タスクを実行するために使用するサービスを記憶し、
上記代替サービス記憶部は、上記記憶装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生した場合に上記サービスの代わりに使用する代替サービスを記憶し、
上記障害検出部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生しているか否かを検出し、
上記サービス判定部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記タスク記憶部が記憶したサービスを取得し、取得したサービスについて上記障害検出部が検出した結果に基づいて、上記サービスに障害が発生しているか否かを判定し、上記サービスに障害が発生していると判定した場合に、取得したサービスについて上記代替サービス記憶部が記憶した代替サービスを、上記タスクが使用するサービスであると判定し、
上記プロセス実行部は、上記処理装置を用いて、上記プロセス記憶部が記憶した１以上のタスクのなかから、上記プロセス記憶部が記憶した実行順序にしたがって、実行するタスクを選択し、
上記タスク実行部は、上記処理装置を用いて、上記プロセス実行部が選択したタスクについて、上記サービス判定部が判定したサービスを使用して、上記タスクを実行することを特徴とする。
【発明の効果】
【０００６】
この発明にかかるプロセス実行装置によれば、あるサービスに障害が発生していることを検出した場合、同じサービスを使用するタスクについて、使用するサービスを代替サービスに変更する。実際にタスクを実行する前に、使用するサービスを変更するので、ロールバックの発生を減少させることができる。これにより、プロセスの処理効率及び処理速度を向上させることができる。
また、障害の発生に対処する処理を、プロセスやタスクの定義に記述する必要がないので、管理者の作業が減り、定義ミスによる誤動作などを防ぐことができる。
【図面の簡単な説明】
【０００７】
【図１】実施の形態１における業務実行システム８００の全体構成の一例を示すシステム構成図。
【図２】実施の形態１におけるプロセス実行装置１００の外観の一例を示す斜視図。
【図３】実施の形態１におけるプロセス実行装置１００のハードウェア資源の一例を示す図。
【図４】実施の形態１におけるプロセス実行装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図５】実施の形態１におけるプロセス記憶部１１１が記憶するプロセス定義データ４１０の一例を示す図。
【図６】業務プロセスにおけるタスクの実行順序の一例を示す図。
【図７】実施の形態１におけるタスク記憶部１１２が記憶するタスク定義データ４２０の一例を示す図。
【図８】業務プロセスにおけるサービスの使用順序の一例を示す図。
【図９】実施の形態１におけるサービス記憶部１１３が記憶するサービス定義データ４３０の一例を示す図。
【図１０】実施の形態１における代替サービス記憶部１１４が記憶する代替サービス指定データ４４０の一例を示す図。
【図１１】実施の形態１における障害記憶部１２２が生成し記憶する障害状況データ４５０の一例を示す図。
【図１２】実施の形態１における使用サービス記憶部１３２が生成し記憶する使用サービスデータ４６０の一例を示す図。
【図１３】業務プロセスにおけるサービスの使用順序の一例を示す図。
【図１４】実施の形態１におけるサービス判定処理Ｓ６１０の流れの一例を示すフローチャート図。
【図１５】実施の形態２におけるプロセス実行装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図１６】実施の形態２におけるサービス記憶部１１３が記憶するサービス定義データ４３０のうち利用資源データ４３６の一例を示す図。
【図１７】実施の形態２における障害資源記憶部１２３が生成し記憶する障害資源データ４７０の一例を示す図。
【図１８】実施の形態２における障害記憶部１２２が生成し記憶する障害状況データ４５０の一例を示す図。
【図１９】実施の形態２における使用サービス記憶部１３２が生成し記憶する使用サービスデータ４６０の一例を示す図。
【図２０】業務プロセスにおけるサービスの使用順序の一例を示す図。
【図２１】実施の形態２における障害予測処理Ｓ６２０の流れの一例を示すフローチャート図。
【図２２】実施の形態３におけるプロセス実行装置１００の機能ブロックの構成の一例を示すブロック構成図。
【図２３】実施の形態３におけるサービス呼出処理Ｓ６３０の流れの一例を示すフローチャート図。
【発明を実施するための形態】
【０００８】
実施の形態１．
実施の形態１について、図１〜図１４を用いて説明する。
【０００９】
図１は、この実施の形態における業務実行システム８００の全体構成の一例を示すシステム構成図である。
業務実行システム８００は、業務プロセスを実行するシステムである。業務プロセスは、所定の業務を実行するための処理である。業務プロセスは、１以上のタスクの集まりである。タスクは、業務プロセスの処理を細分化した処理である。業務実行システム８００は、所定の順序で１以上のタスクを実行することにより業務プロセスを実行する。
業務実行システム８００は、プロセス実行装置１００、１以上のサービス提供装置８１０を有する。
【００１０】
サービス提供装置８１０は、サービスを提供する装置である。サービスとは、所定の入力を与えると、所定の処理をするもの一般を指す。サービスには、コンピュータプログラムなどにより自動的に処理されるものも含まれるし、人間の作業を必要とするものも含まれる。
サービス提供装置８１０は、例えば、アプリケーション実行装置、ウェブサーバ装置やデータベースサーバ装置などのサーバ装置、作業者の端末装置などである。
プロセス実行装置１００は、サービス提供装置８１０が提供するサービスを使用することにより、タスクを実行する。プロセス実行装置１００は、タスクの実行順序を管理する。プロセス実行装置１００は、管理している実行順序にしたがって、サービス提供装置８１０を呼び出し、サービスの提供を受ける。
【００１１】
例えば、アプリケーション実行装置が実行するアプリケーションプログラムにより提供されるサービスを利用する場合、そのアプリケーションプログラムを実行するアプリケーション実行装置が、サービス提供装置８１０である。プロセス実行装置１００は、アプリケーション実行装置に対して、実行すべきアプリケーションプログラムと、そのプログラムに入力するファイルなどのデータを指示するメッセージを送信する。アプリケーション実行装置は、プロセス実行装置１００からの指示にしたがって、アプリケーションプログラムを実行する。アプリケーション実行装置は、プロセス実行装置１００に対して、アプリケーションプログラムの実行結果を表わすメッセージを送信する。
【００１２】
また、例えば、ウェブサーバ装置やデータベースサーバ装置などのサーバ装置が提供するサービスを利用する場合、そのサービスを提供するサーバ装置が、サービス提供装置８１０である。プロセス実行装置１００は、サーバ装置に対して、ハイパーテキスト転送プロトコル（ＨＴＴＰ）など所定のプロトコルにしたがって処理内容を指示するメッセージを送信する。サーバ装置は、プロセス実行装置１００からの指示したがって、処理を実行する。サーバ装置は、プロセス実行装置１００に対して、処理結果を表わすメッセージを送信する。
【００１３】
あるいは、例えば、作業者の作業により提供されるサービスを利用する場合、その作業者の端末装置が、サービス提供装置８１０である。プロセス実行装置１００は、作業者の端末装置に対して、作業内容を指示する電子メールを送信する。端末装置が受信した電子メールを見て、作業者は、指示された作業を実行する。作業者は、プロセス実行装置１００から受信した電子メールに対する返信として、作業の実行結果を表わす電子メールを作成する。端末装置は、プロセス実行装置１００に対して、作業者が作成した電子メールを送信する。
【００１４】
プロセス実行装置１００は、サービス提供装置８１０が送信したメッセージや電子メールを受信して、正常にサービスが提供されたか否か、提供されたサービスの結果などを取得する。プロセス実行装置１００は、取得した結果に基づいて、次に実行するタスクを決定する。
【００１５】
以上のようにして、業務実行システム８００は、業務プロセスを実行する。
【００１６】
図２は、この実施の形態におけるプロセス実行装置１００の外観の一例を示す斜視図である。
プロセス実行装置１００は、システムユニット９１０、ＣＲＴ（Ｃａｔｈｏｄｅ・Ｒａｙ・Ｔｕｂｅ）やＬＣＤ（液晶）の表示画面を有する表示装置９０１、キーボード９０２（Ｋｅｙ・Ｂｏａｒｄ：Ｋ／Ｂ）、マウス９０３、ＦＤＤ９０４（Ｆｌｅｘｉｂｌｅ・Ｄｉｓｋ・Ｄｒｉｖｅ）、コンパクトディスク装置９０５（ＣＤＤ）、プリンタ装置９０６、スキャナ装置９０７などのハードウェア資源を備え、これらはケーブルや信号線で接続されている。
システムユニット９１０は、コンピュータであり、ファクシミリ機９３２、電話器９３１とケーブルで接続され、また、ローカルエリアネットワーク９４２（ＬＡＮ）、ゲートウェイ９４１を介してインターネット９４０に接続されている。
【００１７】
図３は、この実施の形態におけるプロセス実行装置１００のハードウェア資源の一例を示す図である。
プロセス実行装置１００は、プログラムを実行するＣＰＵ９１１（Ｃｅｎｔｒａｌ・Ｐｒｏｃｅｓｓｉｎｇ・Ｕｎｉｔ、中央処理装置、処理装置、演算装置、マイクロプロセッサ、マイクロコンピュータ、プロセッサともいう）を備えている。ＣＰＵ９１１は、バス９１２を介してＲＯＭ９１３、ＲＡＭ９１４、通信装置９１５、表示装置９０１、キーボード９０２、マウス９０３、ＦＤＤ９０４、ＣＤＤ９０５、プリンタ装置９０６、スキャナ装置９０７、磁気ディスク装置９２０と接続され、これらのハードウェアデバイスを制御する。磁気ディスク装置９２０の代わりに、光ディスク装置、メモリカード読み書き装置などの記憶装置でもよい。
ＲＡＭ９１４は、揮発性メモリの一例である。ＲＯＭ９１３、ＦＤＤ９０４、ＣＤＤ９０５、磁気ディスク装置９２０の記憶媒体は、不揮発性メモリの一例である。これらは、記憶装置あるいは記憶部の一例である。通信装置９１５、キーボード９０２、スキャナ装置９０７、ＦＤＤ９０４などは、入力部、入力装置の一例である。
また、通信装置９１５、表示装置９０１、プリンタ装置９０６などは、出力部、出力装置の一例である。
【００１８】
通信装置９１５は、ファクシミリ機９３２、電話器９３１、ＬＡＮ９４２等に接続されている。通信装置９１５は、ＬＡＮ９４２に限らず、インターネット９４０、ＩＳＤＮ等のＷＡＮ（ワイドエリアネットワーク）などに接続されていても構わない。インターネット９４０或いはＩＳＤＮ等のＷＡＮに接続されている場合、ゲートウェイ９４１は不用となる。
磁気ディスク装置９２０には、オペレーティングシステム９２１（ＯＳ）、ウィンドウシステム９２２、プログラム群９２３、ファイル群９２４が記憶されている。プログラム群９２３のプログラムは、ＣＰＵ９１１、オペレーティングシステム９２１、ウィンドウシステム９２２により実行される。
【００１９】
上記プログラム群９２３には、以下に述べる実施の形態の説明において「〜部」として説明する機能を実行するプログラムが記憶されている。プログラムは、ＣＰＵ９１１により読み出され実行される。
ファイル群９２４には、以下に述べる実施の形態の説明において、「〜の判定結果」、「〜の計算結果」、「〜の処理結果」として説明する情報やデータや信号値や変数値やパラメータが、「〜ファイル」や「〜データベース」の各項目として記憶されている。「〜ファイル」や「〜データベース」は、ディスクやメモリなどの記録媒体に記憶される。ディスクやメモリなどの記憶媒体に記憶された情報やデータや信号値や変数値やパラメータは、読み書き回路を介してＣＰＵ９１１によりメインメモリやキャッシュメモリに読み出され、抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示などのＣＰＵの動作に用いられる。抽出・検索・参照・比較・演算・計算・処理・出力・印刷・表示のＣＰＵの動作の間、情報やデータや信号値や変数値やパラメータは、メインメモリやキャッシュメモリやバッファメモリに一時的に記憶される。
また、以下に述べる実施の形態の説明において説明するフローチャートの矢印の部分は主としてデータや信号の入出力を示し、データや信号値は、ＲＡＭ９１４のメモリ、ＦＤＤ９０４のフレキシブルディスク、ＣＤＤ９０５のコンパクトディスク、磁気ディスク装置９２０の磁気ディスク、その他光ディスク、ミニディスク、ＤＶＤ（Ｄｉｇｉｔａｌ・Ｖｅｒｓａｔｉｌｅ・Ｄｉｓｋ）等の記録媒体に記録される。また、データや信号は、バス９１２や信号線やケーブルその他の伝送媒体によりオンライン伝送される。
【００２０】
また、以下に述べる実施の形態の説明において「〜部」として説明するものは、「〜回路」、「〜装置」、「〜機器」であってもよく、また、「〜ステップ」、「〜手順」、「〜処理」であってもよい。すなわち、「〜部」として説明するものは、ＲＯＭ９１３に記憶されたファームウェアで実現されていても構わない。或いは、ソフトウェアのみ、或いは、素子・デバイス・基板・配線などのハードウェアのみ、或いは、ソフトウェアとハードウェアとの組み合わせ、さらには、ファームウェアとの組み合わせで実施されても構わない。ファームウェアとソフトウェアは、プログラムとして、磁気ディスク、フレキシブルディスク、光ディスク、コンパクトディスク、ミニディスク、ＤＶＤ等の記録媒体に記憶される。プログラムはＣＰＵ９１１により読み出され、ＣＰＵ９１１により実行される。すなわち、プログラムは、以下に述べる「〜部」としてコンピュータを機能させるものである。あるいは、以下に述べる「〜部」の手順や方法をコンピュータに実行させるものである。
【００２１】
図４は、この実施の形態におけるプロセス実行装置１００の機能ブロックの構成の一例を示すブロック構成図である。
プロセス実行装置１００は、プロセス記憶部１１１、タスク記憶部１１２、サービス記憶部１１３、代替サービス記憶部１１４、障害検出部１２１、障害記憶部１２２、サービス判定部１３１、使用サービス記憶部１３２、プロセス実行部１４０、タスク実行部１５０を有する。
プロセス実行部１４０は、状態記憶部１４１、実行タスク判定部１４２を有する。
タスク実行部１５０は、呼出サービス判定部１５１、サービス呼出部１５２、結果取得部１５３を有する。
【００２２】
プロセス記憶部１１１は、磁気ディスク装置９２０を用いて、プロセス定義データを記憶する。プロセス定義データは、業務プロセスを定義するデータである。業務プロセスの定義には、業務プロセスを構成するタスクや、タスクの実行順序などが含まれる。タスクの実行順序には、逐次実行、並列実行、条件分岐、繰り返しなどがある。
【００２３】
タスク記憶部１１２は、磁気ディスク装置９２０を用いて、タスク定義データを記憶する。タスク定義データは、タスクを定義するデータである。タスクの定義には、タスクが使用するサービスなどが含まれる。
【００２４】
サービス記憶部１１３は、磁気ディスク装置９２０を用いて、サービス定義データを記憶する。サービス定義データは、サービスを定義するデータである。サービスの定義には、サービスの種別、サービスの呼出方法、サービスの戻り値の変換規則などが含まれる。
【００２５】
代替サービス記憶部１１４は、磁気ディスク装置９２０を用いて、代替サービス指定データを記憶する。代替サービス指定データは、各サービスの代替サービスを指定するデータである。代替サービスとは、あるサービスが使用できない場合に、そのサービスの代わりとして使用するサービスである。
【００２６】
障害検出部１２１は、ＣＰＵ９１１を用いて、サービスに障害が発生しているか否かを検出する。サービスの障害とは、何らかの理由によりそのサービスが使用できない状態である。例えば、アプリケーション実行装置やサーバ装置がシステムダウンしている場合、そのアプリケーション実行装置やサーバ装置が提供するサービスは、使用できない。また、例えば、作業者が長期休暇で不在の場合、その作業者の作業を必要とするサービスは、使用できない。あるいは、例えば、ネットワークに障害が発生してメッセージや電子メールを送受信できない場合、障害が発生したネットワークを介してプロセス実行装置１００と接続するサービス提供装置８１０が提供するサービスは、使用できない。
【００２７】
サービスの障害を検出するため、障害検出部１２１は、例えば、サービス提供装置８１０を実際に呼び出して、その反応を見る。あるいは、障害検出部１２１は、タスク実行部１５０がサービス提供装置８１０を呼び出した結果に基づいて、障害を検出してもよい。正常な応答が返ってきた場合、障害検出部１２１は、そのサービス提供装置８１０が提供するサービスが正常である（障害が発生していない）と判定する。エラーや異常な応答が返ってきた場合や応答がない場合、障害検出部１２１は、そのサービス提供装置８１０が提供するサービスに障害が発生していると判定する。
また、例えば、障害検出部１２１は、作業者の勤務状況を管理するデータベースにアクセスして、作業者の勤務予定を取得する。作業者が休暇中の場合、障害検出部１２１は、その作業者の作業を必要とするサービスに障害が発生していると判定する。
あるいは、例えば、障害検出部１２１は、サービス提供装置８１０に対してピンパケットを送信して、ネットワークの動作を確認する。応答がない場合、障害検出部１２１は、そのサービス提供装置８１０が提供するサービスに障害が発生していると判定する。
【００２８】
また、サービスに障害が発生している場合、障害検出部１２１は、ＣＰＵ９１１を用いて、障害の原因を特定する。
【００２９】
障害記憶部１２２は、磁気ディスク装置９２０を用いて、障害状況データを記憶する。障害状況データは、各サービスに障害が発生しているか否かや、障害発生の場合その原因などを表わすデータである。障害検出部１２１が検出した結果に基づいて、障害記憶部１２２は、ＣＰＵ９１１を用いて、障害状況データを生成する。障害記憶部１２２は、磁気ディスク装置９２０を用いて、生成した障害状況データを記憶する。
【００３０】
サービス判定部１３１は、ＣＰＵ９１１を用いて、タスクが使用するサービスを判定する。
障害記憶部１２２が記憶した障害状況データに基づいて、サービス判定部１３１は、ＣＰＵ９１１を用いて、タスク記憶部１１２が記憶したタスク定義データでタスクが使用するサービスとして定義されたサービスに障害が発生しているか否かを判定する。
サービスが正常である場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、タスク定義データで定義されたとおり、そのサービスを、そのタスクが使用するサービスであると判定する。
サービスに障害が発生している場合、代替サービス記憶部１１４が記憶した代替サービス指定データに基づいて、サービス判定部１３１は、ＣＰＵ９１１を用いて、そのサービスの代替サービスを判定する。サービス判定部１３１は、判定した代替サービスに障害が発生しているか否かを判定し、代替サービスが正常であれば、その代替サービスを、そのタスクが使用するサービスであると判定する。代替サービスにも障害が発生している場合、代替サービス指定データに基づいて、サービス判定部１３１は、ＣＰＵ９１１を用いて、代替サービスの更に代替サービスを判定する。サービス判定部１３１は、正常なサービスが見つかるまでこれを繰り返す。
【００３１】
使用サービス記憶部１３２は、磁気ディスク装置９２０を用いて、使用サービスデータを記憶する。使用サービスデータは、タスクが実際に使用するサービスを表わすデータである。サービス判定部１３１が判定した結果に基づいて、使用サービス記憶部１３２は、ＣＰＵ９１１を用いて、使用サービスデータを生成する。使用サービス記憶部１３２は、磁気ディスク装置９２０を用いて、生成した使用サービスデータを記憶する。
【００３２】
プロセス実行部１４０は、業務プロセスの実行状況を管理し、プロセス定義データによって定義された実行順序にしたがって、実行すべきタスクを選択する。
【００３３】
状態記憶部１４１は、磁気ディスク装置９２０を用いて、プロセス状態データを記憶する。プロセス状態データは、業務プロセスの状態を表わすデータである。業務プロセスの状態には、現在実行中のタスクや、タスクの実行結果などがある。
【００３４】
実行タスク判定部１４２は、ＣＰＵ９１１を用いて、実行すべきタスクを判定する。
プロセス記憶部１１１が記憶したプロセス定義データと、状態記憶部１４１が記憶したプロセス状態データとに基づいて、実行タスク判定部１４２は、ＣＰＵ９１１を用いて、その業務プロセスに属するタスクそれぞれについて、タスクの実行を開始する条件が満たされたか否かを判定する。例えば、業務プロセスの最初のタスクについては、プロセスの開始が、タスクの実行を開始する条件である。また、例えば、逐次実行される２番目以降のタスクについては、直前のタスクの正常終了が、タスクの実行を開始する条件である。あるいは、例えば、条件分岐直後のタスクについては、分岐条件が満たされることが、タスクの実行を開始する条件である。
【００３５】
タスクの実行を開始する条件が満たされたと実行タスク判定部１４２が判定したタスクが、プロセス実行部１４０が、実行すべきタスクとして選択したタスクである。
【００３６】
タスク実行部１５０は、サービス判定部１３１が判定したサービスを使用して、プロセス実行部１４０が選択したタスクを実行する。
【００３７】
呼出サービス判定部１５１は、ＣＰＵ９１１を用いて、プロセス実行部１４０が選択したタスクが使用するサービスを判定する。
タスクの実行を開始する条件が満たされたと実行タスク判定部１４２が判定したタスクについて使用サービス記憶部１３２が記憶した使用サービスデータに基づいて、呼出サービス判定部１５１は、ＣＰＵ９１１を用いて、そのタスクが実際に使用するサービスを判定する。
【００３８】
サービス呼出部１５２は、ＣＰＵ９１１を用いて、呼出サービス判定部１５１が判定したサービスを呼び出す。
呼出サービス判定部１５１が判定したサービスについてサービス記憶部１１３が記憶したサービス定義データに基づいて、サービス呼出部１５２は、ＣＰＵ９１１を用いて、サービス定義データによって定義される呼出方法を使って、そのサービスを提供するサービス提供装置８１０に対してメッセージや電子メールなどを送信することにより、サービス提供装置８１０を呼び出す。
【００３９】
結果取得部１５３は、ＣＰＵ９１１を用いて、サービスの実行結果を取得する。
サービス呼出部１５２が送信したメッセージや電子メールなどに対する応答としてサービス提供装置８１０が送信したメッセージや電子メールなどを、結果取得部１５３は、ＣＰＵ９１１を用いて、受信する。サービス記憶部１１３が記憶したサービス定義データに基づいて、結果取得部１５３は、ＣＰＵ９１１を用いて、サービス定義データによって定義される変換規則を使って、受信したメッセージや電子メールなどを変換し、サービスの実行結果を取得する。
【００４０】
結果取得部１５３が取得した実行結果は、業務プロセスの状態の一部である。結果取得部１５３が取得した実行結果に基づいて、状態記憶部１４１は、ＣＰＵ９１１を用いて、記憶したプロセス状態データを更新し、磁気ディスク装置９２０を用いて、更新したプロセス状態データを記憶する。
これにより、タスクの実行を開始する条件が満たされれば、実行タスク判定部１４２が実行すべき次のタスクを選択し、タスク実行部１５０が次のタスクを実行する。
【００４１】
以上のようにして、プロセス実行装置１００は、業務プロセスを実行する。
【００４２】
次に、各記憶部が記憶するデータのデータ構造について説明する。なお、以下で説明するデータ構造は、一例であり、他のデータ構造であってもよい。また、各記憶部が記憶するデータの表現形式には、例えば、拡張マークアップ言語（ＸＭＬ）形式、データベース（ＤＢ）形式、コンマ分離値（ＣＳＶ）形式、プレーンテキスト形式など様々な形式があり、いずれの形式であってもよい。
【００４３】
図５は、この実施の形態におけるプロセス記憶部１１１が記憶するプロセス定義データ４１０の一例を示す図である。
プロセス定義データ４１０は、例えば、１以上のタスクデータ４１１を有する。各タスクデータ４１１は、例えば、タスク識別データ４１２、所属プロセスデータ４１３、開始条件データ４１４を含む。なお、各タスクデータ４１１を区別するため、符号の後ろにアルファベット小文字を付けて、タスクデータ４１１ａ、タスクデータ４１１ｂのように記述する。
【００４４】
タスクデータ４１１は、１つのタスクにつき１つずつある。
タスク識別データ４１２は、そのタスクを識別するための文字列を表わすデータである。
所属プロセスデータ４１３は、そのタスクが所属する業務プロセスを識別する文字列を表わすデータである。
開始条件データ４１４は、そのタスクを開始する条件を表わすデータである。
【００４５】
例えば、タスクデータ４１１ａは、「タスクＡ」が「プロセスＡ」に所属し、「プロセスＡ」の実行を開始した場合に、実行を開始するタスクであることを表わす。
また、例えば、タスクデータ４１１ｂは、「タスクＢ」が「プロセスＡ」に所属し、「タスクＡ」の実行が終了した場合に、実行を開始するタスクであることを表わす。
あるいは、例えば、タスクデータ４１１ｆは、「タスクＦ」が「プロセスＢ」に所属し、「タスクＤ」及び「タスクＥ」の双方の実行が終了した場合に、実行を開始するタスクであることを表わす。
更に、例えば、タスクデータ４１１ｇは、「タスクＧ」が「プロセスＣ」に所属し、プロセスの実行が開始した場合、または、「タスクＨ」の実行が終了し、その結果が０より大きい場合に、実行を開始するタスクであることを表わす。
【００４６】
図６は、業務プロセスにおけるタスクの実行順序の一例を示す図である。
この図は、図５に示したプロセス定義データ４１０によって定義されるプロセスを示す。
「プロセスＡ」は、「タスクＡ」「タスクＢ」「タスクＣ」の３つのタスクからなる。「プロセスＡ」において、３つのタスクは逐次に実行される。すなわち、最初に「タスクＡ」を実行し、次に「タスクＢ」を実行し、最後に「タスクＣ」を実行する。
「プロセスＢ」は、「タスクＤ」「タスクＥ」「タスクＦ」の３つのタスクからなる。「プロセスＢ」において、「タスクＤ」と「タスクＥ」とは並列に実行される。すなわち、「タスクＤ」を実行するのと並行して「タスクＥ」を実行し、「タスクＤ」及び「タスクＥ」の両方が終了したのち、「タスクＦ」を実行する。
「プロセスＣ」は、「タスクＧ」「タスクＨ」「タスクＩ」の３つのタスクからなる。「プロセスＣ」は、条件分岐による繰り返しを含む。すなわち、最初に「タスクＧ」を実行し、次に「タスクＨ」を実行する。「タスクＨ」の実行結果によって分岐し、「タスクＧ」に戻る場合と、「タスクＩ」へ進む場合とがある。
【００４７】
図７は、この実施の形態におけるタスク記憶部１１２が記憶するタスク定義データ４２０の一例を示す図である。
タスク定義データ４２０は、例えば、１以上のタスク内容データ４２１を有する。各タスク内容データ４２１は、例えば、タスク識別データ４２２、通常サービスデータ４２３を含む。
【００４８】
タスク内容データ４２１は、１つのタスクにつき１つずつある。
タスク識別データ４２２は、そのタスクを識別する文字列を表わすデータである。タスク識別データ４２２は、タスク識別データ４１２と共通である。すなわち、同じタスクについてのタスクデータ４１１とタスク内容データ４２１とは、タスク識別データ４１２とタスク識別データ４２２とが同一である。
通常サービスデータ４２３は、通常時にそのタスクが使用するサービスを識別する文字列を表わすデータである。通常時とは、そのサービスに障害が発生していない場合をいう。
【００４９】
例えば、タスク内容データ４２１ａは、「サービスＡ」が正常である場合、「タスクＡ」が「サービスＡ」を使用することを表わす。
また、例えば、タスク内容データ４２１ｄは、「サービスＡ」が正常である場合、「タスクＤ」が「サービスＡ」を使用することを表わす。
このように、異なる業務プロセスに所属するタスクが同一のサービスを使用する場合がある。また、同じ業務プロセスに所属する複数のタスクが同一のサービスを使用する場合もある。
【００５０】
図８は、業務プロセスにおけるサービスの使用順序の一例を示す図である。
この図は、図７に示したタスク定義データ４２０によって定義されるタスクに基づいて、図６に示したタスクを、そのタスクが通常時に使用するサービスに置き換えたものである。
図７に示したタスク定義データ４２０によれば、「タスクＡ」は「サービスＡ」を使用し、「タスクＢ」は「サービスＢ」を使用し、「タスクＣ」は、「サービスＣ」を使用する。したがって、この３つのサービスがすべて正常である場合、「プロセスＡ」は、最初に「サービスＡ」を使用し、次に「サービスＢ」を使用し、最後に「サービスＣ」を使用する。
また、図７に示したタスク定義データ４２０によれば、「タスクＤ」は「サービスＡ」を使用し、「タスクＥ」は「サービスＢ」を使用し、「タスクＦ」は「サービスＤ」を使用する。したがって、この３つのサービスがすべて正常である場合、「プロセスＢ」は、「サービスＡ」と「サービスＢ」とを並行して使用し、その後、「サービスＤ」を使用する。
更に、図７に示したタスク定義データ４２０によれば、「タスクＧ」は「サービスＡ」を使用し、「タスクＨ」は「サービスＥ」を使用し、「タスクＩ」は「サービスＣ」を使用する。したがって、この３つのサービスがすべて正常である場合、「プロセスＣ」は、最初に「サービスＡ」を使用し、次に「サービスＥ」を使用し、これを何回か繰り返したのち、「サービスＣ」を使用する。
【００５１】
図９は、この実施の形態におけるサービス記憶部１１３が記憶するサービス定義データ４３０の一例を示す図である。
サービス定義データ４３０は、例えば、１以上のサービス内容データ４３１を有する。各サービス内容データ４３１は、例えば、サービス識別データ４３２、サービス提供装置データ４３３、サービス呼出データ４３４を含む。
【００５２】
サービス内容データ４３１は、１つのサービスにつき１つずつある。
サービス識別データ４３２は、そのサービスを識別するための文字列を表わすデータである。サービス識別データ４３２は、通常サービスデータ４２３と共通である。すなわち、あるタスク内容データ４２１が定義するタスクは、通常時、そのタスク内容データ４２１の通常サービスデータ４２３と同一のサービス識別データ４３２を有するサービス内容データ４３１によって定義されるサービスを使用することを表わす。
サービス提供装置データ４３３は、そのサービスを提供するサービス提供装置８１０を識別するデータである。
サービス呼出データ４３４は、そのサービス提供装置８１０を呼び出してサービスの提供を受けるための呼出方式を表わすデータである。例えば、サービス提供装置８１０がアプリケーション実行装置である場合、サービス呼出データ４３４は、そのサービスを提供するためにアプリケーション実行装置が実行すべきアプリケーションプログラムのパス名を表わす。また、例えば、サービス提供装置８１０がウェブサーバ装置である場合、サービス呼出データ４３４は、そのサービスの提供を受けるためアクセスすべき統一資源識別子（ＵＲＩ）を表わす。あるいは、例えば、サービス提供装置８１０が作業者の端末装置である場合、サービス呼出データ４３４は、その端末装置を利用する作業者の電子メールアドレスを表わす。
【００５３】
図１０は、この実施の形態における代替サービス記憶部１１４が記憶する代替サービス指定データ４４０の一例を示す図である。
代替サービス指定データ４４０は、例えば、１以上のサービス代替データ４４１を有する。各サービス代替データ４４１は、例えば、サービス識別データ４４２、代替条件データ４４３、代替サービス識別データ４４４を含む。
【００５４】
サービス代替データ４４１は、サービスと一対一に対応するものではない。例えば、あるサービスに発生した障害の種類によって代替サービスが異なれば、１つのサービスに対して複数のサービス代替データ４４１がある場合がある。逆に、あるサービスに障害が発生した場合の代替サービスがなければ、そのサービスに対するサービス代替データ４４１がない場合がある。
サービス識別データ４４２は、サービスを識別する文字列を表わすデータである。サービス識別データ４４２は、サービス識別データ４３２と共通である。すなわち、あるサービス代替データ４４１は、そのサービス代替データ４４１のサービス識別データ４４２と同一のサービス識別データ４３２を有するサービス内容データ４３１によって定義されるサービスの代替サービスを指定するものであることを表わす。
代替条件データ４４３は、サービスを代替サービスに置き換える条件を表わすデータである。例えば、代替条件データ４４３は、サービスに発生した障害の原因を表わす。また、例えば、代替条件データ４４３は、サービスに発生した障害の原因に関わらず代替サービスに置き換えることを表わす。あるいは、例えば、代替条件データ４４３は、他のサービスに発生した障害やその他の条件を表わす。
代替サービス識別データ４４４は、代替サービスを識別する文字列を表わすデータである。代替サービス識別データ４４４は、サービス識別データ４３２と共通である。すなわち、あるサービス識別データ４４２は、そのサービス識別データ４４２の代替サービス識別データ４４４と同一のサービス識別データ４３２を有するサービス内容データ４３１によって定義されるサービスを代替サービスとして指定することを表わす。
【００５５】
例えば、サービス代替データ４４１ａは、「サービスＡ」に障害が発生した場合はすべて、代替サービスとして「サービスＦ」を使用することを表わす。
また、例えば、サービス代替データ４４１ｂは、ネットワークが原因で「サービスＢ」に障害が発生した場合、代替サービスとして「サービスＧ」を使用することを表わす。
あるいは、例えば、サービス代替データ４４１ｆは、ネットワークが原因で「サービスＣ」に障害が発生した場合、代替サービスとして「サービスＤ」を使用することを表わす。
更に、例えば、サービス代替データ４４１ｇは、システムが原因で「サービスＤ」に障害が発生した場合、代替サービスとして「サービスＣ」を使用することを表わす。
【００５６】
このように、代替サービスは、他のタスクが通常時のサービスとして使用しているサービスであってもよいし、代替サービス専用のサービスであってもよい。
また、「サービスＣ」と「サービスＤ」との間の関係のように、代替関係が循環していてもよい。これは、例えば、まったく同じサービスを複数のサービス提供装置８１０が提供していて、負荷分散のため、タスクによって異なるサービス提供装置８１０が提供するサービスを通常時のサービスとして使用する場合などに有効である。
【００５７】
以上説明したプロセス定義データ４１０、タスク定義データ４２０、サービス定義データ４３０、代替サービス指定データ４４０は、あらかじめ作成されているデータである。これらのデータは、例えば、業務実行システム８００の管理者が、エディタプログラムやプロセス定義データ作成支援プログラムなどを使って、あらかじめ作成しておく。プロセス実行装置１００は、管理者が作成したこれらのデータを、あらかじめ記憶しておく。
【００５８】
これに対し、以下に説明する障害状況データ４５０、使用サービスデータ４６０は、プロセス実行装置１００が、業務プロセスを実行する際に生成するデータである。
【００５９】
図１１は、この実施の形態における障害記憶部１２２が生成し記憶する障害状況データ４５０の一例を示す図である。
障害状況データ４５０は、例えば、１以上のサービス状況データ４５１を有する。各サービス状況データ４５１は、例えば、サービス識別データ４５２、障害内容データ４５３を有する。
【００６０】
サービス状況データ４５１は、１つのサービスにつき１つある。なお、障害記憶部１２２は、障害が発生しているサービスについてのみサービス状況データ４５１を記憶し、正常なサービスについてはサービス状況データ４５１を記憶しない構成としてもよい。
サービス識別データ４５２は、サービスを識別する文字列を表わすデータである。サービス識別データ４５２は、サービス識別データ４３２と共通である。すなわち、あるサービス状況データ４５１は、そのサービス状況データ４５１のサービス識別データ４５２と同一のサービス識別データ４３２を有するサービス内容データ４３１によって定義されるサービスの障害発生状況を表わす。
障害内容データ４５３は、そのサービスの障害発生状況を表わすデータである。障害内容データ４５３は、そのサービスに障害が発生しているか否か、障害が発生している場合はその原因を表わす。
【００６１】
例えば、サービス状況データ４５１ａは、「サービスＡ」に障害が発生していないことを表わす。
また、例えば、サービス状況データ４５１ｂは、ネットワークが原因で「サービスＢ」に障害が発生していることを表わす。
【００６２】
図１２は、この実施の形態における使用サービス記憶部１３２が生成し記憶する使用サービスデータ４６０の一例を示す図である。
使用サービスデータ４６０は、例えば、タスク定義データ４２０とほぼ同じデータ構造を有する。使用サービスデータ４６０は、例えば、一以上のタスク内容データ４６１を有する。各タスク内容データ４６１は、例えば、タスク識別データ４６２、使用サービス識別データ４６３を有する。
【００６３】
タスク内容データ４６１は、タスク内容データ４２１と同様、１つのタスクにつき１つずつある。
タスク識別データ４６２は、タスク識別データ４２２と同様、タスクを識別する文字列を表わすデータである。
使用サービス識別データ４６３は、通常サービスデータ４２３と異なり、そのタスクが実際に使用するサービスを識別する文字列を表わすデータである。使用サービス記憶部１３２は、サービス判定部１３１の判定結果に基づいて、使用サービス識別データ４６３を生成し記憶する。
【００６４】
例えば、タスク内容データ４６１ａは、「タスクＡ」が実際に使用するサービスが「サービスＡ」であることを表わす。図７に示したタスク定義データ４２０によれば、「タスクＡ」が通常時に使用するサービスは「サービスＡ」である。図１１に示した障害状況データ４５０によれば、「サービスＡ」には障害が発生していない。これに基づいて、サービス判定部１３１は、「タスクＡ」が実際に使用するサービスが「サービスＡ」であると判定する。サービス判定部１３１の判定結果に基づいて、使用サービス記憶部１３２は、タスク内容データ４６１ａを生成して記憶する。
【００６５】
また、例えば、タスク内容データ４６１ｂは、「タスクＢ」が実際に使用するサービスが「サービスＧ」であることを表わす。図７に示したタスク定義データ４２０によれば、「タスクＢ」が通常時に使用するサービスは「サービスＢ」である。図１１に示した障害状況データ４５０によれば、「サービスＢ」にはネットワークを原因とする障害が発生している。図１０に示した代替サービス指定データ４４０によれば、「サービスＢ」にネットワークを原因とする障害が発生した場合の代替サービスは「サービスＧ」である。これに基づいて、サービス判定部１３１は、「タスクＢ」が実際に使用するサービスが「サービスＧ」であると判定する。サービス判定部１３１の判定結果に基づいて、使用サービス記憶部１３２は、タスク内容データ４６１ｂを生成して記憶する。
【００６６】
図１３は、業務プロセスにおけるサービスの使用順序の一例を示す図である。
この図は、図１２に示した使用サービスデータ４６０に基づいて、図６に示したタスクを、そのタスクが実際に使用するサービスに置き換えたものである。
図１２に示した使用サービスデータ４６０によれば、「タスクＡ」は「サービスＡ」を使用し、「タスクＢ」は「サービスＧ」を使用し、「タスクＣ」は、「サービスＣ」を使用する。したがって、「プロセスＡ」は、最初に「サービスＡ」を使用し、次に「サービスＧ」を使用し、最後に「サービスＣ」を使用する。
また、図１２に示した使用サービスデータ４６０によれば、「タスクＤ」は「サービスＡ」を使用し、「タスクＥ」は「サービスＧ」を使用し、「タスクＦ」は「サービスＤ」を使用する。したがって、「プロセスＢ」は、「サービスＡ」と「サービスＧ」とを並行して使用し、その後、「サービスＤ」を使用する。
更に、図１２に示した使用サービスデータ４６０によれば、「タスクＧ」は「サービスＡ」を使用し、「タスクＨ」は「サービスＥ」を使用し、「タスクＩ」は「サービスＣ」を使用する。したがって、「プロセスＣ」は、最初に「サービスＡ」を使用し、次に「サービスＥ」を使用し、これを何回か繰り返したのち、「サービスＣ」を使用する。
【００６７】
このように、あらかじめサービスに障害が発生しているか否かを検出しておき、タスクが通常時に使用するサービスに障害が発生している場合には、タスクが使用するサービスを代替サービスに置き換える。したがって、タスク実行時に、あらかじめ障害が検出されているサービスを、タスク実行部１５０が呼び出すことはない。
サービスを呼び出した後に、サービスに障害が発生していることが検出され、代替サービスに切り替える場合は、業務プロセスの状態をサービス呼出前の状態に戻す処理（ロールバック）が必要になる場合がある。プロセス実行装置１００は、あらかじめ障害が検出されているサービスを呼び出さないので、ロールバックが必要になる状況の発生を減らすことができる。
【００６８】
次に、処理の流れについて説明する。
【００６９】
図１４は、この実施の形態におけるサービス判定処理Ｓ６１０の流れの一例を示すフローチャート図である。
サービス判定処理Ｓ６１０において、サービス判定部１３１は、タスクが実際に使用するサービスを判定する。
サービス判定処理Ｓ６１０は、例えば、タスク選択工程Ｓ６１１、通常サービス取得工程Ｓ６１２、障害判定工程Ｓ６１３、使用サービス記憶工程Ｓ６１４、代替サービス取得工程Ｓ６１５、実行不能記憶工程Ｓ６１６を有する。
【００７０】
タスク選択工程Ｓ６１１において、サービス判定部１３１は、ＣＰＵ９１１を用いて、タスク記憶部１１２が記憶したタスク定義データ４２０のなかから、未処理のタスク内容データ４２１を１つ選択する。
サービス判定処理Ｓ６１０の処理対象であるタスク内容データ４２１の処理がすべて完了し、未処理のタスク内容データ４２１がない場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、サービス判定処理Ｓ６１０を終了する。
サービス判定処理Ｓ６１０の処理対象であるタスク内容データ４２１のなかに未処理のタスク内容データ４２１があり、タスク内容データ４２１を選択した場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、通常サービス取得工程Ｓ６１２へ処理を進める。
【００７１】
なお、サービス判定処理Ｓ６１０が処理対象とするタスク内容データ４２１は、すべてのタスク内容データ４２１であってもよいし、一部のタスク内容データ４２１であってもよい。
例えば、ある業務プロセスの実行開始時にサービス判定処理Ｓ６１０を実行する場合、サービス判定部１３１は、その業務プロセスに所属するタスクについてのタスク内容データ４２１だけを抽出し、サービス判定処理Ｓ６１０の処理対象とする構成であってもよい。
また、例えば、障害検出部１２１が障害の発生や障害からの復旧を検出したときにサービス判定処理Ｓ６１０を実行する場合、サービス判定部１３１は、障害検出部１２１が障害の発生や障害からの復旧を検出したサービスを使用するタスクについてのタスク内容データ４２１だけを抽出し、サービス判定処理Ｓ６１０の処理対象とする構成であってもよい。
【００７２】
通常サービス取得工程Ｓ６１２において、サービス判定部１３１は、ＣＰＵ９１１を用いて、タスク選択工程Ｓ６１１で選択したタスク内容データ４２１から、通常サービスデータ４２３を取得して、判定対象サービスデータとする。
【００７３】
障害判定工程Ｓ６１３において、サービス判定部１３１は、ＣＰＵ９１１を用いて、障害記憶部１２２が記憶した障害状況データ４５０のなかから、通常サービス取得工程Ｓ６１２（または、後述する代替サービス取得工程Ｓ６１５）で取得した判定対象サービスデータと同一のサービス識別データ４５２を有するサービス状況データ４５１を取得する。取得したサービス状況データ４５１の障害内容データ４５３に基づいて、サービス判定部１３１は、ＣＰＵ９１１を用いて、そのサービスに障害が発生しているか否かを判定する。
そのサービスに障害が発生している場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、代替サービス取得工程Ｓ６１５へ処理を進める。
そのサービスが正常である場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、使用サービス記憶工程Ｓ６１４へ処理を進める。
【００７４】
使用サービス記憶工程Ｓ６１４において、使用サービス記憶部１３２は、ＣＰＵ９１１を用いて、記憶した使用サービスデータ４６０のうち、タスク選択工程Ｓ６１１でサービス判定部１３１が選択したタスク内容データ４２１に含まれるタスク識別データ４２２と同一のタスク識別データ４６２を有するタスク内容データ４６１を更新する。使用サービス記憶部１３２は、ＣＰＵ９１１を用いて、タスク内容データ４６１の使用サービス識別データ４６３を、サービス判定部１３１が取得した判定対象サービスデータに置き換える。使用サービス記憶部１３２は、磁気ディスク装置９２０を用いて、更新したタスク内容データ４６１を記憶する。
サービス判定部１３１は、ＣＰＵ９１１を用いて、タスク選択工程Ｓ６１１に処理を戻し、次のタスク内容データ４２１を選択する。
【００７５】
代替サービス取得工程Ｓ６１５において、サービス判定部１３１は、ＣＰＵ９１１を用いて、代替サービス記憶部１１４が記憶した代替サービス指定データ４４０のなかから、判定対象サービスデータと同一のサービス識別データ４４２を有するサービス代替データ４４１を抽出する。サービス判定部１３１は、ＣＰＵ９１１を用いて、抽出したサービス代替データ４４１のなかから、障害判定工程Ｓ６１３で取得したサービス状況データ４５１の障害内容データ４５３が表わす障害が、代替条件データ４４３が表わす条件を満たすサービス代替データ４４１を選択する。サービス判定部１３１は、ＣＰＵ９１１を用いて、選択したサービス代替データ４４１から、代替サービス識別データ４４４を取得して、判定対象サービスデータとする。
代替サービス指定データ４４０のなかに、判定対象サービスデータと同一のサービス識別データ４４２を有するサービス代替データ４４１がない場合、そのサービスには、代替サービスが指定されていないことを意味する。サービス判定部１３１は、ＣＰＵ９１１を用いて、実行不能記憶工程Ｓ６１６へ処理を進める。
また、抽出したサービス代替データ４４１のなかに、障害内容データ４５３が表わす障害が条件を満たすサービス代替データ４４１がない場合、そのサービスにその障害が発生した場合の代替サービスが指定されていないことを意味する。その場合も、サービス判定部１３１は、ＣＰＵ９１１を用いて、実行不能記憶工程Ｓ６１６へ処理を進める。
更に、取得した代替サービス識別データ４４４が、障害判定工程Ｓ６１３で既に障害が発生していることを判定したサービスのサービス識別データである場合、循環する代替関係が指定されていて、循環関係にあるすべてのサービスに障害が発生していることを意味する。その場合も、サービス判定部１３１は、ＣＰＵ９１１を用いて、実行不能記憶工程Ｓ６１６へ処理を進める。
上記以外の場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、障害判定工程Ｓ６１３に処理を戻し、新たな判定対象サービスデータによって識別されるサービスについて、障害発生の有無を判定する。
【００７６】
実行不能記憶工程Ｓ６１６において、使用サービス記憶部１３２は、ＣＰＵ９１１を用いて、記憶した使用サービスデータ４６０のうち、タスク選択工程Ｓ６１１でサービス判定部１３１が選択したタスク内容データ４２１に含まれるタスク識別データ４２２と同一のタスク識別データ４６２を有するタスク内容データ４６１を更新する。使用サービス記憶部１３２は、ＣＰＵ９１１を用いて、タスク内容データ４６１の使用サービス識別データ４６３を、使用できるサービスがないことを表わすデータに置き換える。使用サービス記憶部１３２は、磁気ディスク装置９２０を用いて、更新したタスク内容データ４６１を記憶する。
サービス判定部１３１は、ＣＰＵ９１１を用いて、タスク選択工程Ｓ６１１に処理を戻し、次のタスク内容データ４２１を選択する。
【００７７】
この例におけるサービス判定処理Ｓ６１０では、タスクが使用できるサービスが存在しない場合であっても、実際にそのタスクを実行するときまでに、サービスが障害から復旧し、タスクが実行できる可能性があるので、業務実行システム８００の管理者などに対する通知は行わない構成としている。
実際にタスクを実行するとき、呼出サービス判定部１５１は、使用サービス記憶部１３２が記憶したタスク内容データ４６１に基づいて、呼び出すサービスを判定する。使用できるサービスがない場合、呼出サービス判定部１５１は、管理者に対して、使用できるサービスがないため、業務プロセスを継続できないことを通知する。呼出サービス判定部１５１は、業務プロセスの実行を中断するか否かについての管理者の判断を入力する。業務プロセスの実行を中断しないとの判断を入力した場合、呼出サービス判定部１５１は、例えば、所定の時間が経過するまで待機して、再び、タスク内容データ４６１に基づいて、呼び出すサービスを判定する。管理者が復旧作業をするなどしてサービスが障害から復旧すれば、障害検出部１２１がそのことを検出し、障害記憶部１２２が障害状況データ４５０を更新し、サービス判定部１３１が使用するサービスを判定し、使用サービス記憶部１３２が使用サービスデータ４６０を更新する。呼出サービス判定部１５１は、呼び出すサービスを判定し、業務プロセスの実行を継続する。
【００７８】
なお、サービス判定処理Ｓ６１０の段階で、タスクが使用できるサービスが存在しない場合、サービス判定部１３１が業務実行システム８００の管理者などに対する通知をする構成としてもよい。これにより、早く復旧作業をしないと業務プロセスを継続できなくなる可能性があることを管理者などに知らせ、復旧作業の実行を促すことができる。
【００７９】
この実施の形態におけるプロセス実行装置１００は、プロセス（業務プロセス）を実行する。
上記プロセス実行装置１００は、データを記憶する記憶装置（磁気ディスク装置９２０）と、データを処理する処理装置（ＣＰＵ９１１）と、プロセス記憶部１１１と、タスク記憶部１１２と、代替サービス記憶部１１４と、障害検出部１２１と、サービス判定部１３１と、プロセス実行部１４０と、タスク実行部１５０とを有する。
上記プロセス記憶部１１１は、上記記憶装置を用いて、上記プロセスを構成する１以上のタスク（タスク識別データ４１２）と、上記１以上のタスクの実行順序（開始条件データ４１４）とを記憶する。
上記タスク記憶部１１２は、上記記憶装置を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクそれぞれについて、上記タスクを実行するために使用するサービス（通常サービスデータ４２３）を記憶する。
上記代替サービス記憶部１１４は、上記記憶装置を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生した場合に上記サービスの代わりに使用する代替サービス（代替サービス識別データ４４４）を記憶する。
上記障害検出部１２１は、上記処理装置を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生しているか否かを検出する。
上記サービス判定部１３１は、上記処理装置を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記タスク記憶部１１２が記憶したサービスを取得する。サービス判定部１３１は、取得したサービスについて上記障害検出部１２１が検出した結果に基づいて、上記サービスに障害が発生しているか否かを判定する。サービス判定部１３１は、上記サービスに障害が発生していると判定した場合に、取得したサービスについて上記代替サービス記憶部１１４が記憶した代替サービスを、上記タスクが使用するサービスであると判定する。
上記プロセス実行部１４０は、上記処理装置を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのなかから、上記プロセス記憶部１１１が記憶した実行順序にしたがって、実行するタスクを選択する。
上記タスク実行部１５０は、上記処理装置を用いて、上記プロセス実行部１４０が選択したタスクについて、上記サービス判定部１３１が判定したサービスを使用して、上記タスクを実行する。
【００８０】
この実施の形態におけるプロセス実行装置１００によれば、あるサービスに障害が発生していることを検出した場合、同じサービスを使用するタスクについて、使用するサービスを代替サービスに変更する。実際にタスクを実行する前に、使用するサービスを変更するので、ロールバックの発生を減少させることができる。これにより、業務実行システム８００における業務プロセスの処理効率及び処理速度を向上させることができる。
【００８１】
この実施の形態におけるプロセス実行装置１００において、上記代替サービス記憶部１１４は、上記記憶装置（磁気ディスク装置９２０）を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに発生する障害の原因（代替条件データ４４３）と、上記原因により上記サービスに障害が発生した場合に上記サービスの代わりに使用する代替サービス（代替サービス識別データ４４４）とを対応づけて記憶する。
上記障害検出部１２１は、上記処理装置（ＣＰＵ９１１）を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生していることを検出した場合に、上記サービスに障害が発生した原因を特定する。
上記サービス判定部１３１は、上記処理装置を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記タスク記憶部１１２が記憶したサービスを取得する。サービス判定部１３１は、上記障害検出部１２１が検出した結果に基づいて、取得したサービスに障害が発生しているか否かを判定し、取得したサービスに障害が発生していると判定した場合に、取得したサービスについて上記代替サービス記憶部１１４が記憶した代替サービスのうち、上記障害検出部１２１が特定した原因と対応づけられた代替サービスを、上記タスクが使用するサービスであると判定する。
【００８２】
この実施の形態におけるプロセス実行装置１００によれば、サービスに発生した障害の原因により、代替サービスを変更することができる。これにより、業務実行システム８００における業務プロセスの処理効率及び処理速度を更に向上させることができる。
【００８３】
この実施の形態におけるプロセス実行装置１００において、上記サービス判定部１３１は、上記処理装置（ＣＰＵ９１１）を用いて、上記タスク記憶部１１２が記憶したサービスに基づいて、上記プロセス記憶部１１１が記憶した１以上のタスクのなかから、障害が発生していることを上記障害検出部１２１が検出したサービスを使用するタスクを抽出する。サービス判定部１３１は、抽出したタスクについて、使用するサービスを判定する。
【００８４】
この実施の形態におけるプロセス実行装置１００によれば、障害が発生しているサービスを使用するタスクだけ抽出し、抽出したタスクを、使用するサービスを判定する対象のタスクとするので、サービス判定部１３１の処理による負荷を軽減することができる。これにより、業務実行システム８００における業務プロセスの処理効率及び処理速度を更に向上させることができる。
【００８５】
この実施の形態におけるプロセス実行装置１００は、コンピュータをプロセス実行装置１００として機能させるコンピュータプログラムを用いて実現することができる。
【００８６】
この実施の形態におけるプロセス実行装置１００としてコンピュータを機能させるコンピュータプログラムによれば、あるサービスに障害が発生していることを検出した場合、同じサービスを使用するタスクについて、使用するサービスを代替サービスに変更し、実際にタスクを実行する前に、使用するサービスを変更するので、ロールバックの発生を減少させ、業務実行システム８００における業務プロセスの処理効率及び処理速度を向上させることができるプロセス実行装置１００を実現することができる。
【００８７】
この実施の形態におけるプロセス実行装置１００がプロセス（業務プロセス）を実行するプロセス実行方法は、以下の工程を有する。
上記記憶装置（磁気ディスク装置９２０）が、上記プロセスを構成する１以上のタスク（タスク識別データ４１２）と、上記１以上のタスクの実行順序（開始条件データ４１４）とを記憶する。
上記記憶装置が、記憶した１以上のタスクそれぞれについて、上記タスクを実行するために使用するサービス（通常サービスデータ４２３）を記憶する。
上記記憶装置が、記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生した場合に上記サービスの代わりに使用する代替サービス（代替サービス識別データ４４４）を記憶する。
上記処理装置（ＣＰＵ９１１）が、上記記憶装置が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生しているか否かを検出する。
上記処理装置が、上記記憶装置が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記記憶装置が記憶したサービスを取得する。処理装置が、取得したサービスについて検出した結果に基づいて、上記サービスに障害が発生しているか否かを判定する。処理装置が、上記サービスに障害が発生していると判定した場合に、取得したサービスについて上記記憶装置が記憶した代替サービスを、上記タスクが使用するサービスであると判定する。
上記処理装置が、上記記憶装置が記憶した１以上のタスクのなかから、上記記憶装置が記憶した実行順序にしたがって、実行するタスクを選択する。
上記処理装置が、選択したタスクについて、判定したサービスを使用して、上記タスクを実行する。
【００８８】
この実施の形態におけるプロセス実行方法によれば、あるサービスに障害が発生していることを検出した場合、同じサービスを使用するタスクについて、使用するサービスを代替サービスに変更する。実際にタスクを実行する前に、使用するサービスを変更するので、ロールバックの発生を減少させることができる。これにより、業務実行システム８００における業務プロセスの処理効率及び処理速度を向上させることができる。
【００８９】
この実施の形態において、使用サービス記憶部１３２が記憶する使用サービスデータ４６０は、タスク記憶部１１２が記憶したタスク定義データ４２０と同じデータ構造を有する。したがって、プロセス記憶部１１１が記憶したプロセス定義データ４１０と、タスク記憶部１１２が記憶したタスク定義データ４２０とに基づいて、プロセスを実行する既存のプロセス実行装置をそのまま利用して、代替サービス記憶部１１４、サービス判定部１３１、使用サービス記憶部１３２などを外付けすることにより、この実施の形態におけるプロセス実行装置１００を製造することができる。
これにより、プロセス実行装置１００の設計コストや製造コストを大幅に削減することができる。
【００９０】
この実施の形態におけるプロセス実行装置１００は、障害発生時の例外処理をサービスに対して定義するので、障害発生時の例外処理を業務プロセスのなかに記述したり、タスクに対して定義したりする場合と比較して、業務プロセスを定義するデータを作成する手間を削減することができる。これにより、業務実行システム８００の管理者の負荷を軽減することができる。また、例外処理の定義漏れが発生する可能性を減らすことができる。これにより、業務実行システム８００が業務プロセスの実行を継続できなくなる事態の発生を減らすことができる。
【００９１】
以上説明したプロセス実行装置１００は、サービスに障害が発生した場合でも業務プロセスをなるべく中断することなく継続して実行する業務継続処理装置である。プロセス実行装置１００は、例えば、エンタープライズ・サービスバス（ＥＳＢ）基盤を有する。プロセス実行装置１００は、ＥＳＢ基盤を用いて、業務プロセスを実行する。
タスクとは、ビジネスプロセス（業務プロセス）上でのある一塊の処理である。タスクは、ＥＳＢ上ではサービスと同等である。タスクには、そのタスクを実行するときに実行するサービスが関連付けされている。サービスとは、「入力」に対して特定の処理を行い「出力」を行うようなものである。サービスは、例えば、ウェブサービスやその他のサービスである。
【００９２】
サービスは、タスクとして使用する処理である。
サービスには、通常時に実行する通常時サービスと、通常時サービスに障害が発生したときに実行する代替サービスとがある。サービスそのものには、通常時サービスと代替サービスとの区別はない。すなわち、あるタスクで代替サービスとして使用したサービスを、別のタスクの通常時サービスとして使用してもよい。
【００９３】
ビジネスプロセス定義（プロセス定義データ４１０）は、タスクの連続として記述されている。ビジネスプロセス定義は、タスクを実行する順番を「ビジネスプロセス」として保持している。通常プロセスは、通常時に実行するビジネスプロセスである。通常プロセスは、管理者がビジネスプロセスとしてあらかじめ記述しておく。代替プロセスは、異常時に実行するビジネスプロセスである。代替プロセスは、プロセス代替設定（代替サービス指定データ４４０）を用いて、サービス実行部（サービス判定部１３１・プロセス実行部１４０・タスク実行部１５０）が動的に再構築する。代替プロセスは、管理者が直接記述するものではない。ビジネスプロセス定義が保持する情報は、通常プロセスのみである。
【００９４】
サービス稼働状況監視部（障害検出部１２１）は、サービスや関連機器の稼働状況を監視する。サービス稼働状況監視部は、サービス実行可否やサービスの戻り値、あるいは機器そのものを監視して障害の発生を検出する。機器とは、サービスを実行する上で使用する様々な装置やシステムである。機器は、例えば、サービスの構成要素となるインフラストラクチャ、ハードウェア、ミドルウェア、ソフトウェアなどであり、更に具体的にいえば、例えば、ネットワーク、ＤＢ、サーバ装置、ＥＳＢ基盤や業務アプリケーションなどである。
【００９５】
サービス実行部は、サービスを実行する。サービス実行部は、ビジネスプロセス実行部（プロセス実行部１４０・タスク実行部１５０）と、ビジネスプロセス再構築部（サービス判定部１３１）とを有する。
ビジネスプロセス実行部は、ビジネスプロセス定義のタスクであるサービスを実行する。ビジネスプロセス実行部は、ビジネスプロセス定義で定義された順にタスクを実行する。ビジネスプロセス実行部自体は、実行するサービスの順序は保持していない。
ビジネスプロセス再構築部は、プロセス代替設定を参照し、ビジネスプロセス定義を再構築する。
【００９６】
プロセス代替設定は、代替プロセスを構築するための設定である。プロセス代替設定は、障害時に通常プロセスを代替プロセスに再構築するための定義情報（サービス代替データ４４１）を持っている。プロセス代替設定は、タスクとして使用するサービスの数だけ設定する。
プロセス代替設定は、ＸＭＬやＤＢ、フラットファイルなどを用いる。
プロセス代替設定は、代替サービス設定（サービス代替データ４４１）を有する。
【００９７】
代替サービス設定には、サービスを代替する条件である障害種別（代替条件データ４４３）と、条件を満たした場合に使用する代替サービス（代替サービス識別データ４４４）が記されている。代替サービス設定で記述された代替サービスは、代替プロセスのタスクとなる。
代替サービス設定は、人が手で記述する。記述を支援するため、例えば、障害種別としてあらかじめ機器や条件を指定しておき、プロセス代替設定の設計者が項目に値を入力するだけでよいようにしてもよい。また、障害種別は、独自に追加をすることができるようにしてもよい。
【００９８】
障害状態管理情報（障害状況データ４５０）は、現在サービスで発生している障害の情報を保持する。障害状態管理情報は、ＸＭＬやＤＢ、フラットファイルなどを用いる。障害状態管理情報は、障害発生サービス情報（サービス状況データ４５１）を有する。
障害発生サービス情報は、例えば通常プロセスを実行した際などに、障害が発生したサービスの情報である。障害発生サービス情報は、障害が発生したサービス名（サービス識別データ４５２）と、障害種別（障害内容データ４５３）とを保持する。障害種別は、代替サービスを選択する条件である障害種別となる。
【００９９】
業務継続処理装置は、プロセス代替設定を用いて、通常プロセスのタスクに障害が発生した際に代替プロセスを再構築する。プロセス定義の代替プロセスへの再構築は、プロセス実行時に、特定タスクで障害が発生することがトリガーとなる。
【０１００】
例えば、プロセスＡは、通常プロセスとしてタスクの連続で記述されている。プロセスＡは、タスクＡ→タスクＢ→タスクＣを順に実行するビジネスプロセスである。実際に実行するサービスはそれぞれ、サービスＡ→サービスＢ→サービスＣである。サービスＢのネットワーク障害時の代替サービスは、サービスＧである。
【０１０１】
ビジネスプロセス実行部がプロセスＡを実行する。タスクＡは正常に実行できたとする。タスクＢで障害が発生したとする。
【０１０２】
サービス稼働状況監視部は、タスクＢの実行時に障害を検出する。サービス稼働状況監視部は、サービス実行部に、障害発生と障害発生中サービスとを通知する。障害発生サービスは、サービスＢを障害発生中サービスとして保存する。
【０１０３】
ビジネスプロセス実行部は、通常プロセスをタスクＡ終了時点にロールバックする。ビジネスプロセス実行部は、プロセスＡが再構築されるまで待機する。
これと並行して、ビジネスプロセス再構築部は、障害状態管理部を参照して、障害状態を取得する。ビジネスプロセス再構築部は、プロセス代替設定を参照する。ビジネスプロセス再構築部は、障害状態管理部の内容から、タスクＢで使用しているサービスＢの代替サービス設定を参照する。
代替サービス設定には、サービスＢでネットワーク障害が起こった際に使用する代替サービスとしてサービスＧが記されている。
【０１０４】
ビジネスプロセス再構築部は、プロセスＡのタスクＢで使用するサービスをサービスＢからサービスＧに関連付けし直す。これにより、ビジネスプロセスを代替プロセスに再構築する。プロセスＡが実行するタスクとしてビジネスプロセス定義に記述されているタスクは、タスクＡ→タスクＢ→タスクＣであり、通常プロセスと変わらない。しかし、実行するサービスは、サービスＡ→サービスＧ→サービスＣとなり、代替プロセスになっている。
その後、プロセスＡは、障害回復通知を受けるまで代替プロセスとなる。
【０１０５】
ビジネスプロセス実行部は、プロセスＡを再開する。ビジネスプロセス実行部は、代替サービスＧとなったタスクＢを実行する。ビジネスプロセス実行部は、プロセス終了までプロセスＡを実行する。
【０１０６】
また、業務継続処理装置は、ビジネスプロセス定義を代替プロセスから通常プロセスへ再構築する。プロセス定義の再構築は、サービス実行部が障害回復通知を受信することがトリガーとなる。
【０１０７】
サービス実行部は、障害回復通知を受信する。サービス実行部は、現在実行中のプロセスがある場合、障害発生中サービスが現在実行しているタスク１０７より後にあるかどうかを確認する。
【０１０８】
現在実行中のタスクより後に障害発生中サービスを実行する場合、ビジネスプロセス実行部は、プロセスを障害発生サービスの前のタスクまで実行し、待機する。プロセス再構築部は、代替プロセスから通常プロセスへプロセスを再構築する。代替プロセスから通常プロセスへの切り替えは、ビジネスプロセス再構築部がビジネスプロセス定義のタスクに記述されている通常サービスにタスクとサービスとの関連付けを変更することで実現する。プロセスの再構築後、ビジネスプロセス実行部は、再構築されたプロセスを再開し、最後まで実行して、プロセスを終了する。
【０１０９】
現在実行中のタスク以前に障害発生中サービスを実行する場合、ビジネスプロセス実行部は、代替プロセスを最後まで実行し、プロセスを終了する。プロセス終了後に、プロセス再構築部は、プロセスを通常プロセスに再構築する。
【０１１０】
現在実行中のプロセスがない場合、プロセス再構築部は、プロセスを通常プロセスに再構築する。
【０１１１】
このように、タスクとサービスの関連付けを変更することで代替プロセスを構築する。これにより、代替プロセスを個別のビジネスプロセス定義として記述することなく設定することができる。
また、プロセス内のタスク全てに個別に代替サービスを設定するため、代替処理が必要なタスクに代替処理を設計しそびれることが減る。更に、代替サービスに代替条件を設定することにより、障害種別によって異なる代替処理をビジネスプロセスとして記述することなく設定することができる。
【０１１２】
実施の形態２．
実施の形態２について、図１５〜図２１を用いて説明する。
なお、実施の形態１と共通する部分については、同一の符号を付し、説明を省略する。
【０１１３】
図１５は、この実施の形態におけるプロセス実行装置１００の機能ブロックの構成の一例を示すブロック構成図である。
プロセス実行装置１００は、実施の形態１で説明した機能ブロックに加えて、更に、障害資源記憶部１２３、障害予測部１２４を有する。
【０１１４】
サービス記憶部１１３は、磁気ディスク装置９２０を用いて、サービス定義データ４３０の一部として、更に、利用資源データを記憶する。利用資源データは、サービス提供装置８１０がそのサービスを提供するために利用する資源を表わすデータである。資源は、サービスを提供するために必要な資源である。資源には、例えば、サービス提供装置８１０自体がある。また、資源には、例えば、サービスを提供するためにサービス提供装置８１０が利用するデータベース装置などサービス提供装置８１０以外の装置がある。あるいは、資源には、例えば、プロセス実行装置１００とサービス提供装置８１０との間でメッセージを送受信するためのネットワークがある。更に、資源には、例えば、そのサービスの作業をする作業者がある。
【０１１５】
障害検出部１２１は、サービスに障害が発生していることを検出した場合、ＣＰＵ９１１を用いて、サービスに障害が発生した原因である資源を判定する。
例えば、障害検出部１２１は、ＣＰＵ９１１を用いて、サービスに障害が発生した原因を特定し、サービス記憶部１１３が記憶した利用資源データに基づいて、特定した原因について、そのサービスが利用する資源を特定する。
【０１１６】
障害資源記憶部１２３は、磁気ディスク装置９２０を用いて、障害資源データを記憶する。障害資源データは、サービスに障害が発生した原因である資源を表わすデータである。障害検出部１２１は判定した結果に基づいて、障害資源記憶部１２３は、ＣＰＵ９１１を用いて、障害資源データを生成する。障害資源記憶部１２３は、磁気ディスク装置９２０を用いて、生成した障害資源データを記憶する。
【０１１７】
障害予測部１２４は、ＣＰＵ９１１を用いて、障害が発生するサービスを予測する。
障害予測部１２４は、サービス記憶部１１３が記憶した利用資源データと、障害資源記憶部１２３が記憶した障害資源データとに基づいて、ＣＰＵ９１１を用いて、障害の原因となっている資源と同じ資源を利用するサービスを抽出する。あるサービスに障害が発生した場合、その原因となっている資源と同じ資源を利用する他のサービスにも障害が発生することが予測できる。すなわち、障害予測部１２４は、障害が発生すると予測されるサービスを抽出する。
【０１１８】
障害記憶部１２２は、ＣＰＵ９１１を用いて、障害検出部１２１が検出した結果と、障害予測部１２４が予測した結果とに基づいて、障害状況データを生成する。障害記憶部１２２は、磁気ディスク装置９２０を用いて、生成した障害状況データを記憶する。
【０１１９】
図１６は、この実施の形態におけるサービス記憶部１１３が記憶するサービス定義データ４３０のうち利用資源データ４３６の一例を示す図である。
サービス定義データ４３０は、サービス内容データ４３１に加えて、１以上の利用資源データ４３６を有する。各利用資源データ４３６は、サービス識別データ４３７、資源識別データ４３８を含む。
【０１２０】
サービス識別データ４３７は、サービスを識別する文字列を表わすデータである。サービス識別データ４３７は、サービス識別データ４３２と共通である。
資源識別データ４３８は、そのサービスが利用する資源を識別する文字列を表わすデータである。
例えば、利用資源データ４３６ａは、「サービスＡ」が「ネットワークＡ」を利用することを表わす。
【０１２１】
図１７は、この実施の形態における障害資源記憶部１２３が生成し記憶する障害資源データ４７０の一例を示す図である。
障害資源データ４７０は、１以上の資源状況データ４７１を有する。各資源状況データ４７１は、資源識別データ４７２、障害有無データ４７３を含む。
【０１２２】
資源状況データ４７１は、１つの資源につき１つある。なお、障害資源記憶部１２３は、障害の原因である資源についてのみ資源状況データ４７１を記憶し、障害の原因でない資源については資源状況データ４７１を記憶しない構成としてもよい。
資源識別データ４７２は、資源を識別する文字列を表わすデータである。資源識別データ４７２は、資源識別データ４３８と共通である。
障害有無データ４７３は、その資源が障害の原因となっているか否かを表わすデータである。この図では、理解を助けるため「正常」「障害」という文字列を使っているが、障害有無データ４７３は、１ビットの二値データでよい。
【０１２３】
例えば、資源状況データ４７１ａは、「システムＡ」が障害の原因となっていないことを表わす。
また、例えば、資源状況データ４７１ｄは、「ネットワークＢ」が障害の原因となっていることを表わす。
【０１２４】
図１８は、この実施の形態における障害記憶部１２２が生成し記憶する障害状況データ４５０の一例を示す図である。
障害内容データ４５３は、そのサービスに障害が発生しているか否か、発生している場合はその原因である資源を表わす。
例えば、サービス状況データ４５１ｂは、「サービスＢ」に「ネットワークＢ」を原因とする障害が発生していることを表わす。
【０１２５】
例えば、障害検出部１２１が「サービスＢ」に障害が発生していることを検出し、その原因がネットワークにあることを特定したとする。
図１６に示したサービス定義データ４３０によれば、「サービスＢ」が利用しているネットワーク資源は「ネットワークＢ」である。これに基づいて、障害検出部１２１は、「サービスＢ」に障害が発生した原因である資源が「ネットワークＢ」であることを判定する。
障害検出部１２１の検出結果に基づいて、障害記憶部１２２は、「サービスＢ」に「ネットワークＢ」を原因とする障害が発生していることを表わすサービス状況データ４５１ｂを生成し、生成したサービス状況データ４５１ｂを記憶する。また、障害資源記憶部１２３は、「ネットワークＢ」が障害の原因となっていることを表わす資源状況データ４７１ｄを生成し、生成した資源状況データ４７１ｄを記憶する。
図１６に示したサービス定義データ４３０によれば、「ネットワークＢ」を利用しているサービスには、「サービスＢ」のほかに「サービスＣ」がある。これに基づいて、障害予測部１２４は、「サービスＣ」にも障害が発生すると予測する。
障害予測部１２４の予測結果に基づいて、障害記憶部１２２は、（実際には障害を検出していないが）「サービスＣ」に「ネットワークＢ」を原因とする障害が発生していることを表わすサービス状況データ４５１ｃを生成し、生成したサービス状況データ４５１ｃを記憶する。
【０１２６】
図１９は、この実施の形態における使用サービス記憶部１３２が生成し記憶する使用サービスデータ４６０の一例を示す図である。
【０１２７】
上述したように、障害記憶部１２２は、障害検出部１２１が実際に障害を検出したサービスだけでなく、障害予測部１２４が障害の発生を予測したサービスについても、障害が発生していることを表わすサービス状況データ４５１を生成し、記憶する。
サービス判定部１３１は、障害記憶部１２２が記憶した障害状況データ４５０に基づいて、タスクが実際に使用するサービスを判定するので、障害検出部１２１が実際に障害を検出したサービスだけでなく、障害予測部１２４が障害の発生を予測したサービスについても、代替サービスに置き換える。
使用サービス記憶部１３２は、サービス判定部１３１の判定結果に基づいて、使用サービスデータ４６０を生成し、記憶する。
【０１２８】
上述した例で言えば、サービス判定部１３１は、障害検出部１２１が実際に障害を検出した「サービスＢ」について、「サービスＢ」にネットワークを原因とする障害が発生した場合の代替サービスである「サービスＧ」を、「サービスＢ」を通常時のサービスとして使用する「タスクＢ」及び「タスクＥ」が実際に使用するサービスであると判定する。これに基づいて、使用サービス記憶部１３２は、「タスクＢ」が実際に使用するサービスが「サービスＧ」であることを表わすタスク内容データ４６１ｂを生成して記憶し、「タスクＥ」が実際に使用するサービスが「サービスＧ」であることを表わすタスク内容データ４６１ｅを生成して記憶する。
また、サービス判定部１３１は、障害予測部１２４が障害の発生を予測した「サービスＣ」についても同様に、「サービスＣ」にネットワークを原因とする障害が発生した場合の代替サービスである「サービスＤ」を、「サービスＣ」を通常時のサービスとして使用する「タスクＣ」及び「タスクＩ」が実際に使用するサービスであると判定する。これに基づいて、使用サービス記憶部１３２は、「タスクＣ」が実際に使用するサービスが「サービスＤ」であることを表わすタスク内容データ４６１ｃを生成して記憶し、「タスクＩ」が実際に使用するサービスが「サービスＤ」であることを表わすタスク内容データ４６１ｉを生成して記憶する。
【０１２９】
図２０は、業務プロセスにおけるサービスの使用順序の一例を示す図である。
この図は、図１９に示した使用サービスデータ４６０に基づいて、図６に示したタスクを、そのタスクが実際に使用するサービスに置き換えたものである。
図１９に示した使用サービスデータ４６０によれば、「タスクＡ」は「サービスＡ」を使用し、「タスクＢ」は「サービスＧ」を使用し、「タスクＣ」は、「サービスＤ」を使用する。したがって、「プロセスＡ」は、最初に「サービスＡ」を使用し、次に「サービスＧ」を使用し、最後に「サービスＤ」を使用する。
また、図１９に示した使用サービスデータ４６０によれば、「タスクＤ」は「サービスＡ」を使用し、「タスクＥ」は「サービスＧ」を使用し、「タスクＦ」は「サービスＤ」を使用する。したがって、「プロセスＢ」は、「サービスＡ」と「サービスＧ」とを並行して使用し、その後、「サービスＤ」を使用する。
更に、図１９に示した使用サービスデータ４６０によれば、「タスクＧ」は「サービスＡ」を使用し、「タスクＨ」は「サービスＥ」を使用し、「タスクＩ」は「サービスＤ」を使用する。したがって、「プロセスＣ」は、最初に「サービスＡ」を使用し、次に「サービスＥ」を使用し、これを何回か繰り返したのち、「サービスＤ」を使用する。
【０１３０】
このように、プロセス実行装置１００は、検出された障害の原因である資源を特定し、同じ資源を利用している他のサービスにも障害が発生すると予測する。これにより、プロセス実行装置１００は、実際に障害が検出される前に、障害の発生を予測したサービスを代替サービスに置き換える。プロセス実行装置１００は、障害の発生が予測されるサービスを呼び出さないので、ロールバックが必要になる状況の発生を更に減らすことができる。
【０１３１】
図２１は、この実施の形態における障害予測処理Ｓ６２０の流れの一例を示すフローチャート図である。
障害予測処理Ｓ６２０において、障害予測部１２４は、障害が発生するサービスを予測する。
障害予測処理Ｓ６２０は、サービス選択工程Ｓ６２１、資源選択工程Ｓ６２２、障害判定工程Ｓ６２３、障害記憶工程Ｓ６２４、正常記憶工程Ｓ６２５を有する。
【０１３２】
サービス選択工程Ｓ６２１において、障害予測部１２４は、ＣＰＵ９１１を用いて、サービス記憶部１１３が記憶したサービス定義データ４３０のなかから、未処理のサービス内容データ４３１を１つ選択する。
すべてのサービス内容データ４３１について処理が完了し、未処理のサービス内容データ４３１がない場合、障害予測部１２４は、ＣＰＵ９１１を用いて、障害予測処理Ｓ６２０を終了する。
未処理のサービス内容データ４３１があり、サービス内容データ４３１を選択した場合、障害予測部１２４は、ＣＰＵ９１１を用いて、資源選択工程Ｓ６２２へ処理を進める。
【０１３３】
資源選択工程Ｓ６２２において、障害予測部１２４は、ＣＰＵ９１１を用いて、サービス記憶部１１３が記憶したサービス定義データ４３０のなかから、サービス選択工程Ｓ６２１で選択したサービス内容データ４３１のサービス識別データ４３２と同一のサービス識別データ４３７を有する利用資源データ４３６を抽出する。障害予測部１２４は、ＣＰＵ９１１を用いて、抽出した利用資源データ４３６のなかから、未処理の利用資源データ４３６を１つ選択する。
抽出したすべての利用資源データについて処理が完了し、未処理の利用資源データ４３６がない場合、障害予測部１２４は、ＣＰＵ９１１を用いて、正常記憶工程Ｓ６２５へ処理を進める。
未処理の利用資源データ４３６があり、利用資源データ４３６を選択した場合、障害予測部１２４は、ＣＰＵ９１１を用いて、障害判定工程Ｓ６２３へ処理を進める。
【０１３４】
障害判定工程Ｓ６２３において、障害予測部１２４は、ＣＰＵ９１１を用いて、資源選択工程Ｓ６２２で選択した利用資源データ４３６から、資源識別データ４３８を取得する。障害予測部１２４は、ＣＰＵ９１１を用いて、障害資源記憶部１２３が記憶した障害資源データ４７０のなかから、取得した資源識別データ４３８と同一の資源識別データ４７２を有する資源状況データ４７１を取得する。取得した資源状況データ４７１の障害有無データ４７３に基づいて、障害予測部１２４は、ＣＰＵ９１１を用いて、その資源が障害の原因となっているか否かを判定する。
その資源が障害の原因となっている場合、障害予測部１２４は、ＣＰＵ９１１を用いて、障害記憶工程Ｓ６２４へ処理を進める。
その資源が障害の原因となっていない場合、障害予測部１２４は、ＣＰＵ９１１を用いて、資源選択工程Ｓ６２２に処理を戻し、次の利用資源データ４３６を選択する。
【０１３５】
障害記憶工程Ｓ６２４において、障害記憶部１２２は、ＣＰＵ９１１を用いて、記憶した使用サービスデータ４６０のうち、サービス選択工程Ｓ６２１で障害予測部１２４が選択したタスク内容データ４２１のタスク識別データ４２２と同一のタスク識別データ４６２を有するタスク内容データ４６１を更新する。障害記憶部１２２は、タスク内容データ４６１の使用サービス識別データ４６３を、障害判定工程Ｓ６２３で障害予測部１２４が取得した資源識別データ４３８に置き換える。障害記憶部１２２は、磁気ディスク装置９２０を用いて、更新したタスク内容データ４６１を記憶する。
障害予測部１２４は、ＣＰＵ９１１を用いて、サービス選択工程Ｓ６２１に処理を戻し、次のタスク内容データ４２１を選択する。
【０１３６】
正常記憶工程Ｓ６２５において、障害記憶部１２２は、ＣＰＵ９１１を用いて、記憶した使用サービスデータ４６０のうち、サービス選択工程Ｓ６２１で障害予測部１２４が選択したタスク内容データ４２１のタスク識別データ４２２と同一のタスク識別データ４６２を有するタスク内容データ４６１を更新する。障害記憶部１２２は、タスク内容データ４６１の使用サービス識別データ４６３を、そのサービスに障害が発生していないことを表わすデータに置き換える。障害記憶部１２２は、磁気ディスク装置９２０を用いて、更新したタスク内容データ４６１を記憶する。
障害予測部１２４は、ＣＰＵ９１１を用いて、サービス選択工程Ｓ６２１に処理を戻し、次のタスク内容データ４２１を選択する。
【０１３７】
この実施の形態におけるプロセス実行装置１００は、サービス記憶部１１３と、障害予測部１２４とを有する。
上記サービス記憶部１１３は、上記記憶装置（磁気ディスク装置９２０）を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスが利用する資源（資源識別データ４３８）を記憶する。
上記障害検出部１２１は、上記処理装置（ＣＰＵ９１１）を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービスに障害が発生していることを検出した場合に、上記サービスに障害が発生した原因である資源を特定する。
上記障害予測部１２４は、上記処理装置を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのいずれかが使用するサービスのうち少なくともいずれかのサービスについて、上記サービス記憶部１１３が記憶した資源を取得する。障害予測部１２４は、取得した資源に、上記障害検出部１２１が特定した原因である資源が含まれるか否かを判定して、上記サービスに障害が発生するか否かを予測する。
上記サービス判定部１３１は、上記処理装置を用いて、上記プロセス記憶部１１１が記憶した１以上のタスクのうち少なくともいずれかのタスクについて、上記タスク記憶部１１２が記憶したサービスを取得する。サービス判定部１３１は、取得したサービスについて上記障害予測部１２４が予測した結果に基づいて、上記サービスに障害が発生するか否かを判定する。サービス判定部１３１は、上記サービスに障害が発生すると判定した場合に、取得したサービスについて上記代替サービス記憶部１１４が記憶した代替サービスを、上記タスクが使用するサービスであると判定する。
【０１３８】
この実施の形態におけるプロセス実行装置１００によれば、あるサービスに障害が発生していることを検出した場合、そのサービスに障害が発生した原因である資源を利用する他のサービスについても障害が発生すると予測し、障害の発生を予測したサービスを使用するタスクについて、使用するサービスを代替サービスに変更する。実際に障害を検出する前に、使用するサービスを変更するので、ロールバックの発生を更に減少させることができる。これにより、業務実行システム８００における業務プロセスの処理効率及び処理速度を更に向上させることができる。
【０１３９】
この実施の形態におけるプロセス実行装置１００において、上記障害予測部１２４は、上記処理装置（ＣＰＵ９１１）を用いて、上記サービス記憶部１１３が記憶した資源に基づいて、上記プロセス記憶部１１１が記憶した１以上のタスクのいずれかが使用するサービスのなかから、上記障害検出部１２１が特定した原因である資源を利用するサービスを抽出する。障害予測部１２４は、抽出したサービスについて、上記サービスに障害が発生すると予測する。
上記サービス判定部１３１は、上記処理装置を用いて、上記タスク記憶部１１２が記憶したサービスに基づいて、上記プロセス記憶部１１１が記憶した１以上のタスクのなかから、障害が発生すると上記障害予測部１２４が予測したサービスを使用するタスクを抽出する。サービス判定部１３１は、抽出したタスクについて、使用するサービスを判定する。
【０１４０】
この実施の形態におけるプロセス実行装置１００によれば、障害の原因である資源を利用するサービスを抽出して障害が発生すると予測し、障害発生を予測したサービスを使用するタスクを抽出して、使用するサービスを判定する。実際に障害を検出する前に、使用するサービスを変更するので、ロールバックの発生を減少させることができる。これにより、業務実行システム８００における業務プロセスの処理効率及び処理速度を向上させることができる。
【０１４１】
以上説明したプロセス実行装置１００は、サービスに障害が発生した場合でも業務プロセスをなるべく中断することなく継続して実行する業務継続処理装置である。
業務継続処理装置は、サービスが使用している機器が記されているサービス使用機器設定（利用資源データ４３６）と、障害が発生している要素の情報である障害発生要素情報（障害資源データ４７０）と、障害が発生している機器を使用しているサービスの情報である障害発生要素使用サービス情報（障害状況データ４５０）とを有する。業務継続処理装置は、代替プロセスを動的に再構成する。
【０１４２】
サービス使用機器設定には、サービスが使用している機器が記されている。サービス使用機器設定は、人が手で記述し、サービス実行時に判定する。サービス使用機器設定は、ＸＭＬやＤＢ、フラットファイルなどを用いる。
【０１４３】
障害発生要素情報は、障害発生サービス情報の障害の原因となっている要素の情報を保持する。障害発生要素情報は、障害発生要素として障害の発生している要素名（資源識別データ４７２）を保持する。要素とは、サービスで使用している機器（資源）、サービスの実行結果が特定の条件を満たす場合などである。
【０１４４】
障害発生要素使用サービス情報は、障害発生要素情報に保持している機器を使用しているサービスの情報を保持する。障害発生要素使用サービス情報は、障害発生要素名（障害内容データ４５３）とそれを使用しているサービス名（サービス識別データ４５２）とを保持する。サービスが対象機器を使用しているかは、サービス実行部を参照して取得する。
【０１４５】
業務継続処理装置は、プロセス代替設定及び障害状態管理情報を用いて、障害が発生した要素を使用している別のサービスをタスクとして持つビジネスプロセス定義を再構築する。プロセス定義の代替プロセスへの再構築は、サービス稼働状況監視部が障害を検出することがトリガーとなる。
プロセスＣは、通常プロセスとしてタスクの連続で記述されている。通常時にプロセスＣが実行するタスクは、タスクＧ→タスクＨ→タスクＩであり、実行するサービスはサービスＡ→サービスＥ→サービスＣである。サービスＣのネットワーク障害時の代替サービスは、サービスＤである。サービスＥが使用しているネットワークは、ネットワークＢである。
【０１４６】
サービス稼働状況監視部（障害検出部１２１）は、機器障害（ネットワーク障害）を検出する。サービス稼働状況監視部は、ネットワークＢを障害発生要素として保存する。サービス稼働状況監視部は、サービス実行部に障害を通知する。
【０１４７】
ビジネスプロセス再構築部（障害予測部１２４）は、サービス使用機器設定（利用資源データ４３６）を参照する。ビジネスプロセス再構築部は、サービス使用機器設定にしたがって、ネットワークＢを使用するサービスを検索する。ビジネスプロセス再構築部は、サービス使用機器設定で取得したサービスを全て障害発生要素使用サービスに保存する。サービスＣはネットワークＢを使用しているため、障害発生要素使用サービスのリストに保持される。
【０１４８】
ビジネスプロセス再構築部（サービス判定部１３１）は、障害発生要素使用サービスすべてについて、代替サービス設定（代替サービス指定データ４４０）を参照する。ビジネスプロセス再構築部は、代替プロセスを再構築する。
このとき、プロセスＣが実行するタスクは、タスクＧ→タスクＨ→タスクＩ、実行するサービスはサービスＡ→サービスＥ→サービスＤとなる。
【０１４９】
なお、上記の動作は、実施の形態１で示した動作と並行して実行する。
例えば、プロセスＡのタスクＢを実行して、ネットワークＢの障害を検出した際、プロセスＡを代替プロセスに再構築した後、プロセスＣを代替プロセスに再構築する。
【０１５０】
このように、サービスの使用要素の情報を参照することによって、要素に障害が発生しているサービスを実行してタスクに障害が生じる前に、先回りして代替プロセスに切り替える、これにより、障害発生時にもロールバックを行うことなくビジネスプロセスを完遂することができる。
【０１５１】
実施の形態３．
実施の形態３について、図２２〜図２３を用いて説明する。
なお、実施の形態１または実施の形態２と共通する部分については、同一の符号を付し、説明を省略する。
【０１５２】
図２２は、この実施の形態におけるプロセス実行装置１００の機能ブロックの構成の一例を示すブロック構成図である。
プロセス実行装置１００は、実施の形態２で説明した構成と比較して、使用サービス記憶部１３２及び呼出サービス判定部１５１がない。
【０１５３】
サービス判定部１３１は、ＣＰＵ９１１を用いて、プロセス実行部１４０が選択したタスクについて、実際に使用するサービスを判定する。
サービス呼出部１５２は、サービス判定部１３１が判定したサービスを呼び出すことにより、プロセス実行部１４０が選択したタスクを実行する。
【０１５４】
実施の形態１や実施の形態２との違いは、あらかじめ、サービス判定部１３１が使用するサービスを判定しておくのではなく、タスクを実行する段階で、サービス判定部１３１が使用するサービスを判定する点である。
これにより、業務プロセス上定義されているもののほとんど実行しないタスクや業務プロセスが存在する場合、サービス判定部１３１は、実行しないタスクについて使用するサービスの判定をしないので、サービス判定部１３１の処理による負荷を減らすことができる。
【０１５５】
図２３は、この実施の形態におけるサービス呼出処理Ｓ６３０の流れの一例を示すフローチャート図である。
サービス呼出処理Ｓ６３０において、サービス呼出部１５２は、プロセス実行部１４０が選択したタスクを実行するため、そのタスクが使用するサービスを呼び出す。
サービス呼出処理Ｓ６３０は、通常サービス取得工程Ｓ６３２、障害判定工程Ｓ６３３、サービス呼出工程Ｓ６３４、代替サービス取得工程Ｓ６３５、実行不能通知工程Ｓ６３６を有する。
【０１５６】
通常サービス取得工程Ｓ６３２において、サービス判定部１３１は、ＣＰＵ９１１を用いて、タスク記憶部１１２が記憶したタスク定義データ４２０のなかから、プロセス実行部１４０が選択したタスクのタスク識別データと同一のタスク識別データ４２２を有するタスク内容データ４２１を取得する。サービス判定部１３１は、ＣＰＵ９１１を用いて、取得したタスク内容データ４２１の通常サービスデータ４２３を取得して、判定対象サービスデータとする。
【０１５７】
障害判定工程Ｓ６３３において、サービス判定部１３１は、ＣＰＵ９１１を用いて、障害記憶部１２２が記憶した障害状況データ４５０のなかから、通常サービス取得工程Ｓ６３２（または、後述する代替サービス取得工程Ｓ６３５）で取得した判定対象サービスデータと同一のサービス識別データ４５２を有するサービス状況データ４５１を取得する。取得したサービス状況データ４５１の障害内容データ４５３に基づいて、サービス判定部１３１は、ＣＰＵ９１１を用いて、そのサービスに障害が発生しているか否かを判定する。
そのサービスに障害が発生している場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、代替サービス取得工程Ｓ６３５へ処理を進める。
そのサービスが正常である場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、サービス呼出工程Ｓ６３４へ処理を進める。
【０１５８】
サービス呼出工程Ｓ６３４において、サービス呼出部１５２は、ＣＰＵ９１１を用いて、サービス記憶部１１３が記憶したサービス定義データ４３０のなかから、サービス判定部１３１が取得した判定対象サービスデータと同一のサービス識別データ４３２を有するサービス内容データ４３１を取得する。取得したサービス内容データ４３１に基づいて、サービス呼出部１５２は、ＣＰＵ９１１を用いて、そのサービスを呼び出す。
サービス呼出部１５２は、ＣＰＵ９１１を用いて、サービス呼出処理Ｓ６３０を終了する。
【０１５９】
代替サービス取得工程Ｓ６３５において、サービス判定部１３１は、ＣＰＵ９１１を用いて、代替サービス記憶部１１４が記憶した代替サービス指定データ４４０のなかから、判定対象サービスデータと同一のサービス識別データ４４２を有するサービス代替データ４４１を抽出する。サービス判定部１３１は、ＣＰＵ９１１を用いて、抽出したサービス代替データ４４１のなかから、障害判定工程Ｓ６１３で取得したサービス状況データ４５１の障害内容データ４５３が表わす障害が、代替条件データ４４３が表わす条件を満たすサービス代替データ４４１を選択する。サービス判定部１３１は、ＣＰＵ９１１を用いて、選択したサービス代替データ４４１から、代替サービス識別データ４４４を取得して、判定対象サービスデータとする。
代替サービス指定データ４４０のなかに、判定対象サービスデータと同一のサービス識別データ４４２を有するサービス代替データ４４１がない場合、そのサービスには、代替サービスが指定されていないことを意味する。サービス判定部１３１は、ＣＰＵ９１１を用いて、実行不能通知工程Ｓ６３６へ処理を進める。
また、抽出したサービス代替データ４４１のなかに、障害内容データ４５３が表わす障害が条件を満たすサービス代替データ４４１がない場合、そのサービスにその障害が発生した場合の代替サービスが指定されていないことを意味する。その場合も、サービス判定部１３１は、ＣＰＵ９１１を用いて、実行不能通知工程Ｓ６３６へ処理を進める。
更に、取得した代替サービス識別データ４４４が、障害判定工程Ｓ６１３で既に障害が発生していることを判定したサービスのサービス識別データである場合、循環する代替関係が指定されていて、循環関係にあるすべてのサービスに障害が発生していることを意味する。その場合も、サービス判定部１３１は、ＣＰＵ９１１を用いて、実行不能通知工程Ｓ６３６へ処理を進める。
上記以外の場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、障害判定工程Ｓ６３３に処理を戻し、新たな判定対象サービスデータによって識別されるサービスについて、障害発生の有無を判定する。
【０１６０】
実行不能通知工程Ｓ６３６において、サービス判定部１３１は、ＣＰＵ９１１を用いて、管理者に対して、プロセス実行部１４０が選択したタスクが使用できるサービスがないため、業務プロセスの実行を継続できないことを通知する。サービス判定部１３１は、ＣＰＵ９１１を用いて、業務プロセスの実行を中断するか否かについて管理者の判断を入力する。
管理者が業務プロセスの実行を中断すると判断した場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、サービス呼出処理Ｓ６３０を中断（異常終了）する。
管理者が業務プロセスの実行を中断しないと判断した場合、サービス判定部１３１は、ＣＰＵ９１１を用いて、通常サービス取得工程Ｓ６３２に処理を戻し、もう一度、そのタスクが通常時に使用するサービスから順に、障害が発生していないサービスがないか確認する。復旧作業などにより障害から復旧しているサービスが見つかれば、サービス呼出部１５２がそのサービスを呼び出す。
【０１６１】
この実施の形態におけるプロセス実行装置１００において、上記サービス判定部１３１は、上記処理装置（ＣＰＵ９１１）を用いて、上記プロセス実行部１４０が選択したタスクについて、使用するサービスを判定する。
【０１６２】
この実施の形態におけるプロセス実行装置１００によれば、実際にタスクを実行する直前に、そのタスクが使用するサービスを判定するので、サービス判定部１３１の処理による負荷を軽減することができる。
【０１６３】
なお、サービス判定部１３１がサービスを判定する処理だけでなく、障害予測部１２４がサービスの障害を予測する処理も、実際にタスクを実行する直前に実行する構成としてもよい。
例えば、上述したサービス呼出処理Ｓ６３０の障害判定工程Ｓ６３３において、障害予測部１２４が、ＣＰＵ９１１を用いて、判定対象サービスデータによって識別されるサービスについて、障害が発生するか否かを予測する。サービス判定部１３１は、障害記憶部１２２が記憶した障害状況データ４５０（この場合、障害状況データ４５０は実際に障害検出部１２１が検出した障害だけを表わす）と、障害予測部１２４が予測した予測結果とに基づいて、サービスに障害が発生しているか否かを判定する。
【０１６４】
この実施の形態におけるプロセス実行装置１００において、上記障害予測部１２４は、上記処理装置（ＣＰＵ９１１）を用いて、上記プロセス実行部１４０が選択したタスクについて上記タスク記憶部１１２が記憶したサービスを取得し、取得したサービスについて、障害が発生するか否かを予測する。
【０１６５】
この実施の形態におけるプロセス実行装置１００によれば、実際にタスクを実行する直前に、サービスに障害が発生するか否かを予測するので、障害予測部１２４の処理による負荷を軽減することができる。
【符号の説明】
【０１６６】
１００  プロセス実行装置、１１１  プロセス記憶部、１１２  タスク記憶部、１１３  サービス記憶部、１１４  代替サービス記憶部、１２１  障害検出部、１２２  障害記憶部、１２３  障害資源記憶部、１２４  障害予測部、１３１  サービス判定部、１３２  使用サービス記憶部、１４０  プロセス実行部、１４１  状態記憶部、１４２  実行タスク判定部、１５０  タスク実行部、１５１  呼出サービス判定部、１５２  サービス呼出部、１５３  結果取得部、４１０  プロセス定義データ、４１１  タスクデータ、４１２  タスク識別データ、４１３  所属プロセスデータ、４１４  開始条件データ、４２０  タスク定義データ、４２１，４６１  タスク内容データ、４２２，４６２  タスク識別データ、４２３  通常サービスデータ、４３０  サービス定義データ、４３１  サービス内容データ、４３２  サービス識別データ、４３３  サービス提供装置データ、４３４  サービス呼出データ、４３６  利用資源データ、４３７  サービス識別データ、４３８  資源識別データ、４４０  代替サービス指定データ、４４１  サービス代替データ、４４２  サービス識別データ、４４３  代替条件データ、４４４  代替サービス識別データ、４５０  障害状況データ、４５１  サービス状況データ、４５２  サービス識別データ、４５３  障害内容データ、４６０  使用サービスデータ、４６３  使用サービス識別データ、４７０  障害資源データ、４７１  資源状況データ、４７２  資源識別データ、４７３  障害有無データ、８００  業務実行システム、８１０  サービス提供装置、９０１  表示装置、９０２  キーボード、９０３  マウス、９０４  ＦＤＤ、９０５  ＣＤＤ、９０６  プリンタ装置、９０７  スキャナ装置、９１０  システムユニット、９１１  ＣＰＵ、９１２  バス、９１３  ＲＯＭ、９１４  ＲＡＭ、９１５  通信装置、９２０  磁気ディスク装置、９２１  ＯＳ、９２２  ウィンドウシステム、９２３  プログラム群、９２４  ファイル群、９３１  電話器、９３２  ファクシミリ機、９４０  インターネット、９４１  ゲートウェイ、９４２  ＬＡＮ。
【図１】
2011175534.tif 000003
【図２】
2011175534.tif 000004
【図３】
2011175534.tif 000005
【図４】
2011175534.tif 000006
【図５】
2011175534.tif 000007
【図６】
2011175534.tif 000008
【図７】
2011175534.tif 000009
【図８】
2011175534.tif 000010
【図９】
2011175534.tif 000011
【図１０】
2011175534.tif 000012
【図１１】
2011175534.tif 000013
【図１２】
2011175534.tif 000014
【図１３】
2011175534.tif 000015
【図１４】
2011175534.tif 000016
【図１５】
2011175534.tif 000017
【図１６】
2011175534.tif 000018
【図１７】
2011175534.tif 000019
【図１８】
2011175534.tif 000020
【図１９】
2011175534.tif 000021
【図２０】
2011175534.tif 000022
【図２１】
2011175534.tif 000023
【図２２】
2011175534.tif 000024
【図２３】
2011175534.tif 000025