Siebel eScript.pptx

March 28, 2018 | Author: Shanta Devi | Category: Scripting Language, Sql, Control Flow, Database Index, Class (Computer Programming)


Comments



Description

Siebel Scripting –SDU-02- Training Pack-Jeetesh Goud © Tech Mahindra Limited 2011 Tech Mahindra Limited confidential Topics  Overview  Architecture  Fundamentals  Declarative alternatives to scripting  Best Practices  Scripting : Execution flow with example Siebel eScripting –Overview What is Siebel Scripting  An integrated use of multiple scripting languages to support Siebel Applications  Siebel 2000 requires the use of only one language code type  Visual Basic (VB)  eScript  Siebel 7 & 8 supports use of both languages within the same application Prompt. customer specific data validation rules  May incorporate validations based upon data internal or external to siebel  Communication with external sources  Workflow Processes  Business Services and Transport Adaptors  Virtual Business components(VBCs)  Dynamic User Interaction  RaiseError /RaiseErrorText  Alert.Siebel Scripting Capabilities  Scripting provides a flexible mechanism for extending the Siebel eBusiness applications  Common usage scenario’s:  Simple or complex. Confirm  Custom HTML dialogs .  Written in java script. controls in Standard Interactivity mode  Scripts are written in Siebel provided Events.  Events are invoked automatically in a Siebel defined hierarchy .  Interfaces available for accessing Siebel objects in High interactivity mode.Siebel Scripting  Script can be written in both server side and browser side of the Siebel application.  Server scripts are written in eScript or VB Script  Limited support for user interaction  Browser Script  Runs in the client application in the browser at Run time.  Server Script  Server Script run in the Object manager on server. Architecture . Smart Web Architecture . Server Script Architecture  Executed in Siebel Object Manager  Authored within Siebel Tools and administrative views  Uses Siebel VB and eScript  Supports integration with legacy and packaged applications and other services . Browser Script Architecture  Executed in the browser at run time  Authored within Siebel Tools  Uses Javascript  Supports COM-based integration with desktop applications like Microsoft excel . Fundamentals . Update.Server Script When. and Delete operations Access data beyond the current record. Insert. Access data beyond current business component. Interaction with other server components or external services ..     Query. e. font colors or sizes).Browser Script Used When ..  Data Manipulation at Current Record level.  Showing alerts or popup windows.  Obtaining input from the user.  Invoking business services. .  Interacting with another application.  Modifying parts of the UI dynamically (i.  When you invoke business service methods through Browser Script.  Browser script can invoke server script but not the other way round.  In Browser Script. the high interactivity mode framework checks if the business service resides in the browser.Important points of Browser Script  Browser script uses theApplication() and not TheApplication().  In Browser Script.  Browser Script may invoke a browser-based or server-based business service. . and if it does not find it. Initially. in Server Script. but Server Script can only invoke a server-based business service. the GetBusComp() method can access every business component that has been instantiated in the active business object. the GetBusComp() method can only access business components in the current view. GetFieldValue can be used only for the fields exposed in the applet and Id Field. it sends the request to the server for execution. the business service may be implemented as a browserbased business service (written in JavaScript) or a server-based business service.  E.  E. CONFIDENTIAL© Copyright 2008 Tech Mahindra Limited 6/20/15 1 5 . WriteToLog. Date Manipulation. Responsibility Check.Layers of Scripting  Application  Script to be executed during Application login or log off.g.  Actions generic to entire application.  Business Service  Script that is common and can be called from anywhere within the application.g.  Business Component  Script common to only certain applets  Applet  Script common to a single applet.  Application_Start Event  When Application starts.  Application_Navigate Event  After the client has navigated to a view. .Siebel Events at Application layer  Application Server Script  Application_Close Event  Before application close  Last minute cleanup.  Application_PreNavigate Event  Before the client navigates to a view.  Application_InvokeMethod Event  After specialized method is invoked.  Application_PreInvoke Event  Before specialized method is invoked  Before custom method is invoked. .  Application_InvokeMethod Event  After specialized method is invoked.Siebel Events at Application layer  Application Browser Scrip  Application_PreInvoke Event  Before specialized method is invoked  Before custom method is invoked. .  Service_InvokeMethod Event  After specialized method is invoked  Service_PreCanInvokeMethod  Before Pre Invoke  Checks if user has authority to invoke.Siebel Events at Bus Service layer  Business Service Server and Browser Script  Service_PreInvokeMethod  Before specialized method is invoked  Before custom method is invoked.  BusComp_CopyRecord  After a record is copied and made active. .  BusComp_PreAssociate  Before record is added for association.  BusComp_InvokeMethod  After a method is invoked.  BusComp_NewRecoed  After a new record is created and activated.Siebel Events at Bus Comp layer   Business Comp Server Script  BusComp_Associate  After record is added for association.  BusComp_DeleteRecord  After a record is deleted.  BusComp_PreQuery  Before a query execution.  BusComp_PreDeleteRecord  Before a record is deleted.  BusComp_PreGetFieldValue  When value in a field is accessed. .  BusComp_PreInvokeMethod  Before specialized method is invoked  BusComp_PreNewRecord  Before a new record is created and activated.Siebel Events at Bus Comp layer  Business Comp Server Script  BusComp_PreCopyRecord  Before a record is copied and made active.  BusComp_PreSetFieldValue  Before a value is pushed down a field.  To prevent deletion. Siebel Events at Bus Comp layer  Business Comp Server Script  BusComp_PreWriteRecord  Before a row is written in DB.  Business Comp Browser Script  BusComp_PreSetFieldValue  Before a value is pushed down a field.  BusComp_Query  After a query execution.  BusComp_SetFieldValue  After a value is pushed down a field.  Not Invoked for a pick list and MVF.  BusComp_WriteRecord  After a row is written in DB. . Siebel Events at Applet layer  Applet Server Script  WebApplet_InvokeMethod  After a method is invoked through applet or menu. .  WebApplet_ShowControl  After HTML is generated by SWE after some server operation.  For application in SI mode.  Before pre invoke to check if user has authority to invoke the method.  WebApplet_PreInvokeMethod  Before a method is invoked through applet or  WebApplet_PreCanInvokeMethod menu.  WebApplet_ShowListColumn  After HTML for a list applet is generated by SWE after some server operation.  WebApplet_Load  After an applet is loaded. • Applet_InvokeMethod • After a method is invoked through applet or menu.Siebel Events at Applet layer   Applet Browser Script  Applet_ChangeFieldValue  When data in a field changes through applet.  Not invoked for pick and popup applet. • Applet_PreInvokeMethod • Before a method is invoked through applet or menu. • Applet_Load • After applet is loaded and data is displayed. . • Applet_ChangeRecord  When user moves to another row. Siebel Event Model for Button Click Continue Operation Continue Operation Continue Operation Continue Operation Continue Operation . Effect of CancelOperation  Use carefully.  Stops execution of Siebel internal code and user code.  E.g.  Use during Negative validation. if( sResponse == "FALSE") { TheApp.RaiseErrorText(sMsg); return(CancelOperation); } Concept of Profile Attribute  Profile attributes are values that, once set, can be accessed throughout the application.  Profile attribute values persist until application log off.  SetProfileAttr  Sets a profile attribute value. BusComp_SetFieldValue(fieldname) { if(fieldname == ‘Account No’) TheApp.SetProfileAttr (“sAccountSet” ,”Y”); }  GetProfileAttr  Retrieves a profile attribute. BusComp_WriteRecord() { if (TheApp.GetProfileAttr (“sAccountSet”) == “Y”) CancelRec(); }  The impact of profile attribute is discussed in Best practice section. Siebel Class  Specialized classes provided by Siebel that contain various methods and user properties that can be used.  Classes and their methods are inherited.  Applet Classes  Building Blocks of user interface.  Used to instantiate applet objects.  Business Component Classes  Used to instantiate Business Component objects.  Business Service Class  Used to instantiate Business Service objects.  User defined business service should always have CSSService class.  Business service for EAI should have CSSEAIDTEScriptService class. Some Applet Classes  CSSFrame  Used to invoke general method for form applets.  E.g. ExecuteQuery, NewQuery, Inherited parent methods. Parent – CSSSWEBase  CSSFrameBase  Used for form applet functionality in base mode.  Methods – GoToPage, GoToURL, GoToView  Parent – CSSSWEFrame  CSSFrameList  Used for list applets functionalities  Methods – Inherited CSSSWEFrame, CSSFrame methods  Parent – CSSSWEFrame  CSSFramePopup  Used for list applets functionalities in Base mode  Methods – Same as FrameBase Counterparts.  CSSFrameListPopup  Used for popup list applets functionalities .Some Applet Classes contd…  CSSFrameListBase  Used for list applets functionalities in Base mode  Methods – Same as FrameBase Counterparts.  Helps in creation and manipulation of SR  CSSBCFINOppty  A class for opportunity based functionalities.Some BC Classes  CSSBusComp  A main base class from which other child classes are derived. .  CSSBCVExtern  A class for VBCs for reading external XMLs .  CSSBCActivity  A base class for Action related activities  Helps in creation and manipulation of activity  CSSBCServicRequest  A class for SR related activities BC.  Incorrect object declaration leads to memory leak.  Dynamic switching between server and browser side script not possible  Minor change in script requires srf compile  Scripts are not upgradeable.Drawbacks of scripting  Siebel recommends that scripting should be last resort.  Difficult to maintain code.  single script can have 16K lines of code. . Declarative alternatives to scripting . Declarative alternative to scripting  Best alternative to scripting is using user properties.  Implement run-time behavior that supplements scripting.  User Property are of the following types  Applet level  Control level  BC level  Field level . '"RowId"'. "Action". "BusComp". "Expression“  To invoke BC  "Name".g. "Action".  To set field value  "Name".  'INVOKESVC'. Named Method 2: WriteRecord  'INVOKE'. 'Workflow Process Manager'. "Method“  To invoke BS  "Name". "Field". "Service".New Order"'. 'Run Process'. '"Account . '"ProcessName"'. "Method“  Can invoke methods in order  E.'[Id]' .Applet User Properties  Named Method n  To invoke BC. "SET". 'WriteRecord'. "BusComp". BS or set field value. Applet user Properties contd…  CanInvokeMethod: MethodName  To enable/disable methods behind buttons.g. Name: DisableNewRecord  Value: CurrentApplicationName .  E.  E. Name: Default Applet Method  Value: MethodName  DisableNewRecord  To disable new record creation on the applet  E.g. Name: CanInvokeMethod: CopyRecord  Value: N  Default Applet Method  Specifies method invoked on hitting Enter key.g.  Value : NameOfService. "[Primary Held Position Id] is not null and [Primary Held Position Id] <> ""No Match Row Id""". "FieldValue“  E. "Employee Flag".  ServiceName  BS to be invoked for a VBC.  Value : NameOfField. "FieldName". "Y" .g.BC User Properties  Named Method n  Same as Applet user property.  BC Read Only Field  To make a field read only in the UI.  On Condition Set Field Value  To set a field value under a condition  Value : "Condition".  On Field Update Invoke n  To invoke a BC method on a field update. "Value". CopyXA"  On Field Update Set n  To set a field value when another field is updated.  Value: "[FieldToCheck]". "FieldToSet". "Asset Mgmt Asset".  Value: "FieldToCheck". On Field Update Invoke "Product Name".  E. "[BusCompName]". "Condition“  Value and Condition are optional. "Done".Some BC User Properties contd.Today ()..g. "[MethodName]“  E. "")" . "IIF ([Done Flag] = "Y".g. "Done Flag". Property Set     Collection of properties. Used as inputs and outputs for BS. May have child properties. used for storing data. . Also used to represent EAI data.  SetProperty  Sets a property (name value pair) in a property set.Some Property Set Methods  AddChild  Adds a child property set to a parent.  GetChildCount  Returns the number of children.  GetChild  Returns the specific child property set.  GetProperty  Returns the value of a specified property in a property set. .  RemoveProperty  Removes a property from a property set. SetProperty(“ LookupValue". SetProperty(“ View". svcBusinessService = oApp. "CUT Invoice Sub Accounts").NewPropertySet(). "Id"). } svcBusinessService. vRowId). with(psInputssvc) {SetProperty(“ Object". SetProperty(“ LookupField". "BT Billing Account"). "BT BAL Invoice Credit Schedule View").psInputssvc.Correct way of passing inputs to BS psInputssvc = oApp.psOutp utssvc). Outputs) { ----------------------------------------} .NewPropertySet().GetService("BT GotoView"). psOutputssvc = oApp.InvokeMethod("BTGotoView". BT Goto View method Structure function BTGotoView (Inputs. SetProperty(“ Component". Incorrect way of passing input to BS svcBusinessService = oApp. “Gold”.GetService("BT Nevis Consumer"). “Order Type”). svcBusinessService. fnGetLetterText method Structure function fnReplace (sData. sReplaceWhat) { ----------------------------------------} .InvokeMethod("fnReplace". XML representation of property sets  Property set can be depicted as XML and vice versa for EAI.  XML hierarchy BS used for conversion.  Property sets have corresponding XML construct Prop set Xml tag Prop set type Tag name Prop set value Tag value Property name Tag attribute name Property value Tag attribute value Child property Child tag . Property set to XML . Naming convention Data Type Symbol Example String S sMessage Integer I iCount Boolean B bFound Business Object bo boAccount Busines Component bc bcContact PropertySet ps psInputs Business Service svc svcBTConsumer Date dt dtToday Applet ap apOrderItems Control ctl ctlButton . Sample scripts  Enabling button on an applet .  Display error message using server script .Sample scripts contd.. Sample scripts contd..  Asking confirmation on browser script . Try/Catch/Finally block is must. function Name (Inputs.Basic Scripting Guidelines  Code Layout  Script should be laid out in a consistent fashion throughout the whole repository. Outputs) { try { } catch (e) { } finally { } }  Scripts should be as clean as possible:  Remove all debug code  .  Object instantiation  Always instantiate object where required. . never at the top.Basic Scripting Guidelines contd..  Correct order  Evaluate condition  Create objects based on condition  Use objects  Incorrect order  Create objects  Evaluate condition  May or may not use object based on condition.  Destroy objects in reverse order in which they are created by Siebel  Child objects first.Basic Scripting Guidelines contd.. in the finally block.  Pick/Associate/MVG business components before the parent business component  Business components before business objects  No specific order for property sets and business services since they are independently created from the application . parent objects second.  Object Destruction  Explicitly destroy objects once they are used.  Destroy objects by setting it to null  bcBCName = null.  This prevents memory leakage. ExecuteQuery(ForwardOnly) instead of  ExecuteQuery(1)  Improves readability  Easier to upgrade.. .  E.g.  Can be easily changed and don’t need re compilation.g.  DeleteRecord  A call to DeleteRecord implicitly moves the record pointer to the next record.  In order to prevent skipping of records avoid a call to NextRecord immediately following a call to DeleteRecord. Profile attributes.  Logical constant values  Use logical constant in place of literals  E. – LOV.  Dynamic values  Use dynamic values instead of hard coded values.Basic Scripting Guidelines contd. } finally { // destroy object return true.  Return Statement  A return statement should be judiciously used. . } catch (e) { // treat error return false.Basic Scripting Guidelines contd.  E.  Thus error handling is suppressed.. try { return true. }  The code is supposed to return false for an exception  But it returns true in finally block.g.  Improper use can lead to unexpected result. Name() == “Service Request”) { Do something } if there is no parent bus comp.Name() == “Service Request” Solution if (this.: if (this. the expression evaluates to NULL.ParentBusComp().ParentBusComp().Basic Scripting Guidelines contd..g.  Failure to do so might result in inconsistent behavior and crashes.  E.Name() == “Service Request”) { Your logic } } .  Defensive Coding  Always use defensive coding to check for NULL values.ParentBusComp() != null) { if (this. sRowId = Inputs.g.  E.GetProperty ("Object Id"). especially for search spec artifacts. ExecuteQuery(ForwardOnly).. } .  Failure to do so might lead to a Full Table Scan.  Same should be done while querying a DB table. sRowId).Basic Scripting Guidelines contd. if ( sRowId != "" && sRowId != null) { SetSearchSpec("Id". Siebel logging and Spooling  Logs allow monitoring the events in background.  Spool allows us to monitor SQL statements on Siebel DB  There are 2 types of clients  Web client  Dedicated client  Web client  The only way to monitor logs is to increase log levels on server for the object manager or any particular component.  The keyword Begin: Execute[BC Name] precedes the SQL statement. .  Logs Events and SQLs. WorkflowProcessManager  Dedicated client  Logging  Set environment variables  SIEBEL_LOG_DIR : Path where the sieblog is created  SIEBEL_LOG_EVENTS : Log level.  E.g. Can be from 1.4  Level 4 logs maximum details. txt.  It can help you in assessing the time taken by the various SQL statements when you encounter performance issues.Siebel logging and Spooling contd.  It allows you to identify the SQL statement being executed when an SQL error code is returned..  When data appears to be missing from a view.  Dedicated client  Spooling  Introduce /s in client target followed by path for SQL. you can identify the SQL used to retrieve that data  Siebel tools  Spooling  The process for spooling using tools is similar to dedicated client . Break (CTRL+BREAK) Stops the execution of the currently running script. Toggle Breakpoint(F9) Sets or removes a breakpoint on a specific line of code. ClearAllBreakpoints(CTRL+SHI FT+F9) Removes all breakpoints from the current script routine. End Stops the execution of the application and returns to the Siebel Script Editor Restart(SHIFT+F5) Restarts the application if a break has occurred.Debugging script  Siebel tools has a debug menu option that allows various debug and check activities Debug Options Description Check Syntax Compiles the current script and verifies syntax. Step To Cursor(CTRL+F8) Executes all lines of code up to the line selected . Start(F5) Starts the application. Watch (SHIFT+F9) Displays script variables and their values in watch window Calls (CTRL+L) Contains a list of subroutine and function calls that were executed prior to current line Step Into(F8) Executes the next line of script code. A dialog box with startup parameters also appears. ExecuteQuery(ForwardOnly).  These tables are queried when we access data from UI or we can explicitly query in a script. ActivateField(“ Field names ").g.  Then invokes BusComp_Query  Called after execute statement and before data is retrieved. } .  Invokes BusComp_PreQuery  Called before execute statement  Cancel operation may stop Siebel code execution but any script after cancel runs regardless of it.Querying Siebel DB  Each BC (other than VBC) maps to a Siebel DB table and BC field maps to a column in the table. ClearToQuery(). in scripting    with(BC name) { SetViewMode(AllView).  E. SetSearchSpec(Search Spec).  Can have multiple instance of it.e.  Should activate all BC fields that are queried and that are retrieved based on the query  Analogous to Select statement. 1 bcName.g.SetSearchSpec(“ Position ”.SetSearchSpec( “ Position ”. what data will be displayed  AllView will set visibility to all..  ActivateField(Field names)  Must come before executing query at all costs.  bcName.Querying Siebel DB contd.‘ Admin’ ).  SetViewMode(AllView)  Sets visibility mode of BC i. . To be used carefully  E.’‘ABC’ ).  ClearToQuery  Clears any old SearchSpec that might already be associated with the BC.  SetSearchSpec(Search spec)  Analogous to Where clause.  bcName. 3 bcName. Tools spec : [Position] = ‘ABC' AND [Status] = 'Sold‘  Resulting where : WHERE Status = ‘Sold’ AND (POSITION = ‘admin’ AND POSITION = ‘ABC’)  SetSearchExpr(Search exp)  Set a search expression rather than multiple search spec.‘ Admin’ )..‘ Admin’ ).g.SetSearchSpec(“ Organization ”.Querying Siebel DB contd.SetSearchSpec( “ Position ”. .  ExecuteQuery(ForwardOnly)  Executes the query  Always use ForwardOnly as cursor mode to improve performance.  E.g.  Resulting where : WHERE position = ‘Admin’ AND organization = ‘ABC’  A search spec set in tools and search spec in script are automatically ANDed by Siebel without any over writing.’‘ABC’ ).  E.  Resulting where : WHERE position = ‘ABC’. 2 bcName.SetSearchSpec( “ Position ”. Best practices . Impact on Performance  There are 3 types of code that impact overall application performance  Code that increases Application processing (by effect of CPU consumption)  Code that increases Application memory and memory footprint on Application Server  Code that increases n/w (server roundtrips) . Increase in Application Processing  Examples of code which increases processing:  Frequently fired events  Applet_ChangeRecord  Applet_ChangeFieldValue  BC_ChangeRecord  BC_PreSetFieldValue  BC_SetFieldValue  Any code in these events causes heavy processing on Application Server Side  Events that should not have any code present include:  BC_PreGetFieldValue  Applet_PreCanInvokeMethod  Use of calculated fields in Search Specification (See slide Search Specifications) .  Unconditional Execution of code especially on pre – events/Frequently firing events  WebApplet_PreCanInvokeMethod  WebApplet_PreInvokeMethod  Applet_PreInvokeMethod  Applet_ChangeRecord  Applet_ChangeFieldValue  BC_ChangeRecord  BC_PreSetFieldValue  BC_SetFieldValue  Service_PreInvokeMethod ..Increase in Application Processing. .  Bad Example – Unconditional execution .Increase in Application Processing . .  Good Example .Unconditional execution .Increase in Application Processing . Iteration through the records of the Parent BC forces the corresponding child (and potentially grandchild) BC to be re-queried. The logic inside while loop should be optimum  The logic of while loops must have positive exit route. this.  Large while loops  When while loops contain lot of processing including instantiation of objects..Increase in Application Processing . This will save CPU processing . it causes high CPU. The simplest alternative to the problems caused by the above is to move the instantiation of the Child BC outside of the parent BC iteration.BusComp()  If these are used more than once in a code. Under no condition should it go into infinite loop  Nested Queries  Nested query loops exist when a parent and child BC exist constrained by a link. store the reference in a local variable and use the local variable instead.  Special calls .TheApplication(). .  Bad Example – Object Instatiation inside While loop .Increase in Application Processing . .Increase in Application Processing .  Good Example – Object Instatiation inside While loop . Using switch or select case statements can frequently compact multiple pages of script into a single page. .Increase in Application Processing . then compared to different values.  Use of switch case  When you need to evaluate and compare a single expression with many different possibilities. the fastest and most readable way of doing this is to use switch (eScript)  It is more efficient because the expression is evaluated once..  It is easier to read than a series of nested if…else if statements. Application Server Memory  Examples of code which increases Application memory:  Undestroyed objects  Garbage collector eventually collects undestroyed objects. memory is freed up instantly  Profile Attributes in Search Specs of Cached BCs  Do not add ProfileAttr in Search spec of cached BC as it leads to heavy use of memory. PickList Hierarchical etc) are cached. We have seen the instances where vanilla picklist BCs (PickList Generic. This increases memory footprint . If we use ProfileAttribute then it won’t use cache result but it will do the query every time as ProfileAttribute value is dynamic.  High Memory accumulation because of caching as every call Siebel treats it as different and it caches it. but if the objects are destroyed. .Application Server Memory .  The ForwardBackward option degrades performance and uses memory to cache the records.  ForwardOnly delivers the best performance as it only allows records to be processed in a sequential manner but this is usually the only requirement.. use ExecuteQuery(ForwardOnly) for all instances apart from those scenarios when it is essential step backwards through a recordset. Usually the only reason that the ForwardBackward cursor is required is when the queried Business Component exists in the UI or a DeleteRecord is executed as the cursor will attempt to locate the previous record. they remain in memory for longer time increasing memory  Using ExecuteQuery(ForwardBackward)  When executing queries in code.  Examples of code which increase memory continued…  Instantiating objects only when they are required  If they are instantiated much before they are used. .DB Server impacting code  A code that does not comply with the best practices hinders the performance of the database.  A badly performing sql increased DB CPU and causes whole application to slow down.  Check the explain plan of the sql to ensure that appropriate index is used  Take help from Performance Team in case of doubt to verify cost of SQL .DB Server impacting code  Does the Search Specification use a field that is Index supported?  Search Specification must have at least one field that uses index and is used in  Does the Search Specification allow Oracle to choose a suitable Index?  The order that fields appear in the search specification will affect their use of an index: if a search specification details name and then location. but the index details location and then name. the index will not be used. ) . however in most cases.DB Server impacting code …  Is your Search Specification going to execute SQL on a large or volatile table?  You must check the explain plan of the SQL with the help of Performance Team  DB Stats impact the selection of index by database. the results are returned in a raw format to the object manager and must be sorted there leading to significant delays in displaying information. SQL should be checked for explain plan in eSnap  Evaluate closely the usage of calculated fields in Search Specification?  Avoid the usage of Calculated Fields in Search Spec as it causes more CPU  consumption on Database side as well as Application Server side  (Search specification that includes a calculated field: If the RDBMS supports the calculation. performance may not suffer. DB Server impacting code …  Does the sql have a positive search criteria  In order for SQL to perform well it tends to require positive search criteria . IS NOT NULL.and OR. then get the sql reviewed by Performance Team . EXISTS don't fit into this category.  If these usage are unavoidable. NULL. DB Server impacting code  The coding parameters that impact the DB performance are:  Search Specification  Wrong design of search specification causes Full Table Scan or a badly performing sql  Sort Specification  The Sort Specification should be made up of one of the fields used in a Search Specification  In almost all situations. .  Do not include joined fields in sort specifications. the Sort Spec should match the Index used by Oracle as this ensures the data is returned in the desired order. Try to use Thin BCs as much as possible. . Hence instantiate child BC only when parent BC record is found. When parent and child instantiated together and then parent is queried then child BC as well queried. This will fire one extra query on child BC.  Do not instantiate child and Parent objects together.  Do not instantiate parent and child together at top always. If it is the only option make sure you take out SQL arising out of this and get it reviewed  Leads to Bad SQL with high Buffer Gets (Logical IO's)  Use of Thick BCs  Use of Thick BCs causes heavy sql.DB Server impacting code  The coding parameters that impact the DB performance continued…  Use of RefreshRecord Method  Avoid using RefreshRecord anywhere in code (especially on Order Entry .Line Items). DB Server impacting code  Bad Example – Object Instantiated Together . DB Server impacting code  Good Example .Object Instantiated Seperately . Increase in Server Round Trips  More use of profile Attribute in Browser side  More number of server calls from browser side . Scripting : Execution flow . Scripting Flow Diagram . Enabling a button  To enable or disable a button . Clicking a button . 8 6 .
Copyright © 2024 DOKUMEN.SITE Inc.