(57)【要約】【課題】再現可能なウェブアプリケーションを適切に生成する。【解決手段】中継プログラムは、中継装置１に、ウェブブラウザ２から送信される一連のリクエストデータについて、ウェブサーバ３に送信されるリクエストデータとウェブサーバ３から受信するレスポンスデータとを対応付けて記憶した記憶部２０を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定し、２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されるリクエストデータを選択し、選択したリクエストデータに対応付けて通信を区切るために用いられるフラグを記憶部２０に設定する処理を実行させる。【選択図】図２
2015225592.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１の装置から送信される一連のリクエストデータについて、第２の装置に送信されるリクエストデータと前記第２の装置から受信するレスポンスデータとを対応付けて記憶した記憶装置を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定し、
２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されるリクエストデータを選択し、
前記選択したリクエストデータに対応付けて通信を区切るために用いられるフラグを前記記憶装置に設定する
処理を実行させるウェブアプリケーション生成プログラム。
【請求項２】
前記記憶装置にされたリクエストデータを順番に前記第２の装置に送信し、前記フラグに対応付けられたリクエストデータの直前のレスポンスデータを前記第１の装置に送信する
処理を実行させる請求項１に記載のウェブアプリケーション生成プログラム。
【請求項３】
前記送信する処理は、
前記記憶装置を参照し、前記フラグに対応付けられたリクエストデータであるか否かを判定し、
前記フラグに対応付けられたリクエストデータでないと判定された場合に、当該リクエストデータを前記第２の装置に送信し、
前記フラグに対応付けられたリクエストデータであると判定された場合に、当該リクエストデータの直前のレスポンスデータを前記第１の装置に送信し、
前記送信したレスポンスデータの前記部品に含まれるパラメータ値の入力を組み込んだリクエストデータを前記第２の装置に送信する
処理を実行させる請求項２に記載のウェブアプリケーション生成プログラム。
【請求項４】
第１の装置から送信される一連のリクエストデータについて、第２の装置に送信されるリクエストデータと前記第２の装置から受信するレスポンスデータとを対応付けて記憶した記憶部と、
前記記憶部を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定する判定部と、
前記判定部によって２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されたリクエストデータを選択する選択部と、
前記選択部によって選択されたリクエストデータに対応付けて通信を区切るために用いられるフラグを前記記憶装置に設定する設定部と、
を有することを特徴とする中継装置。
【請求項５】
コンピュータが、
第１の装置から送信される一連のリクエストデータについて、第２の装置に送信されるリクエストデータと前記第２の装置から受信するレスポンスデータとを対応付けて記憶した記憶装置を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定し、
２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されるリクエストデータを選択し、
前記選択したリクエストデータに対応付けて通信を区切るために用いられるフラグを前記記憶装置に設定する
各処理を実行するウェブアプリケーション生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ウェブアプリケーション生成プログラム等に関する。
【背景技術】
【０００２】
近年、ウェブサービスを業務において利用する際、ユーザの操作効率を向上させる技術が求められている。
【０００３】
例えば、ユーザの操作効率を向上させる技術として、２回の記録情報を比較することで、共通変数を括りだして汎用化する方法が存在する。この方法では、ウェブブラウザを実行するユーザ端末とウェブサーバとの通信を中継する中継装置が、同じ処理を２回実行した結果である、ウェブサーバに送信されたリクエストデータとウェブサーバから受信したレスポンスデータとをそれぞれ記憶部に記憶する。中継装置は、記憶部を参照し、２つのリクエストデータで値が異なり直前のレスポンスデータに含まれないパラメータの値を共通変数として抽出する。中継装置は、抽出した共通変数を用いて事前に変数の入力を受け付ける画面を生成することで、１回の送信処理で操作を再現することが可能となる（例えば、特許文献１参照）。
【０００４】
ところで、ユーザは、処理の途中の出力画面を見ることで、次の入力（新たなパラメータ値の入力）を決定する場合がある。このような場合に、新たなパラメータ値の入力を受け付けさせるかどうかを、ユーザの指示に基づいて設定し、新たなパラメータ値の入力を受け付けさせると設定されたことを条件に、新たにパラメータ値の入力を受け付けさせる技術が開示されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−７４００１号公報
【特許文献２】特開２００９−８７０３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の技術では、中継装置は、再現可能なウェブアプリケーションを適切に生成できないという問題がある。なお、ここでいうウェブアプリケーションとは、リクエストデータおよびレスポンスデータのことをいう。
【０００７】
例えば、第１の技術では、中継装置は、処理を再現する際、最初に、ユーザ端末から、共通変数として抽出したパラメータの値の入力を受け付けるので、処理の途中で、新たなパラメータ値の入力を受け付けることができない。したがって、中継装置は、処理の途中で新たなパラメータ値を次のリクエストデータに設定することができず、再現可能なウェブアプリケーションを適切に生成できない。
【０００８】
また、第２の技術であっても、中継装置は、ユーザの指示によって新たなパラメータ値の入力を受け付けさせると設定されなければ、処理の途中で、新たなパラメータ値の入力を受け付けることができない。したがって、中継装置は、処理の途中で新たなパラメータ値を次のリクエストデータに設定することができず、再現可能なウェブアプリケーションを適切に生成できない。
【０００９】
１つの側面では、本発明は、再現可能なウェブアプリケーションを適切に生成することを可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
１つの側面では、ウェブアプリケーション生成プログラムは、コンピュータに、第１の装置から送信される一連のリクエストデータについて、第２の装置に送信されるリクエストデータと前記第２の装置から受信するレスポンスデータとを対応付けて記憶した記憶装置を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定し、２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されるリクエストデータを選択し、前記選択したリクエストデータに対応付けて通信を区切るために用いられるフラグを前記記憶装置に設定する処理を実行させる。
【発明の効果】
【００１１】
ウェブアプリケーション生成プログラムの一つの態様によれば、再現可能なウェブアプリケーションを適切に生成することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例に係るウェブ中継システムの構成を示す機能ブロック図である。
【図２】図２は、実施例に係る中継装置の構成を示す機能ブロック図である。
【図３】図３は、通信記録テーブルのデータ構造の一例を示す図である。
【図４】図４は、汎用処理テーブルのデータ構造の一例を示す図である。
【図５】図５は、１回目と２回目のリクエストデータの第１の具体例を示す図である。
【図６】図６は、１回目のレスポンスデータの第１の具体例を示す図である。
【図７】図７は、２回目のレスポンスデータの第１の具体例を示す図である。
【図８】図８は、１回目と２回目のリクエストデータの第２の具体例を示す図である。
【図９】図９は、問合せ画面の一例を示す図である。
【図１０Ａ】図１０Ａは、実施例に係る処理比較解析処理の手順を示すフローチャートである。
【図１０Ｂ】図１０Ｂは、実施例に係る処理比較解析処理の手順を示すフローチャートである。
【図１０Ｃ】図１０Ｃは、実施例に係る処理比較解析処理の手順を示すフローチャートである。
【図１１】図１１は、実施例に係る問合せ処理の手順を示すフローチャートである。
【図１２】図１２は、中継プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示するウェブアプリケーション生成プログラム、中継装置及びウェブアプリケーション生成方法の実施例を図面に基づいて詳細に説明する。なお、実施例によりこの発明が限定されるものではない。
【実施例】
【００１４】
［実施例に係るウェブ中継システムの構成］
図１は、本実施例１に係るウェブ中継システム９の構成を示す機能ブロック図である。図１に示すように、ウェブ中継システム９は、中継装置１と、ウェブブラウザ２と、ウェブサーバ３とを有する。中継装置１は、ウェブブラウザ２とウェブサーバ３との間の通信を中継する。ウェブブラウザ２は、ウェブサービスを利用する、パーソナルコンピュータなどのユーザ端末である。ウェブサーバ３は、ウェブサービスを実施する。なお、ウェブ中継システム９では、ウェブサーバ３を中継装置１及びウェブブラウザ２と同一のネットワーク上に適用した場合であっても良いし、ウェブサーバ３を外部装置として異なるネットワーク上に適用した場合であっても良い。
【００１５】
中継装置１は、ウェブブラウザ２から送信される一連のリクエストデータについて、ウェブサーバ３に送信されるリクエストデータとウェブサーバ３から受信するレスポンスデータとを対応付けて記憶部に記憶する。中継装置１は、記憶部に記憶したデータを解析して、２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能なフォーム部品に含まれ、且つ該フォーム部品の内容が２つのレスポンスデータで一致しない場合に、このリクエストデータに対応付けて、通信を区切るフラグ（「通信区切フラグ」という）を記憶部に設定する。ここでいう「通信区切フラグ」とは、対応付けられたリクエストデータの直前のレスポンスデータ後に通信を一旦区切るために用いられる。ここでいう入力可能なフォーム部品とは、例えば、ラジオボタン、チェックボックスやセレクトボックスであるが、ユーザが入力可能なフォーム部品であれば何でも良い。
【００１６】
中継装置１は、通信を再現する際に、記憶部を参照し、通信区切フラグに対応付けられたリクエストデータであるか否かを判定する。中継装置１は、通信区切フラグに対応付けられたリクエストデータでないと判定された場合には、記憶部に記憶されたリクエストデータをウェブサーバ３に送信する。一方、中継装置１は、通信区切フラグに対応付けられたリクエストデータであると判定された場合には、当該リクエストデータの直前のレスポンスデータをウェブブラウザ２に送信する。中継装置１は、送信したレスポンスデータのフォーム部品に含まれるパラメータ値の入力を組み込んだリクエストデータをウェブサーバ３に送信する。
【００１７】
これにより、中継装置１は、通信を再現する際、通信の途中でユーザが次の入力を決定する場合であっても、決定された新たなパラメータ値をリクエストデータに組み込むことができ、再現可能なウェブアプリケーションを適切に生成することができる。
【００１８】
［中継装置の構成］
図２は、実施例に係る中継装置の構成を示す機能ブロック図である。図２に示すように、中継装置１は、制御部１０及び記憶部２０を有する。
【００１９】
制御部１０は、リクエスト記録部１１と、リクエスト送信部１２と、レスポンス送信部１３と、レスポンス記録部１４と、処理比較解析部１５と、問合せ部１６とを有する。さらに、処理比較解析部１５は、変数化判定部１５ａ、区切り判定部１５ｂ及び汎用処理生成部２５ｃを有する。なお、制御部１０は、例えば、ＡＳＩＣ（Application  Specific Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路またはＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等の電子回路である。
【００２０】
記憶部２０は、通信記録テーブル２１及び汎用処理テーブル２２を有する。なお、記憶部２０は、例えば、ＲＡＭ（Random  Access  Memory）、フラッシュメモリ（flash  memory）などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。
【００２１】
リクエスト記録部２１は、所定の業務の一連の操作毎にウェブブラウザ２から送信されたリクエストデータを順次通信記録テーブル２１に記録する。ここで、所定の業務とは、例えば、空き部屋予約に関する業務であったり、在庫検索に関する業務であったり、物品購入に関する業務であったりする。所定の業務は、これに限定されず、ウェブブラウザ２に一連の操作画面を順次遷移させる業務であって、特に、ウェブブラウザ２に情報の一覧画面を出力させ、一覧画面からユーザに選択させることが可能な業務であれば良い。所定の業務は、アプリケーションによって実行される。例えば、空き部屋予約に関する業務は、空き部屋予約に関するアプリケーション（空き部屋予約アプリ）によって実行される。在庫検索に関する業務は、在庫検索に関するアプリケーション（在庫検索アプリ）によって実行される。物品購入に関する業務は、物品購入に関するアプリケーション（物品購入アプリ）によって実行される。
【００２２】
リクエスト送信部１２は、ウェブブラウザ２から送信されたリクエストデータをウェブサーバ３に送信する。
【００２３】
レスポンス記録部１４は、ウェブサーバ３から送信された、リクエストデータに対応するレスポンスデータを順次通信記録テーブル２１に記録する。レスポンス送信部１３は、ウェブサーバ３から送信された、リクエストデータに対応するレスポンスデータをウェブブラウザ２に送信する。このとき、レスポンス送信部１３は、送信対象のレスポンスデータに対するリクエストデータが中継装置１を経由するように、当該レスポンスデータに該当するスクリプトを埋め込む。これにより、ウェブブラウザ２側の環境に対して特殊なソフトウェアが組み込まれなくても、リクエスト記録部１１は、ウェブブラウザ２からのリクエストデータを記録することができることとなる。
【００２４】
ここで、通信記録テーブル２１のデータ構造について、図３を参照しながら説明する。図３は、通信記録テーブル２１のデータ構造の一例を示す図である。図３に示すように、通信記録テーブル２１は、順序番号２１ａ、処理識別子２１ｂ、ユーザ識別子２１ｃ及びＵＲＬ２１ｄ毎に、リクエストデータ２１ｅ及びレスポンスデータ２１ｆを対応付けて記憶する。処理識別子２１ｂは、業務に対応する処理識別子を示す。ユーザ識別子２１ｃは、ユーザに対応する識別子を示す。ＵＲＬ２１ｄは、ウェブサーバ３で実行すべき処理のＵＲＬを示す。リクエストデータ２１ｅは、ユーザ識別子２１ｃのユーザからＵＲＬ２１ｄにリクエストした場合のリクエストデータを示す。レスポンスデータ２１ｆは、リクエストに対する、ユーザ識別子２１ｃのユーザへのレスポンスデータを示す。
【００２５】
図２に戻って、変数化判定部１５ａは、通信記録テーブル２１に記憶された同一操作の２つのリクエストデータを比較し、２つのリクエストデータに含まれるリクエストパラメータの値を変数化するか否かを判定する。
【００２６】
例えば、変数化判定部１５ａは、通信記録テーブル２１に記憶された同一操作の２つのリクエストデータを比較し、２つのリクエストデータに含まれるリクエストパラメータの値が異なるか否かを判定する。一例として、変数化判定部１５ａは、通信記録テーブル２１から処理識別子２１ｂが同一且つＵＲＬ２１ｄが同一であってユーザ識別子２１ｃが異なる２つのリクエストデータを読み出す。変数化判定部１５ａは、読み出した２つのリクエストデータを比較し、各リクエストデータに含まれる同じリクエストパラメータに異なる値があるか否かを判定する。
【００２７】
変数化判定部１５ａは、２つのリクエストデータに含まれる同じリクエストパラメータに異なる値があると判定された場合には、通信記録テーブル３１を参照して、当該パラメータの値が直前のレスポンスデータに含まれるか否かを判定する。変数化判定部１５ａは、異なる値があると判定されたリクエストパラメータの値が直前のレスポンスデータに含まれていないと判定された場合には、ユーザに問い合わせるパラメータ（以降、「問合せパラメータ」という）であるとして、問合せパラメータの値を変数化すると判定する。変数化判定部１５ａは、異なる値があると判定されたリクエストパラメータの値が直前のレスポンスデータに含まれていると判定された場合には、各レスポンスデータから当該パラメータのＸＰａｔｈをそれぞれ取得する。ＸＰａｔｈとは、特定の部分を指し示す位置を意味する。ここでいうＸＰａｔｈは、該当するパラメータの値を指し示す位置である。変数化判定部１５ａは、それぞれ取得したＸＰａｔｈが同じであるか否かを判定する。変数化判定部１５ａは、それぞれ取得したＸＰａｔｈが同じでない場合には、このＸＰａｔｈに対応するリクエストパラメータの値を変数化すると判定する。そして、変数化判定部１５ａは、このリクエストデータの直前の操作後に通信を区切るか否かを区切り判定部１５ｂに判定させる。変数化判定部１５ａは、それぞれ取得したＸＰａｔｈが同じである場合には、このＸＰａｔｈに対応するリクエストパラメータの値を変数化しないと判定する。後述する汎用処理生成部１５ｃによってこのＸＰａｔｈに対応するリクエストパラメータの値に当該ＸＰａｔｈが指定される。
【００２８】
なお、変数化判定部１５ａは、処理識別子２１ｂが同一且つＵＲＬ２１ｄが同一であってユーザ識別子２１ｃが異なる２つのリクエストデータを比較し、同じリクエストパラメータに異なる値がない場合には、当該リクエストデータの内容が同じであると判定する。
【００２９】
区切り判定部１５ｂは、２つのリクエストデータのリクエストパラメータの値がそれぞれ直前の操作のレスポンスデータの入力可能なフォーム部品に含まれ、且つ該フォーム部品の内容が２つのレスポンスデータで不一致であるか否かを判定する。すなわち、区切り判定部１５ｂは、リクエストデータの中に、ユーザによって入力が変更可能なパラメータの値を含んでいるかどうかを判定する。そして、区切り判定部１５ｂは、条件に合致すれば、現操作のリクエストデータに通信区切フラグを対応付けると判定する。
【００３０】
例えば、区切り判定部１５ｂは、異なる値があると判定されたリクエストパラメータの両方のＸＰａｔｈが指す要素（ＤＯＭ要素）を取得し、取得したＤＯＭ要素が入力可能なフォーム部品であるか否かを判定する。区切り判定部１５ｂは、取得したＤＯＭ要素が入力可能なフォーム部品である場合には、両方のフォーム部品の内容を取得する。すなわち、区切り判定部１５ｂは、両方のＤＯＭ要素のテキストノードを含む親要素を取得する。そして、区切り判定部１５ｂは、取得した両方のフォーム部品の内容が不一致である場合には、現操作のリクエストデータに通信区切フラグを対応付けると判定する。
【００３１】
汎用処理生成部１５ｃは、同一の業務において一連の処理（操作）が汎用化された業務リクエストを生成する。例えば、汎用処理生成部１５ｃは、変数化判定部１５ａによって問合せパラメータを含むリクエストパラメータの値を変数化すると判定された場合には、当該リクエストパラメータの値を変数に置き換えたリクエストデータを、汎用化した処理として生成する。汎用処理生成部１５ｃは、変数化判定部１５ａによってＸＰａｔｈに対応するリクエストパラメータの値を変数化しないと判定された場合には、当該リクエストパラメータの値をＸＰａｔｈに置き換えたリクエストデータを、汎用化した処理として生成する。汎用処理生成部１５ｃは、変数化判定部１５ａによってリクエストデータの内容が同じであると判定された場合には、内容が同じであると判定されたリクエストデータそのものを、汎用化した処理とする。そして、汎用処理生成部１５ｃは、汎用化した処理を用いて、業務の順番どおりになるように業務リクエストを生成する。すなわち、生成された業務リクエストは、所定の業務における汎用化されたリクエストの処理フローとなる。
【００３２】
汎用処理生成部１５ｃは、汎用化した処理を汎用処理テーブル２２に記録する。加えて、汎用処理生成部１５ｃは、区切り判定部１５ｂによって通信区切フラグを対応付けると判定されたリクエストデータについて、汎用化した処理に対応付けて通信区切フラグを設定する。
【００３３】
問合せ部１６は、業務リクエストに含まれるリクエストデータに含まれるパラメータの変数に設定される値をユーザに対して問い合わせる。例えば、問合せ部１６は、汎用処理テーブル２２を参照し、区切りフラグ２２ｅが設定されていないリクエストデータ２２ｄに含まれる問合せパラメータの具体的な内容をユーザに対して問い合わせる。すなわち、問合せ部１６は、業務リクエストに関わる業務の再現に先立って、リクエストデータの問合せパラメータの変数に設定される値をユーザに対して問い合わせる。なお、問合せ部１６がユーザに問い合わせる際に用いられる問合せ画面の一例は、後述する。また、問合せ部１６は、汎用処理テーブル２２を参照し、区切りフラグ２２ｅが設定されているリクエストデータ２２ｄの直前の操作のレスポンスデータをウェブブラウザ２に対して送信する。すなわち、問合せ部１６は、業務リクエストに関わる業務の再現中に、リクエストデータのパラメータの変数に設定される値をユーザに対して問い合わせる。
【００３４】
問合せ部１６は、業務リクエストに含まれるリクエストデータとユーザから送信された具体的な内容とを用い、業務リクエストを実行する。例えば、問合せ部１６は、ユーザから問合せパラメータの具体的な内容をリクエストとして受信し、業務リクエストの問合せパラメータの該当箇所に具体的な内容を埋め込む。そして、問合せ部１６は、業務リクエストに含まれるリクエストデータを、順序番号２２ｂの昇順に順次ウェブサーバ３に対して送信する。また、問合せ部１６は、ユーザからレスポンスデータに対するリクエストデータを受信し、受信したリクエストデータをウェブサーバ３に対して送信する。そして、問合せ部１６は、一連のリクエストデータのうちの最後のリクエストデータに対する、ウェブサーバ３のレスポンスデータをユーザ端末に返信する。
【００３５】
ここで、業務リクエストを記憶する汎用処理テーブル２２のデータ構造について、図４を参照しながら説明する。図４は、汎用処理テーブル２２のデータ構造の一例を示す図である。図４に示すように、汎用処理テーブル２２は、処理ＩＤ２２ａ、順序番号２２ｂ、ＵＲＬ２２ｃ、リクエストデータ２２ｄ及び区切りフラグ２２ｅを対応付けて記憶する。処理ＩＤ２２ａは、業務に相当する処理ＩＤを示す。処理ＩＤ２２ａは、通信記録テーブル２１の処理識別子２１ｂに対応する。順序番号２２ｂは、処理ＩＤ２２ａに相当する業務における処理がされる順序を示す。順序番号２２ｂは、通信記録テーブル２１の順序番号２１ａに対応する。ＵＲＬ２２ｃは、ウェブサーバ３で実行すべき処理のＵＲＬを示す。ＵＲＬ２２ｃは、通信記録テーブル２１のＵＲＬ２１ｄに対応する。リクエストデータ２２ｄは、業務リクエストのそれぞれの処理フローであるリクエストデータを示す。区切りフラグ２２ｅは、通信区切フラグを示し、例えば、通信を区切る場合には「ＴＲＵＥ」が設定され、通信を区切らない場合にはヌルが設定される。すなわち、区切フラグ２２ｅが「ＴＲＵＥ」である場合には、対応するリクエストデータ２２ｄを送信する直前の操作後に通信を一旦区切る。なお、リクエストデータ２２ｄ及び区切りフラグ２２ｅは、汎用処理生成部１５ｃによって生成される。
【００３６】
例えば、処理ＩＤ２２ａが「１」、順序番号２２ｂが「２」、ＵＲＬ２２ｃがログインの認証を依頼する「http://xxx/login/」の場合、リクエストデータ２２ｄには、ユーザＩＤ及びパスワードが含まれる。すなわち、リクエストデータ２２ｄは、リクエストパラメータ「ｉｄ」の値が変数「％％」ｄ１に置き換わり、リクエストパラメータ「ｐａｓｓ」の値が変数「％％」ｄ２に置き換わる処理となっている。そして、区切りフラグ２２ｅには、ヌルが設定されている。また、処理ＩＤ２２ａが「１」、順序番号２２ｂが「４」、ＵＲＬ２２ｃが部屋の予約を依頼する「http://xxx/menu/yoyaku/yoyaku.cgi」の場合、リクエストデータ２２ｄには、ルームＩＤが含まれる。すなわち、リクエストデータ２２ｄは、リクエストパラメータ「ｒｏｏｍ＿ｉｄ」の値が変数「％％」ｄ３に置き換わる処理となっている。そして、区切りフラグ２２ｅには、「ＴＲＵＥ」が設定されている。すなわち、順序番号２２ｂ「４」に対応する区切りフラグ２２ｅに「ＴＲＵＥ」が設定されているので、対応するリクエストデータ２２ｄの直前の順序番号２２ｂ「３」の操作後に通信が一旦区切られる。
【００３７】
［第１の具体例］
次に、所定の業務を空き部屋予約業務であるとして、区切り判定部１５ｂが１回目と２回目の通信記録を用いて、所定の操作のリクエストデータに通信区切フラグを対応付けると判定する第１の具体例について、図５〜図７を参照しながら説明する。図５は、１回目と２回目のリクエストデータを示す図であり、図６は、１回目のレスポンスデータの具体例であり、図７は、２回目のレスポンスデータの具体例である。
【００３８】
図５（Ａ）は、空き部屋予約業務のウェブブラウザ２で表わされる画面の遷移である。図５（Ｂ）に示すリクエストデータは、各画面から中継装置１に対して送信されたリクエストデータであって中継装置１のリクエスト記録部１１によって通信記録テーブル２１に記録されたリクエストデータである。図５（Ａ）に示すように、ウェブブラウザ２は、ログイン画面ｇ１、メニュー画面ｇ２、空き部屋予約画面ｇ３及び結果画面ｇ４を順に表示する。
【００３９】
ここで、１回目に空き部屋予約業務を実行した際のリクエスト内容について説明する。図示しない初期画面から送信されたリクエストデータが、ｒ１に示されるデータとなる。ログイン画面ｇ１から送信されたリクエストデータが、ｒ２に示されるデータである。ここでは、リクエストパラメータとして、「ｉｄ」に関するもの（ｐ１）と「ｐａｓｓ」に関するもの（ｐ２）がある。そして、「ｕｓｅｒ１」が「ｉｄ」に関するリクエストパラメータの値となり、「ｐａｓｓ１」が「ｐａｓｓ」に関するリクエストパラメータの値となる。メニュー画面ｇ２から送信されたリクエストデータが、ｒ３に示されるデータである。空き部屋予約画面ｇ３から送信されたリクエストデータが、ｒ４に示されるデータである。ここでは、リクエストパラメータとして、「ｒｏｏｍ＿ｉｄ」に関するもの（ｐ３）がある。そして、「ｒｏｏｍ１」が「ｒｏｏｍ＿ｉｄ」に関するリクエストパラメータの値となる。
【００４０】
２回目に空き部屋予約業務を実行した際のリクエスト内容について説明する。図示しない初期画面から送信されたリクエストデータが、ｒ１´に示されるデータとなる。ログイン画面ｇ１から送信されたリクエストデータが、ｒ２´に示されるデータである。ここでは、リクエストパラメータとして、「ｉｄ」に関するもの（ｐ１´）と「ｐａｓｓ」に関するもの（ｐ２´）がある。そして、「ｕｓｅｒ２」が「ｉｄ」に関するリクエストパラメータの値となり、「ｐａｓｓ２」が「ｐａｓｓ」に関するリクエストパラメータの値となる。メニュー画面ｇ２から送信されたリクエストデータが、ｒ３´に示されるデータである。空き部屋予約画面ｇ３から送信されたリクエストデータが、ｒ４´に示されるデータである。ここでは、リクエストパラメータとして、「ｒｏｏｍ＿ｉｄ」に関するもの（ｐ３´）がある。そして、「ｒｏｏｍ８」が「ｒｏｏｍ＿ｉｄ」に関するリクエストパラメータの値となる。
【００４１】
１回目に空き部屋予約業務を実行した際のレスポンス内容について説明する。図６に示すように、各画面ｇ１〜ｇ４を表示するレスポンスデータは、中継装置１のレスポンス記録部１４によって通信記録テーブル２１に記録されたレスポンスデータである。ここでは、ログイン画面ｇ１のレスポンスデータが符号ｈ１で示される。メニュー画面ｇ２のレスポンスデータが符号ｈ２で示される。空き部屋予約画面ｇ３のレスポンスデータが符号ｈ３で示される。結果画面ｇ４のレスポンスデータが符号ｈ４で示される。
【００４２】
２回目に空き部屋予約業務を実行した際のレスポンス内容について説明する。図７に示すように、各画面ｇ１〜ｇ４を表示するレスポンスデータは、中継装置１のレスポンス記録部１４によって通信記録テーブル２１に記録されたレスポンスデータである。ここでは、ログイン画面ｇ１のレスポンスデータが符号ｈ１´で示される。メニュー画面ｇ２のレスポンスデータが符号ｈ２´で示される。空き部屋予約画面ｇ３のレスポンスデータが符号ｈ３´で示される。結果画面ｇ４のレスポンスデータが符号ｈ４´で示される。
【００４３】
このような前提のもと、変数化判定部１５ａは、通信記録テーブル２１に記憶された１回目と２回目の同一操作のリクエストデータを比較し、２つのリクエストデータに含まれる同じリクエストパラメータの値が異なるか否かを判定する。
【００４４】
ここでは、同一操作のｒ２、ｒ２´のリクエストデータを比較すると、１回目のリクエストパラメータ「ｉｄ」の値が「ｕｓｅｒ１」であり、２回目のリクエストパラメータ「ｉｄ」の値が「ｕｓｅｒ２」であるので、リクエストパラメータ「ｉｄ」の値が異なる。１回目のリクエストパラメータ「ｐａｓｓ」の値が「ｐａｓｓ１」であり、２回目のリクエストパラメータ「ｐａｓｓ」の値が「ｐａｓｓ２」であるので、リクエストパラメータ「ｐａｓｓ」の値が異なる。
【００４５】
また、同一操作のｒ４、ｒ４´のリクエストデータを比較すると、１回目のリクエストパラメータ「ｒｏｏｍ＿ｉｄ」の値が「ｒｏｏｍ１」であり、２回目のリクエストパラメータ「ｒｏｏｍ＿ｉｄ」の値が「ｒｏｏｍ２」であるので、リクエストパラメータ「ｒｏｏｍ＿ｉｄ」の値が異なる。
【００４６】
次に、変数化判定部１５ａは、２つのリクエストデータに含まれる同じリクエストパラメータに異なる値があると判定された場合には、通信記録テーブル２１を参照して、当該パラメータの値が直前のレスポンスデータに含まれるか否かを判定する。
【００４７】
ここでは、１回目の操作のリクエストデータｒ２の直前のレスポンスデータは、符号ｈ１（図６参照）で示される。２回目の操作のリクエストデータｒ２´の直前のレスポンスデータは、符号ｈ１´（図７参照）で示される。１回目の操作のリクエストデータｒ２に含まれるリクエストパラメータ「ｉｄ」の値「ｕｓｅｒ１」は、直前のレスポンスデータｈ１に含まれない。１回目の操作のリクエストデータｒ２に含まれるリクエストパラメータ「ｐａｓｓ」の値「ｐａｓｓ１」は、直前のレスポンスデータｈ１に含まれない。同様に、２回目の操作のリクエストデータｒ２´に含まれるリクエストパラメータ「ｉｄ」の値「ｕｓｅｒ２」は、直前のレスポンスデータｈ１´に含まれない。２回目の操作のリクエストデータｒ２´に含まれるリクエストパラメータ「ｐａｓｓ」の値「ｐａｓｓ２」は、直前のレスポンスデータｈ１´に含まれない。変数化判定部１５ａは、リクエストパラメータ「ｉｄ」及び「ｐａｓｓ」が問合せパラメータであるとして、問合せパラメータの値を変数化すると判定する。したがって、区切り判定部１５ｂは、ｒ２、ｒ２´のリクエストデータに通信区切フラグを対応付けないと判定する。
【００４８】
また、１回目の操作のリクエストデータｒ４の直前のレスポンスデータは、符号ｈ３（図６参照）で示される。２回目の操作のリクエストデータｒ４´の直前のレスポンスデータは、符号ｈ３´（図７参照）で示される。１回目の操作のリクエストデータｒ４に含まれるリクエストパラメータ「ｒｏｏｍ＿ｉｄ」の値「ｒｏｏｍ１」は、直前のレスポンスデータｈ３に含まれる（符号ｈ３１）。２回目の操作のリクエストデータｒ４´に含まれるリクエストパラメータ「ｒｏｏｍ＿ｉｄ」の値「ｒｏｏｍ８」は、直前のレスポンスデータｈ３´に含まれる（符号ｈ３１´）。
【００４９】
次に、リクエストデータｒ４、ｒ４´のそれぞれ直前のレスポンスデータに含まれるパラメータについて、変数化判定部１５ａは、２つのレスポンスデータから当該パラメータのＸＰａｔｈをそれぞれ取得し、それぞれのＸＰａｔｈが同じであるか否かを判定する。ここでは、リクエストパラメータ「ｒｏｏｍ＿ｉｄ」の１回目のＸＰａｔｈは、「ｈｔｍｌ／ｂｏｄｙ／ｆｏｒｍ／ｉｎｐｕｔ［１］」である。これは、空き部屋予約画面ｇ３のラジオボタンの１個目の位置を指し示す。２回目のＸＰａｔｈは、「ｈｔｍｌ／ｂｏｄｙ／ｆｏｒｍ／ｉｎｐｕｔ［３］」である。これは、空き部屋予約画面ｇ３のラジオボタンの３個目の位置を指し示す。したがって、変数化判定部１５ａは、それぞれのＸＰａｔｈが同じでないと判定する。
【００５０】
次に、区切り判定部１５ｂは、異なる値があると判定されたリクエストパラメータ「ｒｏｏｍ＿ｉｄ」の両方のＸＰａｔｈが指すＤＯＭ要素を取得し、取得したＤＯＭ要素が入力可能なフォーム部品であるか否かを判定する。ここでは、１回目のＸＰａｔｈが指すＤＯＭ要素として、「＜ｉｎｐｕｔ  ｔｙｐｅ＝ｒａｄｉｏ  ｎａｍｅ＝ｒｏｏｍ＿ｉｄ  ｖａｌｕｅ＝ｒｏｏｍ１＞」が取得される（符号ｈ３２）。２回目のＸＰａｔｈが指すＤＯＭ要素として、「＜ｉｎｐｕｔ  ｔｙｐｅ＝ｒａｄｉｏ  ｎａｍｅ＝ｒｏｏｍ＿ｉｄ  ｖａｌｕｅ＝ｒｏｏｍ８＞」が取得される（符号ｈ３２´）。これら２つのＤＯＭ要素は、それぞれラジオボタンであるので、入力可能なフォーム部品であると判定される。
【００５１】
次に、区切り判定部１５ｂは、取得されたＤＯＭ要素が入力可能なフォーム部品であるので、両方のフォーム部品の内容を取得する。すなわち、区切り判定部１５ｂは、両方のＤＯＭ要素の親要素を取得する。区切り判定部１５ｂは、フォーム部品の内容が２つのレスポンスデータで不一致であるか否かを判定する。ここでは、１回目のＤＯＭ要素の親要素として、「＜ｆｏｒｍ  ａｃｔｉｏｎ・・・ｒｏｏｍ１・・・ｒｏｏｍ４・・・ｒｏｏｍ７・・・＜／ｆｏｒｍ＞」が取得される（符号ｈ３３）。２回目のＤＯＭ要素の親要素として、「＜ｆｏｒｍ  ａｃｔｉｏｎ・・・ｒｏｏｍ１・・・ｒｏｏｍ５・・・ｒｏｏｍ８・・・＜／ｆｏｒｍ＞」（符号ｈ３３´）が取得される。したがって、区切り判定部１５ｂは、ＤＯＭ要素の親要素が不一致であると判定する。
【００５２】
そして、区切り判定部１５ｂは、取得した両方のＤＯＭ要素の親要素が不一致である場合には、現操作のリクエストデータに通信区切フラグを対応付けると判定する。ここでは、区切り判定部１５ｂは、両方のＤＯＭ要素の親要素が符号ｈ３３と符号ｈ３３´とで不一致であるので、現操作のリクエストデータｒ４、ｒ４´に通信区切フラグを対応付けると判定する。これにより、問合せ部１６は、業務の再現中に、通信区切フラグが対応付けられたリクエストデータの直前の操作のレスポンスデータをウェブブラウザ２に送信することができ、通信を一旦区切ることができる。
【００５３】
［第２の具体例］
ところで、第１の具体例では、リクエストデータｒ４、ｒ４´のそれぞれ直前のレスポンスデータに含まれるパラメータのＸＰａｔｈが同じでない場合に、区切り判定部１５ｂが、リクエストデータｒ４、ｒ４´に通信区切フラグを対応付ける場合を説明した。しかしながら、区切り判定部１５ｂは、これに限定されず、リクエストデータｒ４、ｒ４´のそれぞれ直前のレスポンスデータに含まれるパラメータのＸＰａｔｈが同じである場合に、リクエストデータｒ４、ｒ４´に通信区切フラグを対応付ける場合であっても良い。
【００５４】
そこで、第２の具体例では、区切り判定部１５ｂは、リクエストデータｒ４、ｒ４´のそれぞれ直前のレスポンスデータに含まれるパラメータのＸＰａｔｈが同じである場合に、リクエストデータｒ４、ｒ４´に通信区切フラグを対応付ける場合について説明する。
【００５５】
図８は、１回目と２回目のリクエストデータを示す図である。図８（Ａ）は、空き部屋予約業務のウェブブラウザ２で表わされる画面の遷移である。この画面の遷移は、図５（Ａ）で示した第１の具体例の画面の遷移と同じである。図８（Ｂ）に示すリクエストデータは、各画面から中継装置１に対して送信されたリクエストデータであって中継装置１のリクエスト記録部１１によって通信記録テーブル２１に記録されたリクエストデータである。第１の具体例と第２の具体例とが異なるところは、第２の具体例では、ｒ４のリクエストデータに含まれるリクエストパラメータ「ｒｏｏｍ＿ｉｄ」の値が、２回目に「ｒｏｏｍ３」（ｐ４´）に変更した点にある。つまり、パラメータ「ｒｏｏｍ＿ｉｄ」のＸＰａｔｈが、１回目、２回目共、画面ｇ３のラジオボタンの１個目の位置を指し示していることを表す。
【００５６】
このような前提のもと、区切り判定部１５ｂは、異なる値があると判定されたリクエストパラメータ「ｒｏｏｍ＿ｉｄ」の両方のＸＰａｔｈが指すＤＯＭ要素を取得し、取得したＤＯＭ要素が入力可能なフォーム部品であるか否かを判定する。ここでは、２つのＤＯＭ要素は、それぞれラジオボタンであるので、入力可能なフォーム部品であると判定される。
【００５７】
次に、区切り判定部１５ｂは、取得されたＤＯＭ要素が入力可能なフォーム部品であるので、両方のフォーム部品の内容を取得する。すなわち、区切り判定部１５ｂは、両方のＤＯＭ要素の親要素を取得する。区切り判定部１５ｂは、フォーム部品の内容が２つのレスポンスデータで不一致であるか否かを判定する。ここでは、１回目のＤＯＭ要素の親要素として、「＜ｆｏｒｍ  ａｃｔｉｏｎ・・・ｒｏｏｍ１・・・ｒｏｏｍ４・・・ｒｏｏｍ７・・・＜／ｆｏｒｍ＞」が取得される。２回目のＤＯＭ要素の親要素として、「＜ｆｏｒｍ  ａｃｔｉｏｎ・・・ｒｏｏｍ３・・・ｒｏｏｍ５・・・ｒｏｏｍ８・・・＜／ｆｏｒｍ＞」が取得される。したがって、区切り判定部１５ｂは、ＤＯＭ要素の親要素が不一致であると判定する。
【００５８】
そして、区切り判定部１５ｂは、取得した両方のＤＯＭ要素の親要素が不一致である場合には、現操作のリクエストデータに通信区切フラグを対応付けると判定する。ここでは、区切り判定部１５ｂは、両方のＤＯＭ要素の親要素が不一致であるので、現操作のリクエストデータｒ４、ｒ４´に通信区切フラグを対応付けると判定する。つまり、区切り判定部１５ｂは、リクエストデータｒ４、ｒ４´のそれぞれ直前のレスポンスデータに含まれるパラメータのＸＰａｔｈが同じである場合であっても、リクエストデータｒ４、ｒ４´に通信区切フラグを対応付けることができる。これにより、問合せ部１６は、業務の再現中に、通信区切フラグが対応付けられたリクエストデータの直前の操作のレスポンスデータをウェブブラウザ２に送信することができ、通信を一旦区切ることができる。
【００５９】
ここで、問合せ画面の一例を、図９を参照しながら説明する。図９は、問合せ画面の一例を示す図である。図９に示すように、問合せパラメータがユーザＩＤに相当する「ＵＳＥＲ  ＩＤ」ｔ１及びパスワードに相当する「ＰＡＳＳＷＯＲＤ」ｔ２である場合の例である。ｔ０部分が、各問合せパラメータに対して具体的な内容を入力可能な領域となる。なお、問い合わせパラメータｔ１、ｔ２の各タイトル「ＵＳＥＲ  ＩＤ」及び「ＰＡＳＳＷＯＲＤ」は、各リクエストデータの問い合わせパラメータから取得される。ただし、各タイトルは、リクエストデータに限らず、レスポンスデータの問い合わせパラメータから取得されるものとしても良い。
【００６０】
［実施例に係る処理比較解析処理の手順］
次に、実施例に係る処理比較解析処理の手順を、図１０Ａ〜図１０Ｃを参照して説明する。図１０Ａ〜図１０Ｃは、実施例に係る処理比較解析処理の手順を示すフローチャートである。
【００６１】
まず、変数化判定部１５ａは、通信記録テーブル２１に同一の処理識別子２１ｂがあるか否かを判定する（ステップＳ２１）。同一の処理識別子２１ｂがないと判定された場合には（ステップＳ２１；Ｎｏ）、変数化判定部１５ａは、同一操作のリクエストデータが複数存在しないと判断して、処理比較解析処理を終了する。一方、同一の処理識別子２１ｂがあると判定された場合には（ステップＳ２１；Ｙｅｓ）、変数化判定部１５ａは、同一ＵＲＬ毎にリクエストデータを比較する（ステップＳ２２）。
【００６２】
そして、変数化判定部１５ａは、比較対象の２つのリクエストデータ２１ｅに含まれるリクエストパラメータのパラメータ名およびパラメータ数が同じであるか否かを判定する（ステップＳ２３）。パラメータ名とパラメータ数が同じでないと判定された場合には（ステップＳ２３；Ｎｏ）、変数化判定部１５ａは、リクエストデータ２１ｅの構成が同一でないと判断し、処理比較解析処理を終了する。
【００６３】
一方、比較対象の２つのリクエストデータ２１ｅに含まれるリクエストパラメータのパラメータ名とパラメータ数が同じであると判定された場合には（ステップＳ２３；Ｙｅｓ）、変数化判定部１５ａは、リクエストデータ２１ｅの構成が同一であると判定する。そして、変数化判定部１５ａは、比較対象の２つのリクエストデータ２１ｅに含まれるリクエストパラメータに異なる値があるか否かを判定する（ステップＳ２４）。比較対象の２つのリクエストデータ２１ｅに含まれるリクエストパラメータに異なる値がないと判定された場合には（ステップＳ２４；Ｎｏ）、変数化判定部１５ａは、当該リクエストデータ２１ｅの内容が同一であると判定し、ステップＳ３１に移行する。
【００６４】
一方、比較対象の２つのリクエストデータ２１ｅに含まれるリクエストパラメータに異なる値があると判定された場合には（ステップＳ２４；Ｙｅｓ）、変数化判定部１５ａは、以下の処理を行う。すなわち、変数化判定部１５ａは、それぞれの直前のレスポンスデータ２１ｆから異なる値があると判定されたリクエストパラメータの値を探索する（ステップＳ２５）。
【００６５】
そして、変数化判定部１５ａは、異なる値があると判定されたリクエストパラメータの値が直前のレスポンスデータに含まれているか否かを判定する（ステップＳ２６）。リクエストパラメータの値が直前のレスポンスデータに含まれていないと判定された場合には（ステップＳ２６；Ｎｏ）、変数化判定部１５ａは、このリクエストパラメータを問合せパラメータと判断し、問合せパラメータの値を変数化すると判定する。そして、汎用処理生成部１５ｃは、パラメータの値を変数に置き換えたリクエストデータを生成し（ステップＳ２７）、ステップＳ３１に移行する。
【００６６】
一方、リクエストパラメータの値が直前のレスポンスデータに含まれていると判定された場合には（ステップＳ２６；Ｙｅｓ）、変数化判定部１５ａは、両方のリクエストパラメータのＸＰａｔｈを各レスポンスデータから取得する（ステップＳ２８）。そして、変数化判定部１５ａは、それぞれ取得したＸＰａｔｈが同じであるか否かを判定する（ステップＳ２９）。
【００６７】
ＸＰａｔｈが同じでないと判定された場合には（ステップＳ２９；Ｎｏ）、変数化判定部１５ａは、第１の区切り判定処理（Ａ）を実行する。例えば、図５〜図７で示した第１の具体例の場合である。なお、第１の区切り判定処理（Ａ）の手順は、後述する。第１の区切り判定処理から遷移が戻ると、変数化判定部１５ａは、ＸＰａｔｈに対応するリクエストパラメータの値を変数化すると判定する。そして、変数化判定部１５ａは、変数化すると判定されたリクエストパラメータの値を変数化すべく、ステップＳ２７に移行する。
【００６８】
一方、ＸＰａｔｈが同じであると判定された場合には（ステップＳ２９；Ｙｅｓ）、変数化判定部１５ａは、このＸＰａｔｈに対応するリクエストパラメータの値を変数化しないと判定する。そして、汎用処理生成部１５ｃは、リクエストパラメータにＸＰａｔｈを指定したリクエストデータを生成する（ステップＳ３０）。そして、変数化判定部１５ａは、第２の区切り判定処理（Ｂ）を実行する。例えば、図８で示した第２の具体例の場合である。なお、第２の区切り判定処理（Ｂ）の手順は、後述する。第２の区切り判定処理から遷移が戻ると、変数化判定部１５ａは、ステップＳ３１に移行する。
【００６９】
ステップＳ３１では、変数化判定部１５ａは、生成されたリクエストデータを汎用処理として汎用処理テーブル２２に登録する（ステップＳ３１）。すなわち、汎用処理生成部１５ｃは、業務におけるリクエストの順番通りになるように、業務リクエストを作成し、汎用処理テーブル２２に登録する。なお、作成された業務リクエストは、所定の業務における汎用化されたリクエストの処理フローとなる。
【００７０】
その後、変数化判定部１５ａは、次の順序となるＵＲＬ２１ｄが存在するか否かを判定する（ステップＳ３２）。そして、次の順序となるＵＲＬ２１ｄが存在すると判定される場合には（ステップＳ３２；Ｙｅｓ）、変数化判定部１５ａは、次の順序となるＵＲＬ２１ｄのリクエストの汎用化をすべく、ステップＳ２２に移行する。一方、次の順序となるＵＲＬ２１ｄが存在しないと判定される場合には（ステップＳ３２；Ｎｏ）、変数化判定部１５ａは、処理比較解析処理を終了する。
【００７１】
図１０Ｂは、第１の区切り判定処理の手順である。
【００７２】
図１０Ｂに示すように、区切り判定部１５ｂは、異なる値があると判定されたリクエストパラメータの両方のＸＰａｔｈが指す値であるＤＯＭ要素を取得する（ステップＳ４１）。一例として、リクエストパラメータ「ｒｏｏｍ＿ｉｄ」の１回目のＸＰａｔｈが、「ｈｔｍｌ／ｂｏｄｙ／ｆｏｒｍ／ｉｎｐｕｔ［１］」であるとする。２回目のＸＰａｔｈが、「ｈｔｍｌ／ｂｏｄｙ／ｆｏｒｍ／ｉｎｐｕｔ［３］」であるとする。すると、図６のレスポンスデータｈ３を参照すると、１回目のＸＰａｔｈが指すＤＯＭ要素として、符号ｈ３２で示される「＜ｉｎｐｕｔ  ｔｙｐｅ＝ｒａｄｉｏ  ｎａｍｅ＝ｒｏｏｍ＿ｉｄ  ｖａｌｕｅ＝ｒｏｏｍ１＞」が取得される。図７のレスポンスデータｈ３´を参照すると、２回目のＸＰａｔｈが指すＤＯＭ要素として、符号ｈ３２´で示される「＜ｉｎｐｕｔ  ｔｙｐｅ＝ｒａｄｉｏ  ｎａｍｅ＝ｒｏｏｍ＿ｉｄ  ｖａｌｕｅ＝ｒｏｏｍ８＞」が取得される。
【００７３】
そして、区切り判定部１５ｂは、取得されたＤＯＭ要素が利用者入力可能なフォーム要素であるか否かを判定する（ステップＳ４２）。一例として、取得されたＤＯＭ要素がとして取得された「＜ｉｎｐｕｔ  ｔｙｐｅ＝ｒａｄｉｏ  ｎａｍｅ＝ｒｏｏｍ＿ｉｄ  ｖａｌｕｅ＝ｒｏｏｍ１＞」は、ラジオボタンであるので、利用者入力可能なフォーム要素であると判定される。
【００７４】
そして、ＤＯＭ要素が利用者入力可能なフォーム要素でないと判定された場合には（ステップＳ４２；Ｎｏ）、区切り判定部１５ｂは、第１の区切り判定処理を終了する。
【００７５】
一方、ＤＯＭ要素が利用者入力可能なフォーム要素であると判定された場合には（ステップＳ４２；Ｙｅｓ）、区切り判定部１５ｂは、両方のＤＯＭ要素のテキストノードを含む親要素を取得する（ステップＳ４３）。一例として、図６のレスポンスデータｈ３を参照すると、１回目のＤＯＭ要素の親要素として、「＜ｆｏｒｍ  ａｃｔｉｏｎ・・・ｒｏｏｍ１・・・ｒｏｏｍ４・・・ｒｏｏｍ７・・・＜／ｆｏｒｍ＞」が取得される。図７のレスポンスデータｈ３´を参照すると、２回目のＤＯＭ要素の親要素として、「＜ｆｏｒｍ  ａｃｔｉｏｎ・・・ｒｏｏｍ３・・・ｒｏｏｍ５・・・ｒｏｏｍ８・・・＜／ｆｏｒｍ＞」が取得される。
【００７６】
そして、区切り判定部１５ｂは、両方の親要素が一致するか否かを判定する（ステップＳ４４）。両方の親要素が一致すると判定された場合には（ステップＳ４４；Ｙｅｓ）、区切り判定部１５ｂは、第１の区切り判定処理を終了する。すなわち、区切り判定部１５ｂは、１回目も２回目もレスポンスデータによる表示が同じであるので、通信区切フラグを設定しないものとする。
【００７７】
一方、両方の親要素が一致しないと判定された場合には（ステップＳ４４；Ｎｏ）、区切り判定部１５ｂは、現リクエストデータに通信区切フラグを対応付けると判定する。そして、汎用処理生成部１５ｃは、汎用処理テーブル２２の、該当リクエストパラメータが含まれるリクエストデータ２２ｄに対応する区切りフラグ２２ｅに「ＴＲＵＥ」を設定する（ステップＳ４５）。そして、区切り判定部１５ｂは、第１の区切り判定処理を終了する。
【００７８】
図１０Ｃは、第２の区切り判定処理の手順である。
【００７９】
図１０Ｃに示すように、区切り判定部１５ｂは、異なる値があると判定されたリクエストパラメータについて、第１の区切り判定処理を実行する（ステップＳ５１）。区切り判定部１５ｂは、該当するリクエストパラメータが含まれるリクエストデータ２２ｄに対応する区切りフラグ２２ｅに「ＴＲＵＥ」が設定されたか否かを判定する（ステップＳ５２）。
【００８０】
区切りフラグ２２ｅに「ＴＲＵＥ」が設定されたと判定された場合には（ステップＳ５２；Ｙｅｓ）、汎用処理生成部１５ｃは、該当するリクエストパラメータの値を変数に置き換えたリクエストデータを生成する（ステップＳ５３）。すなわち、汎用処理生成部１５ｃは、該当するリクエストパラメータについて、既にＸＰａｔｈを指定したリクエストデータを、値を変数にしたリクエストデータに置き換えたリクエストデータを生成する。そして、区切り判定部１５ｂは、第２の区切り判定処理を終了する。
【００８１】
一方、区切りフラグ２２ｅに「ＴＲＵＥ」が設定されないと判定された場合には（ステップＳ５２；Ｎｏ）、区切り判定部１５ｂは、第２の区切り判定処理を終了する。
【００８２】
［問合せ処理の手順］
次に、実施例に係る問合せ処理の手順を、図１１を参照して説明する。図１１は、実施例に係る問合せ処理の手順を示すフローチャートである。
【００８３】
まず、問合せ部１６は、業務処理のイベントがあったか否かを判定する（ステップＳ６１）。業務処理のイベントがなかったと判定された場合には（ステップＳ６１；Ｎｏ）、問合せ部１６は、業務処理のイベントがあるまで、判定処理を繰り返す。一方、業務処理のイベントがあったと判定された場合には（ステップＳ６１；Ｙｅｓ）、問合せ部１６は、イベントがあった業務処理の該当処理を汎用処理テーブル２２から抽出する（ステップＳ６２）。例えば、問合せ部１６は、イベントがあった業務処理の処理ＩＤ２２ａに対応するリクエストデータ２２ｄを汎用処理テーブル２２から抽出する。
【００８４】
そして、問合せ部１６は、抽出したリクエストデータ２２ｄの中から変数化された問合せパラメータを抽出する（ステップＳ６３）。そして、問合せ部１６は、問合せパラメータの具体的な内容を、業務の再現に先立ってユーザに対して問い合わせるべく、変数化された問合せパラメータの入力画面をユーザに対して送信する（ステップＳ６４）。例えば、問合せ部１６は、汎用処理テーブル２２を参照し、区切りフラグ２２ｅが設定されていない業務リクエスト（リクエストデータ２２ｄ）を選択する。そして、問合せ部１６は、選択したリクエストデータ２２ｄに含まれる問合せパラメータの変数で置き換わった部分を空欄とし、実行ボタンが付いた画面データを生成し、生成した画面データをユーザに対して送信する。
【００８５】
そして、問合せ部１６は、ユーザからのリクエストを受信する（ステップＳ６５）。例えば、問合せ部１６は、空欄とされた問合せパラメータの具体的な内容を、ユーザからリクエストとして受信する。そして、問合せ部１６は、ユーザから空欄とされた問合せパラメータの具体的な内容を受け取ると、業務リクエストの問合せパラメータの該当部分に具体的な内容を埋め込む。
【００８６】
続いて、問合せ部１６は、汎用処理テーブル２２の先頭のリクエストデータを選択する（ステップＳ６６）。問合せ部１６は、選択したリクエストデータが存在するか否かを判定する（ステップＳ６７）。選択したリクエストデータが存在すると判定された場合は、（ステップＳ６７；Ｙｅｓ）、問合せ部１６は、選択したリクエストデータの区切りフラグ２２ｅが「ＴＲＵＥ」に設定されているか否かを判定する（ステップＳ６８）。
【００８７】
選択したリクエストデータの区切りフラグ２２ｅが「ＴＲＵＥ」に設定されていると判定された場合には（ステップＳ６８；Ｙｅｓ）、問合せ部１６は、ウェブブラウザ３から受信したレスポンスデータをウェブブラウザ２に送信する（ステップＳ６９）。すなわち、問合せ部１６は、選択したリクエストデータの直前の操作のレスポンスデータをウェブブラウザ２に送信する。レスポンスデータをウェブブラウザ２に送信するのは、ユーザにパラメータの値の入力を促すためである。
【００８８】
そして、問合せ部１６は、ユーザからのリクエストデータを受信する（ステップＳ７０）。なお、問合せ部１６は、ユーザからリクエストデータを受け取ると、受け取ったリクエストデータを参照して、業務リクエスト内の該当パラメータの該当部分に具体的な内容を埋め込むようにしても良い。そして、問合せ部１６は、リクエストデータをウェブサーバ３へ送信する（ステップＳ７１）。そして、問合せ部１６は、ステップＳ７３に移行する。
【００８９】
ステップＳ６８では、問合せ部１６は、選択したリクエストデータの区切りフラグ２２ｅが「ＴＲＵＥ」に設定されていないと判定した場合には（ステップＳ６８；Ｎｏ）、選択したリクエストデータをウェブサーバ３へ送信する（ステップＳ７２）。そして、問合せ部１６は、ステップＳ７３に移行する。
【００９０】
ステップＳ７３では、問合せ部１６は、ウェブサーバ３からリクエストデータに対するレスポンスデータを受信する（ステップＳ７３）。そして、問合せ部１６は、次のリクエストデータを選択し（ステップＳ７４）、ステップＳ６７に移行する。
【００９１】
ステップＳ６７では、問合せ部１６は、選択したリクエストデータが存在しないと判定した場合は、（ステップＳ６７；Ｎｏ）、最終のレスポンスデータをウェブブラウザ２に送信する（ステップＳ７５）。そして、問合せ部１６は、問合せ処理を終了する。
【００９２】
［実施例の効果］
上記実施例によれば、中継装置１は、ウェブブラウザ２から送信される一連のリクエストデータについて、ウェブサーバ３に送信されるリクエストデータとウェブサーバ３から受信するレスポンスデータとを対応付けて記憶部２０に記憶する。中継装置１は、記憶部２０を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能なフォーム部品に含まれ、且つ該フォーム部品の内容が２つのレスポンスデータで不一致であるか否かを判定する。中継装置１は、２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能なフォーム部品に含まれ、且つ該フォーム部品の内容が２つのレスポンスデータで不一致であると判定されるリクエストデータを選択する。中継装置１は、選択したリクエストデータに対応付けて通信を区切るために用いられる通信区切フラグを記憶部２０に設定する。かかる構成によれば、中継装置１は、通信を再現する際に、通信区切フラグに対応付けられたリクエストデータで通信を区切ることが可能となり、適切な再現アプリケーションを生成することが可能となる。すなわち、中継装置１は、通信区切フラグに対応するリクエストデータの直前のレスポンスデータのフォーム部品の内容が１回目と２回目とで異なる場合に、このリクエストデータで通信を区切ることができ、適切な再現アプリケーションを生成することが可能となる。
【００９３】
また、上記実施例によれば、中継装置１は、記憶部２０に記憶されたリクエストデータを順番にウェブサーバ３に送信し、通信区切フラグに対応付けられたリクエストデータの直前のレスポンスデータをウェブブラウザ２に送信する。かかる構成によれば、中継装置１は、ウェブブラウザ２にパラメータ値の入力を促すことができ、入力されたパラメータ値を含んだリクエストデータを用いることにより適切に再現することができる。
【００９４】
また、上記実施例によれば、中継装置１は、記憶部２０を参照し、通信区切フラグに対応付けられたリクエストデータであるか否かを判定する。中継装置１は、通信区切フラグに対応付けられたリクエストデータでないと判定された場合に、当該リクエストデータをウェブサーバ３に送信する。中継装置１は、通信区切フラグに対応付けられたリクエストデータであると判定された場合に、当該リクエストデータの直前のレスポンスデータをウェブブラウザ２に送信する。中継装置１は、送信したレスポンスデータの入力可能なフォーム部品に含まれるパラメータ値の入力を組み込んだリクエストデータをウェブサーバ３に送信する。かかる構成によれば、中継装置１は、入力可能なフォーム部品に含まれるパラメータ値の入力を組み込んだリクエストデータをウェブサーバ３に送信することで、フォーム部品の内容が毎回変わる場合であっても、適切なリクエストデータを生成できる。この結果、中継装置１は、適切な通信結果を得ることができる。
【００９５】
なお、中継装置１は、ウェブブラウザ２と同一のネットワーク上に適用した場合を説明した。しかしながら、中継装置１は、ウェブブラウザ２と異なるネットワーク上に適用しても良い。この場合に、ウェブブラウザ２と中継装置１との間にプロキシサーバを設置することもある。このプロキシサーバと中継装置１とを一体化することも可能である。
【００９６】
［プログラムなど］
なお、中継装置１は、ウェブブラウザ２と同一のネットワーク上に適用した場合を説明した。しかしながら、中継装置１は、ウェブブラウザ２と異なるネットワーク上に適用しても良い。この場合に、ウェブブラウザ２と中継装置１との間にプロキシサーバを設置することもある。このプロキシサーバと中継装置１１とを一体化することも可能である。
【００９７】
また、中継装置１は、既知のパーソナルコンピュータ、ワークステーションなどの情報処理装置に、上記した処理比較解析部１５及び問合せ部１６等の各機能を搭載することによって実現することができる。
【００９８】
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的態様は図示のものに限られず、その全部又は一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的又は物理的に分散・統合して構成することができる。例えば、リクエスト記録部１１とリクエスト送信部１２とを１個の部として統合しても良いし、レスポンス送信部１３とレスポンス記録部１４とを１個の部として統合しても良い。一方、区切り判定部１５ｂを、第１の区切り判定部と、第２の区切り判定部とに分散しても良い。すなわち、第１の区切り判定部は、２つのリクエストデータのリクエストパラメータの値がそれぞれ直前の操作のレスポンスデータの入力可能なフォーム部品に含まれるか否かを判定する。第２の区切り判定部は、該フォーム部品の内容が２つのレスポンスデータで不一致であるか否かを判定する。また、通信記録テーブル２１や汎用処理テーブル２２などの記憶部を中継装置１の外部装置としてネットワーク経由で接続するようにしても良い。
【００９９】
また、上記実施例で説明した各種の処理は、あらかじめ用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図１２を用いて、図２に示した中継装置１の制御部１０と同様の機能を有する中継プログラムを実行するコンピュータの一例を説明する。なお、中継プログラムは、ウェブアプリケーション生成プログラムの一例である。
【０１００】
図１２は、中継プログラムを実行するコンピュータを示す図である。図１２に示すように、コンピュータ１０００は、ＲＡＭ（Random  Access  Memory）１０１０と、ネットワークインタフェース装置１０２０と、ＨＤＤ１０３０と、ＣＰＵ（Central  Processing  Unit）１０４０、媒体読取装置１０５０及びバス１０６０とを有する。ＲＡＭ１０１０、ネットワークインタフェース装置１０２０、ＨＤＤ１０３０、ＣＰＵ１０４０、媒体読取装置１０５０は、バス１０６０によって接続されている。
【０１０１】
そして、ＨＤＤ１０３０には、図２に示した制御部１０と同様の機能を有する中継プログラム１０３１が記憶される。また、ＨＤＤ１０３０には、図２に示した通信記録テーブル２１及び汎用処理テーブル２２に対応する中継処理関連情報１０３２が記憶される。
【０１０２】
そして、ＣＰＵ１０４０が中継プログラム１０３１をＨＤＤ１０３０から読み出してＲＡＭ１０１０に展開することにより、中継プログラム１０３１は、中継プロセス１０１１として機能するようになる。そして、中継プロセス１０１１は、中継処理関連情報１０３２から読み出した情報などを適宜ＲＡＭ１０１０上の自身に割り当てられた領域に展開し、この展開したデータなどに基づいて各種データ処理を実行する。
【０１０３】
媒体読取装置１０５０は、中継プログラム１０３０がＨＤＤ１０３０に格納されていない場合であっても中継プログラム１０３０を記憶する媒体などから中継プログラム１０３１を読み取る。媒体読取装置１０５０には、例えばＣＤ−ＲＯＭや光ディスク装置がある。また、ネットワークインタフェース装置１０２０は、外部装置とネットワーク経由で接続する装置であり、有線、無線がある。
【０１０４】
なお、上記の中継プログラム１０３１は、必ずしもＨＤＤ１０３０に格納されている必要はなく、ＣＤ−ＲＯＭなどの媒体読取装置１０５０に記憶されたこのプログラムを、コンピュータ１０００が読み出して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）などを介してコンピュータ１０００に接続される他のコンピュータ（またはサーバ）などにこのプログラムを記憶させておいても良い。この場合には、コンピュータ１０００がネットワークインタフェース装置１０２０を介してこれらからプログラムを読み出して実行する。
【０１０５】
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１０６】
（付記１）コンピュータに、
第１の装置から送信される一連のリクエストデータについて、第２の装置に送信されるリクエストデータと前記第２の装置から受信するレスポンスデータとを対応付けて記憶した記憶装置を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定し、
２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されるリクエストデータを選択し、
前記選択したリクエストデータに対応付けて通信を区切るために用いられるフラグを前記記憶装置に設定する
処理を実行させるウェブアプリケーション生成プログラム。
【０１０７】
（付記２）前記記憶装置にされたリクエストデータを順番に前記第２の装置に送信し、前記フラグに対応付けられたリクエストデータの直前のレスポンスデータを前記第１の装置に送信する
処理を実行させる付記１に記載のウェブアプリケーション生成プログラム。
【０１０８】
（付記３）前記送信する処理は、
前記記憶装置を参照し、前記フラグに対応付けられたリクエストデータであるか否かを判定し、
前記フラグに対応付けられたリクエストデータでないと判定された場合に、当該リクエストデータを前記第２の装置に送信し、
前記フラグに対応付けられたリクエストデータであると判定された場合に、当該リクエストデータの直前のレスポンスデータを前記第１の装置に送信し、
前記送信したレスポンスデータの前記部品に含まれるパラメータ値の入力を組み込んだリクエストデータを前記第２の装置に送信する
処理を実行させる付記２に記載のウェブアプリケーション生成プログラム。
【０１０９】
（付記４）第１の装置から送信される一連のリクエストデータについて、第２の装置に送信されるリクエストデータと前記第２の装置から受信するレスポンスデータとを対応付けて記憶した記憶部と、
前記記憶部を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定する判定部と、
前記判定部によって２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されたリクエストデータを選択する選択部と、
前記選択部によって選択されたリクエストデータに対応付けて通信を区切るために用いられるフラグを前記記憶装置に設定する設定部と、
を有することを特徴とする中継装置。
【０１１０】
（付記５）コンピュータが、
第１の装置から送信される一連のリクエストデータについて、第２の装置に送信されるリクエストデータと前記第２の装置から受信するレスポンスデータとを対応付けて記憶した記憶装置を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定し、
２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されるリクエストデータを選択し、
前記選択したリクエストデータに対応付けて通信を区切るために用いられるフラグを前記記憶装置に設定する
各処理を実行するウェブアプリケーション生成方法。
【０１１１】
（付記６）第１の装置と、第２の装置と、前記第１の装置と前記第２の装置との通信を中継する中継装置とを有する中継システムにおいて、
前記中継装置は、
前記第１の装置から送信される一連のリクエストデータについて、前記第２の装置に送信されるリクエストデータと前記第２の装置から受信するレスポンスデータとを対応付けて記憶した記憶部と、
前記記憶部を参照し、２つのリクエストデータのパラメータ値がそれぞれ直前のレスポンスデータの入力可能な部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であるか否かを判定する判定部と、
前記判定部によって２つのリクエストデータのパラメータ値がそれぞれ直前の操作のレスポンスデータの入力可能部品に含まれ、且つ該部品の内容が２つのレスポンスデータで不一致であると判定されたリクエストデータを選択する選択部と、
前記選択部によって選択されたリクエストデータに対応付けて通信を区切るために用いられるフラグを前記記憶装置に設定する設定部と、
を有することを特徴とする中継システム。
【符号の説明】
【０１１２】
１  中継装置
２  ウェブブラウザ
３  ウェブサーバ
９  ウェブ中継システム
１０  制御部
１１  リクエスト記録部
１２  リクエスト送信部
１３  レスポンス送信部
１４  レスポンス記録部
１５  処理比較解析部
１５ａ  変数化判定部
１５ｂ  区切り判定部
１５ｃ  汎用処理生成部
１６  問合せ部
２０  記憶部
２１  通信記録テーブル
２２  汎用処理テーブル
【図１】
2015225592.tif 000003
【図２】
2015225592.tif 000004
【図３】
2015225592.tif 000005
【図４】
2015225592.tif 000006
【図５】
2015225592.tif 000007
【図６】
2015225592.tif 000008
【図７】
2015225592.tif 000009
【図８】
2015225592.tif 000010
【図９】
2015225592.tif 000011
【図１０Ａ】
2015225592.tif 000012
【図１０Ｂ】
2015225592.tif 000013
【図１０Ｃ】
2015225592.tif 000014
【図１１】
2015225592.tif 000015
【図１２】
2015225592.tif 000016