Upload
api-3762678
View
165
Download
15
Tags:
Embed Size (px)
Citation preview
Siebel Scripting, Part Siebel Scripting, Part TwoTwo
eScript SyntaxeScript Syntax
IntroductionIntroduction
Data TypesData TypesDeclaring VariablesDeclaring VariablesOperatorsOperatorsDecisionsDecisionsLoopingLoopingFunctionsFunctionsArrays in eScriptArrays in eScriptSome Important eScript MethodsSome Important eScript MethodsUsing Siebel ObjectsUsing Siebel Objects
Comments in eScriptComments in eScript
Use two forward slashes // at the Use two forward slashes // at the front of a line to make a single line front of a line to make a single line commentcomment
Example:Example://This is a single line comment//This is a single line comment
Use /* to start and */ to end a Use /* to start and */ to end a multi-line commentmulti-line comment
Example:Example:/* This Comment/* This Comment
stretches over stretches over multiple lines */multiple lines */
Data TypesData Types
There ARE no data types in eScriptThere ARE no data types in eScripteScript is a eScript is a loose typedloose typed language languageVariables can change type Variables can change type
dynamicallydynamicallyeScript is Case SensitiveeScript is Case Sensitivevar MyString and var mystring are var MyString and var mystring are
two DIFFERENT variables!two DIFFERENT variables!
OperatorsOperators
Mathematical OperatorsMathematical Operators+, -, *, /, % (no exponentiation)+, -, *, /, % (no exponentiation)
Conditional OperatorsConditional Operators==, !=, <, >, <=, >===, !=, <, >, <=, >=
Logical OperatorsLogical Operators&&, ||, !&&, ||, !
AssignmentAssignment==
TernaryTernaryCondition ? Do If True : Do If FalseCondition ? Do If True : Do If False
Declaring VariablesDeclaring Variables
Syntax:Syntax: var VarName; var VarName;
Examples:Examples: var iScore;var iScore; var bcContact;var bcContact;
Can declare more than one variable of the Can declare more than one variable of the same type in one line:same type in one line: var sLastName, sFirstName;var sLastName, sFirstName;
eScript Variables can be initialized:eScript Variables can be initialized: var sName = “Charlie”;var sName = “Charlie”; var iCount = 1;var iCount = 1;
Decisions: ifDecisions: if
Syntax:Syntax: if (Condition)if (Condition) {{
‘‘Code to be executed if Condition is TrueCode to be executed if Condition is True }}
Example:Example: if (iScore < 60)if (iScore < 60) {{
sGrade = “Fail”;sGrade = “Fail”; }}
Simple Decision Making ConstructSimple Decision Making Construct
Decisions: else Decisions: else Syntax:Syntax:
if (Condition)if (Condition){{
‘‘Code to Execute if Condition is TrueCode to Execute if Condition is True}}elseelse{{
‘‘Code to Execute if Condition is FalseCode to Execute if Condition is False}}
Decisions: elseDecisions: else
Example:Example:if (iScore < 60)if (iScore < 60){{
sGrade = “Fail”;sGrade = “Fail”;}}elseelse{{
sGrade = “Passing”;sGrade = “Passing”;}}
Decisions: elseifDecisions: elseif
Example:Example: if (iScore < 60)if (iScore < 60) {{
sGrade = “Fail”;sGrade = “Fail”; }} elseif (iScore >= 100)elseif (iScore >= 100) {{
sGrade = “Perfect”;sGrade = “Perfect”; }} elseelse {{
sGrade = “Passing”;sGrade = “Passing”; };};
Decisions: switch caseDecisions: switch case
Used to make large nested if structures Used to make large nested if structures more readablemore readable
Syntax:Syntax:switch(VarName)switch(VarName){{
case FirstCase:case FirstCase:break;break;
case NextCase:case NextCase:break;break;
default:default:}}
Decisions: switch caseDecisions: switch case
Example:Example:switch(iScore)switch(iScore){{
case 60:case 60:sGrade = “Fail”;sGrade = “Fail”;break;break;
case 100:case 100:sGrade = “Perfect”:sGrade = “Perfect”:break;break;
default:default:sGrade = “Passing”sGrade = “Passing”
}}
Looping: for LoopLooping: for Loop
Syntax:Syntax:for (start;condition;increment)for (start;condition;increment){{
‘‘Code to execute each iteration of loopCode to execute each iteration of loop}}
Example:Example:for (iCtr = 0;iCtr<10;iCtr++)for (iCtr = 0;iCtr<10;iCtr++){{
sStepNum = “Step Number: “ + Str$(iCtr);sStepNum = “Step Number: “ + Str$(iCtr);}}
Looping: do LoopLooping: do Loop
Syntax:Syntax: dodo {{
‘‘Code to execute each iteration of the loopCode to execute each iteration of the loop }while (Condition);}while (Condition);
Example:Example: iCtr = 0;iCtr = 0; dodo {{
iCtr = iCtr + 1;iCtr = iCtr + 1;sStepNum = “Step Number: “ & Str$(iCtr);sStepNum = “Step Number: “ & Str$(iCtr);
} while (iCtr < 10);} while (iCtr < 10);
Looping: while LoopLooping: while Loop
While loop has same syntax as do loop, While loop has same syntax as do loop, but Condition is at the top, instead of but Condition is at the top, instead of the bottomthe bottom
In a do loop, the loop will always In a do loop, the loop will always execute at least onceexecute at least once
In a while loop, the loop will not execute In a while loop, the loop will not execute even once if the condition is not true even once if the condition is not true the first time through the loopthe first time through the loop
FunctionsFunctions
All functions in eScript are referred to All functions in eScript are referred to as functions whether or not they as functions whether or not they return a valuereturn a value
Simple types are passed by value Simple types are passed by value unless you place an ampersand in unless you place an ampersand in front of the variable name (&)front of the variable name (&)
Objects and arrays are always Objects and arrays are always passed by referencepassed by reference
FunctionsFunctions
Syntax:Syntax:function FuncName (Var1, Var2)function FuncName (Var1, Var2){{
‘‘Code to execute inside functionCode to execute inside function‘‘Use return (Value); to return a valueUse return (Value); to return a value
}}
FunctionsFunctions
Example:Example:function GetName ()function GetName (){{
var sName = “”;var sName = “”;sName = GetProfileAttr(“SPN_CA_NAME”);sName = GetProfileAttr(“SPN_CA_NAME”);return (sName);return (sName);
}}
Calling FunctionsCalling Functions
Syntax:Syntax:Var = FuncName(Value)Var = FuncName(Value)FuncName (FuncName(Value))FuncName (FuncName(Value))
Example:Example:var sName = GetName();var sName = GetName();
Example 2:Example 2:FindValue(GetName());FindValue(GetName());‘‘FindValue is some other function that FindValue is some other function that
takes a string as a parametertakes a string as a parameter
ArraysArrays
Declaring:Declaring:var ArrayName = new var ArrayName = new
Array(NumElements);Array(NumElements);Useful methods for arraysUseful methods for arrays
getArrayLength(), length property: Returns getArrayLength(), length property: Returns the number of elements in an arraythe number of elements in an array
reverse(), sort()reverse(), sort()setArrayLength(num): dynamically resizes setArrayLength(num): dynamically resizes
the arraythe arrayjoin() : creates a string from array join() : creates a string from array
elementselements
Some Important eScript Some Important eScript MethodsMethods
new Date (in place of Now)new Date (in place of Now)The Clib ObjectThe Clib ObjectString Manipulation in eScriptString Manipulation in eScriptFile Handling in eScriptFile Handling in eScript
new Datenew Date
Returns Current Time and Date on Returns Current Time and Date on machine that the script is running onmachine that the script is running onRunning Web Client or Wireless Web Running Web Client or Wireless Web
Client, that is the Siebel Server that the Client, that is the Siebel Server that the AOM is running onAOM is running on
Running Mobile Web Client or Dedicated Running Mobile Web Client or Dedicated Web Client, that is the machine that Web Client, that is the machine that Siebel.exe is running on- the client’s Siebel.exe is running on- the client’s machinemachine
Syntax: var MyDate = new Date;Syntax: var MyDate = new Date;
The Clib ObjectThe Clib Object
Has many uses, including file Has many uses, including file handling, string manipulation, handling, string manipulation, character typingcharacter typing
Character Typing functions:Character Typing functions:isalpha()isalpha()isalnum()isalnum()isdigit()isdigit()toascii()toascii()Many othersMany others
String ManipulationString Manipulation
More than one way, but the easiest More than one way, but the easiest is:is:
First, put the string into an array of First, put the string into an array of one character long strings (no char one character long strings (no char data type)data type)Use Clib.substring() Use Clib.substring()
Next, use for loop to iterate through Next, use for loop to iterate through array, and parse the string as you array, and parse the string as you would in C++would in C++
File HandlingFile Handling
Clib.fopen()Clib.fopen()File PointersFile PointersClib.rewind()Clib.rewind()Clib.fgets()Clib.fgets()Clib.fprintf()Clib.fprintf()Clib.close()Clib.close()
Opening FilesOpening Files
Syntax:Syntax:fpname = Clib.fopen(filename, “r”|”w”);fpname = Clib.fopen(filename, “r”|”w”);
Examples:Examples:var fp;var fp;var filename = “C:\MyFile.txt”;var filename = “C:\MyFile.txt”;fp = Clib.fopen(filename, “r”);fp = Clib.fopen(filename, “r”);
Clib.rewind() MethodClib.rewind() Method
Sets the File pointer position to the Sets the File pointer position to the beginning of the filebeginning of the file
Should always be done on opening a Should always be done on opening a filefile
Reading From FilesReading From Files
Use fgets()Use fgets()Syntax:Syntax:
Clib.fgets(fpname);Clib.fgets(fpname);Example:Example:
fp = Clib.fopen(filename, "r");fp = Clib.fopen(filename, "r");Clib.rewind(fp);Clib.rewind(fp);
while (!Clib.feof(fp))while (!Clib.feof(fp)){{
sXML = sXML + Clib.fgets(fp);sXML = sXML + Clib.fgets(fp);}}
Clib.fclose(fp);Clib.fclose(fp);
Clib.feof() MethodClib.feof() Method
Takes a file pointer as argumentTakes a file pointer as argumentReturns true if file pointer is at the Returns true if file pointer is at the
end of the fileend of the file
Clib.fprintf() MethodClib.fprintf() Method
Writes Data to an open fileWrites Data to an open fileSyntax:Syntax:
Clib.fprintf(filepointername, Value);Clib.fprintf(filepointername, Value);Example:Example:
fp = Clib.fopen(filename, "w");fp = Clib.fopen(filename, "w");Clib.rewind(fp);Clib.rewind(fp);Clib.fprintf(fp, “Write This To the file”);Clib.fprintf(fp, “Write This To the file”);Clib.fclose(fp);Clib.fclose(fp);
Clib.fclose() MethodClib.fclose() Method
Always Make sure to close your files Always Make sure to close your files after use!after use!
Syntax: Syntax: Clib.fclose(filepointername);Clib.fclose(filepointername);
Siebel Specific ObjectsSiebel Specific Objects
BusCompBusCompBusObjectBusObjectTheApplicationTheApplicationPropertySetPropertySetServiceServiceObjectObjectParentheses!Parentheses!
Error Handling With eScriptError Handling With eScript
MUCH more robust than Siebel VBMUCH more robust than Siebel VBUses try-catch-throw system similar Uses try-catch-throw system similar
to Cto CRemember that the Siebel system Remember that the Siebel system
itself is already set up to handle itself is already set up to handle many errors, so most don’t even many errors, so most don’t even need to be handled by youneed to be handled by you
Error Handling SyntaxError Handling Syntax
try {}try {} Place try block around code that might errorPlace try block around code that might error
catch(e) {}catch(e) {} Catch block goes after. If code in try block errors, Catch block goes after. If code in try block errors,
will throw error e to catch block. Handle errors will throw error e to catch block. Handle errors herehere
throw(e);throw(e); Alternatively, just use error (for example, to write Alternatively, just use error (for example, to write
a log file), then re-throw it for System to handle. a log file), then re-throw it for System to handle. Place inside catch blockPlace inside catch block
finally {}finally {} Used to place code that should be executed even Used to place code that should be executed even
if the catch block halts executionif the catch block halts execution