Professional Documents
Culture Documents
Root AM can contain one or more nested AMs which can themselves nest children to any
arbitrary level. In this scenario, the root AM has access to all the data/objects held by its
children, and all children participate in the same transaction established by the root.
Design-Time
Suppose you have two application modules XxRootAM and XxNestedAM in your project. To
make XxNestedAM
nested to XxRootAM, you reference XxNestedAM in Application Module section of XxrootAM
Editor. Below screenshot shows editor and how XxrootAM.xml is added with
AppModuleUsage
tag to reference XxNestedAM.
1/7
Nested Application Modules in OA Framework
Run-Time
You have to give full-qualified name of application module as second parameter. You can then
access view objects attached to root application module, in nested application module. Suppose
XxRootAM has view object XxVO, you can get instance of it in XxNestedAM using
ViewObject vo = nam.findViewObject("XXVO");
Note that XxNestedAM should be created declaratively before it can be nested using
createApplicationModule() in run-time.
More importantly than usual, you can use nested application module to put custom business
logic in root application module for seeded pages. It is not advisable to extend root application
module. You can still get away with extending root AM until your seeded page doesn't have
LOV fields. If page has LOV fields, root AM extension will cause session time out when clicked
on LOV. The error looks similar to
I was stuck up with the same error when I extended root AM in the Part-2 article of Custom
2/7
Nested Application Modules in OA Framework
Give me an example?
In iProcurement, I will add custom logic to print "Requisition Header Id" in console when "Add to
Cart" button is pressed during requisition creation. Some details of 'About this Page' for
Non-Catalog Request page.
To implement above requirement, I will create custom application module and make it nested to
RequisitionAM in Controller. Then I will create printReqHeaderId() method to access
PoRequisitionHeadersVO in custom application module and print Requisition Header Id in
console.
package xxa2f.oracle.apps.icx.icatalog.shopping.server;
import oracle.apps.fnd.framework.server.OAApplicationModuleImpl;
import oracle.apps.icx.icatalog.shopping.server.*;
import oracle.apps.icx.por.req.server.*;
import oracle.apps.fnd.framework.*;
import oracle.apps.fnd.common.VersionInfo;
3/7
Nested Application Modules in OA Framework
package xxa2f.oracle.apps.icx.icatalog.shopping.webui;
import oracle.apps.fnd.common.*;
4/7
Nested Application Modules in OA Framework
import oracle.apps.fnd.framework.*;
import oracle.apps.fnd.framework.webui.*;
import oracle.apps.fnd.framework.webui.beans.*;
import oracle.apps.icx.por.req.webui.*;
import oracle.jbo.ViewObject;
import oracle.apps.icx.icatalog.shopping.webui.NonCatalogRequestCO;
import oracle.apps.icx.icatalog.shopping.server.*;
import oracle.apps.icx.por.req.server.*;
import oracle.apps.fnd.common.VersionInfo;
super.processFormRequest(oapagecontext, oawebbean);
5/7
Nested Application Modules in OA Framework
6/7
Nested Application Modules in OA Framework
You can create a custom region say xxCustomRN with application module X
xNestedAM
and attach the region using OAF Personalization. So the application module
XxNestedAM becomes nested to root application module via region. This
involves more steps as you have to load custom region definition into MDS
repository using
XMLImporter
utility and create flexible layout to attach custom RN to seeded page. I'll
create my next article on this topic.
7/7