(57)【要約】【課題】ワークフロー処理において、補償トランザクションを最適化するように個々の処理の実行順は決定されていない。【解決手段】１台以上のサービス提供サーバ50により提供される複数のサービスを、順次呼び出すワークフロー実行制御プログラムであって、１台以上のサービス提供サーバに接続されるコンピュータを、サービス毎の処理結果を用いて、サービス毎の処理コスト及びエラーの発生確率を算出するサービス計測部26と、１つのサービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて正規化される正規化コストを、サービスの各々について算出する正規化コスト算出部24と、算出された正規化コストに従って、サービスの実行順序を決定する実行フロー決定部23と、サービス提供サーバに対して、実行順序に従ってサービスを順次呼び出すサービス呼出部28として機能させる。【選択図】図２
2010020537.tif 000002
【特許請求の範囲】
【請求項１】
１台以上のサービス提供サーバにより提供される複数のサービスを、順次呼び出すワークフロー実行制御プログラムであって、前記１台以上のサービス提供サーバに接続されるコンピュータを、
前記サービス毎の処理結果を用いて、前記サービス毎の処理コスト及びエラーの発生確率を算出するサービス計測部と、
１つの前記サービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて正規化される正規化コストを、前記サービスの各々について算出する正規化コスト算出部と、
前記算出された正規化コストに従って、前記サービスの実行順序を決定する実行フロー決定部と、
前記サービス提供サーバに対して、前記実行順序に従って前記サービスを順次呼び出すサービス呼出部として機能させることを特徴とするワークフロー実行制御プログラム。
【請求項２】
前記正規化コスト算出部は、前記複数のサービスの依存関係を定義するワークフロー定義を用いて、前記正規化コストを算出する請求項１に記載のワークフロー実行制御プログラム。
【請求項３】
前記正規化コスト算出部は、前記サービスの依存関係を定義するワークフロー定義を用いて、依存関係を有するサービスのグループ単位に前記正規化コストの計算を行い、
前記実行フロー決定部は、前記グループ単位の正規化コストに従って、グループ単位の実行順序を決定する請求項１又は２に記載のワークフロー実行制御プログラム。
【請求項４】
前記サービス計測部は、前記各サービスを実行するサービス提供サーバから前記各サービスを実行するために要した処理時間をさらに取得して、該処理時間に基づいて前記サービス毎の処理コストを算出する請求項１〜３のいずれか１項に記載のワークフロー実行制御プログラム。
【請求項５】
１台以上のサービス提供サーバにより提供される複数のサービスを、順次呼び出すワークフロー実行制御装置であって、
前記サービス毎にエラーの発生確率及び処理コストを蓄積する処理コスト保持部と、
前記サービス毎の処理結果を用いて、前記サービス毎の処理コスト及びエラーの発生確率を算出するサービス計測部と、
１つの前記サービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて正規化される正規化コストを、前記サービスの各々について算出する正規化コスト算出部と、
前記算出された正規化コストに従って、前記サービスの実行順序を決定する実行フロー決定部と、
前記サービス提供サーバに対して、前記実行順序に従って前記サービスを順次呼び出すサービス呼出部と、
を有することを特徴とするワークフロー実行制御装置。
【請求項６】
１台以上のサービス提供サーバにより提供される複数のサービスを、順次呼び出すワークフロー実行制御方法であって、
前記サービス毎の処理結果を用いて、前記サービス毎の処理コスト及びエラーの発生確率を算出するステップと、
前記サービス毎の処理結果を用いて前記サービス毎の処理コスト及びエラーの発生確率を算出するステップと、
前記算出された正規化コストに従って、前記サービスの実行順序を決定するステップと、
前記サービス提供サーバに対して、前記実行順序に従って前記サービスを順次呼び出すステップと、
を有することを特徴とするワークフロー実行制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ワークフローの制御に関する。
【背景技術】
【０００２】
コンピュータを用いてワークフローを処理する場合、トランザクションとともに、ワークフローに規定された複数の処理手順を実行する必要がある。ワークフローとは、一般に、複数の処理手順を含む手続きを言う。トランザクションとは、複数のアプリケーションに跨る処理において、各アプリケーションの処理結果の整合性を保つための処理を言う。
従来、ワークフロー処理を行うために、ＢＰＥＬ（Business Process Execution Language）等に従って、ワークフローを規定し、且つそのワークフローに基づいてサービスリクエスタがサービスを呼び出す方式が用いられている。
【０００３】
また、ワークフローを実行して、ワークフローに含まれる複数のアプリケーションサービス（以下、「サービス」と称す）を実行するために、複数サービスに対してアクセスをロックするようなトランザクションを行うと、各サービスが管理するリソースのロック期間が長くなる場合がある。そのため、各サービスを独立に実行し、あるサービスの処理ができなかった場合（以下「エラー」と称す）、他サービスに補償トランザクション（キャンセル処理／ロールバック処理等）を実行させるようなトランザクション（「ロング・ラニング・トランザクション」と称される）がある。この補償トランザクションは、例えば、あるサービスの応答結果が特定の条件に合致した時に、他の実行済みサービスに対してキャンセル処理の依頼を行うようにして実行される。
【０００４】
なお、ワークフロー処理において、補償トランザクションを行うためのフロー制御プログラムが提案されている。このプログラムは、各処理の処理時間が長い処理、又は、エラー発生確率が低い処理の実行順序を最後に配置するようにワークフローを定義する。しかし、個々の処理に対して実行順序を決めるが、補償トランザクションを最適化するように個々の処理の実行順序は決定されていない。
【０００５】
【特許文献１】特開２００６−１９５８９２号広報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本出願は、１つのサービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて正規化される正規化コストに従って、複数のサービスの実行順序を規定することにより、補償トランザクションを最適化したワークフロー処理を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、１台以上のサービス提供サーバにより提供される複数のサービスを、順次呼び出すワークフロー実行制御プログラムが提供される。
上記ワークフロー実行制御プログラムは、上記１台以上のサービス提供サーバに接続されるコンピュータを、上記サービス毎の処理結果を用いて上記サービス毎の処理コスト及びエラーの発生確率を算出するサービス計測部と、１つの上記サービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて正規化される正規化コストを、上記サービスの各々について算出する正規化コスト算出部と、上記算出された正規化コストに従って、上記サービスの実行順序を決定する実行フロー決定部と、上記サービス提供サーバに対して、上記実行順序に従って上記サービスを順次呼び出すサービス呼出部として機能させる。
【発明の効果】
【０００８】
開示するワークフロー実行制御プログラムは、エラー発生時のサービス実行及び補償トランザクションの実行コストを削減したワークフロー処理を提供することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面を参照して、実施形態を説明する。
図１を用いて、ワークフロー実行制御装置の接続構成の概要について説明する。インターネット、ＬＡＮ等のネットワーク５を介して、ワークフロー実行制御装置１０ａ、クライアントコンピュータ４０（以下、「クライアント４０」と称する）、サービス提供サーバ５０ａ〜ｃが互いにアクセス可能に接続されている。
【００１０】
［第１の実施形態］
図２を用いて、第１の実施形態に係るワークフロー実行制御装置１０ａについて説明する。
ワークフロー実行制御装置１０ａは、クライアント４０から受信したリクエストメッセージに従って、１台以上のサービス提供サーバにより提供される複数のサービスを、順次呼び出すワークフロー実行制御を実施する。
ワークフロー実行制御装置１０ａは、単一又は複数のＣＰＵ（Central Processing Unit）及びメモリ（ＳＲＡＭ、ＤＲＡＭなど）を含む処理部２０、不揮発性半導体メモリ、ハードディスク装置、光ディスク装置等の記憶部１２、及びＮＩＣ（Network Interface Card）等の通信部３８を有する。ワークフロー実行制御装置１０ａは、ＨＴＴＰ等の既知のプロトコルを用いて、ネットワーク５を介してクライアント４０及び／又はサービス提供サーバ５０ａ〜ｃへ各種データの送受信を行えるように構成される。
【００１１】
また、記憶部１２には、少なくともワークフロー実行制御装置１０ａにおける動作を制御するためのプログラム１３、処理対象となる複数のサービスの実行順序及び／又は依存関係を規定した情報であるワークフロー定義１４、読出パラメータ定義情報１５、制御部２０で実行される処理に利用される各種データ１６が格納される。プログラム１３には、オペレーティングシステム、及び、アプリケーション等が含まれる。
【００１２】
処理部２０は、記憶部１２に格納されたプログラム１３を実行することにより、フロー定義識別部２１、メッセージ解析部２２、実行フロー決定部２３、正規化コスト算出部２４、サービス計測部２６、宛先サービス選択部２７、サービス呼出部２８、及び応答受信制御部２９として機能する。
また、処理部２０のメモリ又は記憶部１２は、処理コスト保持部２５として機能する。
【００１３】
フロー定義識別部２１は、クライアント４０から通信部３８を介して受信したリクエストメッセージの内容を解析して、リクエストメッセージに対応するワークフロー定義１４を記憶部１２から読み出す。ここで、リクエストメッセージとは、サービスに対する処理の要求仕様を規定したメッセージのことを言う。
メッセージ解析部２２は、記憶部１２から読出パラメータ定義情報１５を読み出して、読出パラメータ定義情報１５により指示されるリクエストメッセージ中の場所からパラメータ（例えば、予約先ホテル名）を読み出し、実行フロー決定部２３に伝える。読出パラメータ定義情報１５は、例えば、「ＸＰａｔｈ（ＸＭＬパス言語）」で規定し得る。
【００１４】
実行フロー決定部２３は、フロー実行順を決める対象のサービス群を、ワークフロー定義１４から識別し、正規化コスト算出部２４にそのサービス群に対するコスト計算を依頼する。また、実行フロー決定部２３は、正規化コスト算出部２４のコスト計算結果を受け取り、コスト降順にサービスの実行順序を決定する。実行フロー決定部２３は、決定したフロー実行順序を宛先サービス選択部２７に通知する。
正規化コスト算出部２４は、実行フロー決定部２３から指定されたサービス群およびメッセージ解析部２２が読み出したパラメータをもとに、処理コスト保持部２５から各サービスの処理時間、キャンセル処理時間、及びエラー発生確率を読み出す。正規化コスト算出部２４は、読み出したデータを用いて、各サービスの正規化コストを計算し、実行フロー決定部２３に渡す。
【００１５】
処理コスト保持部２５は、サービスごと及び／又はメッセージ解析部２２の抽出したパラメータ（情報単位）ごとに、サービスの処理時間及びキャンセル処理時間である処理コスト、及びエラー発生確率を保持する。
サービス計測部２６は、サービスごと及び／又はメッセージ解析部２２の抽出したパラメータごとに、サービス呼出部２８からリクエスト送信時刻及び応答受信制御部２９から応答時刻を取得して、サービスの処理時間及びキャンセル処理時間である処理コストを算出する。そして、サービス計測部２６は、処理コストを処理コスト保持部２５に保存する。また、サービス計測部２６は、応答受信制御部２９からサービス提供サーバ５０からサービスの処理結果を取得して、処理結果が「ＯＫ」か「エラー」かを識別する。サービス計測部２６は、処理結果がエラーの場合はエラー発生確率を再計算して、上記処理コストと合わせて処理コスト保持部２５にエラー発生確率を記録する。
宛先サービス選択部２７は、実行フロー決定部２３が決定したフロー実行順序に従って、呼び出すサービスを決定する。また、宛先サービス選択部２７は、実行中の各ワークフローの状態管理、エラー発生時のキャンセル用の処理呼び出し判断を行う。
サービス呼出部２８は、フロー実行順序に従って決定されたサービスの実行を要求するサービス実行リクエストを、通信部３８を介して決定されたサービスを提供するサービス提供サーバ５０に送信してサービス提供サーバ５０のサービスを呼び出す。さらに、サービス呼出部２８は、サービス実行リクエスト送信時の時刻であるリクエスト送信時刻をサービス計測部２６に伝える。
応答受信制御部２９は、通信部３８を介して処理結果をサービス提供サーバ５０から受信し、宛先サービス選択部２７に渡す。応答受信制御部２９は、処理結果を用いて、処理結果受信時の応答時刻をサービス計測部２６に伝える。
【００１６】
クライアント４０は、ワークフロー実行制御装置１０ａにリクエストメッセージを送信することにより、サービス提供サーバ５０ａ〜ｃが提供し得るＡＳＰサービスの利用を要求する。
クライアント４０は、液晶ディスプレイ等の表示部、キーボード及びマウス等の操作部、ＣＰＵ、メモリ等を含む処理部、ハードディスク等の記憶部、及びＮＩＣ等の通信部を有し、ネットワーク５を利用してワークフロー実行制御装置１０ａ及び／又はクライアント４０へ各種データの送受信を行えるように構成されている。
クライアント４０には、ＷｅｂサイトのＷｅｂページをアクセスするためのＷｅｂブラウザがインストールされている。また、クライアント４０は、パーソナルコンピュータ、ブラウザフォン、又は、ＰＤＡ（Personal Digital Assistance）であっても良い。なお、図１では、クライアント４０は、１台で示されているが、この数に限定されるものでは無く、複数台あっても良い。
【００１７】
サービス提供サーバ５０ａ〜ｃは、ＡＳＰサービスを提供するサーバであっても良い。サービス提供サーバ５０ａ〜ｃの各々は、ＣＰＵ、メモリ等を含む処理部、ハードディスク等の記憶部、及びＮＩＣ等の通信部を有する。サービス提供サーバ５０ａ〜ｃは、記憶部に格納されたプログラムを処理部で実行することで、任意のＡＳＰサービスであるサービスＳ１〜Ｓ３をそれぞれクライアント４０に提供する。また、サービス提供サーバ５０ａ〜ｃは、ネットワーク１を利用してワークフロー実行制御装置１０ａ及びクライアント４０へ各種データの送受信を行えるように構成されている。
なお、図１では、サービス提供サーバは、３台で示されているが、その台数に制限されない。また、１台のサービス提供サーバが複数のサービスを提供することで、サービス提供サーバの台数を減少させても良い。
【００１８】
図３及び図４を用いて、ワークフロー実行制御の処理フローの一例について説明する。
なお、図３及び図４では、クライアント４０、ワークフロー実行制御装置１０ａ、及びサービス提供サーバ５０は、それぞれ、ＡＳＰサービスの要求処理、ワークフロー実行制御、及びサービス処理を開始する。図３及び図４では、各装置における処理のフローは、実線で示され、各装置間を跨るデータの送受信は点線で示される。
【００１９】
図３及び図４を用いて、クライアント４０によるＡＳＰサービスの要求処理フローの一例について説明する。
まず、クライアント４０は、サービス提供サーバ５０ａ〜ｃが提供し得るＡＳＰサービスを利用するために、ＡＳＰサービスの要求処理を開始して、ワークフロー実行制御装置１０ａにリクエストメッセージを送信する（ステップＳ１０１）。クライアント４０は、ワークフロー実行制御装置１０ａから、リクエストメッセージに含まれたワークフローが適切に実行されたか、又は、どのサービスがエラーであったかを示すメッセージ応答を受信して（ステップＳ１１６）、ＡＳＰサービスの要求処理を終了する。
【００２０】
図３及び図４を用いて、ワークフロー実行制御装置１０ａによるワークフロー実行制御の処理フローの一例について説明する。
ワークフロー実行制御装置１０ａは、クライアント４０から受信したリクエストメッセージに従ってワークフロー実行制御の処理を開始する。まず、ワークフロー実行制御装置１０ａの通信部３８でクライアント４０から送信されたリクエストメッセージを受信する（ステップＳ１０２）。なお、ステップＳ１０２では、ワークフロー実行制御装置１０ａの通信部３８は、サービス提供サーバ５０ａ〜ｃに送られたリクエスト送信に対する処理結果（ＯＫ結果又はエラー結果）も受信する（後述のステップＳ１１４）。
【００２１】
図５に、ステップＳ１０１で送信されるリクエストメッセージの内容の一例を示す。リクエストメッセージは、サービスに対する処理の要求を規定したメッセージである。図示されるように、リクエストメッセージ９０１は、ＸＭＬフォーマットで定義され得る。リクエストメッセージ９０１は、９０２に示す＜ｎａｍｅ＞タグ内に、リクエストメッセージに含まれるワークフローの名称である「ｗｆ１」が示される。リクエストメッセージ９０１は、サービス提供サーバ５０で実行されるサービスＳ１、Ｓ２、Ｓ３に対するリクエスト内容９１１、９２１、９３１を有する。また、リクエスト内容９１１、９２１、９３１は、９１２、９２２、９３２に示す＜ｎａｍｅ＞タグ内のパラメータとして、リクエスト単位又はサービス単位となる予約リソースをそれぞれ含み、さらに、９１３、９２３、９３３で示す部分にリクエスト仕様情報をそれぞれ含む。
【００２２】
例えば、リクエスト内容９１１では、予約リソース（「リクエスト情報単位」とも称する）９１２は「Hotel 1」であり、リクエスト仕様情報９１３はサービスに対する予約リソースを示す仕様（日付、部屋の種類、人数）である。リクエスト内容９２１では、予約リソース９２２は「Train 1」であり、リクエスト仕様情報９２３はサービスに対する予約リソースを示す仕様（日付、出発駅、到着駅）である。リクエスト内容９３１は、予約リソース９３２は「Airplane 1」であり、リクエスト仕様情報９３３はサービスに対する予約リソースを示す仕様（日付、出発空港、到着空港）である。
【００２３】
ステップＳ１０３では、ワークフロー実行制御装置１０ａは、ステップＳ１０２でクライアント４０又はサービス提供サーバ５０ａ〜ｃから受信したメッセージか、クライアント４０からのリクエストメッセージか、サービス提供サーバ５０からの処理結果かを判断する（ステップＳ１０３）。受信したメッセージがリクエストメッセージの場合は、ステップＳ１０４に進む。受信したメッセージがサービス提供サーバ５０ａ〜ｃからの処理結果の場合は、ステップＳ１０５に進む。
ステップＳ１０４では、フロー定義識別部２１は、リクエストメッセージ９０１のワークフローの名称「ｗｆ１」を読み出して、このワークフロー名称と関係付けられるワークフロー定義を読み出して、実行フロー決定処理を実行する（ステップＳ１５１〜Ｓ１５５）。
【００２４】
図６を用いて、実行フロー決定処理のフローの一例を説明する。まず、メッセージ解析部２２は、ステップＳ１０４で読み出したワークフロー定義１４を参照して、ワークフロー定義１４の中にサービスの並列実行サービスの有無を判断する。ここで「並列実行サービス」とは、実行順を制約するサービス間の依存関係が何も無いサービスを言う。
【００２５】
図７は、ワークフロー定義１４により規定された複数のサービスの実行順序及び依存関係の一例を示す図である。図示されるように、ワークフロー定義１４には、サービスＳ１、Ｓ２、Ｓ３がそれぞれ並列に配置され、サービス間において実行処理の前処理や後処理等を規定する依存関係を有しないように規定される。つまり、ワークフロー定義１４には、サービスＳ１、Ｓ２、Ｓ３が並列実行サービスであるとして規定される。ワークフローの処理が開始され、各サービスにリクエストを送信すると、各サービスは結果（ＯＫ又はエラー）を受領し、エラーの場合は終了し、ＯＫの場合はキャンセル要求を待つ。各サービスは、キャンセル要求を受信しなければサービスリクエスト処理を終了してワークフロー処理を終了する。各サービスは、キャンセル要求を受信すれば、キャンセル処理を実行し、さらにサービスリクエスト処理を終了してワークフロー処理を終了する。なお、図示されるワークフロー定義は、ＢＰＥＬ等で記述することができる。
【００２６】
並列実行サービスがあればステップＳ１５２に進み、並列実行サービスがなければ実行フロー決定処理を終了して、ステップＳ１０８に進む。
ステップＳ１５２では、メッセージ解析部２２は、予約リソース９１２、９２２、９３２を読み出す。なお、リクエストメッセージ９０１から予約リソース９１２、９２２、９３２を呼び出すためには、図８に示す読出パラメータ定義情報１５のＸＰａｔｈを利用することができる。また、図８に示されるように、ワークフロー定義１４に規定されたサービスＳ１、Ｓ２、Ｓ３は、読出パラメータ定義情報１５内のＸｐａｔｈに含まれる「hotel」、「train」、「airplane」というサービスにそれぞれ関係付けられる。
【００２７】
実行フロー決定部２３は、正規化コスト算出部２４に対してサービスＳ１、Ｓ２、Ｓ３に対する正規化コストの計算を依頼する。正規化コスト算出部２４は、処理コスト保持部２５から、正規化コスト算出に必要なサービスＳ１、Ｓ２、Ｓ３の計測データ（サービス毎の処理時間、キャンセル処理時間、エラー発生確率）を呼び出す（ステップＳ１５３）。図９に、計測データの一例を示す。処理コスト保持部２５は、図示されるように予約リソース毎に計測データ（サービス毎の処理時間、キャンセル処理時間、エラー発生確率）を保持する。また、これらの計測データはサービス計測部２６によって適宜修正が加えられる（後述）。
【００２８】
正規化コスト算出部２４は、正規化コストの計算を行う（ステップＳ１５４）。正規化コストとは、１つの前記サービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて正規化されるデータであって、サービスにエラーが発生した場合の障害の大きさを定量的に評価するための指標である。さらに、処理コストは、本実施例では、サービスの１つのエラーにより生じる他のサービスのキャンセル処理時間及び他のサービスの実行に要した処理時間として規定される。したがって、この正規化コストは、最後に実行されるサービスがエラーにより実行できなくなった場合に、当該エラーサービス以外の実行済みサービスのキャンセル処理時間と、実行済みサービスの処理時間と、エラー発生確率から計算することができる。この場合、正規化コストは、以下の式により規定することができる。
（正規化コスト）＝（既に実行された他のサービスのキャンセル処理時間＋既に実行された他のサービスの処理時間）×（エラーの発生確率）・・・（式１）
【００２９】
図９は、サービス計測部２６が管理する計測データの一例を示す。図９に示される計測データを用いて、正規化コスト算出部２４により式１を用いて計算されるサービスＳ１(Hotel1)、Ｓ２(Train1)、Ｓ３(Airplane1)のそれぞれの正規化コストは、以下のように計算される。
Ｓ１(Hotel1)の正規化コスト＝（Ｓ２(Train1)のキャンセル処理時間＋Ｓ２(Train1)の処理時間＋Ｓ３(Airplane1)のキャンセル処理時間＋Ｓ３(Airplane1)の処理時間）×Ｓ２(Train1)のエラー発生確率＝（５０＋１００）×０．２＝３０
Ｓ２(Train1)の正規化コスト＝（Ｓ１(Hotel1)のキャンセル処理時間＋Ｓ１(Hotel1)の処理時間＋Ｓ３(Airplane1)のキャンセル処理時間＋Ｓ３(Airplane1)の処理時間）×Ｓ１(Hotel1)のエラー発生確率＝（１００＋１００）×０．１＝２０
Ｓ３(Airplane1)の正規化コスト＝（Ｓ１(Hotel1)のキャンセル処理時間＋Ｓ１(Hotel1)の処理時間＋Ｓ２(Train1)のキャンセル処理時間＋Ｓ２(Train1)の処理時間）×Ｓ３(Airplane1)のエラー発生確率＝（１００＋５０）×０．０３＝４．５
【００３０】
実行フロー決定部２３は、計算した正規化コストをもとに、コスト降順に実行フローを確定する（ステップＳ１５５）。上記した例においては、実行フロー順は、Ｓ１、Ｓ２、Ｓ３の順になる。
このように、本実施例では、正規化コストに従って、複数のサービスの実行順序を規定することにより、補償トランザクションを最適化したワークフロー処理を提供することができる。これにより、ワークフロー実行制御装置は、サービス提供サーバのエラー発生時の処理コストを軽減することができる。また、このような補償トランザクションの最適化並びに処理コストの軽減により、ワークフロー実行制御装置は、サービス提供サーバのＣＰＵの処理負荷を低減することができる。
また、正規化コストのみならずワークフロー定義に規定される従属関係によってサービス間の処理実行順を反映することができるため、実質的なサービスの実行手順も柔軟に規定できる。
次に、ステップＳ１５１に戻り並列実行サービスがあれば、ステップＳ１５２〜Ｓ１５５を繰り返し、並列実行サービスが無ければ図４のステップＳ１０８に進む。
【００３１】
ステップＳ１０５では、サービス提供サーバ５０ａ〜ｃから提供された処理結果に対して、その処理結果がエラー応答（キャンセル処理の処理結果を含む）か、ＯＫ応答か否かを判断する。エラー応答の場合は、ステップＳ１０６に進み、ＯＫ応答の場合はステップＳ１０７に進む。
ステップＳ１０６では、サービス計測部２６は、エラー応答によるエラー発生確率を更新し、また、キャンセル処理が実行された場合はキャンセル処理時間を更新する。具体例としては、応答受信制御部２９は、サービス提供サーバから受け取った処理結果に含まれるサービスＳ１の「Hotel1」呼び出し結果を得た時刻（例：2008.5.24 10:00:00.30）、処理結果（エラー）をサービス計測部２６に伝える。サービス計測部２６は、処理コスト保持部２５のサービスＳ１の当該エントリ「Hotel1」の平均処理時間と、エラー発生確率を更新する。例えば、過去１０回の処理時間が５０ｍｓ、今回が３０ｍｓの場合、（５０×１０＋３０）／１１＝４８ｍｓに更新される。またエラー発生確率は過去１０回で０．２であったとすると、（１０×０．２＋１）／１１＝０．２７に更新される。宛先サービス選択部２７は、リクエスト処理がエラーであったため、ワークフローにしたがって処理を終了する。
ステップＳ１０７では、実行フロー決定部２３が、後述されるステップＳ１０９で更新済みの最新の実行順序を読み出す。
【００３２】
ステップＳ１０８では、宛先サービス選択部２７は、実行フロー決定部２３から受領したサービスの実行順に従ってリクエスト対象となる宛先サービスを特定する。
実行フロー決定部２３は、特定された宛先サービスによって、実行ワークフローの状態を遷移する（ステップＳ１０９）。
【００３３】
図１０を用いて、実行ワークフローの状態遷移図の一例を説明する。正規化コスト算出部２４により、サービス実行順はＳ１、Ｓ２、Ｓ３となったため、ステップＳ２０１、Ｓ２０３、Ｓ２０５に示すように、サービスＳ１、Ｓ２、Ｓ３に対するサービス実行リクエスト送信が行われる。
ステップＳ２０２に示すように、サービスＳ１リクエストに対する処理結果がＯＫであれば、ステップＳ２０２の処理結果の判定は「Ｙｅｓ」となり、サービスＳ２のリクエスト送信（ステップＳ２０３）に対する処理結果の判定処理（ステップＳ２０４）に進む。サービスＳ１リクエストに対する処理結果がエラーであれば、ステップＳ２０２の処理結果の判定は「Ｎｏ」となり、ステップＳ２０９に進む。ステップＳ２０９では、サービスＳ１リクエストの処理結果が「エラー結果」であることを含むメッセージ応答をクライアント４０へ送信する。
ステップＳ２０４では、サービスＳ２リクエストに対する処理結果がＯＫであれば、ステップＳ２０４の処理結果の判定は「Ｙｅｓ」となり、サービスＳ３のリクエスト送信（ステップＳ２０５）に対する処理結果の判定処理（ステップＳ２０６）に進む。サービスＳ２リクエストに対する処理結果がエラーであれば、ステップＳ２０３の処理結果の判定は「Ｎｏ」となり、ステップＳ２０８に進んでサービスＳ１のリクエストのキャンセル処理を実行する。ステップＳ２０９では、サービスＳ２リクエストの処理結果が「エラー結果」であり、サービスＳ１リクエストに対してはキャンセル処理を実行されたことを示すメッセージ応答をクライアント４０へ送信する。
ステップＳ２０６では、サービスＳ３リクエストに対する処理結果がＯＫであれば、ステップＳ２０６の処理結果の判定は「Ｙｅｓ」となり、ステップＳ２０９に進む。この場合、サービスＳ１、Ｓ２、Ｓ３リクエストの全ての処理結果がＯＫであることを示すメッセージ応答をクライアント４０へ送信する。
ステップＳ２０６では、サービスＳ３リクエストに対する処理結果がエラーであれば、ステップＳ２０６の処理結果の判定は「Ｎｏ」となる。この場合、ステップＳ２０７に進んでサービスＳ２のリクエストのキャンセル処理を実行し、さらに、ステップＳ２０８に進んでサービスＳ１のリクエストのキャンセル処理を実行する。ステップＳ２０９では、サービスＳ３リクエストの処理結果が「エラー結果」であり、サービスＳ１、Ｓ２リクエストに対してはキャンセル処理を実行されたことを含むメッセージ応答を送信する。
上記ステップＳ２０２、Ｓ２０４、Ｓ２０６は、サービス提供サーバからの処理結果メッセージの受信（ステップＳ１０２）をイベントとして実行フロー決定部２３により行われて、実行フロー状態として管理される。この実行フロー状態は、上述したようにステップＳ１０７で、読み込まれる。
【００３４】
実行フロー決定部２３は、実行フロー状態を監視して、全サービスについて呼び出し処理（リクエスト送信処理）が行われたか否かを判断する（ステップＳ１１０）。全サービスについて呼び出し処理が行われた場合は、ステップＳ１１５に進み、全サービスについて呼び出し処理が行われなかった場合は、ステップＳ１１１に進む。
ステップＳ１１１では、サービス呼出部２８が、サービスＳ１、Ｓ２、Ｓ３のいずれかに対するサービス実行リクエストを送信する。なお、このサービス実行リクエストには、サービスＳ１、Ｓ２、Ｓ３のいずれかに対応するリクエスト仕様情報９１３、９２３、９３３が含まれる。
【００３５】
ステップＳ１１５では、ステップＳ２０９の処理と同様に、ワークフロー実行制御装置１０ａからクライアント４０に対して、リクエストメッセージに含まれたワークフローが適切に実行されたか、又は、どのサービスがエラーであったかを示すメッセージ応答を送信する。クライアント４０は、ワークフロー実行制御装置１０ａからのメッセージ応答を受信する（ステップＳ１１６）。
ステップＳ１１７では、サービス呼出部２８は、リクエスト送信時刻（例えば、2008.5.24 10:00:00.00）をサービス計測部２６に伝えて、ワークフロー実行制御装置１０ａによるワークフロー実行制御の処理フローを終了する。
【００３６】
図３及び図４を用いて、サービス提供サーバ５０によるサービス処理の処理フローの一例について説明する。
サービス提供サーバ５０ａ〜ｃは、ワークフロー実行制御装置１０ａから送信されるサービス実行リクエストに従って、サービス処理を開始する。
まず、サービス提供サーバ５０ａ〜ｃは、ワークフロー実行制御装置１０ａからサービス実行リクエストを受信し（ステップＳ１１２）、サービス処理をサービス実行リクエストに従って実行する（ステップＳ１１３）。次に、サービス提供サーバ５０ａ〜ｃは、サービス処理の処理結果（ＯＫ処理又はエラー処理）をワークフロー実行制御装置１０ａに送信して（ステップＳ１１４）、サービス処理を終了する。
【００３７】
［第２の実施形態］
図１１を用いて、第２の実施形態に係るワークフロー実行制御装置１０ｂについて説明する。
ワークフロー実行制御装置１０ｂは、第１の実施形態に係るワークフロー実行制御装置１０ａと同じ構成を有するとともに、さらに、正規化するコスト定義を設定し且つ保持するために使用されるコスト定義を保持するためのコスト定義保持部３０を有する。
処理部２０内のメモリ又は記憶部１２は、コスト定義保持部３０として機能することで、ワークフロー実行制御装置１０ｂはコスト定義を保持する。例えば、コスト定義には、リソース予約の場合、リソースのキャンセル発生期限（以下、「キャンセル期限」と称す）と、キャンセルコスト、リクエストメッセージ中の予約日を示す場所がＸＰａｔｈで定義される（後述）。なお、キャンセルコストは、サービス提供サーバ運営者とキャンセル時支払コストの取り決め等に従い、ワークフロー実行制御装置１０ｂの管理者が図示しない入力部を介して手動で入力することができる。
また、メッセージ解析部２２は、コスト定義保持部３０に含まれる定義にしたがって、リクエストメッセージ中のコスト計算に必要なパラメータ（例：リソースの予約日）を読み出し、実行フロー決定部２３に伝えることができる。さらに、正規化コスト算出部２４は、コスト定義保持部３０が保持するコスト定義に従って、エラー発生時の処理コストを算出する。なお、本実施形態における処理コストは、サービスの１つのエラーにより生じる他のサービスのキャンセルコストである。
また、正規化コスト算出部２４は、処理コスト保持部２５から各サービスのエラー発生確率を読み出し、各サービスの正規化コストを算出し、実行フロー決定部２３に渡す。
【００３８】
図１２を用いて、ワークフロー実行制御の処理フローの一例について説明する。
図１２に示すステップＳ１０１〜１０９は、図３に示すステップＳ１０１〜Ｓ１０９と同じであるため、説明を省略する。実行フロー決定処理（Ｓ１５１〜Ｓ１６４）が、第１の実施形態と異なる。
【００３９】
図１３を用いて、実行フロー決定処理のフローの一例を説明する。
図１３に示すステップＳ１５１及びＳ１５２は、図６に示すステップＳ１５１及びＳ１５２と同じであるため、説明を省略する。
ステップＳ１６１では、メッセージ解析部２２は、コスト定義保持部３０のコスト定義を読み出す。図１４を用いて、キャンセル時に発生するコストの効果を評価するためのコスト定義の一例を説明する。図示されるように、「キャンセル期限」、「キャンセルコスト」、リクエストメッセージ中の予約日を示す場所がＸＰａｔｈで定義される。本実施例では、予約先リソースの時刻情報、現在時刻（例：2008-5-24 10:00:00）から、「キャンセル期限」が決められる。
メッセージ解析部２２は、受信したリクエストメッセージ中の予約時刻情報を読み出す（ステップＳ１６２）。読み出し結果は、例えば、Hotel1=2008-5-29, Train1=2008-5-29 10:00:00, Airplane1=2008-5-29 14:00:00となる。
【００４０】
正規化コスト算出部２４は、各サービスＳ１(Hotel1)、Ｓ２(Train1)、Ｓ３(Airplane1)に対する正規化コストの計算を行う。
なお、上記のように、処理コストは、サービスの１つのエラーにより生じる他のサービスのキャンセルコストとして規定される。したがって、この正規化コストは、最後に実行されるサービスがエラーにより実行できなくなった場合に、当該エラーサービス以外の実行済みサービスのキャンセルコストと、エラー発生確率から計算する。この場合、正規化コストは、以下の式により規定する。
（正規化コスト）＝（既に実行された他のサービスのキャンセルコスト）×（エラーの発生確率）・・・（式２）
【００４１】
各サービスＳ１の正規化コストは、他のサービスＳ２、Ｓ３の処理コストの和に、Ｓ１のエラー発生確率を掛けた値とする。本実施例では、Ｓ２およびＳ３のみキャンセルコストが発生する為、各サービスの正規化コストは、Ｓ１＝（２００００＋５０００）×０．２＝５０００、Ｓ２＝（０＋２００００）×０．１＝２０００、Ｓ３＝（０＋５０００）×０．０３＝１５０、となる。
【００４２】
実行フロー決定部２３は、上記計算した正規化コストをもとに、コスト降順にフローを確定する。本実施例では、Ｓ１、Ｓ２、Ｓ３の順に実行すると決定する（ステップＳ１６４）。
次に、ステップＳ１５１に戻り並列実行サービスがあれば、ステップＳ１６２〜Ｓ１５６を繰り返し、並列実行サービスが無ければ図１２のステップＳ１０８に進む。
このように、本実施例では、「キャンセル期限」、「キャンセルコスト」等のコスト定義を用いて算出した正規化コストに従って、複数のサービスの実行順序を規定することにより、補償トランザクションを最適化したワークフロー処理を提供することができる。これにより、ワークフロー実行制御装置は、サービス提供サーバのエラー発生時の処理コストを軽減する。
【００４３】
［第３の実施形態］
第３の実施形態に係るワークフロー実行制御装置１０ｃは、第１の実施形態に係るワークフロー実行制御装置１０ａと同じ構成を有する。
本実施例では、サービスをグループ化したワークフロー定義により、サービス実行順を決定する。図１５を用いて、ワークフロー定義１４の一例を説明する。図示のように、ワークフロー定義１４では、グループＧ１、Ｇ２、Ｇ３は互いに独立な関係を有するが、グループＧ１内のサービスＳ１及びＳ４が従属的な関係をもって定義される。また、実施例として、サービスＳ４は、サービスＳ１の処理結果をメール通知するサービスとし、サービスＳ４はサービスＳ１の直後に実行されるものとする。なお、図示されるワークフロー定義は、ＢＰＥＬ等で記述することができる。
【００４４】
また、正規化コスト算出部２４及び実行フロー決定部２３は、第１の実施形態と比して下記に示す機能をさらに有する。
正規化コスト算出部２４は、複数サービスがグループ化されて定義されていた場合、グループ化されたサービス群を１つのサービスとして正規化コストを計算し、実行フロー決定部に渡す。
実行フロー決定部２３は、正規化コスト算出部２４のコスト計算結果を受け取り、グループ間の実行順を決定する。決定した最終的なサービスの実行順を、宛先サービス選択部２７に通知する。
【００４５】
なお、本処理は、第１の実施形態と比して実行フロー決定処理が異なるので、実行フロー決定処理を、図１６を用いて説明する。また、図１５に示すステップＳ１５１及びＳ１５２は、図６に示すステップＳ１５１及びＳ１５２と同じであるため、説明を省略する。
【００４６】
ステップＳ１７１では、メッセージ解析部２２は、受信したリクエストメッセージ中の予約リソースHotel1, Train1, Airplane1の情報を読み出す。なお、サービスＳ４については読み出す場所の定義がないため実行されない。
【００４７】
実行フロー決定部２３は、ｗｆ１で入れかえ可能な処理として定義されている、グループＧ１（サービスＳ１，Ｓ４）、グループＧ２（サービスＳ２）、グループＧ３（サービスＳ３）に対して正規化コスト算出部２４に正規化コストを計算する為の依頼をする。
正規化コスト算出部２４は、各グループＧ１、Ｇ２、Ｇ３に対する正規化コストの計算を行う（ステップＳ１７２）。本実施例では、各々の実行時間、キャンセル処理時間、ＮＧ確率がそれぞれ図９のような関係になっているものとする。例えばグループＧ２の正規化コストは、他のサービスＳ１，Ｓ３，Ｓ４の処理コストの和に、Ｓ２のエラー発生確率を掛けた値とする。この場合、各サービスの正規化コストは、Ｇ１＝（５０＋１００）×（０．２＋０．１）＝４．５，Ｇ２＝（１００＋１００＋１．５）×０．１＝２１．５，Ｇ３＝（１００＋５０＋１５）＝４．９５となる。
実行フロー決定部２３は、上記計算した正規化コストをもとに、コスト降順にフローを確定する。本実施例では、Ｇ１，Ｇ２，Ｇ３（Ｓ１，Ｓ４，Ｓ２，Ｓ３）の順に実行すると決定する（ステップＳ１７３）。
【００４８】
このように、本実施例では、正規化コストに従って、グループ化によりサービスの依存関係を考慮してサービスの実行順序を規定することもできる。これにより、複数サービス間の呼び出し順に制約がある状況下でも、ワークフロー実行制御装置は、補償トランザクションを最適化したワークフロー処理の提供、サービス提供サーバのエラー発生時の処理コストを軽減することができる。また、このような補償トランザクションの最適化並びに処理コストの軽減により、ワークフロー実行制御装置は、サービス提供サーバのＣＰＵの処理負荷を低減することができる。
【００４９】
［第４の実施形態］
図１７を用いて、第４の実施形態に係るワークフロー実行制御装置１０ｄについて説明する。
ワークフロー実行制御装置１０ｄは、第１の実施形態に係るワークフロー実行制御装置１０ａと同じ構成を有する。
また、サービス計測部２６は、第１の実施形態と比して、各サービスの処理結果を受け取る際に、該メッセージ内に含まれる処理時間情報を処理コストとして処理コスト保持部に記録する機能をさらに有する。
また、サービス提供サーバ５０ａ〜ｃ処理部は、記憶部に格納されたプログラムを実行することで、計測エージェント部５１として機能する。計測エージェント部５１は、ワークフロー実行制御装置１０ｄからリクエストメッセージを受信後、サービスの実行開始から実行完了までのサービス提供プログラム５２を実行するＣＰＵ実行時間を計測する。サービス提供サーバ５０ａ〜ｃは、処理結果に加えて上記ＣＰＵ実行時間を、ワークフロー実行制御装置１０ｄに送信する。
【００５０】
図１８を用いて、サービス提供サーバの処理の一例を説明する。
サービス呼出部２８は、サービスＳ１の「Hotel1」予約の呼び出しを行う為に、リクエストをサービスＳ１のサービス提供サーバ５０に送付する。また、予約先のリソース（Hotel1）、XPathの定義（/request/hotel/name/text()）をサービス計測部２６に伝える。サービス提供サーバ５０は上記サービス実行リクエストを待つ（ステップＳ１８１）。サービス提供サーバ５０は、サービス実行リクエストを受け取ると、サービスを実行し（ステップＳ１８２）、計測エージェント部６１が、サービス提供プログラムの処理の実行開始から実行完了までのＣＰＵ実行時間を計測する（ステップＳ１８３）。本実施例では、３０ｍｓの実行時間がかかったものとする。
【００５１】
サービス提供サーバ５０は処理結果に加えて上記ＣＰＵ実行時間を、ワークフロー実行制御装置１０ｄに対して応答する（ステップＳ１８４）。
ワークフロー実行制御装置１０ｄの応答受信制御部２９は、サービス提供サーバ５０のＣＰＵ実行時間並びに処理結果を受け取り、例えば、サービスＳ１の処理に要するＣＰＵ実行時間（３０ｍｓ）と、処理結果（エラー）をサービス計測部２６に伝える。サービス計測部２６は、上記実行時間（３０ｍｓ）を用いて処理コストを算出し、処理コスト保持部２５のサービスＳ１の該当エントリを更新する。
【００５２】
以上より、サービス提供サーバ５０側のプログラムの実行時間を計ることができるため、例えばサービス実行前、実行後にサービス提供サーバ内で一時的に処理待ちキュー等の待ち時間が入った場合でも正確にコスト計測ができるようになる。
【００５３】
［第５の実施形態］
図１９を用いて、第５の実施形態に係るワークフロー実行制御装置１０ｅについて説明する。
ワークフロー実行制御装置１０ｅは、第１の実施形態に係るワークフロー実行制御装置１０ａと同じ構成を有する。また、ワークフロー実行制御装置１０ｅは、ネットワーク５を介してワークフロー管理サーバ６０に接続される。
また、フロー定義識別部２１は、第１の実施形態と比して、クライアント４０から受信したリクエストメッセージの内容を解析して、実行するワークフローを識別する機能をさらに有する。さらに、フロー定義識別部２１は、識別したワークフローをワークフロー管理サーバ６０に対して通信部３８を介して問い合わせるためのリクエストを送信する。
また、ワークフロー管理サーバ６０は、ワークフロー定義を一元管理するためのサーバである。ワークフロー管理サーバ６０は、フロー定義識別部２１からのリクエストに対して、指定されたワークフロー定義の応答を行うことができる。
【００５４】
以下、クライアントからのリクエストメッセージ受信時の動作説明を行う。クライアント４０が、ワークフロー実行制御装置１０ｅ宛にリクエストメッセージを送信する。リクエストの内容は、図３のステップＳ１０１で送信されるメッセージと同様の内容とする。ワークフロー実行制御装置１０ｅがリクエストを受信すると、フロー定義識別部２１がワークフローの識別を行い、リクエストメッセージに指定された「ｗｆ１」のワークフローを実行すると判断する。フロー定義識別部２１は、ワークフロー管理サーバ６０宛に「wf1」のワークフローを取得するためのリクエストを送信し、ワークフロー管理サーバ６０は、「ｗｆ１」のワークフロー定義をワークフロー実行制御装置１０ｅに対して応答する。フロー定義識別部２１は、受信したワークフロー定義をリクエストメッセージに対するワークフロー定義として適用する。以下、図３のステップＳ１０３と同様の処理を実行するため、説明を省略する。
なお、ワークフロー実行制御装置１０ｅは、上記ワークフロー管理サーバ６０から取得したワークフロー定義は、一定期間キャッシュとして保持し、再利用しても良い。
【００５５】
このように、複数のワークフロー実行制御装置１０を並列に配置した場合に、各サーバに対してワークフローの定義を配信することなく、ワークフロー管理サーバ６０で一元管理が可能となり、ワークフロー定義変更時のメンテナンスコストを削減できる。
【００５６】
［第６の実施形態］
図２０を用いて、第６の実施形態に係るクライアント４０ａについて説明する。
クライアント４０ａは、プログラム配信サーバ７０にネットワーク接続されている。第１〜５の実施形態で説明したワークフロー実行制御装置の機能は、ワークフロー制御プログラムとしてクライアント４０ａ内に配置し、クライアント４０ａ内ブラウザ上でワークフロー制御プログラムを実行する。
ワークフロー制御プログラムは、別途プログラム配信サーバ７０上に設置されており、例えばクライアント上で動作するＪａｖａ（登録商標）プログラムとして配信される。
【００５７】
以下、クライアントにおけるワークフロー制御プログラムの取得方法について説明する。クライアント４０ａ上のブラウザからプログラム配信サーバ７０上にリクエストを送信し、プログラム配信サーバ７０上のワークフロー制御プログラムを取得する。ワークフロー制御プログラムに対して、ブラウザからサービス実行リクエストを受信する。この場合、同一マシン内のデータ渡しであるため、ＸＭＬのメッセージ形式ではなく、プログラム呼び出しの引数等でワークフロー名や予約リソース名を指定しても良い。
リクエスト受信後の処理は、実施形態１と同様である為説明を省略する。
なお、ワークフロー制御プログラムは、リクエスト発行前に事前にプログラム配信サーバ７０経由で取得しても良い。
【００５８】
このように、ワークフロー実行制御装置を設置することなく、各クライアント側で複数サービスの呼び出しを行い、かつそのサービスのエラー発生時の処理コストを削減することが可能となる。また、このような補償トランザクションの最適化並びに処理コストの軽減により、クライアントは、サービス提供サーバのＣＰＵの処理負荷を低減することができる。
【００５９】
［第７の実施形態］
第７の実施形態に係るワークフロー実行制御装置１０ｆを説明する。クライアント４０からのリクエストメッセージが、バイナリメッセージであった場合に対応する為に、メッセージ解析部２２は、以下の機能を有しても良い。
メッセージ解析部２２は、あらかじめ設定しておいた、メッセージの特定場所を読み込む定義（バイト位置とサイズ）に基づいて、メッセージ中の指定された場所からパラメータ（例：予約先ホテル名）を読み出し、実行フロー決定部２３に伝える。
【００６０】
図２１に、リクエストメッセージの電文フォーマットの一例を示す。実施形態１のサービス実行順の決定処理（ステップＳ１５１〜Ｓ１５５）において、リクエストメッセージが例えば図１７のような形態（伝えられる情報は実施形態１と同じ内容）であるとする。そうすると、ステップＳ１５２のサービス呼出において、メッセージ解析部２２は、受信したリクエストメッセージ中の予約リソースHotel1, Train1, Airplane1の情報を読み出す。
図２２に、読出パラメータ定義情報の一例を示す。リクエストメッセージ中の予約リソース情報を読み出すとき、場所を指定する方法として、図２２に示されるように、例えば、メッセージ先頭からのバイト位置、その場所からのバイト数（サイズ）による指定を行っても良い。このようにすることで、ワークフロー実行制御装置に届くメッセージがバイナリデータであった場合でも、ワークフローの順序制御は可能である。
【００６１】
［第８の実施形態］
第８の実施形態に係るワークフロー実行制御装置１０ｇを説明する。クライアント４０からのリクエストメッセージが、例えばＣＳＶ(Comma Separated Values)形式のような、表形式のメッセージであった場合に対応する必要がある。その場合、メッセージ解析部２２は、あらかじめ設定しておいた、メッセージの特定場所を読み込む定義（行と列の位置）に基づいて、メッセージ中の指定された場所からパラメータ（例：予約先ホテル名）を読み出して、実行フロー決定部に伝える。
図２３にリクエストメッセージの一例を示す。リクエストメッセージが、例えば、図２３のような形態（伝えられる情報は実施形態１と同じ内容）であった場合について示す。
実施形態１のサービス実行順の決定処理（ステップＳ１５１〜Ｓ１５５）において、ステップＳ１５２において、メッセージ解析部２２は、受信したリクエストメッセージ中の予約リソース「Hotel1」、「Train1」、「Airplane1」の情報を読み出す。
図２４に、読出パラメータ定義情報の一例を示す。リクエストメッセージ中の予約リソース情報を読み出すとき、場所を指定する方法として、図２４に示されるように、メッセージの行および列の位置による指定を行っても良い。このようにすることで、ワークフロー実行制御装置１０に届くメッセージがＣＳＶ等の表形式のデータであった場合でも、ワークフローの順序制御が可能になる。
【００６２】
以上述べた実施態様は、以下の付記の通りである。
（付記１）
１台以上のサービス提供サーバにより提供される複数のサービスを、順次呼び出すワークフロー実行制御プログラムであって、前記１台以上のサービス提供サーバに接続されるコンピュータを、
前記サービス毎の処理結果を用いて、前記サービス毎の処理コスト及びエラーの発生確率を算出するサービス計測部と、
１つの前記サービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて、正規化される正規化コストを、前記サービスの各々について算出する正規化コスト算出部と、
前記算出された正規化コストに従って、前記サービスの実行順序を決定する実行フロー決定部と、
前記サービス提供サーバに対して、前記実行順序に従って前記サービスを順次呼び出すサービス呼出部として機能させることを特徴とするワークフロー実行制御プログラム。
（付記２）
前記正規化コスト算出部は、前記複数のサービスの依存関係を定義するワークフロー定義を用いて、前記正規化コストを算出する付記１に記載のワークフロー実行制御プログラム。
（付記３）
前記正規化コスト算出部は、前記サービスの依存関係を定義するワークフロー定義を用いて、依存関係を有するサービスのグループ単位に前記正規化コストの計算を行い、
前記実行フロー決定部は、前記グループ単位の正規化コストに従って、グループ単位の実行順序を決定する付記１又は２に記載のワークフロー実行制御プログラム。
（付記４）
前記サービス計測部は、前記各サービスを実行するサービス提供サーバから前記各サービスを実行するために要した処理時間をさらに取得して、該処理時間に基づいて前記サービス毎の処理コストを算出する付記１〜３のいずれかに記載のワークフロー実行制御プログラム。
（付記５）
前記コンピュータを、リクエストメッセージ中の特定の場所から情報単位を抜き出すメッセージ解析部としてさらに機能させ、
前記正規化コスト算出部は、前記抜き出した情報単位毎に正規化コストを算出し、
前記サービス計測部は、前記情報単位毎に前記処理コストと前記エラー発生確率を算出する付記１〜４のいずれかに記載のワークフロー実行制御プログラム。
（付記６）
前記処理コストは、前記サービスの１つのエラーにより生じる他のサービスのキャンセル処理時間及び該他のサービスの実行に要した処理時間である付記１〜５のいずれかに記載のワークフロー実行制御プログラム。
（付記７）
前記処理コストは、前記サービスの１つのエラーにより生じる他のサービスのキャンセルコストである付記１〜６のいずれか１項に記載のワークフロー実行制御プログラム。
（付記８）
１台以上のサービス提供サーバにより提供される複数のサービスを、順次呼び出すワークフロー実行制御装置であって、
前記サービス毎にエラーの発生確率及び処理コストを蓄積する処理コスト保持部と、
前記サービス毎の処理結果を用いて、前記サービス毎の処理コスト及びエラーの発生確率を算出するサービス計測部と、
１つの前記サービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて正規化される正規化コストを、前記サービスの各々について算出する正規化コスト算出部と、
前記算出された正規化コストに従って、前記サービスの実行順序を決定する実行フロー決定部と、
前記サービス提供サーバに対して、前記実行順序に従って前記サービスを順次呼び出すサービス呼出部と、
を有することを特徴とするワークフロー実行制御装置。
（付記９）
前記正規化コスト算出部は、前記複数のサービスの依存関係を定義するワークフロー定義を用いて、正規化コストを算出する付記８に記載のワークフロー実行制御装置。
（付記１０）
前記正規化コスト算出部は、前記サービスの依存関係を定義するワークフロー定義を用いて、依存関係を有するサービスのグループ単位に正規化コストの計算を行い、
前記実行フロー決定部は、前記グループ単位の正規化コストに従って、グループ単位の実行順を決定する付記８又は９に記載のワークフロー実行制御装置。
（付記１１）
前記サービス計測部は、前記各サービスを実行するサービス提供サーバから前記各サービスを実行するために要した処理時間をさらに取得して、該処理時間に基づいて前記サービス毎の処理コストを算出する付記８〜１０のいずれかに記載のワークフロー実行制御装置。
（付記１２）
リクエストメッセージ中の特定の場所から情報単位を抜き出すメッセージ解析部をさらに有し、
前記正規化コスト算出部は、前記抜き出した情報単位毎に正規化コストを算出し、
前記サービス計測部は、前記情報単位毎に前記処理コストと前記エラー発生確率を算出し、
前記処理コスト保持部は、前記情報単位毎に前記エラー発生確率と前記処理コストを保持する付記８〜１１のいずれかに記載のワークフロー実行制御装置。
（付記１３）
前記処理コストは、前記サービスの１つのエラーにより生じる他のサービスのキャンセル処理時間及び該他のサービスの実行に要した処理時間である付記８〜１２のいずれかに記載のワークフロー実行制御装置。
（付記１４）
前記処理コストは、前記サービスの１つのエラーにより生じる他のサービスのキャンセルコストである付記８〜１３のいずれかに記載のワークフロー実行制御装置。
（付記１５）
１台以上のサービス提供サーバにより提供される複数のサービスを、順次呼び出すワークフロー実行制御方法であって、
前記サービス提供サーバにおけるサービスの処理結果を取得して、前記サービス毎の処理コスト及びエラーの発生確率を算出するステップと、
１つの前記サービスのエラーにより生じる他のサービスの処理コストと、当該エラーの発生確率とを用いて正規化される正規化コストを、前記サービスの各々について算出するステップと、
前記算出された正規化コストに従って、前記サービスの実行順序を決定するステップと、
前記サービス提供サーバに対して、前記実行順序に従って前記サービスを順次呼び出すステップと、
を有することを特徴とするワークフロー実行制御方法。
【図面の簡単な説明】
【００６３】
【図１】ワークフロー実行制御装置の接続構成の概要を示す図である。
【図２】ワークフロー実行制御装置の一例を示す図である。
【図３】ワークフロー実行制御の処理フローの一例を示す図である。
【図４】ワークフロー実行制御の処理フローの一例を示す図である。
【図５】リクエストメッセージの内容の一例を示す図である。
【図６】実行フロー決定処理のフローの一例を示す図である。
【図７】実行ワークフロー定義の一例を示す図である。
【図８】読出パラメータ定義情報の一例を示す図である。
【図９】計測データの一例を示す図である。
【図１０】実行ワークフローの状態遷移の一例を示す図である。
【図１１】ワークフロー実行制御装置の一例を示す図である。
【図１２】ワークフロー実行制御の処理フローの一例を示す図である。
【図１３】実行フロー決定処理のフローの一例を示す図である。
【図１４】読出パラメータ定義情報の一例を示す図である。
【図１５】実行ワークフロー定義の一例を示す図である。
【図１６】実行フロー決定処理のフローの一例を示す図である。
【図１７】ワークフロー実行制御装置の一例を示す図である。
【図１８】サービス提供サーバの処理の一例を示す図である。
【図１９】ワークフロー実行制御装置の一例を示す図である。
【図２０】クライアントの一例を示す図である。
【図２１】リクエストメッセージの電文フォーマットの一例を示す図である。
【図２２】読出パラメータ定義情報の一例を示す図である。
【図２３】リクエストメッセージの内容の一例を示す図である。
【図２４】読出パラメータ定義情報の一例を示す図である。
【符号の説明】
【００６４】
１０、１０ａ〜ｇ    ワークフロー実行制御装置
２１    フロー定義識別部
２２    メッセージ解析部
２３    実行フロー決定部
２４    正規化コスト算出部
２５    処理コスト保持部
２６    サービス計測部
２７    宛先サービス選択部
２８    サービス呼出部
２９    応答受信制御部
４０    クライアント
５０ａ〜ｃ    サービス提供サーバ
６０    ワークフロー管理サーバ
７０    プログラム配信サーバ
【図１】
2010020537.tif 000003
【図２】
2010020537.tif 000004
【図３】
2010020537.tif 000005
【図４】
2010020537.tif 000006
【図５】
2010020537.tif 000007
【図６】
2010020537.tif 000008
【図７】
2010020537.tif 000009
【図８】
2010020537.tif 000010
【図９】
2010020537.tif 000011
【図１０】
2010020537.tif 000012
【図１１】
2010020537.tif 000013
【図１２】
2010020537.tif 000014
【図１３】
2010020537.tif 000015
【図１４】
2010020537.tif 000016
【図１５】
2010020537.tif 000017
【図１６】
2010020537.tif 000018
【図１７】
2010020537.tif 000019
【図１８】
2010020537.tif 000020
【図１９】
2010020537.tif 000021
【図２０】
2010020537.tif 000022
【図２１】
2010020537.tif 000023
【図２２】
2010020537.tif 000024
【図２３】
2010020537.tif 000025
【図２４】
2010020537.tif 000026