Skip to main content

What you want to know about allow-unbounded-task-flow-customizations flag in adf-config.xml ?

Sharing a tip that I learned recently from my colleagues.
In case if your application does not need  to support user level customization(design time/seeded or run time) for task flow metadata,  here is a tip to improve the performance of your application.

By default, the ADF Controller uses a user session level cache to store the application’s unbounded task flow metadata. Though this enables support for user specific customization, it may not be the right thing to have if your application does not need user level customization for unbounded task flows. In such cases you can opt for storing the unbounded task flow metadata at application level by deselecting the check box "Allow Unbounded Task Flow Customizations" in the over view editor of adf-config.xml file(in the Controller page). Now the adf-confog.xml may look like as follows:

<adf-config ...>
... ...
<adf-controller-config xmlns="http://xmlns.oracle.com/adf/controller/config">
    <adf-scope-ha-support>true</adf-scope-ha-support>
    <allow-unbounded-task-flow-customizations>false</allow-unbounded-task-flow-customizations>
  </adf-controller-config>
</adf-config>

With the above setting the customization done at task flow level are shared by all users of the application, which will help you to save memory heap size and some CPU cycles. This setting is useful when you need site level customization or don't need customization at all.

Comments

Abhishek Kumar said…
What is the default value for this ?
Do you suggest to turn this to false for ADF application which does not use MDS customization at all ?
How much of improvement can be seen by turning it false ?
1.What is the default value for this ?
Ans: true (to ensure backward compatibility + historical reasons)
2.Do you suggest to turn this to false for ADF application which does not use MDS customization at all ?
Ans:yes
3.How much of improvement can be seen by turning it false ?
Ans: Good amount ;) all depends on how bis is your application and undbounded task flow metadata

Popular posts from this blog

How to set Bind Variable Values at runtime ?

In this post I'm sharing a couple of approaches for programmatically setting bind variables values at run time. This post is an attempt to explain 'When to use what ?'[ In case if you are familiar with 'Bind Variables' in ADF BC, please refer Section 5.10, Working with Bind Variables in Fusion Developer's Guide ]

1. Set the Bind Variable value using RowSet::setNamedWhereClauseParam(...)

You can use use the setNamedWhereClauseParam(...) method on the ViewObject interface (which extends oracle.jbo.RowSet) to set the value for bind variables. Please note this sets the value on default RowSet. In other words, this doesn't have any effect on the secondary RowSets that you/system generates.
ViewObject vo = am.findViewObject("EmployeesView1"); vo.setNamedWhereClauseParam("bindVarDeptId", new Number(10)); vo.executeQuery();
2. Set the Bind Variable value using ViewObject's VariableValueManager::setVariableValue(...)

VariableValueManager Ma…