Login
Register

Home

Trainings

Fusion Blog

EBS Blog

Authors

CONTACT US

OA Framework - All Articles
  • Register

Oracle Gold Partners, our very popular training packages, training schedule is listed here
Designed by Five Star Rated Oracle Press Authors & Oracle ACE's.

webinar new

Search Courses

D2K to OA Framework - Changing the mindset

 

Ram Kumar emailed me a very simple question, "What is the difference between D2K form and OA Framework". Its a very innocent but important question for someone that desires to make transition from D2K to OA Framework. I hope you have already read and implemented OA Framework Getting Started .

 

To answer to Ram's question, I will re-visit my own experience of implementing HelloWorld program in "OA Framework". When I implemented HelloWorld an year ago, I had no clue as to what I was doing & why I was doing those steps. I merely copied the steps from Oracle Tutorials without understanding them. Hence in this article, I will try to explain in simple manner the meaning of OA Framework HelloWorld Program and compare the steps to D2k forms[where possible]. To keep things simple, only basics will be discussed.

 

Following key Steps were needed for HelloWorld[visit Oracle's tutorial for complete list]

Step 1. Created a new Workspace and a new Project as dictated by Oracle's tutorial.

When defining project, you will specify a default package, which in this case was oracle.apps.ak.hello

This means the following:-

  a. ak is the short name of the Application in Oracle [it means fnd_applications.short_name].

  b. hello is the name of your project.

 

Step 2.

Next, you will create a OAPage within hello project.

Think of OAPage as the fmx file itself in D2K. I am saying so because this page gets attached to the form function.

a. This page will be created within hello project, hence the package name oracle.apps.ak.hello.webui

b. Note the webui, its a convention to have page in webui,means this page represents the Web User Interface

c. You will assign the default AM [OAApplicationModule]. Think of AM "Connection Manager" and "Transaction State Manager" for your page.

I can't co-relate this to anything in D2k, as there is no concept of Connection Pooling and that D2k is not stateless. Reason being that as soon as you kick off a D2K Form, it connects to a single session of Oracle and sticks to that single Oracle database session. So is not the case in OAF, hence AM is needed.

 

Step 3.

You create Region within the Page.

a. Region is what will store your fields. Text input fields will be of type messageTextInput. Think of Canvas in D2K[to an extent].

b. You can have nested regions. Stacked Canvas in D2K comes the closest to this component of OA Framework.

 

Step 4.

Add a button to one of the nested regions.

a. The itemStyle should be submitButton, in case you want the page to be submitted when this button is clicked.

b. There is no WHEN-BUTTON-PRESSED trigger in OAF. In Framework, you will add a controller java code to handle events like Form Submit button clicks. jDeveloper generates the default code for you. Primarily two functions[should I call methods] will be created processRequest[for UI Rendering Handling] and processFormRequest.

Think of processRequest as WHEN-NEW-FORM-INSTANCE, though processRequest is very restrictive.

 

Step 5.

In the controller to access the value in field "HelloName" the command is

String userContent = pageContext.getParameter("HelloName");

In D2k, we used :block.field. In OAFramework, at submission of page, all the field values get passed into to OAPageContext object.

a. Use getParameter to access the field value

b. To set the value of the field, use

OAMessageTextInputBean fieldHelloName =

        (OAMessageTextInputBean)webBean.findChildRecursive("HelloName");

fieldHelloName.setText(pageContext,"Setting the default value" );

Note when setting field value in controller:

Note 1. Do not set the value in processFormRequest

Note 2. If the field comes from ViewObject[in latter tutorials], then do not use setText in controller.

Note 3. For control fields[that are not based on ViewObjects], you can use setText to assign values in processRequest method.



Lets take some notes to expand beyond the HelloWorld Project

1. In D2K-forms we sort of created a Window, attached to Canvas, and then fields within that Canvas.

However in OA Framework, think of Page being fmx/Window, think of Region being a Canvas, and fields being within Regions.

This is not a formal/accurate understanding of analogy between D2k and Framework, but is close to being logical.

2. In D2k, your Forms fmb file was compiled to fmx. It was fmx file that was deployed on mid-tier.

In case of OAF, your OA Page is nothing but a XML file. We call this MDS [meta data].

Whatever name you give to "Page" in OAF, an XML file of the same name gets created. This xml file must then be loaded into database by using XMLImporter command.

See article on XML Importer if interested.

3. Apart from MDS XML file, almost everything else is merely deployed to your mid-tier. Usually this is underneath $JAVA_TOP/oracle/apps/../..

All your java files will go underneath java top/oracle/apps/../.. etc.

4. When building your tutorial, ignore the steps for setting "Attribute Sets". These are not mandatory. Oracle might just have developed their tutorials without  including these. Think of these like Visual Attributes of D2K forms [to an extent]

5. Controller is where you will write any java code in OA Framework. You can create a Controller per Page or have a different Controller for each of the Regions with the same Page.

6. In the method processFormRequest of the Controller, you can access the values of the page by using notation pageContext.getParameter("<fieldname here>"). This method processFormRequest is executed when the OAF Screen/Page is submitted by click of a button.

7. Inside the controller, all the Database Related interactions for example interaction with View Objects happens via Application Module.

But why so? Because Application Module Manages the transaction state of the Application.

            OAApplicationModuleImpl oaapplicationmoduleimpl = (OAApplicationModuleImpl)oapagecontext.getApplicationModule(oawebbean);

            OADBTransaction oadbtransaction = (OADBTransaction)oaapplicationmoduleimpl.getDBTransaction();

8. In D2K, we have control block or a block based on database view. Similarly, in OA Framework, if the field does not have viewObject attached, then its like a control field. Hence in HelloWorld example, field HelloName is a control field[in D2K terminology]. A viewObject can either be based on a view/table.synonym or on a SQL statement.

9. I wish to access the fields in multi record block that is based on viewObject. Can I do this in Controller?

Sure you can. To traverse through those records, do the below

  a. Get the reference to the ViewObject using (OAViewObject)oapagecontext.getApplicationModule(oawebbean).findViewObject("VO Name Here")

  b. Loop through the records in View Objects using count returned from oaviewobject.getFetchedRowCount()

  c. For each record, fetch the value of the fields within the loop as

                 oracle.jbo.Row row = oaviewobject.getRowAtRangeIndex(loop index here);

                (String)row.getAttribute("Column name of VO here ");




What is the difference between processRequest and processFormRequest?

These two methods are available in the Default Controller class that gets created.

 

processFormRequest

This method is commonly used to react/respond to the event that has taken place, for example click of a button.

Some examples are

       if(oapagecontext.getParameter("Cancel") != null) {Do your processing for Cancellation/Rollback}

       if(oapagecontext.getParameter("Submit") != null) {Do your validations and commit here}

       if(oapagecontext.getParameter("Update") != null) {Do your validations and commit here}

In the above three examples, you could be calling oapagecontext.forwardImmediately to re-direct the page navigation to some other page if needed.



processRequest

In this method, usually page rendering related code is written. Effectively, each GUI component is a bean that gets initialised during processRequest.

Those who are familiar with D2K forms, something like pre-query may be written in this method.





Anil Passi

Comments   

0 #1 Prativa 2007-03-01 00:00
Hi Anil,First of all let me thank you for bringing up such a nice site..
There are so many things in the site, just confused where to start.

Thanks a lot,
Prativa
Quote
0 #2 Anil Passi 2007-03-02 00:00
Hi Prativa,

If you can let me know your knowledge background and what you seek to learn, then I might be able to provide help in guiding you.

Thanks,
Anil Passi
Quote
0 #3 Anil Passi 2007-03-02 00:00
Hi Prativa,

If you can let me know your knowledge background and what you seek to learn, then I might be able to provide help in guiding you.

Thanks,
Anil Passi
Quote
0 #4 Gopi 2007-03-07 00:00
Anil,

This is one of the best sites I love reading.Thanks for explaining so clearly. I just started learning JDeveloper.

Thanks
Gopi
Quote
0 #5 Praveen 2007-03-29 00:00
Hi anil
i have problem to create folders in the D2K forms 6i.(i.e Folder options ). plz give my some idea for that folder options

thanks & regards
Pravee n.G
Quote
0 #6 Sunil 2007-03-30 00:00
Hi Anil,
I wish to congratulate for such a great work. I would appreciate if you could guide me take up carrier in Oracle Apps. Having spent 8 years in Oracle Pl/sql form,report, now i m working in Oracle Apps.(CRM). But not able to decide where to start. Whether become functional or Technical guy OA.
Regards
Suni l
Quote
0 #7 Anil Passi 2007-03-31 00:00
Hi Sunil
8yrs in any field is a long time. If you understand how CRM processes work, and how they map to business practices in real world, then functional switch will be a good move. Having said that, keep learning new upcoming technologies too until you get a functional role in project. Always have a backup.
Thanks
Anil
Quote
0 #8 Anil Passi 2007-03-31 00:00
Sunil

8yrs in any field is a long time. If you understand how CRM processes work, and how they map to business practices in real world, then functional switch will be a good move.
Having said that, keep learning new upcoming technologies too until you get a functional role in project.
Alway s have a backup.

Than ks
ANil
Quote
0 #9 sameer 2007-04-05 00:00
I am working on AK Developer(11.5. 8) technology . What is the difference between AK Developer/Frame work(11.5.8), OA Framework(11.5. 10.2), and ADF Framework (Release 12i) ? Is there any major structural changes from AK Developer/Frame work(11.5.8) to.. ADF Framework (Release 12i) ?
Quote
+1 #10 Michu 2007-05-14 00:00
Hi Anil,

Thanks for keep sending the info.

How do you create method in Application Module? When you right click on Application Module name there is no option of creating method. Then how?

Thanks,
Michu
Quote
0 #11 Anil Passi 2007-05-14 00:00
Hi Michu,

Simpl y go inside the ApplicationModu leImpl java class, and write code for your method there.

Thank s,
Anil
Quote
0 #12 Michu 2007-05-15 00:00
Hi Anil,

Thanks for responding quickly. Keep your good work.

Michu
Quote
0 #13 Sreedhar Ravula 2007-10-05 13:36
Hi Anil,

It very glad to see your site, today first time I saw your site :). First of all let me thank you for your good posts on site.
It helps me a lot to get into the OAF.
Thanks
Sre edhar
Quote
0 #14 Srinath 2007-12-09 15:28
Anil,

Let me first congratulate for this excellent work.
I would like to know if there are any restrictions on the JDeveloper version that could be used for development for integration with Oracle Apps. Also, please let me know if there are any plug-ins that need to be installed.
Quote
0 #15 TV 2007-12-17 08:38
Hi Anil

I browsed the whole site but couldnt find a forms6i tutorial.Can you pls point to me where i can find it ?

Thx
Rajanika nt
Quote
0 #16 sureshkumar. 2008-01-28 04:20
Hi All,
I am working on PL/SQL. I have Knowledge on APPS and D2K. Now I want to learn OAFramework.
Ca n you please tell me what r the pre-requisites to learn this course.

Thank you,
Suresh.
Quote
0 #17 rakesh9911890887 2008-02-13 14:38
hell friends

I have designed a D2K form and its not working in apps..its show a error when we run it on apps....accordi ng to me its not compiling the form properly we compile it in D2K...
One more thing my Apps is on Windows Plateform not on linux....

plz tell me how to compile it...or tell me solution..
plz mail me the solution at


bye

rakesh
Quote
0 #18 Sanjaya Patro 2008-02-22 10:44
Hi Anil,

I've been reading your articles about OA Framework. Great. I've development experience in pl/sql, forms and reports in the oracle application platform. I'm learning oa framework and self service personalization at this point. But I've now got specific requirement to modify a VO to increase the overtime amount.
Scenario is:
Previously this has been implemented as an overtimeVO function jsp page. There are two VO fields one is total days and other one is amount field in the page. The current limit has been implemented in the next button. How do I change the current limit?
This is my first task to deal with self service using OA framework technology. I've got only little knowledge about Oracle JDeveloper and OA Framework MVC pattern. Can you please help me where to start?

Do I need to ftp only the overtimeVO page (JSP) and open in jDeveloper or any other components related to this?

Regards,
Sanjaya Pator
Quote
0 #19 kishore Ryali 2008-02-28 16:52
Hi Sanjaya
Im also working on Extending standard VO to show some additional information in iProcurement.

As a start up, identify the VO associated to ur page by using "About this page" link which is enabled through a profile value. Then download all the files from the $JAVA_TOP/oracl e/apps//.... to ur local drive.

1. Create a new project and set the classpath of the project to the downloaded files above.
2. Extend the standard VO identified above and change the query associated with it & create a new VO.
3. Use substitutions to replace the original VO with the extended VO.
4. Migrate ur files to the apps server.
Quote
0 #20 Anurag Vidyarthi 2008-04-29 09:10
Hi Anil,

Great to know your ideas abot forms as well. I was just referring your site for APPS only.
I have an existing working oracle forms application( on solaris 8). But forms run on windows machine using the IE.
Considering the :
.....1. oracle license fee
.....2. fact that oracle is discontinuing forms

now I to migrate this 3-tier forms application (forms 10g+oracle 10gAS+oracle 9i)
to (oracle express/oracle db 10g std edition)+J2ee forms(using the ADF)+any free application server.

How do you think about this idea ? any recommendation ?

My experience with other java GUI applications (which involves a lot of records ) says....ADF based application will have performance and maintenance issue later .....

please comment on this !!!

Best Regards
Anurag Vidyarthi
Quote
0 #21 Shaswat Kumar 2009-06-17 00:56
Hi Anill,
I am getting following error while creating a database conncetion thru Jdeveloper.

Pl ease advice what should I do.

Regards
Sh aswat
Quote
0 #22 Shaswat Kumar 2009-06-17 00:59
Hi Anill,
I am getting following error while creating a database conncetion thru Jdeveloper.
io exception: connection refused(descrip tion=(tmp=)(vsn num=169870080)( err=12505)(erro r_stack=(error= (code=12505)(em fi=4))))

Pleas e advice what should I do.

Regards
Shaswat
Quote
0 #23 Anil Passi- 2009-06-17 05:02
Try to telnet to that machine on which DB is hosted,

telnet machineNameHere PortNumberHere

Does it connect from your PC?

If not, then you have firewall issues

Thanks
Anil Passi
Quote
0 #24 Hemant 2009-09-10 10:33
Hi Anil

Thanks for helping me to learn Oracle Framework.
I have develop simple table page in OA frame work using your steps only, now I want to deploy the same to Oracle Apps

Could you please give me the document how to deploy OAF development to Oracle Apps

First I want to see my development in oracle apps so it will clear all the steps from TOP to Bottom of the development.

R egards
Hemant
Quote
0 #25 pm 2010-04-23 19:05
Hi Anil,

I am new to your site; but once I saw this site, I just stuck to it.
Thanks for your services and couldn't keep myself wondering how you manage time.

Nice analogy. It gets simpler if it is told in terms that we already know.
The OAF architecture may be entirely different. The OAF terminology may not be newer to the ones that already know AK Developer.
Did you write about the similarities between AK developer and OA Framework?
The search did not give me right result. I would like to read it in your words.
Quote

Add comment


Security code
Refresh

Search Trainings

Fully verifiable testimonials

Apps2Fusion - Event List

<<  Apr 2024  >>
 Mon  Tue  Wed  Thu  Fri  Sat  Sun 
  1  2  3  4  5  6  7
  8  91011121314
15161718192021
22232425262728
2930     

Enquire For Training

Related Items

Fusion Training Packages

Get Email Updates


Powered by Google FeedBurner