(57)【特許請求の範囲】
【請求項１】
同一のプラン名を持つ複数のウェブサービスを個別に提供する複数のウェブサービス提供装置と、
前記ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローに応じた処理を個別に実行するフロー実行装置と、
前記ウェブサービスが持つ前記プラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名と複数の変数を含んだ事前条件とを対応付けたプラン情報を記憶するプラン記憶装置と、
前記フロー実行装置での前記処理の実行状態を示す状態情報を記憶する状態記憶装置と、
フロー展開支援装置とを具備し、
さらに、
前記フロー実行装置に設けられ、ユーザ端末からの要求に応じて選択された一つの単位フローに前記プラン名によるフロー呼出しが含まれている場合に当該プラン名を含む呼出し要求を前記フロー展開支援装置へ出力する手段と、
前記フロー展開支援装置に設けられ、前記呼出し要求を受けると、この呼出し要求に示された前記フロー実行装置へ引き渡すためのデータを前記状態情報として前記状態記憶装置に記憶させる手段と、
前記フロー展開支援装置に設けられ、前記呼出し要求に示される前記プラン名を含みかつ、前記状態記憶装置に記憶された前記データを全ての変数に代入可能な前記事前条件を含む前記プラン情報を前記プラン記憶装置から１つ選択し、この選択した前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置へ出力する手段と、
前記フロー実行装置に設けられ、前記複数の単位フローのうちで前記実行要求に示される前記フロー名を持った単位フローの実行により得られる第１の実行結果情報を前記実行要求に対する回答として前記フロー展開支援装置へ出力する手段と、
前記フロー展開支援装置に設けられ、前記第１の実行結果情報を入力し、この入力した前記第１の実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力する手段と、
前記フロー実行装置に設けられ、前記フロー呼出しが含まれていた前記単位フローに示された処理を前記フロー展開支援装置から出力された前記第１の実行結果情報を利用して実行して第２の実行結果情報を作成し、この第２の実行結果情報を前記ユーザ端末からの要求に対する回答として前記ユーザ端末へ出力する手段とを有することを特徴とするウェブサービスシステム。
【請求項２】
ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローを個別に実行するフロー実行装置を支援するもので、複数の前記ウェブサービスがそれぞれ持つ同一のプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名と複数の変数を含んだ事前条件とを対応付けたプラン情報を記憶するプラン記憶装置と、前記フロー実行装置での前記処理の実行状態を示す状態情報を記憶する状態記憶装置とにアクセス可能なフロー展開支援装置であり、
前記プラン名が示された呼出し要求を前記フロー実行装置から入力する手段と、
前記呼出し要求に示された前記フロー実行装置へ引き渡すためのデータを前記状態情報として前記状態記憶装置に記憶させる手段と、
前記呼出し要求に示される前記プラン名を含み、かつ前記状態記憶手段に記憶された前記データを全ての変数に代入可能な前記事前条件を含む前記プラン情報を前記プラン記憶装置から１つを選択し、この選択された前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置へ出力する手段と、
前記実行要求に対する回答としての実行結果情報を前記フロー実行装置から入力する手段と、
前記実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力する手段とを具備したことを特徴とするフロー展開支援装置。
【請求項３】
選択された前記プラン情報に変数を含む事後条件が含まれている場合に、前記状態情報を前記事後条件の変数に前記実行結果情報に含まれる値と前記変数に代入可能な前記データとを代入して定まる内容に更新する手段をさらに備えたことを特徴とする請求項２に記載のフロー展開支援装置。
【請求項４】
複数のウェブサービスがそれぞれ持つ同一のプラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名と複数の変数を含んだ事前条件とを対応付けたプラン情報を記憶するプラン記憶装置と、フロー実行装置での前記処理の実行状態を示す状態情報を記憶する状態記憶装置とにアクセス可能なコンピュータを、
前記プラン名が示された呼出し要求を前記フロー実行装置から入力する手段と、
前記呼出し要求に示された前記フロー実行装置へ引き渡すためのデータを前記状態情報として前記状態記憶装置に記憶させる手段と、
前記呼出し要求に示される前記プラン名を含み、かつ前記状態記憶手段に記憶された前記データを全ての変数に代入可能な前記事前条件を含む前記プラン情報を前記プラン記憶装置から１つを選択し、この選択された前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置へ出力する手段と、
前記実行要求に対する回答としての実行結果情報を前記フロー実行装置から入力する手段と、
前記実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力する手段として機能させることを特徴とするフロー展開支援プログラム。
【請求項５】
選択された前記プラン情報に変数を含む事後条件が含まれている場合に、前記状態情報を前記事後条件の変数に前記実行結果情報に含まれる値と前記変数に代入可能な前記データとを代入して定まる内容に更新する手段として前記コンピュータをさらに機能させることを特徴とする請求項４に記載のフロー展開支援プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ウェブサービスフローの一部の処理を定義した複数の単位フローを組合わせてウェブサービスフローを展開することでウェブサービスを提供するウェブサービスシステムと、上記単位フローを個別に実行するフロー実行装置によるウェブサービスフローの展開を支援するためのフロー展開支援装置およびフロー展開支援プログラムに関する。
【０００２】
【従来の技術】
近年、情報処理技術の進展に伴い、企業内情報システムや企業間商取引システムが備え持つアプリケーションプログラムを、ネットワークを介して呼び出して利用し、計算結果を受け取ることができる新しい仕組みが広まりつつある。このような仕組みはウェブサービス（Webサービス）と呼ばれ、WebやXML（extensible markup language）といったオープンな技術を使って実現されている。現在標準化が進められているSOAP（simple object access protocol）、WSDL（web services description language）、UDDI（universal description, discovery and integration）の３つの仕様は、Webサービスの最も基本的な操作である、Webサービスの記述、発見、呼び出しを実現するものである。これらの技術を使うことによって、Webサービス利用者とWebサービス提供者との間の１対１の連携が可能となる。
【０００３】
しかし、企業内情報システムや企業間商取引システムでは、より複雑なシステム連携が求められている。その実現に向けた新しいソフトウェア技術の研究開発が強く求められている。その１つとして複数のWebサービスに対する呼び出しをビジネスプロセスやワークフローとして取りまとめる仕組みが挙げられる。現在、複数のWebサービスに対する呼び出し手順を定義したWebサービスフローを記述するための標準言語として、BPEL4WS（business process execution language for web services）、WSFL（web services flow language）、XLANG、WSCI、BPML（business process modeling language）などの数多くの提案がなされている。これらのWebサービスフロー記述言語では、１つの論理的なWebサービスフローを１つのWebサービスフロー記述として定義する（非特許文献１乃至非特許文献６を参照）。
【０００４】
【非特許文献１】
「Webサービス合成のための振舞い記述のしくみ」、人工知能学会誌、vol.17, no.4, 2002年。
【０００５】
【非特許文献２】
「Web Servicesアーキテクチャーの概要」、http://www-6.ibm.com/jp/developerworks/webservices/001201/j_w-ovr.html
【０００６】
【非特許文献３】
「Web Servicesアーキテクト: 第1回: ダイナミックe-businessの紹介」、http://www-6.ibm.com/jp/developerworks/webservices/010608/j_ws-arc1.html
【０００７】
【非特許文献４】
「BPEL4WSによるビジネス・プロセス: BPEL4WSについて 第1回」、http://www-6.ibm.com/jp/developerworks/webservices/021025/j_ws-bpelcol1.html
【０００８】
【非特許文献５】
「Business Process Execution Language for Web Services，Version 1.0」、http://www-106.ibm.com/developerworks/webservices/library/ws-bpel/,2002
【０００９】
【非特許文献６】
「Web Services Description Language (WSDL) Version 1.2」、http://www.w3.org/TR/2003/WD-wsdl12-20030124/,2003
【００１０】
【発明が解決しようとする課題】
ところが、大規模なビジネスプロセスでは、プロセスの実行状況に応じて呼び出すWebサービスを切り替えたいという要求が非常に強い。上記Webサービスフロー記述言語の場合、Webサービス選択の記述をするために、Webサービスフロー内で条件文を多用しなければならない。その結果として、本来Webサービスフローで実現したい意味的な処理に対して、制御文や個々のWebサービス呼び出し処理の定義の割合が相対的に多くなり、記述が複雑で見通しの悪いWebサービスフロー定義となってしまっている。
【００１１】
本発明は、このような事情を考慮してなされたものであり、その目的とするところは、比較的小さな処理を行うための単位フローを柔軟に組合わせて、全体として論理的な１つのWebサービスフローを動的に組み立ててWebサービスを実現することが可能なウェブサービスシステムを提供することにある。そしてそのために、単位フローを個別に実行するフロー実行装置によるウェブサービスフローの展開を効率的に支援することが可能なフロー展開支援装置およびフロー展開支援プログラムを提供することを別の目的とする。
【００１２】
【課題を解決するための手段】
以上の目的を達成するために本発明のウェブサービスシステムは、同一のプラン名を持つ複数のウェブサービスを個別に提供する複数のウェブサービス提供装置と、前記ウェブサービスを利用する処理を含む複数の処理の手順をそれぞれ示した複数の単位フローに応じた処理を個別に実行するフロー実行装置と、前記ウェブサービスが持つ前記プラン名とそのウェブサービスを利用する処理の手順を示した前記単位フローのフロー名と複数の変数を含んだ事前条件とを対応付けたプラン情報を記憶するプラン記憶装置と、前記フロー実行装置での前記処理の実行状態を示す状態情報を記憶する状態記憶装置と、フロー展開支援装置とを具備し、さらに、前記フロー実行装置に設けられ、ユーザ端末からの要求に応じて選択された一つの単位フローに前記プラン名によるフロー呼出しが含まれている場合に当該プラン名を含む呼出し要求を前記フロー展開支援装置へ出力する手段と、前記フロー展開支援装置に設けられ、前記呼出し要求を受けると、この呼出し要求に示された前記フロー実行装置へ引き渡すためのデータを前記状態情報として前記状態記憶装置に記憶させる手段と、前記フロー展開支援装置に設けられ、前記呼出し要求に示される前記プラン名を含みかつ、前記状態記憶装置に記憶された前記データを全ての変数に代入可能な前記事前条件を含む前記プラン情報を前記プラン記憶装置から１つ選択し、この選択した前記プラン情報に示される前記フロー名を示した実行要求を前記フロー実行装置へ出力する手段と、前記フロー実行装置に設けられ、前記複数の単位フローのうちで前記実行要求に示される前記フロー名を持った単位フローの実行により得られる第１の実行結果情報を前記実行要求に対する回答として前記フロー展開支援装置へ出力する手段と、前記フロー展開支援装置に設けられ、前記第１の実行結果情報を入力し、この入力した前記第１の実行結果情報を前記呼出し要求に対する回答として前記フロー実行装置へ出力する手段と、前記フロー実行装置に設けられ、前記フロー呼出しが含まれていた前記単位フローに示された処理を前記フロー展開支援装置から出力された前記第１の実行結果情報を利用して実行して第２の実行結果情報を作成し、この第２の実行結果情報を前記ユーザ端末からの要求に対する回答として前記ユーザ端末へ出力する手段とを備える。
【００１４】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態につき説明する。
図１は本実施形態に係るWebサービスシステムのブロック図である。
【００１５】
Webサービスフローは、Webサービスに対する呼び出し順序を定義した文書である。最も単純なWebサービスフローには、一連のWebサービスを逐次的に読み出すものが挙げられる。また、より複雑なWebサービスフローでは、Webサービスを選択したり、複数のWebサービスに対する呼び出しを並列に行う処理を定義できる。
【００１６】
本実施形態のWebサービスシステムは、あらかじめ意味的な処理の流れを定義した大きなレベルでのフローと、個々の処理の実現方法を定義した小さなレベルでのフローとに分割して定義しておき、上位レベルのフローが必要とする下位レベルのフローを実行時に適宜に呼び出すことによって、全体として論理的な１つのWebサービスフローを動的に組み立てて実行することができる仕組みを提供するものである。具体的には、小さなレベルのフローとして、航空便の空席検索、航空便の座席予約、宿泊施設の空室検索、あるいは宿泊施設の宿泊予約などといった処理を個々に行うための手順を、また大きなレベルのフローとして、旅行プランを作成する手順をそれぞれ定義しておくことにより、大きさレベルのフローに従って小さなレベルのフローを組合わせることで、旅行プランの作成をするWebサービスフローを組み立てて実行する。
【００１７】
このWebサービスシステムは、フロー展開支援装置１、フロー実行装置２、ユーザ端末３およびサービス提供ホスト4-1，4-2，4-3…を含む。そして、これらのフロー展開支援装置１、フロー実行装置２、ユーザ端末３およびサービス提供ホスト4-1，4-2，4-3…は、インターネット５を介して通信可能とされる。
【００１８】
フロー展開支援装置１は、フロー実行装置２がWebサービスフローを展開するのを支援する。フロー実行装置２は、上記の大きなレベルのフローや小さなレベルのフローに相当する単位フロー２１を複数有しており、この単位フロー２１を個別に実行する。単位フロー２１は、例えば航空会社が提供するWebサイトへインターネット５を介してアクセスして、当該航空会社に関する空席検索を行うなどの処理である。そしてフロー実行装置２は、インターネット５を介してWebサービスフロー名を含む要求を受け取ると、指定の単位フロー２１を実行し、その結果を要求元へ返す。このようなフロー実行装置２を実現するアプリケーションプログラムの例として、米IBM製のBPWS4J（business process execution language for web services Java(TM) run time）やWebSphere Application Serverなどが知られている。
【００１９】
ユーザ端末３は、インターネット５へのアクセス機能を有したコンピュータ端末である。ユーザ端末３は、Webサービスを受けようとするユーザに対するインタフェース処理を行う。すなわちユーザ端末３は例えば、ユーザ操作に応じてフロー実行装置２に宛てて実行要求を送出したり、フロー実行装置２から返される結果をユーザに提示したりする。
【００２０】
サービス提供ホスト4-1，4-2，4-3…は、上記の空席検索のようなWebサービスを提供する。
【００２１】
図２はフロー展開支援装置１の構成を示すブロック図である。
図２に示すようにフロー展開支援装置１は、プランリスト１１、実行状態データベース１２および支援処理部１３を含む。
このフロー展開支援装置１は、例えば汎用のサーバ装置やコンピュータ装置を基本ハードウェアとして用いることができる。そして支援処理部１３は、上記のサーバ装置やコンピュータ装置に搭載されたプロセッサにフロー展開支援プログラムを実行させることにより実現することができる。このときに支援処理部１３は、上記のフロー展開支援プログラムがサーバ装置やコンピュータ装置に予めインストールされて実現されても良いし、CD-ROMなどのようなリムーバブルな記録媒体に記録して、あるいはネットワークを介して上記のフロー展開支援プログラムを配布し、このフロー展開支援プログラムをサーバ装置やコンピュータ装置に適宜インストールして実現されても良い。プランリスト１１および実行状態データベース１２は、上記のサーバ装置やコンピュータ装置に内蔵されたメモリやハードディスク装置などの記憶デバイス、上記のサーバ装置やコンピュータ装置に外付けされたメモリやハードディスク装置などの記憶デバイス、さらにはフロッピー(R)ディスクなどのようなリムーバブルな記録媒体などを適宜利用して実現することができる。
【００２２】
プランリスト１１は、Webサービスフローを展開するためのルール情報（メタ情報）を記述したプラン情報（以下では、プランと称する）を複数保持する。
【００２３】
実行状態データベース１２は、Webサービスフローの実行状態を保持する。
【００２４】
支援処理部１３はさらに、要求入力部１３ａ、抽出部１３ｂ、選択部１３ｃ、出力部１３ｄ、応答入力部１３ｅ、通知部１３ｆおよび更新部１３ｇを含む。
【００２５】
要求入力部１３ａは、フロー実行装置２から出力されるフロー展開要求をインターネット５を介して入力する。フロー展開要求には、プラン名およびデータなどが含まれる。要求入力部１３ａは、入力したフロー展開要求に含まれるプラン名を抽出部１３ｂへ出力し、データを更新部１３ｇへ出力する。
【００２６】
抽出部１３ｂは、要求入力部１３ａから出力されるプラン名と同一のプラン名を含み、かつ実行状態データベース１２に記憶された実行状態と所定の関係を持った事前条件を持ったプランをプランリスト１１から全て抽出する。抽出部１３ｂは、抽出したプランを選択部１３ｃへ出力する。抽出部１３ｂは、該当するプランを抽出することができなかった場合には、その旨を通知部１３ｆへ通知する。
【００２７】
選択部１３ｃは、抽出部１３ｂから出力されたプランのうちの１つを選択する。選択部１３ｃは、選択した１つのプランを出力部１３ｄおよび更新部１３ｇへ出力する。
【００２８】
出力部１３ｄは、選択部１３ｃから出力されたプランに示される単位フローの実行要求をフロー実行装置２に宛ててインターネット５へ送出する。
【００２９】
応答入力部１３ｅは、出力部１３ｄが出力した実行要求に基づいて単位フローを実行した結果としてフロー実行装置２が出力する実行結果情報をインターネット５を介して入力する。応答入力部１３ｅは、入力した実行結果情報を通知部１３ｆおよび更新部１３ｇに出力する。
【００３０】
通知部１３ｆは、応答入力部１３ｅが出力した実行結果情報を含んだ結果通知情報を作成し、この結果通知情報をフロー実行装置２に宛ててインターネット５へ送出する。
【００３１】
更新部１３ｇは、要求入力部１３ａから出力されたデータ、選択部１３ｃから出力されたプランに含まれる事後条件、あるいは応答入力部１３ｅから出力された実行結果情報に基づいて実行状態データベース１２に記憶された情報を更新する。
【００３２】
次に以上のように構成されたWebサービスシステムの動作につき説明する。
ここでは、サービス提供ホスト4-1，4-2，4-3が、AIR1，AIR2，AIR3なる航空会社に関して空席検索や座席予約のWebサービスを提供することとする。またフロー実行装置２が有する単位フロー２１のうちの１つは、ユーザからの要求に応じて旅行プランを作成する処理を記述したものとする。以降においてこの単位フロー２１は、旅行プラン作成フローと称する。単位フロー２１のうちの３つは、サービス提供ホスト4-1，4-2，4-3がそれぞれ提供するWebサービスを利用して空席検索を行う処理を記述したものとする。以降においてこれらの単位フロー２１は、空席検索フローと称する。
【００３３】
図３はWebサービスシステムの各部の間での情報の流れをインターネット５を省略して示した図である。
上記のようにフロー実行装置２は、旅行プラン作成フロー21-1および空席検索フロー21-2，21-3，21-4を有している。
【００３４】
さて、実行状態データベース１２は、初期状態として空、すなわち実行状態なしとしておいても良いし、事前に１つあるいは複数個の状態を登録しておいても良い。実行状態データベース１２内の状態は、支援処理部１３の実行が進むに連れて、更新部１３ｇからの操作によって削除されたり、新規に追加されたりする。各状態は次に述べる述語と呼ばれるデータ形式で保持される。
【００３５】
以下、述語について述べる。例として、「成田は出発地である」という文を考える。この文は、「成田」という個体が「出発地である」という性質を持っていることを表している。ここで、主語の「成田」という個体に記号「NARITA」を、文の述語である「出発地である」に記号「FROM」を与え、「成田は出発地である」という文を「FROM(NARITA)」と表現する。この「FROM(NARITA)」という表現を述語と呼び、「FROM」を述語記号と呼ぶ。「FROM(NARITA)」は個体「成田」が出発地であることを示すが、不特定の個体が出発地であることを表現するためには、変数「from」を用いて「FROM(from)」と表す。また、複数個の引数を持つ述語は、「述語記号(引数１，引数２，…)」と表現する。従って例えば、文字列「1234567」は航空会社「AIR1」のマイルアカウントの「ID」であるという関係は、述語記号「ID」を用いて「ID(AIR1，1234567)」と表現する。
【００３６】
ここで、本実施形態にて具体例を説明するために用いる述語を以下に挙げ、それぞれの述語が表す意味を簡単に説明する。
【００３７】
- FROM(from)：fromは出発地である。
【００３８】
- TO(to)：toは目的地である。
【００３９】
- DATE(date)：dateは搭乗日時である。
【００４０】
- ID(airline，id)：文字列idは航空会社airlineのマイルアカウントIDである。
【００４１】
- AVAILABLE(flight)：フライトflightは空席がある。
【００４２】
- BEL(u，P)：ユーザuは述語Pについて信じている。
【００４３】
図４は実行状態データベース１２の一例を示す図である。図４に示す実行状態データベース１２は、３つの状態、「BEL(NAGANO，ID(AIR1，1234567))」、「BEL(HASEGAWA，ID(AIR2、111222333))」、「BEL(OHSUGA，ID(AIR2，444555666))」を保持している。例えば、「BEL(NAGANO，ID(AIR1，1234567))」は、［ユーザ「NAGANO」は、文字列「1234567」は航空会社「AIR1」のマイルアカウントIDであると信じている。］という情報を表す。
【００４４】
プランリスト１１には、プランを予め登録しておく。
上記プランは、プランID、プラン名、事前条件、フロー呼び出し、ならびに事後条件の５つの項目から構成される。プランIDは、プランリスト１１内でユニークな識別子である。プラン名はプランの名前を表す文字列であり、複数の異なるプランに対して同一のプラン名を定義しても良い。事前条件は、プランを選択するための必要条件であり、述語形式で記述する。フロー呼び出しは、フロー実行装置２に対して単位フローの実行を依頼するための情報を定義したものであり、フロー実行装置２が保持している単位フローを特定するためのフロー名と、その単位フローへ渡す引数データと、依頼した結果として受け取ったデータを格納する変数の3種類を指定する。事後条件は、プランを選択し単位フローを呼び出した効果としての条件であり、述語形式で記述する。
【００４５】
図５はプランリスト１１の一例を示す図である。図５に示すプランリスト１１は、３つのプランを保持しており、それぞれのプランIDは上から順に「plan1」、「plan2」、「plan3」である。また、いずれも同じプラン名「search」が定義されている。これらの３つのプランは、空席検索フロー21-2，21-3，21-4にそれぞれ対応している。そして「search」は、空席検索に対して割り当てられたプラン名である。
【００４６】
以下、プランIDが「plan1」であるプランを例に取り、その定義について詳細に述べる。
【００４７】
プラン名は「search」である。
【００４８】
事前条件は、以下の通りである。
BEL(u，FROM(from)) ∧
BEL(u，TO(to)) ∧
BEL(u，DATE(date)) ∧
BEL(u，ID(AIR1，number)
この事前条件は、次の４つの述語の論理積（AND演算）として表されている。
BEL(u，FROM(from))
BEL(u，TO(to))
BEL(u，DATE(date))
BEL(u，ID(AIR1，number))
すなわち、以下のような条件が表現されている。
ユーザuは、fromが出発地であると信じている、かつ
ユーザuは、toが目的地であると信じている、かつ
ユーザuは、dateが搭乗日時であると信じている、かつ
ユーザuは、文字列numberが航空会社AIR1のマイルアカウントIDであると信じている。
【００４９】
フロー呼び出しは、次の通りである。
flight＝call("AIR1 Search Service Flow"，from，to，date，id)
すなわち、航空会社AIR1の空席検索サービスを特定するフロー名が「AIR1 Search Service Flow」である単位フローを呼び出し、４つの引数データ、from、to、date、id、を渡して、その呼び出し結果として受け取るデータを変数flightに格納することを表している。
【００５０】
事後条件は、以下の通りである。
【００５１】
BEL(u，AVAILABLE(flight)) ∧
BEL(u，ID(AIR1，number))
この条件は、［ユーザuは、フライトflightに空席があると信じている］ということを表現している。
【００５２】
図６は旅行プランを作成するWebサービスフローの実行に関するシーケンス図である。
【００５３】
さて、ユーザがユーザ端末３によりフロー実行装置２にアクセスした上で、旅行プランの作成を要求する操作を行ったとする。このときに図６に示すように、ユーザ端末３からフロー実行装置２へ、旅行プラン作成フロー21-1の実行要求６１が送られる。旅行プラン作成フロー21-1には、「航空便の空席検索→航空便の座席予約→宿泊施設の空室検索…」といった具合に、旅行プラン作成の手順が定義されるが、各処理の詳細については定義されていない。そこで旅行プラン作成フロー21-1は、「航空便の空席検索」に対応したプラン名「search」を示したフロー展開要求６２をフロー展開支援装置１へ送る。フロー展開要求６２には、ユーザID、ならびに他の単位フロー２１へ引き渡すためのデータ等が含まれる。
【００５４】
フロー展開支援装置１ではフロー展開要求６２を受けると、このフロー展開要求に示されるプラン名、ユーザID、ならびに他のフロー実行部へ引き渡すデータが要求入力部１３ａにより入力される。そしてこのように要求入力部１３ａが上記の各種情報を入力したことに応じて、支援処理部１３では図７に示すような推論処理が開始される。
【００５５】
なお、ユーザIDは、上記ユーザを表す識別子であり、例えば、ユーザ名を指定する。また、上記データは、パラメータ名と値との組で表わされ、１組または複数組のいずれが受け渡されても良い。
【００５６】
図７は推論処理のフローチャートである。
ステップＳＴ１では要求入力部１３ａが、上述のようにフロー実行部２ａから出力されたプラン名、ユーザＩＤ、ならびに他のフロー実行部へ引き渡すためのデータを受け取る。
【００５７】
ステップＳＴ２では更新部１３ｇが、要求入力部１３ａにより受け取られたデータに対して、パラメータ名を述語記号とし、値を述語の引数にセットした述語データを生成して、この述語データを実行状態データベース１２に登録する。例えば、ユーザIDとして「NAGANO」、出発地に関する入力として、パラメータ名が「FROM」、値が「NARITA」から成るデータが要求入力部１３ａにより受け取られた場合は、更新部１３ｇは述語データ「BEL(NAGANO，FROM(NARITA))」を生成し、これを実行状態データベース１２へ登録する。
【００５８】
ステップＳＴ３では抽出部１３ｂが、プランリスト１１の中から、プラン名が要求入力部１３ａで入力されたものと同じで、かつ実行状態データベース１２内の述語を使って事前条件を単一化できるプランpを探す。なお単一化できるプランとは、述語に含まれる全ての変数に代入可能な値を持つ述語を見つけることができるプランを指す。
【００５９】
ステップＳＴ４では抽出部１３ｂが、プランpが存在するか否かを確認する。
そして、プランpが存在したならば、抽出部１３ｂが抽出したプランpを選択部１３ｃに渡し、ステップＳＴ５に進む。
【００６０】
ステップＳＴ５では選択部１３ｃが、１つのプランpを選択する。抽出部１３ｂによりプランpが１つしか抽出されていないのであれば、選択部１３ｃはこの１つのプランpを選択すればよい。抽出部１３ｂによりプランpが複数抽出されたのであれば、ある適当な基準のもとで選択すればよい。例えば、最初に抽出部１３ｂにより最初に発見されたものを選択したり、事前条件の述語数の多いものを選択するなどの手法が挙げられる。
【００６１】
ステップＳＴ６では出力部１３ｄが、選択部１３ｃにて選択されたプランpに関してステップＳＴ３で求めた単一化、すなわち変数への代入を、プランpで定義しているフロー呼び出しと事後条件との変数に対して適用する。
【００６２】
ステップＳＴ７では出力部１３ｄが、フロー実行装置２を呼び出し、ステップＳＴ６にて求めたフロー呼び出しに含まれる単位フローのフロー名と、その単位フローに引き渡すデータとを含んだ実行要求を送る。
【００６３】
例えば、プラン名「search」に対応する単位フロー２１としては、空席検索フロー21-2，21-3，21-4の３つがあるが、このうちの空席検索フロー21-2が選択されたのだとするならば、図３および図６に示すように出力部１３ｄから空席検索フロー21-2へと実行要求６３が送られる。
【００６４】
この実行要求を受けたならばフロー実行装置２は、実行要求に示されたフロー名を持つ単位フローを実行する。この結果、上記の例では、空席検索フロー21-2が起動されることになる。空席検索フロー21-2は、サービス提供ホスト4-1が提供するWebサービスを利用して空席検索を行う手順が記述されたものである。従って空席検索フロー21-2は、図６に示すようにサービス提供ホスト4-1へ空席検索要求６４を送り、この要求の応答としてサービス提供ホスト4-1から返される空席情報６５を受け取る。さらに空席検索フロー21-2は、空席情報６５を含んだ実行結果情報６６を、実行要求６３に対する応答として図６に示すようにフロー展開支援装置１へ送る。この実行結果情報６６は、フロー展開支援装置１では応答入力部１３ｅに入力される。
【００６５】
支援処理部１３では、図７におけるステップＳＴ７にて出力部１３ｄが実行要求を出力した後には、ステップＳＴ８に進む。ステップＳＴ８では応答入力部１３ｅが、実行依頼が正常終了したか否かを確認する。そして、実行依頼が正常終了したのであれば、ステップＳＴ９へ進む。
【００６６】
ステップＳＴ９では更新部１３ｇが、応答入力部１３ｅが受け取った実行結果情報６６を、プランpのフロー呼び出しで指定した変数に代入する。また、単一化した事後条件にも同じ述語が存在する場合には、更新部１３ｇがその述語にも実行結果情報６６を代入する。
【００６７】
ステップＳＴ１０では更新部１３ｇが、ステップＳＴ６で単一化した事前条件に含まれる各述語を実行状態データベース１２から削除し、次にステップＳＴ９で単一化した事後条件に含まれる各述語を実行状態データベース１２へ登録する。
【００６８】
最後にステップＳＴ１１では通知部１３ｆが、応答入力部１３ｅにより受けられた実行結果情報６６の内容を示した結果通知情報６７を、フロー展開要求６２に対する応答として図６に示すように旅行プラン作成フロー21-1へ送る。
【００６９】
さて、図７におけるステップＳＴ３においてプランpを見つけることができなかったならば、ステップＳＴ４からステップＳＴ１１へ進む。また、実行依頼が異常終了した場合は、ステップＳＴ８からステップＳＴ１１へ進む。これらの場合にステップＳＴ１１において通知部１３ｆは、結果通知情報６７をフロー展開に失敗したことを示すものとする。
【００７０】
以降、上記と同様な流れにより、航空便の空席予約や宿泊施設の空室検索などが順次行われて行く。そして、これらの処理により得られた各種の情報に基づいて旅行プラン作成フロー21-1が旅行プランを作成する。この旅行プランを示す実行結果情報６８が、実行要求６１に対する応答として旅行プラン作成フロー21-1からユーザ端末３へ図６に示すように送られる。
【００７１】
続いて、フロー展開支援装置１の動作についてさらに詳細に説明する。
まずフロー展開要求６２に、プラン名「search」、ユーザID「NAGANO」、ならびにデータ「(FROM，NARITA)，(TO，ITAMI)，(DATE，2003/04/0110:00)」が示されているとする。
【００７２】
更新部１３ｇが、データ「(FROM、NARITA)」から述語「BEL(NAGANO，FROM(NARITA))」を、データ「(TO，ITAMI)」から述語「BEL(NAGANO，TO(ITAMI))」を、データ「(DATE，2003/04/01 10:00)」から「BEL(NAGANO，DATE(2003/04/01 10:00))」をそれぞれ生成し、実行状態データベース１２へ登録する。このとき、実行状態データベース１２は、図４に示す状態から３つの述語が増えて図８に示す状態へと更新される。
【００７３】
一方、抽出部１３ｂが、プラン名「search」を持ち、かつ実行状態データベース１２内の述語を使って事前条件を単一化できるプランpを探す。
ここでは、プラン名「search」を持つプランは、「plan1」、「plan2」、「plan3」の３つである。
【００７４】
「plan1」の事前条件は、次の通りである。
BEL(u，FROM(from)) ∧
BEL(u，TO(to)) ∧
BEL(u，DATE(date)) ∧
BEL(u，ID(AIR1，number))
図８に示される実行状態データベース１２と照らし合わせると、次の５つの全ての変数への代入が、すわなち単一化が可能であることが分かる。
u      ＝ NAGANO
from   ＝ NARITA
to     ＝ ITAMI
date   ＝ 2003/04/01 10:00
number ＝ 1234567
この時、単一化した事前条件は、次の通りとなる。
BEL(NAGANO，FROM(NARITA)) ∧
BEL(NAGANO，TO(ITAMI)) ∧
BEL(NAGANO，DATE(2003/04/01 10:00)) ∧
BEL(NAGANO，ID(AIR1，1234567))
これらの単一化した事前条件は、実行状態データベース１２の各述語と一致する。従って、「plan1」はプランpの候補となる。
【００７５】
「plan2」の事前条件は、次の通りである。
BEL(u，FROM(from)) ∧
BEL(u，TO(to)) ∧
BEL(u，DATE(date)) ∧
BEL(u，ID(AIR2，number))
図８に示される実行状態データベース１２と照らし合わせると、次の４つの変数への代入が、すなわち単一化が可能である。
u    ＝ NAGANO
from ＝ NARITA
to   ＝ ITAMI
date ＝ 2003/04/01 10:00
しかし、「BEL(u，ID(AIR2、number))」に対応する述語が実行状態データベース１２に存在しないため、変数「number」への代入はできない。従って、「plan2」はプランpの候補ではない。「plan3」についても同様に、「BEL(u，ID(AIR3，number))」に対応する述語が実行状態データベース１２に存在しないため、変数「number」への代入はできない。従って、「plan3」もプランpの候補ではない。
【００７６】
以上のようにして、抽出部１３ｂではプランpとして「plan1」が抽出される。
このとき、１つのプランのみが抽出されたのであるから、選択部１３ｃは上記の「plan1」をそのまま選択する。
【００７７】
出力部１３ｄが、「plan1」の事前条件に対する単一化を、「plan1」のフロー呼び出しおよび事後条件に適用する。「plan1」のフロー呼び出しは、次の通りである。
flight＝call("AIR1 Search Service Flow"，from，to，date，number)
このフロー呼び出しに対して単一化を適用すると、次の通りとなる。
flight＝call("AIR1 Search Service Flow"，NARITA，ITAMI，2003/04/01 10:00，1234567)
また、事後条件は、次の通りである。
BEL(u，AVAILABLE(flight)) ∧
BEL(u，ID(AIR1，number)
この事後条件に対して単一化を適用すると、次の通りとなる。
BEL(NAGANO，AVAILABLE(flight)) ∧
BEL(NAGANO，ID(AIR1，1234567)
変数「flight」に関しては、この段階では変数のままとする。
【００７８】
次に出力部１３ｄは、フロー実行装置２に対して実行要求６３を送る。この実行要求６３には、上記の単一化したフロー呼び出しから、Webサービスフロー名「AIR1 Search Service Flow」と、4つのデータ「NARITA」、「ITAMI」、「2003/04/01 10:00」、「1234567」とを含める。「AIR1 Search Service Flow」は、
空席検索フロー21-2に付与されたWebサービスフロー名である。このため、実行要求６３により空席検索フロー21-2が起動される。
【００７９】
空席検索フロー21-2により空席便「AIR1-079」が見つかったものとする。この場合、この「AIR1-079」を含んだ実行結果情報６６が空席検索フロー21-2から返されることになる。そしてこの実行結果情報６６は応答入力部１３ｅで入力され、更新部１３ｇに渡される。更新部１３ｇでは、実行結果情報６６に含まれた上記の「AIR1-079」を、単一化したフロー呼び出しの変数「flight」へ代入する。
従って、変数「flight」の値は「AIR1-079」となる。このとき、前述の単一化した事後条件は、次の通りとなる。
BEL(NAGANO，AVAILABLE(AIR1-079)) ∧
BEL(NAGANO，ID(AIR1，1234567)
続いて更新部１３ｇは、次のデータを実行状態データベース１２から削除する。
BEL(NAGANO，FROM(NARITA))
BEL(NAGANO，TO(ITAMI))
BEL(NAGANO，DATE(2003/04/01 10:00))
BEL(NAGANO，ID(AIR1，1234567))
これとともに更新部１３ｇは、前述の単一化した事後条件に含まれる次の２つの述語を実行状態データベース１２に追加する。
BEL(NAGANO，AVAILABLE(AIR1-079))
BEL(NAGANO，ID(AIR1，1234567)
従って、実行状態データベース１２は図８の状態から図９の状態へと更新される。
最後に通知部１３ｆが、「AIR1-079」を示した結果通知情報６７を、呼び出し元である旅行プラン作成フロー21-1へ送る。
【００８０】
以上のように本実施形態によれば、フロー展開支援装置１はフロー展開要求を受け取るたびに、その要求に応じて適切な単位フロー２１を１つ選択し、この単位フロー２１の実行を要求する。またフロー展開支援装置１は、要求した単位フロー２１を実行した結果得られる情報を、フロー展開要求元の単位フロー２１へと返す。従って、フロー実行装置２においては、１つの単位フロー２１から間接的に他の単位フロー２１を呼び出すことができる。そしてこの結果として、複数の単位フロー２１を柔軟に組合わせて１つの論理的なWebサービスフローを構築して実行することが可能となる。
【００８１】
また本実施形態によれば、例えば単位フローが新たに追加されたような場合には、プランリスト１１を更新することにより、上記の新たに追加された単位フローを利用可能とすることができる。具体的には、AIR4なる航空会社の空席検索Webサービスに対する呼び出しを行う単位フローが追加されたとするならば、プラン名が「search」であり、フロー呼び出しを「flight＝call("AIR4 Search Service Flow"，from，to，date，id)」としたプランをプランリスト１１に追加することにより、前述の旅行の計画を立てる単位フローは何ら修正しなくとも、この旧来からある単位フローから上記の新しく追加された単位フローを呼び出して使用することが可能である。すなわち本実施形態によれば、個々の単位フローの開発は、他の単位フローの詳細を考慮することなく行うことができる。また、Ｗｅｂサービスフローの拡張も、一部の単位フローの更新や追加などにより容易に行うことが可能となる。
【００８２】
また本実施形態によれば、プランに事前条件を含めるとともに、Ｗｅｂサービスフローの実行状態を実行状態データベース１２に記憶しておき、実行状態データベース１２内の情報を使って事前条件を単一化できるプランを抽出することとしているので、Ｗｅｂサービスフローの実行状態に応じて適切な単位フローを実行させることができる。
【００８３】
この実施形態は、次のような種々の変形実施が可能である。
プランリスト１１および実行状態データベース１２はフロー展開支援装置１に含まれていなくても良い。その場合、フロー展開支援装置１からプランリスト１１および実行状態データベース１２へアクセスするための通信手段をフロー展開支援装置１に設ける。
【００８４】
プランリスト１１からのプランの抽出は、プラン名のみに基づいて行うようにしても良い。この場合、プランには事前条件および事後条件を含まなくて良い。
また実行状態データベース１２は不要となる。
【００８５】
実行状態データベース１２の更新には、事後条件を考慮しなくても良い。
【００８６】
フロー実行装置２は１つである必要はなく、複数のフロー実行装置２がそれぞれ持つ単位フロー２１を適宜に展開するようにしても良い。
【００８７】
各単位フロー２１が示す処理内容は任意であって良い。そして、ユーザ端末３とのインタフェース処理が示された単位フロー２１は、他の単位フロー２１を１度のみ利用するものであっても良い。
【００８８】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【００８９】
【発明の効果】
本発明によれば、比較的小さな処理を行うための単位フローを柔軟に組合わせて、全体として論理的な１つのWebサービスフローを動的に組み立てて実行することが可能となる。
【図面の簡単な説明】
【図１】  本発明の一実施形態に係るWebサービスシステムのブロック図。
【図２】  図１中のフロー展開支援装置１の構成を示すブロック図。
【図３】  Webサービスシステムの各部の間での情報の流れを示した図。
【図４】  図２中の実行状態データベース１２の一例を示す図。
【図５】  図２中のプランリスト１１の一例を示す図。
【図６】  旅行プランを作成するWebサービスフローを実行に関するシーケンス図。
【図７】  推論処理のフローチャート。
【図８】  図２中の実行状態データベース１２の更新例を示す図。
【図９】  図２中の実行状態データベース１２の更新例を示す図。
【符号の説明】
１…フロー展開支援装置、２…フロー実行装置、２ａ，２ｂ…フロー実行部、１１…プランリスト、１２…実行状態データベース、１３…支援処理部、１３ａ…要求入力部、１３ｂ…抽出部、１３ｃ…選択部、１３ｄ…出力部、１３ｅ…応答入力部、１３ｆ…通知部、１３ｇ…更新部。
【図１】
0003947136.tif 000002
【図２】
0003947136.tif 000003
【図３】
0003947136.tif 000004
【図４】
0003947136.tif 000005
【図５】
0003947136.tif 000006
【図６】
0003947136.tif 000007
【図７】
0003947136.tif 000008
【図８】
0003947136.tif 000009
【図９】
0003947136.tif 000010