以下に、本願の開示するリクエスト処理プログラム、リクエスト処理装置及びリクエスト処理方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例では、ウェブブラウザとウェブサーバとの間の通信を中継する中継装置に適用した場合を示す。しかし、本実施例によりこの発明が限定されるものではなく、本発明は、中継装置以外であってもウェブサーバに送信するリクエストデータを処理する情報処理装置にも適用可能である。
[実施例2に係る中継装置の構成]
図2は、実施例2に係る中継装置の構成を示す機能ブロック図である。図2に示すように、中継装置1Aは、制御部20及び記憶部30を有する。なお、中継装置1Aは、実施例1の中継装置1の一例である。
制御部20は、リクエスト記録部21と、リクエスト送信部22と、レスポンス送信部23と、レスポンス記録部24と、処理比較解析部25と、問合せ部26とを有する。さらに、処理比較解析部25は、抽出部25a及び汎用処理生成部25bを有する。なお、抽出部25aは、実施例1の抽出部12の一例であり、問合せ部26は、実施例1の問合せ部13の一例である。また、制御部20は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの集積回路またはCPU(Central Processing Unit)やMPU(Micro Processing Unit)などの電子回路である。
記憶部30は、通信記録テーブル31及び汎用処理テーブル32を有する。なお、通信記録テーブル31は、実施例1の記憶部11の一例である。記憶部30は、例えば、RAM(Random Access Memory)、フラッシュメモリ(flash memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
リクエスト記録部21は、所定の業務の一連の操作毎にウェブブラウザから送信されたリクエストデータを順次通信記録テーブル31に記録する。ここで、所定の業務とは、例えば、在庫検索に関する業務であったり、出張旅費の精算に関する業務であったりするが、ウェブブラウザに一連の操作画面を順次遷移させる業務であってウェブブラウザに何らかの情報を入力させる業務であれば良い。リクエスト送信部22は、ウェブブラウザから送信されたリクエストデータをウェブサーバに送信する。
レスポンス記録部24は、ウェブサーバから送信された、リクエストデータに対応するレスポンスデータを順次通信記録テーブル31に記録する。レスポンス送信部23は、ウェブサーバから送信された、リクエストデータに対応するレスポンスデータをウェブブラウザに送信する。このとき、レスポンス送信部23は、送信対象のレスポンスデータに対するリクエストデータが中継装置1Aを経由するように、当該レスポンスデータに該当するスクリプトを埋め込む。これにより、ウェブブラウザ側の環境に対して特殊なソフトウェアが組み込まれなくても、レスポンス記録部24は、ウェブブラウザからのリクエストデータを記録することができることとなる。
ここで、通信記録テーブル31のデータ構造について、図3を参照しながら説明する。図3は、通信記録テーブル31のデータ構造の一例を示す図である。図3に示すように、通信記録テーブル31は、識別番号31a、処理識別子31b、ユーザ識別子31c及びURL31d毎に、リクエストデータ31e及びレスポンスデータ31fを対応付けて記憶する。処理識別子31bは、業務に対応する処理識別子を示す。ユーザ識別子31cは、ユーザに対応する識別子を示す。URL31dは、ウェブサーバ3で実行すべき処理のURLを示す。リクエストデータ31eは、ユーザ識別子31cのユーザからURL31dにリクエストした場合のリクエストデータを示す。レスポンスデータ31fは、リクエストに対する、ユーザ識別子31cのユーザへのレスポンスデータを示す。
図2に戻って、抽出部25aは、通信記録テーブル31に記憶された同一操作のリクエストデータを比較し、リクエストデータに含まれるリクエストパラメータについて、差分を取得する。具体的には、抽出部25aは、通信記録テーブル31から処理識別子31bが同一且つURL31dが同一であってユーザ識別子31cが異なる複数のリクエストデータを読み出す。また、抽出部25aは、読み出した複数のリクエストデータを比較し、同じリクエストパラメータに差分がある、すなわち同じリクエストパラメータに異なる値があるリクエストパラメータを取得する。
なお、抽出部25aは、処理識別子31bが同一且つURL31dが同一であってユーザ識別子31cが異なる複数のリクエストデータを比較し、リクエストパラメータに差分がない場合には、当該リクエストデータの処理が同一処理であると判定する。
また、抽出部25aは、リクエストパラメータに差分がある場合には、当該リクエストパラメータの値が直前のレスポンスデータに含まれるか否かを判定する。具体的には、抽出部25aは、取得された、差分のあるリクエストパラメータを含むリクエストデータの直前のレスポンスデータを、通信記録テーブル31から読み出す。また、抽出部25aは、差分のあるリクエストパラメータの値が直前のレスポンスデータに含まれているか否かを判定する。そして、抽出部25aは、差分のあるリクエストパラメータの値が直前のレスポンスデータに含まれていないと判定する場合には、ユーザに問い合わせるパラメータ(以降、「問合せパラメータ」という。)であるとして、当該リクエストパラメータを抽出する。一方、抽出部25aは、差分のあるリクエストパラメータの値が直前のレスポンスデータに含まれていると判定する場合には、当該リクエストパラメータの値がウェブサーバによって作成されたものであると判定する。
例えば、所定の業務を在庫管理業務であるとして、抽出部25aがユーザAとユーザBの通信記録を用いて、問合せパラメータであるリクエストパラメータを抽出する具体例について、図4〜図7を参照しながら説明する。図4は、ユーザAのリクエストデータの具体例であり、図5は、ユーザAのレスポンスデータの具体例であり、図6は、ユーザBのリクエストデータの具体例であり、図7は、ユーザBのレスポンスデータの具体例である。
図4(A)は、在庫管理業務のウェブブラウザで表される画面の遷移である。図4(B)は、中継装置1Aに対して各画面から送信されたリクエストデータであって中継装置1Aのリクエスト記録部21によって通信記録テーブル31に記録されたリクエストデータである。図4(A)に示すように、ウェブブラウザは、ログイン画面g1、認証確認画面g2、メニュー画面g3、商品番号入力画面g4及び検索結果画面g5を順に表示する。
ここで、図示しない初期画面から送信されたリクエストデータが、r1に示されるデータとなる。ログイン画面g1から送信されたリクエストデータが、r2に示されるデータである。ここでは、リクエストパラメータとして、「USERID」に関するもの(p1)と「PASSWORD」に関するもの(p2)がある。そして、「User1」が「USERID」に関するリクエストパラメータの値となり、「Password1」が「PASSWORD」に関するリクエストパラメータの値となる。
認証確認画面g2から送信されたリクエストデータが、r3に示されるデータである。ここでは、リクエストパラメータとして、「identify」に関するもの(p3)がある。そして、「U0001」が「identify」に関するリクエストパラメータの値となる。メニュー画面g3から送信されたリクエストデータが、r4に示されるデータである。ここでは、リクエストパラメータがない。商品番号入力画面g4から送信されたリクエストデータが、r5に示されるデータである。ここでは、リクエストパラメータとして、「code」に関するもの(p4)がある。そして、「A001」が「code」に関するリクエストパラメータの値となる。
図5に示すように、各画面g1〜g5を表示するレスポンスデータであって中継装置1Aのレスポンス記録部24によって通信記録テーブル31に記録されたレスポンスデータがある。ここでは、図5(A)がログイン画面g1のレスポンスデータh1であり、図5(B)が認証確認画面g2のレスポンスデータh2であり、図5(C)がメニュー画面g3のレスポンスデータh3である。さらに、図5(D)が商品番号入力画面g4のレスポンスデータh4であり、図5(E)が検索結果画面g5のレスポンスデータh5である。
図6(A)に示すように、ユーザBについての在庫管理業務の画面遷移は、ユーザAについての図4(A)と同様であるので、この説明を省略する。また、図6(B)に示すように、ユーザBについての在庫管理業務のリクエストデータが中継装置1Aの通信記録テーブル31に記録される。また、図7に示すように、ユーザBについての在庫管理業務のレスポンスデータが中継装置1Aの通信記録テーブル31に記録される。
このような前提のもと、抽出部25aは、通信記録テーブル31に記憶された同一操作のリクエストデータを比較し、リクエストデータに含まれるリクエストパラメータについて、差分を取得する。ここでは、抽出部25aは、ユーザAとユーザBとの同一操作r2のリクエストデータを比較すると、ユーザAのリクエストパラメータp1とユーザBのリクエストパラメータp11とが異なるので、リクエストパラメータp1を取得する。また、抽出部25aは、ユーザAのリクエストパラメータp2とユーザBのリクエストパラメータp12とが異なるので、リクエストパラメータp2を取得する。また、抽出部25aは、ユーザAとユーザBとの同一操作r3のリクエストデータを比較すると、ユーザAのリクエストパラメータp3とユーザBのリクエストパラメータp13とが異なるので、リクエストパラメータp3を取得する。さらに、抽出部25aは、ユーザAとユーザBとの同一操作r5のリクエストデータを比較すると、ユーザAのリクエストパラメータp4とユーザBのリクエストパラメータp14とが異なるので、リクエストパラメータp4を取得する。
また、抽出部25aは、リクエストパラメータに差分がある場合には、当該リクエストパラメータの値が直前のレスポンスデータに含まれるか否かを判定する。ここでは、ユーザAのリクエストデータr2のリクエストパラメータp1の値が「User1」であり、この値がユーザAのリクエストデータr2の直前のレスポンスデータh1に含まれていない。したがって、抽出部25aは、リクエストパラメータp1がユーザに問い合わせる問合せパラメータであると判定し、このリクエストパラメータp1を抽出する。同様に、抽出部25aは、リクエストパラメータp2がユーザに問い合わせる問合せパラメータであると判定し、このリクエストパラメータp2を抽出する。さらに、抽出部25aは、リクエストパラメータp4がユーザに問い合わせる問合せパラメータであると判定し、このリクエストパラメータp4を抽出する。一方、ユーザAのリクエストデータr3のリクエストパラメータp3の値が「U0001」であり、この値がユーザAのリクエストデータr3の直前のレスポンスデータh2に含まれている。したがって、抽出部25aは、リクエストパラメータp3がウェブサーバによって作成されたものであると判定し、当該リクエストパラメータを抽出しないことになる。
図2に戻って、汎用処理生成部25bは、同一の業務において一連の処理が汎用化される業務リクエストを作成する。具体的には、汎用処理生成部25bは、抽出部25aによってリクエストパラメータが抽出された場合には、当該リクエストパラメータの値を例えば変数に置き換えたリクエストデータを、汎用化した処理として生成する。また、汎用処理生成部25bは、抽出部25aによってリクエストパラメータの値がウェブサーバによって作成されるものであると判定された場合には、当該リクエストパラメータの値をXPathで表したリクエストデータを、汎用化した処理として生成する。
ここで、リクエストパラメータの値がウェブサーバによって作成される場合に、リクエストパラメータの値に汎用化して表されるXPathを取得する例について、図8を参照しながら説明する。図8は、XPathの取得例を説明する図である。図8(A)に示すように、レスポンスデータR0のTDタグのうち2番目のTDタグr0のXPathを取得する場合であるものとする。この場合には、汎用処理生成部25bは、レスポンスデータR0の一番上の節「HTML」から下に向けて順に節を辿る。そして、図8(B)に示すように、汎用処理生成部25bは、TDタグr0のXPathを「/HTML/BODY/TABLE/TR/TD[2]」であるとして取得する。
図2に戻って、汎用処理生成部25bは、抽出部25aによって同一処理であると判定された場合には、同一処理であると判定されたリクエストデータそのものを、汎用化した処理とする。そして、汎用処理生成部25bは、汎用化した処理を用いて、業務の順番どおりになるように業務リクエストを生成する。すなわち、生成された業務リクエストは、所定の業務における汎用化されたリクエストの処理フローとなる。そして、汎用処理生成部25bは、生成した業務リクエストを汎用処理テーブル32に記録する。
ここで、汎用処理生成部25bによって生成された業務リクエストの具体例について説明する。図9は、業務リクエストの具体例を説明する図である。図9に示すように、「USERID」と「PASSWORD」と「code」の各リクエストパラメータは、ユーザに問い合わせる問合せパラメータであるので、その値が変数となっている。また、「identify」のリクエストパラメータは、ウェブサーバによって作成されるものであるので、XPathによって表されている。
次に、業務リクエストを記憶する汎用処理テーブル32のデータ構造について、図10を参照しながら説明する。図10は、汎用処理テーブル32のデータ構造の一例を示す図である。図10に示すように、汎用処理テーブル32は、処理ID32a、順序番号32b及びURL32c毎にリクエストデータ32dを対応付けて記憶する。処理ID32aは、業務に相当する処理IDを示す。順序番号32bは、処理ID32aに相当する業務における処理がされる順序を示す。URL32cは、ウェブサーバ3で実行すべき処理のURLを示す。リクエストデータ32dは、業務リクエストのそれぞれの処理フローであるリクエストデータを示す。なお、リクエストデータ32dは、汎用処理生成部25bによって作成される。
例えば、処理ID32aが「1」、処理番号32bが「2」、URL32cがログインの認証を依頼する「http://www.xxx.com/login/login.cgi」の場合、リクエストデータ32dは、ユーザID及びパスワードを含む。すなわち、リクエストデータ32dは、リクエストパラメータ「USERID」の値が変数「%%」d1に置き換わり、リクエストパラメータ「PASSWORD」の値が変数「%%」d2に置き換わる処理となっている。
図2に戻って、問合せ部26は、業務リクエストに含まれる問合せパラメータを、例えばユーザに対して問い合わせる。すなわち、問合せ部26は、業務リクエストに関わる業務の再現に先立って、問合せパラメータの具体的な内容をユーザに対して問い合わせる。例えば、問合せ部26は、業務リクエストに含まれる問合せパラメータの変数を空欄とし、実行ボタンが付いた問合せ画面のデータをユーザに対して送信する。すなわち、問合せ部26は、業務リクエストに含まれる問合せパラメータの変数部分を一度にユーザに問い合わせる。
ここで、問合せ画面の一例を、図11を参照しながら説明する。図11は、問合せ画面の一例を示す図である。図11に示すように、問合せパラメータがユーザIDに相当する「USER ID」t1、パスワードに相当する「PASSWORD」t2及びコードに相当する「code」t3である場合の例である。t0部分が、各問合せパラメータに対して具体的な内容を入力可能な領域となる。なお、問い合わせパラメータt1〜t3の各タイトル「USERID」、「PASSWORD」及び「code」は、各レスポンスデータの問い合わせパラメータから取得される。ただし、各タイトルは、レスポンスデータに限らず、リクエストデータの問い合わせパラメータから取得されるものとしても良い。
図2に戻って、問合せ部26は、業務リクエストに含まれるリクエストとユーザから送信された具体的な内容とを用い、業務リクエストを実行する。具体的には、問合せ部26は、ユーザから問合せパラメータの具体的な内容をリクエストとして受信し、業務リクエストの問合せパラメータの該当箇所に具体的な内容を埋め込む。そして、問合せ部26は、業務リクエストに含まれるリクエストデータを、順序番号32bの昇順に順次送信する。そして、問合せ部26は、一連のリクエストデータのうちの最後のリクエストに対する、ウェブサーバ3のレスポンスをユーザ端末に返信する。
例えば、問合せ部26がユーザから「USERID」に対する具体的な内容として「User1」を、「PASSWORD」に対する具体的な内容として「Password1」を、「code」に対する具体的な内容として「A001」を受信するものとする。この場合には、問合せ部26は、業務リクエストの「USERID」に関する問合せパラメータの該当箇所に「User1」を埋め込む。また、問合せ部26は、業務リクエストの「PASSWORD」に関する問合せパラメータの該当箇所に「Password1」を埋め込む。さらに、問合せ部26は、業務リクエストの「code」に関する問合せパラメータの該当箇所に「A001」を埋め込む。そして、問合せ部26は、それぞれの具体的な内容を埋め込んだ業務リクエストに含まれる一連のリクエストデータを、順次ウェブサーバ3に送信する。そして、問合せ部26は、業務リクエストに含まれる最後のリクエストデータに対する、ウェブサーバ3のレスポンス、ここでは「code」に対する検索結果をユーザ端末に返信する。
[実施例2に係る処理比較解析処理の手順]
次に、実施例2に係る処理比較解析処理の手順を、図12を参照して説明する。図12は、実施例2に係る処理比較解析処理の手順を示すフローチャートである。
まず、抽出部25aは、通信記録テーブル31に記憶されたレコードに、ユーザ識別子31cが異なるレコードであって処理識別子31bが同一であるレコードがあるか否かを判定する(ステップS21)。そして、処理識別子31bが同一であるレコードがないと判定された場合には(ステップS21;No)、抽出部25aは、同一操作のリクエストデータが複数存在しないと判定して、処理比較解析処理を終了する。一方、処理識別子31bが同一であるレコードがあると判定された場合には(ステップS21;Yes)、抽出部25aは、同一のURL31d毎にリクエストデータ31eのリクエストパラメータを比較する(ステップS22)。
そして、抽出部25aは、比較対象の複数のリクエストデータ31eに含まれるそれぞれのリクエストパラメータのパラメータ名及びパラメータ数が同じか否かを判定する(ステップS23)。そして、比較対象のそれぞれのリクエストパラメータのパラメータ名またはパラメータ数が同じでないと判定された場合には(ステップS23;No)、抽出部25aは、リクエストデータ31eの構成が同一でないと判定し、処理比較解析処理を終了する。
一方、比較対象のそれぞれのリクエストパラメータのパラメータ名及びパラメータ数が同じであると判定された場合には(ステップS23;Yes)、抽出部25aは、リクエストデータ31eの構成が同一であると判定する。そして、抽出部25aは、比較対象のそれぞれの同じリクエストパラメータに異なる値があるか否かを判定する(ステップS24)。そして、比較対象のそれぞれの同じリクエストパラメータに異なる値がない場合には(ステップS24;No)、抽出部25aは、当該リクエストデータ31eの処理が同一処理であると判定し、ステップS31に移行する。
一方、比較対象のそれぞれの同じリクエストパラメータに異なる値がある場合には(ステップS24;Yes)、抽出部25aは、それぞれの直前のレスポンスデータ31fから当該リクエストパラメータに対応するパラメータを探索する(ステップS25)。
そして、抽出部25aは、比較対象のそれぞれのリクエストパラメータの値がそれぞれの直前のレスポンスデータ31fから探索されたパラメータに含まれているか否かを判定する(ステップS26)。例えば、抽出部25aは、直前のレスポンスデータ31fから探索されたパラメータに値が設定されたことを意味する「value」があるか否かを判定する。すなわち、抽出部25aは、直前のレスポンスデータ31fのパラメータに「value」があれば、既にパラメータに値が設定されているので、リクエストパラメータの値が直前のレスポンスデータ31fのパラメータに含まれていることとなる。
そして、それぞれの直前のレスポンスデータ31fから探索されたパラメータに値が存在しないと判定された場合には(ステップS26;No)、抽出部25aは、これらリクエストパラメータがユーザに問い合わせる問合せパラメータであると判定する。そして、抽出部25aは、これらリクエストパラメータを抽出する。汎用処理生成部25bは、抽出した問合せパラメータの値を変数に置き換えたリクエストデータを生成し(ステップS27)、ステップS31に移行する。
一方、それぞれの直前のレスポンスデータ31fから探索されたパラメータに値が存在すると判定された場合には(ステップS26;Yes)、汎用処理生成部25bは、両方のパラメータの値を抽出するための「XPath」を取得する(ステップS28)。そして、汎用処理生成部25bは、両方のパラメータの「XPath」が同じか否かを判定する(ステップS29)。そして、両方のパラメータの「XPath」が同じであると判定された場合(ステップS29;Yes)、汎用処理生成部25bは、パラメータの値に、「XPath」を指定したリクエストデータを作成し(ステップS30)、ステップS31に移行する。一方、両方のパラメータの「XPath」が同じでないと判定された場合(ステップS29;No)、パラメータの値を変数化すべく、ステップS27に移行する。
続いて、汎用処理生成部25bは、作成したリクエストデータを汎用処理として汎用処理テーブル32に登録する(ステップS31)。すなわち、汎用処理生成部25bは、業務におけるリクエストの順番どおりになるように、業務リクエストを作成し、汎用処理テーブル32に登録する。なお、作成された業務リクエストは、所定の業務における汎用化されたリクエストの処理フローとなる。
その後、抽出部25aは、次の順序となるURL31dが存在するか否かを判定する(ステップS32)。そして、次の順序となるURL31dが存在すると判定される場合には(ステップS32;Yes)、抽出部25aは、次の順序となるURL31dのリクエストの汎用化をすべく、ステップS22に移行する。一方、次の順序となるURL31dが存在しないと判定される場合には(ステップS32;No)、抽出部25aは、処理比較解析処理を終了する。
[実施例2に係る問合せ処理の手順]
次に、実施例2に係る問合せ処理の手順を、図13を参照して説明する。図13は、実施例2に係る問合せ処理の手順を示すフローチャートである。
まず、問合せ部26は、業務処理のイベントがあったか否かを判定する(ステップS41)。業務処理のイベントがなかったと判定された場合には(ステップS41;No)、問合せ部26は、業務処理のイベントがあるまで待つ。一方、業務処理のイベントがあったと判定された場合には(ステップS41;Yes)、問合せ部26は、イベントがあった業務処理の該当処理を汎用処理テーブル32から抽出する(ステップS42)。具体的には、問合せ部26は、イベントがあった業務処理の処理ID32aに対応するリクエストデータ32dを汎用処理テーブル32から抽出する。
そして、問合せ部26は、抽出したリクエストデータ32dの中から変数化された問合せパラメータを抽出する(ステップS43)。そして、問合せ部26は、問合せパラメータの具体的な内容を、業務の再現に先立ってユーザに対して問い合わせるべく、変数化された問合せパラメータの入力画面をユーザに対して送信する(ステップS44)。例えば、問合せ部26は、業務リクエストに含まれる問合せパラメータの変数で置き換わった部分を空欄とし、実行ボタンが付いた画面データを生成し、生成した画面データをユーザに対して送信する。
そして、問合せ部26は、ユーザからのリクエストを受信する(ステップS45)。例えば、問合せ部26は、空欄とされた問合せパラメータの具体的な内容を、ユーザからリクエストとして受信する。そして、問合せ部26は、ユーザから空欄とされた問合せパラメータの具体的な内容を受け取ると、業務リクエストの問合せパラメータの該当部分に具体的な内容を埋め込む。
続いて、問合せ部26は、業務リクエストに処理(リクエストデータ)が存在するか否かを判定する(ステップS46)。業務リクエストに処理が存在する場合には(ステップS46;Yes)、問合せ部26は、当該処理をリクエストとして、ウェブサーバ3へ送信する(ステップS47)。そして、問合せ部26は、ウェブサーバ3からレスポンスを受信し(ステップS48)、次の処理を実行すべく、ステップS46に移行する。
一方、業務リクエストに処理が存在しない場合には(ステップS46;No)、問合せ部26は、最終レスポンスをウェブブラウザであるユーザ端末に送信する(ステップS49)。そして、問合せ部26は、問合せ処理を終了する。
[実施例2の効果]
上記実施例2によれば、通信記録テーブル31は、ウェブサーバに送信されたリクエストデータと当該ウェブサーバから受信したレスポンスデータとを複数記憶する。そして、抽出部25aが通信記録テーブル31を参照し、2つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータを抽出する。問合せ部26は、該抽出したパラメータを例えばユーザ端末に対して問い合わせる。かかる構成によれば、抽出部25aが、2つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータを抽出し、抽出したパラメータをユーザに対して問い合わせる。このため、中継装置1Aは、リクエストデータのパラメータを絞り込んでユーザに問い合わせるので、ユーザの処理を短縮化することができる。
また、上記実施例2によれば、問合せ部26は、抽出の処理で抽出したパラメータの値を変数に置換したリクエストデータを含む一連のリクエストデータを生成し、該生成した一連のリクエストデータに基づいて、変数の値を問い合わせる。そして、問合せ部26は、問い合わせの処理時の問い合わせに対する応答を組み込んだ一連のリクエストデータを用いて、ウェブサーバとの間でリクエストデータ及びレスポンスデータを送受信する。そして、問合せ部26は、最後のリクエストデータに対するウェブサーバのレスポンスデータをユーザ端末に送信する。かかる構成によれば、問合せ部26は、一連のリクエストデータの変数の値を業務処理の再現に先立ってユーザに問い合わせるので、リクエストデータの各レスポンスを待たないで一連のリクエストデータを再現できる。
また、上記実施例2によれば、問合せ部26は、リクエストデータに含まれるパラメータ部分を空欄とし、実行ボタンが付いた画面データをユーザ端末に送信し、前記パラメータ部分を設定させる。かかる構成によれば、問合せ部26は、リクエストデータに含まれるパラメータ部分を1画面で設定可能とする。この結果、問合せ部26は、ユーザに容易に操作させることができるので、操作効率を向上させることができる。
また、上記実施例2によれば、抽出部25aは、2つのリクエストデータで値が同一のパラメータを抽出しないこととした。かかる構成によれば、抽出部25aは、2つのリクエストデータで値が同一のパラメータを除外できるので、パラメータに関する処理効率を向上させることができる。
なお、問合せ部26は、業務リクエストに含まれる問合せパラメータを、業務リクエストに含まれる全ての問合せパラメータの変数を空欄とした問合せ画面のデータを用いて、問合せパラメータの具体的な内容を纏めてユーザに問い合わせるものと説明した。しかしながら、問合せ部26は、業務リクエストに含まれる一部の問合せパラメータの変数を空欄とした問合せ画面のデータを用いて、問合せパラメータの具体的な内容を一部分ずつユーザに問い合わせるものとしても良い。かかる場合には、問合せ部26は、問合せパラメータに関する画面だけをユーザ端末に表示するので、中継装置1Aとユーザ端末との間の処理効率を向上させることができる。
また、中継装置1Aは、ウェブブラウザと同一のネットワーク上に適用した場合を説明した。しかしながら、中継装置1Aは、ウェブブラウザと異なるネットワーク上に適用しても良い。この場合に、ウェブブラウザと中継装置1Aとの間にプロキシサーバを設置することもある。このプロキシサーバと中継装置1Aとを一体化することも可能である。
ところで、実施例2の中継装置1Aでは、同一操作のリクエストデータとは、リクエスト先のURLが同一である場合を前提として説明した。しかしながら、同一操作のリクエストデータには、リクエスト先のURLが同一でない場合もある。例えば、ログイン後にユーザIDがURLに含まれることとなり、同一操作であってもリクエスト先のURLが異なる場合がある。また、別の例では、負荷分散などを目的として、複数のウェブサーバ3で同一のアプリケーションが動作する場合、アプリケーションが動作する環境が異なるので、同一操作であってもリクエスト先のURLが異なってしまう。
そこで、実施例3の中継装置1Bでは、同一操作のリクエストデータとは、リクエスト先のURLが同一でない場合を含むものとして説明する。
[実施例3に係る中継装置の構成]
図14は、実施例3に係る中継装置の構成を示す機能ブロック図である。なお、図2に示す中継装置1Aと同一の構成については同一符号を示すことで、その重複する構成及び動作の説明については省略する。実施例2と実施例3とが異なるところは、処理比較解析部25に同一処理判定部41を追加した点にある。また、実施例2と実施例3とが異なるところは、記憶部30に変換テーブル51を追加した点にある。
同一処理判定部41は、通信記録テーブル31に記憶された2つのURL及びURLに対応する2つのリクエストデータを比較し、比較した2つのリクエストデータが同一処理であるか否かを判定する。具体的には、同一処理判定部41は、通信記録テーブル31から、処理識別子31bが同一且つユーザ識別子31cが異なる2つのURL31dと、2つのURL31dに対応するそれぞれのリクエストデータ31eとを読み出す。また、同一処理判定部41は、読み出した2つのURL31dを比較し、同一であるか否かを判定する。ここで、同一処理判定部41は、2つのURL31dが同一でないと判定する場合には、URL31dが同一でなくても対応する2つのリクエストデータ31eが同一処理であるとみなせる条件を満たすか否かを判定する。
2つのリクエストデータ31eが同一処理であるとみなせる条件とは、例えば、2つのURL31dのベースネームが同一であること及び2つのリクエストデータ31eのパラメータ名が同一であることである。さらに、同一処理とみなせる条件には、URL31dのドメイン名が同一であること、URL31dの階層数すなわちパスの区切り文字の数が同一であること及びURL31dの異なる部分が一階層のみであることが含まれる。なお、開始時の1つ目のURL31dが異なる場合には、同一処理でないと推定されるので、開始時の1つ目のURL31dが同一であることは、同一処理とみなせる条件に含む。
ここで、URL31dのベースネーム、ドメイン名、階層及び区切り文字について説明する。例えば、URL31dが「http://xxx.xxx.xxx/AAAA/BBBB/c.html」であるものとする。本実施形態において、ベースネームとは、宛先のパスからディレクトリの部分、つまり最後の“/”までの部分を取り去った残りの部分文字列、つまり、拡張子が付いている場合にはこの拡張子を含むファイル名であり、このURLの場合には、ベースネームとは、「c.html」を指す。ドメイン名とは、「xxx.xxx.xxx」を指す。区切り文字とは、「/」を指す。そして、階層とは、区切り文字で区切られた内容を一階層として、このURLの場合には、階層数は4階層となる。
同一処理判定部41は、URL31dが同一でなくても対応する2つのリクエストデータ31eが同一処理とみなせる条件を満たす場合には、同一処理としてURL31dの不一致部分を変換テーブル51に一時的に書き込む。そして、同一処理判定部41は、以降のリクエストデータ31eの同一処理判定について、変換テーブル51に従い、URL31dの不一致部分を置換しながら同一処理であるか否かを判定する。ここで、変換テーブル51のデータ構造について、図15を参照しながら説明する。
図15は、変換テーブルのデータ構造の一例を示す図である。図15に示すように、変換テーブル51は、比較元51a及び比較先51bを対応付けて記憶する。比較元51aは、2つのURLを比較した際に不一致部分がある場合、比較元のURLの不一致部分を示す。比較先51bは、比較元のURLの不一致部分に対応する比較先のURLの部分を示す。例えば、ログイン後にユーザIDがURLに含まれたものとする。比較先URLに「User1」が含まれ、比較元URLに「User2」が含まれた場合、比較元51aには、比較元URLの不一致部分の「User1」が記憶され、比較先51bには、比較元URLの不一致部分に対応する「User2」が記憶される。
図14に戻って、抽出部25aは、通信記録テーブル31に記憶された同一操作のURL及びリクエストデータを比較し、差分を取得する。具体的には、抽出部25aは、同一処理判定部41によって同一処理と判定された2つのリクエストデータのそれぞれのURLを比較し、差分となる異なる値を取得する。但し、差分となる異なる値は、URLの一階層のみとする。また、抽出部25aは、同一処理判定部41によって同一処理と判定された2つのリクエストデータを比較し、同じリクエストパラメータに差分がある、すなわち同じリクエストパラメータに異なる値があるリクエストパラメータを取得する。
また、抽出部25aは、同一操作のURLまたはリクエストデータに差分がある場合には、差分となる異なる値が直前のレスポンスデータに含まれるか否かを判定する。具体的には、抽出部25aは、URLまたはリクエストデータに差分がある場合には、直前のレスポンスデータを、通信記録テーブル31から読み出す。また、抽出部25aは、差分のあるURLの値または差分のあるリクエストパラメータの値が直前のレスポンスデータに含まれているか否かを判定する。ここで、抽出部25aが、差分のあるリクエストパラメータの値が直前のレスポンスデータに含まれていないと判定する場合には、ユーザに問い合わせる問合せパラメータであるとして、当該リクエストパラメータを抽出する。
また、抽出部25aは、差分のあるURLの値または差分のあるリクエストパラメータの値が直前のレスポンスデータに含まれていると判定する場合には、ウェブサーバ3によって作成されたものであると判定する。ここで、レスポンスデータには、HTMLを含む場合とHTMLを含まない場合とがある。HTMLを含まない場合には、レスポンスデータには「Location:」から始まるヘッダが必ず含まれる。そこで、レスポンスデータがHTMLを含まない場合には、後続する汎用処理生成部25bが、「Location:」から始まるヘッダからURLの情報を示す位置情報を取得することとなる。また、レスポンスデータがHTMLを含む場合には、汎用処理生成部25bが、HTMLからリクエストパラメータのXPathを取得することとなる。
ここで、実施例3に係る通信記録テーブル31の具体例について、図16を参照して説明する。図16は、実施例3に係る通信記録テーブルの具体例を示す図である。なお、通信記録テーブル31のデータ構造については、実施例2の図3で説明したので、その説明を省略する。図16に示すように、通信記録テーブル31は、処理識別子31bが「F4」、ユーザ識別子31cが「USER1」である場合のURL(31d)、リクエストデータ(31e)及びレスポンスデータ(31f)を記憶する。例えば、識別番号31aが「9」のリクエストデータ(31e)として、リクエストパラメータ「USER」(ユーザIDに相当)に対してリクエストパラメータの値「user1」が記憶されている。また、識別番号31aが「9」のリクエストデータ31eとして、リクエストパラメータ「PASS」(パスワードに相当)に対してリクエストパラメータの値「pass1」が記憶されている。また、識別番号31aが「9」のレスポンスデータ31fとして、HTMLを戻す代わりに、後続するリクエストデータの位置情報を示すLocationヘッダ情報「Location:・・・」が記憶されている。このLocationヘッダ情報に、URLの情報を示す位置情報が記憶されている。また、識別番号31aが「10」のURL31dとして、ユーザID「user1」を含んだURLが記憶されている。また、識別番号31aが「10」のリクエストデータ31eとして、ユーザID「user1」を含んだ情報が記憶されている。
図14に戻って、汎用処理生成部25bは、抽出部25aによってリクエストパラメータが抽出された場合には、当該リクエストパラメータの値を例えば変数に置き換えたリクエストデータを、汎用化した処理として生成する。また、汎用処理生成部25bは、抽出部25aによってウェブサーバによって作成されるものであると判定された場合であってレスポンスデータにHTMLを含まない場合には、以下のように汎用化した処理を生成する。すなわち、汎用処理生成部25bは、Locationヘッダ情報から位置情報を取得し、差分のあるURLの値または差分のあるリクエストパラメータの値を位置情報で表したリクエストデータを汎用化した処理として生成する。また、汎用処理生成部25bは、抽出部25aによってウェブサーバによって作成されるものであると判定された場合であってレスポンスデータにHTMLを含む場合には、以下のように汎用化した処理を生成する。すなわち、汎用処理生成部25bは、HTMLからXPathを取得し、差分のあるURLの値または差分のあるリクエストパラメータの値をXPathで表したリクエストデータを、汎用化した処理として生成する。
[URLの不一致部分を汎用化する具体例]
次に、抽出部25aがユーザAとユーザBとの通信記録を用いてURLの不一致部分を汎用化する具体例について、図17〜図20を参照しながら説明する。ユーザAとユーザBとの通信記録は、同一の業務の通信記録を用いる。図17は、ユーザAのリクエストデータの具体例であり、図18は、ユーザAのレスポンスデータの具体例であり、図19は、ユーザBのリクエストデータの具体例であり、図20は、ユーザBのレスポンスデータの具体例である。
図17に示すように、最初にウェブブラウザ2からウェブサーバ3に送信されたリクエストデータが、r11に示されるデータとなる。次に、ウェブブラウザ2からウェブサーバ3に送信されたリクエストデータが、r12に示されるデータとなる。ここでは、リクエストパラメータとして、「uid」(ユーザIDに相当)に関するものと「pswd」(パスワードに相当)に関するものがある。そして、「user1」が「uid」に関するリクエストパラメータの値となり、「pass1」が「pswd」に関するリクエストパラメータの値となる。
次に、ウェブブラウザ2からウェブサーバ3に送信されたリクエストデータが、r13に示されるデータとなる。ここでは、「uid」に関するリクエストパラメータの値「user1」(u1)がリクエストデータのURLに含まれている。r14に示されるリクエストデータのURLにもr13と同様に、「uid」に関するリクエストパラメータの値「user1」が含まれている。そして、ユーザAについてのリクエストデータr11〜r14が中継装置1Bの通信記録テーブル31に記録される。
図18に示すように、r11のリクエストデータに対応したレスポンスデータが、h11に示されるデータとなる。次に、r12のリクエストデータに対応したレスポンスデータが、h12に示されるデータとなる。次に、r13のリクエストデータに対応したレスポンスデータが、h13に示されるデータとなる。そして、r14のリクエストデータに対応したレスポンスデータが、h14に示されるデータとなる。そして、ユーザAについてのレスポンスデータh11〜h14が中継装置1Bの通信記録テーブル31に記録される。
図19に示すように、ユーザAと同一業務において、ユーザBについてのリクエストデータr11〜r14が中継装置1Bの通信記録テーブル31に記録される。また、図20に示すように、ユーザAと同一業務において、ユーザBについてのレスポンスデータh11〜h14が中継装置1Bの通信記録テーブル31に記録される。
このような前提のもと、抽出部25aは、通信記録テーブル31に記憶された同一操作のURL及びリクエストデータを比較し、差分を取得する。ここでは、抽出部25aは、ユーザAとユーザBとの同一操作r13のリクエストデータを比較すると、同一操作r13におけるユーザAのURLの「user1」u1とユーザBのURLの「user2」u2とが異なると判定する。そこで、抽出部25aは、異なると判定した、ユーザAのURLの「user1」u1及びユーザBのURLの「user2」u2を取得する。
また、抽出部25aは、同一操作のURLに差分がある場合には、差分となる異なる値が直前のレスポンスデータに含まれるか否かを判定する。ここでは、ユーザAのリクエストデータr13のURLの値が「user1」u1であり、この値がユーザAのリクエストデータr13の直前のレスポンスデータh12に含まれている。したがって、抽出部25aは、ウェブサーバによって作成されたものであると判定する。そして、汎用処理生成部25bは、レスポンスデータにHTMLが含まれている場合、HTMLからXPathを取得し、URLの値またはリクエストパラメータの値をXPathで表したリクエストデータを、汎用化した処理として生成する。ここでは、汎用処理生成部25bは、レスポンスデータh12にHTMLが含まれているので、URLの値のXPathを「/html/head/meta」であるとして取得する。
[実施例3に係る汎用処理テーブルの具体例]
次に、実施例3に係る汎用処理テーブル32の具体例について、図21を参照して説明する。図21は、実施例3に係る汎用処理テーブルの具体例を示す図である。なお、汎用処理テーブル32のデータ構造については、実施例2の図10で説明したので、その説明を省略する。図21に示すように、処理ID32aが「4」、処理番号32bが「3」の場合、URL32c及びリクエストデータ32dには、「%(Location)%」d11が含まれている。すなわち、URL32cは、直前のレスポンスデータのLocationヘッダ情報にあるURLの値が「%(Location)%」d11に置き換わる処理となっている。
[実施例3に係る処理比較解析処理の手順]
次に、実施例3に係る処理比較解析処理の手順を、図22を参照して説明する。図22は、実施例3に係る処理比較解析処理の手順を示すフローチャートである。
まず、同一処理判定部41は、リクエストデータのカウンタを初期値である「1」に設定する(ステップS51)。そして、同一処理判定部41は、通信記録テーブル31に記憶されたレコードに、ユーザ識別子31cが異なるレコードであって処理識別子31bが同一であるレコードがあるか否かを判定する(ステップS52)。そして、同一の処理識別子31bがないと判定された場合(ステップS52;No)、同一処理判定部41は、処理比較解析処理を終了する。
一方、同一の処理識別子31bがあると判定された場合(ステップS52;Yes)、同一処理判定部41は、同一の処理識別子31bを持つ2つのURL及びURLに対応する2つのリクエストデータを比較する。そして、同一処理判定部41は、2つのリクエストデータが同一処理であるか否かを判定する(ステップS53)。なお、同一処理判定処理の手順については、後に詳述する。
同一処理判定処理によって2つのリクエストデータが同一処理であると判定された場合、抽出部25aは、同一のURL31d毎にリクエストデータ31eのリクエストパラメータを比較する(ステップS54)。
そして、抽出部25aは、比較対象の2つのリクエストデータ31eに含まれるそれぞれのリクエストパラメータのパラメータ名及びパラメータ数が同じか否かを判定する(ステップS55)。そして、比較対象のそれぞれのリクエストパラメータのパラメータ名またはパラメータ数が同じでないと判定された場合には(ステップS55;No)、抽出部25aは、リクエストデータ31eの構成が同一でないと判定し、処理比較解析処理を終了する。
一方、比較対象のそれぞれのリクエストパラメータのパラメータ名及びパラメータ数が同じであると判定された場合には(ステップS55;Yes)、抽出部25aは、リクエストデータ31eの構成が同一であると判定する。そして、抽出部25aは、比較対象のそれぞれの同じリクエストパラメータに異なる値があるか否かを判定する。また、抽出部25aは、比較対象のそれぞれのURLに一階層だけ異なる値があるか否かを判定する(ステップS56)。そして、比較対象に異なる値がない場合には(ステップS56;No)、抽出部25aは、当該リクエストデータ31eの処理が完全に同一であると判定し、ステップS65に移行する。
一方、比較対象のそれぞれの同じリクエストパラメータに異なる値がある場合には(ステップS56;Yes)、抽出部25aは、それぞれの直前のレスポンスデータ31fから当該リクエストパラメータに対応するパラメータを探索する。また、比較対象のそれぞれのURLに一階層だけ異なる値がある場合には、抽出部25aは、それぞれの直前のレスポンスデータ31fから当該URLに対応するURLを探索する(ステップS57)。
そして、抽出部25aは、比較対象のそれぞれのリクエストパラメータの値がそれぞれの直前のレスポンスデータ31fから探索されたパラメータに含まれているか否かを判定する。また、抽出部25aは、比較対象のそれぞれのURLの値がそれぞれの直前のレスポンスデータ31fから探索されたURLに含まれているかを判定する(ステップS58)。
そして、探索されたパラメータまたはURLに値が含まれていないと判定された場合には(ステップS58;No)、抽出部25aは、2つのリクエストパラメータがユーザに問い合わせる問合せパラメータであると判定する。そして、抽出部25aは、問合せパラメータを抽出する。汎用処理生成部25bは、抽出した問合せパラメータの値を変数に置き換えたリクエストデータを生成し(ステップS59)、ステップS65に移行する。
一方、探索されたパラメータまたはURLに値が存在すると判定された場合または(ステップS58;Yes)、汎用処理生成部25bは、レスポンスデータ31fにHTMLが含まれているか否かを判定する(ステップS60)。そして、レスポンスデータ31fにHTMLが含まれていると判定された場合には(ステップS60;Yes)、汎用処理生成部25bは、それぞれのHTMLから両方のパラメータまたは両方のURLのXPathを取得する(ステップS61)。すなわち、汎用処理生成部25bは、それぞれのHTMLから、差分のあるURLの値または差分のあるリクエストパラメータの値を抽出するためのXPathを取得する。
レスポンスデータ31fにHTMLが含まれていないと判定された場合には(ステップS60;No)、汎用処理生成部25bは、それぞれのLocationヘッダ情報から両方のパラメータまたは両方のURLの位置情報を取得する(ステップS62)。すなわち、汎用処理生成部25bは、それぞれのLocationヘッダ情報から、差分のあるURLの値または差分のあるリクエストパラメータの値を抽出するための位置情報を取得する。
そして、汎用処理生成部25bは、取得した、両方の情報が同じか否かを判定する(ステップS63)。そして、両方の情報が同じであると判定された場合(ステップS63;Yes)、汎用処理生成部25bは、パラメータの値またはURLの値に、取得した情報を指定したリクエストデータを作成し(ステップS64)、ステップS65に移行する。すなわち、汎用処理生成部25bは、差分のあるURLの値または差分のあるリクエストパラメータの値を位置情報またはXPathで表したリクエストデータを汎用化した処理として作成する。一方、両方の情報が同じでないと判定された場合(ステップS64;No)、パラメータの値を変数化すべく、ステップS59に移行する。
続いて、汎用処理生成部25bは、作成したリクエストデータを汎用処理テーブル32に登録する(ステップS65)。すなわち、汎用処理生成部25bは、業務におけるリクエストの順番どおりになるように、業務リクエストを作成し、汎用処理テーブル32に登録する。なお、作成された業務リクエストは、所定の業務における汎用化されたリクエストの処理フローとなる。
その後、抽出部25aは、カウンタを1加算する(ステップS66)、そして、抽出部25aは、次の順序となるURL31dが存在するか否かを判定する(ステップS67)。そして、次の順序となるURL31dが存在すると判定される場合には(ステップS67;Yes)、抽出部25aは、次の順序となるURL31dのリクエストの汎用化をすべく、ステップS53に移行する。一方、次の順序となるURL31dが存在しないと判定される場合には(ステップS67;No)、抽出部25aは、変換テーブルを削除し(ステップS68)、処理比較解析処理を終了する。
[同一処理判定処理の手順]
次に、図22に示すS53の処理手順を、図23を参照して説明する。図23は、実施例3に係る同一処理判定処理の手順を示すフローチャートである。
まず、同一処理判定処理は、カウンタ、同一の処理識別子31bを持つ2つのURL及びURLに対応する2つのリクエストデータを取得する。すると、同一処理判定処理は、取得した2つのURLが同一であるか否かを判定する(ステップS71)。2つのURLが同一であると判定された場合には(ステップS71;Yes)、同一処理判定処理は、処理を終了し、処理比較解析処理のステップS54に移行する。
一方、2つのURLが同一でないと判定された場合には(ステップS71;No)、同一処理判定処理は、変換テーブル51に従い、比較元のURLの不一致部分を比較先のURLの不一致部分に変換する(ステップS72)。なお、カウンタが1である場合には、変換テーブル51がまだ作成されていないので、変換処理はできない。
再び、同一処理判定処理は、比較元のURLと比較先の変換後のURLとを比較し、2つのURLが同一であるか否かを判定する(ステップS73)。2つのURLが同一であると判定された場合には(ステップS73;Yes)、同一処理判定処理は、処理を終了し、処理比較解析処理のステップS54に移行する。
一方、2つのURLが同一でないと判定された場合には(ステップS73;No)、同一処理判定処理は、カウンタが1より大きいか否かを判定する(ステップS74)。カウンタが1より大きくないと判定された場合には(ステップS74;No)、同一処理判定処理は、同一処理でないと推定されるので、処理を終了するとともに処理比較解析処理を終了する。
一方、カウンタが1より大きいと判定された場合には(ステップS74;Yes)、同一処理判定処理は、2つのURLに対応する2つのリクエストデータを比較し、パラメータ名とパラメータ数とが同じであるか否かを判定する(ステップS75)。パラメータ名とパラメータ数とが同じでないと判定された場合には(ステップS75;No)、同一処理判定処理は、同一処理でないと判断し、処理を終了するとともに処理比較解析処理を終了する。
一方、パラメータ名とパラメータ数とが同じであると判定された場合には(ステップS75;Yes)、同一処理判定処理は、変換前の2つのURLを比較し、ベースネームが同一であるか否かを判定する(ステップS76)。ベースネームが同一でないと判定された場合には(ステップS76;No)、同一処理判定処理は、同一処理でないと判断し、処理を終了するとともに処理比較解析処理を終了する。
一方、ベースネームが同一であると判定された場合には(ステップS76;Yes)、同一処理判定処理は、変換前の2つのURLを比較し、ドメイン名が同一であるか否かを判定する(ステップS77)。ドメイン名が同一でないと判定された場合には(ステップS77;No)、同一処理判定処理は、同一処理でないと判断し、処理を終了するとともに処理比較解析処理を終了する。
一方、ドメイン名が同一であると判定された場合には(ステップS77;Yes)、同一処理判定処理は、変換前の2つのURLを比較し、URLの階層数すなわちパスの区切り文字の数が同じであるか否かを判定する(ステップS78)。パスの区切り文字の数が同じでないと判定された場合には(ステップS78;No)、同一処理判定処理は、同一処理でないと判断し、処理を終了するとともに処理比較解析処理を終了する。
一方、パスの区切り文字の数が同じであると判定された場合には(ステップS78;Yes)、同一処理判定処理は、変換前の2つのURLを比較し、URLの異なる部分が一階層のみであるか否かを判定する(ステップS79)。URLの異なる部分が一階層のみでないと判定された場合には(ステップS79;No)、同一処理判定処理は、同一処理でないと判断し、処理を終了するとともに処理比較解析処理を終了する。
一方、URLの異なる部分が一階層のみであると判定された場合には(ステップS79;Yes)、同一処理判定処理は、同一処理であると判断する。そして、同一処理判定処理は、2つのURLのうち一方を比較元とし、他方を比較先としてそれぞれの不一致部分を変換テーブル51に一時的に書き換える(ステップS80)。そして、同一処理判定処理は、処理を終了し、処理比較解析処理のステップS54に移行する。
[実施例3の効果]
上記実施例3によれば、同一処理判定部41は、2つのリクエストデータのそれぞれのURLが異なる場合に、2つのURLでベースネームが同一、及び2つのリクエストデータでパラメータ名が同一であるか否かを判定する。そして、抽出部25aは、さらに、同一処理判定部41によって同一であると判定された場合に、2つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータを抽出する。かかる構成によれば、抽出部25aは、URLが異なっても、2つのURLでベースネームが同一、及び2つのリクエストデータでパラメータ名が同一である場合に、2つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータを抽出する。このため、中継装置1Bは、URLが異なっても、リクエストデータのパラメータを絞り込んでユーザに問い合わせることが可能となるので、ユーザの処理を短縮化することができる。
また、上記実施例3によれば、抽出部25aは、さらに、同一処理判定部41によって同一であると判定されたURLの不一致部分を直前のレスポンスデータから抽出する。かかる構成によれば、抽出部25aは、URLの不一致部分を直前のレスポンスデータから抽出するので、URLが不一致の場合であってもURLに関する雛形を生成できることとなり、雛形生成精度を上げることができる。
[プログラムなど]
なお、中継装置1A、1Bは、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した処理比較解析部25及び問合せ部26などの各機能を搭載することによって実現することができる。
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、リクエスト記録部21とリクエスト送信部22とを1個の部として統合しても良いし、レスポンス送信部23とレスポンス記録部24とを1個の部として統合しても良い。一方、抽出部25aを、2つのリクエストデータの差分を抽出する差分抽出部と差分がユーザに問い合わせるパラメータであるか否かを判定する問合せパラメータ判定部とに分散しても良い。また、通信記録テーブル31や汎用処理テーブル32などの記憶部を中継装置1A、1Bの外部装置としてネットワーク経由で接続するようにしても良い。
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図24を用いて、図2に示した中継装置1Aの制御部20と同様の機能を有する中継プログラムを実行するコンピュータの一例を説明する。
図24は、中継プログラムを実行するコンピュータを示す図である。図24に示すように、コンピュータ1000は、RAM(Random Access Memory)1010と、ネットワークインタフェース装置1020と、HDD1030と、CPU(Central Processing Unit)1040、媒体読取装置1050及びバス1060とを有する。RAM1010、ネットワークインタフェース装置1020、HDD1030、CPU1040、媒体読取装置1050は、バス1060によって接続されている。
そして、HDD1030には、図2に示した制御部20と同様の機能を有する中継プログラム1031が記憶される。また、HDD1030には、図2に示した通信記録テーブル31及び汎用処理テーブル32に対応する中継処理関連情報1032が記憶される。
そして、CPU1040が中継プログラム1031をHDD1030から読み出してRAM1010に展開することにより、中継プログラム1031は、中継プロセス1011として機能するようになる。そして、中継プロセス1011は、中継処理関連情報監視1032から読み出した情報などを適宜RAM1010上の自身に割り当てられた領域に展開し、この展開したデータなどに基づいて各種データ処理を実行する。
媒体読取装置1050は、中継プログラム1031がHDD1030に格納されていない場合であっても中継プログラム1031を記憶する媒体などから中継プログラム1031を読み取る。媒体読取装置1050には、例えばCD−ROMや光ディスク装置がある。また、ネットワークインタフェース装置1020は、外部装置とネットワーク経由で接続する装置であり、有線、無線がある。
なお、上記の中継プログラム1031は、必ずしもHDD1030に格納されている必要はなく、CD−ROMなどの媒体読取装置1050に記憶されたこのプログラムを、コンピュータ1000が読み出して実行するようにしてもよい。また、公衆回線、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などを介してコンピュータ1000に接続される他のコンピュータ(またはサーバ)などにこのプログラムを記憶させておいても良い。この場合には、コンピュータ1000がネットワークインタフェース装置1020を介してこれらからプログラムを読み出して実行する。
以上の実施例1〜3を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)コンピュータに、
ウェブサーバに送信されたリクエストデータと当該ウェブサーバから受信したレスポンスデータとを複数記憶した記憶装置を参照し、2つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータを抽出し、
該抽出したパラメータをユーザ端末に対して問い合わせる
処理を実行させるリクエスト処理プログラム。
(付記2)前記抽出の処理で抽出したパラメータの値を変数に置換したリクエストデータを含む一連のリクエストデータを生成し、
該生成した一連のリクエストデータに基づいて、前記変数の値を問い合わせ、
前記問い合わせの処理の問い合わせに対する応答を組み込んだ前記一連のリクエストデータを用いて、前記ウェブサーバとの間でリクエストデータ及びレスポンスデータを送受信し、最後のリクエストデータに対する前記ウェブサーバのレスポンスデータを前記ユーザ端末に送信することを特徴とする付記1に記載のリクエスト処理プログラム。
(付記3)前記問い合わせの処理は、前記リクエストデータに含まれるパラメータ部分を空欄とし、実行ボタンが付いた画面データを前記ユーザ端末に送信し、ユーザに前記パラメータ部分を設定させることを特徴とする付記2に記載のリクエスト処理プログラム。
(付記4)前記抽出の処理は、2つのリクエストデータで値が同一のパラメータを抽出しないことを特徴とする付記1から付記3のいずれか1つに記載のリクエスト処理プログラム。
(付記5)前記コンピュータに、
前記抽出する処理において、さらに、前記2つのリクエストデータのそれぞれの宛先のパスに含まれるディレクトリが異なる場合に、前記2つの宛先のパスから前記ディレクトリの部分を除いた文字列が同一、且つ、前記2つのリクエストデータでパラメータ名が同一であるか否かを判定し、いずれも同一であると判定した場合に、前記2つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータを抽出する
処理を実行させることを特徴とする付記1に記載のリクエスト処理プログラム。
(付記6)前記コンピュータに、
前記抽出する処理において、さらに、前記同一であると判定されたリクエスト対象のファイル名の不一致部分を直前のレスポンスデータから抽出する
処理を実行させることを特徴とする付記5に記載のリクエスト処理プログラム。
(付記7)ウェブサーバに送信されたリクエストデータと当該ウェブサーバから受信したレスポンスデータとを複数記憶した記憶部と、
前記記憶部を参照し、2つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータを抽出する抽出部と、
前記抽出部によって抽出されたパラメータをユーザ端末に対して問い合わせる問合せ部と
を有することを特徴とするリクエスト処理装置。
(付記8)コンピュータによって実行されるリクエスト処理方法であって、
ウェブサーバに送信されたリクエストデータと当該ウェブサーバから受信したレスポンスデータとを複数記憶した記憶装置を参照し、2つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータを抽出し、
該抽出したパラメータをユーザ端末に対して問い合わせる
ことを特徴とするリクエスト処理方法。