The Role of Customization Allowed Property
By Vik Kumar-Oracle on Apr 07, 2014
In Fusion Applications, all the ADFbc objects have this property set to default. As a result all the ADFbc objects can be customized at design time. However, this is not the case with ADF UI artifacts like pages, page fragments, task flows etc. Some of these are restricted for customization by the development teams. If an artifact’s customization allowed property is set to default then the ability to customize that artifact is determined by its parent. And this continues until the top most parent (root) is found. If the value is non default then the value set at the child level has always the higher precedence over parent value. Taking an example of two level below is how it would work:
There is another property called “customization allowed by” this can be used to permit the customizations allowed by specific roles. This field accepts a comma separated list. One key point about this property is that it is taken into consideration only when customizations allowed resolves to true.
Behind the Scene
When the ‘Customization Allowed’ property is marked true in the property inspector as shown below:
A .rdf file is created to store this information which is a W3C standard for metadata modeling. In this example it would be at <view project default path>/<page relative path>/mdssys/mdx/ViewFilePf.jsff.rdf. The content would appear as below:
<?xml version="1.0" encoding="UTF-8"?><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/"><rdf:Description rdf:about="/"> <customizationAllowed xmlns="http://xmlns.oracle.com/mds"> false </customizationAllowed> </rdf:Description></rdf:RDF>
These entries are imported into the MDS during deployment life cycle. At run time these properties are then merged with the artifact to determine the customizability of the artifact. This means that if customization allowed property is set to false then the artifact cannot be customized at runtime as well via PageComposer or AppComposer.