サンプル 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 ディレクトリに保存します。