Sie sind auf Seite 1von 85

Q1. What is Oracle ADF?

Ans : Oracle Application Development Framework, usually called Oracle ADF, provides
a commercial Java framework for building enterprise applications. It provides visual and
declarative approaches to Java EE development. It supports rapid application
development based on ready-to-use design patterns, metadata-driven and visual tools.
Q2 How does ADF fall in MVC architecture?
Oracle ADF Architecture is based on the Model-View-Controller (MVC) design
pattern.MVC consists of three layers which are model layer,view layer,controller
layer.Oracle ADF implements MVC and further separates the model layer from the
business services to enable service-oriented development of applications.
The Oracle ADF architecture is based on four layers:
The Business Services layer
This layer provides access to data from various sources and handles business logic.
ADF Component comes, in this section are ViewObject, EntityObject, ViewLink,
Association etc
The Model layer
This layer provides an abstraction layer on top of the Business Services layer, enabling
the View and Controller layers to work with different implementations of Business
Services in a consistent way. ADF Component comes in this section are PageDefn,
DataBindings,DataControls (AppModuleDataControl, WebServiceDataControl)
The Controller layer
This layer provides a mechanism to control the flow of the Web application. ADF
Component comes in this section are TaskFlows(Bounded and unbounded, facesconfig.xml, adfc-config.xml)
The View layer
This layer provides the user interface of the application. ADF components comes in this
section are jsff, jspx page.
Q3 How will JDeveloper support rapid development?

Ans : Oracle ADF is an Oracle product. Ide used to develop ADF application which is
Oracle JDeveloper. This IDE is has all component which support in rapid developer
starting form designing Application using the UML to Java, Visual Designer, DataBase
development, Testing Webservices to Deployment. Most of the feature are just drag and
drop. hence this IDE become the perfect choice for ADF development. Although it bit
slow and hangs sometime but still we don't have any other option.
Q4 What are the different type of Business Component in Oracle ADF?
Ans : Different kinds of Business component support by ADF are EntityObject,
ViewObjects, ViewLinks, Association.
Q6 What is Entity Object in ADF Framework?
Ans: EnitityObject in ADF are similar to Table in database. Any number of ViewObejct
can create on single Entity.
Q6 What is ViewObejct in ADF framework?
Ans : ViewObject is represent the data collection. These view object can be created in
different ways which are as follows:

Entity Based ViewObject: These viewobejct will hold the reference of underlying
entity. These view object can hold data from single or multiple entities. While defining
Viewobject based on Entity you can select the attribute which you want to keep in entity.

SQL Based ViewObject: These ViewObejct are based on sql quarries. These
viewobejct will have underlying SQL Query. At runtime they will hold data return by SQL.

Programatic View Object: User can define the view attribute which defining
viewobejct. Data will insert programmatically into these ViewObject.

Static ViewObject : While defining user will define attribute for view and in later he has
to provide the values for those attribute. These kindof viewobejct will have fixed no of
rows.
Q7 What is Association in ADF?
Ans: Association represent the relationship between 2 and more tables like foreign key
relationship. If you create Entities from database association will automatically got created
for entity. User can also define custom association if there is no foreign-key is define in
database. In this way user can handle foreign key in ADF application and can remove
overhead from database.
Q8 What is view link?
Ans: ViewLink represent the relationship between data of same or multiple Entities or table.
It works in same manner as association work for entity. While defining the ViewLink user

can define the reference of already created association if ViewObejct based on Entity
Object else can manually select the column and define link between 2 ViewObject.

Q9 Why we used applicationmodule in ADF framework?


Ans:Applicationmodule is the component of ADF BC which hold the references of
ViewObject and instantiate them while running the application. ViewObejct reference
define in Application Module can be used to define the jsff/jspz page. If you want to use
any ViewObject on you page you must have to provide the reference in Application
Module.
Application module also provide the transaction management with commit and
rollback operation

Q10 What is the controller in ADF in respect of MVC architecture?


Ans:Controllers in ADF framework are TaskFlows, Faces-config.xml, adfc-config.xml. In
all there file you can define navigation between the pages.
Declare the manage-bean in different scope.

Q11 What are the different kind of resource bundle supported in ADF?
Ans: ADF support different types of resource bundle which are as follows:
Property file based (txt file which contains key-value pair)
xliff file based (xml file which contains key-value pair)
List Resource bundle
Q12 How to provide common resource bundle for entire proejct?
Ans: Go to property file of you Project and select resouce bundle
From here you can select one bundle for entire project.
Q13 How to provide separate resource bundle for each jsff/jspx?
Ans: Refer Q 12 answer there is option using that you can select One Bundle per file.
Q14 What is the difference in jspx and jsff?
Ans: jspx and jsff file are same in most of manner. Only difference is that you can run jspx
directly on browser while jsff file container which will run on browser.

Q15 What is taskflow ? how many type of taskflow adf support?


Ans: Taskflow is the Component of Oracle ADF which is used to define simple task.
After successfully defining task-flow can consume any number of time.
ADF support two kind of taskflow:
Bounded TaskFlow : Bonded taskflow require the page on which they will
consume.

UnBounded TaskFlow : Unbounded taskflows can directly run on browser


Q16 How to develop reusable taskflow in ADF?
Ans: Please fins the step below
Define taskflow
Define deployment profile as ADF Library jar
Deploy adf jar file
Open new project where you want to consume the task flow.
Add newly created jar of taskflow project
go to component palate You will fine you jar name select it.
It will show list of taskflow you developed
Drag drop your taskflow as region on jsff/jspx page and run ur application
Q17 Can bounded taskflow run on browser?
Ans: NO
Q18 What are different scope of adf taskflow?
Ans: Isolate/Shared
Shared scope will share data among the multiple instance of taskflows while Isolated
doesn't.
Q19 How can you force ADF taskflow to use new transaction everytime taskflow
is called?
Ans: Go taskflow overview and you will file below item
Select always begin new transaction fron dropdown
Q20 How to use same transaction in ADF taskflow?
Ans
Q 21 How can you pass parameter to adf taskflow?
Ans: Go to overview select parameters link it will show screen like
Here you can add multiple parameter which you want to pass takflow while loading it.
Q22 Explain the purpose of using Controls flow in adf?
Ans: Controls flow defined in taskflow can be called anytime from any page of that
taskflow.
if you have same flow for multiple pages just define the control flow once in taskflow.
You can invoke it anytime from any action event.
Q23 What is the behavior of router in ADF taskflow?
Ans : Based on some condition router can decide which route need to be follow. If none
of condition match in that case router will follow default route defined by used.

Q24 How can navigation define in taskflow?


Ans : Navigation can be defined in taskflow using control flows and invoked by jsff/jspx
page using action event like button link etc.
Q25 Can ADF task flow hold more than 1 view activity?
Ans: Yes. ADF taskflow can have multiple view activity but 1 activity has to be defined
as default activity.
Q26 What is the Parent Action in ADF Taskflow?
Ans:Parent action is activity using that you can invoke the Control flow define in parent
taskflow from child taskflow. More details about how to develop it can be found
on Parent Activity
Q27 What is method activity in Adf Taskflow?
Ans: Using this activity you can invoke and method defined in manage-bean.
Q28 How to initialize ADF Taskflow?
Ans: Open the taskflow in Overview Mode select general like there is initiallizer
property.
you can provide the any method reference which will get invoked whenever taskflow
instance created.

ADF INTERVIEW QUESTION - PART 2

Q29 What is the different between Action and ActionListener?


Ans : ActionListener: ActionListener is the method which got invoked when user click on the
component like button, commandlink etc.
Action: Action is the outcome of where you want to move once actionlistener is completed. This
can be define in the taskflow as activity. So when listener completed application is redirected to
define activity.

Q30 How many kind of VO supported by Oracle ADF?


Ans : ADF support 4 type of view Object
ViewObject Based on EntityObject

ViewObject Based on sql query

ViewObject based on static data

Programatic View Obejct.


Q31 how to develop Master-details view in adf?
Ans: For Developing the Master-details view in ADF. You have to created the relationship
between 2 viewobject. That relationship can be created using the viewlink or association

between entity Object. using that relationship you can create the master details view of
data. That master details view can be Form-Form, Form-Table, Table-Table, Table-Form.
Q32 what is view criteria, how can you change view criteria at runtime?
Ans: View Criteria is defined by for effective searching of data. By using this criteria we can
created search panel which represent all queryable attribute.
For changing the view criteria at runtime you just have to make attribute as queryable true
or false. Based on that attribute will get display in the search panel at run-time.
Q33 What is ppr in ADF?
Ans: PPR means Partial Page Rendering. It means that in ADF we can refresh the portion
of page. We don't need to submit whole page for that.
Q34 What are the ADF templates how they are differ from simple jspx and jsff page?
Ans: ADF templates are the template for pages. we can place common layout in template
so whenever we create the page we will select the appropriate template. Page layout will be
consistence across the pages.
Page template can also used to have common functionality like some button so you dont
have to create them again and again.

Q35 How can you manage transaction in ADF?


Ans: In ADF transaction can we manage at ApplicationModule as well as taskflow level.
Task flow support different mode of transaction like:
Start new transaction always
Use Existing Transaction
Q36 What is the model in ADF MVC?
Q37 How can you define custom component?
Q38 Can you use view object inside custom component defination?
Q39 What are the different trigger type for af:popup?
Q40 How to define multiple ActionListener for single ADF component?
Q41 How to enable security to ADF Application?
Q42 Which file holds the details of users and groups in adf?
Q43 How to create Jdeveloper compatible libraries?
Q44 How to connect standalone weblogic instance from jdeveloper?
Q45 How to deploy application to standalone weblogic instance from jdeveloper?
Q46 What are the MDS(MetaData Services)?
Q47 What is user customization?
Q48 What is seed customization?
Q49 What are different kind of MDS you configured?
Q50 Which file hold details of configured MDS?
Q51 What are the steps to configure MDS?

Oracle ADF Interview Question and Answers.


Q: Lifecycle of a Web Page Request Using Oracle ADF and JSF
Ans : Below figure shows a sequence diagram of the lifecycle of a web page
request using JSF and Oracle ADF in tandem.

Lifecycle of a Web Page Request Using JSF and Oracle ADF

As shown in the figure, the basic flow of processing happens as follows:


A web request for http://yourserver/yourapp/faces/some.jsp arrives from the
client to the application server
The ADFBindingFilter finds the ADF binding context in the HTTP session, and if not
yet present, initializes it for the first time.
During binding context initialization, the ADFBindingFilter :

Consults the servlet context initialization parameter named CpxFileName and


appends the *.cpx file extension to its value to determine the name of the binding
context metadata file. By default the parameter value will be DataBindings , so it
will look for a file named DataBindings.cpx .
Reads the binding context metadata file to discover the data control definitions, the
page definition file names used to instantiate binding containers at runtime, and the
page map that relates a JSP page to its page definition file.
Constructs an instance of each Data Control, and a reference to each
BindingContainer. The contents of each binding container are loaded lazily the first
time they are used by a page.
The ADFBindingFilter invokes the beginRequest() method on each data control
participating in the request. This gives every data control a notification at the start
of every request where they can perform any necessary setup.
An application module data control uses the beginRequest notification to acquire an
instance of the application module from the application module pool.
The JSF Lifecycle class, which is responsible for orchestrating the standard
processing phases of each request, notifies the ADFPhaseListener class during each
phase of the lifecycle so that it can perform custom processing to coordinate the
JSF lifecycle with the Oracle ADF Model data binding layer.
Note:
The FacesServlet (in javax.faces.webapp ) is configured in the web.xml file of a JSF
application and is responsible for initially creating the JSF Lifecycle class
(in javax.faces.lifecycle ) to handle each request. However, since it is
the Lifecycle class that does all the interesting work, the FacesServlet is not
shown in the diagram.
The ADFPhaseListener creates an ADF PageLifecycle object to handle each request
and delegates appropriate before/after phase methods to corresponding methods in
the ADF PageLifecycle class as shown in If the appropriate binding container for
the page has never been used before during the users session, it is created.
How JSF Page Lifecycle and ADF Page Lifecycle Phases Relate

The JSF Lifecycle forwards control to the page to be rendered.


The UI components on the page access value bindings and iterator bindings in the
pages binding container and render the formatted output to appear in the browser.
The ADFBindingFilter invokes the end Request() method on each data control
participating in the request. This gives every data control a notification at the end
of every request where they can perform any necessary resource cleanup.
An application module data control uses the endRequest notification to release the
instance of the application module back to the application module pool.
The user sees the resulting page in the browser.

Initialize Context: In this phase the adf page initializes the LifecycleContext
with information that will be used during the Lifecycle.
Prepare Model: In this phase ui model is prepared and initialized. In this
phase page parameters are set and methods in the executable section of the page
definition of the ADF page are executed.
Apply Input Values: This phase handles the request parameters. The values
from the HTML are sent to the server and applied to the page binding in page
definitions.

Validate Input Values: This phase validates the values that were built in the
Apply input values phase
Update Model: Validated values supplied from user are sent to ADF business
components data model
Validate Model Updates: In this phase the business components will validate
user supplied values.
Invoke Application: This phase will process the ui events stack built during the
life cycle of page and also fire navigational events
Prepare Render: This is the final phase where HTML code is generated from
the view tree.

Q : What is Action Listener ?


Ans : An action listener is a class that wants to be notified when a command
component fires an action event. An action listener contains an action
listener method that processes the action event object passed to it by
the command component
Q:What are ADF BC(Business Components) ?Describe them.
Ans: All of these features can be summarized by saying that using ADF
Business Components for your J2EE business service layer makes your life a
lot easier. The key ADF Business Components components that cooperate
to provide the business service implementation are:
Entity Object: An entity object represents a row in a database table and
simplifies modifying its data by handling all DML operations for you. It can
encapsulate business logic for the row to ensure your business rules are
consistently enforced. You associate an entity object with others to reflect
relationships in the underlying database schema to create a layer of business
domain objects to reuse in multiple applications.
Application Module: An application module is the transactional component that
UI clients use to work with application data. It defines an updatable data model and
top-level procedures and functions (called service methods) related to a logical unit
of work related to an end-user task.

View Object: A view object represents a SQL query and simplifies working with
its results. You use the full power of the familiar SQL language to join, project,
filter, sort, and aggregate data into exactly the shape required by the end-user
task at hand. This includes the ability to link a view object with others to create
master/detail hierarchies of any complexity. When end users modify data in the
user interface, your view objects collaborate with entity objects to consistently
validate and save the changes

What is view object & view link in Oracle ADF?


ADF View Object: ADF view object definitions are business components that
collect data from the data source, shape that data for use by clients, and
allow clients to change that data in the Oracle ADF Business Components
cache. For example, a view object definition can gather all the information
needed to:

Populate a single table element in a form


Create and process an insert or edit form
Create an LOV for populating a dropdown list
View object definitions must have a mechanism for retrieving data from the data
source. Usually, the data source is a database, and the mechanism is a SQL query.
Oracle ADF Business Components can automatically use JDBC to pass this query to
the database and receive the result.
When view object definitions use a SQL query, query columns map to view
attributes in the view object definition. The definitions of these attributes reflect the
properties of these columns, such as the columns' data types and precision and
scale specifications. When view object definitions use other data sources, view
object attributes map to "columns" of data from those data sources, as defined by
the programmer.
A view object definition is a template for view object instances, which represent
particular caches of rows of data. Different users will always use different view
object instances, but the same user may also use multiple view object instances if
they need separately maintained caches from the same query.
A view object definition can have up to four parts:

An XML file, which represents the portion of the view object definition that
can be developed declaratively. This information consists of the mechanism (usually
a SQL query) that the view object uses to retrieve data from the data source, and
the way in which the columns of the SQL query map to entity attributes (which

handle actual O/R mapping). For many view object definitions, the XML file by itself
is sufficient.
A view object class, which represents an individual view object instance. View
object classes allow you to write custom methods that affect multiple rows in a
query. View object classes extend the class oracle.jbo.server.ViewObjectImpl. If
you do not need to write custom view object methods, you need not generate an
entity object classADF can use oracle.jbo.server.ViewObjectImpl directly to
represent instances of the query result set.
A view row class, which represents individual rows of the query result. View
row classes allow you to write custom methods that affect a single row of data, and
they provide typesafe accessors to retrieve and change data. View row classes
extend the class oracle.jbo.server.ViewRowImpl. If you do not need custom rowlevel methods or typesafe accessors, you need not generate a view row classADF
can useViewRowImpl directly to represent view rows.
A view definition class, which represents the query itself. View definition
classes act as Java wrappers for the XML file, so if you need special handling of the
metadata (for example, if you need to change it dynamically), you can add this
code in the view definition class. View definition classes extend the
classoracle.jbo.server.ViewDefImpl. If you do not need custom handling of your
metadata, you need not generate a view definition classADF can
use ViewDefImpl directly to wrap the metadata.
1 Attribute Mappings
Like entity attributes, the values of view attributes can be read or changed using
the methods getAttribute() andsetAttribute() in the ViewRowImpl class or by using
generated getters and setters in a custom view row class.
There are two different types of view attributes, however, for which these accesssor
methods function quite differently:

SQL-only view attributes are not mapped to entity attributes. For these
attributes, the accessor methods read values from and make changes to data in the
view object instance's cache of view rows.
Entity-derived view attributes are mapped to attributes in an entity object
definition.
For
these
attributes,
the
accessor
methods
will
call getAttribute() and setAttribute() on the relevant entity object instance. The
data will be changed within the entity collection's cache of entity object instances,
not within the view object instance's cache of view rows.
Because entity object definitions handle DML operations, attributes that will be used
to make changes to the database must be entity-derived. However, if a view object
definition will be used for data retrieval only, there is an advantage to making all its
attributes SQL-only: such view object definitions, called SQL-only view object
definitions, bypass the entity collection's cache entirely, avoiding the overhead and
resources required to create entity object instances.

2 Navigating Through Result Sets


View object instances are row iterators. In particular, they are row iterators of view
rows.
Like other row iterators, view object instances contain a current row pointer that
points to one particular view row. This pointer can be moved around and used to
extract rows from the iterator.
Row iterators contain a number of methods to help you navigate and extract
individual rows from them:

row.

next() advances the current row pointer in the row iterator and returns that

hasNext() checks to make sure that the row iterator has more rows after the
current row pointer. You can use next() and hasNext() together to create a loop to
cycle through the rows in the iterator.
First() moves the current row pointer to the first row in the iterator and
returns that row.
Last() moves the current row pointer to the last row in the iterator and
returns that row.
Previous() steps the current row pointer back one row and returns that row.
hasPrevious() checks to make sure that the row iterator has more rows after
the current row pointer. You can use previous() and hasPrevious() together to
create a loop to cycle backwards through the rows in the iterator.
3 Creating and Deleting Rows
ViewObjectImpl also contains methods to create rows:

createRow() creates a view row appropriate to the view object definition.


insertRow() inserts the row into the view cache.

You can mark a row for deletion by


calling Row.remove() or ViewObjectImpl.removeCurrentRow().

4 Keys
A key is a set of attributes that allow you to quickly retrieve one or more rows from
a view object instance's query result. Persistent view object attributes based on
primary keys are automatically part of the view object's key; you can make other
attributes part of the view object's key as well.
You can use an array containing a partial or complete list of attribute values to set
up an object of typeoracle.jbo.Key. You can then pass this object into the

method ViewObjectImpl.findByKey() to return an array of rows that match the key


values.

5 View Criteria
View criteria are structured criteria that you can use to create searches.
View criteria are collections of view criteria rows. A view criteria row specifies
query-by-example requirements for one or more view object attributes. A view
row matches if it meets all of the requirements.
When you apply view criteria to a view object instance, the query is restricted to
return those view rows that match at least one of the view criteria rows. Effectively,
therefore, view criteria assemble a WHERE clause in conjunctive normal form: the
WHERE clause is a disjunction of conjunctions of query-by-example requirements.
View criteria are implemented by the class oracle.jbo.ViewCriteria; view criteria
rows, by the classoracle.jbo.ViewCriteriaRow.

ADF View Link: Oracle ADF view links are business components that define a
relationship between two Oracle ADF view object definitions (the "source"
and "destination" view objects) based on sets of view attributes (the
"source" and "destination" attributes) from each. These can range from
simple one-to-many relationships to complex many-to-many relationships.
This allows you to easily create master/detail relationships between data
controls in the client. For example, creating a view link between view objects
will allow you to create relationships between:

A dropdown list for selecting a customer and a table displaying that


customer's orders
The nodes in a tree control and their respective children
An HTML page containing two frames: one that allows the user to browse for
items and the other that lists the warehouse in which the selected item is stored
Because view objects are data model components, you should consider your client's
data needs when defining them. Decide which controls will need to be related, and
which view objects will manage them.

View Link Definitions and View Link Instances


Often, it is important to distinguish between the following:

View link definitions, which consist of an XML file that defines the view link
View link instances, which are particular references to a Oracle ADF view link
definition
within
a
Oracle
ADF
application
module
definition.
View
Accessors:
Use to define the list of available view accessors on the current entity object or view
object.
View accessors are value-accessor objects in ADF Business Components. You create
a view accessor to point from a base entity object attribute or view object attribute
to
a
source
view
row
set.
The view accessor returns a list of all possible values to the attribute of the base
object.

1 Accessor
Attributes
When you create a view link definition between two view object definitions, you can
select to add accessor attributes to the source view object definition, the
destination view object definition, or both. These accessor attributes function much
like the accessor attributes to associations:

Their names can be passed as arguments to ViewObjectImpl.getAttribute().


If you generate a view row class, a getter method for the accessor attributes
will be included in the class.
The accessor method will return a view row or a row iterator, depending on
the cardinality of the view link definition.
An accessor attribute returns a row or row iterator that is static, not one that
maintains a synchronized master-detail relationship. For example, suppose
DepartmentEmployees is an accessor attribute that returns rows of EmployeesView
from rows of DepartmentView. Suppose you execute the following code on the
current row of DepartmentView:

RowIterator details = current.getAttribute("DepartmentEmployees");

Then suppose the current row of DepartmentView changes. The row iterator
in details will not change: it will still contain details of the original row.

To maintain a synchronized master-detail relationship, you should use view link


instances in an application module instance.

2 Cardinality:
Like associations, view link definitions can be one-to-one, one-to-many, or manyto-many. One-to-one and one-to-many view link definitions can either be based on
associations or they can use attribute matching the way associations do. Many-tomany view link definitions must be based on many-to-many associations.
Q: ADF 10g navigation rules example in faces-config.xml file.
Ans: Navigation rules tells JSF implementation which page to send back to the
browser after a form has been submitted. We can declare the page navigation as
follows:
<naviagation-rule>
<from-view-id>/index.jsp</from-view-id>
<navigation-case>
<from-outcome>login</from-outcome>
<to-view-id>/welcome.jsp</to-view-id>
</navigation-case>
</naviagation-rule>
This declaration states that the login action navigates to /welcome.jsp, if it occurred
inside /index.jsp.
Q: Setting the range of table
A: <af:table rows=#{bindings.LoggedInUserServiceRequests.rangeSize}/>
Q : Which component in ADF BC manages transaction ?
A : Application Module, manages transaction.
Q : Where is that we write business rules/validations in ADF and why?
A : We should ideally be writing validations at Entity Object level, because they
provide highest degree of reuse.

Q : What are various components in ADF?


A : Oracle ADF has following components

ADF Business Components: VO, EO & AM


ADF Model : DataBinding (.cpx, .xml) & DataControls(.dcx)
ADF View: JSP, JSF, ADF Faces etc.
ADF Controller: Task flows (adf-config.xml), faces-config.xml
Q
:
What
is
the
return
type
of
Service
A : Service Methods can return Scalar or Primitive Data types.

Q
:
Can
Service
Methods
A : Yes, Service Methods can Return type Void

return

Methods?

type

Q
:
Can
Service
Methods
return
Complex
Data
A : No, service methods can return only primitive/scalar data types.

Void?

types?

Q : Where do we write business rules or validations in ADF and why?


A : We should be writing validations at Entity Object level, because they provide
highest degree of reuse.

Q : What are the various access scopes supported by ADF?


A : ADF Faces supports the following scopes

none
backingBean
request
view
pageFlow
session
application
Memory Scope for ADF Managed Beans

Scope

Description

application

The application scope lasts until the application stops. Values that
you store in a managed bean with this scope are available to every
session and every request that uses the application.
Avoid using this scope in a task flow because it persists beyond the
life span of the task flow.

session

The session scope begins when a user first accesses a page in the
application and ends when the user's session times out due to
inactivity, or when the application invalidates the session.
Use this scope only for information that is relevant to the whole
session, such as user or context information. Avoid using it to pass
values from one task flow to another. Instead, use parameters to
pass values between task flows. Using parameters gives your task
flow a clear contract with other task flows that call it or are called by
it. Another reason to avoid use of session scope is because it may
persist beyond the life span of the task flow.

pageFlow

Choose this scope if you want the managed bean to be accessible


across the activities within a task flow. A managed bean that has a
pageFlow scope shares state with pages from the task flow that
access it. A managed bean that has a pageFlow scope exists for the
life span of the task flow.If another task flow's page references the
managed bean, the managed bean creates a separate instance of
this object and adds it to the pageFlow scope of its task flow.

view

Use this scope for managed bean objects that are needed only within
the current view activity and not across view activities. It defines
scope for each view port that ADF Controller manages, for example,
a root browser window or an ADF region.
The life span of this scope begins and ends when the
current viewId of a view port changes. If you specify view, the
application retains managed bean objects used on a page as long as
the user continues to interact with the page. These objects are
automatically released when the user leaves the page.

request

Use request scope when the managed bean does not need to persist
longer than the current request.

backingBea
n

A backing bean is a convention to describe a managed bean that


stores accessors for UI components and event handling code on a
JSF page. It exists for the duration of a request and should not be

Scope

Description
used to maintain state.
Use this scope if it is possible that your task flow appears in two ADF
regions on the same JSF page and you want to isolate each instance
of ADF region.

Q : How to Skip Validation in ADF using SkipValidation?


A : This method mainly used for Model layer validation skip.
ADF has a very robust validation framework. Validations can be added at different
layers (view, model and business services) based on your application's requirement.
To learn more about the ADF validation framework, please go through the Fusion
Developer's Guide for Oracle Application Development Framework.
That said, however, in a real business scenario there are cases where the validation
needs to be skipped (or by passed) conditionally while submitting the form. This
post discusses this topic with some common use cases.

Keep immediate=true

A very common way to skip validation is by keeping the value for immediate
attribute as 'true' for the UIComponents. Immediate attribute allow processing of
components to move up to the Apply Request Values phase of the lifecycle.

scenario:

While canceling a specific action, system should not perform the validation. One
possible way to achieve this is by keeping immediate=true associated with UI
element. To know more abut this feature, please refer this wiki.

Sometimes you may need to update UI controls with model data as part of the
immediate action. Make sure that you call resetValue() on the UIInput in this
scenario. This causes to reset the submitted value and would ensure that UI gets
updated with right value from the model.

SkipValidation

Another approach is to use SkipValidation property associated with the page


definition file.SkipValidation by pass the model layer validation based on the
specified
parameter
value.
Please note that:

1. This doesnt have any impact on JSF/ADF Lifecycle.

2. This property doesnt have any effect on the client side validation (even if it is
generated using the EL bound with model layer)

Where can I locate SkipValidation?

SkipValidation can be located as part of the root node of the page definition file.

Possible values for SkipValidation are given below.

a. SkipValidation=true

Setting SkipValidation property to true will bypass the ADF Model validation. In
this case validation happens only when you commit the transaction( i.e: when you
call transaction.commit()). Please note that SkipValidation skips only the entity
level validation. The attribute level validation fire irrespective of the value for the
boolean flag

Scenario:

This is useful where you need to delay the validation till the point where transaction
gets committed to Database. There are cases where business data needs to be
captured in bulk. A typical example would be capturing transaction data using a grid
form/tabular list. Business user must be able to key in values in any order. i.e. even
without completing the data capture for the current record, user must be able to
move to next set of records. Here model level validation needs to be delayed till we
really save the data. SkipValidation=true is the right option to achieve this sort of
use case, which does the validation across records, only while committing the
transaction.

b. SkipValidation=custom

In this case, framework validates only the 'CustomValidator' specified in page


definition file.

The value of the 'CustomValidator' property would be an EL expression that


evaluates to a bean that implements the "oracle.binding.BindingContainerValidator
interface"

Scenario:

This gives more control to the developer while validating the data. Only validates(or
rather
executes)
what
is
given
in
custom
implementation
for
BindingContainerValidator. It is much useful in complex business scenarios where
developer needs finer control on validation.

c. SkipValidation=skipDataControls

skipDataControls means that it will skip the data control level validation (also
known as Transaction Level validation) and instead only will validate data in the row
or rows which got updated through iterator in the current binding container.

Scenario:

The property is very much useful while dealing with below given scenarios.

1. A single entity is mapped to multiple tabs in a page.

2. Same page is making use of multiple Data Controls. Here commit on one Data
Control should not trigger validation on other Data Controls defined in the same
page.

d. SkipValidation=false

This is the default value for SkipValidation, apparently this setting just ensures the
normal flow for validation during form submission.

Q.What are Entity Objects?


A: Entity objects are Data Access Objects (DAOs) that are responsible for
persisting & caching data, validation, and encapsulating business rules.

Represent a database table or other data source.


Handles database caching.
Contains attributes representing the database columns.
Encapsulates attribute-level and entity level validation logic.
Can contain custom business methods.

Q : Can an entity object be based on two Database Objects(tables/views)


or two Webservices?
A

: No, Directly its not possible to create EO using multiple tables.


Entity objects will always have one to one relationship with a database object or
web
service.
But using views you can create Entity Objects on multiple tables.
Q.What is Control Hints in Entity Object configuration?
A: Control hints are associated with the current view or entity attribute. All view
objects inherit the hint values at run time.
Control hints for data controls and bindings, including: Labels, Date & currency
formatting.

Q.What are View Objects?


A: View objects, which can be bases on entity objects/Web Services,represent the
data which you want to view and manipulate.
Present a view or slice of business data.
Are used for joining, filtering, projecting, and sorting your business data.
Can be based on any number of entity objects.
Can also be constructed from a SQL statement.
Read-only SQL Based View Objects:
Is not based on any entity based object.

Cannot
be
used
for
insert,
update,
or
delete.
. Use SQL-based view objects for query only views, which do not need the
functionality of entity objects.

Q.What is Application Module?


A: An ADF components application module is a service object thatcoordinates view
objects for a specific task in the same way that a form usually encapsulates a single
user task. It contains only the business services that the application requires, and
can be compared to a Forms module.
An application module can represent and assist with tasks such as:
Updating customer information
Creating new order
Processing

salary

increases.

Q.What is view link? How to create it? What is idea behind it?
A: View Link is an active link between view objects.You can create view
links by providing the Source & destination VO attributes.
Oracle ADF view links are business components that define a relationship between
two Oracle ADF view object definitions (the "source" and "destination" view objects)
based on sets of view attributes (the "source" and "destination" attributes) from
each.
These can range from simple one-to-many relationships to complexmany-tomany relationships. This allows you to easily create master/detail relationships
between data controls in the client. For example, creating a view link between view
objects will allow you to create relationships between:

1.

A dropdown list for selecting a customer and a table displaying that


customer's orders
The nodes in a tree control and their respective children
An HTML page containing two frames: one that allows the user to browse for
items and the other that lists the wherehouses in which the selected item is stored
View Links can be created using:
Two View objects

2.

Based

on

EO

Association

View Links and Queries


A view link definition relates two view object definitions. In the vast majority of
cases, the view object definitions will contain SQL queries that access a database,
and
the
view
link
definition
will
relate
those
queries
using
a
parametrized WHERE clause, which is appended to the destination view object's
query and resolved using the values of source attributes.

For

example,

suppose

you

had

the

following

view

object

definitions:

CustomersView, containing the query:

SELECT

OrdersView, containing

FROM

CUSTOMERS

the

query:

SELECT * FROM ORDERS

You could create a view link, CustOrdLink, with

CustomersView's CustomerId attribute as its source attribute

The parametrized WHERE clause


WHERE :1 = ORDERS.CUSTOMER_ID

You could then use CustOrdLink conjunction with a row fromCustomersView (for
example, the row for Customer 101) and all of OrdersView to return the rows from
the query
SELECT * FROM ORDERS WHERE 101 = ORDERS.CUSTOMER_ID

JDeveloper will create the parametrized query for you based on the attributes you
select. If you do not change this query, you can make the view link
bidirectional. This will switch the roles of the source and destination attributes.
For example, if you make CustOrdLink bidirectional, you can use it in conjunction
with a row from OrdersView (for example, a row for an order placed by Customer
101) and all of CustomersView to return the rows from the query

SELECT * FROM CUSTOMERS WHERE CUSTOMERS.CUSTOMER_ID = 101


Q. Can you make View Link bidirectional?
A: Yes, you can make a view link bidirectional.
Its handled by view link query.
View Links created on Association are also bidirectional.
Q. How to create read only VO?
A: While creating View select below marked option
A view is read-only if it does not have Primary Keys or if all its entity
references are reference-only.

Q. Is EO to EO association possible like VO? If yes how?


Direct EO-EO association is possible.
In Jdeveloper select option New Association, Give name to association, select
attributes in source & destination Eos.
1.
2.

One-to-many relationships based on foreign keys.


A single many-to-many association corresponds to two foreign
key relationships:

A one-to-many relationship between the source table and a third table,


the intersection table

A one-to-many relationship between the destination table and the intersection


table.

Q.
What
is
Control
hint?
A: Control hints are additional attribute settings that the view layer can use to
automatically display the queried information to the user in a consistent, localesensitive
way.
JDeveloper manages storing the hints in a way that is easy to localize for multilingual
applications.
Used to set: Parameters in screenshot

Ex. Number, Number format, Date Format etc.

Q:
What
are
UI
Hints
&
List
UI
Hints?
A:
UI Hints: VO -> Query -> Create or Edit view criteria -> click Tab UI Hints
Use to specify the default properties for a query search components runtime usage
of individual named view criteria. Named view criteria that you create for view
object collections can be used by the web page designer to create query-byexample search forms.

List
UI
Hints: Open
view-object
->
List
UI
Hints
Use to specify default LOV (list of values) hints when you want the LOV-enabled
attributes of other view objects to inherit the list UI hints from the current view
object. Use to specify the type of LOV (list of values) component and one or more
attributes to display in the LOV for the attributes that you will LOV-enabled.
Additionally, you can set properties of the LOV component to customize it behavior
in the user interface.

Q: What are the security application layers & how they handled in Oracle
ADF?

Q: What is policy store and identity store in OID?


A: Identity Store is used to store information about users and groups while the
Policy Store is used to store information about security policies.
Q: What is the difference between databindings.cpx and datacontrol.dcx?
A: The DataBindings.cpx file contains the Oracle ADF binding context for your
entire application and provides the metadata from which the Oracle ADF binding
objects are created at runtime.
The DataControls.dcx file is created when you register data controls on the
business services. This file is not generated for Oracle ADF Business Components. It
identifies the Oracle ADF model layer data control classes(factory classes) that
facilitate the interaction between the client and the available business service.
Q: What is binding context and binding container?

A: Binding context is a runtime map between the data controls and page
definition of pages in the application which is used to access the binding layer. It is
accessible through the EL expression in your jspx pages.

Binding container is a request-scoped map that is used to instantiate the page


bindings. This is accessible through the EL expressions. Also, since it is requestscoped map, it is accessible during every page request.

Q: What are the different types of bindings in ADF?


A: ADF contains the following types of bindings:

Method Bindings: This binding is used when you want to use custom methods to
be executed.
Attribute Bindings: This is the binding to retrieve the value of a single view
attribute in the iterator bindings current view row. For eg;
#{bindings.CustomerId.InputValue}
Tree Bindings: This is used for tables, tree-tables and trees. It is used to expose
rows of a table in the iterator bindings current range. Eg; All Customers#{bindings.AllCustomers.labels.CustomerId}
Action Bindings: This binding type is used when buttons or command links are
dropped on the user interface and require an action to be performed on them. We
can use data control operations on them, for eg, Create, Delete, First, Last,
Commit, Rollback etc.

Iterator Binding: This binding is created by the application to access the ADF
binding context. It contains a reference to the page bound data collection, helps
access it and iterates over its data objects.

Q : What is the return type of Service Methods?

A : Service Methods can return Scalar or Primitive Data types.


Q : Can Service Methods return type Void?
A : Yes, Service Methods can Return type Void
Q : Can Service Methods return Complex Data types?
A : No, service methods can return only primitive/scalar data types.
Q : Which component in ADF BC manages transaction ?
A : Application Module, manages transaction.
Q : Can an entity object be based on two Database Objects(tables/views)
or two Webservices ?
A : No entity objects will always have one to one relationship with a database
object or web service.
Q : Where is that we write business rules/validations in ADF and why?
A : We should be writing validations at Entity Object level, because they provide
highest degree of reuse.
Q : What are the various access scopes supported by ADF?
A : ADF Faces supports the following scopes
Application Scope
Session Scope
PageFlow Scope
Request Scope
BackingBean Scope.

Q : What is the purpose of adfc-config.xml?


A: The adfc-config.xml file is the configuration file for an ADF unbounded task flow.
This file contains metadata about the activities and control flows contained in the
unbounded task flow.
Q : What is the purpose of faces-config.xml?

A: Use the faces-config.xml file to register a Framework applications resources,


such as custom validators and managed beans, and to define all page-to-page
navigation rules.
Q : In which xml do you configure the skin for your framework application?
A: trinidad-config.xml
Q : How do you decide whether the application should be deployed as an
EAR or a WAR?
A: If the application contains run-time customizations using MDS, it must be
bundles as an EAR. For simple webcenter portal application with no such
customizations, WAR can be created.
Q : What is the purpose of jazn-data.xml?
A: This file is used for defining the permissions and privileges for various groups of
users on various taskflows created in the application.

Q : When we drag drop VO from DataControl which binding occurs?


A: Value binding occurs.

Q : Explain Data binding & its types, sub-types?


A : Oracle Application Development Framework (Oracle ADF) provides several types of binding
objects to support the attributes and operations exposed by the Oracle ADF data controls for a
particular business object:

Iterator binding, one per accessor attribute that your page or panel displays. Iterates
over the business objects of the data collection and maintains the row currency and state.
Value bindings, one for each data-bound UI component. Provides access to data.
Action binding, specifically defined for a button component. Provides access to
operations defined by the business object.
Value Binding Types:
1. Attribute Value Binding
2. Boolean Value Binding
3. List Value Binding
4. Range Value Binding
5. Scroll Value Binding

Q: Explain Data Control Palette hierarchy


A: Data Control Palette hierarchy:The Data Control Palette displays two types of actions:

Actions that typically operate on all data collections in the current web page's binding
context (such as Commit and Rollback) in the Operations folder at the root level of the
hierarchy.
Operations on a specific data collection (for example, MyView1). Data collection-specific
operations (such as Create and Delete) appear in the Operations folder as child nodes of the
collection in the Data Control Palette.
Q: Write code to access the current row and or the view object inside your
bean.

A: code to access the current row and or the view object inside your bean:

BindingContainer bc =
BindingContext.getCurrent().getCurrentBindingsEntry();
DCBindingContainer dcbc = (DCBindingContainer) bc;
DCIteratorBinding lBinding =
dcbc.findIteratorBinding("EmployeesViewIterator");
EmployeesViewRow row = (EmployeesViewRow) lBinding.getCurrentRow();
EmployeesView view = (EmployeesView) lBinding.getViewObject();

You have to change the iterator name 'EmployeesViewIterator' to the name of your
VO iterator (look it up in the page bindings) and the classes Employees.
Q: How many types of VOs we can create in Oracle ADF?
A: There are four types of VOs we can create as shown in below image, select radio
button & create VO.

1. Updatable VO (Updatable access through entity objects) - Here EO need to be


created for updatable VOs.
2. Read only VO (Read-only access through SQl query) - No need to create EO,
VOs can be created using SQL queries, table, or views.
3. Rows populated pro-grammatically, not based on query - This is also readonly view. Here add one or more attributes to use in program. In the Attribute
Settings page, adjust any setting you may need to for the attributes you defined.
4. Static VO (Rows populated at design time- Static List): You use the Create View
Object wizard to create static view objects. The wizard lets you define the desired
attributes (columns) and enter as many rows of data as necessary. The wizard
displays the static data table as you create it.

You can also use the Create View Object wizard to create the attributes based on
data from a comma-separated value (CSV) file format like a spreadsheet file. The
wizard will attempt to create the attributes that you define in the wizard with data
from the first row of the flat file.

Check below image- circled import option is to import comma separated .cvs file or
other file.

Q: Can we change DB connection for any particular AM?


A: YES, follow steps to change DB connection:
1. Double click on AM.
2. GO to the configuration tab, click on configuration file bc4j.xml
3. Here we have attribute JDBCName under element AppModuleConfig, change the
connection which is created for other DB.
Q: What is view criteria, how can you change view criteria at runtime?
A: View Criteria: View criteria are structured criteria that you can use to create
searches.
View criteria are collections of view criteria rows. A view criteria row specifies
query-by-example requirements for one or more view object attributes. A view row
matches if it meets all of the requirements.
When you apply view criteria to a view object instance, the query is restricted to
return those view rows that match at least one of the view criteria rows. Effectively,

therefore, view criteria assemble a WHERE clause in conjunctive normal form: the
WHERE clause is a disjunction of conjunctions of query-by-example requirements.
View criteria are implemented by the class - oracle.jbo.ViewCriteria;
view criteria rows, by the classoracle.jbo.ViewCriteriaRow.
View criteria is like querying a SQL query.

Sometimes you need dynamic ViewCriteria that you can handle at runtime ,
here is the solution ,you can create and apply ViewCriteria ProgrammaticallySample UseCase

Suppose you have Department VO

You want to filter this VO for DepartmentId 10

Do this using this code snippet


/**Get ViewObject*/
ViewObject vo = getAm().getDepartments1();
/**Create ViewCriteria on ViewObject*/
ViewCriteria vc = vo.createViewCriteria();
/**Create ViewCriteriaRow for that Criteria*/
ViewCriteriaRow vcRow = vc.createViewCriteriaRow();
/**Set the values for ViewCriteriaRow*/
vcRow.setAttribute("DepartmentId", 10);
/**Add row to ViewCriteria*/
vc.addRow(vcRow);
/**Apply Criteria on ViewObject*/
vo.applyViewCriteria(vc);
/**Execute ViewObject*/
vo.executeQuery();

public pcAMImpl getAm() {


pcAMImpl am = (pcAMImpl)resolvElDC("pcAMDataControl");
return am;
}

Q: How can you manage transaction in ADF?


A: We can manage transaction using Application Module, different Application
Modules, Bounded Task Flows & at ADF Data Control Level.

Q: What is Bundled Exception Mode in ADF?


A: An application module provides a feature called bundled exception mode which
allows web applications to easily present a maximal set of failed validation
exceptions to the end user, instead of presenting only the first error that gets
raised. By default, the ADF Business Components application module pool enables
bundled exception mode for web applications.

You typically will not need to change this default setting. However it is important to
understand that it is enabled by default since it effects how validation exceptions
are thrown. Since the Java language and runtime only support throwing a single
exception object, the way that bundled validation exceptions are implemented is by
wrapping a set of exceptions as details of a new "parent" exception that contains
them. For example, if multiple attributes in a single entity object fail attribute-level
validation, then these multiple ValidationException objects will be wrapped in
aRowValException. This wrapping exception contains the row key of the row that
has failed validation. At transaction commit time, if multiple rows do not
successfully pass the validation performed during commit, then all of
the RowValException objects will get wrapped in an enclosing TxnValException
object.

When writing custom error processing code, you can use the getDetails() method of
the JboException base exception class to recursively process the bundled
exceptions contained inside it.

Note: All the exception classes mentioned here are in the oracle.jbo package.

Oracle ADF Task Flow Interview Questions and Answers


Q : What is a Taskflow?
A : Taskflow is the controller of an ADF application, it provides us an declarative
approach to define the control flow. It is used to define the navigation between
pages and various taskflow activites.

Task flows pass the control not only between JSF pages, but also between other
activities, for instance method calls or other task flows.
Note:
In fusion web application navigation and declaration of managed bean are taken
care by adfc-config even though faces-config.xml file is required for JSF-related
functions such as defining global resource bundles and data type converters.
Difference between JSF Page Flow & ADF Task Flow:
JSF Page Flow:
1.

2.
3.
4.
5.

1.
2.
3.
4.

5.

The entire application must be represented in a single page navigation file


(faces-config.xml). Although you can have multiple copies of faces-config.xml in a
project, the application loads these files as one at runtime.
All nodes within a JSF page flow must be JSF pages. No other types of
objects can exist within the JSF page flow.
Navigation is only between pages.
Application fragments cannot be reused.
There is no shared memory scope between multiple requests except for
session scope.
ADF Task Flow:
The application can be broken up into a series of modular flows that call one
another.
You can add to the task flow diagram nodes such as views, method calls, and
calls to other task flows.
Navigation is between pages as well as other activities, including routers.
ADF task flows are reusable within the same or an entirely different
application. After you break up your application into task flows, you may decide to
reuse task flows containing common functionality.
Shared memory scope (for example, page flow scope) enables data to be
passed between activities within the task flow. Page flow scope defines a unique
storage area for each instance of an ADF bounded task flow.
Task flows provide a more modular and transaction-aware approach to navigation
and application control.
Aside from pages, task flows can also coordinate page fragments. Page fragments
are JSF JSP documents that are rendered as content in other JSF pages. You can
create page fragments and the control between them in a bounded task flow as you
would create pages, and then insert the entire task flow into another page as a
region.
Unbounded Task Flows: A set of activities, control flow rules, and managed
beans that interact to allow a user to complete a task. An ADF unbounded task
flow consists of all activities and control flows in an application that are not

included within any bounded task flow.

1.
2.
3.
4.
5.
6.
7.
8.

It is similar to the JSF page flow.


When a project with the ADF Page Flow technology scope is created, it will
contain a task flow definition file called adfc-config.xml by default. This is an
unbounded task flow. Such task flows are called unbounded simply because they
have no explicit start or end.
It can start from any view activity.
An application can have one, and only one, unbounded task flow.
It is possible to have several separate definition files containing unbounded
task flow definitions, but at runtime, these are all Merged into a single logical flow.
No limits for entry and exit points.
Cant be creating on page fragments.
An unbounded task flow cannot declaratively specify parameters.
It cannot contain a default activity, an activity designated as the first to run
in the unbounded task flow.
Bounded Task Flows:
Reusable and parameterized and maintain private state.
Can participate in transaction.
Bounded task flow does not have an equivalent in the current JSF standard.
Single entry point and zero or more exit point.
Can be created as a page or page fragment.
Data controls can be shared between task flows
A bounded task flow can declaratively specify parameters.
The bounded task flow always specifies a default activity, a single point of
entry that must execute immediately upon entry of the bounded task flow.
An unbounded task flow can call an ADF bounded task flow, but cannot be called
by another task flow.
A bounded task flow can call another bounded task flow, which can call another
and so on.
Below are the different activities which participate in task flow:

A view activity configures the page or page fragment in task flow.


A router activity create an expression whose evaluation will determine which
control flow rule will be followed.
A method call activity configures the method to be called in task flow.
A task flow call activity configures the task flow to be called in task flow.
A return activity is used to return the task flow.
Scope in task flow: Scope for ADF Managed Beans:

Application - The application scope lasts until the application stops. Values
that you store in a managed bean with this scope are available to every session and
every request that uses the application.
Avoid using this scope in a task flow because it persists beyond the life span of the
task flow

Session - The session scope begins when a user first accesses a page in the
application and ends when the user's session times out due to inactivity, or when
the application invalidates the session.
Use this scope only for information that is relevant to the whole session, such as
user or context information. Avoid using it to pass values from one task flow to
another. Instead, use parameters to pass values between task flows. Using
parameters gives your task flow a clear contract with other task flows that call it or
are called by it. Another reason to avoid use of session scope is because it may
persist beyond the life span of the task flow.

pageFlow - A managed bean that has a pageFlow scope shares state with
pages from the task flow that access it. A managed bean that has a pageFlow scope
exists for the life span of the task flow.
If another task flows page references the managed bean, the managed
bean creates a separate instance of this object and adds it to the pageFlow scope of
its task flow.
You can specify page flow scope as the memory scope for passing data between
activities within the ADF bounded task flow. Page flow scope defines a unique
storage area for each instance of an ADF bounded task flow. Its lifespan is the ADF
bounded task flow, which is longer than request scope and shorter than session
scope.
When one task flow calls another, the calling task flow cannot access the called task
flows pageFlow scope. This means, for example, that a UI component on a page
referenced by a task flows view activity cannot access the pageFlow scope
of another task flow even if this task flow is an ADF region embedded in the same
page as the UI component.

View - Use this scope for managed bean objects that are needed only within
the current view activity and not across view activities. It defines scope for each
view port that ADF Controller manages, for example, a root browser window or an
ADF region.
The life span of this scope begins and ends when the current viewId of a view port
changes. If you specify view, the application retains managed bean objects used on
a page as long as the user continues to interact with the page. These objects are
automatically released when the user leaves the page.

Request Use request scope when the managed bean does not need to
persist longer than the current request.
Backing Bean - A backing bean is a convention to describe a managed bean
that stores accessors for UI components and event handling code on a JSF page. It
exists for the duration of a request and should not be used to maintain state.
Use this scope if it is possible that your task flow appears in two ADF regions on the
same JSF page and you want to isolate each instance of ADF region.

Q : What are the different types/categories of Taskflows?


A : Taskflows are of two categories : Bounded and UnBounded.
Q : What is the difference between Bounded and UnBounded taskflows?
A : Differences between Bounded and UnBounded taskflows :

Bounded taskflows can be secured but Unbounded cant.


Bounded taskflows can accept parameter and return values but
unbounded taskflows dont support parameters.
Bounded taskflows has a single entry point or a default activity
but unbounded taskflows have multiple entry points.
Bounded taskflows can be called from other
bounded/unbounded taskflows but unbounded cannot be called or reused.
Bounded taskflows support transactions unbounded dont.
ADF Bounded Task Flow Features:

Well-defined boundary :An ADF bounded task flow consists of its own set
of private control flow rules, activities, and managed beans. A caller requires no
internal knowledge of such things as page names, method calls, child bounded task
flows, managed beans, and control flow rules within the bounded task flow
boundary. Input parameters can be passed into the bounded task flow, and output
parameters can be passed out on exit of the bounded task flow. Data controls can
be shared between task flows.

Single point of entry : An ADF bounded task flow has a single point of
entry, a default activity that executes before all other activities in the task flow.
Page flow memory scope : You can specify page flow scope as the
memory scope for passing data between activities within the ADF bounded task
flow. Page flow scope defines a unique storage area for each instance of an ADF
bounded task flow. Its lifespan is the ADF bounded task flow, which is longer than
request scope and shorter than session scope.

Addressable :You can access an ADF bounded task flow by specifying its
unique identifier within the XML source file for the bounded task flow and the file
name of the XML source file. For more information.

Reuse: You can identify an entire group of activities as a single entity, an


ADF bounded task flow, and reuse the bounded task flow in another application
within an ADF region. For example, the Hot Items and Start Shopping tabs on the
home page of the Fusion Order Demo application reuse the same task flow
embedded in a region. Different parameters are passed to each region to determine
the lists of products that display.
You can also reuse an existing bounded task flow simply by calling it. For example,
one task flow can call another bounded task flow using a task flow call activity or a
URL.

In addition, you can use task flow templates to capture common behaviors for
reuse across different ADF bounded task flows.

Parameters and return values: A caller can pass input parameters to an


ADF bounded task flow and accept return values from it.
In addition, you can share data controls between bounded task flows.

Transaction management:An ADF bounded task flow can represent a


transactional unit of work. You can declaratively specify options on the bounded
task flow that determine whether, when entering the task flow, the task flow
creates a new transaction, joins an existing one or is not part of the existing
transaction.

Reentry :You can specify options on the bounded task flow that determine
whether or not it can be reentered.
On-demand loading of metadata :ADF bounded task flow metadata is
loaded on demand when entering an ADF bounded task flow.

Security: You can secure an ADF bounded task flow by defining the
privileges that are required for someone to use it.

Q: What is taskflow ? how many type of taskflow adf support?


Ans: Taskflow is the Component of Oracle ADF which is used to define simple task.
After successfully defining task-flow can consume any number of time.
ADF support two kind of taskflow:

Bounded TaskFlow : Bonded taskflow require the page on which they will
consume.
An ADF bounded task flow is used to encapsulate a reusable portion
of an application. A bounded task flow is similar to a Java method in that it:

1.
2.
3.
4.
5.

Has a single entry point


May accept input parameters
May generate return values
Has its own collection of activities and control flow rules
Has its own memory scope and managed bean lifespan (a page flow scope
instance)
UnBounded TaskFlow : Unbounded taskflows can directly run on browser

Q: Can bounded taskflow run on browser?


Ans: NO

Q: How to develop reusable taskflow in ADF?


Ans: Please fins the step below

Define taskflow

Define deployment profile as ADF Library jar

Deploy adf jar file

Open new project where you want to consume the task flow.

Add newly created jar of taskflow project

go to component palate You will find your jar name, select it.

It will show list of taskflow which you have developed.

Drag drop your taskflow as region on jsff/jspx page and run an application
Q: What are different scope of adf taskflow?
Ans: Isolate/Shared
Shared scope will share data among the multiple instance of taskflows while
Isolated doesn't.
Q: How can you force ADF taskflow to use new transaction everytime
taskflow is called?
Ans: Go taskflow overview and you will find Share data controls with calling task
flow option as shown below
Select always begin new transaction fron dropdown
Q: How to use same transaction in ADF taskflow?
Ans Select Always Use existing Transaction option.
Q How can you pass parameter to adf taskflow?
Ans: Go to overview select parameters link it will show screen like

Here you can add multiple parameter which you want to pass to takflow while
loading it.

Q: Explain the purpose of using Controls


Ans: Controls flow defined in taskflow can be
taskflow.
if you have same flow for multiple pages just
taskflow. You can invoke it anytime from any

flow in adf?
called anytime from any page of that
define the control flow once in
action event.

Q: What is the behavior of router in ADF taskflow?


Ans : Based on some condition router can decide which route need to be follow. If
none of condition match in that case router will follow default route defined by
used.
Q: How can navigation define in taskflow?
Ans : Navigation can be defined in taskflow using control flows and invoked by
jsff/jspx page using action event like button link etc.
Q: Can ADF task flow hold more than 1 view activity?
Ans: Yes. ADF taskflow can have multiple view activity but 1 activity has to be
defined as default activity.
Q: What is the Parent Action Activity in ADF Taskflow?
Ans: Parent action activity using it you can invoke the Control flow define in parent
taskflow from child taskflow.
Used to create new task flow using existing task flow.
Q: What is method activity in Adf Taskflow?
Ans: Using this activity you can invoke a method defined in manage-bean.
Q: How to initialize ADF Taskflow?
Ans: Open the taskflow in Overview Mode select General option, there is
initiallizer property.
you can provide the any method reference which will get invoked whenever
taskflow instance created.

Q: How to convert an ADF bounded task flow to Unbounded Task


Flow or Page Fragments?
Ans: In the editor, open the bounded task flow diagram.
Right-click anywhere in the diagram other than on an activity or control flow.
Choose a menu item such as Convert to Unbounded Task Flow or Convert to
Task Flow with Page Fragments.

If the bounded task flow contains fragments, the menu item will be Convert to
Task Flow with Pages.
Q: How to use same value in multiple activities of a Task Flow?
Ans:

Using Shared memory scope (for example, page flow scope) enables data to
be passed between activities within the task flow.
Page flow scope defines a unique storage area for each instance of an ADF
bounded task flow.
Any managed beans you decide to use within task-flow can be specified in
page flow scope, so are isolated from the rest of the application
Q: What are entry points for task flow?
Ans: This task flow contains a number of view activities that are all entry points
to the application.
Q: How can one bounded task flow can call another?
Ans:One task flow can call another bounded task flow using a task flow call activity
or a URL.
Q: How to identify default activity in bounded task flow?
Ans: A green circle identifies the default activity in a task flow
diagram.

The first activity that you add to a new ADF bounded task flow diagram is
automatically identified as the default activity.
You can also right-click any activity in the task flow diagram and choose Mark
Activity > Default Activity.
The default can be any activity type and it can be located anywhere in the control
flow of the ADF bounded task flow.

To find the default activity, right-click anywhere on the task flow diagram and
choose Go to Default Activity.

Task Flow Activities:

Method Call: Invokes a method, typically a method on a managed bean. A


method call activity can be placed anywhere within an applications control flow to
invoke application logic based on control flow rules.
Parent Action: Allows a bounded task flow to generate outcomes that are
passed to its parent view activity.
Router: Evaluates an EL expression and returns an outcome based on the
value of the expression. For example, a router in a credit check task flow might
evaluate the return value from a previous method call and generate success,
failure, or retry outcomes based on various cases. These outcomes can then be
used to route control to other activities in the task flow.
Save Point Restore: Restores a previous persistent save point,
including application state and data, in an application supporting save for later
functionality.

Task Flow Call: Calls a bounded task flow from an unbounded task flow or
another bounded task flow.
Task Flow Return: Identifies when a bounded task flow completes and
sends control flow back to the caller. (Available for bounded task flows only).
URL View: Redirects the root view port (for example, a browser page) to
any URL-addressable resource, even from within the context of an ADF region.
View: Displays a JSF page or page fragment. Multiple view activities can
represent the same page or same page fragment.
Control Flow Case: Identifies how control passes from one activity to the
next in the application.
Wildcard Control Flow Rule: Represents a control flow case that can
originate from any activities whose IDs match a wildcard expression. For example,
it can represent a control case from-activity-id containing a trailing wildcard such as
foo*.
Q. If you want to show information to end users in a secondary browser,
how will you show?
Ans: Use dialogs option from activities.
Examples:
1. you want to display help information to end users to assist them with a task in
the primary browser window

2. you want end users to select a value from a list of values.

Oracle ADF UI & Data Visualization Components Interview questions


and answers
Q: What are the ADF templates, jspx pages, jsff page & declarative
components?
A: ADF Faces provides the following types of reusable building blocks

Page fragments(.jsff): Page fragments allow you to create parts of a page. A


JSF page can be made up of one or more page fragments. For example, a large JSF
page can be broken up into several smaller page fragments for easier
maintenance.
We can create an page fragments template & use to create page fragments.

Page templates (.jspx): By creating page templates, you can create entire
page layouts using individual components and page fragments. For example, if you
are repeatedly laying out some components in a specific way in multiple JSF pages,
consider creating a page template for those pages. When you use the page
template to build your pages, you can be sure that the pages are always consistent
in structure and layout across the application.
Using default layouts or creating new we can create page templates.
Ex. Using <f:facet> we can create page templates with header, footer, top, left &
right regions etc.

Declarative components: The declarative components feature allows you to


assemble existing, individual UI components into one composite, reusable
component, which you then declaratively use in one or more pages.
For example, if you are always inserting a group of components in multiple places,
consider creating a composite declarative component that comprises the individual
components, and then reusing that declarative component in multiple places

throughout the application.


Declarative components can also be used in page templates.
Declarative components can also be used in other applications, its possible after
creating JAR file of that component.
Q: What is region in Oracle ADF?
A: Tag name : <af:region>

The region tag allows dynamic content to be included in a master page. This tag is
bound to a RegionModel. The model decides which viewId is to be included. The
model has methods that allow pre and post processing of an include. See the
javadoc for oracle.adf.view.rich.model.RegionModel.

This component does not support any facets.


Regions support nesting (one af:region component can contain another af:region
component).
Regions are not allowed to be placed inside of af:forEach, c:forEach, or other
forEach-like tags because of limitations in how JSF handles component IDs and
component state which would manifest in your application in obscure manners such
as loss of component state.
Regions are also not allowed to be placed inside of af:iterator because the region
requires bindings to be established at the tag execution phase in order to perform
its JSP include operations and the variables for iterators are not established until
later in the life-cycle.

Regions in release 11g are reusable page flows. They have their own navigation
rules, managed beans and ADFm page definitions. Each page within the region is a
page fragment (jsff). Do not confuse the 11g af:region component with the 10.1.3
or Trinidad region. The 10.1.3 and Trinidad region components are single page
fragments that do not have multiple pages, navigation rules nor managed beans.
The 10.1.3 region is similar to the 11g page templates and declarative components.

The <af:region> will not stretch all included children, but it will stretch an included
child if all of the following are true:

The region itself does not have a header


The region itself is being stretched
There is only a single included child
The child must be capable of being stretched
Example: <af:region value="#{mybean.myRegionModel}"/>

Q: What is <f:facet> ?
A: This tag is used to add a facet to the component means this tag is used
to add its child as a facet of the closest parent component.
With the help of this tag we can add header and footer facet to the container
component like panelGroup.
This tag contains one attribute :
name : This is the required attribute and is used to set the name of the facet.
"header" and "footer" values can be used for this attribute.
Q : How to skip validation in ADF?
A : Add immediate="true" to the button. This way all input fields which don't
have immediate="true"will be skipped in processing.
This method mainly used for view layer validation skip.

Q : How to make any field mandatory?


A : Add attribute required="true" to that specific field.

Q: What is setActionListener?
Ans: SetActionListener The setActionListener tag is a declarative way to allow
an action source ( , , etc.) to set a value before navigation. It is perhaps most
useful in conjunction with the processScope EL scope provided by ADF Faces, as it
makes possible to pass details from one page to another without writing any Java
code. This tag can be used both with ADF Faces commands and JSF standard tags.
Exmaple of this can be as follows. Suppose we have a table employee.We want to
fetch the salary of an employee of some particular row and want to send this salary
in Next page in process scope or request scope etc.So using this we can do this.

It have two attributes :

From the source of the value; can be an EL expression or a constant value

To the target for the value; must be an EL expression


1 <af:setActionListener from="#{row.salary}"
2 to="#{processScope.salary1}"/>

This setActionListener will pick value of salary of that row and store this value into
salary1 variable.So anyone can use this salary as processScope.salary1.
It is very simple to use and very useful.

Q: How to pass Values Between Pages?


A: The ADF Faces pageFlowScope scope makes it easier to pass values from one page
to another, thus enabling you to develop master-detail pages more easily. Values
added to thepageFlowScope scope automatically continue to be available as the user
navigates from one page to another, even if you use a redirect directive. But
unlike session scope, these values are visible only in the current page flow or
process. If the user opens a new window and starts navigating, that series of
windows will have its own process. Values stored in each window remain
independent.
Like objects stored in any standard JSF scope, objects stored in the pageFlow scope
can be accessed through EL expressions. The only difference with
the pageFlow scope is that the object names must use the pageFlowScope prefix. For
example, to have a button's label provided by a managed bean stored in
the pageFlow scope, and to have a method on the bean called when the button is
selected, you might use the following code on your page:
<af:commandButton text="#{pageFlowScope.buttonBean.label}"
action="#{pageFlowScope.buttonBean.action}"/>
The pageFlowScope is a java.util.Map object that may be accessed from Java code.

The setPropertyListener tag allows you to set property values onto a scope, and
also allows you to define the event the tag should listen for. For example, when you

use the setPropertyListener tag with the type attribute set to action, it provides a
declarative way to cause an action source (for example, commandButton) to set a
value
before
navigation. You
can
use
the pageFlowScope scope
with
the setPropertyListener tag to pass values from one page to another, without
writing any Java code in a backing bean. For example, you might have one page
that uses the setPropertyListener tag and a command component to set a value in
the pageFlowScope scope, and another page whose text components use
the pageFlowScope scope to retrieve their values.
You can also use the pageFlowScope scope to set values between secondary windows
such as dialogs. When you launch secondary windows from, for example,
a commandButtoncomponent,
you
can
use
a launchEvent event
and
the pageFlowScope scope to pass values into and out of the secondary windows
without overriding values in the parent process.

Tip: Instead of using the setActionListener tag (which may have been used in previous
versions of ADF Faces), use the setPropertyListener tag and set the event type to action.

Q: How to Use the pageFlowScope Scope Within Java Code


A: You can access pageFlow scope from within any Java code in your application.
Remember
to
clear
the
scope
once
you
are
finished.

Note: If your application uses ADF Controller, then you do not have to manually
clear the scope.

To use pageFlowScope in Java code:

1.

2.
3.
4.
5.
6.

To
get
a
reference
to
the pageFlowScope scope,
use
the org.apache.myfaces.trinidad.context.RequestContext.
getPageFlowScope() method.
For example, to retrieve an object from the pageFlowScope scope, you might use the
following
Java
code:
import java.util.Map;
import org.apache.myfaces.trinidad.context.RequestContext;
...
Map pageFlowScope = RequestContext.getCurrentInstance().getPageFlowScope();
Object myObject = pageFlowScope.get("myObjectName");

7.

To clear the pageFlowScope scope, access it and then manually clear it.
For example, you might use the following Java code to clear the scope:

8.

RequestContext afContext = RequestContext.getCurrentInstance();


afContext.getPageFlowScope().clear();

Q. How to pass ''af:selectOneChoice'' value to other page?


A: Add valuePassThru="true" attribute to select list.

Q. What are types of ADF Faces components?


A: ADF Faces components:
Data components
Input components
Layout components
Navigational components
Output components

Q. Why 'timeZone' attribute is required when <af:convertDateTime is


used?
A: When <af:convertDateTime is used it takes by default GMT time, for Indian
timing we need to take GMT+5.30
EX.
<af:inputText id="compId3882"
label="#{messageBean['SS_DATE_OF_BIRTH']}"
disabled="true" maximumLength="50"
value="#{bindings.DateofBirth.inputValue}"
inlineStyle="font-size:smaller; font-weight:normal; fontfamily:Arial;color:rgb(69,69,69);">
<af:convertDateTime timeZone="GMT+5:30" pattern="dd/MM/yyyy"/>

</af:inputText>

Q: What is the difference between trinidad.config and trinidad.skins?


A: trinidad.config file is ceated when you create a webcenter portal application. This
is used to register the skin-family you are going to use for your entire application.
Trinidad.skins is used when we use skin as a Jar file. This file provides a mapping
between the Skin Id and the actual path where the skin exists.

Q: What is the difference between an action and an action listener?


A: Actions are designed for business logic and participate in navigation handling,
whereas action listeners typically perform user interface logic and do not participate
in navigation handling.
Action listener is a class that wants to be notified when a command component fires
an action event.
Action returns String ActionListner returns void.

Action used for page navigation with faces-config.xml or adfconfig.xml, ActionListner is used for event handling, to retrieve data & other
operations, its used with backing beans or bindings.
Action use - for page navigation, ActionListner use - check box, drop down
box.
Q: What is a view scope?
A: view-state allocates a new viewScope when it enters. This scope may be
referenced within the view-state to assign variables that should live for the duration
of the state. This scope is useful for manipulating objects over a series of requests
from the same view.

Q: What is the difference between visible property and render property


A: The visible property is set to true/false based on the requirement whether we
want to see the field on the page or not at run time. The field or component still
exists on the page, though hidden. The render property is used to conditionally load
the component based on a criteria.

Q: How do you define pagination in adf?


A: It was not possible to do pagination on af:table component before R1 release
11.1.1.7, although this feature was exist in 10g but not available in previous 11g
series. (Ref blog - Click here..)

In 11g series there were some customization approach for pagination:


1. We define custom pagination in ADF by creating a custom table as a taskflow
using the af:iterator tag. This renders the collection of data just as a table renders
it. Now we bind the value property of iterator to collection model from ADF bindings
declaration and set the number of visible row to, say 15.
2. Using JavaScript
3. Customizing VO java code,

Q: What are validators and converters?


A: Validators and Convertors are used to provide conversion and validation
capabilities to the ADF input components respectively. Converters convert the valurs
on ADF forms to the type in which the application accepts them after the values are
edited on the form and submitted. Validators re used to impose validations on the
inpiut components.

Q: What is the difference between setting an immediate=true on a button


and immediate=true on a text field?A: When immediate is true on a button,
the commands action and ActionListeners, including the default ActionListener
provided by the JavaServer Faces implementation, will be executed during Apply
Request Values phase of the request processing lifecycle, rather than waiting until
the Invoke Application phase.
In case of a text field, by default, values are converted and validated together in
the Process Validators phase. However, if you need access to the value of a
component during Apply Request Values for example, if you need to get the value
from an actionListener on an immediate commandButton then setting this to
immediate makes that possible.
Q: What is inter-portlet communication?
A: Inter-portlet communication is achieved when an action in one portlet triggers a
response in the second portlet. Its a communication bridge between two portlets.
For eg, one portlet contains a checkbox containing list of products. When i choose a

product from the list and click on submit, the other portlet displays the details of
the respective product.

Q. How to do table pagination in Oracle ADF?


A: This feature has brought back from 10g to new R1 release 11g-PS6 (10.1.1.7.0)
Go through blog: Click here..

Q: How To Control ADF Table Pagination on Runtime and Do Case


Insensitive Search?
A: Go through blog: Click Here..

Q : What is PPR and how do you enable Partial Page Rendering(PPR)?


A : PPR is a feature supported by ADF Faces, using which we can render a small
portion of a HTML Page, without refreshing the complete page.
It is enabled by.- Setting AutoSubmit property to true on the triggering element.
- Setting the PartialTriggers property of target component to refer to component
id of the triggering element.

Q : Explain Iterator RangeSize Attribute


A : Iterator bindings have a rangeSize attribute that the binding uses to determine
the number of data objects to make available for the page for each iteration. This
attribute helps in situations when the number of objects in the data source is quite
large. Instead of returning all objects, the iterator binding returns only a set
number, which then become accessible to the other bindings. Once the iterator
reaches the end of the range, it accesses the next set.
Example shows the default range size for the CustomerInfoVO iterator.
Example RangeSize Attribute for an Iterator
<iterator Binds="CustomerInfoVO"
RangeSize="25" DataControl="StoreServiceAMDataControl" id="CustomerInfoVO1It
erator"
ChangeEventPolicy="ppr"/>
By default, the rangeSize attribute is set to 25.
You can set it to -1 to have the full record set returned.

These are ADF Exams questions and so possible interview questions


In blue I ll try to give some possible answers or "sources for answers".
Introduction to Fusion and ADF
[ ]

Describe Fusion Architecture


Check: Check Part I Chapter 1 : What Is Fusion? in Oracle JDeveloper 11g Handbo

[ ]

Explain how ADF fits into the Fusion architecture


The ADF is the framework used to build Fusion Web Apps.

The Oracle Application Development Framework (Oracle ADF or just ADF) is a met

that fulfills the core requirements for a framework as outlined in the preceding sectio
integrates a mix of subframeworks to provide the key functions for object-relational
other forms of service access, data bindings, and user interface, along with the func
hold it all together (reference: http://www.amazon.co.uk/Oracle-JDeveloper-11g-Han

This chapter describes the architecture and key functionality of the Oracle Applicatio
[ ]

Describe the ADF technology stack (MVC)

Check: http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/intro.htm
[ ]

Identify sources of additional information about ADF and ADF Business Component

Check "Resourses" in the bottom of the blog and also posts with R

Getting Started with JDeveloper


[ ]

Describe benefits that JDeveloper provides for application development

Check: http://www.oracle.com/technetwork/developer-tools/jdev/jdeveloper11g-data
[ ]

Utilize common IDE mechanisms when developing and testing components

[ ]

Set IDE preferences based on user requirements

[ ]

Initiate the creation of empty applications, projects, and connections in JDeveloper

Building a Data Model with ADF Business Components


[ ]

Describe the role of ADF Business Components in building a business service


Connect to the database
Retrieve data
Lock database records

Manage transactions
More on http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/bcintro.h
[ ]

Explain the architecture of ADF BC

Below is a description of the architecture. Another more compact approach check A

Oracle ADF Business Components is a framework implements the Business Servic


To use Oracle ADF BC, you use wizards in JDeveloper to create:
Application Module

An application module is a service component that UI or Web Ser

You can enable a service interface on any Application Module. Th

You can use any application module both as a local component a


Entity object

An entity object represents a row in a database table and simplifie


View object

A view object represents a SQL query and simplifies working with

The following diagram illustrates the relationship among application module, entity o

[ ]

Identify the types of components that cooperate to provide the business service imp

Entity object
An entity object represents a row in a database table and simplifies modifying its da
View object
A view object represents a SQL query and simplifies working with its results. You us

Application module
An application module is the transactional component that UI clients use to work wi

More on: http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/intro.ht


[ ]

Explain how ADF BC components are used in a Web Application

Check: http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/bcdcpal.h

http://download.oracle.com/docs/cd/E15523_01/web.1111/b31974/bcdcpal.htm#BB

Querying and Persisting Data


[ ]

Describe the characteristics of an ADF BC view object

[ ]

Create a view object that can be used for performing a query in a Web application

[ ]

Define a SQL statement on which to base a query for a view object

[ ]

Explain how entity objects relate to database tables

[ ]

Describe the persistence mechanism of entity objects

[ ]

Use the Create Entity Object wizard to generate entity objects from database table

[ ]

Create associations between entity objects to represent business relationships

[ ]

Create updatable view objects based on entity objects

[ ]

Link view objects to one another in a master-detail hierarchy

[ ]

Refactor objects in an application

Exposing Data to Clients


[ ]

Explain the role of application modules

An application module is an ADF Business Components component that encapsula


In the early phases of application development, architects and designers often use

The domain business objects involved. To answer the question, "What core busines

The user-oriented view of business data required. To answer the questions, "What s

The identified domain objects involved in each use case help you identify the requir

The application module is the "work unit" container that includes instances of the re

Application Module Is a Business Service Component Encapsulating a Unit of Work

[ ]

Describe the characteristics of application modules

[ ]

Use the Create Application Module wizard to define the data model for an applicatio

[ ]

Explain how application modules can manage business components transactions

[ ]

Explain how application modules can manage application stateE

[ ]

Explain the role of the ADF Model

Declaratively Customizing Data Services


[ ]

Declaratively change data behaviour

[ ]

Declaratively modify the default behavior of view objects, entity objects, and applica

[ ]

Define a view accessor for a list of values(LOV)

[ ]

Define a list of values (LOV) for an attribute

Programmatically Customizing Data Services


[ ]

Generate Java classes for business components to modify default behavior program

[ ]

Override class methods to change or augment default behavior

[ ]

Modify the WHERE clause of a view object at run time

[ ]

Explain the benefits of adding service methods at the application module level (rath

[ ]

Create a test client for testing your custom code

[ ]

Modify a view object's client code to add a new employee to the employees view ob

Validating User Input


[ ]

Describe the types of validation available for ADF applications

[ ]

Evaluate which validation options are appropriate for different validations

[ ]

Add declarative validation for an entity object

[ ]

Identify the other non-declarative validation options and when they might be used

[ ]

Describe the benefits of using domains for validation

Troubleshooting ADF BC Applications


[ ]

Identify the JDeveloper tools for logging and diagnostics

[ ]

Use Java code auditing tools

[ ]

Make use of FileMon and Junit to debug an application

[ ]

Use the JDeveloper profiler

[ ]

Use the JDeveloper debugger

[ ]

Identify sources of Help

Understanding UI Technologies
[ ]

Describe the use of Web browsers and HTML

[ ]

Explain how Java has come into widespread use as a language for developing We

[ ]

Describe the function of Servlets and JSPs

[ ]

Define JavaServer Faces

[ ]

Explain the JSF component architecture

[ ]

Expalin some JSF component types included in the standard implementation

[ ]

Describe the purpose of backing beans

[ ]

Describe the JSF life cycle

[ ]

Explain how ADF Faces augments the JSF life cycle

Binding UI Components to Data


[ ]

Create an empty JSF page

[ ]

Use three different ways to add ADF Faces UI components to a page

[ ]

Describe the types of data-bound components that can be added to a JSF page
http://download.oracle.com/docs/cd/E17904_01/web.1111/b31974/bcdcpal.htm#BA
http://xmlandmore.blogspot.com/2010/05/oracle-adf-bindingcontext-and.html
http://xmlandmore.blogspot.com/2010/05/action-bindings-and-method-bindings-in.h

[ ]

Describe the structure of an EL (Expression Language) expression

Planning the User Interface


[ ]

Describe the Model-View-Controller design pattern

[ ]

Differentiate between bounded and unbounded task flows

[ ]

Create task flows to define control flow in an application

[ ]

Specify control flow rules

[ ]

Define global navigation

[ ]

Use routers to declaratively route control flow to activities based on an EL express

[ ]

Define the role of managed beans in task flows

[ ]

Explain the types of validation available in the user interface

Adding Functionality to Pages


[ ]

Internationalize the user interface so that the application can be used in multiple loc

[ ]

Use component facets to specify subordinate elements such as toolbars, headers a

[ ]

Implement a list of values (LOV) to enable users to select a value from a list

[ ]

Add a calendar component to an input date field to make it easy for users to select

[ ]

Use the table component to display structured data as a formatted table

[ ]

Employ the tree component to display hierarchical data

[ ]

Add icons and images to an application with ADF Faces output componentsE

[ ]

Create Search forms using the ADF query component

[ ]

Use ADF Data Visualization components to add charts, graphs, map etc to your JS

Implementing Navigation on Pages


[ ]

Implement command buttons and links

[ ]

Create menus - Menu bar

[ ]

Create menus - Popup

[ ]

Create menus - Context

[ ]

Use a navigation page

[ ]

Use breadcrumbs

[ ]

Create trains

Achieving the Required Layout


[ ]

Build complex page layouts with layout components

[ ]

Explain the role of ADF Faces skins

[ ]

Use dynamic page layout

Ensuring Reusability
[ ]

Identify the benefits of reusing components

[ ]

Create a resource catalog to enable sharing of resources within and across teams a

[ ]

Create ADF libraries to share components within and across teams and application

[ ]

Create a task flow template for reuse across different bounded task flows

[ ]

Create a page template for reuse across the JSF pages in an application to enable

[ ]

Create a declarative component for reuse in different pages of an application

[ ]

Create a page fragment to use in multiple pages of the application

[ ]

Employ a bounded task flow as a region in a JSF page

Passing Values between UI Elements


[ ]

Evaluate whether the data model contains opportunities to reduce the need for pass

[ ]

Use a managed bean to pass values between JSF pages

[ ]

Store values in memory-scoped attributes to hold and pass information between pa

[ ]

Use parameters to pass information to different parts of the application

Responding to Application Events


[ ]

Configure managed beans to contain code to respond to events

[ ]

Explain the different types of events

[ ]

Use phase listeners to listen for and respond to events

[ ]

Explain the role of an event listener

[ ]

Use action listeners

[ ]

Describe the sequence in which events and listeners are executed

[ ]

Describe the features of JDeveloper that support ADF Faces enhanced event hand

[ ]

Identify the server events fired by ADF Faces components/span>

[ ]

Use the contextual events framework to co-ordinate regions on a JSF page

Implementing Transactional Capabilities

[ ]

Explain ADF BC transaction handling

[ ]

Enable an ADF bounded task flow to run as a transaction

[ ]

Manage transaction exceptions on ADF bounded or unbounded task flows

[ ]

Define the response to the browser's Back button (for an ADF task flow that was al

[ ]

Implement Save for Later functionality

Implementing Security in ADF BC Applications


[ ]

Explain the need to secure applications

[ ]

Describe security aspects of an ADF BC application

[ ]

Add ADF Security Authentication to an application

[ ]

Add ADF Security Authorization to an application

[ ]

Use two approaches for granting users access to resources

[ ]

Prevent unauthorised access to the ADF BC Model

[ ]

Explain the types of application authentication at run time

[ ]

Use Expression Language to extend the default security capabilities of the framew

Explore the Project Structure and Core File Architecture


Check answers for this Section on http://download.oracle.com/docs/cd/E12839_01/web.1111/b31974/appendixa.htm
[ ]

Define File Structure of a Project

Oracle ADF File Hierarchy Overview for the Fusion Web App

[ ]

Examine how Metadata files are used to specify paramters, methods, and return va

[ ]

Define ADF Data Control and Databinding Files

A.2.2 Oracle ADF Data Binding Files


These standard XML configuration files for a Fusion web application appear in your

adfm.xml: This file lists the DataBindings.cpx file that are available in
Note:

The web.xml file no longer contains a databinding.cpx entry. This entry is now
See Section A.4, "adfm.xml" for more information.

DataBindings.cpx : This file contains the page map, page definitions re


For more information, see Section A.7, "DataBindings.cpx".

PageDef.xml: This is the page definition XML file. This file is created eac
For more information, see Section A.8, "pageNamePageDef.xml".

[ ]

Explore the ADF Faces and Web Configuration Files to know where task flows, pag

A.2.3 Web Configuration Files


These standard XML configuration files required for a JSF application appear in you

web.xml: Part of the application's configuration is determined by the conte


For more information about ADF data binding and JSF configuration options, see S
An ADF Faces application typically uses its own set of configuration files in addition

adfc-config.xml: The configuration file for an ADF unbounded task flo


For more information, see Section A.9, "adfc-config.xml".

task-flow-definition.xml: The configuration file for an ADF bounde


For more information, see Section A.10, "task-flow-definition.xml".

Check the related links for more


[ ]

Define Hierarchical Relationship of the XML Metadata files in a Web Application

Figure A-2 illustrates the hierarchical relationship of the XML metadata files that you
1.

When the first request for an ADF databound web page occurs, the servlet

2.
3.

The binding filter creates an empty binding context.


When a page is rendered, the binding filter asks the binding context to load

4.

The binding context creates the binding container by loading the file as re

5.

The adfm.xml file loads the DataBindings.cpx contents and finds the

6.

The binding container's prepareModel phase prepares and refreshes all

7.

An iterator binding gets executed by referencing the named method on the

8.

The binding container also creates the bindings defined in the section of t

9.

The web page references to ADF bindings through EL using the expressio

10.

The page pulls the available data from the bindings on the binding contain

Oracle ADF File Hierarchy and Syntax Diagram for an ADF B

Extend the ADF Business Components Framework


[ ]

Examine some general considerations when using ADF Business Components

[ ]

Extend the ADF Business Components (ADF BC) Framework to customize your ap

[ ]

Override the standard way data is committed to the database using a PL/SQL proc

[ ]

Design ADF Business comonents to avoid database contraint

Use ADF Business Components for Validation, Calculations and List of Values
[ ]

Build Cascading List of Values

[ ]

Enhance the Application with Calculations and Validation

[ ]

Create Validation for Foreign Keys

[ ]

Employ Groovy Expressions in Validations

Use Inheritance in the Business Domain Layer


[ ]

Reuse existing Bussiness Component designs by extending components

[ ]

Implement Supertype/Subtype designs using Entity Objects

[ ]

Create View Objects to access more than one table

ADF as a part of a Service Oriented Architecture


[ ]

Expose ADF Business Components as SDO for use in a SOA Process (BPEL)

[ ]

Create Rich User Interfaces that access data from a composite application

[ ]

Create events for ADF Business Components to trigger Enterprise Service Bus

[ ]

Use Service Data Objects to access heterogeneous data in a uniform way

Implement Data Binding Controls


[ ]

Define and Recognize ADF Model binding types

[ ]

Define ADF Model executables and how to use them

[ ]

Customize data-bound components within the page definition file to support applica

[ ]

Use Expression Language to connect page items to model components

[ ]

Determine how model components get transformed into Data Control Palette items

Practical Data Binding in Action


[ ]

Examine data binding in the JavaServer Faces (JSF) Page life cycle

[ ]

Define listeners and custom controllers to augment the ADFm life cycle

[ ]

Develop two different style queries: Query by example and Query using Google sty

[ ]

Develop two different types of list of allowable values: Static lists and Dynamic lists

Work with Managed Beans and JavaServer Faces


[ ]

Define key JavaServer Faces (JSF) terms

[ ]

Describe the JSF Architecture with Application Development Framework (ADF)

[ ]

Differentiate between Managed and Backing Beans

[ ]

In a JSF page, create and reference a Managed Bean to perform a custom method

[ ]

Set and use Managed Properties to store and retrieve user login information

[ ]

Use context object classes to access application messages, work with the Servlet A

ADF Faces Advanced Features


[ ]

Examine AJAX and ADF

[ ]

Employ Partial Page Rendering (PPR) on a JSF Page

[ ]

Enhance a page by creating input and output items using ADF Components

[ ]

Use page, panel and splitter componentss to design and build a JSF page

[ ]

Develop UI shell templates to incorporate company standard behavours, look and

[ ]

Display numerical data using Data Visualization components and Active Data Serv

Integrate with WebCenter


[ ]

Allow end users to perform runtime customization to their application pages

[ ]

Integrate ADF pages with Content Management systems to access file systems

[ ]

Add Web Center Services, like social networking and collaboration, to JSF/ADF pa

[ ]

Add reusable Portlets that provide dynamic view of data, into a JSF/ADF page

Customize the Application Look and Feel with Skins


[ ]

Use Firebug and Mozilla Developer Toolbar to build skins

[ ]

Explain how skin selectors work

[ ]

Build instance specific skins

[ ]

Develop a managed bean to change skin at runtime

You can also find ADF Interview info at oracle adf interview questions and answers - Part One.
Dig more/References:

Oracle JDeveloper 11g Handbook . This book by Duncan Mills really helps to answer many of
the above. If you are a newbie consider buying ( http://www.amazon.co.uk/Oracle-JDeveloper-11gHandbook-Development/dp/B001NLL53Q/ref=sr_1_4?ie=UTF8&s=digital-text&qid=1294509536&sr=84)

http://xmlandmore.blogspot.com

http://education.oracle.com/pls/web_prod-plq-dad/db_pages.getpage?
page_id=41&p_org_id=1001&lang=US&p_exam_id=1Z0_554#3

You might also like:


TROUBLESHOOTING: oracle.security.jps.JpsRuntimeException: Cannot read from policy store.
Possible Weblogic Interview questions
Fix Lov that does not return Secondary Attr values when Primary Value is the same
Hide a View Criteria item based on some condition
ADF Business Components System Properties

Oracle ADF 11g interview questions


Q : What are various components in ADF?
A : Oracle ADF has following components

ADF Business Components(Model)

ADF Faces (View)

ADF Taskflows(Controller)
Q : What is Oracle ADF?
A : Oracle ADF is an commercial java/j2ee framework, which is used to build
enterprise applications.
It is one of the most comprehensive and advanced framework in market for J2EE
Q : What are the advantages of using ADF?
A : Following are the advantages of using :


It supports Rapid Application Development.

It is based on MVC architecture

Declarative Approach (XML Driven)

Secure

Reduces maintenance cost and time

SOA Enabled
Q : What is the return type of Service Methods?
A : Service Methods can return Scalar or Primitive Data types.
Q : Can Service Methods return type Void?
A : Yes, Service Methods can Return type Void
Q : Can Service Methods return Complex Data types?
A : No, service methods can return only primitive/scalar data types.
Q : Which component in ADF BC manages transaction ?
A : Application Module, manages transaction.
Q : Can an entity object be based on two Database Objects(tables/views) or two
Webservices ?
A : No entity objects will always have one to one relationship with a database object
or web service.
Q : Where is that we write business rules/validations in ADF and why?
A : We should be writing validations at Entity Object level, because they provide
highest degree of reuse.
Q : What is Managed Bean?
A : Managed bean is a java class, which is initialized by JSF framework. It is primarily
used to hold view and controller logic. It is also used to execute java code to be
executed on a user action like Button Click.
Q : What are Backing Bean?
A : Backing beans are those managed beans which have 1:1 mapping with a page.
They have getters and setters
for all the components in the related page.
Q : What is a Taskflow?
A : Taskflow is the controller of an ADF application, it provides us an declarative
approach to define the control flow. It is used to define the navigation between
pages and various taskflow activites.
Q : What are the different types/categories of Taskflows ?
A : Taskflows are of two categories : Bounded and UnBounded.

Q : What is the difference between Bounded and UnBounded taskflows?


A : Differences between Bounded and UnBounded taskflows :

Bounded taskflows can be secured but Unbounded cant.

Bounded taskflows can accept parameter and return values but unbounded
taskflows dont support parameters

Bounded taskflows has a single entry point or a default activity but


unbounded taskflows have multiple entry points.

Bounded taskflows can be called from other bounded/unbounded taskflows


but unbounded cannot be called or reused.

Bounded taskflows support transactions unbounded dont


Q : What are the various access scopes supported by ADF?
A : ADF Faces supports the following scopes

Application Scope

Session Scope

PageFlow Scope

Request Scope

BackingBean Scope.
Q: What is databindings.cpx file in ADF?
A:
In ADF web application as soon as you drop a databound component on your page a
DataBindigs.cpx file gets created. You may wonder what it contains? So, here it is:
The DataBindings.cpx keeps track of the individual page definitions files used within
the project, as well as the DataControls mapping to such things as ADF Business
Components Application Modules.
Till Jdeveloper 10.1.3 release there was no way to have multiple DataBindings.cpx
files which was very much desirable as the project the size grows and being worked
by multiple teams. Jdeveloper 11g added this capability to have multiple
DataBindings.cpx files.
There is a new file in 11g called adfm.xml which is used to keep track of all such
DataBindings.cpx files in the system. So, when breaking your DataBindings.cpx you
need to take care to create an entry in the adfm.xml. You also need to make sure to
have unique application id attribute value for each entry.
Q: How to Skip Validation?
A: At view layer Keep immediate=true
Q : Describe life cycle of a ADF Page?
A : ADF page is an extension of JSF and has following phases in its lifecycle

1.
Initialize Context: In this phase the adf page initializes the LifecycleContext
with information that will be used during the Lifecycle.
2.
Prepare Model: In this phase ui model is prepared and initialized. In this
phase page parameters are set and methods in the executable section of the page
definition of the ADF page are executed.
3.
Apply Input Values: This phase handles the request parameters. The values
from the HTML are sent to the server and applied to the page binding in page
definitions.
4.
Validate Input Values: This phase validates the values that were built in the
Apply input values phase
5.
Update Model: Validated values supplied from user are sent to ADF business
components data model
6.
Validate Model Updates: In this phase the business components will validate
user supplied values.
7.
Invoke Application: This phase will process the ui events stack built during
the life cycle of page and also fire navigational events
8.
Prepare Render: This is the final phase where HTML code is generated from
the view tree.
Q: What is Association and Viewlink ?
A: They define the join or the link among EOs and VOs.Association defines link
between EOs.They can be considered as PrimaryKey/ForeignKey relationship
between tables.
The Viewlink is for a VO.It defines the Join conditions.A viewlink can be based on an
association or based on attributes,Basing viewlinks on associations have the same
advantage of entity cache and few more which are unveiled later.

Oracle ADF Interview Questions and


Answers/Tips
On January 14, 2011, in Oracle ADF, by scott

Here are a set of Interview Question and Answers/Tips for Oracle ADF :
Q : What is Oracle ADF?
A : Oracle ADF is an commercial java/j2ee framework, which is used to build enterprise
applications.
It is one of the most comprehensive and advanced framework in market for J2EE
Q : What are the advantages of using ADF?
A : Following are the advantages of using :

It supports Rapid Application Development.


It is based on MVC architecture
Declarative Approach (XML Driven)
Secure
Reduces maintenance cost and time
SOA Enabled

Q : What are various components in ADF?


A : Oracle ADF has following components

ADF Business Components(Model)


ADF Faces (View)
ADF Taskflows(Controller)

Q : What is the return type of Service Methods?


A : Service Methods can return Scalar or Primitive Data types.
Q : Can Service Methods return type Void?
A : Yes, Service Methods can Return type Void
Q : Can Service Methods return Complex Data types?
A : No, service methods can return only primitive/scalar data types.
Q : Which component in ADF BC manages transaction ?
A : Application Module, manages transaction.
Q : Can an entity object be based on two Database Objects(tables/views) or two
Webservices ?
A : No entity objects will always have one to one relationship with a database object or
web service.
Q : Where is that we write business rules/validations in ADF and why?
A : We should be writing validations at Entity Object level, because they provide highest
degree of reuse.
Q : What is Managed Bean?
A : Managed bean is a java class, which is initialized by JSF framework. It is primarily
used to hold view and controller logic. It is also used to execute java code to be
executed on a user action like Button Click.
Q : What are Backing Bean?
A : Backing beans are those managed beans which have 1:1 mapping with a page. They
have getters and setters
for all the components in the related page.

Q : What is difference between managed and backing beans?


A : Backing bean has 1:1 relation with page whereas managed beans can be used in
multiple pages.
Backing beans scope is limited to the page whereas managed beans can have other
scopes too.
Q : What is a Taskflow?
A : Taskflow is the controller of an ADF application, it provides us an declarative
approach to define the control flow. It is used to define the navigation between pages
and various taskflow activites.
Q : What are the different types/categories of Taskflows ?
A : Taskflows are of two categories : Bounded and UnBounded.
Q : What is the difference between Bounded and UnBounded taskflows?
A : Differences between Bounded and UnBounded taskflows :

Bounded taskflows can be secured but Unbounded cant.


Bounded taskflows can accept parameter and return values but unbounded
taskflows dont support parameters
Bounded taskflows has a single entry point or a default activity but unbounded
taskflows have multiple entry points.
Bounded taskflows can be called from other bounded/unbounded taskflows but
unbounded cannot be called or reused.
Bounded taskflows support transactions unbounded dont

Q : What are the various access scopes supported by ADF?


A : ADF Faces supports the following scopes

Application Scope
Session Scope
PageFlow Scope
Request Scope
BackingBean Scope.

Q : Describe life cycle of a ADF Page?


A : ADF page is an extension of JSF and has following phases in its lifecycle
1.

Initialize Context: In this phase the adf page initializes the LifecycleContext
with information that will be used during the Lifecycle.
2.
Prepare Model: In this phase ui model is prepared and initialized. In this phase
page parameters are set and methods in the executable section of the page
definition of the ADF page are executed.

3.

4.
5.
6.
7.
8.

Apply Input Values: This phase handles the request parameters. The values
from the HTML are sent to the server and applied to the page binding in page
definitions.
Validate Input Values: This phase validates the values that were built in the
Apply input values phase
Update Model: Validated values supplied from user are sent to ADF business
components data model
Validate Model Updates: In this phase the business components will validate
user supplied values.
Invoke Application: This phase will process the ui events stack built during the
life cycle of page and also fire navigational events
Prepare Render: This is the final phase where HTML code is generated from
the view tree.

Q : What is PPR and how do you enable Partial Page Rendering(PPR)?


A : PPR is a feature supported by ADF Faces, using which we can render a small portion
of a HTML Page, without refreshing the complete page.
It is enabled by.

Setting AutoSubmit property to true on the triggering element.


Setting the PartialTriggers property of target component to refer to component
id of the triggering element.

VIDEO lINKS:
http://myexpwithoracleadf.blogspot.in/2013/03/oracle-adf-useful-training-videoppt.html
http://jdeveloperandadf.blogspot.in/2011/02/oracle-adf-interview-questions-and.html
http://myexpwithoracleadf.blogspot.in/2013/04/oracle-adf-interview-questionand.html
http://myexpwithoracleadf.blogspot.in/2013/05/oracle-adf-useful-links-topicwise.html
http://download.oracle.com/otn_hosted_doc/jdeveloper/1012/bc4j/intro/bc_aeo.html

http://myexpwithoracleadf.blogspot.in/2013/03/oracle-adf-useful-trainingvideo-ppt.html
http://amit-adf-work.blogspot.in/2013/01/oracle-adf-interview-question-part1.html
http://adfnote.blogspot.in/2013/02/oracle-adf-interview-questions-and_10.html

http://nitesh-java.blogspot.in/2012/09/oracle-adf-11g-interview-questions.html
http://smconsultants.in/2013/03/interview-questions-and-answer-webcenter-andadf.html
http://jdeveloperandadf.blogspot.in/2011/02/oracle-adf-interview-questionsand.html
http://spotlearning.wordpress.com/2011/07/15/adf-11g-interview-questions/
http://www.techartifact.com/blogs/2011/08/oracle-adf-interview-question-part2.html
http://oracleadfinterviewquestions.blogspot.in/2013/03/basic-oracle-adfinterview-question-and.html
http://www.johnbrunswick.com/2011/05/25-great-oracle-adf-resources/
http://www.youtube.com/watch?v=OMGvk2tsJgI
http://jwebcenter.blogspot.in/2011/06/step-by-step-learning-of-oracle-adf11g.html
http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/layouts/layouts.
html
http://download.oracle.com/otn_hosted_doc/jdeveloper/11gdemos/Forms_Redevelopm
ent_ADF/Forms_Redevelopment_ADF.html
http://www.slideshare.net/rbg14952/oracle-adf11g-tutorial
http://www.youtube.com/watch?v=cH7Ol9_oHfM
http://www.oracle.com/technetwork/developer-tools/adf/overview/adfessentials1719844.html
http://www.slideshare.net/rbg14952/oracle-adf11g-tutorial
http://docs.oracle.com/cd/E16162_01/web.1112/e16182/toc.htm
https://blogs.oracle.com/prajkumar/entry/adf_developer_guide
http://www.veriton.co.uk/download/Practical_ADF_Application_Deployment.pdf
http://www.youtube.com/watch?v=OMGvk2tsJgI
http://www.slideshare.net/Tektrainings/best-oracle-adf-online-training-realtime-expert
http://www.punetrainings.com/best-oracle-adf-corporate-training-real-timescenarios-online-fastrack-classrooms-by-9-years-industry-expert-and-6-yearsonsite-experience-www-kyathitechnologies-com-tc67289.html
http://stackoverflow.com/questions/6178164/can-anyone-suggest-a-greattutorial-for-adf-with-jdeveloper-please
http://people.cis.ksu.edu/~hankley/d764/tut07/Surapaneni_ADF_MasterDetail.pdf

Das könnte Ihnen auch gefallen