(57)【要約】【課題】比較的小さな処理を行うための単位フローを柔軟に組合わせて、全体として論理的な１つのＷｅｂサービスフローを動的に組み立てて実行する。【解決手段】フロー実行装置２から出力され、プラン名が示された要求情報を要求入力部１３ａにより入力する。この入力された要求情報に示されるプラン名を含むプラン情報を抽出部１３ｂがプランリスト１１から抽出する。抽出されたプラン情報のうちの１つを選択部１３ｃが選択する。この選択されたプラン情報に示されるフロー名に対応する単位フローの実行をフロー実行装置２に対して依頼するための実行要求を出力部１３ｄが出力する。そして、上記の実行要求に対する応答としてフロー実行装置２から出力される実行結果情報を応答入力部１３ｅが入力する。この実行結果情報に応じた結果通知情報を、上記の要求情報に基づく単位フローの実行の結果として通知部１３ｆがフロー実行装置２へ通知する。【選択図】    図１
2004361993.tif 000002
【特許請求の範囲】
【請求項１】
ユーザ端末に対してウェブサービスを提供するウェブサービスシステムにおいて、
同一種類の複数のウェブサービスを個別に提供する複数のウェブサービス提供装置と、
前記ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローに応じた処理を個別に実行するフロー実行装置と、
前記ウェブサービスの種類を示すプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名とを対応付けたプラン情報を記憶するプラン記憶装置と、
フロー展開支援装置とを具備し、
さらに、
前記フロー実行装置に設けられ、前記ユーザ端末からの要求に応じて選択された一つの単位フローに前記プラン名によるフロー呼出しが含まれている場合に当該プラン名を含む呼出し要求を出力する手段と、
前記フロー展開支援装置に設けられ、前記呼出し要求を受けると、この呼出し要求に示される前記プラン名を含む前記プラン情報を前記プラン記憶装置から１つ選択し、この選択した前記プラン情報に示される前記フロー名を示した実行要求を出力する手段と、
前記フロー実行装置に設けられ、前記実行要求に示される前記フロー名の単位フローを取り出して、この取り出した単位フローの実行により得られる第１の実行結果情報を前記実行要求に対する回答として出力する手段と、
前記フロー展開支援装置に設けられ、前記第１の実行結果情報を入力し、この入力した前記第１の実行結果情報を前記呼出し要求に対する回答として出力する手段と、
前記フロー実行装置に設けられ、前記第１の実行結果情報を前記フロー呼出しが指定されていた前記単位フローに応じて実行されている処理で利用するために入力するとともに、当該処理で得られる第２の実行結果情報を前記ユーザ端末からの要求に対する回答として出力する手段とを有することを特徴とするウェブサービスシステム。
【請求項２】
ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローを個別に実行するフロー実行装置を支援するもので、前記ウェブサービスの種類を示すプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名とを対応付けたプラン情報を記憶するプラン記憶装置にアクセス可能なフロー展開支援装置において、
前記プラン名が示された呼出し要求を前記フロー実行装置から入力する手段と、
前記呼出し要求に示される前記プラン名を含む前記プラン情報を前記プラン記憶装置から１つを選択する手段と、
選択された前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置に対して出力する手段と、
前記実行要求に対する回答としての実行結果情報を前記フロー実行装置から入力する手段と、
前記実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力する手段とを具備したことを特徴とするフロー展開支援装置。
【請求項３】
ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローを個別に実行するフロー実行装置を支援するもので、前記ウェブサービスの種類を示すプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名と事前条件とを対応付けたプラン情報を記憶するプラン記憶装置と、前記フロー実行装置での前記処理の実行状態を示す状態情報を記憶する状態記憶装置とにアクセス可能なフロー展開支援装置であり、
前記プラン名が示された呼出し要求を前記フロー実行装置から入力する手段と、
前記呼出し要求に示される前記プラン名を含み、かつ前記状態記憶手段に記憶された前記状態情報と所定の関係を持った前記事前条件を含む前記プラン情報を前記プラン記憶装置から１つを選択する手段と、
選択された前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置に対して出力する手段と、
前記実行要求に対する回答としての実行結果情報を前記フロー実行装置から入力する手段と、
前記実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力する手段とを具備したことを特徴とするフロー展開支援装置。
【請求項４】
前記単位フローに応じた処理で用いるデータが前記呼出し要求情報に含まれている場合に、前記状態情報を前記データに基づいて更新する手段をさらに備えたことを特徴とする請求項３に記載のフロー展開支援装置。
【請求項５】
選択された前記プラン情報に事後条件が含まれている場合に、前記状態情報を前記事後条件と前記実行結果情報とに基づいて更新する手段をさらに備えたことを特徴とする請求項２に記載のフロー展開支援装置。
【請求項６】
前記ウェブサービスの種類を示すプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名とを対応付けたプラン情報を記憶するプラン記憶装置にアクセス可能なコンピュータを、
前記プラン名が示された呼出し要求をフロー実行装置から入力する手段と、
前記呼出し要求に示される前記プラン名を含む前記プラン情報を前記プラン記憶装置から１つを選択する選択手段と、
選択された前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置に対して出力する手段と、
前記実行要求に対する回答としての実行結果情報を前記フロー実行装置から入力する手段と、
前記実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力する手段として機能させることを特徴とするフロー展開支援プログラム。
【請求項７】
ウェブサービスの種類を示すプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名と事前条件とを対応付けたプラン情報を記憶するプラン記憶装置と、フロー実行装置での前記処理の実行状態を示す状態情報を記憶する状態記憶装置とにアクセス可能なコンピュータを、
前記プラン名が示された呼出し要求を前記フロー実行装置から入力する手段と、
前記呼出し要求に示される前記プラン名を含み、かつ前記状態記憶手段に記憶された前記状態情報と所定の関係を持った前記事前条件を含む前記プラン情報を前記プラン記憶装置から１つを選択する手段と、
選択された前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置に対して出力する手段と、
前記実行要求に対する回答としての実行結果情報を前記フロー実行装置から入力する手段と、
前記実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力する手段として機能させることを特徴とするフロー展開支援プログラム。
【請求項８】
前記単位フローに応じた処理で用いるデータが前記呼出し要求情報に含まれている場合に、前記状態情報を前記データに基づいて更新する手段として前記コンピュータをさらに機能させることを特徴とする請求項７に記載のフロー展開支援プログラム。
【請求項９】
選択された前記プラン情報に事後条件が含まれている場合に、前記状態情報を前記事後条件と前記実行結果情報とに基づいて更新する手段として前記コンピュータをさらに機能させることを特徴とする請求項７に記載のフロー展開支援プログラム。
【請求項１０】
プラン記憶装置に記憶され、前記ウェブサービスの種類を示すプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名とを対応付けたプラン情報を参照しつつ、ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローを個別に実行するフロー実行装置を支援するフロー展開支援方法において、
前記プラン名が示された呼出し要求を前記フロー実行装置から入力し、
前記呼出し要求に示される前記プラン名を含む前記プラン情報を前記プラン記憶装置から１つを選択し、
選択された前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置に対して出力し、
前記実行要求に対する回答としての実行結果情報を前記フロー実行装置から入力し、
前記実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力することを特徴とするフロー展開支援方法。
【請求項１１】
プラン記憶装置に記憶され、ウェブサービスの種類を示すプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名と事前条件とを対応付けたプラン情報と、状態記憶装置に記憶され、フロー実行装置での処理の実行状態を示す状態情報とを参照しつつ、前記ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローを個別に実行するフロー実行装置を支援するフロー展開支援方法において、
前記プラン名が示された呼出し要求を前記フロー実行装置から入力し、
前記呼出し要求に示される前記プラン名を含み、かつ前記状態記憶手段に記憶された前記状態情報と所定の関係を持った前記事前条件を含む前記プラン情報を前記プラン記憶装置から１つを選択し、
選択された前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置に対して出力し、
前記実行要求に対する回答としての実行結果情報を前記フロー実行装置から入力し、
前記実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力することを特徴とするフロー展開支援方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ウェブサービスフローの一部の処理を定義した複数の単位フローを組合わせてウェブサービスフローを展開することでウェブサービスを提供するウェブサービスシステムと、上記単位フローを個別に実行するフロー実行装置によるウェブサービスフローの展開を支援するためのフロー展開支援装置、フロー展開支援プログラムおよびフロー展開支援方法に関する。
【０００２】
【従来の技術】
近年、情報処理技術の進展に伴い、企業内情報システムや企業間商取引システムが備え持つアプリケーションプログラムを、ネットワークを介して呼び出して利用し、計算結果を受け取ることができる新しい仕組みが広まりつつある。このような仕組みはウェブサービス（Ｗｅｂサービス）と呼ばれ、ＷｅｂやＸＭＬ（ｅｘｔｅｎｓｉｂｌｅ  ｍａｒｋｕｐ  ｌａｎｇｕａｇｅ）といったオープンな技術を使って実現されている。現在標準化が進められているＳＯＡＰ（ｓｉｍｐｌｅ  ｏｂｊｅｃｔ  ａｃｃｅｓｓ  ｐｒｏｔｏｃｏｌ）、ＷＳＤＬ（ｗｅｂ  ｓｅｒｖｉｃｅｓ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）、ＵＤＤＩ（ｕｎｉｖｅｒｓａｌ  ｄｅｓｃｒｉｐｔｉｏｎ，  ｄｉｓｃｏｖｅｒｙ  ａｎｄ  ｉｎｔｅｇｒａｔｉｏｎ）の３つの仕様は、Ｗｅｂサービスの最も基本的な操作である、Ｗｅｂサービスの記述、発見、呼び出しを実現するものである。これらの技術を使うことによって、Ｗｅｂサービス利用者とＷｅｂサービス提供者との間の１対１の連携が可能となる。
【０００３】
しかし、企業内情報システムや企業間商取引システムでは、より複雑なシステム連携が求められている。その実現に向けた新しいソフトウェア技術の研究開発が強く求められている。その１つとして複数のＷｅｂサービスに対する呼び出しをビジネスプロセスやワークフローとして取りまとめる仕組みが挙げられる。現在、複数のＷｅｂサービスに対する呼び出し手順を定義したＷｅｂサービスフローを記述するための標準言語として、ＢＰＥＬ４ＷＳ（ｂｕｓｉｎｅｓｓ  ｐｒｏｃｅｓｓ  ｅｘｅｃｕｔｉｏｎ  ｌａｎｇｕａｇｅ  ｆｏｒ  ｗｅｂ  ｓｅｒｖｉｃｅｓ）、ＷＳＦＬ（ｗｅｂ  ｓｅｒｖｉｃｅｓ  ｆｌｏｗ  ｌａｎｇｕａｇｅ）、ＸＬＡＮＧ、ＷＳＣＩ、ＢＰＭＬ（ｂｕｓｉｎｅｓｓ  ｐｒｏｃｅｓｓ  ｍｏｄｅｌｉｎｇ  ｌａｎｇｕａｇｅ）などの数多くの提案がなされている。これらのＷｅｂサービスフロー記述言語では、１つの論理的なＷｅｂサービスフローを１つのＷｅｂサービスフロー記述として定義する（非特許文献１乃至非特許文献５を参照）。
【０００４】
【非特許文献１】
「Ｗｅｂサービス合成のための振舞い記述のしくみ」、人工知能学会誌、ｖｏｌ．１７，  ｎｏ．４，  ２００２年。
【０００５】
【非特許文献２】
「Ｗｅｂ  Ｓｅｒｖｉｃｅｓアーキテクチャーの概要」、ｈｔｔｐ：／／ｗｗｗ−６．ｉｂｍ．ｃｏｍ／ｊｐ／ｄｅｖｅｌｏｐｅｒｗｏｒｋｓ／ｗｅｂｓｅｒｖｉｃｅｓ／００１２０１／ｊ＿ｗ−ｏｖｒ．ｈｔｍｌ
【０００６】
【非特許文献３】
「Ｗｅｂ  Ｓｅｒｖｉｃｅｓアーキテクト：  第１回：  ダイナミックｅ−ｂｕｓｉｎｅｓｓの紹介」、ｈｔｔｐ：／／ｗｗｗ−６．ｉｂｍ．ｃｏｍ／ｊｐ／ｄｅｖｅｌｏｐｅｒｗｏｒｋｓ／ｗｅｂｓｅｒｖｉｃｅｓ／０１０６０８／ｊ＿ｗｓ−ａｒｃ１．ｈｔｍｌ
【０００７】
【非特許文献４】
「ＢＰＥＬ４ＷＳによるビジネス・プロセス：  ＢＰＥＬ４ＷＳについて  第１回」、ｈｔｔｐ：／／ｗｗｗ−６．ｉｂｍ．ｃｏｍ／ｊｐ／ｄｅｖｅｌｏｐｅｒｗｏｒｋｓ／ｗｅｂｓｅｒｖｉｃｅｓ／０２１０２５／ｊ＿ｗｓ−ｂｐｅｌｃｏｌ１．ｈｔｍｌ
【０００８】
【非特許文献５】
「Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ，Ｖｅｒｓｉｏｎ  １。０」、ｈｔｔｐ：／／ｗｗｗ−１０６．ｉｂｍ．ｃｏｍ／ｄｅｖｅｌｏｐｅｒｗｏｒｋｓ／ｗｅｂｓｅｒｖｉｃｅｓ／ｌｉｂｒａｒｙ／ｗｓ−ｂｐｅｌ／，２００２。
【０００９】
【非特許文献１】
「Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ  （ＷＳＤＬ）  Ｖｅｒｓｉｏｎ  １．２」、ｈｔｔｐ：／／ｗｗｗ．ｗ３．ｏｒｇ／ＴＲ／２００３／ＷＤ−ｗｓｄｌ１２−２００３０１２４／，２００３。
【００１０】
【発明が解決しようとする課題】
ところが、大規模なビジネスプロセスでは、プロセスの実行状況に応じて呼び出すＷｅｂサービスを切り替えたいという要求が非常に強い。上記Ｗｅｂサービスフロー記述言語の場合、Ｗｅｂサービス選択の記述をするために、Ｗｅｂサービスフロー内で条件文を多用しなければならない。その結果として、本来Ｗｅｂサービスフローで実現したい意味的な処理に対して、制御文や個々のＷｅｂサービス呼び出し処理の定義の割合が相対的に多くなり、記述が複雑で見通しの悪いＷｅｂサービスフロー定義となってしまっている。
【００１１】
本発明は、このような事情を考慮してなされたものであり、その目的とするところは、比較的小さな処理を行うための単位フローを柔軟に組合わせて、全体として論理的な１つのＷｅｂサービスフローを動的に組み立ててＷｅｂサービスを実現することが可能なウェブサービスシステムを提供することにある。そしてそのために、単位フローを個別に実行するフロー実行装置によるウェブサービスフローの展開を効率的に支援することが可能なフロー展開支援装置、フロー展開支援プログラムおよびフロー展開支援方法を提供することを別の目的とする。
【００１２】
【課題を解決するための手段】
以上の目的を達成するために本発明は、同一種類の複数のウェブサービスを個別に提供するウェブサービス提供装置と、前記ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローに応じた処理を個別に実行するフロー実行装置と、前記ウェブサービスの種類を示すプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名とを対応付けたプラン情報を記憶するプラン記憶装置と、フロー展開支援装置とを具備し、さらに、前記フロー実行装置に設けられ、前記ユーザ端末からの要求に応じて前記単位フローのうちの１つに応じた処理を起動する第１の起動手段と、前記フロー実行装置に設けられ、前記第１の起動手段により起動された処理に前記プラン名によるフロー呼出しが含まれている場合に当該プラン名を含む呼出し要求を出力する手段と、前記フロー展開支援装置に設けられ、前記呼出し要求を入力する手段と、前記フロー展開支援装置に設けられ、入力された前記呼出し要求に示される前記プラン名を含む前記プラン情報を前記プラン記憶装置から１つ選択する手段と、前記フロー展開支援装置に設けられ、選択された前記プラン情報に示される前記フロー名を示した実行要求を出力する手段と、前記フロー実行装置に設けられ、前記実行要求に示される前記フロー名の前記単位フローに応じた処理を起動する第２の起動手段と、前記フロー実行装置に設けられ、前記第２の起動手段により起動された処理により得られる第１の実行結果情報を前記実行要求に対する回答として出力する手段と、前記フロー展開支援装置に設けられ、前記第１の実行結果情報を入力する手段と、前記フロー展開支援装置に設けられ、入力された前記第１の実行結果情報を前記呼出し要求に対する回答として出力する手段と、前記フロー実行装置に設けられ、前記呼出し要求に対する回答として出力された前記第１の実行結果情報を前記フロー呼出しが指定されていた前記単位フローに応じて実行されている処理で利用するために入力する手段と、前記フロー実行装置に設けられ、前記ユーザ端末からの要求に応じて起動した処理により得られる第２の実行結果情報を前記ユーザ端末からの要求に対する回答として出力する手段とを備えた。
【００１３】
このような手段を講じたことにより、フロー実行装置では、ユーザ端末からの要求に応じて単位フローのうちの１つに応じた処理が起動され、この起動された処理にプラン名によるフロー呼出しが含まれている場合に当該プラン名を含む呼出し要求が出力される。フロー展開支援装置では、上記の呼出し要求が入力され、この入力された呼出し要求に示されるプラン名を含むプラン情報がプラン記憶装置から１つ選択される。さらにフロー展開支援装置では、選択されたプラン情報に示されるフロー名を示した実行要求が出力される。フロー実行装置では、上記の実行要求に示されるフロー名の単位フローに応じた処理が起動され、この処理により得られる第１の実行結果情報が上記の実行要求に対する回答として出力される。フロー展開支援装置では、上記の第１の実行結果情報が入力され、この入力された第１の実行結果情報が上記の呼出し要求に対する回答として出力される。フロー実行装置では、上記の呼出し要求に対する回答として出力された第１の実行結果情報をフロー呼出しが指定されていた単位フローに応じて実行されている処理で利用するために入力される。フロー実行装置では、ユーザ端末からの要求に応じて起動した処理により得られる第２の実行結果情報がユーザ端末からの要求に対する回答として出力される。
【００１４】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態につき説明する。
図１は本実施形態に係るＷｅｂサービスシステムのブロック図である。
【００１５】
Ｗｅｂサービスフローは、Ｗｅｂサービスに対する呼び出し順序を定義した文書である。最も単純なＷｅｂサービスフローには、一連のＷｅｂサービスを逐次的に読み出すものが挙げられる。また、より複雑なＷｅｂサービスフローでは、Ｗｅｂサービスを選択したり、複数のＷｅｂサービスに対する呼び出しを並列に行う処理を定義できる。
【００１６】
本実施形態のＷｅｂサービスシステムは、あらかじめ意味的な処理の流れを定義した大きなレベルでのフローと、個々の処理の実現方法を定義した小さなレベルでのフローとに分割して定義しておき、上位レベルのフローが必要とする下位レベルのフローを実行時に適宜に呼び出すことによって、全体として論理的な１つのＷｅｂサービスフローを動的に組み立てて実行することができる仕組みを提供するものである。具体的には、小さなレベルのフローとして、航空便の空席検索、航空便の座席予約、宿泊施設の空室検索、あるいは宿泊施設の宿泊予約などといった処理を個々に行うための手順を、また大きなレベルのフローとして、旅行プランを作成する手順をそれぞれ定義しておくことにより、大きさレベルのフローに従って小さなレベルのフローを組合わせることで、旅行プランの作成をするＷｅｂサービスフローを組み立てて実行する。
【００１７】
このＷｅｂサービスシステムは、フロー展開支援装置１、フロー実行装置２、ユーザ端末３およびサービス提供ホスト４−１，４−２，４−３…を含む。そして、これらのフロー展開支援装置１、フロー実行装置２、ユーザ端末３およびサービス提供ホスト４−１，４−２，４−３…は、インターネット５を介して通信可能とされる。
【００１８】
フロー展開支援装置１は、フロー実行装置２がＷｅｂサービスフローを展開するのを支援する。フロー実行装置２は、上記の大きなレベルのフローや小さなレベルのフローに相当する単位フロー２１を複数有しており、この単位フロー２１を個別に実行する。単位フロー２１は、例えば航空会社が提供するＷｅｂサイトへインターネット５を介してアクセスして、当該航空会社に関する空席検索を行うなどの処理である。そしてフロー実行装置２は、インターネット５を介してＷｅｂサービスフロー名を含む要求を受け取ると、指定の単位フロー２１を実行し、その結果を要求元へ返す。このようなフロー実行装置２を実現するアプリケーションプログラムの例として、米ＩＢＭ製のＢＰＷＳ４Ｊ（ｂｕｓｉｎｅｓｓ  ｐｒｏｃｅｓｓ  ｅｘｅｃｕｔｉｏｎ  ｌａｎｇｕａｇｅ  ｆｏｒ  ｗｅｂ  ｓｅｒｖｉｃｅｓ  Ｊａｖａ（ＴＭ）  ｒｕｎ  ｔｉｍｅ）やＷｅｂＳｐｈｅｒｅ  Ａｐｐｌｉｃａｔｉｏｎ  Ｓｅｒｖｅｒなどが知られている。
【００１９】
ユーザ端末３は、インターネット５へのアクセス機能を有したコンピュータ端末である。ユーザ端末３は、Ｗｅｂサービスを受けようとするユーザに対するインタフェース処理を行う。すなわちユーザ端末３は例えば、ユーザ操作に応じてフロー実行装置２に宛てて実行要求を送出したり、フロー実行装置２から返される結果をユーザに提示したりする。
【００２０】
サービス提供ホスト４−１，４−２，４−３…は、上記の空席検索のようなＷｅｂサービスを提供する。
【００２１】
図２はフロー展開支援装置１の構成を示すブロック図である。
図２に示すようにフロー展開支援装置１は、プランリスト１１、実行状態データベース１２および支援処理部１３を含む。
このフロー展開支援装置１は、例えば汎用のサーバ装置やコンピュータ装置を基本ハードウェアとして用いることができる。そして支援処理部１３は、上記のサーバ装置やコンピュータ装置に搭載されたプロセッサにフロー展開支援プログラムを実行させることにより実現することができる。このときに支援処理部１３は、上記のフロー展開支援プログラムがサーバ装置やコンピュータ装置に予めインストールされて実現されても良いし、ＣＤ−ＲＯＭなどのようなリムーバブルな記録媒体に記録して、あるいはネットワークを介して上記のフロー展開支援プログラムを配布し、このフロー展開支援プログラムをサーバ装置やコンピュータ装置に適宜インストールして実現されても良い。プランリスト１１および実行状態データベース１２は、上記のサーバ装置やコンピュータ装置に内蔵されたメモリやハードディスク装置などの記憶デバイス、上記のサーバ装置やコンピュータ装置に外付けされたメモリやハードディスク装置などの記憶デバイス、さらにはフロッピー（Ｒ）ディスクなどのようなリムーバブルな記録媒体などを適宜利用して実現することができる。
【００２２】
プランリスト１１は、Ｗｅｂサービスフローを展開するためのルール情報（メタ情報）を記述したプラン情報（以下では、プランと称する）を複数保持する。
【００２３】
実行状態データベース１２は、Ｗｅｂサービスフローの実行状態を保持する。
【００２４】
支援処理部１３はさらに、要求入力部１３ａ、抽出部１３ｂ、選択部１３ｃ、出力部１３ｄ、応答入力部１３ｅ、通知部１３ｆおよび更新部１３ｇを含む。
【００２５】
要求入力部１３ａは、フロー実行装置２から出力されるフロー展開要求をインターネット５を介して入力する。フロー展開要求には、プラン名およびデータなどが含まれる。要求入力部１３ａは、入力したフロー展開要求に含まれるプラン名を抽出部１３ｂへ出力し、データを更新部１３ｇへ出力する。
【００２６】
抽出部１３ｂは、要求入力部１３ａから出力されるプラン名と同一のプラン名を含み、かつ実行状態データベース１２に記憶された実行状態と所定の関係を持った事前条件を持ったプランをプランリスト１１から全て抽出する。抽出部１３ｂは、抽出したプランを選択部１３ｃへ出力する。抽出部１３ｂは、該当するプランを抽出することができなかった場合には、その旨を通知部１３ｆへ通知する。
【００２７】
選択部１３ｃは、抽出部１３ｂから出力されたプランのうちの１つを選択する。選択部１３ｃは、選択した１つのプランを出力部１３ｄおよび更新部１３ｇへ出力する。
【００２８】
出力部１３ｄは、選択部１３ｃから出力されたプランに示される単位フローの実行要求をフロー実行装置２に宛ててインターネット５へ送出する。
【００２９】
応答入力部１３ｅは、出力部１３ｄが出力した実行要求に基づいて単位フローを実行した結果としてフロー実行装置２が出力する実行結果情報をインターネット５を介して入力する。応答入力部１３ｅは、入力した実行結果情報を通知部１３ｆおよび更新部１３ｇに出力する。
【００３０】
通知部１３ｆは、応答入力部１３ｅが出力した実行結果情報を含んだ結果通知情報を作成し、この結果通知情報をフロー実行装置２に宛ててインターネット５へ送出する。
【００３１】
更新部１３ｇは、要求入力部１３ａから出力されたデータ、選択部１３ｃから出力されたプランに含まれる事後条件、あるいは応答入力部１３ｅから出力された実行結果情報に基づいて実行状態データベース１２に記憶された情報を更新する。
【００３２】
次に以上のように構成されたＷｅｂサービスシステムの動作につき説明する。
ここでは、サービス提供ホスト４−１，４−２，４−３が、ＡＩＲ１，ＡＩＲ２，ＡＩＲ３なる航空会社に関して空席検索や座席予約のＷｅｂサービスを提供することとする。またフロー実行装置２が有する単位フロー２１のうちの１つは、ユーザからの要求に応じて旅行プランを作成する処理を記述したものとする。以降においてこの単位フロー２１は、旅行プラン作成フローと称する。単位フロー２１のうちの３つは、サービス提供ホスト４−１，４−２，４−３がそれぞれ提供するＷｅｂサービスを利用して空席検索を行う処理を記述したものとする。以降においてこれらの単位フロー２１は、空席検索フローと称する。
【００３３】
図３はＷｅｂサービスシステムの各部の間での情報の流れをインターネット５を省略して示した図である。
上記のようにフロー実行装置２は、旅行プラン作成フロー２１−１および空席検索フロー２１−２，２１−３，２１−４を有している。
【００３４】
さて、実行状態データベース１２は、初期状態として空、すなわち実行状態なしとしておいても良いし、事前に１つあるいは複数個の状態を登録しておいても良い。実行状態データベース１２内の状態は、支援処理部１３の実行が進むに連れて、更新部１３ｇからの操作によって削除されたり、新規に追加されたりする。各状態は次に述べる述語と呼ばれるデータ形式で保持される。
【００３５】
以下、述語について述べる。例として、「成田は出発地である」という文を考える。この文は、「成田」という個体が「出発地である」という性質を持っていることを表している。ここで、主語の「成田」という個体に記号「ＮＡＲＩＴＡ」を、文の述語である「出発地である」に記号「ＦＲＯＭ」を与え、「成田は出発地である」という文を「ＦＲＯＭ（ＮＡＲＩＴＡ）」と表現する。この「ＦＲＯＭ（ＮＡＲＩＴＡ）」という表現を述語と呼び、「ＦＲＯＭ」を述語記号と呼ぶ。「ＦＲＯＭ（ＮＡＲＩＴＡ）」は個体「成田」が出発地であることを示すが、不特定の個体が出発地であることを表現するためには、変数「ｆｒｏｍ」を用いて「ＦＲＯＭ（ｆｒｏｍ）」と表す。また、複数個の引数を持つ述語は、「述語記号（引数１，引数２，…）」と表現する。従って例えば、文字列「１２３４５６７」は航空会社「ＡＩＲ１」のマイルアカウントの「ＩＤ」であるという関係は、述語記号「ＩＤ」を用いて「ＩＤ（ＡＩＲ１，１２３４５６７）」と表現する。
【００３６】
ここで、本実施形態にて具体例を説明するために用いる述語を以下に挙げ、それぞれの述語が表す意味を簡単に説明する。
【００３７】
−  ＦＲＯＭ（ｆｒｏｍ）：ｆｒｏｍは出発地である。
【００３８】
−  ＴＯ（ｔｏ）：ｔｏは目的地である。
【００３９】
−  ＤＡＴＥ（ｄａｔｅ）：ｄａｔｅは搭乗日時である。
【００４０】
−  ＩＤ（ａｉｒｌｉｎｅ，ｉｄ）：文字列ｉｄは航空会社ａｉｒｌｉｎｅのマイルアカウントＩＤである。
【００４１】
−  ＡＶＡＩＬＡＢＬＥ（ｆｌｉｇｈｔ）：フライトｆｌｉｇｈｔは空席がある。
【００４２】
−  ＢＥＬ（ｕ，Ｐ）：ユーザｕは述語Ｐについて信じている。
【００４３】
図４は実行状態データベース１２の一例を示す図である。図４に示す実行状態データベース１２は、３つの状態、「ＢＥＬ（ＮＡＧＡＮＯ，ＩＤ（ＡＩＲ１，１２３４５６７））」、「ＢＥＬ（ＨＡＳＥＧＡＷＡ，ＩＤ（ＡＩＲ２、１１１２２２３３３））」、「ＢＥＬ（ＯＨＳＵＧＡ，ＩＤ（ＡＩＲ２，４４４５５５６６６））」を保持している。例えば、「ＢＥＬ（ＮＡＧＡＮＯ，ＩＤ（ＡＩＲ１，１２３４５６７））」は、［ユーザ「ＮＡＧＡＮＯ」は、文字列「１２３４５６７」は航空会社「ＡＩＲ１」のマイルアカウントＩＤであると信じている。］という情報を表す。
【００４４】
プランリスト１１には、プランを予め登録しておく。
上記プランは、プランＩＤ、プラン名、事前条件、フロー呼び出し、ならびに事後条件の５つの項目から構成される。プランＩＤは、プランリスト１１内でユニークな識別子である。プラン名はプランの名前を表す文字列であり、複数の異なるプランに対して同一のプラン名を定義しても良い。事前条件は、プランを選択するための必要条件であり、述語形式で記述する。フロー呼び出しは、フロー実行装置２に対して単位フローの実行を依頼するための情報を定義したものであり、フロー実行装置２が保持している単位フローを特定するためのフロー名と、その単位フローへ渡す引数データと、依頼した結果として受け取ったデータを格納する変数の３種類を指定する。事後条件は、プランを選択し単位フローを呼び出した効果としての条件であり、述語形式で記述する。
【００４５】
図５はプランリスト１１の一例を示す図である。図５に示すプランリスト１１は、３つのプランを保持しており、それぞれのプランＩＤは上から順に「ｐｌａｎ１」、「ｐｌａｎ２」、「ｐｌａｎ３」である。また、いずれも同じプラン名「ｓｅａｒｃｈ」が定義されている。これらの３つのプランは、空席検索フロー２１−２，２１−３，２１−４にそれぞれ対応している。そして「ｓｅａｒｃｈ」は、空席検索に対して割り当てられたプラン名である。
【００４６】
以下、プランＩＤが「ｐｌａｎ１」であるプランを例に取り、その定義について詳細に述べる。
【００４７】
プラン名は「ｓｅａｒｃｈ」である。
【００４８】
事前条件は、以下の通りである。
ＢＥＬ（ｕ，ＦＲＯＭ（ｆｒｏｍ））  ∧
ＢＥＬ（ｕ，ＴＯ（ｔｏ））  ∧
ＢＥＬ（ｕ，ＤＡＴＥ（ｄａｔｅ））  ∧
ＢＥＬ（ｕ，ＩＤ（ＡＩＲ１，ｎｕｍｂｅｒ）
この事前条件は、次の４つの述語の論理積（ＡＮＤ演算）として表されている。
ＢＥＬ（ｕ，ＦＲＯＭ（ｆｒｏｍ））
ＢＥＬ（ｕ，ＴＯ（ｔｏ））
ＢＥＬ（ｕ，ＤＡＴＥ（ｄａｔｅ））
ＢＥＬ（ｕ，ＩＤ（ＡＩＲ１，ｎｕｍｂｅｒ））
すなわち、以下のような条件が表現されている。
ユーザｕは、ｆｒｏｍが出発地であると信じている、かつ
ユーザｕは、ｔｏが目的地であると信じている、かつ
ユーザｕは、ｄａｔｅが搭乗日時であると信じている、かつ
ユーザｕは、文字列ｎｕｍｂｅｒが航空会社ＡＩＲ１のマイルアカウントＩＤであると信じている。
【００４９】
フロー呼び出しは、次の通りである。
ｆｌｉｇｈｔ＝ｃａｌｌ（”ＡＩＲ１  Ｓｅａｒｃｈ  Ｓｅｒｖｉｃｅ  Ｆｌｏｗ”，ｆｒｏｍ，ｔｏ，ｄａｔｅ，ｉｄ）
すなわち、航空会社ＡＩＲ１の空席検索サービスを特定するフロー名が「ＡＩＲ１  Ｓｅａｒｃｈ  Ｓｅｒｖｉｃｅ  Ｆｌｏｗ」である単位フローを呼び出し、４つの引数データ、ｆｒｏｍ、ｔｏ、ｄａｔｅ、ｉｄ、を渡して、その呼び出し結果として受け取るデータを変数ｆｌｉｇｈｔに格納することを表している。
【００５０】
事後条件は、以下の通りである。
【００５１】
ＢＥＬ（ｕ，ＡＶＡＩＬＡＢＬＥ（ｆｌｉｇｈｔ））  ∧
ＢＥＬ（ｕ，ＩＤ（ＡＩＲ１，ｎｕｍｂｅｒ））
この条件は、［ユーザｕは、フライトｆｌｉｇｈｔに空席があると信じている］ということを表現している。
【００５２】
図６は旅行プランを作成するＷｅｂサービスフローを実行に関するシーケンス図である。
【００５３】
さて、ユーザがユーザ端末３によりフロー実行装置２にアクセスした上で、旅行プランの作成を要求する操作を行ったとする。このときに図６に示すように、ユーザ端末３からフロー実行装置２へ、旅行プラン作成フロー２１−１の実行要求６１が送られる。旅行プラン作成フロー２１−１には、「航空便の空席検索→航空便の座席予約→宿泊施設の空室検索…」といった具合に、旅行プラン作成の手順が定義されるが、各処理の詳細については定義されていない。そこで旅行プラン作成フロー２１−１は、「航空便の空席検索」に対応したプラン名「ｓｅａｒｃｈ」を示したフロー展開要求６２をフロー展開支援装置１へ送る。フロー展開要求６２には、ユーザＩＤ、ならびに他の単位フロー２１へ引き渡すためのデータ等が含まれる。
【００５４】
フロー展開支援装置１ではフロー展開要求６２を受けると、このフロー展開要求に示されるプラン名、ユーザＩＤ、ならびに他のフロー実行部へ引き渡すデータが要求入力部１３ａにより入力される。そしてこのように要求入力部１３ａが上記の各種情報を入力したことに応じて、支援処理部１３では図７に示すような推論処理が開始される。
【００５５】
なお、ユーザＩＤは、上記ユーザを表す識別子であり、例えば、ユーザ名を指定する。また、上記データは、パラメータ名と値との組で表わされ、１組または複数組のいずれが受け渡されても良い。
【００５６】
図７は推論処理のフローチャートである。
ステップＳＴ１では要求入力部１３ａが、上述のようにフロー実行部２ａから出力されたプラン名、ユーザＩＤ、ならびに他のフロー実行部へ引き渡すためのデータを受け取る。
【００５７】
ステップＳＴ２では更新部１３ｇが、要求入力部１３ａにより受け取られたデータに対して、パラメータ名を述語記号とし、値を述語の引数にセットした述語データを生成して、この述語データを実行状態データベース１２に登録する。例えば、ユーザＩＤとして「ＮＡＧＡＮＯ」、出発地に関する入力として、パラメータ名が「ＦＲＯＭ」、値が「ＮＡＲＩＴＡ」から成るデータが要求入力部１３ａにより受け取られた場合は、更新部１３ｇは述語データ「ＢＥＬ（ＮＡＧＡＮＯ，ＦＲＯＭ（ＮＡＲＩＴＡ））」を生成し、これを実行状態データベース１２へ登録する。
【００５８】
ステップＳＴ３では抽出部１３ｂが、プランリスト１１の中から、プラン名が要求入力部１３ａで入力されたものと同じで、かつ実行状態データベース１２内の述語を使って事前条件を単一化できるプランｐを探す。なお単一化できるプランとは、述語に含まれる全ての変数に代入可能な値を持つ述語を見つけることができるプランを指す。
【００５９】
ステップＳＴ４では抽出部１３ｂが、プランｐが存在するか否かを確認する。そして、プランｐが存在したならば、抽出部１３ｂが抽出したプランｐを選択部１３ｃに渡し、ステップＳＴ５に進む。
【００６０】
ステップＳＴ５では選択部１３ｃが、１つのプランｐを選択する。抽出部１３ｂによりプランｐが１つしか抽出されていないのであれば、選択部１３ｃはこの１つのプランｐを選択すればよい。抽出部１３ｂによりプランｐが複数抽出されたのであれば、ある適当な基準のもとで選択すればよい。例えば、最初に抽出部１３ｂにより最初に発見されたものを選択したり、事前条件の述語数の多いものを選択するなどの手法が挙げられる。
【００６１】
ステップＳＴ６では出力部１３ｄが、選択部１３ｃにて選択されたプランｐに関してステップＳＴ３で求めた単一化、すなわち変数への代入を、プランｐで定義しているフロー呼び出しと事後条件との変数に対して適用する。
【００６２】
ステップＳＴ７では出力部１３ｄが、フロー実行装置２を呼び出し、ステップＳＴ６にて求めたフロー呼び出しに含まれる単位フローのフロー名と、その単位フローに引き渡すデータとを含んだ実行要求を送る。
【００６３】
例えば、プラン名「ｓｅａｒｃｈ」に対応する単位フロー２１としては、空席検索フロー２１−２，２１−３，２１−４の３つがあるが、このうちの空席検索フロー２１−２が選択されたのだとするならば、図３および図６に示すように出力部１３ｄから空席検索フロー２１−２へと実行要求６３が送られる。
【００６４】
この実行要求を受けたならばフロー実行装置２は、実行要求に示されたフロー名を持つ単位フローを実行する。この結果、上記の例では、空席検索フロー２１−２が起動されることになる。空席検索フロー２１−２は、サービス提供ホスト４−１が提供するＷｅｂサービスを利用して空席検索を行う手順が記述されたものである。従って空席検索フロー２１−２は、図６に示すようにサービス提供ホスト４−１へ空席検索要求６４を送り、この要求の応答としてサービル提供ホスト４−１から返される空席情報６５を受け取る。さらに空席検索フロー２１−２は、空席情報６５を含んだ実行結果情報６６を、実行要求６３に対する応答として図６に示すようにフロー展開支援装置１へ送る。この実行結果情報６６は、フロー展開支援装置１では応答入力部１３ｅに入力される。
【００６５】
支援処理部１３では、図７におけるステップＳＴ７にて出力部１３ｄが実行要求を出力した後には、ステップＳＴ８に進む。ステップＳＴ８では応答入力部１３ｅが、実行依頼が正常終了したか否かを確認する。そして、実行依頼が正常終了したのであれば、ステップＳＴ９へ進む。
【００６６】
ステップＳＴ９では更新部１３ｇが、応答入力部１３ｅが受け取った実行結果情報６６を、プランｐのフロー呼び出しで指定した変数に代入する。また、単一化した事後条件にも同じ述語が存在する場合には、更新部１３ｇがその述語にも実行結果情報６６を代入する。
【００６７】
ステップＳＴ１０では更新部１３ｇが、ステップＳＴ６で単一化した事前条件に含まれる各述語を実行状態データベース１２から削除し、次にステップＳＴ９で単一化した事後条件に含まれる各述語を実行状態データベース１２へ登録する。
【００６８】
最後にステップＳＴ１１では通知部１３ｆが、応答入力部１３ｅにより受けられた実行結果情報６６の内容を示した結果通知情報６７を、フロー展開要求６２に対する応答として図６に示すように旅行プラン作成フロー２１−１へ送る。
【００６９】
さて、図７におけるステップＳＴ３においてプランｐを見つけることができなかったならば、ステップＳＴ４からステップＳＴ１１へ進む。また、実行依頼が異常終了した場合は、ステップＳＴ８からステップＳＴ１１へ進む。これらの場合にステップＳＴ１１において通知部１３ｆは、結果通知情報６７をフロー展開に失敗したことを示すものとする。
【００７０】
以降、上記と同様な流れにより、航空便の空席予約や宿泊施設の空室検索などが順次行われて行く。そして、これらの処理により得られた各種の情報に基づいて旅行プラン作成フロー２１−１が旅行プランを作成する。この旅行プランを示す実行結果情報６８が、実行要求６１に対する応答として旅行プラン作成フロー２１−１からユーザ端末３へ図６に示すように送られる。
【００７１】
続いて、フロー展開支援装置１の動作についてさらに詳細に説明する。
まずフロー展開要求６２に、プラン名「ｓｅａｒｃｈ」、ユーザＩＤ「ＮＡＧＡＮＯ」、ならびにデータ「（ＦＲＯＭ，ＮＡＲＩＴＡ），（ＴＯ，ＩＴＡＭＩ），（ＤＡＴＥ，２００３／０４／０１１０：００）」が示されているとする。
【００７２】
更新部１３ｇが、データ「（ＦＲＯＭ、ＮＡＲＩＴＡ）」から述語「ＢＥＬ（ＮＡＧＡＮＯ，ＦＲＯＭ（ＮＡＲＩＴＡ））」を、データ「（ＴＯ，ＩＴＡＭＩ）」から述語「ＢＥＬ（ＮＡＧＡＮＯ，ＴＯ（ＩＴＡＭＩ））」を、データ「（ＤＡＴＥ，２００３／０４／０１  １０：００）」から「ＢＥＬ（ＮＡＧＡＮＯ，ＤＡＴＥ（２００３／０４／０１  １０：００））」をそれぞれ生成し、実行状態データベース１２へ登録する。このとき、実行状態データベース１２は、図４に示す状態から３つの述語が増えて図８に示す状態へと更新される。
【００７３】
一方、抽出部１３ｂが、プラン名「ｓｅａｒｃｈ」を持ち、かつ実行状態データベース１２内の述語を使って事前条件を単一化できるプランｐを探す。
ここでは、プラン名「ｓｅａｒｃｈ」を持つプランは、「ｐｌａｎ１」、「ｐｌａｎ２」、「ｐｌａｎ３」の３つである。
【００７４】
「ｐｌａｎ１」の事前条件は、次の通りである。
ＢＥＬ（ｕ，ＦＲＯＭ（ｆｒｏｍ））  ∧
ＢＥＬ（ｕ，ＴＯ（ｔｏ））  ∧
ＢＥＬ（ｕ，ＤＡＴＥ（ｄａｔｅ））  ∧
ＢＥＬ（ｕ，ＩＤ（ＡＩＲ１，ｎｕｍｂｅｒ））
図８に示される実行状態データベース１２と照らし合わせると、次の５つの全ての変数への代入が、すわなち単一化が可能であることが分かる。
ｕ      ＝  ＮＡＧＡＮＯ
ｆｒｏｍ    ＝  ＮＡＲＩＴＡ
ｔｏ      ＝  ＩＴＡＭＩ
ｄａｔｅ    ＝  ２００３／０４／０１  １０：００
ｎｕｍｂｅｒ  ＝  １２３４５６７
この時、単一化した事前条件は、次の通りとなる。
ＢＥＬ（ＮＡＧＡＮＯ，ＦＲＯＭ（ＮＡＲＩＴＡ））  ∧
ＢＥＬ（ＮＡＧＡＮＯ，ＴＯ（ＩＴＡＭＩ））  ∧
ＢＥＬ（ＮＡＧＡＮＯ，ＤＡＴＥ（２００３／０４／０１  １０：００））  ∧
ＢＥＬ（ＮＡＧＡＮＯ，ＩＤ（ＡＩＲ１，１２３４５６７））
これらの単一化した事前条件は、実行状態データベース１２の各述語と一致する。従って、「ｐｌａｎ１」はプランｐの候補となる。
【００７５】
「ｐｌａｎ２」の事前条件は、次の通りである。
ＢＥＬ（ｕ，ＦＲＯＭ（ｆｒｏｍ））  ∧
ＢＥＬ（ｕ，ＴＯ（ｔｏ））  ∧
ＢＥＬ（ｕ，ＤＡＴＥ（ｄａｔｅ））  ∧
ＢＥＬ（ｕ，ＩＤ（ＡＩＲ２，ｎｕｍｂｅｒ））
図８に示される実行状態データベース１２と照らし合わせると、次の４つの変数への代入が、すなわち単一化が可能である。
ｕ    ＝  ＮＡＧＡＮＯ
ｆｒｏｍ  ＝  ＮＡＲＩＴＡ
ｔｏ    ＝  ＩＴＡＭＩ
ｄａｔｅ  ＝  ２００３／０４／０１  １０：００
しかし、「ＢＥＬ（ｕ，ＩＤ（ＡＩＲ２、ｎｕｍｂｅｒ））」に対応する述語が実行状態データベース１２に存在しないため、変数「ｎｕｍｂｅｒ」への代入はできない。従って、「ｐｌａｎ２」はプランｐの候補ではない。「ｐｌａｎ３」についても同様に、「ＢＥＬ（ｕ，ＩＤ（ＡＩＲ３，ｎｕｍｂｅｒ））」に対応する述語が実行状態データベース１２に存在しないため、変数「ｎｕｍｂｅｒ」への代入はできない。従って、「ｐｌａｎ３」もプランｐの候補ではない。
【００７６】
以上のようにして、抽出部１３ｂではプランｐとして「ｐｌａｎ１」が抽出される。このとき、１つのプランのみが抽出されたのであるから、選択部１３ｃは上記の「ｐｌａｎ１」をそのまま選択する。
【００７７】
出力部１３ｄが、「ｐｌａｎ１」の事前条件に対する単一化を、「ｐｌａｎ１」のフロー呼び出しおよび事後条件に適用する。「ｐｌａｎ１」のフロー呼び出しは、次の通りである。
ｆｌｉｇｈｔ＝ｃａｌｌ（”ＡＩＲ１  Ｓｅａｒｃｈ  Ｓｅｒｖｉｃｅ  Ｆｌｏｗ”，ｆｒｏｍ，ｔｏ，ｄａｔｅ，ｎｕｍｂｅｒ）
このフロー呼び出しに対して単一化を適用すると、次の通りとなる。
ｆｌｉｇｈｔ＝ｃａｌｌ（”ＡＩＲ１  Ｓｅａｒｃｈ  Ｓｅｒｖｉｃｅ  Ｆｌｏｗ”，ＮＡＲＩＴＡ，ＩＴＡＭＩ，２００３／０４／０１
１０：００，１２３４５６７）
また、事後条件は、次の通りである。
ＢＥＬ（ｕ，ＡＶＡＩＬＡＢＬＥ（ｆｌｉｇｈｔ））  ∧
ＢＥＬ（ｕ，ＩＤ（ＡＩＲ１，ｎｕｍｂｅｒ）
この事後条件に対して単一化を適用すると、次の通りとなる。
ＢＥＬ（ＮＡＧＡＮＯ，ＡＶＡＩＬＡＢＬＥ（ｆｌｉｇｈｔ））  ∧
ＢＥＬ（ＮＡＧＡＮＯ，ＩＤ（ＡＩＲ１，１２３４５６７）
変数「ｆｌｉｇｈｔ」に関しては、この段階では変数のままとする。
【００７８】
次に出力部１３ｄは、フロー実行装置２に対して実行要求６３を送る。この実行要求６３には、上記の単一化したフロー呼び出しから、Ｗｅｂサービスフロー名「ＡＩＲ１  Ｓｅａｒｃｈ  Ｓｅｒｖｉｃｅ  Ｆｌｏｗ」と、４つのデータ「ＮＡＲＩＴＡ」、「ＩＴＡＭＩ」、「２００３／０４／０１  １０：００」、「１２３４５６７」とを含める。「ＡＩＲ１  Ｓｅａｒｃｈ  Ｓｅｒｖｉｃｅ  Ｆｌｏｗ」は、空席検索フロー２１−２に付与されたＷｅｂサービスフロー名である。このため、実行要求６３により空席検索フロー２１−２が起動される。
【００７９】
空席検索フロー２１−２により空席便「ＡＩＲ１−０７９」が見つかったものとする。この場合、この「ＡＩＲ１−０７９」を含んだ実行結果情報６６が空席検索フロー２１−２から返されることになる。そしてこの実行結果情報６６は応答入力部１３ｅで入力され、更新部１３ｇに渡される。更新部１３ｇでは、実行結果情報６６に含まれた上記の「ＡＩＲ１−０７９」を、単一化したフロー呼び出しの変数「ｆｌｉｇｈｔ」へ代入する。従って、変数「ｆｌｉｇｈｔ」の値は「ＡＩＲ１−０７９」となる。このとき、前述の単一化した事後条件は、次の通りとなる。
ＢＥＬ（ＮＡＧＡＮＯ，ＡＶＡＩＬＡＢＬＥ（ＡＩＲ１−０７９））  ∧
ＢＥＬ（ＮＡＧＡＮＯ，ＩＤ（ＡＩＲ１，１２３４５６７）
続いて更新部１３ｇは、次のデータを実行状態データベース１２から削除する。
ＢＥＬ（ＮＡＧＡＮＯ，ＦＲＯＭ（ＮＡＲＩＴＡ））
ＢＥＬ（ＮＡＧＡＮＯ，ＴＯ（ＩＴＡＭＩ））
ＢＥＬ（ＮＡＧＡＮＯ，ＤＡＴＥ（２００３／０４／０１  １０：００））
ＢＥＬ（ＮＡＧＡＮＯ，ＩＤ（ＡＩＲ１，１２３４５６７））
これとともに更新部１３ｇは、前述の単一化した事後条件に含まれる次の２つの述語を実行状態データベース１２に追加する。
ＢＥＬ（ＮＡＧＡＮＯ，ＡＶＡＩＬＡＢＬＥ（ＡＩＲ１−０７９））
ＢＥＬ（ＮＡＧＡＮＯ，ＩＤ（ＡＩＲ１，１２３４５６７）
従って、実行状態データベース１２は図８の状態から図９の状態へと更新される。
最後に通知部１３ｆが、「ＡＩＲ１−０７９」を示した結果通知情報６７を、呼び出し元である旅行プラン作成フロー２１−１へ送る。
【００８０】
以上のように本実施形態によれば、フロー展開支援装置１はフロー展開要求を受け取るたびに、その要求に応じて適切な単位フロー２１を１つ選択し、この単位フロー２１の実行を要求する。またフロー展開支援装置１は、要求した単位フロー２１を実行した結果得られる情報を、フロー展開要求元の単位フロー２１へと返す。従って、フロー実行装置２においては、１つの単位フロー２１から間接的に他の単位フロー２１を呼び出すことができる。そしてこの結果として、複数の単位フロー２１を柔軟に組合わせて１つの論理的なＷｅｂサービスフローを構築して実行することが可能となる。
【００８１】
また本実施形態によれば、例えば単位フローが新たに追加されたような場合には、プランリスト１１を更新することにより、上記の新たに追加された単位フローを利用可能とすることができる。具体的には、ＡＩＲ４なる航空会社の空席検索Ｗｅｂサービスに対する呼び出しを行う単位フローが追加されたとするならば、プラン名が「ｓｅａｒｃｈ」であり、フロー呼び出しを「ｆｌｉｇｈｔ＝ｃａｌｌ（”ＡＩＲ４  Ｓｅａｒｃｈ  Ｓｅｒｖｉｃｅ  Ｆｌｏｗ”，ｆｒｏｍ，ｔｏ，ｄａｔｅ，ｉｄ）」としたプランをプランリスト１１に追加することにより、前述の旅行の計画を立てる単位フローは何ら修正しなくとも、この旧来からある単位フローから上記の新しく追加された単位フローを呼び出して使用することが可能である。すなわち本実施形態によれば、個々の単位フローの開発は、他の単位フローの詳細を考慮することなく行うことができる。また、Ｗｅｂサービスフローの拡張も、一部の単位フローの更新や追加などにより容易に行うことが可能となる。
【００８２】
また本実施形態によれば、プランに事前条件を含めるとともに、Ｗｅｂサービスフローの実行状態を実行状態データベース１２に記憶しておき、実行状態データベース１２内の情報を使って事前条件を単一化できるプランを抽出することとしているので、Ｗｅｂサービスフローの実行状態に応じて適切な単位フローを実行させることができる。
【００８３】
この実施形態は、次のような種々の変形実施が可能である。
プランリスト１１および実行状態データベース１２はフロー展開支援装置１に含まれていなくても良い。その場合、フロー展開支援装置１からプランリスト１１および実行状態データベース１２へアクセスするための通信手段をフロー展開支援装置１に設ける。
【００８４】
プランリスト１１からのプランの抽出は、プラン名のみに基づいて行うようにしても良い。この場合、プランには事前条件および事後条件を含まなくて良い。また実行状態データベース１２は不要となる。
【００８５】
実行状態データベース１２の更新には、事後条件を考慮しなくても良い。
【００８６】
フロー実行装置２は１つである必要はなく、複数のフロー実行装置２がそれぞれ持つ単位フロー２１を適宜に展開するようにしても良い。
【００８７】
各単位フロー２１が示す処理内容は任意であって良い。そして、ユーザ端末３とのインタフェース処理が示された単位フロー２１は、他の単位フロー２１を１度のみ利用するものであっても良い。
【００８８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００８９】
【発明の効果】
本発明によれば、比較的小さな処理を行うための単位フローを柔軟に組合わせて、全体として論理的な１つのＷｅｂサービスフローを動的に組み立てて実行することが可能となる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るＷｅｂサービスシステムのブロック図。
【図２】図１中のフロー展開支援装置１の構成を示すブロック図。
【図３】Ｗｅｂサービスシステムの各部の間での情報の流れを示した図。
【図４】図２中の実行状態データベース１２の一例を示す図。
【図５】図２中のプランリスト１１の一例を示す図。
【図６】旅行プランを作成するＷｅｂサービスフローを実行に関するシーケンス図。
【図７】推論処理のフローチャート。
【図８】図２中の実行状態データベース１２の更新例を示す図。
【図９】図２中の実行状態データベース１２の更新例を示す図。
【符号の説明】
１…フロー展開支援装置、２…フロー実行装置、２ａ，２ｂ…フロー実行部、１１…プランリスト、１２…実行状態データベース、１３…支援処理部、１３ａ…要求入力部、１３ｂ…抽出部、１３ｃ…選択部、１３ｄ…出力部、１３ｅ…応答入力部、１３ｆ…通知部、１３ｇ…更新部。
【図１】
2004361993.tif 000003
【図２】
2004361993.tif 000004
【図３】
2004361993.tif 000005
【図４】
2004361993.tif 000006
【図５】
2004361993.tif 000007
【図６】
2004361993.tif 000008
【図７】
2004361993.tif 000009
【図８】
2004361993.tif 000010
【図９】
2004361993.tif 000011
【手続補正書】
【提出日】平成15年6月4日(2003.6.4)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
しかし、企業内情報システムや企業間商取引システムでは、より複雑なシステム連携が求められている。その実現に向けた新しいソフトウェア技術の研究開発が強く求められている。その１つとして複数のＷｅｂサービスに対する呼び出しをビジネスプロセスやワークフローとして取りまとめる仕組みが挙げられる。現在、複数のＷｅｂサービスに対する呼び出し手順を定義したＷｅｂサービスフローを記述するための標準言語として、ＢＰＥＬ４ＷＳ（ｂｕｓｉｎｅｓｓ  ｐｒｏｃｅｓｓ  ｅｘｅｃｕｔｉｏｎ  ｌａｎｇｕａｇｅ  ｆｏｒ  ｗｅｂ  ｓｅｒｖｉｃｅｓ）、ＷＳＦＬ（ｗｅｂ  ｓｅｒｖｉｃｅｓ  ｆｌｏｗ  ｌａｎｇｕａｇｅ）、ＸＬＡＮＧ、ＷＳＣＩ、ＢＰＭＬ（ｂｕｓｉｎｅｓｓ  ｐｒｏｃｅｓｓ  ｍｏｄｅｌｉｎｇ  ｌａｎｇｕａｇｅ）などの数多くの提案がなされている。これらのＷｅｂサービスフロー記述言語では、１つの論理的なＷｅｂサービスフローを１つのＷｅｂサービスフロー記述として定義する（非特許文献１乃至非特許文献６を参照）。


【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
【非特許文献５】
「Ｂｕｓｉｎｅｓｓ  Ｐｒｏｃｅｓｓ  Ｅｘｅｃｕｔｉｏｎ  Ｌａｎｇｕａｇｅ  ｆｏｒ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ，Ｖｅｒｓｉｏｎ  １．０」、ｈｔｔｐ：／／ｗｗｗ−１０６．ｉｂｍ．ｃｏｍ／ｄｅｖｅｌｏｐｅｒｗｏｒｋｓ／ｗｅｂｓｅｒｖｉｃｅｓ／ｌｉｂｒａｒｙ／ｗｓ−ｂｐｅｌ／，２００２


【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
【非特許文献６】
「Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ  （ＷＳＤＬ）  Ｖｅｒｓｉｏｎ  １．２」、ｈｔｔｐ：／／ｗｗｗ．ｗ３．ｏｒｇ／ＴＲ／２００３／ＷＤ−ｗｓｄｌ１２−２００３０１２４／，２００３