Following topics have been covered in this OA Framework Extensions presentation
Steps to extend Entity Object
Steps to extend Application Module
Steps to extend Controller Class
Overview of Personalizations
SPEL [Simplest Possible Expression Language]
PPR – Partial Page Rendering
JDR API’s
How to embed a custom region into OA Framework Page
Best practices when making changes to MDS Layer and personalization
Limitations of personalizations [when doing extensions]
Please click here to view this presentation
Comments
First of all let me thank you for you great effort. Kudos..!
I am a regular visitor to the articles on this site.
I am trying to deploy the training Person OAF to Oracle Apps and using the Document written by Anjani Pandey for deploying. Unfotunately I am structup as I am getting arror when I click on the Menu Item from Oracle Apps I get the below error (I have shortened the error as its too big). Kindly let me know if I am missing anything?
oracle.apps.fnd .framework.OAEx ception: Could not load application module 'xxt.oracle.app s.ak.xxperson.s erver.xxPersonA M'.
at oracle.apps.fnd .framework.webu i.OAJSPApplicat ionRegistry.reg isterApplicatio nModule(OAJSPAp plicationRegist ry.java:279)
# # Detail 0 ##
JBO-30003: The application pool (dataclone2.new bridge.bnm.ieSU PPORT1525xxt.or acle.apps.ak.xx person.server.x xPersonAM) failed to checkout an application module due to the following exception:
orac le.jbo.JboExcep tion: JBO-29000: Unexpected exception caught: oracle.jbo.NoDe fException, msg=JBO-25002: Definition xxt.oracle.apps .ak.xxperson.se rver.xxPersonAM of type ApplicationModu le not found
oracle.j bo.NoDefExcepti on: JBO-25002: Definition xxt.oracle.apps .ak.xxperson.se rver.xxPersonAM of type ApplicationModu le not found
at oracle.jbo.mom. DefinitionManag er.findDefiniti onObject(Defini tionManager.jav a:329)
JBO-300 03: The application pool (dataclone2.new bridge.bnm.ieSU PPORT1525xxt.or acle.apps.ak.xx person.server.x xPersonAM) failed to checkout an application module due to the following exception:
orac le.jbo.JboExcep tion: JBO-29000: Unexpected exception caught: oracle.jbo.NoDe fException, msg=JBO-25002: Definition xxt.oracle.apps .ak.xxperson.se rver.xxPersonAM of type ApplicationModu le not found
at oracle.jbo.comm on.ampool.Appli cationPoolImpl. doCheckout(Appl icationPoolImpl .java:1619)
## Detail 0 ##
oracle.jbo.N oDefException: JBO-25002: Definition xxt.oracle.apps .ak.xxperson.se rver.xxPersonAM of type ApplicationModu le not found
at oracle.jbo.mom. DefinitionManag er.findDefiniti onObject(Defini tionManager.jav a:329)
Thanks ,
Anil K
The main string in your message stack is
xxt.oracle.a pps.ak.xxperson .server.xxPerso nAM of type ApplicationModu le not found
Please do
ls -l $JAVA_TOP/xxt/o racle/apps/ak/s erver/xxPersonA M*
There should be a class file and an XML file in this location for the AM
Is the class & XML file there?
Thanks,
Anil Passi
Thanks a lot...
I have couple of questions...Wor king in R12.
1. Please provide the steps i.e what are the things to be downloaded as from/to which locations so that we can start the customization of a OAF page by opening them in Jdev.
2. Which version of Jdev I should be using in-order-to go for R12 OAF customizations?
3. Can you please share a link of demo for a such a requirement?
C heers,
Satya
For a step by step extension demo on R12, please see link
www.google.com/search?q=site:apps2fusion.com+oa-framework-r12-extension-example-2
Thanks,
Anil Passi
how can i solve this problem ?
if u have some good idea to sovle the problem , plz tell me, ~ thx very much !
BTW,my english is not very well , NVM!
Thanks for your reply. I tried as you said but now getting a diff. error messages. Kindly let me know what am I missing now?
oracle.ap ps.fnd.framewor k.OAException: Application: FND, Message Name: FND_NO_REGION_D ATA. Tokens: REGIONCODE = /xxt/oracle/app s/ak/xxperson/w ebui/xxPersonMa inPG;
at oracle.apps.fnd .framework.webu i.JRAD2AKMapper .getRootMElemen t(JRAD2AKMapper .java:527)
at oracle.apps.fnd .framework.webu i.OAWebBeanFact oryImpl.getWebB eanTypeDataFrom JRAD(OAWebBeanF actoryImpl.java :3719)
at oracle.apps.fnd .framework.webu i.OAWebBeanFact oryImpl.getRoot ApplicationModu leClass(OAWebBe anFactoryImpl.j ava:3452)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage(OAPag eBean.java:999)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage(OAPag eBean.java:502)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage(OAPag eBean.java:423)
Exception:
oracle.adf.mds .MetadataDefExc eption: Unable to find component with absolute reference = /xxt/oracle/app s/ak/xxperson/w ebui/xxPersonMa inPG, XML Path = null. Please verify that the reference is valid and the definition of the component exists either on the File System or in the MDS Repository.
at oracle.adf.mds. internal.Metada taManagerBase.f indElement(Meta dataManagerBase .java:1350)
at oracle.adf.mds. MElement.findEl ement(MElement. java:97)
at oracle.apps.fnd .framework.webu i.JRAD2AKMapper .getRootMElemen t(JRAD2AKMapper .java:501)
Exc eption:
oracle.adf.mds .MetadataDefExc eption: Unable to find component with absolute reference = /xxt/oracle/app s/ak/xxperson/w ebui/xxPersonMa inPG, XML Path = null. Please verify that the reference is valid and the definition of the component exists either on the File System or in the MDS Repository.
at oracle.adf.mds. internal.Metada taManagerBase.f indElement(Meta dataManagerBase .java:1350)
at oracle.adf.mds. MElement.findEl ement(MElement. java:97)
at oracle.apps.fnd .framework.webu i.JRAD2AKMapper .getRootMElemen t(JRAD2AKMapper .java:501)
at oracle.apps.fnd .framework.webu i.OAWebBeanFact oryImpl.getWebB eanTypeDataFrom JRAD(OAWebBeanF actoryImpl.java :3719)
at oracle.apps.fnd .framework.webu i.OAWebBeanFact oryImpl.getRoot ApplicationModu leClass(OAWebBe anFactoryImpl.j ava:3452)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage(OAPag eBean.java:999)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage(OAPag eBean.java:502)
Thanks,
Anil K
You haven't loaded the Page into MDS.
You need to use XML Importer to do so.
You can test the page upload in question, by running below scripts
set serveroutput on size 10000 ;
DECLARE
BEGIN
jdr_utils.list documents('/xxt /oracle/apps/ak /xxperson/webui ', TRUE);
END;
/
DECLARE
BEGIN
jdr_utils.print document
(
p_do cument => '/xxt/oracle/ap ps/ak/xxperson/ webui/xxPersonM ainPG');
END;
/
Thanks,
Anil Passi
Thanks for the resoponse. Yes the second block returns the following output
Error: Could not find document /xxt/oracle/app s/ak/xxperson/w ebui/xxPersonMa inPG
That means the xml is not in MDS
I am using the xmlImporter for importing the file in MDS and as I am doing it for the first time following are the steps I am doing, kindly let me know if I am doing correct?
1. Trasfered the directory xxt to XXCUS_TOP
2. Transfered individual java files with chmod 777
3. Then using the xml Imorter to import the xxPersonMainPG. xml to MDS and there I get struct the error I get is Error: The input file xxPersonMainPG. xml does not exits
The code I am using for import is given below
java \
oracle.jrad.t ools.xml.import er.XMLImporter $XXCUS_TOP/mds/webui/xxPersonMainPG. xml \
-rootdir $XXCUS_TOP/ \
-username apps \
-password bmw002 \
-dbconnection "(description=( address_list=(a ddress=(communi ty=tcp.world)(p rotocol=tcp)(ho st=DEV1)(port=1 531)))(connect_ data=(sid=XXDEV )))" \
-rootPackage /xxt/oracle/app s/ak/xxperson/w ebui
Kindly let me know your views
Thanks
A nil K.
Please try the below
adjava \
oracle.jrad.t ools.xml.import er.XMLImporter $XXCUS_TOP/mds/ webui/xxPersonM ainPG.xml \
-rootdir $XXCUS_TOP/mds/ webui \
-username apps \
-password bmw002 \
-dbconnection "(description=( address_list=(a ddress=(communi ty=tcp.world)(p rotocol=tcp)(ho st=DEV1)(port=1 531)))(connect_ data=(sid=XXDEV )))" \
-rootPackage /xxt/oracle/app s/ak/xxperson/w ebui
Thanks,
Anil Passi
I have one question.. if you are extensing EO, VO or AM then you need to get the BC4J from the server into the Jdeveloper and crete a cusom BC4J Package and extend it.. Create a substitution and import that jpx file using XML Importer
But when you extend the controller, Can you write your custom controller class without importing into local jdeveloper? Because we are not creating any substitution and we chose the custom controller for that region via personalization ..
Can you please provide an explanation for my question..
Tha nk you,
Shree
Great job sharing your wealth of knowlwdege with all of us.. Can you write an article on
XML Publisher Integration with OA Framework with a simple example..
Than ks for your help!!
Suneetha
howe ver i m nt able to get the PPT opened neither i m able to clich that link to c the PPT..
could u plz guide..
Thanx n Regrds
Santosh Bhumkar
Thanks for the pitch on OA Framework Extensions but when i am trying to open the presentation... its getting error out saying that the file has been corrupted.
Req uest you to please if you can post againg the ppt or if you can send me via email that will be gr8 help for me...
Thanks
P raveen
I was away and came back y'day. I tried to deploy my test(Hello) page to OA but I am not
getting success. It works fine when I run the page from jDeveloper but when I deploy it give
out error's. Request you to let me know where am I going wrong. Following are the steps which I do,
1. Develop the Project/ JSP form using jDeveloper and test running the page HelloWorldPG.xm l and it works fine.
2. The project is saved in the following directory structure.
C:\software\oa\ jdevhome\jdev\m yprojects\oracl e\apps\ak\xxtes t\ --> this directory has the usual directories
mapped with the BC Packages of the project (Server and Webui)
Following are the Business Comp Pkgs of the project
. oracle.apps.ak. xxtest.server
. oracle.apps.ak. xxtest.webui
2. move the folder/ directory xxfwork to the server directory $JAVA_TOP/oracl e/apps/ak in text transfer mode
3. After copying again transfer the .java/ .class files in binary transfer mode and give the permission 777.
4. import the new directory structure/ path of the page in MDS repository
import C:\software\oa\ jdevhome\jdev\m yprojects\oracl e\apps\ak\xxtes t\webui\HelloWorldPG.xm l -jdk13 -mmddir "C:\software\oa \jdevhome\jdev\ myhtml\OA_HTML\ jrad" -username apps -password bmw007 -rootdir C:\software\oa\ jdevhome\jdev\m yprojects\ -dbconnection "(DESCRIPTION=( ADDRESS=(PROTOC OL=tcp)(HOST=DE V2)(PORT=1521)) (CONNECT_DATA=( SID=DEV2)))"
5. Register the Function and attach the function to a menu.
OA.jsp?page=/or acle/apps/ak/xx test/webui/Hell oWorldPG
Now when I access the page I get the below errors - ( I am pasting few lines of error as I cannot paste the full text)
oracle.apps.fnd .framework.OAEx ception: Could not load application module 'oracle.apps.ak .xxtest.server. HelloWorldAM'.
at oracle.apps.fnd .framework.webu i.OAJSPApplicat ionRegistry.reg isterApplicatio nModule(OAJSPAp plicationRegist ry.java:279)
at oracle.apps.fnd .framework.webu i.OAJSPApplicat ionRegistry.reg isterApplicatio nModule(OAJSPAp plicationRegist ry.java:78)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage(OAPag eBean.java:1177 )
## Detail 0 ##
JBO-30003: The application pool (dataclone2.new bridge.bnm.ieSU PPORT1525oracle .apps.ak.xxtest .server.HelloWo rldAM) failed to checkout an application module due to the following exception:
orac le.jbo.JboExcep tion: JBO-29000: Unexpected exception caught: oracle.jbo.Cust omClassNotFound Exception, msg=JBO-26022: Could not find and load the custom class oracle.apps.ak. xxtest.server.H elloWorldAMImpl
## Detail 0 ##
oracle.jbo.C ustomClassNotFo undException: JBO-26022: Could not find and load the custom class oracle.apps.ak. xxtest.server.H elloWorldAMImpl
at oracle.jbo.comm on.JBOClass.fin dCustomClass(JB OClass.java:162 )
## Detail 0 ##
java.lang.Cl assNotFoundExce ption: oracle.apps.ak. xxtest.server.H elloWorldAMImpl
at java.net.URLCla ssLoader$1.run( URLClassLoader. java:195)
JBO-3 0003: The application pool (dataclone2.new bridge.bnm.ieSU PPORT1525oracle .apps.ak.xxtest .server.HelloWo rldAM) failed to checkout an application module due to the following exception:
orac le.jbo.JboExcep tion: JBO-29000: Unexpected exception caught: oracle.jbo.Cust omClassNotFound Exception, msg=JBO-26022: Could not find and load the custom class oracle.apps.ak. xxtest.server.H elloWorldAMImpl
at oracle.jbo.comm on.ampool.Appli cationPoolImpl. doCheckout(Appl icationPoolImpl .java:1619)
.. ... ETC
Kindly see if you can help me.
Thanks,
A nil K
Request you to please help me..I am trying to go thru the presentation of OA Framework extensions but not able to.Its saying that file has been corrupted.
Ple ase help me.
Thanks
Pra veen
I managed to successfully deploy my first test page to Oracle Apps and view it using Apps menu.
Thanks for all your help.
Anil K
MK ?
Blame it on Bill Gates. Perhaps some version problem.
I have fwd'ed this link to my friends, and they all can open it.
Usually I avoid deploying ppt files, as that facilitates copyright infringement of the work.
Please email me, I will reply to you with ppt.
Thanks,
A nil Passi
Thanks a lot for your good work its really very much helpfull for novice who are fond of learning OA Framework.
Una ble to download the PPT, so kindly request you to send me the PPT to my mail.
With Best Regards,
Hussei n
and in the COntroller, i have added the code to assign the transient value to ATTRIBUTE5 of the database table.
Here transiet attribute is of DATE type and ATTRIBUTE5 is of VARCHAR2 type.
when i run this page, i am getting this error:
oracle.apps.fn d.framework.OAE xception: oracle.jbo.NoDe fException: JBO-25002: Definition ATTRIBUTE5 of type Attribute not found
at oracle.apps.fnd .framework.webu i.OAPageErrorHa ndler.prepareEx ception (OAPageErrorHan dler.java:1223)
at oracle.apps.fnd .framework.webu i.OAPageErrorHa ndler.processEr rors(OAPageErro rHandler.java:1 408)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr ocessRequest(OA PageBean.java:2 381)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage(OAPag eBean.java:1734 )
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage(OAPag eBean.java:508)
at oracle.apps.fnd .framework.webu i.OAPageBean.pr eparePage (OAPageBean.jav a:429)
at _oa__html._OA._ jspService(_OA. java:85)
at oracle.jsp.runt ime.HttpJsp.ser vice(HttpJsp.ja va:119)
at oracle.jsp.app. JspApplication. dispatchRequest (JspApplication .java:417)
at oracle.jsp.JspS ervlet.doDispat ch (JspServlet.jav a:267)
at oracle.jsp.JspS ervlet.internal Service(JspServ let.java:186)
a t oracle.jsp.JspS ervlet.service( JspServlet.java :156)
at javax.servlet.h ttp.HttpServlet .service(HttpSe rvlet.java:588)
at oracle.jsp.prov ider.Jsp20Reque stDispatcher.fo rward (Jsp20RequestDi spatcher.java:1 62)
at oracle.jsp.runt ime.OraclePageC ontext.forward( OraclePageConte xt.java:187)
at _oa__html._OA._ jspService(_OA. java:95)
at oracle.jsp.runt ime.HttpJsp.ser vice(HttpJsp.ja va:119)
at oracle.jsp.app. JspApplication. dispatchRequest (JspApplication .java:417)
at oracle.jsp.JspS ervlet.doDispat ch(JspServlet.jav a:267)
at oracle.jsp.JspS ervlet.internal Service(JspServ let.java:186)
a t oracle.jsp.JspS ervlet.service (JspServlet.jav a:156)
at javax.servlet.h ttp.HttpServlet .service(HttpSe rvlet.java:588)
at org.apache.jser v.JServConnecti on.processReque st(JServConnect ion.java:456)
a t org.apache.jser v.JServConnecti on.run(JServCon nection.java :294)
at java.lang.Threa d.run(Thread.ja va:595)
Does any one have idea why this is coming.
Need your inputs on this.
Thanx
Hats off to your knowledge and your service to the community.
I just want to find out a way to replace an existing OAF page with a custom page. I couldn't add a new item to the existing page through personalization because create item button is not available. I had no choice except to replace the page. This page is being invoked through buttons created by controller class and I couldn't personalize the link to hit the new custom page.
Please help..
You can extend the controller against that page.
Effective ly, you will have to override the processFormRequ est, to handle the click on the link.
If the link has standard page hardcoded at design time, then, you will can extend processRequest itself, with logic as below
1. get a handle to the link bean
2. set the Destination URL property, to make it point to your custom page.
Thanks,
Anil Passi
Depending upon analysis of the standard page, another option would have been to:-
1. extend the controller on main page
2. in processRequest hide the standard region that you wish to replace
3. Embed the custom stacklayout region programatically .
Here is what I am trying to accomplish. I need to add attachment functionality to supplier purchase order acknowledgement form (PosVpoAckPG). This page is being accessed from PosViewPOPG. 'Create Item' is not available through personalization for this page. I have added the attachmentLink to PosVpoAckPG page in JDev and I am able to deliver the required functionality. I can rename this page and create a new function to invoke this page. I am trying to see if there is an easy way.
Thanks again for your commendable work.
You should be able to extend the controller, and then should be able to add the attachment bean programatically to the existing page.
Thanks,
Anil Passi
Srini
Can you please let me know how I can add attachment bean in the Controller programatically . I have followed the javadoc for OAMessageAttach mentLinkBean class and added the following code in the Controller..
OAMessageAttach mentLinkBean attachBean = new OAMessageAttach mentLinkBean();
//OAWebBean attachWebBean = attachBean.crea teLabel(oawebbe an, "PosTest");
attachBean.setA ddButtonText("A ttachment");
attachBean.setE ntityId("PO_HEA DERS");
attachBean.setV iewUsageName("P osPOSummaryVO") ;
Dictionary firstEntity = new Hashtable();
firstEntity.put ("entityId", "PO_HEADERS"); // entity id
firstEntity.put ("showAll", Boolean.FALSE); // show all property
firstEntity.put ("insertAllowed ", Boolean.TRUE);
firstEntity.put ("deleteAllowed ", Boolean.TRUE);
firstEntity.put ("updateAllowed ", Boolean.TRUE);
Integer[] categories = new Integer[2]; // categories
categories[0] = new Integer(13);
categories[1] = new Integer(14);
firstEntity.put ("categories", categories);
Dictionary[] entityMaps = new Dictionary[1];
entityMaps[0] = firstEntity;
attachBean.setE ntityMappings(e ntityMaps);
String[] catList = {"FromSupp lier"};
attachBean.setC ategoryMap("PO_ HEADERS", catList, oapagecontext);
OAWebBeanDataAt tribute oawebbeandataat tribute1 = (OAWebBeanDataAt tribute) attachBean;
oafieldtablelayoutbean.addIndexedChild(oawebbeandataat tribute1);
I am getting the following error..
This region has an invalid root bean . This can be caused in one of the following two ways: 1) An attempt has been made to reference an application module or view object which is not yet known. Be sure to add this bean to its parent before setting or getting any attributes which is associated to an application module or view object. 2) All regions must have an OABodyBean as it's root bean.
Please help me..
Thanks!
S rini
I need to extend a VO RiskVO,
is under oracle/apps/amw /opinions/serve r/RiskVO.xml
B ut am not getting the respective server.xml file under this directory.
how to extend this VO?
Without server.xml is it possible to extend the VO?
Please suggest,
Thnx In Advance,
Ajit
Thank u for ur guidence.plz clarify my doubt.
can u tell the difference between customization and extensions. plz explain with an simple examples.
both r same?. i didn't find any thing on customization in these tutorials.i need clear idea on customization ie, in which scenerio we go for customization.p lz clarify it.
Thanking u,
krish
Cu stomization means- Change the Functionality of screen
But- You can not modify standard objects delivered by Oracle
Hence- We extend the standard objects delivered by Oracle
Effecti vely- You customize standard application by extending the existing application.
T hanks,
Anil Passi
I am not able to open the PPT. Can you please send it to my email.
Thanks a ton for sharing your knowledge to everyone.
Rega rds,
Ajith
RSS feed for comments to this post