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");
    . . . . . .    }
  • 相关阅读:
    新手安装Oracle数据库指南
    新手IntelliJ IDEA入门指南
    IntelliJ IDEA 开发工具快捷键大全
    打印杨辉三角
    个人作业-Alpha项目测试
    第三次作业
    第二次作业
    第一次作业-林楠-201731062428
    手把手教你实现在Monaco Editor中使用VSCode主题
    一文搞懂jsBridge的运行机制
  • 原文地址:https://www.cnblogs.com/Flamo/p/3977666.html
Copyright © 2011-2022 走看看