情報処理方法及び装置
【課題】 複数XML Webサービスの運用に必要なトランザクションの完全性を保証できる手段を提供する。
【解決手段】 インターネット上で利用可能なXML Webサービスに関する情報を有する複数のエージェントサーバ4a,4b,4cから情報の提供を受けるコーディネートサーバ3は、複数のサービス情報提供部4a,4b,4cに対して各々のXML Webサービスを呼び出すとき、一連の処理をキャンセルするための戻しSQL又はパラメータを生成する手段と、いずれかのXML Webサービスが実行不可の場合に戻しSQL又はパラメータにより一連の処理をキャンセルする手段とを備えたことを特徴とする。
【解決手段】 インターネット上で利用可能なXML Webサービスに関する情報を有する複数のエージェントサーバ4a,4b,4cから情報の提供を受けるコーディネートサーバ3は、複数のサービス情報提供部4a,4b,4cに対して各々のXML Webサービスを呼び出すとき、一連の処理をキャンセルするための戻しSQL又はパラメータを生成する手段と、いずれかのXML Webサービスが実行不可の場合に戻しSQL又はパラメータにより一連の処理をキャンセルする手段とを備えたことを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数XML Webサービスの処理全体に対して、1トランザクションとして管理し、完全性を保証するXML Webサービスを実現するための情報処理方法及び装置に関する。
【背景技術】
【0002】
企業等での業務用コンピュータシステムを構築するための手段として、嘗ては大型汎用機で全処理を行うホスト集中型システムが主流であったが、近年のパーソナルコンピュータ(PC)及びワークステーションの高性能・低価格化により、機能の一部をクライアントPCに持たせ、サーバと協調して稼働するクライアント・サーバ型システム(以下「C/Sシステム」という)が主流となってきた。
【0003】
C/Sシステムは開放系技術を用いているため、各メーカ独自の仕様であったホスト集中型システムと比較して非常に少ない初期投資で構築できるという大きな利点を有し、ホスト集中型システムにとって代わると思われたが、クライアント側にもソフトウェアを導入しなければならない等の理由により、メンテナンス費用も含めた総費用(TCO)の点で、ホスト集中型とあまり変わらないことが判明してきた。
【0004】
このC/SシステムのTCO増大という問題を解決するため、最近では、オペレーションシステム(OS)に標準で搭載されているインターネットブラウザを使用した3層モデルというものが提案された。これは、「ブラウザ」と称されるとおり閲覧する(ブラウズ)には適しているが、業務処理システムのように入力が主となるものには適しておらず、帳票印刷のような定型フォーマットに印刷する用途にも適していない。また、ネットワーク接続を前提としているため、インターネットに接続できない環境では使用できない等の理由により、企業情報システムとして、ホスト集中型システムやC/Sシステムを完全に置き換えるまでには至っていない。
【0005】
今後は分散環境の発展に伴って、複数のサーバにまたがる分散処理に対し完全性を保証することが要求される。そのためには、通信エラーやサーバのダウン等により、いずれかの処理が実行できなかった場合に、代替処理ができるサーバを探して実行するか、或いは実行済みの処理(例えば、後述のXML Webサービス)に対してキャンセル処理を行うことで処理自体なかったことにするかという複雑な処理を行わなければならない。
【0006】
ここで、XML Webサービスとは、例えば、下記特許文献1に示されるように、コンピュータシステムで提供されるサービスであって、インターネット上で扱うデータを記述するための新しいデータフォーマット言語であるXML(eXtensible Markup Language)を用いて記述されるものである。XMLによれば、記述された情報に対して「タグ」という独自の意味づけを定義することができるため、プログラムからの操作が容易であり、XML WebサービスのLOGや動的画面を描画するための記述言語としてXMLが使用される。
【0007】
近年のインターネットの普及により24時間365日、場所を問わずに商品を購入できるようになったが、現状のWebサイトは、既存の商売の仕組みをそのままインターネット上に展開したものに過ぎない。すなわち、現在殆どのWebサイトは人間に向かって配信するように設計されている。このため、例えば、旅行や出張に必要な手配をインターネットを用いて行う際には、航空会社や鉄道などの交通機関のWebサイトにアクセスして航空券や乗車券を予約すること、及びホテルのサイトにアクセスして宿泊予約をするというのが通常である。ここで、ホテルが満室なら別ホテルを検索しているなど、顧客自身が旅行代理店の役割を果たしており、顧客の利便性の追及には至っていない。
【0008】
上記のように、現在Webサイトの対象は基本的に人間であるが、今後、XML Webサービスを用いた「次世代Webサイト」を構築すると、Webサイト同士すなわちコンピュータ同士が自立的に結合して連係処理を行うことで、顧客に対するワンストップサービスの提供が可能になり、顧客の利便性がより良くなることが期待される。
【0009】
一方、関連する複数の処理を一つの処理単位としてまとめる「トランザクション」という手法が知られている。これは、例えば金融機関のコンピュータシステムにおける入出金処理のように、一連の作業を全体として一つの処理として管理するために用いる。このトランザクションとして管理された処理は、「すべて成功」か「すべて失敗」のいずれかであることが保証されなければならない。例えば、資金移動システムをコンピュータで処理する場合、出金処理と入金処理は「どちらも成功」か「どちらも失敗」のどちらかであることが要求される。「出金に成功して入金に失敗」すると、出金された資金が宙に浮いてしまうからである。このような場合に、出金と入金をまとめて1つのトランザクションとして管理し、どちらか一方が失敗したら他方も失敗させ、どちらも成功したときに初めて全体を成功と評価するのが「トランザクション処理」である。
【0010】
この考え方を応用し、関連する複数のXML Webサービスを一連の作業として全体として一つの処理としたものを、「複数XML Webサービストランザクション」と称する。
【0011】
【特許文献1】特開2004−295898号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
従来の技術では、複数のXML Webサービスに跨って完全性を保証するトランザクションを実現する技術は確立されていない。このため、複数XML Webサービスを1トランザクションとして保証し得る手段は提供されていない。
【0013】
本発明の目的は、従来技術の問題点を解決するシステムの構築において基礎となる、複数XML Webサービスの運用に必要なトランザクションの完全性を保証できる手段を提供することである。
【課題を解決するための手段】
【0014】
本発明は、複数XML Webサービスの呼出し及び実行処理を一つのトランザクションとして捉え、そのトランザクションに対して完全性を保証する情報処理方法及び装置を提供する。
【0015】
本発明の方法は、インターネット上で利用可能な複数XML Webサービスを利用者に提供するための情報処理方法であって、前記XML Webサービスを実行したとき、キャンセル時に発行する「戻し」のSQL又はパラメータを生成し保存するステップ、及び「戻し」が発生した場合、記録された戻しのSQLやパラメータを用いて、トランザクション自体を取り消すステップを含むことを特徴とする。
【0016】
本発明の装置は、インターネット上で利用可能なXML Webサービスに関する情報を有する複数のサービス情報提供部から情報の提供を受ける情報処理装置であって、前記複数のサービス情報提供部に対して各々のXML Webサービスを呼び出すとき、一連の処理をキャンセルするための戻しSQL又はパラメータを生成する手段と、いずれかのXML Webサービスが実行付加の場合に前記戻しSQL又はパラメータにより前記一連の処理をキャンセルする手段とを備えたことを特徴とする。
【0017】
上記のように、本発明では、いずれかのXML Webサービスをキャンセルすることが必要になった場合に備えて、XML Webサービスを実行したときに、キャンセル時に発行する「戻し」のSQL (Structured Query Language) やパラメータを自動生成して保存しておく。そして、「戻し」が発生した場合、記録された戻しのSQLやパラメータを使用することにより、トランザクション自体を取り消すことが可能となり、処理全体に対して完全性が保証される。
【0018】
ここで、SQLは多くの場合、RDB(リレーショナルデータベース)に格納されている予約情報や顧客情報などのデータを作成・変更・削除するための標準言語として用いられるものであり、上記のXML Webサービス提供側にSQLで記述された命令を受け付ける口を設けることにより、データベースに格納されたデータの自由な操作が可能になる。
【0019】
また、SQLを使用すれば、自由にデータの操作が可能になる反面、悪意のあるユーザがSQL命令を発行すると、データの改ざんや消去などが行われてしまうので、SQLでの呼び出しを許さない場合も想定される。そこで、XML Webサービスを呼び出す際にSQLでなく、予約なら1、取消しなら0というようにパラメータで呼び出すことも可能とする。
【発明の効果】
【0020】
本発明によれば、複数のXML Webサービスにおいて、全てのXML Webサービスの実行がOKとなった時点で呼び出し元に成功として返す一方、XML Webサービスがどれか一つでもエラーになった場合は、成功したXML Webサービスに対してキャンセル処理を行い、トランザクション自体をなかったことにする。このようなトランザクション環境を構築することにより、インターネットにおいて通信エラーのためXML Webサービスの実行が失敗するといった状況にも対処することができる。
【0021】
上記のように複数のXML Webサービスを1トランザクションとして実現することで、顧客に対するワンストップサービスの実現が可能となり、顧客は様々な利益を享受できる。また、複数のXML Webサービスが仲介する新しいビジネス形態等、様々な利用が期待される。また、通信回線としての専用線やIP−VPN、広域LAN等と比較して安全性や品質が劣るインターネットを用いるコンピュータシステムにおいて、本発明により処理全体の完全性が保証される。
【0022】
本発明によれば、各Webサイト同士が自立的に連係処理する仕組みを付与することで、顧客に対するワンストップサービスの実現が可能になる。その仕組みによれば、例えば、顧客が旅行代理店のWebサイトにアクセスして、いつ、どういう目的で、どこへ行きたい、というような漠然とした情報を与えると、顧客の趣味趣向に応じ、必要なWebサイトにアクセスし予約処理を行えるようになる。もし満席や満室の際でも別のWebサイトを検索し、代替案を出してくれるということが可能になり、ユーザにとって利便性は飛躍的に向上する。
【発明を実施するための最良の形態】
【0023】
図1は、本発明の技術を適用した複数XML Webサービスを提供するシステムの構成例を示す図である。
【0024】
このシステムは、本サービスを利用するユーザ側のクライアント端末(PC)1からネットワーク(例えばインターネット)2を介して接続され、複数XML Webサービスを仲介するサーバ(以下「コーディネートサーバ」という)3と、サービス提供者側の複数のサーバ(以下「エージェントサーバ」という)4a,4b,4c・・・とで構成されている。
【0025】
クライアント端末1はクライアントエンジン、各サーバはサーバエンジンをそれぞれ備える。この2種のエンジンは、コンピュータプログラムから成り、クライアント端末又は各サーバを構成するコンピュータに格納される。
【0026】
プログラムは、種々の要素の組み合わせにより、ユーザに対してサービスを提供するものである。そこで、このような要素を用意して、各要素の基本的な機能を予め規定しておき、それらの要素を機能させる仕組み(エンジン)を配置することで、現状のプログラムと同等の動作を実現することが考えられる。
【0027】
上記エンジン自体を製作するためのプログラミング言語は何でもよく、設定を定義するXMLデータをエンジンの言語に対応させるためにXSL (eXtensible Stylesheet Language) を使用し、プログラミング言語の使用の違いを吸収する。これにより、プログラミング言語ごとにエンジンとXSLのみを作成すれば、あらゆる環境でこの仕組みが実現できる。
【0028】
サーバエンジンは、図2に示すように、クライアント端末1からの処理要求に応じて、サーバ上のWebサービス処理を実行し、結果を回答する。これにより、クライアント端末以外で行う処理をコンピュータ同士が自立的にやり取りして分散処理を実現するXML Webサービスを動的に生成し、複数のXML Webサービスに対して整合性を保った処理環境(トランザクション環境)を提供できる。
【0029】
クライアントエンジンは、従来のWebアプリケーションでは不得意な、表現力に乏しいGUI環境を大きく改善するものである。詳細には、次のような機能を有する。
【0030】
通常のクライアント画面はコンパイルしたもの、つまり静的な画面というのが一般的であるが、上記クライアントエンジンでは、画面構成情報からイベント処理等の全てをXMLと呼ばれるタグ言語にて記述し、サーバ側で実行されるXML WebサービスによりXMLで記述された画面構成情報をXML Webサービスから受け取り、その内容を解釈して画面上に動的に描画する。このため、非常に柔軟で表現力に富んだ画面になる一方で、そのやり取りされるXMLの情報量は相当のものになる。
【0031】
また、クライアントエンジンでは、画面構成情報からイベント処理など全てをXMLと呼ばれるタグ言語にて記述し、その定義情報から、画面表示の各要素(部品)の表示位置(X,Y座標)や基礎的な表示状態などを動的に再現する。更に、その動作方法及び手順についても、XMLを用いた定義情報から取得して動作させる。これにより、プログラミング作業そのものが変革される。すなわち、プログラマは、プログラムコードを記述するのではなく、プログラムの見栄えや振る舞いに思考の中心を移すことができ、新しいプログラム制作が実現することとなる。
【0032】
クライアントエンジンは、図3に示すように、コーディネートサーバ3から複数のクライアント端末1a,1b,1c・・・にそれぞれダウンロードされる。
【0033】
従って、図4に示すように、コーディネートサーバ3と各種クライアント端末1a,1b,1c・・・との間では次の動作が行われる。
(1)コーディネートサーバ3からクライアントエンジン送信(配布)
(2)クライアント端末1でクライアントアプリケーションの生成
(3)クライアント端末1からWebサービス(予約など)要求
(4)コーディネートサーバ3からエージェントサーバ4へWebサービス呼出し及び実行
(5)エージェントサーバ4からのWebサービス実行処理結果をクライアント側へ送信。
【0034】
図1のシステムは、サーバエンジンにより、複数XML Webサービスに対して完全性を保証する仕組みを構築している。すなわち、複数Webサービストランザクションにより、顧客に対するワンストップサービスを実現させるため各WebサイトにXML Webサービスという自立的に動くエージェントサーバを配置し、そのエージェントにて空席状況の確認や予約処理などを行うこと、及び各エージェントを統括する仕組みが提供される。
【0035】
例えば、1泊2日で地方から東京への出張の手配をする状況を考えてみると、交通手段の確保と宿泊先の確保が最低限必要であり、そのいずれか一つでも確保できなかった場合は、出張手配としては成立しない。これを人間の手を介さずにコンピュータで処理を完結させるためには、次のような仕組みが必要である。
(1) Webサイト(航空会社、ホテル等)で提供するXML Webサービスをコーディネートする機能。
(2) 顧客に対して完全な状態で予約を提供することは勿論、各Webサイトにて存在しない予約が入ることを避けるために、いずれかの予約が成立しなかった場合は予約処理自体をなかったことにすることで、取引全体に対して完全性を提供するための仕組み。
【0036】
図1のシステムは、例えば、一般ユーザが旅行や出張に必要な手配をする場合、図5に示すように、ユーザ自身が携帯電話やパソコンなどの端末11からインターネット12を介して、航空会社や鉄道などの交通機関、宿泊したいホテルや旅館及び観光地の施設などのWebサイト13a,13b,13cにアクセスして各々予約をするといった手間を解消するため、図6に示すように、上記サーバエンジンを備えたコーディネートサーバ3が旅行代理店の役割を果たすシステムとして利用できる。図6のシステム構成では、各Webサイト13a,13b,13cを運営する事業者に、図1の各エージェントサーバ4a,4b,4cが設置される。
【0037】
旅行代理店としてのXML Webサービスは、複数の異なるXML Webサービスを仲介するものと考えられる。この場合、システムは、図7に示すように、ユーザ端末11からの予約リクエストに応じて予約サービスを仲介するコーディネートサーバ3と、ホテル予約、レンタカー予約、航空券予約、その他の予約サービスを提供するエージェントサーバ4a,4b,4c,4dと、ユーザ端末11とコーディネートサーバ3の間及びコーディネートサーバ3と各エージェントサーバ4a,4b,4c,4dの間をそれぞれ接続するインターネット(図示省略)とで構成される。コーディネートサーバ3は、変更内容をXMLで書き込むためのメモリ31を備えている。
【0038】
このシステムでは、コーディネートサーバ3は、ユーザ端末11から予約リクエストを受けると、それに応じた予約サービスを実行するエージェントサーバ4a,4b,4c又は4dへ予約リクエストを送り、そのエージェントサーバから予約OKの返答を受けると、返答をユーザ端末11へ送る。ユーザ端末11からの予約リクエストに対し、その要求に係る全ての予約処理が完了するまで予約リクエストを受けないようにサーバをロックすることとなる。しかしながら、旅行代理店としてのXML Webサービスでは、従来のトランザクション(コンピュータでの処理)のように全ての処理が完了するまでサーバのコンピュータ資源をロックすることは困難である。
【0039】
そこで、いずれかの予約処理の結果が“NG”の場合(例えば、ユーザの希望する交通機関が満席である場合)は、代替策を検索するとしても、以下のキャンセル処理を行うことで処理自体をなかったことにすれば、トランザクションの完全性を保証できる。すなわち、図8に示すように、コーディネートサーバ3は、ユーザ端末11からの予約リクエストにより旅行代理店XML Webサービスを起動し、予約リクエストをエージェントサーバ4a,4b,4c,4dに送ることで、予約に必要なXML Webサービスを呼び出す。その際、キャンセル処理のための戻しロジック(「戻し」のSQL)を自動生成し、LOGとしてメモリ31に保管しておく。そして、各エージェントサーバでの実行結果を集計、判定し、全ての予約処理がOK(成功)ならば、トランザクションは終了し、OKの返答をユーザ端末11へ送る。他方、いずれかの処理がNG(不成功)ならば、XML Webサービス・キャンセル処理を行い、成功したXML Webサービスに対して実行しなかったことにする。そして、予約不成功の返答をユーザ端末11に送る。
【0040】
図9は、コーディネートサーバとエージェントサーバによる複数XML Webサービスの処理手順を示すフローチャートである。
【0041】
初めにコーディネートサーバは、予約リクエストの有無をチェックし(ST1)、予約リクエストがあるとき、XML Webサービスを呼び出し、その予約リクエストに応じたサービスの種類(範囲)を確定する(ST2)。同時に、「戻し」のSQLメッセージ又はパラメータを自動生成して、メモリ31に保存する(ST3)。
【0042】
例えば、SQLメッセージの場合は、insert文ならdelete文を、update文なら元のデータを戻すため、現在のデータをselectで取得し、「戻し」のためのupdate文を自動生成してLOGとして格納する。「戻し」のSQLについては、後で具体例を説明する。
【0043】
他方、パラメータ受け渡しの場合は、実行したXML Webサービスからキャンセル処理のための「戻し」パラメータを取得してLOGとして格納する。
【0044】
次に、上記で確定した範囲のXML Webサービスを呼び出す(ST4)。すなわち、当該XML Webサービスを実行するエージェントサーバに予約リクエストを送信する。
【0045】
各エージェントサーバでは、受信した予約リクエストに応じて、所定のXML Webサービス(予約)処理を実行し(ST11)、その処理結果をコーディネートサーバに送信する(ST12)。
【0046】
コーディネートサーバでは、受信したサービス処理結果をメモリに格納し(ST5)、処理結果が全てOKか否かを判定する(ST6)。その結果“Yes”であれば、予約リクエストを送ったユーザ端末に「予約成功」の結果通知を送信して(ST7)、サービス終了となる。
【0047】
一方、ST6の判定結果が“No”、すなわち複数XML WebサービスのどれかがNGの場合は、代替案の有無すなわち他のサービスの予約が可能かどうかをチェックし(ST8)、“Yes”であれば、代替案のXML Webサービスを呼び出す(ST9)。すなわち、そのXML Webサービスを実行するエージェントサーバに予約リクエストを送信する。
【0048】
当該エージェントサーバでは、受信した予約リクエストに応じて、その代替案サービス(予約)処理を実行し(ST13)、その処理結果をコーディネートサーバに送信する(ST14)。
【0049】
コーディネートサーバでは、受信した代替案サービス処理結果をメモリに格納し(ST5)、以下の手順を繰り返す。上記ST8の判定で“No”、すなわち代替案がない場合は、メモリ31に格納した「戻し」のSQLメッセージ又はパラメータを使用して、成功したXML Webサービスに対して実行しなかったことにするキャンセル呼出し指令を各エージェントサーバに送る(ST10)。
【0050】
各エージェントサーバでは、キャンセル呼出し指令に応じて、XML Webサービス(キャンセル)処理を実行し(ST15)、その処理結果をコーディネートサーバに送信する(ST16)。
【0051】
コーディネートサーバでは、予約リクエストを送ったユーザ端末に「予約不成功」の結果通知を送信して(ST7)、サービス終了となる。
【0052】
ここで、上記のようにサーバで自動生成されるSQLについて説明する。
【0053】
(1) レコードを追加するSQL(INSERT):
例えば、“INSERT 項目名A(ユニークキー),項目名B,項目名C, 項目名D FROM TABLE名”ならば、戻しのSQLとして、
DELETE FROM TABLE名WHERE 項目名A = '削除キー '
というSQLを自動生成する。キャンセル処理の際には、このSQLを実行する。
【0054】
(2) レコードを変更するSQL(UPDATE):
例えば、“UPDATE TABLE名 SET 項目名B=変更値 , 項目名C=変更値 , 項目名D=変更値 WHERE 項目名A=変更キー”のように、B,C,Dを変更するSQLを発行しようとする際には、
SELECT * FROM TABLE名WHERE 項目名 =変更キー
というSQLを発行して、事前に変更前の項目情報を取得する。そして、
“UPDATE TABLE名 SET 項目名B=変更値 , 項目名C=変更値 , 項目名D=変更値 WHERE 項目名A=変更キー”
というSQLを自動生成する。「戻し」が発生した場合は、このSQLを実行する。
【0055】
一例として、新規にホテルを予約したい場合を考える。その場合のSQLは、
“INSERT 予約番号,名前,宿泊日,泊数,部屋タイプ, FROM 予約テーブル”となる。
【0056】
この予約SQLの発行と同時に、予約自体を取り消す戻しSQLとして、
“DELETE FROM予約テーブルWHERE予約番号=予約番号”
を自動生成してLOGに格納する。
【0057】
その後、ホテルでの予約内容の変更が発生した場合は、
“SELECT * FROM予約テーブルWHERE予約番号=予約番号”
というSQLを発行して、事前に変更前の項目情報を取得しておく。そして、
“UPDATE 予約テーブル SET 名前=名前(変更前) , 宿泊日=宿泊日(変更前) , 泊数=泊数(変更前) , 部屋タイプ=部屋タイプ(変更前) WHERE 予約番号=予約番号(ユニークキー)”
というSQLを発行して、LOGに格納する。
【0058】
「戻し」が発生した場合は、上記SQLを実行することで、更新前のデータに戻すことが可能になる。
【0059】
図10は、WebサービストランザクションLOGの例を示す。LOG自体はXMLで記述し、プログラムにて扱いやすい形態とする。勿論、XMLでないデータフォーマットでも記述可能である。
【0060】
図のように、取引単位をトランザクションとし、「トランザクション名」として唯一固有の数字を割り振る(2行目)。そのトランザクションにて呼び出したXML Webサービス名を記述し(3行目)、自動生成したSQLもしくはパラメータと実行結果を記述する(4〜5行目)。他にも呼び出したXML Webサービスがあれば、同様に記述する(6行目以降)。
【0061】
サーバエンジンは、複数のXML Webサービスの実行状況をLOGに随時記録しながら、キャンセル時にはLOGを参照しながらキャンセル処理を発行する。これにより、複数XML Webサービスの実行に関して完全性を保障するトランザクション処理を実現している。
【0062】
上記のシステムによれば、図11に示すように、旅行代理店21にコーディネートサーバを設置し、予約を受け付けるホテル22、鉄道会社23、航空会社24に各エージェントサーバをそれぞれ設置することにより、旅行代理店からホテルや各交通機関の予約をとるサービスが提供される。それは、図9の処理手順に従って、例えば次のように行われる。
(1)旅行代理店21のサーバからホテル22のサーバに予約リクエストを送る。
(2)予約が成功すると、ホテル22から旅行代理店21にOKの返答を送る。
(3)旅行代理店21のサーバから鉄道会社23のサーバに指定券の予約リクエストを送る。
(4)予約が成功すると、鉄道会社23から旅行代理店21にOKの返答を送る。
(5)旅行代理店21のサーバから航空会社24のサーバに座席の予約リクエストを送る。
(6)座席が取れない場合、航空会社24から旅行代理店21にNGの返答を送る。
(7)この場合、補償トランザクションとして、旅行代理店21のサーバからホテル22のサーバにキャンセルのリクエストを送る。
(8)同時に、旅行代理店21のサーバから鉄道会社23のサーバにキャンセルのリクエストを送る。
【0063】
上記のようにユーザからの予約リクエストに応じて、予約サービスを実行し、希望に適った予約がなかった場合は代替案を提示する処理によれば、ユーザ端末の表示画面には、予約リクエスト送信時及び処理結果回答時に、次のような表示がなされる。
【0064】
例えば、ユーザが金沢から東京・赤坂に出張し1泊したい場合は、図12に示すように、ユーザ端末から出発日、到着時間、帰着日、出発時間、出発地、目的地、交通手段、宿泊希望地、費用の各希望条件を入力すると、予約リクエストの内容が、図12の左側の画面に示すように表示される。この内容で、予約リクエストがコーディネートサーバに送信され、希望の予約サービスを提供するエージェントサーバでの処理により、条件符合(予約OK)の場合は、予約処理の結果が、図12の右上の画面に示すように表示され、条件不符合(例えば、帰りの航空便予約がNG)の場合は、OKとなった予約と共にNGとなった予約の代替案が、図12の右下の画面に示すように表示される。これにより、ユーザは代替案を直ちに選択できる。
【0065】
最後に、図1のシステムでは、ネットワークを介して通信するクライアント端末やXML Webサービスを提供するサーバの間の通信を高速化するための手段(「高速通信コンポーネント」と称する)を、クライアント端末及び各サーバに設けている。高速通信コンポーネントは、XML Webサービス実行のために必要なファイルやデータを圧縮、分割して送信する機能と、他から受信した分割ファイル等を結合、解凍してXML Webサービス処理を実行する機能とを備えたソフトウェアから成る。
【0066】
各サーバ又はクライアント端末は、この高速通信コンポーネントにより、図13に示すように、(1) XML Webサービス呼出し手順を圧縮し、(2) 分割し、(3) 分割した個々の情報を同時にネットワークを介して送信する。また、他のサーバからネットワークを介して、(4) 分割された情報を受信すると、(5) それらを結合し、(6) 解凍して、XML Webサービス処理を実行する。
【0067】
上記高速通信コンポーネントによれば、多数のリスエストを効率よく処理することができ、XML Webサービスのレベル向上に大きく寄与する。
【0068】
以上、本発明の実施の形態として、旅行代理店としてのサービスを行うシステムについて説明したが、本発明はこれに限らず、複数XML Webサービスを提供するシステムに適用できる。
【図面の簡単な説明】
【0069】
【図1】本発明の技術を適用した複数XML Webサービス提供システムの構成図。
【図2】コーディネートサーバから各クライアント端末にクライアントエンジンがダウンロードされることを示す図。
【図3】クライアント端末からの処理要求に応じてWebサービス処理を実行し、結果を回答するサーバエンジンを示す図。
【図4】ネットワークを介して通信する各クライアント端末とコーディネートサーバとを示す図。
【図5】ユーザ端末からインターネットを介して各Webサイトにアクセスし各々予約をする場合の説明図。
【図6】サーバエンジンを備えたコーディネートサーバが旅行代理店の役割を果たすシステムの構成図。
【図7】旅行代理店として複数の異なるXML Webサービスを仲介するシステムの構成図。
【図8】予約処理の結果によりキャンセル処理を行うシステムの構成図。
【図9】コーディネートサーバとエージェントサーバによる複数XML Webサービスの処理手順を示すフローチャート。
【図10】WebサービストランザクションLOGの例を示す図。
【図11】旅行代理店からホテルや各交通機関への予約サービスを行うシステムの構成図。
【図12】予約サービス処理によりユーザ端末の画面に表示される内容の例を示す図。
【図13】高速通信コンポーネントによる信号処理手順を示す図。
【符号の説明】
【0070】
1…クライアント端末、2…ネットワーク、3…コーディネートサーバ、4a,4b,4c…エージェントサーバ、11…ユーザ端末、12…インターネット、13a,13b,13c…Webサイト、21…旅行代理店、22…ホテル、23…鉄道会社、24…航空会社。
【技術分野】
【0001】
本発明は、複数XML Webサービスの処理全体に対して、1トランザクションとして管理し、完全性を保証するXML Webサービスを実現するための情報処理方法及び装置に関する。
【背景技術】
【0002】
企業等での業務用コンピュータシステムを構築するための手段として、嘗ては大型汎用機で全処理を行うホスト集中型システムが主流であったが、近年のパーソナルコンピュータ(PC)及びワークステーションの高性能・低価格化により、機能の一部をクライアントPCに持たせ、サーバと協調して稼働するクライアント・サーバ型システム(以下「C/Sシステム」という)が主流となってきた。
【0003】
C/Sシステムは開放系技術を用いているため、各メーカ独自の仕様であったホスト集中型システムと比較して非常に少ない初期投資で構築できるという大きな利点を有し、ホスト集中型システムにとって代わると思われたが、クライアント側にもソフトウェアを導入しなければならない等の理由により、メンテナンス費用も含めた総費用(TCO)の点で、ホスト集中型とあまり変わらないことが判明してきた。
【0004】
このC/SシステムのTCO増大という問題を解決するため、最近では、オペレーションシステム(OS)に標準で搭載されているインターネットブラウザを使用した3層モデルというものが提案された。これは、「ブラウザ」と称されるとおり閲覧する(ブラウズ)には適しているが、業務処理システムのように入力が主となるものには適しておらず、帳票印刷のような定型フォーマットに印刷する用途にも適していない。また、ネットワーク接続を前提としているため、インターネットに接続できない環境では使用できない等の理由により、企業情報システムとして、ホスト集中型システムやC/Sシステムを完全に置き換えるまでには至っていない。
【0005】
今後は分散環境の発展に伴って、複数のサーバにまたがる分散処理に対し完全性を保証することが要求される。そのためには、通信エラーやサーバのダウン等により、いずれかの処理が実行できなかった場合に、代替処理ができるサーバを探して実行するか、或いは実行済みの処理(例えば、後述のXML Webサービス)に対してキャンセル処理を行うことで処理自体なかったことにするかという複雑な処理を行わなければならない。
【0006】
ここで、XML Webサービスとは、例えば、下記特許文献1に示されるように、コンピュータシステムで提供されるサービスであって、インターネット上で扱うデータを記述するための新しいデータフォーマット言語であるXML(eXtensible Markup Language)を用いて記述されるものである。XMLによれば、記述された情報に対して「タグ」という独自の意味づけを定義することができるため、プログラムからの操作が容易であり、XML WebサービスのLOGや動的画面を描画するための記述言語としてXMLが使用される。
【0007】
近年のインターネットの普及により24時間365日、場所を問わずに商品を購入できるようになったが、現状のWebサイトは、既存の商売の仕組みをそのままインターネット上に展開したものに過ぎない。すなわち、現在殆どのWebサイトは人間に向かって配信するように設計されている。このため、例えば、旅行や出張に必要な手配をインターネットを用いて行う際には、航空会社や鉄道などの交通機関のWebサイトにアクセスして航空券や乗車券を予約すること、及びホテルのサイトにアクセスして宿泊予約をするというのが通常である。ここで、ホテルが満室なら別ホテルを検索しているなど、顧客自身が旅行代理店の役割を果たしており、顧客の利便性の追及には至っていない。
【0008】
上記のように、現在Webサイトの対象は基本的に人間であるが、今後、XML Webサービスを用いた「次世代Webサイト」を構築すると、Webサイト同士すなわちコンピュータ同士が自立的に結合して連係処理を行うことで、顧客に対するワンストップサービスの提供が可能になり、顧客の利便性がより良くなることが期待される。
【0009】
一方、関連する複数の処理を一つの処理単位としてまとめる「トランザクション」という手法が知られている。これは、例えば金融機関のコンピュータシステムにおける入出金処理のように、一連の作業を全体として一つの処理として管理するために用いる。このトランザクションとして管理された処理は、「すべて成功」か「すべて失敗」のいずれかであることが保証されなければならない。例えば、資金移動システムをコンピュータで処理する場合、出金処理と入金処理は「どちらも成功」か「どちらも失敗」のどちらかであることが要求される。「出金に成功して入金に失敗」すると、出金された資金が宙に浮いてしまうからである。このような場合に、出金と入金をまとめて1つのトランザクションとして管理し、どちらか一方が失敗したら他方も失敗させ、どちらも成功したときに初めて全体を成功と評価するのが「トランザクション処理」である。
【0010】
この考え方を応用し、関連する複数のXML Webサービスを一連の作業として全体として一つの処理としたものを、「複数XML Webサービストランザクション」と称する。
【0011】
【特許文献1】特開2004−295898号公報
【発明の開示】
【発明が解決しようとする課題】
【0012】
従来の技術では、複数のXML Webサービスに跨って完全性を保証するトランザクションを実現する技術は確立されていない。このため、複数XML Webサービスを1トランザクションとして保証し得る手段は提供されていない。
【0013】
本発明の目的は、従来技術の問題点を解決するシステムの構築において基礎となる、複数XML Webサービスの運用に必要なトランザクションの完全性を保証できる手段を提供することである。
【課題を解決するための手段】
【0014】
本発明は、複数XML Webサービスの呼出し及び実行処理を一つのトランザクションとして捉え、そのトランザクションに対して完全性を保証する情報処理方法及び装置を提供する。
【0015】
本発明の方法は、インターネット上で利用可能な複数XML Webサービスを利用者に提供するための情報処理方法であって、前記XML Webサービスを実行したとき、キャンセル時に発行する「戻し」のSQL又はパラメータを生成し保存するステップ、及び「戻し」が発生した場合、記録された戻しのSQLやパラメータを用いて、トランザクション自体を取り消すステップを含むことを特徴とする。
【0016】
本発明の装置は、インターネット上で利用可能なXML Webサービスに関する情報を有する複数のサービス情報提供部から情報の提供を受ける情報処理装置であって、前記複数のサービス情報提供部に対して各々のXML Webサービスを呼び出すとき、一連の処理をキャンセルするための戻しSQL又はパラメータを生成する手段と、いずれかのXML Webサービスが実行付加の場合に前記戻しSQL又はパラメータにより前記一連の処理をキャンセルする手段とを備えたことを特徴とする。
【0017】
上記のように、本発明では、いずれかのXML Webサービスをキャンセルすることが必要になった場合に備えて、XML Webサービスを実行したときに、キャンセル時に発行する「戻し」のSQL (Structured Query Language) やパラメータを自動生成して保存しておく。そして、「戻し」が発生した場合、記録された戻しのSQLやパラメータを使用することにより、トランザクション自体を取り消すことが可能となり、処理全体に対して完全性が保証される。
【0018】
ここで、SQLは多くの場合、RDB(リレーショナルデータベース)に格納されている予約情報や顧客情報などのデータを作成・変更・削除するための標準言語として用いられるものであり、上記のXML Webサービス提供側にSQLで記述された命令を受け付ける口を設けることにより、データベースに格納されたデータの自由な操作が可能になる。
【0019】
また、SQLを使用すれば、自由にデータの操作が可能になる反面、悪意のあるユーザがSQL命令を発行すると、データの改ざんや消去などが行われてしまうので、SQLでの呼び出しを許さない場合も想定される。そこで、XML Webサービスを呼び出す際にSQLでなく、予約なら1、取消しなら0というようにパラメータで呼び出すことも可能とする。
【発明の効果】
【0020】
本発明によれば、複数のXML Webサービスにおいて、全てのXML Webサービスの実行がOKとなった時点で呼び出し元に成功として返す一方、XML Webサービスがどれか一つでもエラーになった場合は、成功したXML Webサービスに対してキャンセル処理を行い、トランザクション自体をなかったことにする。このようなトランザクション環境を構築することにより、インターネットにおいて通信エラーのためXML Webサービスの実行が失敗するといった状況にも対処することができる。
【0021】
上記のように複数のXML Webサービスを1トランザクションとして実現することで、顧客に対するワンストップサービスの実現が可能となり、顧客は様々な利益を享受できる。また、複数のXML Webサービスが仲介する新しいビジネス形態等、様々な利用が期待される。また、通信回線としての専用線やIP−VPN、広域LAN等と比較して安全性や品質が劣るインターネットを用いるコンピュータシステムにおいて、本発明により処理全体の完全性が保証される。
【0022】
本発明によれば、各Webサイト同士が自立的に連係処理する仕組みを付与することで、顧客に対するワンストップサービスの実現が可能になる。その仕組みによれば、例えば、顧客が旅行代理店のWebサイトにアクセスして、いつ、どういう目的で、どこへ行きたい、というような漠然とした情報を与えると、顧客の趣味趣向に応じ、必要なWebサイトにアクセスし予約処理を行えるようになる。もし満席や満室の際でも別のWebサイトを検索し、代替案を出してくれるということが可能になり、ユーザにとって利便性は飛躍的に向上する。
【発明を実施するための最良の形態】
【0023】
図1は、本発明の技術を適用した複数XML Webサービスを提供するシステムの構成例を示す図である。
【0024】
このシステムは、本サービスを利用するユーザ側のクライアント端末(PC)1からネットワーク(例えばインターネット)2を介して接続され、複数XML Webサービスを仲介するサーバ(以下「コーディネートサーバ」という)3と、サービス提供者側の複数のサーバ(以下「エージェントサーバ」という)4a,4b,4c・・・とで構成されている。
【0025】
クライアント端末1はクライアントエンジン、各サーバはサーバエンジンをそれぞれ備える。この2種のエンジンは、コンピュータプログラムから成り、クライアント端末又は各サーバを構成するコンピュータに格納される。
【0026】
プログラムは、種々の要素の組み合わせにより、ユーザに対してサービスを提供するものである。そこで、このような要素を用意して、各要素の基本的な機能を予め規定しておき、それらの要素を機能させる仕組み(エンジン)を配置することで、現状のプログラムと同等の動作を実現することが考えられる。
【0027】
上記エンジン自体を製作するためのプログラミング言語は何でもよく、設定を定義するXMLデータをエンジンの言語に対応させるためにXSL (eXtensible Stylesheet Language) を使用し、プログラミング言語の使用の違いを吸収する。これにより、プログラミング言語ごとにエンジンとXSLのみを作成すれば、あらゆる環境でこの仕組みが実現できる。
【0028】
サーバエンジンは、図2に示すように、クライアント端末1からの処理要求に応じて、サーバ上のWebサービス処理を実行し、結果を回答する。これにより、クライアント端末以外で行う処理をコンピュータ同士が自立的にやり取りして分散処理を実現するXML Webサービスを動的に生成し、複数のXML Webサービスに対して整合性を保った処理環境(トランザクション環境)を提供できる。
【0029】
クライアントエンジンは、従来のWebアプリケーションでは不得意な、表現力に乏しいGUI環境を大きく改善するものである。詳細には、次のような機能を有する。
【0030】
通常のクライアント画面はコンパイルしたもの、つまり静的な画面というのが一般的であるが、上記クライアントエンジンでは、画面構成情報からイベント処理等の全てをXMLと呼ばれるタグ言語にて記述し、サーバ側で実行されるXML WebサービスによりXMLで記述された画面構成情報をXML Webサービスから受け取り、その内容を解釈して画面上に動的に描画する。このため、非常に柔軟で表現力に富んだ画面になる一方で、そのやり取りされるXMLの情報量は相当のものになる。
【0031】
また、クライアントエンジンでは、画面構成情報からイベント処理など全てをXMLと呼ばれるタグ言語にて記述し、その定義情報から、画面表示の各要素(部品)の表示位置(X,Y座標)や基礎的な表示状態などを動的に再現する。更に、その動作方法及び手順についても、XMLを用いた定義情報から取得して動作させる。これにより、プログラミング作業そのものが変革される。すなわち、プログラマは、プログラムコードを記述するのではなく、プログラムの見栄えや振る舞いに思考の中心を移すことができ、新しいプログラム制作が実現することとなる。
【0032】
クライアントエンジンは、図3に示すように、コーディネートサーバ3から複数のクライアント端末1a,1b,1c・・・にそれぞれダウンロードされる。
【0033】
従って、図4に示すように、コーディネートサーバ3と各種クライアント端末1a,1b,1c・・・との間では次の動作が行われる。
(1)コーディネートサーバ3からクライアントエンジン送信(配布)
(2)クライアント端末1でクライアントアプリケーションの生成
(3)クライアント端末1からWebサービス(予約など)要求
(4)コーディネートサーバ3からエージェントサーバ4へWebサービス呼出し及び実行
(5)エージェントサーバ4からのWebサービス実行処理結果をクライアント側へ送信。
【0034】
図1のシステムは、サーバエンジンにより、複数XML Webサービスに対して完全性を保証する仕組みを構築している。すなわち、複数Webサービストランザクションにより、顧客に対するワンストップサービスを実現させるため各WebサイトにXML Webサービスという自立的に動くエージェントサーバを配置し、そのエージェントにて空席状況の確認や予約処理などを行うこと、及び各エージェントを統括する仕組みが提供される。
【0035】
例えば、1泊2日で地方から東京への出張の手配をする状況を考えてみると、交通手段の確保と宿泊先の確保が最低限必要であり、そのいずれか一つでも確保できなかった場合は、出張手配としては成立しない。これを人間の手を介さずにコンピュータで処理を完結させるためには、次のような仕組みが必要である。
(1) Webサイト(航空会社、ホテル等)で提供するXML Webサービスをコーディネートする機能。
(2) 顧客に対して完全な状態で予約を提供することは勿論、各Webサイトにて存在しない予約が入ることを避けるために、いずれかの予約が成立しなかった場合は予約処理自体をなかったことにすることで、取引全体に対して完全性を提供するための仕組み。
【0036】
図1のシステムは、例えば、一般ユーザが旅行や出張に必要な手配をする場合、図5に示すように、ユーザ自身が携帯電話やパソコンなどの端末11からインターネット12を介して、航空会社や鉄道などの交通機関、宿泊したいホテルや旅館及び観光地の施設などのWebサイト13a,13b,13cにアクセスして各々予約をするといった手間を解消するため、図6に示すように、上記サーバエンジンを備えたコーディネートサーバ3が旅行代理店の役割を果たすシステムとして利用できる。図6のシステム構成では、各Webサイト13a,13b,13cを運営する事業者に、図1の各エージェントサーバ4a,4b,4cが設置される。
【0037】
旅行代理店としてのXML Webサービスは、複数の異なるXML Webサービスを仲介するものと考えられる。この場合、システムは、図7に示すように、ユーザ端末11からの予約リクエストに応じて予約サービスを仲介するコーディネートサーバ3と、ホテル予約、レンタカー予約、航空券予約、その他の予約サービスを提供するエージェントサーバ4a,4b,4c,4dと、ユーザ端末11とコーディネートサーバ3の間及びコーディネートサーバ3と各エージェントサーバ4a,4b,4c,4dの間をそれぞれ接続するインターネット(図示省略)とで構成される。コーディネートサーバ3は、変更内容をXMLで書き込むためのメモリ31を備えている。
【0038】
このシステムでは、コーディネートサーバ3は、ユーザ端末11から予約リクエストを受けると、それに応じた予約サービスを実行するエージェントサーバ4a,4b,4c又は4dへ予約リクエストを送り、そのエージェントサーバから予約OKの返答を受けると、返答をユーザ端末11へ送る。ユーザ端末11からの予約リクエストに対し、その要求に係る全ての予約処理が完了するまで予約リクエストを受けないようにサーバをロックすることとなる。しかしながら、旅行代理店としてのXML Webサービスでは、従来のトランザクション(コンピュータでの処理)のように全ての処理が完了するまでサーバのコンピュータ資源をロックすることは困難である。
【0039】
そこで、いずれかの予約処理の結果が“NG”の場合(例えば、ユーザの希望する交通機関が満席である場合)は、代替策を検索するとしても、以下のキャンセル処理を行うことで処理自体をなかったことにすれば、トランザクションの完全性を保証できる。すなわち、図8に示すように、コーディネートサーバ3は、ユーザ端末11からの予約リクエストにより旅行代理店XML Webサービスを起動し、予約リクエストをエージェントサーバ4a,4b,4c,4dに送ることで、予約に必要なXML Webサービスを呼び出す。その際、キャンセル処理のための戻しロジック(「戻し」のSQL)を自動生成し、LOGとしてメモリ31に保管しておく。そして、各エージェントサーバでの実行結果を集計、判定し、全ての予約処理がOK(成功)ならば、トランザクションは終了し、OKの返答をユーザ端末11へ送る。他方、いずれかの処理がNG(不成功)ならば、XML Webサービス・キャンセル処理を行い、成功したXML Webサービスに対して実行しなかったことにする。そして、予約不成功の返答をユーザ端末11に送る。
【0040】
図9は、コーディネートサーバとエージェントサーバによる複数XML Webサービスの処理手順を示すフローチャートである。
【0041】
初めにコーディネートサーバは、予約リクエストの有無をチェックし(ST1)、予約リクエストがあるとき、XML Webサービスを呼び出し、その予約リクエストに応じたサービスの種類(範囲)を確定する(ST2)。同時に、「戻し」のSQLメッセージ又はパラメータを自動生成して、メモリ31に保存する(ST3)。
【0042】
例えば、SQLメッセージの場合は、insert文ならdelete文を、update文なら元のデータを戻すため、現在のデータをselectで取得し、「戻し」のためのupdate文を自動生成してLOGとして格納する。「戻し」のSQLについては、後で具体例を説明する。
【0043】
他方、パラメータ受け渡しの場合は、実行したXML Webサービスからキャンセル処理のための「戻し」パラメータを取得してLOGとして格納する。
【0044】
次に、上記で確定した範囲のXML Webサービスを呼び出す(ST4)。すなわち、当該XML Webサービスを実行するエージェントサーバに予約リクエストを送信する。
【0045】
各エージェントサーバでは、受信した予約リクエストに応じて、所定のXML Webサービス(予約)処理を実行し(ST11)、その処理結果をコーディネートサーバに送信する(ST12)。
【0046】
コーディネートサーバでは、受信したサービス処理結果をメモリに格納し(ST5)、処理結果が全てOKか否かを判定する(ST6)。その結果“Yes”であれば、予約リクエストを送ったユーザ端末に「予約成功」の結果通知を送信して(ST7)、サービス終了となる。
【0047】
一方、ST6の判定結果が“No”、すなわち複数XML WebサービスのどれかがNGの場合は、代替案の有無すなわち他のサービスの予約が可能かどうかをチェックし(ST8)、“Yes”であれば、代替案のXML Webサービスを呼び出す(ST9)。すなわち、そのXML Webサービスを実行するエージェントサーバに予約リクエストを送信する。
【0048】
当該エージェントサーバでは、受信した予約リクエストに応じて、その代替案サービス(予約)処理を実行し(ST13)、その処理結果をコーディネートサーバに送信する(ST14)。
【0049】
コーディネートサーバでは、受信した代替案サービス処理結果をメモリに格納し(ST5)、以下の手順を繰り返す。上記ST8の判定で“No”、すなわち代替案がない場合は、メモリ31に格納した「戻し」のSQLメッセージ又はパラメータを使用して、成功したXML Webサービスに対して実行しなかったことにするキャンセル呼出し指令を各エージェントサーバに送る(ST10)。
【0050】
各エージェントサーバでは、キャンセル呼出し指令に応じて、XML Webサービス(キャンセル)処理を実行し(ST15)、その処理結果をコーディネートサーバに送信する(ST16)。
【0051】
コーディネートサーバでは、予約リクエストを送ったユーザ端末に「予約不成功」の結果通知を送信して(ST7)、サービス終了となる。
【0052】
ここで、上記のようにサーバで自動生成されるSQLについて説明する。
【0053】
(1) レコードを追加するSQL(INSERT):
例えば、“INSERT 項目名A(ユニークキー),項目名B,項目名C, 項目名D FROM TABLE名”ならば、戻しのSQLとして、
DELETE FROM TABLE名WHERE 項目名A = '削除キー '
というSQLを自動生成する。キャンセル処理の際には、このSQLを実行する。
【0054】
(2) レコードを変更するSQL(UPDATE):
例えば、“UPDATE TABLE名 SET 項目名B=変更値 , 項目名C=変更値 , 項目名D=変更値 WHERE 項目名A=変更キー”のように、B,C,Dを変更するSQLを発行しようとする際には、
SELECT * FROM TABLE名WHERE 項目名 =変更キー
というSQLを発行して、事前に変更前の項目情報を取得する。そして、
“UPDATE TABLE名 SET 項目名B=変更値 , 項目名C=変更値 , 項目名D=変更値 WHERE 項目名A=変更キー”
というSQLを自動生成する。「戻し」が発生した場合は、このSQLを実行する。
【0055】
一例として、新規にホテルを予約したい場合を考える。その場合のSQLは、
“INSERT 予約番号,名前,宿泊日,泊数,部屋タイプ, FROM 予約テーブル”となる。
【0056】
この予約SQLの発行と同時に、予約自体を取り消す戻しSQLとして、
“DELETE FROM予約テーブルWHERE予約番号=予約番号”
を自動生成してLOGに格納する。
【0057】
その後、ホテルでの予約内容の変更が発生した場合は、
“SELECT * FROM予約テーブルWHERE予約番号=予約番号”
というSQLを発行して、事前に変更前の項目情報を取得しておく。そして、
“UPDATE 予約テーブル SET 名前=名前(変更前) , 宿泊日=宿泊日(変更前) , 泊数=泊数(変更前) , 部屋タイプ=部屋タイプ(変更前) WHERE 予約番号=予約番号(ユニークキー)”
というSQLを発行して、LOGに格納する。
【0058】
「戻し」が発生した場合は、上記SQLを実行することで、更新前のデータに戻すことが可能になる。
【0059】
図10は、WebサービストランザクションLOGの例を示す。LOG自体はXMLで記述し、プログラムにて扱いやすい形態とする。勿論、XMLでないデータフォーマットでも記述可能である。
【0060】
図のように、取引単位をトランザクションとし、「トランザクション名」として唯一固有の数字を割り振る(2行目)。そのトランザクションにて呼び出したXML Webサービス名を記述し(3行目)、自動生成したSQLもしくはパラメータと実行結果を記述する(4〜5行目)。他にも呼び出したXML Webサービスがあれば、同様に記述する(6行目以降)。
【0061】
サーバエンジンは、複数のXML Webサービスの実行状況をLOGに随時記録しながら、キャンセル時にはLOGを参照しながらキャンセル処理を発行する。これにより、複数XML Webサービスの実行に関して完全性を保障するトランザクション処理を実現している。
【0062】
上記のシステムによれば、図11に示すように、旅行代理店21にコーディネートサーバを設置し、予約を受け付けるホテル22、鉄道会社23、航空会社24に各エージェントサーバをそれぞれ設置することにより、旅行代理店からホテルや各交通機関の予約をとるサービスが提供される。それは、図9の処理手順に従って、例えば次のように行われる。
(1)旅行代理店21のサーバからホテル22のサーバに予約リクエストを送る。
(2)予約が成功すると、ホテル22から旅行代理店21にOKの返答を送る。
(3)旅行代理店21のサーバから鉄道会社23のサーバに指定券の予約リクエストを送る。
(4)予約が成功すると、鉄道会社23から旅行代理店21にOKの返答を送る。
(5)旅行代理店21のサーバから航空会社24のサーバに座席の予約リクエストを送る。
(6)座席が取れない場合、航空会社24から旅行代理店21にNGの返答を送る。
(7)この場合、補償トランザクションとして、旅行代理店21のサーバからホテル22のサーバにキャンセルのリクエストを送る。
(8)同時に、旅行代理店21のサーバから鉄道会社23のサーバにキャンセルのリクエストを送る。
【0063】
上記のようにユーザからの予約リクエストに応じて、予約サービスを実行し、希望に適った予約がなかった場合は代替案を提示する処理によれば、ユーザ端末の表示画面には、予約リクエスト送信時及び処理結果回答時に、次のような表示がなされる。
【0064】
例えば、ユーザが金沢から東京・赤坂に出張し1泊したい場合は、図12に示すように、ユーザ端末から出発日、到着時間、帰着日、出発時間、出発地、目的地、交通手段、宿泊希望地、費用の各希望条件を入力すると、予約リクエストの内容が、図12の左側の画面に示すように表示される。この内容で、予約リクエストがコーディネートサーバに送信され、希望の予約サービスを提供するエージェントサーバでの処理により、条件符合(予約OK)の場合は、予約処理の結果が、図12の右上の画面に示すように表示され、条件不符合(例えば、帰りの航空便予約がNG)の場合は、OKとなった予約と共にNGとなった予約の代替案が、図12の右下の画面に示すように表示される。これにより、ユーザは代替案を直ちに選択できる。
【0065】
最後に、図1のシステムでは、ネットワークを介して通信するクライアント端末やXML Webサービスを提供するサーバの間の通信を高速化するための手段(「高速通信コンポーネント」と称する)を、クライアント端末及び各サーバに設けている。高速通信コンポーネントは、XML Webサービス実行のために必要なファイルやデータを圧縮、分割して送信する機能と、他から受信した分割ファイル等を結合、解凍してXML Webサービス処理を実行する機能とを備えたソフトウェアから成る。
【0066】
各サーバ又はクライアント端末は、この高速通信コンポーネントにより、図13に示すように、(1) XML Webサービス呼出し手順を圧縮し、(2) 分割し、(3) 分割した個々の情報を同時にネットワークを介して送信する。また、他のサーバからネットワークを介して、(4) 分割された情報を受信すると、(5) それらを結合し、(6) 解凍して、XML Webサービス処理を実行する。
【0067】
上記高速通信コンポーネントによれば、多数のリスエストを効率よく処理することができ、XML Webサービスのレベル向上に大きく寄与する。
【0068】
以上、本発明の実施の形態として、旅行代理店としてのサービスを行うシステムについて説明したが、本発明はこれに限らず、複数XML Webサービスを提供するシステムに適用できる。
【図面の簡単な説明】
【0069】
【図1】本発明の技術を適用した複数XML Webサービス提供システムの構成図。
【図2】コーディネートサーバから各クライアント端末にクライアントエンジンがダウンロードされることを示す図。
【図3】クライアント端末からの処理要求に応じてWebサービス処理を実行し、結果を回答するサーバエンジンを示す図。
【図4】ネットワークを介して通信する各クライアント端末とコーディネートサーバとを示す図。
【図5】ユーザ端末からインターネットを介して各Webサイトにアクセスし各々予約をする場合の説明図。
【図6】サーバエンジンを備えたコーディネートサーバが旅行代理店の役割を果たすシステムの構成図。
【図7】旅行代理店として複数の異なるXML Webサービスを仲介するシステムの構成図。
【図8】予約処理の結果によりキャンセル処理を行うシステムの構成図。
【図9】コーディネートサーバとエージェントサーバによる複数XML Webサービスの処理手順を示すフローチャート。
【図10】WebサービストランザクションLOGの例を示す図。
【図11】旅行代理店からホテルや各交通機関への予約サービスを行うシステムの構成図。
【図12】予約サービス処理によりユーザ端末の画面に表示される内容の例を示す図。
【図13】高速通信コンポーネントによる信号処理手順を示す図。
【符号の説明】
【0070】
1…クライアント端末、2…ネットワーク、3…コーディネートサーバ、4a,4b,4c…エージェントサーバ、11…ユーザ端末、12…インターネット、13a,13b,13c…Webサイト、21…旅行代理店、22…ホテル、23…鉄道会社、24…航空会社。
【特許請求の範囲】
【請求項1】
インターネット上で利用可能な複数のXML Webサービスを利用者に提供するための情報処理方法において、
前記XML Webサービスを実行するとき、キャンセル時に発行する「戻し」のSQL又はパラメータを生成し保存するステップ、及び
「戻し」が発生した場合、記録された戻しのSQLやパラメータを用いて、トランザクション自体を取り消すステップ
を含むことを特徴とする情報処理方法。
【請求項2】
インターネット上で利用可能なXML Webサービスに関する情報を有する複数のサービス情報提供部から情報の提供を受ける情報処理装置であって、
前記複数のサービス情報提供部に対して各々のXML Webサービスを呼び出すとき、一連の処理をキャンセルするための戻しSQL又はパラメータを生成する手段と、
いずれかのXML Webサービスが実行不可の場合に前記戻しSQL又はパラメータにより前記一連の処理をキャンセルする手段と
を備えたことを特徴とする情報処理装置。
【請求項1】
インターネット上で利用可能な複数のXML Webサービスを利用者に提供するための情報処理方法において、
前記XML Webサービスを実行するとき、キャンセル時に発行する「戻し」のSQL又はパラメータを生成し保存するステップ、及び
「戻し」が発生した場合、記録された戻しのSQLやパラメータを用いて、トランザクション自体を取り消すステップ
を含むことを特徴とする情報処理方法。
【請求項2】
インターネット上で利用可能なXML Webサービスに関する情報を有する複数のサービス情報提供部から情報の提供を受ける情報処理装置であって、
前記複数のサービス情報提供部に対して各々のXML Webサービスを呼び出すとき、一連の処理をキャンセルするための戻しSQL又はパラメータを生成する手段と、
いずれかのXML Webサービスが実行不可の場合に前記戻しSQL又はパラメータにより前記一連の処理をキャンセルする手段と
を備えたことを特徴とする情報処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2006−185125(P2006−185125A)
【公開日】平成18年7月13日(2006.7.13)
【国際特許分類】
【出願番号】特願2004−377409(P2004−377409)
【出願日】平成16年12月27日(2004.12.27)
【出願人】(304037131)株式会社C−GRIP (18)
【Fターム(参考)】
【公開日】平成18年7月13日(2006.7.13)
【国際特許分類】
【出願日】平成16年12月27日(2004.12.27)
【出願人】(304037131)株式会社C−GRIP (18)
【Fターム(参考)】
[ Back to top ]