There are nearly 200 different types of objects that can be configured in Siebel to reflect the changes in the User Interface Layer, Business Objects Layer and the Data Objects Layer. Being a Siebel Professional, I often come across complex business Requirements that cannot be met solely by configuration. Siebel Scripting is great for handling these complex needs. But there are a few limitations to be considered while using scripting in Siebel development.

  • 16 KB Size limitation
    In Siebel eScripting, a single method can contain only 16KB of code. But in real life, one may have to go in for heavy customizations of Siebel objects for which 16KB is just not enough. My workaround in such cases is to split large methods into smaller methods.
  • Cannot mix scripting languages in an object
    Most scripting in Siebel is in eScript. But, sometimes we need to use third party system/objects like ActiveX/COM where VBscript is the preferred language. So how do we get to external objects like ActiveX/COM objects from a Siebel Object coded in eScript given that we are not allowed to mix scripting languages in an object?. The solution is that we call another Siebel Object which is scripted in VBscript through which we can finally access the external system/object. This solution works fine. But it does lead to performance issues. Better ideas are welcome
  • Dynamic switching between server and browser side script not possible.
    We can call server script from browser script. But once server script starts executing, it is not possible to call browser script. So, it is not possible to do things like call pop-up a message on the browser side after executing say 10 lines of code on server side. If anyone has any workarounds, please do let me know.
  • Object has to be compiled after every modification.
    Till Siebel 7.8, developers had to compile and re-compile modified objects a every minor change in code. This is a big pain while debugging and a major time-waster. But in the latest version 8.0, Siebel provides “Fix and Go” option with ST Engine which has addressed this limitation. Thank you Siebel!!!
  • Scripts are not always upgradeable.
    Scripts often give errors while upgrading a Siebel Application from one version to another. At times we have had to comment out entire sections so that the technical upgrade can complete. Finding all these problem areas in the script and fixing them is a big challenge during upgrades.

Feel free to comment/discuss/debate!

Posted by Abhinav Anand
Comments (1)
March 17th, 2008

Comments (1)

Noone - April 2nd, 2008

There are lots of scripting improvements on 8.0. For a more throug discussion please refer to http://forums.oracle.com/forums/thread.jspa?threadID=583708&tstart=30 Exceprts are below. 1- Features Repository based ScriptAssist and compilation: Greatly accelerates development and upgrade. http://download.oracle.com/docs/cd/ B40099_02/books/eScript/eScript_JSLOverview6.html #wp1035312 Fix & Go: Greatly accelerates debugging by avoding repetitive . srf compilation. http://download.oracle.com/docs/cd/ B40099_02/books/eScript/eScript_JSLOverview5.html #wp1035774 Services as Script Libraries: Enables modular development, improves performance, prevents clumsy InvokeMethod calls, makes the code shorter and readable. http://download.oracle.com/docs/cd/ B40099_02/books/eScript/eScript_JSReference38.html #wp1084973 2- Performance ST engine performs better in multiuser scenarios. Tests has shown that on a typical (?), medium scripted scenarios, with 400 users on a 4 CPU machine; Overall Application Server CPU usage decreased by around %20 Overall Application Server Memory usage went down by around %10 Overall Application Server response time increased by around %30 To give you an idea about the peak performance difference the following code runs around 16x faster with ST engine function bar () { return 0; } function TestPerformance () { var i; var a; var oStart = new Date (); for (i = 0 ; i < 1000000 ; i++) { a = bar (); } var oEnd = new Date (); ReportTime (" " + (oEnd.getTime () - oStart.getTime ()) /1000); }

Comments are closed.