Siebel Scripting 3
Siebel Scripting 3
Siebel Scripting 3
Two
eScript Syntax
Introduction
Data Types
Declaring Variables
Operators
Decisions
Looping
Functions
Arrays in eScript
Some Important eScript Methods
Using Siebel Objects
Comments in eScript
Use two forward slashes // at the
front of a line to make a single line
comment
Example:
//This is a single line comment
Use /* to start and */ to end a
multi-line comment
Example:
/*This Comment
stretches over
Data Types
There ARE no data types in eScript
eScript is a loose typed language
Variables can change type
dynamically
eScript is Case Sensitive
var MyString and var mystring are
two DIFFERENT variables!
Operators
Mathematical Operators
+, -, *, /, % (no exponentiation)
Conditional Operators
==, !=, <, >, <=, >=
Logical Operators
&&, ||, !
Assignment
=
Ternary
Condition ? Do If True : Do If False
Declaring Variables
Syntax:
var VarName;
Examples:
var iScore;
var bcContact;
Can
declare more than one variable of the
same type in one line:
var sLastName, sFirstName;
eScript Variables can be initialized:
var sName = “Charlie”;
var iCount = 1;
Decisions: if
Syntax:
if (Condition)
{
‘Code to be executed if Condition is True
}
Example:
if (iScore < 60)
{
sGrade = “Fail”;
}
Simple Decision Making Construct
Decisions: else
Syntax:
if (Condition)
{
‘Code to Execute if Condition is True
}
else
{
‘Code to Execute if Condition is False
}
Decisions: else
Example:
if (iScore < 60)
{
sGrade = “Fail”;
}
else
{
sGrade = “Passing”;
}
Decisions: elseif
Example:
if (iScore < 60)
{
sGrade = “Fail”;
}
elseif (iScore >= 100)
{
sGrade = “Perfect”;
}
else
{
sGrade = “Passing”;
};
Decisions: switch case
Used to make large nested if structures
more readable
Syntax:
switch(VarName)
{
case FirstCase:
break;
case NextCase:
break;
default:
}
Decisions: switch case
Example:
switch(iScore)
{
case 60:
sGrade = “Fail”;
break;
case 100:
sGrade = “Perfect”:
break;
default:
sGrade = “Passing”
}
Looping: for Loop
Syntax:
for (start;condition;increment)
{
‘Code to execute each iteration of loop
}
Example:
for (iCtr = 0;iCtr<10;iCtr++)
{
sStepNum = “Step Number: “ + Str$(iCtr);
}
Looping: do Loop
Syntax:
do
{
‘Code to execute each iteration of the loop
}while (Condition);
Example:
iCtr = 0;
do
{
iCtr= iCtr + 1;
sStepNum = “Step Number: “ & Str$(iCtr);
}
Functions
Example:
function GetName ()
{
var sName = “”;
sName = GetProfileAttr(“SPN_CA_NAME”);
return (sName);
}
Calling Functions
Syntax:
Var= FuncName(Value)
FuncName (FuncName(Value))
Example:
var sName = GetName();
Example 2:
FindValue(GetName());
‘FindValue is some other function that
takes a string as a parameter
Arrays
Declaring:
var ArrayName = new
Array(NumElements);
Useful methods for arrays
getArrayLength(), length property: Returns
the number of elements in an array
reverse(), sort()
setArrayLength(num): dynamically resizes
the array
join() : creates a string from array
Some Important eScript
Methods
new Date (in place of Now)
The Clib Object
String Manipulation in eScript
File Handling in eScript
new Date
Returns
Current Time and Date on
machine that the script is running on
Running Web Client or Wireless Web
Client, that is the Siebel Server that the
AOM is running on
Running Mobile Web Client or Dedicated
Web Client, that is the machine that
Siebel.exe is running on- the client’s
machine
Syntax: var MyDate = new Date;
The Clib Object
Has many uses, including file
handling, string manipulation,
character typing
Character Typing functions:
isalpha()
isalnum()
isdigit()
toascii()
Many others
String Manipulation
More than one way, but the easiest
is:
First, put the string into an array of
one character long strings (no char
data type)
Use Clib.substring()
Next,use for loop to iterate through
array, and parse the string as you
would in C++
File Handling
Clib.fopen()
File Pointers
Clib.rewind()
Clib.fgets()
Clib.fprintf()
Clib.close()
Opening Files
Syntax:
fpname = Clib.fopen(filename, “r”|”w”);
Examples:
var fp;
var filename = “C:\MyFile.txt”;
fp = Clib.fopen(filename, “r”);
Clib.rewind() Method
Sets the File pointer position to the
beginning of the file
Should always be done on opening a
file
Reading From Files
Use fgets()
Syntax:
Clib.fgets(fpname);
Example:
fp = Clib.fopen(filename, "r");
Clib.rewind(fp);
while (!Clib.feof(fp))
{
sXML = sXML + Clib.fgets(fp);
}
Clib.fclose(fp);
Clib.feof() Method
Takes a file pointer as argument
Returns true if file pointer is at the
end of the file
Clib.fprintf() Method
WritesData to an open file
Syntax:
Clib.fprintf(filepointername, Value);
Example:
fp = Clib.fopen(filename, "w");
Clib.rewind(fp);
Clib.fprintf(fp, “Write This To the file”);
Clib.fclose(fp);
Clib.fclose() Method
Always Make sure to close your files
after use!
Syntax:
Clib.fclose(filepointername);
Siebel Specific Objects
BusComp
BusObject
TheApplication
PropertySet
Service
Object
Parentheses!
Error Handling With eScript
MUCH more robust than Siebel VB
Uses try-catch-throw system similar
to C
Remember that the Siebel system
itself is already set up to handle
many errors, so most don’t even
need to be handled by you
Error Handling Syntax
try {}
Place try block around code that might error
catch(e) {}
Catch block goes after. If code in try block errors,
will throw error e to catch block. Handle errors
here
throw(e);
Alternatively, just use error (for example, to write
a log file), then re-throw it for System to handle.
Place inside catch block
finally {}
Used to place code that should be executed even
if the catch block halts execution