サンプル Web アプリケーション ShopIt は、セッション ID を含むフォーム定義によって、Silk Performer Recorder にコンテキストなしの WebPageUrl() 関数を生成させる意図で作成したものです。これは、JavaScript で URL を組み立てることによって実現されています。記録ルールを使用せずに ShopIt を記録すると、ハードコーティングされたセッション ID を含むスクリプトが生成されます。
この HTTP 解析ルールの例では、セッション ID を含むフォーム定義によって、コンテキストなしの WebPageUrl() 関数が生成されています。[スクリプトの試行] を実行すると、ハードコードされたセッション ID が原因で再生エラーが発生します。
TrueLog Explorer のセッション処理カスタマイズ機能では、次のようにスクリプトを変更することによって、この問題を解決します。
var
sFormSid1 : string (100);
sSessionInfo1 : string (100);
...
WebParseDataBoundEx(sSessionInfo1, STRING_COMPLETE,
"name=\"", 5, "\"", WEB_FLAG_IGNORE_WHITE_SPACE, 1);
WebPageLink("Check out", "ShopIt - Check Out"); // Link 3
Print("sSessionInfo1: " + sSessionInfo1);
...
sFormSid1 := sSessionInfo1;
WebPageUrl(sParsedUrl,
"Unnamed page", SHOPITV60_KINDOFPAYMENT_ASP004);
...
dclform
...
SHOPITV60_KINDOFPAYMENT_ASP004:
"choice" := "CreditCard",
"price" := "115.8",
// "sid" := "858891471";
"sid" := sFormSid1;
カスタマイズが完了して、スクリプトが正しく実行されるようになりました。しかし、今後記録されるスクリプトでも、毎回カスタマイズを行わなければならないという問題が残ります。
HTTP 解析ルールを利用すると、今後は、この種のカスタマイズを Silk Performer Recorder に自動的に行わせることができます。つまり、手動の操作なしで、記録スクリプトを自動生成できます。
それには、各セッション ID の解析方法を調査する必要があります。TrueLog Explorer によって提示されたカスタマイズを見ると、セッション ID が最初に発生した API 呼び出しがわかります。また、各セッション ID を解析するために使用できる境界もわかります。
TrueLog Explorer を使用して、HTML コード内でセッション ID が最初に出現する場所を見つけます。
<script LANGUAGE="JavaScript">
function doProcess(mylink)
{
scheme="http://";
server="lab3";
serverport="";
path="/ShopItV60/";
file="kindofpayment.asp?";
name="858891471";
price="115.8";
choice="CreditCard";
mylink.href=scheme + server + serverport + path + file + "choice=" +
choice + "&price=" + price + "&sid=" + name;
}
</script>
TrueLog Explorer によって識別された左境界 name=" と 右境界 " は、セッション ID を抽出するためには妥当な選択です。
これで、HTTP 解析ルールの初期バージョンを Recorder 用に書き込むことができます。
<?xml version="1.0" encoding="UTF-8"?>
<RecordingRuleSet>
<HttpParsingRule>
<Name>ShopIt V5.1 Session Id</Name>
<Search>
<SearchIn>Body</SearchIn>
<LB>
<Str>name="</Str>
</LB>
<RB>
<Str>"</Str>
</RB>
</Search>
<ScriptGen>
<VarName>ShopItSessionId</Varname>
</ScriptGen>
</HttpParsingRule>
</RecordingRuleSet>
ShopIt のセッション ID は、HTTP のレスポンス ヘッダーには存在しないので、レスポンス ボディだけを検索するように指定します (Search\SearchIn 属性を使用)。
セッション ID の終りには、単一引用符が付きます。これは、Search\RB\Str 属性で指定します。ここで、再び、引用符がエンコードされています。
最後に、解析結果を格納する変数の名前を定義しています。この名前は、ScriptGen\VarName 属性を使用して指定します。
このルール ファイルをすべてのプロジェクトでグローバルに利用できるようにするには、Silk Performer の Include ディレクトリに保存します。ファイル名は任意の長さにできますが、ファイルの拡張子は .xrl にする必要があります。この記録ルールを 1 つのプロジェクトだけで使用する場合は、このファイルを、特定の Silk Performer プロジェクトの Documents ディレクトリに保存します。