Siebel SmartScript Administration Guide > Extending Scripts with Siebel VB and Siebel eScript >
Invoking a Business Service from a SmartScript
You can invoke a business service from a SmartScript by using Siebel VB or Siebel eScript to make call statements for the required business service. This allows you to reuse code. The following example code retrieves information from a SmartScript and invokes the Universal Inbox business service to create a new item in the Inbox. For another example, see Invoking Siebel Assignment Manager. function Script_Finish ()
{
var szScriptSessionId;
var szRequester;
var svc;
var indata;
var outdata;
var ssPage;
var ssQuestion;
var EmployeeLastName;
var EmployeeFirstName;
var RequestedChange;
var PAFComments;
var PAFPriority;
var szSSLanguageCode;
var szSSCurrencyCode;
ssPage = GetPage("PAF Which Change");
ssQuestion = ssPage.GetQuestion("Display Employee Last Name");
EmployeeLastName = ssQuestion.GetCurrentValue();
ssQuestion = ssPage.GetQuestion("Display Employee First Name");
EmployeeFirstName = ssQuestion.GetCurrentValue();
ssQuestion = ssPage.GetQuestion("PAF Change Requested");
RequestedChange = ssQuestion.GetCurrentValue();
ssQuestion = ssPage.GetQuestion("PAF Comments");
PAFComments = ssQuestion.GetCurrentValue();
ssQuestion = ssPage.GetQuestion("PAF Priority");
PAFPriority = ssQuestion.GetCurrentValue();
// Cancel saving everything to the database
Cancel ();
indata =TheApplication ().NewPropertySet ();
outdata = TheApplication ().NewPropertySet ();
// Get the login name of the user
szRequester = TheApplication ().LoginName ();
// Get SmartScript Save Session table Id.
szScriptSessionId = GetSessionId ();
szSSLanguageCode = GetParameter("Language");
szSSCurrencyCode = GetParameter("Currency");
indata.SetProperty ("SmartScriptLanguageCode", szSSLanguageCode);
// ItemObjectId, ItemType, ItemSubmittedBy, and ItemDescription are the
// required input arguments for the "Universal Inbox.Initialize"
indata.SetProperty ("ItemObjectId", szScriptSessionId);
// Item Type is the Approvals Inbox type defined in the
// Approvals Inbox Administration screen
indata.SetProperty ("ItemType", "Personnel Action Form");
// Short Description of the inbox item
indata.SetProperty ("ItemDescription", RequestedChange + " PAF" + " for " + EmployeeFirstName + " " + EmployeeLastName);
indata.SetProperty ("ItemSubmittedBy", szRequester);
// ItemQueueDuration, ItemPriority, and ItemComments are the
// optional input arguments for the "Universal Inbox.Initialize"
indata.SetProperty ("ItemQueueDuration", "129600");
indata.SetProperty ("ItemPriority", PAFPriority);
indata.SetProperty ("ItemComments", PAFComments);
svc = TheApplication ().GetService ("Universal Inbox");
svc.InvokeMethod("Initialize", indata, outdata);
var id = GetSessionId ();
var bo = TheApplication().GetBusObject("Smart Scripts");
var bc = bo.GetBusComp("Call Script Runs");
bc.ActivateField("Status Code");
bc.SetSearchSpec("Id", id);
bc.ExecuteQuery();
if (bc.FirstRecord())
bc.SetFieldValue("Status Code", "Finished");
bc.WriteRecord();
}
|