Вы находитесь на странице: 1из 34

Siebel Scripting, Part

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);

} while (iCtr < 10);


Looping: while Loop
 While loop has same syntax as do loop,
but Condition is at the top, instead of
the bottom
 In a do loop, the loop will always
execute at least once
 In a while loop, the loop will not execute
even once if the condition is not true
the first time through the loop
Functions
 Allfunctions in eScript are referred to
as functions whether or not they
return a value
 Simple types are passed by value
unless you place an ampersand in
front of the variable name (&)
 Objects and arrays are always
passed by reference
Functions
 Syntax:
function FuncName (Var1, Var2)
{
‘Code to execute inside function
‘Use return (Value); to return a value

}
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