zoukankan      html  css  js  c++  java
  • Siebel Performance for Script <1>

    1.Code in PreGetFieldValue, PreSetFieldValue, SetFieldValue, PreCanInvokeMethod, PreInvokeMethod and InvokeMethod event handlers has been placed outside the switch on FieldName/MethodName.

    Wrong Example:By DW

    function BusComp_SetFieldValue (FieldName)
    {. . . . .
    var boQuote = TheApplication().ActiveBusObject();
    var bcQuote = boQuote.GetBusComp("Quote");
    var nExchangeRate = bcQuote.GetFieldValue("Display Exchange Rate");
    var sCRMCurrencyCode = bcQuote.GetFieldValue("Currency Code");
    var nCommission = 0,nCRMCommission = 0,nCommmissionRate = 0;
    var nBudgetConRate =this.GetFieldValue("Conversion Rate");
    var nQuoteTotal = this.GetFieldValue("Quote Total");
    var sCurrencyCode = this.GetFieldValue("Currency Code");
    if(FieldName == "Commission"){
    . . . . . .    }

    Consequence

    These event handlers have meaning if related to a particular FieldName or MethodName passed as input by the infrastructure.

    Code places outside the switches on such variables will be executed for every field or method. This means that it will be unnecessarily executed a lot of times

    For example this is the list of methods invoked to display the Contact List Applet:

    PreCanInvokeMethod invoked DeleteRecord
    PreCanInvokeMethod invoked ShowQueryAssistant
    PreCanInvokeMethod invoked ToggleListRowCount
    PreCanInvokeMethod invoked UndoQuery
    PreCanInvokeMethod invoked ExecuteQuery
    PreCanInvokeMethod invoked GotoNextSet
    PreCanInvokeMethod invoked GotoPreviousSet
    PreCanInvokeMethod invoked NewQuery
    PreCanInvokeMethod invoked NewRecord
    PreCanInvokeMethod invoked PositionOnRow
    PreCanInvokeMethod invoked UndoQuery
    PreCanInvokeMethod invoked UndoRecord
    PreCanInvokeMethod invoked WriteRecord
    PreCanInvokeMethod invoked ShowPopup
    PreCanInvokeMethod invoked ToggleLayout
    PreCanInvokeMethod invoked GetBookmarkURL
    PreCanInvokeMethod invoked FileSendMail
    PreCanInvokeMethod invoked FileSendFax
    PreCanInvokeMethod invoked FileSendPage
    PreCanInvokeMethod invoked FileSendWireless
    PreCanInvokeMethod invoked Import
    PreCanInvokeMethod invoked ExportQuery
    PreCanInvokeMethod invoked CopyRecord
    PreCanInvokeMethod invoked ChangeRecords
    PreCanInvokeMethod invoked MergeRecords
    PreCanInvokeMethod invoked SelectAll
    PreCanInvokeMethod invoked InvertSelection
    PreCanInvokeMethod invoked ColumnsDisplayed
    PreCanInvokeMethod invoked GotoPrevious
    PreCanInvokeMethod invoked GotoNext
    PreCanInvokeMethod invoked GotoFirstSet
    PreCanInvokeMethod invoked GotoLastSet
    PreCanInvokeMethod invoked RefineQuery
    PreCanInvokeMethod invoked AboutRecord
    PreCanInvokeMethod invoked EditPopup
    PreCanInvokeMethod invoked ExecuteReply
    PreCanInvokeMethod invoked ExecuteReplyAll
    PreCanInvokeMethod invoked ExecuteForward
    PreCanInvokeMethod invoked EmailSend
    PreCanInvokeMethod invoked EmailCancel
    PreCanInvokeMethod invoked RecordCount
    PreCanInvokeMethod invoked AddToSyncList
    PreCanInvokeMethod invoked RemoveFromSyncList
    PreCanInvokeMethod invoked SynchContact
    PreCanInvokeMethod invoked NewOrder
    PreCanInvokeMethod invoked NewQuote
    PreCanInvokeMethod invoked SortOrder
    PreCanInvokeMethod invoked GotoApplet

    If an object allocation, a BC query, a call to CountRecords is placed outside the switch, it will be executed unnecessarily more than 40 times only at applet load. This may result in a sub-optimal performance.

    Solution

    Place all the code in these event handlers inside the switch on method or field name.

    Only variable declaration (not allocation) should be places outside.

    function BusComp_SetFieldValue (FieldName)
    {. . . . .
    if(FieldName == "Commission"){
    var boQuote = TheApplication().ActiveBusObject();
    var bcQuote = boQuote.GetBusComp("Quote");
    var nExchangeRate = bcQuote.GetFieldValue("Display Exchange Rate");
    var sCRMCurrencyCode = bcQuote.GetFieldValue("Currency Code");
    var nCommission = 0,nCRMCommission = 0,nCommmissionRate = 0;
    var nBudgetConRate =this.GetFieldValue("Conversion Rate");
    var nQuoteTotal = this.GetFieldValue("Quote Total");
    var sCurrencyCode = this.GetFieldValue("Currency Code");
    . . . . . .    }
  • 相关阅读:
    开博说两句
    学习总结 (持续更新)
    ip代理 120203
    [vs2005]关于预编绎网站的问题[已预编译此应用程序的错误]
    JAVA类基础
    集合类和泛型
    IO流——字符流
    多线程和包
    多态和内部类
    抽象类与接口
  • 原文地址:https://www.cnblogs.com/Flamo/p/3977666.html
Copyright © 2011-2022 走看看