OAF Class 1
Introduction
1) OAF
Earlier HTML pages, JTF, Self-service pages, Started with JSP(performance).
Springlets, J2EE and the other all frameworks(Partially built in application).
OAF are web based application. OAF pages can support to the Mobile applications
Oracle Applications Framework is the Oracle Applications development and deployment platform for
HTML-based business applications
OA Framework consists of a set of middle-tier runtime services and a design-time extension to Oracle10G
JDeveloper called Oracle Applications Extension (OA Extension).
2)Advantages of OAF
End User Productivity
Enterprise-Grade Performance and Scalability
Developer Productivity
Application Customizability
Open Standards
3)Necessary to Use OAF in Oracle apps
a) Integration
b) Security
c) Customizations
4) Diff b/w OAF and Forms
OAF Forms
1)OAF pages followed with MVC Architecture As 1) Forms followed only Client /server
well as Client /server Architecture Architecture
2)OAF pages are web application 2)Forms are not web application
3)OAF pages can interact mobile devices 3)Forms cannot interact mobile devices
4)OAF pages are light weight components 4)Forms are light weight components compare
to OAF.
5)OAF pages are look and feel is good 5)N/A
6)OAF page start with Region->Items 6)Forms start with window->canvas->blocks-
>fields
7)OAF pages will be there in JAVA_TOP 7)Forms will be there in AU_TOP
1
5) Diff b/w OAF and ADF.
OAF ADF
1)OAF Follows MVC Architecture 1)ADF follows MVC1 and MVC2 Architecture
2)OAF can integrate only Oracle EBS. 2)ADF can integrate any other ERPS
3)OAF Does not support Drag and Drop 3)ADF does support Drag and Drop Options
Option
4)OAF page cannot see the lay out at design 4)ADF can see the lay out at design time
time
Prerequisites for LEARNING OAF:
You need to have an Oracle Apps 11i or higher environment to play around with.
Basic knowledge of java is needed. Rather I would say basic knowledge of OOP [Object Oriented
Programming] is needed. I mean just the concepts.
Understand MVC concept
Roles and responsibilities in OAF:
1)Development of OAF pages from scratch (Custom Modules)
2)Customization of OAF pages from existing custom application(only Custom Modules)
3)Personalization of OAF pages from existing standard OR CUSTOM oracle Pages(Standard module and custom
module)
(With out touching of oracle std code)
4)Extension of OAF pages from existing standard oracle Pages(only oracle Std pages)
(With touching of oracle std code)
5)Upgradation of OAF pages from LOWE VERSION of apps to higher version of apps(11i to R12)
2
MVC Architecture:
M V C
Model View Controller
Front End
Table, View, Synonym Etc(Entity Object EO) Http
Get(ProcessRequest)
HttpPost(ProcessForm Request)
Queries (ViewObject VO)
Primary and foreign key(Entity Association(AO))
All the joins from tables, ViewLinks(VL)
Packages, Proc, func, triggers, sequences, commit, rollback(OADB Transactions)
Empno 101
GO
EmpNO Ename Salary
3
MVC Architecture In Details:
1)OAF Follows J2ee Architecture , J2EE follows MVC Architecture Ultimately OAF also follows MVC
Achitecture.
2)MVC is clean design interface b/w model /view /Controller
OverView of Model:
1)Model will interact all the DB Objects and DB Transactions
2)Model will implement all the BC4J Components
BC4J: Represents the Directory Structure of All your Objects
3)BC4J Consist of 3 types
a) Entity Object and associations
b) ViewObjects and ViewLinks
c) Application Module
EntityObject:
1)Entity Object represents DB table,Views,Synonym and snap shots
2)All the EntitytObjects End with EO
EmployeeEO
3)Performing the DML operations on OAF page , must have to create an EntityObject
4)When you create an EntityoBject Framework will create one java file
EmployeeEOImpl.java
Two types of EntityObjects:
I. Java Based Entity Object -- Performing the DML Operations on Oracle Custom Tables , will go for Java
Based Entity Object
II. PL/SQL Based EntityObject -- Performing the DML Operations on Oracle Standard Tables , will go for
PL/SQL Based Entity Object
EnityAssociations:
1)Association is relationship b/w two two entityObjects having one common column
2)to perfom DML operations on Master details data
3)All the EntityAssociation objects end with AO.
eX: DeptEmpAO
A)ON Delete Cascade
B)ON Update Keys
c)ON Update History Columns
ViewObjects and ViewLinks(VO and VL):
1)ViewObjects will be access all Sql Queries
2)All the ViewObjects end with VO
SuppliersVO
4
3)When you create the VO TWO JAVA FILES will be create.
SuppliersVOImpl.java (Single record Level Validation)
SuppliersVORowImpl.java(Multiple rows validation)
Example Header and lines
Types of viewObjects:
a)Automatic VO -- Automatically Query stmt will generate
Automatic VOS are linking with EnityObjects (to perform the DML operations and as well as fetch)
b)ManualVO-- Manually write SQL Query
(to display the data on the page and search operations)
ViewLinks:
1)Relatship b/w two vo's, having one common column
2)All the VIewLink Objects End with VL
DeptEmpVL
3)TO Display Master details data on the page through ViewLink.
ApplicationModule:
1)Interface b/w All the DB Objects with OAF page
(All the EO,VOS routed to the page via AM)
2)All the Application Module Objects End with AM
SupplierInfoAM
3)When you create an AM , one java file will create
SupplierInfoAMImpl.java
TWO Types of AM
1)Root Application Module : Attaching AM to the Root Region of the pagecalled as Root Application Module
Ex:Accessing VOS to all of the sub regions
2)Nested Application Module:
Attaching AM to the Sub Region of the pagecalled as Nested Application Module.
Ex:Accessing VOS to with specific to sub region.
OAF page Output process in Jdeveloper:
Jdeveloper
EmployeePG -> UIX -> Page will be rendered
a)Empno
c)Sal
b)ename
E)JOB
<Empno prmopt -emp no, size -40, -------- Empno -TextINPUT/>
OAF page Output Process in Oralce apps Server:
1)EmployeePG ->Move the file respective top :
5
2)Run the XML importer script for the page:
import D:\OAF\jdevhome\jdev\myprojects\vamshi\oracle\apps\po\department\webui\ EmployeePG.xml -
rootdir D:\OAF\jdevhome\jdev\myprojects -username apps -password apps -dbconnection
"(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=tcp)(HOST=apps.ora.com)(PORT=1521)))(CONNECT_
DATA=(SERVICE_NAME=VIS)))"
MDS Table -
JDR_PATHS --all the paths
JDR_COMPONENETS
JDR_ATTRIBUTES
Controller :
1)Controller Interacts Web browser activities.
2)Controller will taken care Http Get/Http Post
3)All the Controller Objects End with CO.
SupplierCO.java
In Controller we have 3 methods:
ProcessRequest -HttpGet -- on the page load display any default data will go for Process Request.
ProcessFormRequest-HttpPost -- after web page opens , perform any actions on the webpge will go for
Process Form Request
Ex: Button Press,Link Press,TabOuts
ProcessFormData-HttpGet/HttpPost -- optional Method in controller .
Two parameters in Controller:
1)OAPageContext (in built class which oracle already developed)
2)OAWebBean(in built class which oracle already developed)
public void abc()
{
}
public int abc()
{
}
public void ProcessRequest(OAPageConText opc, OAWebBean owb)
{
1)to get the Apps Context Values
opc.getUserName();
int vuid=opc.getUserId();
opc.getMessage("Message Name from AOL");
opc.getStructureCode("KFF Title");
opc.getFunctionId();
6
....
....
.....
....
2)to get the value from page
String vsname=null;
SupplierName
Dell
vsname=opc.getParemeter("SupplierName");
System.Out.PrintLn("Print suppliername"+vsname);
3) navigating to another page
Page 1 Page2
Next
opc.setforwrdurl("page2 path");
4)
page1 code
vsname=opc.getParemeter("SupplierName");
opc.putsessionvalue("abc", vsname);
page5 code
String ssname=pageContext.getSessionvalue("abc ");
OAWebBean:
OAWebBean Represents the Item Proeperties:
1)MessageTextInput -- OAMessageTextInputBean
2)MessageStyleText -- OAMessageStyleTextBean
3)MessageLOVINnput -- OAMessageLOVInputBean
4)SubmitButton -- OASubmitButtonBean
5)MessageCheckBox -- OAMessageCheckBoxBean
..
..
...
Etc...
EmpName dell -- MessageTextInput
Paid -- MassageCheckBox
Ac --MassageCheckBox
-- SubmitButton
Apply
OAMessageTextInputBean omtib = owb.findchildrecursive("EmpName");
omtib.setText("dell");
OAMassageCheckBoxBean Objomcib = owb.findchildrecursive("Paid");
omcib.setchecked(true);
OAMassageCheckBoxBean Objomcibb=owb.findchildrecursive("AC");
omcib1.setchecked(true);
7
OASubmitButtonBean osbb=ob. findchildrecursive("Apply ");
osbb.setdiabled(true);
Save Next
EmpName
30
EmpName
50
china org id - 204
brazil org id -205
if(opc.getOrgId().equlas("205")
{
OAMessageTextInputBean mbean=ob.findchildRecursive("EmpName");
mbean.setwidth("50");
Onion Structure in OAF:
8
BC4J(Business Components for java) FileStructure:
AM AND VO -> BC4J
XXAAM.oracle.apps.po.xxname.server
[CLIENT NAME].Oracle.apps.[application short name].[component name].server
Entity Object(EO) -> BC4J
XXAAM.oracle.apps.po.xxname.schema.server
LOV ->BC4J
XXAAM.oracle.apps.po.xxname.LOV.server
Poplist ->BC4J
XXAAM.oracle.apps.po.xxname.poplist.server
Controller & Page
XXAAM.oracle.apps.po.xxname.webui
9
OAF Class 2
Jdeveloper Configuration in ORCALE APPS Environment:
1)Identify the OAF Jdeveloper patch
About this page ->Technologycomponenets
(Note: For any Oracle apps Version have One JDeveloper patch).
How to Find the
Correct Version of JDeveloper for OA Extensions.docx
Oracle Apps Version Jdeveloperpatch
R12.1.1 p6908968_R12_GENERIC
R12.1.3 P8901234
R12.2.2 P989789
Patch Contains 3 Folders
1) JdevBin -- contains import,export,jpx import,xliffextact,xliffimport, jdeveloper tool
(Path(import,export,jpx import,xliffextact,xliffimport) ->D:\drive_path\jdevbin\oaext\bin)
Jdeveloper tool ->D:\drive_path\jdevbin\jdev\bin
2) JdevHome -- All the project related files(Eo,vos,am,pages,co,vl,ao
3) JdevDoc -- All the documentation of OAF
2)set the environment variable for windows
Variable name - JDEV_USER_HOME
Variable value - D:\OAF_May\jdevhome\jdev
10
3)Get the DBC FILE from oracle inst top and put into jdeveloper patch
About this page ->Java System Properties
11
From -> About this page ->Java System Properties
To -> D:\drive_path\jdevhome\jdev\dbc_files\secure
4)make the short cut of jdeveloper to desktop
From -> D:\OAF_May\jdevbin\jdev\bin
5)open the jdeveloper ->create database connection.
12
a) Connectio NAME - Vision
Connection Type -OracleJDBC ->Next
b) uname - apps , pwd - apps
13
6) set the Default Project Properties.
Tools ->Default Project Properties
14
Front End Uname -Operations
Password - welcome
15
16
17
Sample Exercises:
1) Develop Simple OAF page.
a) Create Java Workspace(.jws)
Click on ok.
Next ->
18
b) Create Java Project
Next->Next->Next->Finish.
c) Create a page.
19
20
d) Create An Application Module in Respective BC4J.
21
22
Next->Next->Next->Finish
e) Attach AM to the page
f) Give window Title and Title name of the page
g) Run the page
2) Display Images on the page
3) Display Regions and Items on the page
4) Display Apps Context Values on the page
5) Display Exceptions messages with Dynamically.
6) Swapping the value from one field to another field
7) Sum of two numbers
8) Display data to OAF page from DB.
9) Search Pages
a) Automatic Search
1) Simple Search page
2) Advanced Search Page
b) Result Based Search
c) Manual Search page.
23
In Detail
2)Display images On the page:
1) Create a Page
2) put the custom image in below Directory in local
D:\OAF_May\jdevhome\jdev\myhtml\OA_MEDIA.
3) Select the corporate brand image and select the image URI
4) to place the image in the server to find oa media directory in the putty.
24
or
About this page ->Java System Properties
25
Display Regions and Items on the page:
1)Message Component layout.
Test1 Test2 Test3
Test 4 Test5 Test6
Importance : Row and Columns
26
2)Header
Header region
test test1 Test2
test2 Test3 Test4
3)Row Layout:
Create new region Style as RowLayOut
Importance : Horizantal Alignmenet
Vertical Alignmenet
27
4)Default Double Column.
Importance - by default it would be two column format...
5)Default Single Column
Importance - by default it would be a single column format.
Hide header Property .
Note: Lay out look like header region style , but here we have property called Hide header - True
6)Page Button Bar.
By Default Buttons will display top Rigt side and bottom right side.
7)Hide Show
Importance - to hide and show the items
8)Hide Show Header.
Importance Hide and show with Header Format.
9)Sub Tabs
Importance the regions would be tabbed format..
10)table
Table Region will display the data based on the select stmt execution.
11)Advanced Table.
a) Add rows
b) Split Cloumn
28
c) Total Option
12)Hgrid
13)Switcher
14)Train
15)Table Layout
16)Graph table
17)Query
18)Bulletted List.
19)Advanced Search
20)POPUP
Items or Field or Beans:
Item Creattion Screen
29
1) MessageTextInput
2) MessageStyleText
3) MessageCheckBox
4) MessageRadioButton
5) MessageChoice
6) MessageLOVINPUT
7) Button
8) SubmitButton
9) ResetButton
10) ExportButton
11) Tip
12) MessageRichTextEditor
13) MessageFileUploadBean
14) Form value
15) StaticStyleText
16) Spacer
17) link
18) AttachmentImage
19) Flex
20)
30
31
32