Force Active is a property of a business component (BC) field and is quite often misused, which can result in drastic performance on the Application.

Purpose of Force Active:

When set to true this property results in query of this field every time a business component is instantiated. Important word to note in the above statement is every time.

To explain what I mean every time we assume that we make a field called “Opportunity Name” as Force Active in Opportunity BC. Now, this field will be queried internally by Siebel

  • Every time you do a BO.GetBusComp(”Opportunity”) in a script.
  • Every time you navigate in application and the underlying BC is Opportunity.
  • BC is accessed internally in any form.

Explanation

Every time you make a field Force active it will be made part of where clause each time a query is issued against that BC or table irrespective of the fact that field is required or not.

Extra care for Join Fields .

Users may experience slow database performance when the Force Active property is set to TRUE on fields coming from a join. Fields based on joins or multi-value links will affect performance more than fields mapped to the base table of a business component, because extra SQL is necessary to
retrieve the data. This leads to unnecessary table access and slow performance. Additionally this could prevent the database engine from using indexes efficiently.

Best Practices:

  • If there are standard or custom join fields which are no longer used, inactivate the Join object and make sure that Force Active and Link Specification properties are set to FALSE.
  • Avoid setting the Force Active property to TRUE for join fields. Instead, add the field to the necessary applet and set the Visible property to FALSE.

Moral of the Post:

Don’t just make a field force active until and unless it is absolutely necessary as over a period of time large number of force active fields can result in huge performance impact on application. Activate the field in case it is required in scripting.

In my experience the only time Force Active field is required is when you working on Runtime events and need to access the field in the conditional expression then you will have make the field as Force Active.

OkAvarageGoodVery GoodExcellent (2 votes, average: 5 out of 5)
Loading ... Loading ...