Tokenizing of Rule Hits

The Search section used both in HttpParsingRules and StringScriptingRules contains a feature that allows to extract rule hits by tokenizing the search result. The idea is that each substring extracted (for example, using the various left/right boundary options) is not the rule hit itself, but can be "tokenized" to yield several rule hits. This tokenizing can be done in several ways and is specified by the xml tag Tokenize.

Valid values for the tag Tokenize are:
  • SiebelTokenHtmlSingleQuote
  • SiebelTokenHtml
  • siebelTokenApplet

The tokenizing methods SiebelTokenHtmlSingleQuote and SiebelTokenHtml tokenize the search result into individual strings enclosed either in single or in double quotes. The tokenizing method SiebelTokenApplet tokenizes the search result assuming a series of length prefixed strings as used in applet responses in the Siebel 7 web application.

Example for SiebelTokenHtml

The search result ["TestName","TestSite","USD","02/21/2003","N","1-2T"] will be tokenized and results in the following rule hits:
  • TestName
  • TestSite
  • USB
  • 02/21(2003
  • N
  • 1-2T

Example for SiebelTokenApplet

The search result 19*02/21/2003 08:20:176*SADMIN4*Note5*1-1P5 will be tokenized and results in the following rule hits:
  • 02/21/2003 08:20:17
  • SADMIN
  • Note
  • 1-1P5
The recorder will use these rule hits in the script by generating one of the tokenizing functions to extract the tokens at runtime. For a recording rule with tokenizing in the Search section:
<HttpParsingRule>
  <Name>Siebel Submit Data Array in HTML (from Javascript function call)</Name>
  <Active>true</Active>
  <Search>
    <SearchIn>Body</SearchIn>
    <LB>
      <Str>SWESubmitForm</Str>
    </LB>
    <RB>
      <Str>'</Str>
    </RB>
    <Tokenize>SiebelTokenHtml</Tokenize>
    <CondResultLen>1-</CondResultLen>
  </Search>
  <ScriptGen>
    ...
  </ScriptGen>
</HttpParsingRule>
Script fragments from Siebel where tokenizing is used:
var
gsRowValArray_003 : string; // 0*19*02/21/2003 08:20:176*SADMIN4*Note5*1-1P5
// ...
WebParseDataBoundEx(gsRowValArray_003, sizeof(gsRowValArray_003),
"ValueArray`", WEB_OCCURENCE_LAST, "`",
WEB_FLAG_IGNORE_WHITE_SPACE, 1);
WebPageForm("http://lab72/sales_enu/start.swe", SALES_ENU_START_SWE026,
"Account Note Applet: InvokeMethod: NewRecord");
Print("Parsed \"RowValArray_003\", result: \"" + gsRowValArray_003 + "\"");
// Was "0*19*02/21/2003 08:20:176*SADMIN4*Note5*1-1P5" when recording
// ...
dclform
// ...
SALES_ENU_START_SWE027:
"SWEMethod" := "GetQuickPickInfo",
"SWEVI" := "",
"SWEView" := "Account Note View",
"SWEApplet" := "Account Note Applet",
"SWEField" := "s_2_2_24_0",
"SWER" := "0",
"SWEReqRowId" := "1",
"s_2_2_26_0" := "2/21/2003 08:20:17 AM",
"s_2_2_27_0" := SiebelTokenApplet(gsRowValArray_003, 2), // value: "SADMIN"
"s_2_2_24_0" := SiebelTokenApplet(gsRowValArray_003, 3), // value: "Note"
"s_2_2_25_0" := "",
"SWERPC" := "1",
"SWEC" := "11",
"SWEActiveApplet" := "Account Note Applet",
"SWEActiveView" := "Account Note View",
"SWECmd" := "InvokeMethod",
"SWERowId" := SiebelTokenApplet(gsRowValArray_003, 4),
// value: "1-1P5"
"SWERowIds" := "SWERowId0=" + SiebelTokenHtml(gsRowValArray_002, 18),
// value: "SWERowId0=1-2T"
"SWEP" := "",
"SWEJI" := "false",
"SWETS" := GetTimeStamp(); // value: "1045844419057"