Siebel HTTP トラフィックには、HTTP リクエストでサーバーに送信されるさまざまな動的データが含まれます。このようなデータは、前のサーバー レスポンスから解析することができ、ハードコード値の変わりにスクリプトで置換されます。
次のデータが含まれます。
Siebel は、データベース キーを使用してデータベースのレコードを識別します。このようなキーは、ブラウザとアプレットの両方から生じる HTTP トラフィックに存在します。データベース キーは、行 ID としても知られています。行 ID と他の動的データの処理を正確にすることは、再生の成功に不可欠です。
行 ID と他の動的データは、HTML ドキュメント (以下の最初の例を参照) や、Java アプレットからの HTTP リクエストへのレスポンス (以下の 2 番目の例を参照) に含めることができます。
動的データは、常に値配列 (Siebel GUI で表示される単一行に対する値のリスト) に含まれます。
<script>
row = new top._swescript.JSSRecord();
row.id = "1-9Q1";
row.valueArray = ["Foo","Bar","1234567890","","Active",
"http://www.foo.com/bar","","","USD",
"11/26/2002","","USD","11/26/2002",
"","","","","N","N","","1-9Q1"];
S_BC1.Rec(row);
</script>@0`0`3`2``0`UC`1`Status`Completed`SWEC`10`0`24`Notifications`0`2`0``0`OP`bn`bc`S_BC1`7`0``0`type`SWEIRowSelection`OP`g`br`0`cr`6`bc`S_BC1`size`7`ArgsArray`20*Account Entry Applet1*1`7`0``0`type`SWEIRowSelection`OP`g`br`0`cr`6`bc`S_BC1`size`7`ArgsArray`19*Account List Applet1*11*01*01*01*01*01*0`7`0``0`type`SWEIPrivFlds`OP`g`br`0`cr`6`bc`S_BC1`size`7`ArgsArray`19*Account List Applet11**BlankLine11*?11**BlankLine21*?9**HTML URL1*?15**HTML RecNavNxt1*?`7`0``0`type`SWEICanInvokeMethod`OP`g`br`0`cr`6`bc`S_BC1`size`7`ArgsArray`19*Account List Applet1*01*11*11*01*21*11*31*01*41*11*51*11*61*11*71*11*81*11*91*12*101*02*111*02*121*12*131*02*141*12*151*12*161*12*171*12*181*12*191*12*201*12*211*12*221*12*231*12*241*12*251*02*261*12*271*12*281*02*291*02*301*02*311*02*321*02*331*02*341*12*351*12*361*1`7`1``0`OP`iw`index`7`br`0`cr`6`bc`S_BC1`size`7`ar`0`1`0`FieldValues`0`ValueArray`3*Foo3*Bar10*12345678900*6*Active22*http://www.foo.com/bar0*0*3*USD10*11/26/20020*3*USD10*11/26/20020*0*0*0*1*N1*N0*5*1-9N9`8`0``0`OP`dw`index`7`br`0`cr`6`bc`S_BC1`nr`1`size`7`ar`0`8`0``0`value`0`OP`sc`br`0`cr`6`bc`S_BC1`size`7`ar`0`state`n`8`0``0`value`1`OP`sc`br`0`cr`6`bc`S_BC1`size`7`ar`0`state`n`8`0``0`value`7`OP`sc`br`0`cr`6`bc`S_BC1`size`7`ar`0`state`cr`8`0``0`value`1`OP`sc`br`0`cr`6`bc`S_BC1`size`7`ar`0`state`nrk`8`0``0`value`13`OP`sc`br`0`cr`6`bc`S_BC1`size`7`ar`0`state`nr`6`0``0`OP`nd`br`0`cr`6`bc`S_BC1`size`7`ar`0`2`0``0`OP`en`bc`S_BC1`0`3`
動的情報は大抵スクリプトの dclform セクションに現れます。
必要に応じて、Web Recorder は自動的に解析関数 (WebParseDataBoundEx) を生成し、スクリプトに現れたときに解析済みの値と置き換えます。解析関数は、HTML およびアプレット レスポンスの完全な値配列を解析します。Recorder は、適切なトークン化関数 SiebelTokenHtml または SiebelTokenApplet を使用して、解析済み値配列から個々のトークンを抽出します。
この例は、次のテクニックを利用した記録済みスクリプトの一部を示します。
解析結果は、必要なときにいつでも使用することができます。この例では、解析した値の個々のトークンはフォーム定義のさまざまな場所に出現します。情報を含むコメントは、可読性を高めるために使用されます。
var
gsRowValArray : string; // = ["Foo","Bar","1234567890","","Active",
// "http://www.foo.com/bar","","","USD",
// "11/26/2002","","USD","11/26/2002",
// "","","","","N","N","","1-9Q1"];
gsRowValArray_001 : string; // 3*Foo3*Bar10*12345678900*6*Active
// 22*http://www.foo.com/bar
// 0*0*3*USD10*11/26/20020*3*USD10*11/26/2002
// 0*0*0*0*1*N1*N0*5*1-9N9
// ...
WebParseDataBoundEx(gsRowValArray, sizeof(gsRowValArray),
"row.valueArray", 2, "S_", WEB_FLAG_IGNORE_WHITE_SPACE, 1);
// function call where parsing function is in effect
WebParseDataBoundEx(gsRowValArray_001, sizeof(gsRowValArray_001),
"ValueArray`", 1, "`", WEB_FLAG_IGNORE_WHITE_SPACE, 1);
// function call where parsing function is in effect
// ...
dclform
// ...
SALES_ENU_START_SWE016 <ENCODE_CUSTOM> :
"SWEMethod" := "Drilldown",
"SWEView" := "Account List View",
"SWEApplet" := "Account List Applet",
"SWEReqRowId":= "1",
"s_1_2_40_0" := SiebelTokenHtml(gsRowValArray, 0), // value: "Foo"
"s_1_2_41_0" := SiebelTokenHtml(gsRowValArray, 1), // value: "Bar"
"s_1_2_42_0" := "(123) 456-7890",
"s_1_2_51_0" := "",
"s_1_2_47_0" := SiebelTokenHtml(gsRowValArray, 4), // value: "Active"
"s_1_2_45_0" := SiebelTokenHtml(gsRowValArray, 5),
//value:"http://www.foo.com/bar"
"SWECmd" := "InvokeMethod",
"SWERowId" := SiebelTokenHtml(gsRowValArray, 20), // value: "1-9Q1"
"SWETS" := GetTimeStamp(); // value: "1038305654969"
// ...
SALES_ENU_START_SWE022 <ENCODE_CUSTOM> :
"SWEMethod" := "Drilldown",
"SWEView" := "Account List View",
"SWEApplet" := "Account List Applet",
"SWEReqRowId":= "1",
"s_1_2_40_0" := SiebelTokenApplet(gsRowValArray_001, 0), // value: "Foo"
"s_1_2_41_0" := SiebelTokenApplet(gsRowValArray_001, 1), // value: "Bar"
"s_1_2_42_0" := "(123) 456-7890",
"s_1_2_51_0" := "",
"s_1_2_47_0" := SiebelTokenApplet(gsRowValArray_001, 4), // value: "Active"
"s_1_2_45_0" := SiebelTokenApplet(gsRowValArray_001,5),
// value: "http://www.foo.com/bar"
"SWECmd" := "InvokeMethod",
"SWERowId" := SiebelTokenApplet(gsRowValArray_001, 20), // value: "1-9N9"
"SWETS" := GetTimeStamp(); // value: "1038305711331"