BMC Remedy Mid Tier BackChannel servlet architecture
Before learning how to modify scripts recorded against BMC Remedy Mid Tier applications, you must understand basic mid tier architecture.
All communications between a client browser and the mid tier are done through a servlet called BackChannel. Servlets can accept parameters.
The BackChannel servlet has an API that must be followed to create valid requests. The API is composed of interfaces used to transfer information other than web pages between web clients and web tiers.
Some of the interface names are similar to those in the AR System C API. For example, the GetTableEntryList interface is used to request entries in an AR System table field.
string table_server; // server containing the table field
string table_schema;// schema containing the table field
string table_vui_name;// view containing the table field
long table_field_id;// table field id
string server;// servers to query
string schema;// schemas to query
string app_name;// application context
long start_row;// start row
long num_rows;// number of rows
long [] sort_order;// column sort order
string qualification;// search qualification
long [] qual_field_ids;// list of field ids for the qualification
string [] qual_field_values;// list of field values for the qualification
int [] qual_field_types;// list of field types for the qualification \}
This interface specifies the requirements for using the GetTableEntryList BackChannel servlet call:
- You must send the right type of values in this order (top to bottom).
- Nothing is optional.
- You must specify the character length of each value sent through the servlet.
For example, a valid BackChannel servlet call looks similar to this:
7/enduser9/3015240007/myServerName
11/SRM:Request0/1/01/02/0/
77/1\2\4\1\1\1000000338\99\1717300\4\1\1\1000000337\99\1717300\4\4\1\7\2\2\6000\
11/1/7/171730015/1/10/12752-Test5/1/1/4
The first number (229) indicates the total length of the string after the first forward slash. The following table shows the breakdown of the rest of the string by the GetTableEntryList required parameters.
Servlet call by GetTableEntryList parameters
Parameter | String length and value (length/value) | Notes |
---|---|---|
string table_server | 7/myServerName |
|
string table_schema | 25/SRS:ServiceRequestConsole |
|
string table_vui_name | 7/enduser |
|
long table_field_id | 9/301524000 |
|
string server | 7/myServerName |
|
string schema | 11/SRM:Request |
|
string app_name | 0/ | No value |
long start_row | 1/0 |
|
long num_rows | 1/0 |
|
long[] sort_order | 2/0/ | Array of 0 items |
string qualification | 77/1\2\4\1\1\1000000338\99\1717300\4\1\1\\\ | Qualification includes backslashes |
long[] qual_field_ids | 11/1/7/1717300 | Array of 1 item |
string[] qual_field_values | 15/1/10/12752-Test | Array of 1 item |
int[] qual_field_types | 5/1/1/4 | Array of 1 item |
When you record a script against an AR System application, SilkPerformer records the BackChannel servlet calls and their parameter values.
Values such as user name and server name can change, so you should put them in variables. The Silk Performer BMC Remedy plug-in manages the string length of these values whenever they change.
In SilkPerformer XML format, the GetTableEntryList call is human readable:
"param" :=
"<?xml version='1.0'?>\r\n"
"<RemedyXml operation=\"GetTableEntryList\">\r\n"
" <string name=\"table_server\">"+gsARServer+"</string>\r\n"
" <string name=\"table_schema\">SRS:ServiceRequestConsole</string>\r\n"
" <string name=\"table_vui_name\">enduser</string>\r\n"
" <long name=\"table_field_id\">301524000</long>\r\n"
" <string name=\"server\">"+gsARServer+"</string>\r\n"
" <string name=\"schema\">SRM:Request</string>\r\n"
" <string name=\"app_name\"></string>\r\n"
" <long name=\"start_row\">0</long>\r\n"
" <long name=\"num_rows\">0</long>\r\n"
" <Array name=\"sort_order\"></Array>\r\n"
" <string name=\"qualification\">1\\2\\4\\1\\1\\1000000338\\99\\1717300\\4\\1\"
"\1\\1000000337\\99\\1717300\\4\\4\\1\\7\\2\\2\\6000\\</string>\r\n"
" <Array name=\"qual_field_ids\">\r\n"
" <long>1717300</long>\r\n"
"</Array>\r\n"
" <Array name=\"qual_field_values\">\r\n"
"<string>"+gsUsername+"</string>\r\n"
" </Array>\r\n"
" <Array name=\"qual_field_types\">\r\n"
" <int>4</int>\r\n"
" </Array>\r\n"
"</RemedyXml>";
Before the request is sent to BMC Remedy Mid Tier, SilkPerformer assembles the string with correct string lengths. As a scripter, you provide only the values, not the string lengths.
The BMC Remedy Mid Tier response to a request generally has a basic format for each interface. For more information, see Advanced-scripting-and-debugging-techniques.
Additional Information
For more information on BMC Remedy Mid Tier BackChannel servlet, see the following blogs shared on BMC Communities