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");
    . . . . . .    }
  • 相关阅读:
    hitachi2020 C-ThREE
    LOJ#2083. 「NOI2016」优秀的拆分
    BZOJ2754: [SCOI2012]喵星球上的点名
    BZOJ4516: [Sdoi2016]生成魔咒
    AtCoder Beginner Contest 146解题报告
    拉格朗日插值复习笔记
    对于求解单峰函数最值问题的探讨
    BZOJ5509: [Tjoi2019]甲苯先生的滚榜
    面试技巧
    性能案例分析 | MAT分析内存泄露
  • 原文地址:https://www.cnblogs.com/Flamo/p/3977666.html
Copyright © 2011-2022 走看看