この例では、Siebel 6 Thin Client 用の記録ルールを書く方法を説明します。
このクライアントは、Web ブラウザで実行する ActiveX コントロールです。記録したスクリプトは、1 つの WebPageUrl() 呼び出しと、それに続く ActiveX コントロールからの TCP/IIIIP トラフィックで構成されます。記録ルールがないと、サーバー レスポンスは、WebTcpipRecvExact() 呼び出しによってスクリプト化されます。
WebTcpipSendBin(hWeb0, "\h00000030000000000000000000000001" // ···0············ 00000000 "\h0000000C0000001C0000019100000000" // ················ 00000010 "\h00000020000002580000000C00000000" // ··· ···X········ 00000020 "\h00000000", 52); // ···· 00000030 WebTcpipRecvExact(hWeb0, NULL, 40);
サーバー レスポンスは、TrueLog Explorer を利用して分析できます。
各レスポンスは、プロトコル ヘッダーを含み、プロトコル ヘッダーはバイト数を指定する 4 バイトと、プロトコル ヘッダーで構成されます。長さの指定は、ビッグ エンディアン形式で行われます (最上位バイトを先に)。
これらの結果に基づき、記録ルールは次に示すように記述されます。
<?xml version="1.0" encoding="UTF-8" ?> <RecordingRuleSet> <TcpRuleRecvProto> <Name>Siebel TCP Protocol</Name> <Identify> <LengthOffset>0</LengthOffset> <LengthLen>4</LengthLen> </Identify> </TcpRuleRecvProto> </RecordingRuleSet>
このルールは、プロトコル ヘッダーがデータ ブロックの長さをオフセット 0 から 4 バイトを使用して含んでいることを指定します。このルールを使用すると、 以下に示すように、Recorder はサーバー レスポンスに対して関数 WebTcpipRecvProto() を使用してスクリプトを生成します。
WebTcpipSendBin(hWeb0, "\h00000030000000000000000000000001" // ···0············ 00000000 "\h0000000C0000001C0000019100000000" // ················ 00000010 "\h0000001F000002580000000C00000000" // ·······X········ 00000020 "\h00000000", 52); // ···· 00000030 WebTcpipRecvProto(hWeb0, 0, 4);
このルールを使用して記録したスクリプトは、記録中に受信したバイト数と異なるバイト数を受信しても正しく再生されます。