Summary UI Performace Improvements

posted Sep 6, 2017, 8:11 AM by Eric Patrick   [ updated Sep 6, 2017, 9:04 AM ]

Overview

The qbo.Application.Properties.Settings.SummaryDefaultOptions is a new application setting that enables optimizing Summary method performance for UI calls. Note:
  • this setting applies to .ashx handlers calling Summary only; it does not affect application tier calls (from workflow, etc.)
  • the default setting is "" (the empty string), which causes no change in behavior of QBO
  • the recommended setting is "DescendantDepth=0", which causes UI calls to Summary to exclude children

Background

The Summary method is intended to return all information related to an object, so that power users don't need to define custom queries for:
  • Document generation, 
  • Workflow if/then statements, 
  • Parameter substitution,
  • etc.
"All information" includes:
  • The object
  • Ancestors
  • Descendants
  • Siblings (foreign keys)
Thus, the Summary method becomes a useful construct for many use cases, and QBO3 uses Summary to render the basic UI for most objects. Ironically, the UI rarely needs to have decendants included in the Summary output, because descendants are rendered in panels via AJAX calls. Thus, most calls to the Summary method don't use most of the data returned by Summary.

This change allows QBO3 to limit the default behavior of Summary for UI operations by intercepting calls to Summary from .ashx handlers, and appending the SummaryDefaultOptions to the parameters being passed to Summary. Configuring a target system's SummaryDefaultOptions to be "DescendantDepth=0" will thus remove descendants from the Summary web page, lightening the load on the database for typical UI calls.

Note that Summary parameters can be overridden by creating a Summary statement for any given class. If a custom Summary statement exists and includes any of the same parameters included in SummaryDefaultOptions, the custom Summary statement's parameters 'win'.

For example, assume that the Foreclosure.ashx/Summary UI needed to include key tasks from associated workflows in Foreclosure.Summary.xslt. To optimize the system:
  • From Design > Configuration > Modules > Object Status > Settings, configure SummaryDefaultOptions to be "DescendantDepth=0"
  • From Design > Configuration > Modules > Mortgage > Statements, add a Summary statement with a parameter "DescendantDepth=10"


Comments