Using the "Web Engine HTTP TXN" Business Service to Access Cookies, Querystring Parameters, Form Field Parameters, HTTP Headers, and Server Variables (Doc ID 476473.1)
APPLIES TO:
Siebel Tools - Version 8.0 [20405] to 17.0 [IP2017] [Release V8 to V17]
Siebel Tools - Version 17.0 [IP2017] and later
All Platforms
PURPOSE
HTTP provides several means to allow Web Servers to obtain information from the browser. The most familiar example is that when a user enters data into a form on a Web page, the data is sent to the Web Server, which can access the value of each form field. This example illustrates sending form field parameters to the Web server with a POST method. In general, a browser can send Cookies, headers, querystring parameters, as well as form field parameters to the Web server. Web servers can also respond back to the browser with Cookies and custom headers. The "Web Engine HTTP TXN" business service enables Siebel eBusiness Applications to retrieve or set Cookies, headers, and querystring and form field parameters.
SCOPE
This document is informational and intended for any user.
Note that there are complications in attempting to use this Business Service from a Workflow.
1) For a Business Service that accepts/returns hierarchical arguments, the argument name is used to identify the child property set to pass/store. This is problematic in workflow, because it places a restriction on the argument name across Busines Service. For example, if Business Service BS1 returns a property set of type A, and Business Service BS2 accepts a property set of type B, you cannot pass the output of BS1 directly into BS2 in workflow, without adding an intermediately step to alter the type. (BUG 10448594 - SHOULD BE ABLE TO SPECIFY CHILD TO PASS/STORE IN WORKFLOW")
2) This BS is meant to be run exclusively at a graphical user interface object manager such as call center. HTTP Headers are not meaningful in a non GUI component such as wfprocmgr. (BUG 10503454 - "WEB ENGINE HTTP TXN" NOT WORKING WITH "WORKFLOW" )
Both of the above Enhancement Request Bugs were created to address the complications, but the Enhancement Request were both rejected. It is a fact of life that the Web Engine HTTP TXN" business service should not be used from a workflow using "Workflow Process Manager (Server Request)" and that there may be issues when passing the resulting Property Sets to other WF steps.
If using this BS in a Workflow, rather than calling the BS directly from the WF, you may be able to use the WF to call a custom BS, and then in the custom BS, use scripting to call the "Web Engine HTTP TXN" BS.
DETAILS
The "Web Engine HTTP TXN" business service can be invoked by scripts. The inbound HTTP request to the Siebel Web Engine (SWE) is parsed and the business service returns property sets containing Cookies, headers, or parameters. In addition, server variables, which are not a part of the HTTP request header, can also be retrieved. The business service can also set a custom Cookie or header in the HTTP response header generated by the SWE. It gives complete control over the request header received and response header sent by the SWE.
When using this vanilla BS you may get unexpected results. That is because it will display data about the request that reached SWSE. In complex environments, that request may not be the request that originally left the end user´s browser so.. its not a reliable thing and I would not advice the customer to build anything on top of it.
Also note that this BS is not supported to be used in Application_Load event
The following is an application scenario:
A customer visits a Portal site and decides to purchase some items. Once all selected items are in the shopping cart, the Portal Server communicates with Siebel using the XML Web Interface via HTTP and sends the order items as Cookies. The "Web Engine HTTP TXN" business service is invoked from a business component server script, which retrieves the Cookie values and creates an Order with the selected Order Items. The business service also sets a new custom header to inform the Portal Server that the Order has been created in the Siebel application. The Order information in the Siebel application is also returned to the Portal Server in XML.
This application scenario demonstrates the "Web Engine HTTP TXN" business service working together with the XML Web Interface to enable integration with Web Application Servers (.NET or J2EE).
eScript Sample Code:
var oBS = TheApplication().GetService("Web Engine HTTP TXN") ;
var psInputs = TheApplication().NewPropertySet();
var psOutputs = TheApplication().NewPropertySet();
var psCookie = TheApplication().NewPropertySet();
var sCookieVal;
// ------------------
// Read All Request Cookies
// ------------------
oBS.InvokeMethod("GetAllRequestCookies", psInputs, psOutputs);
for (var i = 0; i < psOutputs.GetChildCount(); i++)
{
psCookie = psOutputs.GetChild(i);
if (psCookie.GetType() == "Login")
{
sCookieVal = psCookie.GetValue();
break;
}
}
psInputs.Reset();
psOutputs.Reset();
psCookie.Reset();
// ------------------
// Create A Response Cookie
// ------------------
psCookie.SetType("Login");
psCookie.SetValue("1");
psCookie.SetProperty("Max-Age", "430000"); //5 Days (Thin Client)
psInputs.AddChild(psCookie);
oBS.InvokeMethod("SetResponseCookies", psInputs, psOutputs);
psInputs.Reset();
psOutputs.Reset();
psCookie.Reset();
// ------------------
// Retrieve A Request Cookie
// ------------------
psInputs.SetProperty ("Login", "");
oBS.InvokeMethod("GetRequestCookies", psInputs, psOutputs);
psCookie = psOutputs.GetChild(0);
sCookieVal = psCookie.GetValue();
// ------------------
// Update A Retrieved Response Cookie
// ------------------
psCookie.SetValue(ToInteger(sCookieVal) + 1);
psCookie.SetProperty("Max-Age", "430000"); //5 Days (Thin Client)
psInputs.AddChild(psCookie);
oBS.InvokeMethod("SetResponseCookies", psInputs, psOutputs);
psOutputs = null;
psInputs = null;
oBS = null;
psCookie = null;
Refer to the following API for specific methods supported by this Business Service.
When using this vanilla BS you may get unexpected results. That is because it will display data about the request that reached SWSE. In complex environments, that request may not be the request that originally left the end user´s browser so.. its not a reliable thing and I would not advice the customer to build anything on top of it.
Source:
https://support.oracle.com/ > Doc ID 476473.1
Siebel Tools - Version 8.0 [20405] to 17.0 [IP2017] [Release V8 to V17]
Siebel Tools - Version 17.0 [IP2017] and later
All Platforms
PURPOSE
HTTP provides several means to allow Web Servers to obtain information from the browser. The most familiar example is that when a user enters data into a form on a Web page, the data is sent to the Web Server, which can access the value of each form field. This example illustrates sending form field parameters to the Web server with a POST method. In general, a browser can send Cookies, headers, querystring parameters, as well as form field parameters to the Web server. Web servers can also respond back to the browser with Cookies and custom headers. The "Web Engine HTTP TXN" business service enables Siebel eBusiness Applications to retrieve or set Cookies, headers, and querystring and form field parameters.
SCOPE
This document is informational and intended for any user.
Note that there are complications in attempting to use this Business Service from a Workflow.
1) For a Business Service that accepts/returns hierarchical arguments, the argument name is used to identify the child property set to pass/store. This is problematic in workflow, because it places a restriction on the argument name across Busines Service. For example, if Business Service BS1 returns a property set of type A, and Business Service BS2 accepts a property set of type B, you cannot pass the output of BS1 directly into BS2 in workflow, without adding an intermediately step to alter the type. (BUG 10448594 - SHOULD BE ABLE TO SPECIFY CHILD TO PASS/STORE IN WORKFLOW")
2) This BS is meant to be run exclusively at a graphical user interface object manager such as call center. HTTP Headers are not meaningful in a non GUI component such as wfprocmgr. (BUG 10503454 - "WEB ENGINE HTTP TXN" NOT WORKING WITH "WORKFLOW" )
Both of the above Enhancement Request Bugs were created to address the complications, but the Enhancement Request were both rejected. It is a fact of life that the Web Engine HTTP TXN" business service should not be used from a workflow using "Workflow Process Manager (Server Request)" and that there may be issues when passing the resulting Property Sets to other WF steps.
If using this BS in a Workflow, rather than calling the BS directly from the WF, you may be able to use the WF to call a custom BS, and then in the custom BS, use scripting to call the "Web Engine HTTP TXN" BS.
DETAILS
The "Web Engine HTTP TXN" business service can be invoked by scripts. The inbound HTTP request to the Siebel Web Engine (SWE) is parsed and the business service returns property sets containing Cookies, headers, or parameters. In addition, server variables, which are not a part of the HTTP request header, can also be retrieved. The business service can also set a custom Cookie or header in the HTTP response header generated by the SWE. It gives complete control over the request header received and response header sent by the SWE.
When using this vanilla BS you may get unexpected results. That is because it will display data about the request that reached SWSE. In complex environments, that request may not be the request that originally left the end user´s browser so.. its not a reliable thing and I would not advice the customer to build anything on top of it.
Also note that this BS is not supported to be used in Application_Load event
The following is an application scenario:
A customer visits a Portal site and decides to purchase some items. Once all selected items are in the shopping cart, the Portal Server communicates with Siebel using the XML Web Interface via HTTP and sends the order items as Cookies. The "Web Engine HTTP TXN" business service is invoked from a business component server script, which retrieves the Cookie values and creates an Order with the selected Order Items. The business service also sets a new custom header to inform the Portal Server that the Order has been created in the Siebel application. The Order information in the Siebel application is also returned to the Portal Server in XML.
This application scenario demonstrates the "Web Engine HTTP TXN" business service working together with the XML Web Interface to enable integration with Web Application Servers (.NET or J2EE).
eScript Sample Code:
var oBS = TheApplication().GetService("Web Engine HTTP TXN") ;
var psInputs = TheApplication().NewPropertySet();
var psOutputs = TheApplication().NewPropertySet();
var psCookie = TheApplication().NewPropertySet();
var sCookieVal;
// ------------------
// Read All Request Cookies
// ------------------
oBS.InvokeMethod("GetAllRequestCookies", psInputs, psOutputs);
for (var i = 0; i < psOutputs.GetChildCount(); i++)
{
psCookie = psOutputs.GetChild(i);
if (psCookie.GetType() == "Login")
{
sCookieVal = psCookie.GetValue();
break;
}
}
psInputs.Reset();
psOutputs.Reset();
psCookie.Reset();
// ------------------
// Create A Response Cookie
// ------------------
psCookie.SetType("Login");
psCookie.SetValue("1");
psCookie.SetProperty("Max-Age", "430000"); //5 Days (Thin Client)
psInputs.AddChild(psCookie);
oBS.InvokeMethod("SetResponseCookies", psInputs, psOutputs);
psInputs.Reset();
psOutputs.Reset();
psCookie.Reset();
// ------------------
// Retrieve A Request Cookie
// ------------------
psInputs.SetProperty ("Login", "");
oBS.InvokeMethod("GetRequestCookies", psInputs, psOutputs);
psCookie = psOutputs.GetChild(0);
sCookieVal = psCookie.GetValue();
// ------------------
// Update A Retrieved Response Cookie
// ------------------
psCookie.SetValue(ToInteger(sCookieVal) + 1);
psCookie.SetProperty("Max-Age", "430000"); //5 Days (Thin Client)
psInputs.AddChild(psCookie);
oBS.InvokeMethod("SetResponseCookies", psInputs, psOutputs);
psOutputs = null;
psInputs = null;
oBS = null;
psCookie = null;
Refer to the following API for specific methods supported by this Business Service.
"Web Engine HTTP TXN" Business Service API:
Method
|
Description
|
Parameters
|
GetAllRequestCookies | Retrieves all request cookies. | InputArguments: Ignored OutputArguments: Property Set hierarchy. Each cookie is a child Property Set with the TYPE property set to the cookie name. |
GetAllRequestHeaders | Retrieves all request headers. | InputArguments: Ignored OutputArguments: Property Set containing the HTTP Header name/value pairs. |
GetAllRequestParameters | Retrieves all request parameters. | InputArguments: Ignored OutputArguments: Property Set containing the HTTP Parameter name/value pairs. |
GetAllResponseCookies | Retrieves all response cookies. | InputArguments: Ignored OutputArguments: Property Set hierarchy. Each cookie is a child Property Set with the TYPE property set to the cookie name. |
GetAllResponseHeaders | Retrieves all response headers. | InputArguments: Ignored OutputArguments: Property Set containing the HTTP Header name/value pairs. |
GetAllServerVariables | Retrieves all server variables. | InputArguments: Ignored OutputArguments: Property Set containing the Server Variable name/value pairs. |
GetClientCertificate | Retrieves the client certificate info. | InputArguments: Ignored OutputArguments: Property Set containing certificate name/value pairs. Currently only returns CN property of the certificate. |
GetRequestCookies | Retrieves the request cookies named in InputArguments | InputArguments: Property Set containing the cookie names to retrieve. OutputArguments: Property Set hierarchy. Each cookie is a child Property Set with the TYPE property set to the cookie name. |
GetRequestHeaders | Retrieves the request headers named in InputArguments | InputArguments: Property Set containing the header names to retrieve. OutputArguments: Property Set containing the HTTP Header name/value pairs. |
GetRequestInfo | Retrieves the request Web Session, Headers, Cookies, Parameters and Client Certificate information in one call. | InputArguments: Ignored OutputArguments: Property Set hierarchy. Each section is a child Property Set with the TYPE property set to: "Headers","Cookies", "Parameters" or "ClientCertificate". The Web Session information is simply stored as properties of OutputArguments. |
GetRequestParameters | Retrieves the request parameters named in InputArguments | InputArguments: Property Set containing the parameter names to retrieve. OutputArguments: Property Set containing the HTTP Parameter name/value pairs. |
GetResponseCookies | Retrieves the response cookies named in InputArguments | InputArguments: Property Set containing the cookie names to retrieve. OutputArguments: Property Set hierarchy. Each cookie is a child Property Set with the TYPE property set to the cookie name. |
GetResponseHeaders | Retrieves the response headers named in InputArguments | InputArguments: Property Set containing the header names to retrieve. OutputArguments: Property Set containing the HTTP Header name/value pairs. |
GetResponseInfo | Retrieves the response Headers and Cookies in one call. | InputArguments: Ignored OutputArguments: Property Set hierarchy. Each section is a child Property Set with the TYPE property set to: "Headers" or "Cookies". Content Type and Status are simply stored as properties of OutputArguments. |
GetServerVariables | Retrieves the server variables named in InputArguments | InputArguments: Property Set containing the server variable names to retrieve. OutputArguments: Property Set containing the Server Variable name/value pairs. |
GetWebSessionInfo | Retrieves the clientâs web session information. | InputArguments: Ignored OutputArguments: Property Set containing the web session name/value pairs: SessionName: Cookie Name. SessionId: Web Session ID. SessionFrom: Value is "URL" or "COOKIE" |
SetResponseCookies | Sets the response cookies to the values in InputArguments. | InputArguments: Property Set hierarchy. Each cookie is a child Property Set with the TYPE property set to the cookie name. OutputArguments: Ignored |
SetResponseHeaders | Sets the response headers to the values in InputArguments. | InputArguments: Property Set containing the HTTP Header name/value pairs. OutputArguments: Ignored |
SetResponseInfo | Sets the response Headers and Cookies in one call. | InputArguments: Property Set hierarchy. Each section is a child Property Set with the TYPE property set to: "Headers" or "Cookies". Content Type and Status are simply stored as properties of InputArguments. OutputArguments: Ignored |
When using this vanilla BS you may get unexpected results. That is because it will display data about the request that reached SWSE. In complex environments, that request may not be the request that originally left the end user´s browser so.. its not a reliable thing and I would not advice the customer to build anything on top of it.
Source:
https://support.oracle.com/ > Doc ID 476473.1
Comments
Post a Comment