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"