Go to main content
1/76
Contents
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
What's New in This Guide for Release 12c (12.2.1.1.0)
New and Changed Features for Release 12c (12.2.1.1.0)
Other Significant Changes in this Document for Release 12c (12.2.1.1.0)
Part I Getting Started with Fusion Web Applications
1
Introduction to Building Fusion Web Applications with Oracle ADF
1.1
Introduction to Oracle ADF
1.2
Oracle ADF Architecture
1.3
Overview of Building an Application with Oracle ADF
1.3.1
Creating an Application Workspace
1.3.2
Modeling with Database Object Definitions
1.3.3
Creating Use Cases
1.3.4
Designing Application Control and Navigation Using ADF Task Flows
1.3.5
Identifying Shared Resources
1.3.6
Creating a Data Model to Access Data with ADF Business Components
1.3.6.1
Creating a Layer of Business Domain Objects for Tables
1.3.6.2
Building the Business Services
1.3.6.3
Testing and Debugging Business Services with the Oracle ADF Model Tester
1.3.7
Implementing the User Interface with JSF
1.3.8
Data Binding with ADF Model
1.3.9
Validation and Error Handling
1.3.10
Adding Security
1.3.11
Testing and Debugging the Web Client Application
1.3.12
Refactoring Application Artifacts
1.3.13
Deploying a Fusion Web Application
1.3.14
Integrating a Fusion Web Application
1.4
Working Productively in Teams
1.4.1
Enforcing Standards
1.4.2
Using a Source Control System
1.5
Generation of Complete Web Tier Using Oracle JHeadstart
1.6
Other Resources for Learning Oracle ADF
2
Introduction to the ADF Sample Application
2.1
About the Summit Sample Applications for Oracle ADF
2.2
Setting Up the Summit Sample Applications for Oracle ADF
2.2.1
How to Download the Application Resources
2.2.2
How to Install the Summit ADF Schema
2.2.3
What Happens When You Install the Summit ADF Schema
2.2.4
How to Create the Database Connection for Summit Sample Applications for Oracle ADF
2.3
Running the Core Summit ADF Sample Application in the SummitADF Workspace
2.3.1
How to Run the Core Summit ADF Sample Application
2.3.2
Taking a Look at the Sample Application in the SummitADF Workspace
2.3.2.1
Browsing the Application
2.3.2.1.1
Browsing the Customers List
2.3.2.1.2
Searching for Customers
2.3.2.1.3
Viewing Customer Details
2.3.2.1.4
Viewing Order Details
2.3.2.2
The Ordering Process
2.4
Running the Standalone Samples from the SummitADF_Examples Workspace
2.4.1
How to Run the Summit ADF Standalone Sample Applications
2.4.1.1
Running the Standalone Sample Applications From a Java Test Client
2.4.1.2
Running the Standalone Applications Without a Test Client
2.4.2
Overview of the Summit ADF Standalone Sample Applications
2.5
Running the Sample Application in the SummitADF_TaskFlows Workspace
2.5.1
How to Run the Summit Sample Application for ADF Task Flows
2.5.2
Overview of the Summit Sample Application for ADF Task Flows
2.6
Running the Standalone Samples in the SummitADF_DVT Workspace
2.6.1
Overview of the Summit ADF DVT Standalone Samples
2.6.2
How to Run the Summit ADF DVT Sample Application Pages
Part II Building Your Business Services
3
Getting Started with ADF Business Components
3.1
About ADF Business Components
3.1.1
ADF Business Components Use Cases and Examples
3.1.2
Additional Functionality for ADF Business Components
3.2
Creating the ADF Business Components Data Model Project
3.2.1
How to Create a Data Model Project for ADF Business Components
3.2.2
How to Add an ADF Business Components Data Model Project to an Existing Application
3.2.3
How to Initialize the Data Model Project With a Database Connection
3.2.4
How to Change the Data Model Project to Work With Offline Database Objects
3.2.5
What You May Need to Know About Application Server or Database Independence
3.2.6
What You May Need to Know About ADF Business Components Data Types
3.2.7
What You May Need to Know About Displaying Numeric Values
3.2.8
How to Customize Model Project Properties for ADF Business Components
3.2.9
How to Customize ADF Business Components Preferences
3.3
Creating and Editing Business Components
3.3.1
How to Create New Components Using Wizards
3.3.2
How to Create New Components Using the Context Menu
3.3.3
What Happens When You Create Business Components
3.3.4
What You May Need to Know About the Model Project Organization
3.3.5
What You May Need to Know About Package Naming Conventions
3.3.6
What You May Need to Know About Renaming Components
3.3.7
How to Edit Components Using the Component Overview Editor
3.4
Testing, Refactoring, and Visualizing Business Components
3.4.1
How to Use the Oracle ADF Model Tester
3.4.2
What You May Need to Know About Obtaining Oracle ADF Source Code
3.4.3
How to Find Business Component Usages in the Data Model Project
3.4.4
How to Explorer Business Component Dependencies in the Data Model Project
3.4.5
How to Refactor Business Components in the Data Model Project
3.4.6
How to Refactor Offline Database Objects and Update Business Components
3.4.7
How to Display Related Business Components Using Diagrams
3.4.8
What You May Need to Know About Using UML Diagrams
3.5
Customizing Business Components
3.5.1
How to Generate Business Component Java Subclasses
3.5.2
How to Expose Business Component Methods to Clients
3.5.3
What Happens When You Generate Custom Classes
3.5.4
What You May Need to Know About Custom Interface Support
3.5.5
What You May Need to Know About Generic Versus Strongly Typed APIs
3.6
Using Groovy Scripting Language With Business Components
3.6.1
How to Enter Groovy Expressions on Business Components
3.6.2
What Happens When You Enter Expressions
3.6.3
What You May Need to Know About Groovy Project Settings
3.6.4
What You May Need to Know About Where Groovy Expressions Can Be Used
3.6.5
What You May Need to Know About Groovy Expression Syntax
3.6.5.1
What You May Need to Know About Referencing Business Components in Groovy Expressions
3.6.5.2
What You May Need to Know About Untrusted Groovy Expressions
3.6.5.3
What You May Need to Know About Referencing Custom Business Components Methods and Attributes in Groovy Expressions
3.6.5.3.1
Referencing Members of the Same Business Component
3.6.5.3.2
Referencing Members of Other Business Components
3.6.5.4
What You May Need to Know About Manipulating Business Component Attribute Values in Groovy Expressions
3.6.6
What You May Need to Know About Migrating Groovy Snippets
4
Creating a Business Domain Layer Using Entity Objects
4.1
About Entity Objects
4.1.1
Entity Object Use Cases and Examples
4.1.2
Additional Functionality for Entity Objects
4.2
Creating Entity Objects and Associations
4.2.1
How to Create Multiple Entity Objects and Associations from Existing Tables
4.2.2
How to Create Single Entity Objects Using the Create Entity Wizard
4.2.3
What Happens When You Create Entity Objects and Associations from Existing Tables
4.2.3.1
Foreign Key Associations Generated When Entity Objects Are Derived from Tables
4.2.3.2
Entity Object Key Generated When a Table Has No Primary Key
4.2.4
What Happens When You Create an Entity Object for a Synonym or View
4.2.5
How to Edit an Existing Entity Object or Association
4.2.6
How to Create Database Tables from Entity Objects
4.2.7
How to Synchronize an Entity with Changes to Its Database Table
4.2.7.1
Removing an Attribute Associated with a Dropped Column
4.2.7.2
Addressing a Data Type Change in the Underlying Table
4.2.8
How to Store Data Pertaining to a Specific Point in Time
4.2.9
What Happens When You Create Effective Dated Entity Objects
4.2.10
What You May Need to Know About Creating Entities from Tables
4.3
Creating and Configuring Associations
4.3.1
How to Create an Association
4.3.2
What Happens When You Create an Association
4.3.3
How to Change Entity Association Accessor Names
4.3.4
How to Rename and Move Associations to a Different Package
4.3.5
What You May Need to Know About Using a Custom View Object in an Association
4.3.6
What You May Need to Know About Composition Associations
4.4
Creating a Diagram of Entity Objects for Your Business Layer
4.4.1
How to Show Entity Objects in a Business Components Diagram
4.4.2
What Happens When You Create an Entity Diagram
4.4.3
What You May Need to Know About the XML Component Descriptors
4.4.4
What You May Need to Know About Changing the Names of Components
4.5
Defining Property Sets
4.5.1
How to Define a Property Set
4.5.2
How to Apply a Property Set
4.6
Defining Attribute Control Hints for Entity Objects
4.6.1
How to Add Attribute Control Hints
4.6.2
What Happens When You Add Attribute Control Hints
4.6.3
About Formatters and Masks
4.6.4
How to Define Format Masks
4.7
Working with Resource Bundles
4.7.1
How to Set Message Bundle Options
4.7.2
How to Use Multiple Resource Bundles
4.7.3
How to Internationalize the Date Format
4.8
Defining Business Logic Groups
4.8.1
How to Create a Business Logic Group
4.8.2
How to Create a Business Logic Unit
4.8.3
How to Add Logic to a Business Logic Unit
4.8.4
How to Override Attributes in a Business Logic Unit
4.8.5
What Happens When You Create a Business Logic Group
4.8.6
What Happens at Runtime: How Business Logic Groups Are Invoked
4.9
Configuring Runtime Behavior Declaratively
4.9.1
How to Configure Declarative Runtime Behavior
4.9.2
What Happens When You Configure Declarative Runtime Behavior
4.9.3
How to Use Update Batching
4.10
Setting Attribute Properties
4.10.1
How to Set Database and Java Data Types for an Entity Object Attribute
4.10.2
How to Indicate Data Type Length, Precision, and Scale
4.10.3
How to Control the Updatability of an Attribute
4.10.4
How to Make an Attribute Mandatory
4.10.5
How to Define the Primary Key for the Entity
4.10.6
How to Define a Static Default Value
4.10.7
How to Define a Default Value Using an Expression
4.10.8
What Happens When You Create a Default Value Using a Groovy expression
4.10.9
How to Synchronize with Trigger-Assigned Values
4.10.10
How to Get Trigger-Assigned Primary Key Values from a Database Sequence
4.10.11
What You May Need to Know About Changing the Value of Primary Keys
4.10.12
How to Protect Against Losing Simultaneously Updated Data
4.10.13
How to Track Created and Modified Dates Using the History Column
4.10.14
How to Configure Composition Behavior
4.10.14.1
Orphan-Row Protection for New Composed Entity Objects
4.10.14.2
Ordering of Changes Saved to the Database
4.10.14.3
Cascade Update of Composed Details from Refresh-On-Insert Primary Keys
4.10.14.4
Cascade Delete Support
4.10.14.5
Cascade Update of Foreign Key Attributes When Primary Key Changes
4.10.14.6
Locking of Composite Parent Entity Objects
4.10.14.7
Using Batch Update with Composition Entity Objects
4.10.14.8
Updating of Composing Parent History Attributes
4.10.15
How to Set the Discriminator Attribute for Entity Object Inheritance Hierarchies
4.10.16
How to Define Alternate Key Values
4.10.17
What Happens When You Define Alternate Key Values
4.10.18
What You May Need to Know About Alternate Key Values
4.11
Adding Transient and Calculated Attributes to an Entity Object
4.11.1
How to Add a Transient Attribute
4.11.2
What Happens When You Add a Transient Attribute
4.11.3
How to Base a Transient Attribute on a Groovy Expression
4.11.4
What Happens When You Base a Transient Attribute on a Groovy Expression
4.11.5
How to Add Java Code in the Entity Class to Perform Calculation
4.12
Creating Business Events
4.12.1
Introducing Event Definitions
4.12.2
Introducing Event Points
4.12.3
What You May Need to Know About Event Points
4.12.4
How to Create a Business Event
4.12.5
What Happens When You Create a Business Event
4.12.6
What You May Need to Know About Payload
4.12.7
How to Define a Publication Point for a Business Event
4.12.8
How to Subscribe to Business Events
4.13
Generating Custom Java Classes for an Entity Object
4.13.1
How to Generate Custom Classes
4.13.2
What Happens When You Generate Custom Classes
4.13.3
What Happens When You Generate Entity Attribute Accessors
4.13.4
How to Navigate to Custom Java Files
4.13.5
What You May Need to Know About Custom Java Classes
4.13.5.1
Framework Base Classes for an Entity Object
4.13.5.2
Safely Adding Code to the Custom Component File
4.13.5.3
Configuring Default Java Generation Preferences
4.13.5.4
Attribute Indexes and InvokeAccessor Generated Code
4.13.6
Programmatic Example for Comparison Using Custom Entity Class References
4.14
Working Programmatically with Entity Objects and Associations
4.14.1
How to Find an Entity Object by Primary Key
4.14.2
How to Access an Associated Entity Using the Accessor Attribute
4.14.3
How to Update or Remove an Existing Entity Row
4.14.4
How to Create a New Entity Row
4.14.5
Assigning the Primary Key Value Using an Oracle Sequence
4.14.6
How to Update a Deleted Flag Instead of Deleting Rows
4.14.6.1
Updating a Deleted Flag When a Row Is Removed
4.14.6.2
Forcing an Update DML Operation Instead of a Delete
4.14.7
How to Control Entity Posting Order to Prevent Constraint Violations
4.14.7.1
Default Post Processing Order
4.14.7.2
Compositions and Default Post Processing Order
4.14.7.3
Overriding postChanges() to Control Post Order
4.14.7.3.1
Observing the Post Ordering Problem First Hand
4.14.7.3.2
Forcing the Department to Post Before the Employee
4.14.7.3.3
Associations Based on DBSequence-Valued Primary Keys
4.14.7.3.4
Refreshing References to DBSequence-Assigned Foreign Keys
4.14.8
Advanced Entity Association Techniques
4.14.8.1
Modifying Association SQL Clause to Implement Complex Associations
4.14.8.2
Exposing View Link Accessor Attributes at the Entity Level
4.14.9
What You May Need to Know About Custom Entity Object Methods
4.15
Working Programmatically with Custom Data Sources and the Framework Base Class ProgrammaticEntityImpl
4.15.1
How to Create an Entity Object Class Extending ProgrammaticEntityImpl
4.15.2
Key Framework Methods to Override for ProgrammaticEntityImpl Based Entity Objects
4.16
Creating Custom, Validated Data Types Using Domains
4.16.1
How to Create a Domain
4.16.2
What Happens When You Create a Domain
4.16.3
What You May Need to Know About Domains
4.16.3.1
Domains as Entity and View Object Attributes
4.16.3.2
DataCreationException in Custom validate() Method
4.16.3.3
String Domains and String Value Aggregation
4.16.3.4
Simple Domains and Built-In Types
4.16.3.5
Simple Domains As Immutable Java Classes
4.16.3.6
Creating Domains for Oracle Object Types When Useful
4.16.3.7
Domains Packaged in the Common JAR
4.16.3.8
Custom Domain Properties and Attributes in Entity and View Objects
4.16.3.9
Inherited Restrictive Properties of Domains in Entity and View Objects
4.17
Creating New History Types
4.17.1
How to Create New History Types
4.17.2
How to Remove a History Type
4.18
Basing an Entity Object on a PL/SQL Package API
4.18.1
How to Create an Entity Object Based on a View
4.18.2
What Happens When You Create an Entity Object Based on a View
4.18.3
How to Centralize Details for PL/SQL-Based Entities into a Base Class
4.18.4
How to Implement the Stored Procedure Calls for DML Operations
4.18.5
How to Add Select and Lock Handling
4.18.5.1
Updating PLSQLEntityImpl Base Class to Handle Lock and Select
4.18.5.2
Implementing Lock and Select for the Product Entity
4.18.5.3
Refreshing the Entity Object After RowInconsistentException
4.19
Basing an Entity Object on a Join View or Remote DBLink
4.19.1
How to Disable the Use of the RETURNING Clause
4.19.2
What Happens at Runtime: Refresh Behavior With Disabled RETURNING Clause
4.20
Using Inheritance in Your Business Domain Layer
4.20.1
Understanding When Inheritance Can Be Useful
4.20.2
How to Create Entity Objects in an Inheritance Hierarchy
4.20.2.1
Identifying the Discriminator Column and Distinct Values
4.20.2.2
Identifying the Subset of Attributes Relevant to Each Kind of Entity
4.20.2.3
Creating the Base Entity Object in an Inheritance Hierarchy
4.20.2.4
Creating a Subtype Entity Object in an Inheritance Hierarchy
4.20.3
How to Add Methods to Entity Objects in an Inheritance Hierarchy
4.20.3.1
Adding Methods Common to All Entity Objects in the Hierarchy
4.20.3.2
Overriding Common Methods in a Subtype Entity Object
4.20.3.3
Adding Methods Specific to a Subtype Entity Object
4.20.4
What You May Need to Know About Using Inheritance
4.20.4.1
Introducing a New Base Entity
4.20.4.2
Subtype Entity Objects and the findByPrimaryKey() Method
4.20.4.3
View Objects with Polymorphic Entity Usages
5
Defining SQL Queries Using View Objects
5.1
About View Objects
5.1.1
View Object Use Cases and Examples
5.1.2
Additional Functionality for View Objects
5.2
Populating View Object Rows from a Single Database Table
5.2.1
How to Create an Entity-Based View Object
5.2.1.1
Creating a View Object with All the Attributes of an Entity Object
5.2.1.2
Creating an Entity-Based View Object from a Single Table
5.2.2
What Happens When You Create an Entity-Based View Object
5.2.3
What You May Need to Know About Non-Updatable View Objects
5.2.4
How to Edit a View Object
5.2.4.1
Overriding the Inherited Properties from Underlying Entity Object Attributes
5.2.4.2
Customizing View Object Attribute Display in the Overview Editor
5.2.4.3
Modifying the Order of Attributes in the View Object Source File
5.2.5
How to Show View Objects in a Business Components Diagram
5.3
Working with View Objects in Declarative SQL Mode
5.3.1
How to Create Declarative SQL View Objects
5.3.2
How to Filter Declarative SQL-Based View Objects When Table Joins Apply
5.3.3
How to Filter Master-Detail Related View Objects with Declarative SQL Mode
5.3.4
How to Support Programmatic Execution of Declarative SQL Mode View Objects
5.3.4.1
Forcing Attribute Queries for All Declarative SQL Mode View Objects
5.3.4.2
Forcing Attribute Queries for Specific Declarative SQL Mode View Objects
5.3.5
What Happens When You Create a View Object in Declarative SQL Mode
5.3.6
What Happens at Runtime: Declarative SQL Mode Queries
5.3.7
What You May Need to Know About Working Programmatically with Declarative SQL Mode View Objects
5.4
Creating View Objects Populated With Static Data
5.4.1
How to Create Static Data View Objects with Data You Enter
5.4.2
How to Create Static Data View Objects with Data You Import
5.4.3
What Happens When You Create a Static Data View Object
5.4.4
How to Edit Static Data View Objects
5.4.5
What You May Need to Know About Static Data View Objects
5.5
Adding Calculated and Transient Attributes to a View Object
5.5.1
How to Add a SQL-Calculated Attribute
5.5.2
What Happens When You Add a SQL-Calculated Attribute
5.5.3
What You May Need to Know About SQL-Calculated Attributes
5.5.4
How to Add a Transient Attribute
5.5.5
How to Add a Transient Attribute Defined by an Entity Object
5.5.6
How to Add a Validation Rule to a Transient Attribute
5.5.7
What Happens When You Add a Transient Attribute
5.5.8
What You May Need to Know About Transient Attributes and Calculated Values
5.5.9
What You May Need to Know About View Object Queries with Primary Keys Defined by Transient Attributes
5.6
Limiting View Object Rows Using Effective Date Ranges
5.6.1
How to Create a Date-Effective View Object
5.6.2
How to Create New View Rows Using Date-Effective View Objects
5.6.3
How to Update Date-Effective View Rows
5.6.4
How to Delete Date-Effective View Rows
5.6.5
What Happens When You Create a Date-Effective View Object
5.6.6
What You May Need to Know About Date-Effective View Objects and View Links
5.7
Working with Multiple Tables in Join Query Results
5.7.1
How to Create Joins for Entity-Based View Objects
5.7.2
How to Modify a Default Join Clause to Be an Outer Join When Appropriate
5.7.3
How to Select Additional Attributes from Reference Entity Usages
5.7.4
How to Remove Unnecessary Key Attributes from Reference Entity Usages
5.7.5
How to Hide the Primary Key Attributes from Reference Entity Usages
5.7.6
What Happens When You Reference Multiple Entities in a View Object
5.7.7
What You May Need to Know About Outer Joins
5.7.8
What You May Need to Know About Entity Based Joins and Entity Cardinality
5.7.9
What You May Need to Know About Entity Based Joins and Participates in Row Delete
5.7.10
What You May Need to Know About Composition Associations and Joins
5.7.11
How to Create Joins for Read-Only View Objects
5.7.12
How to Test the Join View
5.7.13
How to Use the SQL Statement Dialog with Read-Only View Objects
5.8
Working with View Objects and Custom SQL
5.8.1
How to Create a Custom SQL Mode View Object
5.8.2
What Happens When You Create a Custom SQL View Object
5.8.3
How to Customize SQL Statements in Custom SQL Mode
5.8.4
What Happens When You Enable Custom SQL Mode
5.8.5
What You May Need to Know About Custom SQL Mode
5.8.5.1
Attribute Names for Calculated Expressions in Custom SQL Mode
5.8.5.2
Attribute Mapping Assistance in Custom SQL Mode
5.8.5.3
Custom Edits in Custom SQL Mode
5.8.5.4
Changes to SQL Expressions in Custom SQL Mode
5.8.5.5
SQL Calculations that Change Entity Attributes in Custom SQL Mode
5.8.5.6
Formatting of the SQL Statement in Custom SQL Mode
5.8.5.7
Query Clauses in Custom SQL Mode
5.8.5.8
Inline View Wrapping at Runtime
5.8.5.9
Custom SQL Affect on Dependent Objects
5.8.5.10
Custom SQL Affect on View Object Query Auto Refresh
5.8.5.11
SQL Types of Attributes in Custom SQL Mode
5.9
Working with Named View Criteria
5.9.1
How to Create Named View Criteria Declaratively
5.9.2
What Happens When You Create a Named View Criteria
5.9.3
What You May Need to Know About Bind Variables in View Criteria
5.9.4
What You May Need to Know About Nested View Criteria Expressions
5.9.5
How to Set User Interface Hints on View Criteria to Support Search Forms
5.9.6
How to Test View Criteria Using the Oracle ADF Model Tester
5.9.7
How to Use View Criteria to Filter a View Object for the Current User
5.9.8
How to Create View Criteria Programmatically
5.9.9
What Happens at Runtime: How the View Criteria Is Applied to a View Object
5.9.10
What You May Need to Know About the View Criteria API
5.9.10.1
Referencing Attribute Names in View Criteria
5.9.10.2
Referencing Bind Variables in View Criteria
5.9.10.3
Searching for a Row Whose Attribute Is NULL
5.9.10.4
Searching for Rows Using a Date Comparison
5.9.10.5
Searching for Rows Whose Attribute Value Matches a Value in a List
5.9.10.6
Searching Case-Insensitively
5.9.10.7
Clearing View Criteria in Effect
5.9.10.8
Altering Compound Search Conditions Using Multiple View Criteria
5.9.11
What You May Need to Know About Query-by-Example Criteria
5.10
Working with Bind Variables
5.10.1
How to Add View Criteria Bind Variables to a View Object Definition
5.10.2
How to Add WHERE Clause Bind Variables to a View Object Definition
5.10.3
What Happens When You Add Named Bind Variables
5.10.4
How to Test Named Bind Variables
5.10.5
How to Add a WHERE Clause with Named Bind Variables at Runtime
5.10.6
How to Set Existing WHERE Clause Bind Variable Values at Runtime
5.10.7
What Happens at Runtime: Dynamic Read-Only View Object WHERE Clause
5.10.8
What You May Need to Know About Named Bind Variables
5.10.8.1
Errors Related to the Names of Bind Variables
5.10.8.2
Default Value of NULL for Bind Variables
5.11
Working with Row Finders
5.11.1
How to Add Row Finders to a View Object Definition
5.11.2
What Happens When You Define a Row Finder
5.11.3
What You May Need to Know About View Criteria and Row Finder Usage
5.11.4
Programmatically Invoking the Row Finder
5.12
Working with List of Values (LOV) in View Object Attributes
5.12.1
How to Define a Single LOV-Enabled View Object Attribute
5.12.2
How to Define Cascading Lists for LOV-Enabled View Object Attributes
5.12.2.1
Creating a Data Source View Object to Control the Cascading List
5.12.2.2
Creating a View Accessor to Filter the Cascading List
5.12.3
How to Specify Multiple LOVs for a Single LOV-Enabled View Object Attribute
5.12.4
How to Define an LOV to Display a Reference Attribute
5.12.5
How to Set User Interface Hints on a View Object LOV-Enabled Attribute
5.12.6
How to Handle Date Conversion for List Type UI Components
5.12.7
How to Automatically Refresh the View Object of the View Accessor
5.12.8
How to Test LOV-Enabled Attributes Using the Oracle ADF Model Tester
5.12.9
What Happens When You Define an LOV for a View Object Attribute
5.12.10
What Happens at Runtime: How an LOV Queries the List Data Source
5.12.11
What You May Need to Know About Lists
5.12.11.1
Inheritance of AttributeDef Properties from Parent View Object Attributes
5.12.11.2
Using Validators to Validate Attribute Values
5.13
Defining UI Hints for View Objects
5.13.1
How to Add Attribute-Specific UI Hints
5.13.2
How to Add View Object UI Hints
5.13.3
How to Access UI Hints Using EL Expressions
5.13.4
What Happens When You Add UI Hints
5.13.5
How to Define UI Category Hints
5.13.6
What Happens When You Assign Attributes to UI Categories
5.13.7
What You May Need to Know About Resource Bundles
6
Defining Master-Detail Related View Objects
6.1
About Master-Detail View Objects
6.1.1
Master-Detail View Object Use Cases and Examples
6.1.2
Additional Functionality for View Objects
6.2
Working with Multiple Tables in a Master-Detail Hierarchy
6.2.1
How to Create a Master-Detail Hierarchy Based on Entity Associations
6.2.2
How to Create a Master-Detail Hierarchy Based on View Objects Alone
6.2.3
What Happens When You Create Master-Detail Hierarchies Using View Links
6.2.4
How to Enable Active Master-Detail Coordination in the Data Model
6.2.5
How to Test Master-Detail Coordination
6.2.6
How to Access the Detail Collection Using the View Link Accessor
6.2.6.1
Accessing Attributes of Row by Name
6.2.6.2
Programmatically Accessing a Detail Collection Using the View Link Accessor
6.2.6.3
Optimizing View Link Accessor Access to Display Master-Detail Data
6.2.7
What You May Need to Know About View Link Accessors Versus Data Model View Link Instances
6.2.7.1
Enabling a Dynamic Detail Row Set with Active Master-Detail Coordination
6.2.7.2
Programmatically Accessing a Detail Row Set Using View Link Accessor Attributes
6.2.7.3
What Happens At Runtime: When You Combine the Programmatic Access Using View LInk Accessors
6.2.8
How to Create a Master-Detail Hierarchy With Multiple Masters
6.2.9
How to Create a Master-Detail Hierarchy for Entity Objects Consisting of Transient-Only Attributes
6.2.10
How to Find Rows of a Master View Object Using Row Finders
6.2.10.1
Defining a Row Finder on the Master View Object
6.2.10.2
What Happens When You Create a Row Finder for a Master View Object
6.3
Working with a Single Table in a Recursive Master-Detail Hierarchy
6.3.1
How to Create a Recursive Master-Detail Hierarchy for an Entity-Based View Object
6.3.1.1
Creating an Association-Based, Self-Referential View Link
6.3.1.2
Exposing the View Instance and Filter with a View Criteria
6.3.2
What Happens When You Create a Recursive Master-Detail Hierarchy
6.4
Working with Master-Detail Related View Objects in View Criteria
7
Defining Polymorphic View Objects
7.1
About Polymorphic View Objects
7.1.1
Polymorphic Entity Usages and Polymorphic View Rows Usages
7.2
Working with Polymorphic Entity Usages
7.2.1
How to Create a Subtype View Object with a Polymorphic Entity Usage
7.2.2
What Happens When You Create a Subtype View Object with a Polymorphic Entity Usage
7.2.3
What You May Need to Know About Polymorphic Entity Usages
7.2.3.1
Your Query Must Limit Rows to Expected Entity Subtypes
7.2.3.2
Exposing Selected Entity Methods in View Rows Using Delegation
7.2.3.3
Creating New Rows With the Desired Entity Subtype
7.3
Working with Polymorphic View Rows
7.3.1
How to Create a View Object with Polymorphic View Rows
7.3.2
What Happens When You Create a View Object With Polymorphic View Rows
7.3.3
What You May Need to Know About Polymorphic View Rows
7.3.3.1
Selecting Subtype-Specific Attributes in Extended View Objects
7.3.3.2
Delegating to Subtype-Specific Methods After Overriding the Entity Usage
7.3.3.3
Working with Different View Row Interface Types in Client Code
7.4
What You May Need to Know About the Discriminator Attribute
7.5
Updating the Application Module to Expose Subtype Usages
7.5.1
How to Expose Subtype Usages on the Data Model
7.5.2
What Happens When You Add Subtype View Objects to the Application Module
8
Testing View Instance Queries
8.1
About View Instance Queries
8.1.1
View Instance Use Cases and Examples
8.1.2
Additional Functionality for Testing View Instances
8.2
Creating an Application Module to Test View Instances
8.2.1
How to Create the Application Module with Individual View Object Instances
8.2.2
How to Create the Application Module with Master-Detail View Object Instances
8.3
Testing View Object Instances Using the Oracle ADF Model Tester
8.3.1
How to Run the Oracle ADF Model Tester
8.3.2
How to Run the Oracle ADF Model Tester Using Configurations
8.3.3
How to Test Language Message Bundles and UI Hints
8.3.4
How to Test Entity-Based View Objects Interactively
8.3.5
How to Update the Oracle ADF Model Tester to Display Project Changes
8.3.6
What Happens When You Use the Oracle ADF Model Tester
8.3.7
How to Simulate End-User Interaction in the Oracle ADF Model Tester
8.3.7.1
Testing Master-Detail Coordination
8.3.7.2
Testing UI Hints
8.3.7.3
Testing Business Domain Layer Validation
8.3.7.4
Testing View Objects That Reference Entity Usages
8.3.7.5
Testing Row Creation and Default Value Generation
8.3.7.6
Testing That New Detail Rows Have Correct Foreign Keys
8.3.8
How to Test Multiuser Scenarios in the Oracle ADF Model Tester
8.3.9
How to Customize Configuration Options Before Running the Tester
8.3.10
How to Enable ADF Business Components Debug Diagnostics
8.3.11
What Happens at Runtime: How View Objects and Entity Objects Cooperate
8.3.11.1
What Happens at Runtime: After a View Object Executes Its Query
8.3.11.2
What Happens at Runtime: After a View Row Attribute Is Modified
8.3.11.3
What Happens at Runtime: After a Foreign Key Attribute is Changed
8.3.11.4
What Happens at Runtime: After a Transaction is Committed
8.3.11.5
What Happens at Runtime: After a View Object Requeries Data
8.3.11.5.1
How Unmodified Attributes are Handled During Requery
8.3.11.5.2
How Modified Attributes are Handled During Requery
8.3.11.5.3
How Overlapping Subsets of Attributes are Handled During Requery
8.3.12
What You May Need to Know About Optimizing View Object Runtime Performance
8.4
Testing View Object Instances Programmatically
8.4.1
ViewObject Interface Methods for Working with the View Object's Default RowSet
8.4.1.1
The Role of the Key Object in a View Row or Entity Row
8.4.1.2
The Role of the Entity Cache in the Transaction
8.4.2
How to Create a Command-Line Java Test Client
8.4.2.1
Generating a Test Client with Skeleton Code
8.4.2.2
Modifying the Skeleton Code to Create the Test Client
8.4.3
What Happens When You Run a Test Client Program
8.4.4
What You May Need to Know About Running a Test Client
8.4.5
How to Count the Number of Rows in a Row Set
8.4.6
How to Access a Detail Collection Using the View Link Accessor
8.4.7
How to Iterate Over a Master-Detail-Detail Hierarchy
8.4.8
How to Find a Row and Update a Foreign Key Value
8.4.9
How to Create a New Row for a View Object Instance
8.4.10
How to Retrieve the Row Key Identifying a Row
8.4.11
What You May Need to Know About Using Partial Keys with findByKey()
8.4.12
How to Authenticate Test Users in the Test Client
9
Tuning View Object Performance
9.1
About View Object Tuning
9.2
Maintaining New Row Consistency Between View Objects Based on the Same Entity
9.2.1
What Happens at Runtime: When View Link Consistency is Enabled
9.2.2
What You May Need to Know About Changing the Default View Link Consistency Setting
9.2.3
Using RowMatch to Qualify Which New, Unposted Rows Get Added to a Row Set
9.2.4
What You May Need to Know About the Dynamic WHERE Clause and View Link Consistency
9.3
Using Bind Variables for Parameterized Queries
9.3.1
Use Bind Variables to Avoid Reparsing of Queries
9.3.2
Use Bind Variables to Prevent SQL-Injection Attacks
9.3.3
Log Bind Parameter Values
9.4
Working with Multiple Row Sets and Row Set Iterators
9.5
Using Entity-Based View Objects for Read-Only Data
9.6
Using SQL Tracing to Identify Ill-Performing Queries
9.7
Using the Appropriate View Object Tuning Settings
9.7.1
What You May Need to Know About the Retrieve from Database Options
9.7.2
Consider Whether Fetching One Row at a Time is Appropriate
9.7.3
Specify a Query Optimizer Hint if Necessary
9.8
Using Fetch Size to Limit the Maximum Number of Records Fetched for a View Object
9.9
Using Range Size to Present and Scroll Data a Page at a Time
9.10
Using Range Paging to Efficiently Scroll Through Large Result Sets
9.10.1
Understanding How Oracle Supports "TOP-N" Queries
9.10.2
How to Enable Range Paging for a View Object
9.10.3
What Happens When You Enable Range Paging
9.10.4
What Happens When View Rows are Cached When Using Range Paging
9.10.5
How to Scroll to a Given Page Number Using Range Paging
9.10.6
How to Estimate the Number of Pages in the Row Set Using Range Paging
9.10.7
Understanding the Tradeoffs of Using a Range Paging Mode
9.11
Using Forward Only Mode to Avoid Caching View Rows
9.12
Using Retain Row Set to Optimize View Link Accessor Access
9.13
Using Dynamic Attributes On View Objects to Store UI State
10
Working Programmatically with View Objects
10.1
Generating Custom Java Classes for a View Object
10.1.1
How To Generate Custom Classes
10.1.1.1
Generating Bind Variable Accessors
10.1.1.2
Generating View Row Attribute Accessors
10.1.1.3
Exposing View Row Accessors to Clients
10.1.1.4
Configuring Default Java Generation Preferences
10.1.2
What Happens When You Generate Custom Classes
10.1.2.1
Viewing and Navigating to Custom Java Files
10.1.3
What You May Need to Know About Custom Classes
10.1.3.1
About the Framework Base Classes for a View Object
10.1.3.2
You Can Safely Add Code to the Custom Component File
10.1.3.3
Attribute Indexes and InvokeAccessor Generated Code
10.1.3.4
Avoid Creating Dependencies on Parent Application Module Types
10.2
Working Programmatically with Multiple Named View Criteria
10.2.1
Applying One or More Named View Criteria
10.2.2
Removing All Applied Named View Criteria
10.2.3
Using the Named Criteria at Runtime
10.3
Performing In-Memory Sorting and Filtering of Row Sets
10.3.1
Understanding the View Object's SQL Mode
10.3.2
Sorting View Object Rows In Memory
10.3.2.1
Combining setSortBy and setQueryMode for In-Memory Sorting
10.3.2.2
Simplified In-Memory Sorting
10.3.2.3
Extensibility Points for In-Memory Sorting
10.3.3
Performing In-Memory Filtering with View Criteria
10.3.4
Performing In-Memory Filtering with RowMatch
10.3.4.1
Applying a RowMatch to a View Object
10.3.4.2
Using RowMatch to Test an Individual Row
10.3.4.3
How a RowMatch Affects Rows Fetched from the Database
10.4
Reading and Writing XML
10.4.1
How to Produce XML for Queried Data
10.4.2
What Happens When You Produce XML
10.4.3
What You May Need to Know About Reading and Writing XML
10.4.3.1
Controlling XML Element Names
10.4.3.2
Controlling Element Suppression for Null-Valued Attributes
10.4.3.3
Printing or Searching the Generated XML Using XPath
10.4.3.4
Using the Attribute Map For Fine Control Over Generated XML
10.4.3.5
Use the Attribute Map Approach with Bi-Directional View Links
10.4.3.6
Transforming Generated XML Using an XSLT Stylesheet
10.4.3.7
Generating XML for a Single Row
10.4.4
How to Consume XML Documents to Apply Changes
10.4.5
What Happens When You Consume XML Documents
10.4.5.1
How ViewObject.readXML() Processes an XML Document
10.4.5.2
Using readXML() to Processes XML for a Single Row
10.5
Working Programmatically with Custom Data Sources and the Framework Base Class ProgrammaticViewObjectImpl
10.5.1
How to Create a View Object Class Extending ProgrammaticViewObjectImpl
10.5.2
Key Framework Methods to Override for ProgrammaticViewObjectImpl Based View Objects
10.5.3
Key Framework Methods to Override for ProgrammaticViewRowImpl Based View Objects
10.6
Using Classic Style Programmatic View Objects for Alternative Data Sources
10.6.1
How to Create a Read-Only Programmatic View Object
10.6.2
How to Create an Entity-Based Programmatic View Object
10.6.3
Key Framework Methods to Override for Programmatic View Objects
10.6.4
How to Create a View Object on a REF CURSOR
10.6.4.1
The Overridden create() Method
10.6.4.2
The Overridden executeQueryForCollection() Method
10.6.4.3
The Overridden createRowFromResultSet() Method
10.6.4.4
The Overridden hasNextForCollectionMethod()
10.6.4.5
The Overridden releaseUserDataForCollection() Method
10.6.4.6
The Overridden getQueryHitCount() Method
10.7
Creating a View Object with Multiple Updatable Entities
10.7.1
How to Programmatically Create New Rows With Multiple Updatable Entity Usages
10.7.2
What Happens at Runtime: View Row Creation
10.8
Programmatically Creating View Definitions and View Objects
10.8.1
What You May Need to Know About MDS Repository Configuration
10.8.2
What You May Need to Know About Creating View Objects at Runtime
10.9
Declaratively Preventing Insert, Update, and Delete
11
Defining Validation and Business Rules Declaratively
11.1
About Declarative Validation
11.1.1
Declarative Validation Use Cases and Examples
11.1.2
Additional Functionality for Declarative Validation
11.2
Determining Where to Implement Validation
11.3
Understanding the Validation Cycle
11.3.1
Types of Entity Object Validation Rules
11.3.1.1
Attribute-Level Validation Rules
11.3.1.2
Entity-Level Validation Rules
11.3.2
Understanding Commit Processing and Validation
11.3.3
Understanding the Impact of Composition on Validation Order
11.3.4
Avoiding Infinite Validation Cycles
11.3.5
What Happens When Validations Fail
11.3.6
Understanding Entity Objects Row States
11.3.7
Understanding Bundled Exception Mode
11.4
Adding Validation Rules to Entity Objects and Attributes
11.4.1
How to Add a Validation Rule to an Entity or Attribute
11.4.2
How to View and Edit a Validation Rule on an Entity Object or Attribute
11.4.3
What Happens When You Add a Validation Rule
11.4.4
What You May Need to Know About Entity and Attribute Validation Rules
11.4.5
What You May Need to Know About List of Values and Attribute Validation Rules
11.5
Using the Built-in Declarative Validation Rules
11.5.1
How to Ensure That Key Values Are Unique
11.5.2
What Happens When You Use a Unique Key Validator
11.5.3
How to Validate Based on a Comparison
11.5.4
What Happens When You Validate Based on a Comparison
11.5.5
How to Validate Using a List of Values
11.5.6
What Happens When You Validate Using a List of Values
11.5.7
What You May Need to Know About the List Validator
11.5.8
How to Make Sure a Value Falls Within a Certain Range
11.5.9
What Happens When You Use a Range Validator
11.5.10
How to Validate Against a Number of Bytes or Characters
11.5.11
What Happens When You Validate Against a Number of Bytes or Characters
11.5.12
How to Validate Using a Regular Expression
11.5.13
What Happens When You Validate Using a Regular Expression
11.5.14
How to Use the Average, Count, or Sum to Validate a Collection
11.5.15
What Happens When You Use Collection Validation
11.5.16
How to Determine Whether a Key Exists
11.5.17
What Happens When You Use a Key Exists Validator
11.5.18
What You May Need to Know About Declarative Validators and View Accessors
11.6
Using Entity-Level Triggers
11.6.1
How to Implement Business Rules Using Entity-Level Triggers
11.6.2
What Happens When You Create an Entity-Level Trigger
11.7
Using Groovy Expressions For Business Rules and Triggers
11.7.1
How to Reference Entity Object Methods in Groovy Expressions
11.7.2
How to Validate Using a True/False Expression
11.7.3
What Happens When You Add a Groovy Expression
11.8
Triggering Validation Execution
11.8.1
How to Specify Which Attributes Fire Validation
11.8.2
What Happens When You Constrain Validation Execution with Triggering Attributes
11.8.3
How to Set Preconditions for Validation
11.8.4
How to Set Transaction-Level Validation
11.8.5
What You May Need to Know About the Order of Validation Execution
11.9
Creating Validation Error Messages
11.9.1
How to Create Error Messages for Validators and Triggers
11.9.2
How to Localize Validation Messages
11.9.3
How to Conditionally Raise Error Messages Using Groovy
11.9.4
How to Embed a Groovy Expression in an Error Message
11.10
Setting the Severity Level for Validation Exceptions
11.11
Bulk Validation in SQL
12
Implementing Validation and Business Rules Programmatically
12.1
About Programmatic Business Rules
12.1.1
Programmatic Business Rules Use Cases and Examples
12.1.2
Additional Functionality for Programmatic Business Rules
12.2
Using Method Validators
12.2.1
How to Create an Attribute-Level Method Validator
12.2.2
What Happens When You Create an Attribute-Level Method Validator
12.2.3
How to Create an Entity-Level Method Validator
12.2.4
What Happens When You Create an Entity-Level Method Validator
12.2.5
What You May Need to Know About Translating Validation Rule Error Messages
12.3
Assigning Programmatically Derived Attribute Values
12.3.1
How to Provide Default Values for New Rows at Create Time
12.3.1.1
Choosing Between create() and initDefaultExpressionAttributes() Methods
12.3.1.2
Eagerly Defaulting an Attribute Value from a Database Sequence
12.3.2
How to Assign Derived Values Before Saving
12.3.3
How to Assign Derived Values When an Attribute Value Is Set
12.4
Undoing Pending Changes to an Entity Using the Refresh Method
12.4.1
How to Control What Happens to New Rows During a Refresh
12.4.2
How to Cascade Refresh to Composed Children Entity Rows
12.5
Using View Objects for Validation
12.5.1
How to Use View Accessors for Validation Against View Objects
12.5.2
How to Validate Conditions Related to All Entities of a Given Type
12.5.3
What You May Need to Know About Row Set Access with View Accessors
12.6
Accessing Related Entity Rows Using Association Accessors
12.6.1
How to Access Related Entity Rows
12.6.2
How to Access Related Entity Row Sets
12.7
Referencing Information About the Authenticated User
12.8
Accessing Original Attribute Values
12.9
Storing Information About the Current User Session
12.9.1
How to Store Information About the Current User Session
12.9.2
How to Use Groovy to Access Information About the Current User Session
12.10
Accessing the Current Date and Time
12.11
Sending Notifications Upon a Successful Commit
12.12
Conditionally Preventing an Entity Row from Being Removed
12.13
Determining Conditional Updatability for Attributes
12.14
Implementing Custom Validation Rules
12.14.1
How to Create a Custom Validation Rule
12.14.2
How to Register and Use a Custom Rule in JDeveloper
12.14.2.1
Registering a Custom Validator at the Project Level
12.14.2.2
Registering a Custom Validator at the IDE Level
13
Implementing Business Services with Application Modules
13.1
About Application Modules
13.1.1
Application Module Use Cases and Examples
13.1.2
Additional Functionality for Application Modules
13.2
Creating and Modifying an Application Module
13.2.1
How to Create an Application Module
13.2.2
What Happens When You Create an Application Module
13.2.3
How to Add a View Object Instance to an Application Module
13.2.3.1
Adding a View Object Instance to an Existing Application Module
13.2.3.2
Adding Master-Detail View Object Instances to an Application Module
13.2.3.3
Customizing a View Object Instance that You Add to an Application Module
13.2.4
What Happens When You Add a View Object Instance to an Application Module
13.2.5
How to Edit an Existing Application Module
13.2.6
How to Change the Data Control Name Before You Begin Building Pages
13.2.7
What You May Need to Know About Application Module Granularity
13.2.8
What You May Need to Know About View Object Components and View Object Instances
13.3
Configuring Your Application Module Database Connection
13.3.1
How to Use a JDBC Data Source Connection Type
13.3.2
What Happens When You Create an Application Module Database Connection
13.3.3
How to Change Your Application Module's Runtime Configuration
13.3.4
How to Change the Database Connection for Your Project
13.4
Defining Nested Application Modules
13.4.1
How to Define a Nested Application Module
13.4.2
What You May Need to Know About Root Application Modules Versus Nested Application Module Usages
13.5
Creating an Application Module Diagram for Your Business Service
13.5.1
How to Create an Application Module Diagram
13.5.2
What Happens When You Create an Application Module Diagram
13.5.3
How to Use the Diagram to Edit the Application Module
13.5.4
How to Control Diagram Display Options
13.5.5
How to Filter Method Names Displayed in the Diagram
13.5.6
How to Show Related Objects and Implementation Files in the Diagram
13.5.7
How to Publish the Application Module Diagram
13.5.8
How to Test the Application Module from the Diagram
13.6
Supporting Multipage Units of Work
13.6.1
How to Simulate State Management in the Oracle ADF Model Tester
13.6.2
What Happens at Runtime: How the Application Uses Application Module Pooling and State Management
13.7
Customizing an Application Module with Service Methods
13.7.1
How to Generate a Custom Class for an Application Module
13.7.2
What Happens When You Generate a Custom Class for an Application Module
13.7.3
What You May Need to Know About Default Code Generation
13.7.4
How to Add a Custom Service Method to an Application Module
13.7.5
How to Test the Custom Application Module Using a Static Main Method
13.7.6
What You May Need to Know About Programmatic Row Set Iteration
13.8
Customizing Application Module Message Strings
13.8.1
How to Add a Resource Bundle File for the Application Module
13.8.2
What Happens When You Add a Resource Bundle to an Application Module
13.9
Publishing Custom Service Methods to UI Clients
13.9.1
How to Publish a Custom Method on the Application Module's Client Interface
13.9.2
What Happens When You Publish Custom Service Methods
13.9.3
How to Generate Client Interfaces for View Objects and View Rows
13.9.4
How to Test Custom Service Methods Using the Oracle ADF Model Tester
13.9.5
What You May Need to Know About Method Signatures on the Client Interface
13.9.6
What You May Need to Know About Passing Information from the Data Model
13.10
Working Programmatically with an Application Module's Client Interface
13.10.1
How to Work Programmatically with an Application Module's Client Interface
13.10.2
What Happens at Runtime: How the Application Module's Client Interface is Accessed
13.10.3
How to Access an Application Module Client Interface in a Fusion Web Application
13.11
Overriding Built-in Framework Methods
13.11.1
How to Override a Built-in Framework Method
13.11.2
What Happens When You Override a Built-in Framework Method
13.11.3
How to Override prepareSession() to Set Up an Application Module for a New User Session
13.12
Calling a Web Service from an Application Module
13.12.1
How to Call an External Service Programmatically
13.12.1.1
Creating a Web Service Proxy Class to Programmatically Access the Service
13.12.1.2
Calling the Web Service Proxy Template to Invoke the Service
13.12.1.3
Calling a Web Service Method Using the Proxy Class in an Application Module
13.12.2
What Happens When You Create the Web Service Proxy
13.12.3
How to Create a New Web Service Connection
13.12.4
What Happens at Runtime: How the Web Service Proxy Handles a Web Service Invocation
13.12.5
What You May Need to Know About Web Service Proxies
13.12.5.1
Using a Try-Catch Block to Handle Web Service Exceptions
13.12.5.2
Separating Application Module and Web Services Transactions
13.12.5.3
Setting Browser Proxy Information
13.12.5.4
Invoking Application Modules with a Web Service Proxy Class
14
Sharing Application Module View Instances
14.1
About Shared Application Modules
14.1.1
Shared Application Module Use Cases and Examples
14.1.2
Additional Functionality for Shared Application Modules
14.2
Sharing an Application Module Instance
14.2.1
How to Create a Shared Application Module Instance
14.2.2
What Happens When You Define a Shared Application Module
14.2.3
What You May Need to Know About Design Time Scope of the Shared Application Module
14.2.4
What You May Need to Know About the Design Time Scope of View Instances of the Shared Application Module
14.2.5
What You May Need to Know About Managing the Number of Shared Query Collections
14.2.6
What You May Need to Know About Shared Application Modules and Connection Pooling
14.3
Defining a Base View Object for Use with Lookup Tables
14.3.1
How to Create a Base View Object Definition for a Lookup Table
14.3.2
What Happens When You Create a Base View Object
14.3.3
How to Define the WHERE Clause of the Lookup View Object Using View Criteria
14.3.4
What Happens When You Create a View Criteria with the Editor
14.3.5
What Happens at Runtime: How a View Instance Accesses Lookup Data
14.4
Accessing View Instances of the Shared Service
14.4.1
How to Create a View Accessor for an Entity Object or View Object
14.4.2
How to Validate Against the Attribute Values Specified by a View Accessor
14.4.3
What Happens When You Define a View Accessor Validator
14.4.4
What You May Need to Know About Dynamic Filtering with View Accessors
14.4.5
How to Create an LOV Based on a Lookup Table
14.4.6
What Happens When You Define an LOV for a View Object Attribute
14.4.7
What Happens at Runtime: How the Attribute Displays the List of Values
14.4.8
What You May Need to Know About Displaying List of Values From a Lookup Table
14.4.9
What You May Need to Know About Programmatically Invoking Database Change Notifications
14.4.10
What You May Need to Know About Inheritance of AttributeDef Properties
14.4.11
What You May Need to Know About Using Validators
14.5
Testing View Object Instances in a Shared Application Module
14.5.1
How to Test the Base View Object Using the Oracle ADF Model Tester
14.5.2
How to Test LOV-Enabled Attributes Using the Oracle ADF Model Tester
14.5.3
What Happens When You Use the Oracle ADF Model Tester
14.5.4
What Happens at Runtime: How Another Service Accesses the Shared Application Module Cache
15
Creating SOAP Web Services with Application Modules
15.1
About Service-Enabled Application Modules
15.1.1
Service-Enabled Application Module Use Cases and Examples
15.1.2
Additional Functionality for Service-Enabled Application Modules
15.2
Publishing Service-Enabled Application Modules
15.2.1
How to Enable the Application Module Service Interface
15.2.2
What Happens When You Create an Application Module Service Interface
15.2.2.1
Annotations Generated in the Web Service Interface
15.2.2.2
Web Service Schema Generated in the Web Service Schema File
15.2.2.3
WSDL Generated in the Web Service Definition File
15.2.2.4
Stateless Session Bean Specified by the Service Implementation Class
15.2.2.5
Lookup Defined in the connections.xml File
15.2.3
What Happens When You Create an Application Module Service Interface With Polymorphic View Objects
15.2.4
What You May Need to Know About Method Signatures on the ADF Web Service Interface
15.2.5
What You May Need to Know About Row Finders and the ADF Web Service Operations
15.2.6
How to Service-Enable Individual View Objects
15.2.7
How to Customize the SDO Properties of Service-Enabled View Objects
15.2.7.1
Excluding Individual SDO Properties in a Generated SDO Component
15.2.7.2
Associating Related SDO Properties Using Complex Data Types
15.2.8
How to Support Nested Processing in Service-Enabled Master-Detail View Objects
15.2.9
What Happens When You Create SDO Classes
15.2.9.1
Property Accessors Generated in the SDO Interface
15.2.9.2
View Object Interface Implemented by SDO Class
15.2.9.3
View Object Schema Generated in the SDO Schema File
15.2.9.4
Container Object Implemented by SDO Result Class and Interface
15.2.10
How to Expose a Declarative Find Operation Filtered By a Required Bind Variable
15.2.11
How to Expose a Custom Find Method Filtered By a Required Bind Variable
15.2.12
How to Generate Asynchronous ADF Web Service Methods
15.2.13
What Happens When You Generate Asynchronous ADF Web Service Methods
15.2.14
What Happens at Runtime: How the Asynchronous Call Is Made
15.2.15
How to Set Preferences for Generating the ADF Web Service Interface
15.2.16
How to Set Display Names for Service View Instances and Attributes
15.2.17
How to Secure the ADF Web Service for Access By SOAP Clients
15.2.18
How to Secure the ADF Web Service for Access By RMI Clients
15.2.18.1
Enabling Authentication for RMI Clients
15.2.18.2
Configuring Authorization for RMI Clients
15.2.19
How to Grant Test Users Access to the Service
15.2.20
How to Enable Support for Binary Attachments for SOAP Clients
15.2.21
How to Specify Character Encoding for ClobDomain Type Attributes
15.2.22
How to Test the Web Service Using Integrated WebLogic Server
15.2.23
How to Prevent Custom Service Methods from Timing Out
15.2.24
How to Deploy Web Services to Oracle WebLogic Server
15.3
Accessing Remote Data Over the Service-Enabled Application Module
15.3.1
How to Use Service-Enabled Entity Objects and View Objects
15.3.1.1
Creating Entity Objects Backed by SDO Services
15.3.1.2
Using Complex Data Types with Service-Backed Entity Object Attributes
15.3.1.3
Creating View Objects Backed by SDO Services
15.3.2
What Happens When You Create Service-Backed Business Components
15.3.3
How to Update the Data Model for Service-Backed Business Components
15.3.4
How to Configure the Service-Backed Business Components Runtime
15.3.4.1
Adding the SDO Client Library to the Classpath
15.3.4.2
Registering the ADF Business Components Service in the Consuming Application's connections.xml for the EJB RMI Protocol
15.3.4.3
Registering the ADF Business Components Service in the Consuming Application's connections.xml for the SOAP Protocol
15.3.4.4
Registering the ADF Business Components Service in the Consuming Application's connections.xml for Fabric SDO Binding
15.3.5
How to Test the Service-Backed Components in the Oracle ADF Model Tester
15.3.6
How to Invoke Operations of the Service-Backed Components in the Consuming Application
15.3.7
What You May Need to Know About Creating Service Data Objects in the Consuming Application
15.3.8
What You May Need to Know About Invoking Built-In Service Methods in the Consuming Application
15.3.9
What Happens at Runtime: How the Application Accesses the Published Application Module
15.3.10
What You May Need to Know About Service-Backed Entity Objects and View Objects
15.4
Accessing Polymorphic Collections in the Consuming Application
15.4.1
How to Generate Web Service Client Proxy Classes From the Service-Enabled Application Module
15.4.2
How to Invoke Operations of Polymorphic View Object Using Generated Proxy Classes
15.4.3
What Happens When You Generate Java Proxy Classes With the SDO Schema
15.4.4
What You May Need to Know About Invoking Service Methods in the Client Application
15.5
Working with the Find Method Filter Model in the Consuming Application
15.5.1
How to Control Find Method Behavior Using a SOAP Request
15.5.2
How to Control Find Method Behavior Using a Java Client
16
Creating RESTful Web Services with Application Modules
16.1
About RESTful Web Services and ADF Business Components
16.1.1
RESTful Web Services Use Cases and Examples
16.1.2
Additional Functionality for RESTful Web Services
16.2
Creating ADF REST Resources Using the Application Module
16.2.1
How to Create ADF REST Resources from View Object Instances
16.2.2
What Happens When You Create REST Resources in the ADF Business Components Project
16.2.3
How to Edit the ADF REST Resource Definition
16.2.4
How to Expose Child Resources in the ADF REST Resource
16.2.5
How to Add and Remove Resources Based on the Same View Instance
16.2.6
How to Rename the ADF REST Resource
16.2.7
What You May Need to Know About Naming ADF REST Resources
16.2.8
How to Hide and Expose Attributes in the ADF REST Resource
16.2.9
What You May Need to Know About Modifying the ADF REST Resource Structure
16.2.10
What You May Need to Know About ADF REST Resources and LOB Attributes
16.2.11
What You May Need to Know About LOV Accessors in the ADF REST Resource
16.3
Customizing the ADF REST Resource Representation and Methods
16.3.1
How to Expose Canonical Resources in the ADF REST Resource
16.3.2
How to Enable Row Finder Keys in the ADF REST Resource
16.3.3
What You May Need to Know About Row Finders in ADF REST Resource Requests
16.3.4
How to Expose Subtype View Object in the ADF REST Resource
16.3.5
How to Expose Standard HTTP Actions in the ADF REST Resource
16.3.6
How to Support Create Operations on ADF REST Resources with LOV Attributes
16.3.7
What You May Need to Know About Optimizing ADF REST Resource Get Operations
16.3.8
How to Expose Custom Methods in the ADF REST Resource
16.4
Versioning the ADF REST Resource
16.4.1
How to Version the ADF REST Resource
16.4.2
What You May Need to Know About Versioning ADF REST Resources
16.4.3
What Happens At Runtime: Invoking ADF REST Resource Versions
16.5
Granting Client Access to the ADF REST Resource
16.5.1
How to Create a Resource Grant for ADF REST Resources
16.6
Deploying the ADF REST Resource
16.6.1
How to Deploy the ADF REST Resource to Integrated WebLogic Server
16.6.2
How to Configure the ADF REST Resources Deployment Profile For Standalone Oracle WebLogic Server Deployment
16.6.3
How to Deploy the ADF REST Resource to Standalone Oracle WebLogic Server
16.6.4
What You May Need to Know About Modifying the Target URL Used by Service Clients
16.6.5
What You May Need to Know About Deploying ADF REST Resources With MDS Customization Support
16.7
Testing the ADF REST Resources Using Integrated WebLogic Server
17
Extending Business Components Functionality
17.1
About Extending Business Components Functionality
17.1.1
Additional Functionality for Extending Business Components
17.2
Creating ADF Business Components Extension Classes
17.2.1
How To Create a Framework Extension Class
17.2.2
What Happens When You Create a Framework Extension Class
17.2.3
What You May Need to Know About Customizing Framework Extension Bases Classes
17.2.4
How to Base a Business Component on a Framework Extension Class
17.2.5
How to Define Framework Extension Classes for All New Components
17.2.6
How to Define Framework Extension Classes for All New Projects
17.2.7
What Happens When You Base a Component on a Framework Extension Class
17.2.7.1
XML-Only Components
17.2.7.2
Components with Custom Java Classes
17.2.8
What You May Need to Know About Updating the Extends Clause in Custom Component Java Files
17.2.9
How to Package Your Framework Extension Layer in a JAR File
17.2.10
How to Create a Library Definition for Your Framework Extension JAR File
17.3
Customizing Framework Behavior with Extension Classes
17.3.1
How to Access Runtime Metadata For View Objects and Entity Objects
17.3.2
How to Implement Generic Functionality Using Runtime Metadata
17.3.3
How to Implement Generic Functionality Driven by Custom Properties
17.3.4
What You May Need to Know About the Kinds of Attributes
17.3.5
What You May Need to Know About Custom Properties
17.4
Creating Generic Extension Interfaces
17.5
Invoking Stored Procedures and Functions
17.5.1
How to Invoke Stored Procedures with No Arguments
17.5.2
How to Invoke Stored Procedure with Only IN Arguments
17.5.3
How to Invoke Stored Function with Only IN Arguments
17.5.4
How to Call Other Types of Stored Procedures
17.6
Accessing the Current Database Transaction
17.7
Customizing Business Components Error Messages
17.7.1
How to Customize Base ADF Business Components Error Messages
17.7.2
What Happens When You Customize Base ADF Business Components Error Messages
17.7.3
How to Display Customize Error Messages as Nested Exceptions
17.7.4
How to Customize Error Messages for Database Constraint Violations
17.7.5
How to Implement a Custom Constraint Error Handling Routine
17.7.5.1
Creating a Custom Database Transaction Framework Extension Class
17.7.5.2
Configuring an Application Module to Use a Custom Database Transaction Class
17.8
Creating Extended Components Using Inheritance
17.8.1
How To Create a Component That Extends Another
17.8.2
How To Extend a Component After Creation
17.8.3
What Happens When You Create a Component That Extends Another
17.8.3.1
Attributes in an Extended Component Inherited from the Parent Component
17.8.3.2
Attributes Added to the Extended Component's XML Descriptor
17.8.3.3
Java Classes Generated for an Extended Component
17.8.4
What You May Need to Know About Extending Components
17.8.4.1
Parent Classes and Interfaces for Extended Components
17.8.4.2
Generated Classes for Extended Components
17.8.4.3
Business Component Types
17.8.4.4
New Attributes in an Extended Component
17.9
Substituting Extended Components in a Delivered Application
17.9.1
How To Substitute an Extended Component
17.9.2
What Happens When You Substitute
17.9.3
How to Enable the Substituted Components in the Base Application
Part III Using the ADF Model Layer
18
Using ADF Model in a Fusion Web Application
18.1
About Using ADF Model in a Fusion Web Application
18.1.1
About ADF Data Controls
18.1.2
About JSF Data Binding
18.1.3
About ADF Data Binding
18.2
Additional Functionality for ADF Model Layer
18.3
Exposing Application Modules with ADF Data Controls
18.3.1
How an Application Module Data Control Appears in the Data Controls Panel
18.3.1.1
How the Data Model and Service Methods Appear in the Data Controls Panel
18.3.1.2
How Transaction Control Operations Appear in the Data Controls Panel
18.3.1.3
How View Objects Appear in the Data Controls Panel
18.3.1.4
How Nested Application Modules Appear in the Data Controls Panel
18.3.1.5
How a Row Finder Appears in the Data Controls Panel
18.3.2
How to Open the Data Controls Panel
18.3.3
How to Refresh the Data Controls Panel
18.3.4
Packaging a Data Control for Use in Another Project
18.4
Using the Data Controls Panel
18.4.1
How to Use the Data Controls Panel
18.4.2
What Happens When You Use the Data Controls Panel
18.4.3
What Happens at Runtime: How the Binding Context Works
18.5
Working with the DataBindings.cpx File
18.5.1
How JDeveloper Creates a DataBindings.cpx File
18.5.2
What Happens When JDeveloper Creates a DataBindings.cpx File
18.6
Configuring the ADF Binding Filter
18.6.1
How JDeveloper Configures the ADF Binding Filter
18.6.2
What Happens When JDeveloper Configures an ADF Binding Filter
18.6.3
What Happens at Runtime: How the ADF Binding Filter Works
18.7
Working with Page Definition Files
18.7.1
How JDeveloper Creates a Page Definition File
18.7.2
What Happens When JDeveloper Creates a Page Definition File
18.7.2.1
Control Binding Objects Defined in the Page Definition File
18.7.2.2
Executable Binding Objects Defined in the Page Definition File
18.8
Creating ADF Data Binding EL Expressions
18.8.1
How to Create an ADF Data Binding EL Expression
18.8.1.1
Opening the Expression Builder from the Properties Window
18.8.1.2
Using the Expression Builder
18.8.2
What You May Need to Know About ADF Binding Properties
18.9
Using Simple UI First Development
18.9.1
How to Apply ADF Model Data Binding to Existing UI Components
18.9.2
What Happens When You Apply ADF Model Data Binding to UI Components
19
Using Validation in the ADF Model Layer
19.1
About ADF Model Layer Validation
19.1.1
ADF Model Layer Validation Use Cases and Examples
19.1.2
Additional Functionality for ADF Model Layer Validation
19.2
Defining Validation Rules in the ADF Model Layer
19.2.1
How to Add ADF Model Layer Validation
19.2.2
What Happens at Runtime: Model Validation Rules
19.2.3
What You May Need to Know About Default Error Handling
19.3
Customizing Error Handling
19.3.1
How to Customize the Detail Portion of a Message
19.3.2
How to Display an Informational Message from a Custom Error Handler
19.3.3
How to Write an Error Handler to Deal with Multiple Threads
20
Designing a Page Using Placeholder Data Controls
20.1
About Placeholder Data Controls
20.1.1
Placeholder Data Controls Use Cases and Examples
20.1.2
Additional Functionality for Placeholder Data Controls
20.2
Creating Placeholder Data Controls
20.2.1
How to Create a Placeholder Data Control
20.2.2
What Happens When You Create a Placeholder Data Control
20.3
Creating Placeholder Data Types
20.3.1
How to Create a Placeholder Data Type
20.3.2
How to Add Attributes and Sample Data to a Placeholder Data Type
20.3.2.1
Manually Adding Attributes to a Placeholder Data Type
20.3.2.2
Adding Sample Data Manually
20.3.2.3
How to Import Attributes and Sample Data to a Placeholder Data Type
20.3.2.4
What Happens When You Add Sample Data
20.3.3
What Happens When You Create a Placeholder Data Type
20.3.4
How to Configure a Placeholder Data Type Attribute to Be a List of Values
20.3.4.1
Configuring an Attribute to Be a Fixed LOV
20.3.4.2
Configuring an Attribute to Be a Dynamic LOV
20.3.5
How to Create Master-Detail Data Types
20.3.6
What Happens When You Create a Master-Detail Data Type
20.4
Using Placeholder Data Controls
20.4.1
Limitations of Placeholder Data Controls
20.4.2
Creating Layout
20.4.3
Creating a Search Form
20.4.4
Binding Components
20.4.5
Rebinding Components
20.4.6
Packaging Placeholder Data Controls to ADF Library JARs
21
Consuming RESTful Web Services Using ADF REST Data Controls
21.1
About Data Controls for RESTful Web Services Based on Application Modules
21.1.1
REST Web Service Data Control Use Cases and Examples
21.1.2
Additional Functionality for REST Web Service Data Controls
21.2
Consuming Business Components as REST Resources with a REST Data Control
21.2.1
How to Create a REST Connection
21.2.1.1
What Happens When You Create a REST Connection
21.2.1.2
How to Create a Data Control From ADF REST Resources
21.2.2
How to Create an ADF Data Control Using the Web Service Data Control Wizard
21.2.3
What Happens When You Create a Data Control Based on a REST Connection
21.3
Using REST Data Controls
21.4
Configuring REST Data Controls Published by Application Modules
21.4.1
How to Configure a REST Data Control
21.4.2
What Happens When You Edit a Data Control
21.4.3
What You May Need to Know About Primary Keys in REST Data Controls
22
Consuming RESTful Web Services Using the ADF REST Framework
22.1
About the ADF REST Framework
22.1.1
ADF REST Resource Use Cases and Examples
22.1.2
Additional Functionality for RESTful Web Services
22.1.3
About the Resource Samples in This Chapter
22.1.3.1
Sample Project Files and Data Model
22.1.3.2
Sample Project Resources and Resource Version Identifiers
22.1.3.3
Entity Object and View Object Customization
22.2
Understanding ADF Business Components Resources
22.3
Retrieving the ADF REST Resource Describe
22.3.1
Describing All Available Resources
22.3.2
Describing a Resource Collection
22.3.3
Describing a Resource Item
22.3.4
Describing a Nested Resource
22.3.5
Understanding the links Object Structure in the ADF REST describe
22.3.5.1
rel Attribute Values
22.3.5.2
href Attribute Value
22.3.5.3
cardinality Attribute Values
22.4
Retrieving Resource Versions
22.4.1
Retrieving All Available Version Release Names
22.4.2
Retrieving a Resource By a Specific Version
22.5
Retrieving the ADF REST Resource
22.5.1
Fetching a Resource Collection
22.5.2
Paging a Resource Collection
22.5.3
Filtering a Resource Collection with Primary Key Values
22.5.4
Filtering a Resource Collection with a Query Parameter
22.5.5
Fetching a Resource Item
22.5.6
Fetching Nested Child Resources
22.5.7
Sorting a Resource Collection
22.6
Creating a Resource Item
22.6.1
Creating a Resource Item in Collection
22.6.2
Creating Child Resource Item
22.7
Updating a Resource Item
22.8
Deleting a Resource Item
22.9
Checking for Data Consistency
22.9.1
Checking for Data Consistency When Updating ADF REST Resource Items
22.9.2
Checking for Data Consistency When Retrieving ADF REST Resource Items
22.10
Working with Attachments
22.10.1
Streaming Attachments Using a Resource Item Enclosure Link
22.10.2
Replacing LOB Content Using Base64
22.11
Working with LOV
22.11.1
Retrieving LOV-Enabled Attribute Values for Existing Resource Items
22.11.2
Retrieving LOV-Enabled Attribute Values When Creating a Resource Item
22.12
Advanced Operations
22.12.1
Querying With Filtering Attributes (Partial Get)
22.12.2
Filtering a Resource Collection with a Row Finder
22.12.3
Returning Only Resource Data in a Payload
22.12.4
Returning the Estimated Count of Resource Items
22.12.5
Executing a Custom Action
22.12.6
Overriding the HTTP Method and Performing an Update
22.12.7
Making Batch Requests
22.13
ADF REST Framework Reference
22.13.1
ADF REST Payload Compression Support
22.13.2
ADF REST Media Types
22.13.3
ADF REST Data Types
22.13.4
ADF REST HTTP Codes
22.13.5
ADF REST HTTP Headers Support
22.13.6
ADF REST HTTP Method and Payload Support
22.13.6.1
GET Method Operations
22.13.6.2
POST Method Operations
22.13.6.3
PATCH Method Operations
22.13.6.4
DELETE Method
Part IV Creating ADF Task Flows
23
Getting Started with ADF Task Flows
23.1
About ADF Task Flows
23.1.1
About Unbounded Task Flows
23.1.2
About Bounded Task Flows
23.1.3
About Control Flows
23.1.4
ADF Task Flow Use Cases and Examples
23.1.5
Additional Functionality for ADF Task Flows
23.2
Creating a Task Flow
23.2.1
How to Create a Task Flow
23.2.2
What Happens When You Create a Task Flow
23.2.3
What You May Need to Know About the Default Activity in a Bounded Task Flow
23.2.4
What You May Need to Know About Memory Scope for Task Flows
23.2.5
What You May Need to Know About the Source Files for Task Flows
23.3
Adding Activities to a Task Flow
23.3.1
How to Add an Activity to a Task Flow
23.3.2
What Happens When You Add an Activity to a Task Flow
23.4
Adding Control Flow Rules to Task Flows
23.4.1
How to Add a Control Flow Rule to a Task Flow
23.4.2
How to Add a Wildcard Control Flow Rule
23.4.3
What Happens When You Create a Control Flow Rule
23.4.4
What Happens at Runtime: How Task Flows Evaluate Control Flow Rules
23.5
Testing Task Flows
23.5.1
How to Run a Bounded Task Flow That Contains Pages
23.5.2
How to Run a Bounded Task Flow That Uses Page Fragments
23.5.3
How to Run a Bounded Task Flow That Has Parameters
23.5.4
How to Run a JSF Page When Testing a Task Flow
23.5.5
How to Run an Unbounded Task Flow
23.5.6
How to Set a Run Configuration for a Project
23.5.7
What Happens at Runtime: Testing Task Flows
23.6
Refactoring to Create New Task Flows and Task Flow Templates
23.6.1
How to Extract a Bounded Task Flow from an Existing Task Flow
23.6.2
What Happens When You Extract a Bounded Task from an Existing Task Flow
23.6.3
How to Create a Task Flow from JSF Pages
23.6.4
How to Convert Bounded Task Flows
24
Working with Task Flow Activities
24.1
About Task Flow Activities
24.1.1
Task Flow Activities Use Cases and Examples
24.1.2
Additional Functionality for Task Flow Activities
24.2
Using View Activities
24.2.1
Passing Control Between View Activities
24.2.1.1
How to Pass Control Between View Activities
24.2.1.2
What Happens When You Pass Control Between View Activities
24.2.2
Bookmarking View Activities
24.2.2.1
How to Create a Bookmarkable View Activity
24.2.2.2
What Happens When You Designate a View as Bookmarkable
24.2.3
Specifying HTTP Redirect for a View Activity
24.2.3.1
How to Specify HTTP Redirect for a View Activity
24.2.3.2
What Happens When You Specify HTTP Redirect for a View Activity
24.2.4
Specifying URL Aliases for View Activities
24.2.4.1
How to Specify a URL Alias for a View Activity
24.2.4.2
What Happens When You Specify a URL Alias for a View Activity
24.3
Using URL View Activities
24.3.1
How to Add a URL View Activity to a Task Flow
24.3.2
What Happens When You Add a URL View Activity to a Task Flow
24.3.3
What You May Need to Know About URL View Activities
24.4
Using Router Activities
24.4.1
How to Configure Control Flow Using a Router Activity
24.4.2
What Happens When You Configure Control Flow Using a Router Activity
24.5
Using Method Call Activities
24.5.1
How to Add a Method Call Activity
24.5.2
How to Specify Method Parameters and Return Values
24.5.3
What Happens When You Add a Method Call Activity
24.6
Using Task Flow Call Activities
24.6.1
How to Call a Bounded Task Flow Using a Task Flow Call Activity
24.6.2
What Happens When You Call a Bounded Task Flow Using a Task Flow Call Activity
24.6.3
How to Specify Input Parameters on a Task Flow Call Activity
24.6.4
How to Call a Bounded Task Flow Using a URL
24.6.5
What Happens When You Configure a Bounded Task Flow to be Invoked by a URL
24.6.6
What You May Need to Know About Calling a Bounded Task Flow Using a URL
24.6.7
How to Specify Before and After Listeners on a Task Flow Call Activity
24.6.8
What Happens When You Add a Task Flow Call Activity
24.6.9
What Happens at Runtime: How a Task Flow Call Activity Invokes a Task Flow
24.7
Using Task Flow Return Activities
24.7.1
How to Add a Task Flow Return Activity to a Bounded Task Flow
24.7.2
What Happens When You Add a Task Flow Return Activity to a Bounded Task Flow
24.8
Using Task Flow Activities with Page Definition Files
24.8.1
How to Associate a Page Definition File with a Task Flow Activity
24.8.2
What Happens When You Associate a Page Definition File with a Task Flow Activity
25
Using Parameters in Task Flows
25.1
About Using Parameters in Task Flows
25.1.1
Task Flow Parameters Use Cases and Examples
25.1.2
Additional Functionality for Task Flows Using Parameters
25.2
Passing Parameters to a View Activity
25.2.1
How to Pass Parameters to a View Activity
25.2.2
What Happens When You Pass Parameters to a View Activity
25.2.3
What You May Need to Know About Specifying Parameter Values
25.3
Passing Parameters to a Bounded Task Flow
25.3.1
How to Pass an Input Parameter to a Bounded Task Flow
25.3.2
What Happens When You Pass an Input Parameter to a Bounded Task Flow
25.4
Configuring a Return Value from a Bounded Task Flow
25.4.1
How to Configure a Return Value from a Bounded Task Flow
25.4.2
What Happens When You Configure a Return Value from a Bounded Task Flow
26
Using Task Flows as Regions
26.1
About Using Task Flows in ADF Regions
26.1.1
About Page Fragments and ADF Regions
26.1.2
About View Ports and ADF Regions
26.1.3
Task Flows and ADF Region Use Cases and Examples
26.1.4
Additional Functionality for Task Flows that Render in ADF Regions
26.2
Creating an ADF Region
26.2.1
How to Create an ADF Region
26.2.2
What Happens When You Create an ADF Region
26.3
Specifying Parameters for an ADF Region
26.3.1
How to Specify Parameters for an ADF Region
26.3.2
What Happens When You Specify Parameters for an ADF Region
26.4
Specifying Parameters for ADF Regions Using Parameter Maps
26.4.1
How to Create a Parameter Map to Specify Input Parameters for an ADF Region
26.4.2
What Happens When You Create a Parameter Map to Specify Input Parameters
26.5
Configuring an ADF Region to Refresh
26.5.1
How to Configure the Refresh of an ADF Region
26.5.2
What You May Need to Know About Configuring an ADF Region to Refresh
26.6
Configuring Activation of an ADF Region
26.6.1
How to Configure Activation of an ADF Region
26.6.2
What Happens When You Configure Activation of an ADF Region
26.7
Navigating Outside an ADF Region's Task Flow
26.7.1
How to Trigger Navigation Outside of an ADF Region's Task Flow
26.7.2
What Happens When You Configure Navigation Outside a Task Flow
26.7.3
What You May Need to Know About How a Page Determines the Capabilities of an ADF Region
26.8
Configuring Transaction Management in an ADF Region
26.9
Creating ADF Dynamic Regions
26.9.1
How to Create an ADF Dynamic Region
26.9.2
What Happens When You Create an ADF Dynamic Region
26.10
Adding Additional Task Flows to an ADF Dynamic Region
26.10.1
How to Create an ADF Dynamic Region Link
26.10.2
What Happens When You Create an ADF Dynamic Region
26.11
Configuring a Page To Render an Unknown Number of Regions
26.11.1
How to Configure a Page to Render an Unknown Number of Regions
26.11.2
What Happens When You Configure a Page to Render an Unknown Number of Regions
26.11.3
What You May Need to Know About Configuring a Page to Render an Unknown Number of Regions
26.12
Handling Access to Secured Task Flows by Unauthorized Users
26.12.1
How to Handle Access to Secured Task Flows by Unauthorized Users
26.12.2
What Happens When You Handle Access to Secured Task Flows by Unauthorized Users
26.13
Creating Remote Regions in a Fusion Web Application
26.13.1
How to Configure an Application to Produce Task Flows for Use in Remote Regions
26.13.2
What Happens When You Produce Task Flows for Use in Remote Regions
26.13.3
What You May Need to Know About Securing Remote Regions
26.13.4
How to Configure an Application to Render Remote Regions
26.13.5
What Happens When You Configure an Application to Render Remote Regions
26.13.6
What Happens at Runtime: How an Application Renders Remote Regions
26.13.7
How to Add Custom Error Messages for Remote Regions
26.13.8
What You May Need to Know About ADF Skins and Remote Regions
27
Creating Complex Task Flows
27.1
About Creating Complex Task Flows
27.1.1
Complex Task Flows Use Cases and Examples
27.1.2
Additional Functionality for Complex Task Flows
27.2
Sharing Data Controls Between Task Flows
27.2.1
How to Share a Data Control Between Task Flows
27.2.2
What Happens When You Share a Data Control Between Task Flows
27.2.3
What Happens at Runtime: How Task Flows Share Data Controls
27.3
Managing Transactions in Task Flows
27.3.1
How to Enable Transactions in a Bounded Task Flow
27.3.2
What Happens When You Specify Transaction Options
27.3.3
What You May Need to Know About Sharing Data Controls and Managing Transactions
27.3.3.1
Creating Completely Separate Transactions
27.3.3.2
Guaranteeing a Called Bounded Task Joins an Existing Transaction
27.3.3.3
Using an Existing Transaction if Possible
27.3.4
What You May Need to Know About ADF Business Component Database Connections and Task Flow Transaction Options
27.4
Reentering Bounded Task Flows
27.4.1
How to Set Reentry Behavior
27.4.2
How to Set Outcome-Dependent Options
27.4.3
What Happens When You Configure a Bounded Task Flow for Reentry
27.5
Handling Exceptions in Task Flows
27.5.1
How to Designate an Activity as an Exception Handler
27.5.2
What Happens When You Designate an Activity as an Exception Handler
27.5.3
How to Designate Custom Code as an Exception Handler
27.5.4
What Happens When You Designate Custom Code as an Exception Handler
27.5.5
What You May Need to Know About Handling Exceptions During Transactions
27.5.6
What You May Need to Know About Handling Validation Errors
27.6
Configuring Your Application to Use Save Points
27.6.1
How to Configure Your Fusion Web Application to Use Save Points
27.6.2
What Happens When You Configure a Fusion Web Application to Use Save Points
27.6.3
What You May Need to Know About the Database Table for Save Points
27.7
Using Save Points in Task Flows
27.7.1
How to Add a Save Point to a Task Flow
27.7.2
What Happens When You Add Save Points to a Task Flow
27.7.3
How to Restore a Save Point
27.7.4
What Happens When You Restore a Save Point
27.7.5
How to Use the Save Point Restore Finalizer
27.7.6
What Happens When a Task Flow Invokes a Save Point Restore Finalizer
27.7.7
How to Enable Implicit Save Points
27.7.8
What You May Need to Know About Enabling Implicit Save Points
27.7.9
What You May Need to Know About the Time-to-Live Period for a Save Point
27.8
Minimizing the Number of Active Root View Ports in an Application
27.8.1
How to Minimize the Number of Active Root View Ports
27.8.2
What Happens When You Minimize the Number of Active Root View Ports
27.9
Using Train Components in Bounded Task Flows
27.9.1
Creating a Task Flow as a Train
27.9.1.1
How to Create a Train in a Bounded Task Flow
27.9.1.2
What Happens When You Create a Task Flow as a Train
27.9.2
Invoking a Child Bounded Task Flow from a Train Stop
27.9.2.1
How to Invoke a Child Bounded Task Flow From a Train Stop
27.9.3
Grouping Task Flow Activities to Execute Between Train Stops
27.9.4
Disabling the Sequential Behavior of Train Stops in a Train
27.9.4.1
How to Disable the Sequential Behavior of a Train
27.9.4.2
What Happens When You Disable the Sequential Behavior of a Train Stop
27.9.5
Changing the Label of a Train Stop
27.9.5.1
How to Change the Label of a Train Stop
27.9.5.2
What Happens When You Change the Label of a Train Stop
27.9.6
Configuring a Train to Skip a Train Stop
27.9.6.1
How to Configure a Train to Skip a Train Stop
27.9.6.2
What Happens When You Configure a Train to Skip a Train Stop
27.10
Creating Task Flow Templates
27.10.1
How to Create a Task Flow Template
27.10.2
What Happens When You Create a Task Flow Template
27.10.3
What You May Need to Know About Task Flow Templates
27.11
Creating a Page Hierarchy Using Task Flows
27.11.1
How to Create a Page Hierarchy
27.11.1.1
How to Create an XMLMenuModel Metadata File
27.11.1.2
How to Create a Submenu with a Hierarchy of Group and Child Nodes
27.11.1.3
How to Attach a Menu Hierarchy to Another Menu Hierarchy
27.11.2
What Happens When You Create a Page Hierarchy
27.12
Reporting Incidents to the Oracle Fusion Middleware Diagnostic Framework
28
Using Dialogs in Your Application
28.1
About Using Dialogs in Your Application
28.1.1
Using Dialogs in Your Application Use Cases and Examples
28.1.2
Additional Functionality for Using Dialogs in Your Application
28.2
Running a Bounded Task Flow in a Modal Dialog
28.2.1
How to Run a Bounded Task Flow in a Modal Dialog
28.2.2
How to Return a Value From a Modal Dialog
28.2.3
How to Refresh a Page After a Modal Dialog Returns
28.2.4
What You May Need to Know About Dialogs in an Application that Uses Task Flows
28.3
Using the ADF Faces Dialog Framework Instead of Bounded Task Flows
28.3.1
How to Define a JSF Navigation Rule for Opening a Dialog
28.3.2
How to Create the JSF Page That Opens a Dialog
28.3.3
How to Create the Dialog Page and Return a Dialog Value
28.3.4
What Happens at Runtime: How to Raise the Return Event from the Dialog
28.3.5
How to Pass a Value into a Dialog
28.3.6
What Happens at Runtime: How the LaunchEvent is Handled
28.3.7
How to Handle the Return Value
28.3.8
What Happens at Runtime: How the Launching Component Handles the ReturnEvent
Part V Creating a Databound Web User Interface
29
Getting Started with Your Web Interface
29.1
About Developing a Web Application with ADF Faces
29.1.1
Page Template and Managed Beans Use Cases and Examples
29.1.2
Additional Functionality for Page Templates and Managed Beans
29.2
Using Page Templates
29.2.1
How to Use ADF Data Binding in ADF Page Templates
29.2.2
What Happens When You Use ADF Model Layer Bindings on a Page Template
29.2.3
How to Add a Databound Page Template to a Page Dynamically
29.2.4
What Happens at Runtime: How Pages Use Templates
29.3
Creating a Web Page
29.3.1
How to Create a Web Page
29.3.2
What You May Need to Know About Creating Blank Web Pages
29.3.3
What You May Need to Know About Securing a Web Page
29.4
Using a Managed Bean in a Fusion Web Application
29.4.1
How to Use a Managed Bean to Store Information
29.4.2
What Happens When You Create a Managed Bean
29.4.3
How to Set Managed Bean Memory Scopes in a Server-Cluster Environment
30
Understanding the Fusion Page Lifecycle
30.1
About the Fusion Page Lifecycle
30.2
About the JSF and ADF Page Lifecycles
30.2.1
What You May Need to Know About Partial Page Rendering and Iterator Bindings
30.2.2
What You May Need to Know About Task Flows and the Lifecycle
30.3
About Object Scope Lifecycles
30.3.1
What You May Need to Know About Object Scopes and Task Flows
30.4
Customizing the ADF Page Lifecycle
30.4.1
How to Create a Custom Phase Listener
30.4.2
How to Register a Listener Globally
30.4.3
What You May Need to Know About Listener Order
30.4.4
How to Register a Lifecycle Listener for a Single Page
31
Creating a Basic Databound Page
31.1
About Creating a Basic Databound Page
31.1.1
ADF Databound Form Use Cases and Examples
31.1.2
Additional Functionality for Databound Pages
31.2
Creating Text Fields Using Data Control Attributes
31.2.1
How to Create a Text Field
31.2.2
What Happens When You Create a Text Field
31.2.2.1
Iterator Bindings Created in the Page Definition File
31.2.2.2
Value Bindings Created in the Page Definition File
31.2.2.3
Component Tags Created in JSF Page
31.3
Creating Basic Forms Using Data Control Collections
31.3.1
How to Create a Form Using a Data Control Collection
31.3.2
What Happens When You Create a Form Using a Data Control Collection
31.4
Creating Command Components Using Data Control Operations
31.4.1
How to Create Command Components From Operations
31.4.2
What Happens When You Create Command Components Using Operations
31.4.2.1
Action Bindings Created for Operations
31.4.2.2
Iterator RangeSize Attribute Defined
31.4.2.3
EL Expressions Created to Bind to Operations
31.4.3
What Happens at Runtime: How Action Events and Action Listeners Work
31.4.4
What You May Need to Know About Overriding Declarative Methods
31.5
Incorporating Range Navigation into Forms
31.5.1
How to Manually Insert Navigation Controls into a Form
31.5.2
What Happens When You Manually Add Navigation Buttons
31.5.3
What Happens at Runtime: Navigation Controls
31.5.4
What You May Need to Know About the Browser Back Button and Navigating Through Records
31.5.5
What You May Need to Know About the CacheResults Property
31.6
Creating a Form to Edit an Existing Record
31.6.1
How to Create an Edit Form
31.6.2
What Happens When You Create Edit Forms
31.6.3
What You May Need to Know About Working With Data Controls for Stateless Business Services
31.7
Using Parameters to Create a Form
31.7.1
How to Create a Form Using Parameters
31.7.2
What Happens When You Create a Parameter Form
31.7.3
What Happens at Runtime: How Parameters are Populated
31.8
Creating an Input Form
31.8.1
How to Create an Input Form
31.8.1.1
Creating an Input Form Using a Bounded Task Flow
31.8.1.2
Using a Commit Button Instead of a Return Activity Within a Task Flow
31.8.1.3
Creating an Input Form That Allows Multiple Entries in a Single Transaction
31.8.2
What Happens When You Create an Input Form
31.8.3
What Happens at Runtime: CreateInsert Action from the Method Activity
31.8.4
What You May Need to Know About Displaying Sequence Numbers
31.8.5
What You May Need to Know About Input Forms Backed By Stateless Services
31.9
Creating a Form with Dynamic Components
31.9.1
About Dynamic Components
31.9.2
How to Create a Dynamic Form
31.9.3
What Happens When You Create Dynamic Forms
31.9.3.1
Bindings Created for the Dynamic Form
31.9.3.2
Tags Created for a Dynamic Form without Grouping
31.9.3.3
Tags Created for a Dynamic Form with Grouping
31.9.4
What Happens at Runtime: How Attribute Values Are Dynamically Determined
31.9.5
How to Apply Validators and Converters to a Dynamic Component
31.9.6
What You May Need to Know About Mixing Dynamic Components with Static Components
31.9.7
How to Programmatically Set Dynamic Component Behavior
31.9.8
How to Access a Dynamic Component Programmatically
31.9.9
How to Access a Dynamic Component's Binding Instance Programmatically
31.10
Modifying the UI Components and Bindings on a Form
31.10.1
How to Modify the UI Components and Bindings
31.10.2
What Happens When You Modify Attributes and Bindings
32
Creating ADF Databound Tables
32.1
About Creating ADF Databound Tables
32.1.1
ADF Databound Tables Use Cases and Examples
32.1.2
Additional Functionality for Databound Tables
32.2
Creating a Basic Table
32.2.1
How to Create a Basic Table
32.2.2
What Happens When You Create a Table
32.2.2.1
Iterator and Value Bindings for Tables
32.2.2.2
Code on the JSF Page for an ADF Faces Table
32.2.3
What You May Need to Know About Setting the Current Row in a Table
32.2.4
What You May Need to Know About Getting Row Data Programmatically
32.2.5
What You May Need to Know About Table Scrolling Behavior and Row Count
32.3
Creating an Editable Table
32.3.1
How to Create an Editable Table
32.3.2
What Happens When You Create an Editable Table
32.4
Creating an Input Table
32.4.1
How to Create an Input Table
32.4.2
What Happens When You Create an Input Table
32.4.3
What Happens at Runtime: How CreateInsert and Partial Page Refresh Work
32.4.4
What You May Need to Know About Creating a Row and Sorting Columns
32.4.5
What You May Need to Know About Create and CreateInsert
32.4.6
What You May Need to Know About Saving Multiple Rows in a JPA-Based Data Control
32.5
Creating a List View of a Collection
32.5.1
How to Create a Databound List View
32.5.2
What Happens When You Create a Databound List View
32.6
Creating a Table with Dynamic Components
32.6.1
How to Create a Dynamic Table
32.6.2
What Happens When You Use Dynamic Components
32.6.2.1
Tags Created for a Dynamic Table without Grouping
32.6.2.2
Tags Created for a Dynamic Table with Grouping
32.6.3
What Happens at Runtime: How Attribute Values Are Dynamically Determined
32.6.4
How to Create a Dynamic Table with a detailStamp Facet
32.7
Modifying the Attributes Displayed in the Table
32.7.1
How to Modify the Displayed Attributes
32.7.2
How to Change the Binding for a Table
32.7.3
What Happens When You Modify Bindings or Displayed Attributes
33
Using Command Components to Invoke Functionality in the View Layer
33.1
About Command Components
33.1.1
Command Component Use Cases and Examples
33.1.2
Additional Functionality for Command Components
33.2
Creating Command Components to Execute Methods
33.2.1
How to Create a Command Component Bound to a Custom Method
33.2.2
What Happens When You Create Command Components Using a Method
33.2.2.1
Action Bindings
33.2.2.2
Method Parameters
33.2.2.3
ADF Faces Component Code
33.2.2.4
EL Expressions Used to Bind to Methods
33.2.2.5
Using the Return Value from a Method Call
33.2.3
What Happens at Runtime: Command Button Method Bindings
33.3
Setting Parameter Values Using a Command Component
33.3.1
How to Set Parameters Using setPropertyListener Within a Command Component
33.3.2
What Happens When You Set Parameters Using a setPropertyListener
33.3.3
What Happens at Runtime: setPropertyListener for a Command Component
33.4
Overriding Declarative Methods
33.4.1
How to Override a Declarative Method
33.4.2
What Happens When You Override a Declarative Method
34
Displaying Master-Detail Data
34.1
About Displaying Master-Detail Data
34.1.1
Master-Detail Tables, Forms, and Trees Use Cases and Examples
34.1.2
Additional Functionality for Master-Detail Tables, Forms, and Trees
34.2
Prerequisites for Master-Detail Tables, Forms, and Trees
34.2.1
How to Identify Master-Detail Objects on the Data Controls Panel
34.3
Using Tables and Forms to Display Master-Detail Objects
34.3.1
How to Display Master-Detail Objects in Tables and Forms Using Master-Detail Widgets
34.3.2
How to Create Master-Detail Forms from Separate Components
34.3.3
What Happens When You Create Master-Detail Tables and Forms
34.3.3.1
Code Generated in a Master-Detail JSF Page
34.3.3.2
Binding Objects Defined in a Master-Detail Page Definition File
34.3.4
What Happens at Runtime: ADF Iterator for Master-Detail Tables and Forms
34.3.5
How to Display Master-Detail Components on Separate Pages
34.4
Using Trees to Display Master-Detail Objects
34.4.1
How to Display Master-Detail Objects in Trees
34.4.2
What Happens When You Create an ADF Databound Tree
34.4.2.1
Code Generated in the JSF Page
34.4.2.2
Binding Objects Defined in the Page Definition File
34.4.3
What Happens at Runtime: How an ADF Databound Tree Is Displayed
34.4.4
How to Synchronize Other Parts of a Page With a Tree Selection
34.5
Using Tree Tables to Display Master-Detail Objects
34.5.1
How to Display Master-Detail Objects in Tree Tables
34.5.2
What Happens When You Create a Databound Tree Table
34.5.2.1
Code Generated in the JSF Page
34.5.2.2
Binding Objects Defined in the Page Definition File
34.5.3
What Happens at Runtime: Events for Tree Tables
34.6
Using List Views to Display Master-Detail Objects
34.6.1
How to Display Master-Detail Objects in List Views
34.6.2
What Happens When You Create a Master-Detail List View
34.7
About Selection Events in Trees and Tree Tables
35
Creating Databound Selection Lists and Shuttles
35.1
About Selection Lists and Shuttles
35.1.1
Selection Lists and Shuttles Use Cases and Examples
35.1.2
Additional Functionality for Selection Lists and Shuttles
35.2
Creating List of Values (LOV) Components
35.2.1
How to Create an LOV
35.2.2
What Happens When You Create an LOV
35.2.3
What You May Need to Know About List Validators and LOV
35.2.4
What You May Need to Know About InputComboboxListOfValues and Null Values
35.3
Creating a Selection List
35.3.1
How to Create a Model-Driven List
35.3.2
What Happens When You Create a Model-Driven Selection List
35.3.3
How to Create a Selection List Containing Fixed Values
35.3.4
What Happens When You Create a Fixed Selection List
35.3.5
How to Create a Selection List Containing Dynamically Generated Values
35.3.6
What Happens When You Create a Dynamic Selection List
35.3.7
What You May Need to Know About Values in a Selection List
35.4
Creating a List with Navigation List Binding
35.4.1
How to Create a List with Navigation List Binding
35.4.2
What Happens When You Create a Navigational List Binding
35.5
Creating a Databound Shuttle
35.5.1
How to Create a Databound Shuttle
35.5.2
What Happens When You Create a Databound Shuttle
36
Creating ADF Databound Search Forms
36.1
About Creating Search Forms
36.1.1
Implicit and Named View Criteria
36.1.2
List of Values (LOV) Input Fields
36.1.3
Search Form Use Cases and Examples
36.1.4
Additional Functionality for Search Forms
36.2
Creating Query Search Forms
36.2.1
How to Create a Query Search Form with a Results Table or Tree Table
36.2.2
How to Create a Query Search Form and Add a Results Component Later
36.2.3
How to Persist Saved Searches into MDS
36.2.4
What You May Need to Know About Named Bind Variables in Search Forms
36.2.5
What You May Need to Know about Default Search Binding Behavior
36.2.6
What You May Need to Know About Dependent Criterion
36.2.7
What Happens When You Create a Query Form
36.2.8
What Happens at Runtime: Search Forms
36.3
Setting Up Search Form Properties
36.3.1
How to Set Search Form Properties on the View Criteria
36.3.2
How to Set Search Form Properties on the Query Component
36.3.3
How to Set Timezone Control Hint for Timestamp Attribute
36.3.4
How to Create Custom Operators
36.3.5
How to Remove Standard Operators
36.3.6
How to Set Uniform Operator Field Width
36.4
Creating Quick Query Search Forms
36.4.1
How to Create a Quick Query Search Form with a Results Table or Tree Table
36.4.2
How to Create a Quick Query Search Form and Add a Results Component Later
36.4.3
How to Set the Quick Query Layout Format
36.4.4
What Happens When You Create a Quick Query Search Form
36.4.5
What Happens at Runtime: Quick Query
36.5
Creating Standalone Filtered Search Tables from Named View Criteria
36.5.1
How to Create Filtered Table and Query-by-Example Searches
37
Creating Databound Calendar and Carousel Components
37.1
About Databound ADF Faces Calendar and Carousel Components
37.1.1
Databound ADF Faces Calendar and Carousel Components Use Cases and Examples
37.1.2
Additional Functionality of Databound ADF Faces Calendar and Carousel Components
37.2
Using the ADF Faces Calendar Component
37.2.1
How to Create the ADF Faces Calendar
37.2.2
What Happens When You Create a Calendar
37.2.3
What Happens at Runtime: How the Calendar Binding Works
37.3
Using the ADF Faces Carousel Component
37.3.1
How to Create a Databound Carousel Component
37.3.2
What Happens When You Create a Carousel
38
Creating Databound Chart, Picto Chart, and Gauge Components
38.1
About ADF Data Visualization Chart, Picto Chart, and Gauge Components
38.1.1
Data Visualization Components Use Cases and Examples
38.1.2
End User and Presentation Features
38.1.3
Additional Functionality for Data Visualization Components
38.2
Creating Databound Charts
38.2.1
How to Create an Area, Bar, Combination, Horizontal Bar, or Line Chart Using Data Controls
38.2.2
What Happens When You Use the Data Controls Panel to Create a Chart
38.2.3
How to Create Databound Funnel Charts
38.2.4
How to Create Databound Pie Charts
38.2.5
Creating a Databound Spark Chart Using Data Controls
38.2.6
How to Create Databound Bubble and Scatter Charts
38.2.7
How to Create Databound Polar and Radar Charts
38.2.8
How to Create Databound Stock Charts
38.2.9
What You May Need to Know About Using Attribute Labels
38.3
Creating Databound Gauges
38.3.1
How to Create a Databound Dial Gauge
38.3.2
What Happens When You Create a Dial Gauge from a Data Control
38.3.3
How to Create a Databound Rating Gauge
38.3.4
Including Gauges in Databound ADF Tables
38.3.4.1
How to Include a Gauge in a Databound ADF Table
38.3.4.2
What Happens When You Include a Gauge in an ADF Table
38.4
Creating Databound Picto Charts
38.4.1
How to Create a Databound Picto Chart
38.4.2
What Happens When You Create a Picto Chart from a Data Control
39
Creating Databound NBox Components
39.1
About ADF Data Visualization NBox Components
39.1.1
End User and Presentation Features
39.1.2
Data Visualization Components Use Cases and Examples
39.1.3
Additional Functionality for Data Visualization Components
39.2
Creating Databound NBox Components
39.2.1
How to Create an NBox Component Using ADF Data Controls
39.2.2
What Happens When You Create a Databound NBox
39.2.2.1
Bindings for NBox Components
39.2.2.2
Editing the NBox Binding
39.2.2.3
Code on the JSF page for an NBox Component
39.2.2.4
Modifying NBox Properties and Layout
40
Creating Databound Pivot Table and Pivot Filter Bar Components
40.1
About ADF Data Visualization Pivot Table and Pivot Filter Bar Components
40.1.1
Data Visualization Components Use Cases and Examples
40.1.2
End User and Presentation Features
40.1.3
Additional Functionality for Data Visualization Components
40.2
Creating Databound Pivot Tables
40.2.1
How to Create a Pivot Table Using ADF Data Controls
40.2.2
What Happens When You Use the Data Controls Panel to Create a Pivot Table
40.2.3
What You May Need to Know About Aggregating Attributes in the Pivot Table
40.2.3.1
Default Aggregation of Duplicate Data Rows
40.2.3.2
Custom Aggregation of Duplicate Rows
40.2.4
What You May Need to Know About Specifying an Initial Sort for a Pivot Table
40.2.5
What You May Need to Know About Configuring Editable Data Cells
41
Creating Databound Geographic and Thematic Map Components
41.1
About ADF Data Visualization Map Components
41.1.1
Use Cases and Examples
41.1.2
End User and Presentation Features
41.1.3
Additional Functionality for Data Visualization Components
41.2
Creating Databound Geographic Maps
41.2.1
How to Configure a Geographic Base Map
41.2.2
How to Create a Geographic Map with a Point Theme
41.2.3
How to Create Point Style Items for a Point Theme
41.2.4
What Happens When You Create a Geographic Map with a Point Theme
41.2.5
What You May Need to Know About Adding Custom Point Style Items to a Map Point Theme
41.2.6
How to Create a Geographic Map with a Color Theme
41.2.7
What Happens When You Add a Color Theme to a Geographic Map
41.2.8
What You May Need to Know About Customizing Colors in a Map Color Theme
41.2.9
How to Create a Geographic Map with a Pie or Bar Graph Theme
41.2.10
What Happens When You Add a Pie or Bar Graph Theme to a Geographic Map
41.3
Creating Databound Thematic Maps
41.3.1
How to Create a Thematic Map Using ADF Data Controls
41.3.2
What Happens When You Use Data Controls to Create a Thematic Map
41.3.3
How to Add Data Layers to Thematic Maps
41.3.3.1
How to Add an Area Data Layer to a Map Layer
41.3.3.2
How to Add a Point Data Layer to a Map Layer
41.3.4
Styling Areas, Markers and Images to Display Data
41.3.4.1
How to Style Areas to Display Data
41.3.4.2
How to Style Markers to Display Data using a Default Stamp
41.3.4.3
How to Style Markers to Display Data using Categorical Groups
41.3.4.4
What You May Need to Know About Styling Markers
41.3.4.5
What You May Need to Know About Default Style Values for Attribute Groups
41.3.4.6
How to Use Images to Display Data
41.3.4.7
How to Use a Marker Image Source to Display Data
41.3.5
What You May Need to Know About Base Map Location Ids
41.3.6
What You May Need to Know About Configuring Master-Detail Relationships
41.3.7
How to Define a Custom Map Layer
41.3.8
How to Configure Drilling in Thematic Maps
41.3.9
Creating Databound Legends
42
Creating Databound Gantt Chart and Timeline Components
42.1
About ADF Data Visualization Components
42.1.1
Data Visualization Components Use Cases and Examples
42.1.2
End User and Presentation Features
42.1.3
Additional Functionality for Data Visualization Components
42.2
Creating Databound Gantt Charts
42.2.1
How to Create a Databound Project Gantt Chart
42.2.2
What Happens When You Create a Project Gantt Chart from a Data Control
42.2.3
How to Create a Databound Resource Utilization Gantt Chart
42.2.4
What Happens When You Create a Resource Utilization Gantt Chart
42.2.5
How to Create a Databound Scheduling Gantt Chart
42.2.6
What Happens When You Create a Scheduling Gantt Chart
42.2.7
What You May Need to Know About Data Change Event Handling
42.3
Creating Databound Timelines
42.3.1
How to Create a Timeline Using ADF Data Controls
42.3.2
What Happens When You Use Data Controls to Create a Timeline
42.3.3
What You May Need to Know About Using Data Controls to Create a Dual Timeline
43
Creating Databound Hierarchy Viewer, Treemap, and Sunburst Components
43.1
About ADF Data Visualization Components
43.1.1
End User and Presentation Features
43.1.2
Data Visualization Components Use Cases and Examples
43.1.3
Additional Functionality for Data Visualization Components
43.2
Creating Databound Hierarchy Viewers
43.2.1
How to Create a Hierarchy Viewer Using ADF Data Controls
43.2.2
What Happens When You Create a Databound Hierarchy Viewer
43.2.3
How to Configure an Alternate View Object for a Databound Panel Card
43.2.3.1
What Happens When You Use an Alternate View Object for a Hierarchy Viewer Panel Card
43.2.4
How to Create a Databound Search in a Hierarchy Viewer
43.3
Creating Databound Treemaps and Sunbursts
43.3.1
How to Create Treemaps and Sunbursts Using ADF Data Controls
43.3.2
What Happens When You Create a Databound Treemap or Sunburst
43.3.3
What Happens at Runtime: How Databound Sunbursts or Treemaps Are Initially Displayed
44
Creating Databound Diagram Components
44.1
About ADF Data Visualization Diagram Components
44.1.1
End User and Presentation Features
44.1.2
Data Visualization Components Use Cases and Examples
44.1.3
Additional Functionality for Data Visualization Components
44.2
Creating Databound Diagram Components
44.2.1
How to Create a Diagram Using ADF Data Controls
44.2.2
What Happens When You Create a Databound Diagram
44.2.2.1
Bindings for Diagram Components
44.2.2.2
Code on the JSF Page for a Diagram Component
44.2.2.3
Default Client Layout Files and Location
44.2.2.4
Modifying Diagram Properties and Layout
45
Creating Databound Tag Cloud Components
45.1
About ADF Data Visualization Tag Cloud Components
45.1.1
Data Visualization Components Use Cases and Examples
45.1.2
End User and Presentation Features
45.1.3
Additional Functionality for Data Visualization Components
45.2
Creating Databound Tag Cloud Components
45.2.1
How to Create a Databound Tag Cloud
45.2.2
What Happens When You Create a Databound Tag Cloud
46
Using Contextual Events
46.1
About Creating Contextual Events
46.1.1
Contextual Events Use Cases and Examples
46.1.2
Additional Functionality for Contextual Events
46.2
Creating Contextual Events Declaratively
46.2.1
How to Publish Contextual Events
46.2.2
How to Subscribe to and Consume Contextual Events
46.2.3
What Happens When You Create Contextual Events
46.2.4
How to Control Contextual Events Dispatch
46.2.5
What Happens at Runtime: Contextual Events
46.3
Creating Contextual Events Manually
46.3.1
How to Create Contextual Events Manually
46.4
Creating Contextual Events Using Managed Beans
46.4.1
How to Create Contextual Events Using Managed Beans
46.4.2
What Happens When You Create Contextual Events Using Managed Beans
46.4.3
How to Dynamically Create and Handle Contextual Events Using Managed Beans
46.5
Creating Contextual Events Using Plain Java Objects (POJOs)
46.5.1
How to Configure a Generic Callback Message Handler for a Task Flow
46.6
Creating Contextual Events Using JavaScript
46.7
Creating the Event Map Manually
46.7.1
How to Create the Event Map Manually
46.8
Registering a Custom Dispatcher
46.8.1
How to Register a Custom Dispatcher
Part VI Completing Your Application
47
Enabling ADF Security in a Fusion Web Application
47.1
About ADF Security
47.1.1
Integration of ADF Security and Java Security
47.1.2
ADF Security Use Cases and Examples
47.1.3
Additional Functionality for ADF Security
47.2
ADF Security Process Overview
47.3
Enabling ADF Security
47.3.1
How to Enable ADF Security
47.3.2
What Happens When You Enable ADF Security
47.3.3
What Happens When You Generate a Default Form-Based Login Page
47.3.4
What You May Need to Know About the Configure ADF Security Wizard
47.3.5
What You May Need to Know About ADF Authentication
47.3.6
What You May Need to Know About the Built-In test-all Role
47.3.7
What You May Need to Know About the valid-users Role
47.4
Creating Application Roles
47.4.1
How to Create Application Roles
47.4.2
What Happens When You Create Application Roles
47.4.3
What You May Need to Know About Enterprise Roles and Application Roles
47.5
Defining ADF Security Policies
47.5.1
How to Make an ADF Resource Public
47.5.2
What Happens When You Make an ADF Resource Public
47.5.3
What Happens at Runtime: How the Built-in Roles Are Used
47.5.4
How to Define Policies for ADF Bounded Task Flows
47.5.5
How to Define Policies for Web Pages That Reference a Page Definition
47.5.6
How to Define Policies to Control User Access to ADF Methods
47.5.6.1
Creating a Resource Grant to Control Access to ADF Methods
47.5.6.2
Enforcing the Resource Grant in the User Interface
47.5.7
What Happens When You Define the Security Policy
47.5.8
What Happens at Runtime: How ADF Security Policies Are Enforced
47.5.9
What You May Need to Know About Defining Policies for Pages with No ADF Bindings
47.5.10
How to Use Regular Expressions to Define Policies on Groups of Resources
47.5.11
How to Define Policies for Data
47.5.11.1
Defining Permission Maps on ADF Entity Objects
47.5.11.2
Defining Permission Maps on ADF Entity Object Attributes
47.5.11.3
Granting Permissions on ADF Entity Objects and Entity Attributes
47.5.12
How to Aggregate Resource Grants as Entitlement Grants
47.5.13
What Happens After You Create an Entitlement Grant
47.6
Creating Test Users
47.6.1
How to Create Test Users in JDeveloper
47.6.2
What Happens When You Create Test Users
47.6.3
How to Associate Test Users with Application Roles
47.6.4
What Happens When You Configure Application Roles
47.7
Creating a Login Page
47.7.1
How to Create a Login Link Component and Add it to a Public Web Page for Explicit Authentication
47.7.2
How to Create a Login Page Specifically for Explicit Authentication
47.7.2.1
Creating Login Code for the Backing Bean
47.7.2.2
Creating an ADF Faces-Based Login Page Specifically for Explicit Authentication
47.7.2.3
Ensuring That the Login Page Is Public
47.7.3
How to Ensure That the Custom Login Page's Resources Are Accessible for Explicit Authentication
47.7.4
How to Create a Public Welcome Page
47.7.4.1
Ensuring That the Welcome Page Is Public
47.7.4.2
Adding Login and Logout Links
47.7.4.3
Hiding Links to Secured Pages
47.7.5
How to Redirect a User After Authentication
47.7.6
How to Trigger a Custom Login Page Specifically for Implicit Authentication
47.7.7
How to Ensure That the Redirect Destination Page is Available
47.7.8
What You May Need to Know About Redirecting to a Different Host Server
47.7.9
What You May Need to Know About Fusion Web Application Logout and Browser Caching
47.7.10
What You May Need to Know About IBM WebSphere Application Server
47.7.11
What You May Need to Know About Displaying Error Pages in Internet Explorer
47.8
Testing Security in JDeveloper
47.8.1
How to Configure, Deploy, and Run a Secure Application in JDeveloper
47.8.2
What Happens When You Configure Security Deployment Options
47.8.3
How to Use the Built-In test-all Application Role
47.8.4
What Happens at Runtime: How ADF Security Handles Authentication
47.8.5
What Happens at Runtime: How ADF Security Handles Authorization
47.9
Preparing the Secure Application for Deployment
47.9.1
How to Remove the test-all Role from the Application Policy Store
47.9.2
How to Remove Test Users from the Application Identity Store
47.9.3
How to Secure Resource Files Using a URL Constraint
47.10
Disabling ADF Security
47.10.1
How to Disable ADF Security
47.10.2
What Happens When You Disable ADF Security
47.11
Advanced Topics and Best Practices
47.11.1
Using Expression Language (EL) with ADF Security
47.11.1.1
How to Evaluate Policies Using EL
47.11.1.2
What Happens When You Use the Expression Builder Dialog
47.11.1.3
What You May Need to Know About Delayed Evaluation of EL
47.11.2
How to Protect UI Components Using OPSS Resource Permissions and EL
47.11.2.1
Creating the Custom Resource Type
47.11.2.2
Creating a Resource Grant for a Custom Resource Type
47.11.2.3
Associating the Rendering of a UI Component with a Resource Grant
47.11.3
How to Perform Authorization Checks for Entity Object Operations
47.11.4
Getting Information from the ADF Security Context
47.11.4.1
How to Determine Whether Security Is Enabled
47.11.4.2
How to Determine Whether the User Is Authenticated
47.11.4.3
How to Determine the Current User Name
47.11.4.4
How to Determine Membership of a Java EE Security Role
47.11.4.5
How to Determine Permission Using Java
47.11.5
Best Practices for Working with ADF Security
48
Testing and Debugging ADF Components
48.1
About ADF Debugging
48.2
Correcting Simple Oracle ADF Compilation Errors
48.3
Correcting Simple Oracle ADF Runtime Errors
48.4
Reloading Oracle ADF Metadata in Integrated WebLogic Server
48.5
Validating ADF Controller Metadata
48.6
Using the ADF Logger
48.6.1
How to Set ADF Logging Levels
48.6.2
How to Create an Oracle ADF Debugging Configuration
48.6.3
How to Turn On Diagnostic Logging for Non-Oracle ADF Loggers
48.6.4
How to Use the Log Analyzer to View Log Messages
48.6.4.1
Viewing Diagnostic Messages in the Log Analyzer
48.6.4.2
Using the Log Analyzer to Analyze the ADF Request
48.6.4.3
Sorting Diagnostic Messages By ADF Events
48.6.5
What You May Need to Know About ADF Loggers and Log Levels
48.6.6
What You May Need to Know About ADF Logging and Log Output
48.6.7
What You May Need to Know About ADF Logging and Oracle WebLogic Server
48.7
Using the Oracle ADF Model Tester for Testing and Debugging
48.7.1
How to Run in Debug Mode and Test with the Oracle ADF Model Tester
48.7.2
How to Run the Oracle ADF Model Tester and Test with a Specific Application Module Configuration
48.7.3
What Happens When You Run the Oracle ADF Model Tester in Debug Mode
48.7.4
How to Verify Runtime Artifacts in the Oracle ADF Model Tester
48.7.5
How to Refresh the Oracle ADF Model Tester with Application Changes
48.8
Using the ADF Declarative Debugger
48.8.1
Using ADF Source Code with the Debugger
48.8.2
How to Set Up the ADF Source User Library
48.8.3
How to Add the ADF Source Library to a Project
48.8.4
How to Use the EL Expression Evaluator
48.8.5
How to View and Export Stack Trace Information
48.9
Setting ADF Declarative Breakpoints
48.9.1
How to Set and Use Task Flow Activity Breakpoints
48.9.2
How to Set and Use Page Definition Executable Breakpoints
48.9.3
How to Set and Use Page Definition Action Binding Breakpoints
48.9.4
How to Set and Use Page Definition Value Binding Breakpoints
48.9.5
How to Set and Use Page Definition Contextual Event Breakpoints
48.9.6
How to Set and Use ADF Lifecycle Phase Breakpoints
48.9.7
How to Use the ADF Structure Window
48.9.8
How to Use the ADF Data Window
48.9.9
What Happens When You Set an ADF Declarative Breakpoint
48.10
Setting Breakpoints in Java Code and Groovy Script
48.10.1
How to Set Breakpoints in Groovy Script
48.10.2
How to Set Java Breakpoints on Classes and Methods
48.10.3
How to Optimize Use of the Source Editor
48.10.4
How to Set Breakpoints and Debug Using ADF Source Code
48.10.5
How to Use Debug Libraries for Symbolic Debugging
48.10.6
What You May Need to Know About Setting Java Code Breakpoints
48.10.7
How to Edit Breakpoints for Improved Control
48.10.8
How to Filter Your View of Class Members
48.10.9
What You May Need to Know About Oracle ADF Breakpoints
48.11
Debugging Groovy Expressions in Business Components
48.11.1
How to Debug Groovy Expressions
48.11.2
How to Control Groovy Debugging
48.11.3
What Happens When You Debug Groovy Expressions
48.12
Regression Testing with JUnit
48.12.1
How to Obtain the JUnit Extension
48.12.2
How to Create a JUnit Test Case
48.12.3
How to Create a JUnit Test Fixture
48.12.4
How to Create a JUnit Test Suite
48.12.5
How to Create a Business Components Test Suite
48.12.6
How to a Create Business Components Test Fixture
48.12.7
How to Run a JUnit Test Suite as Part of an Ant Build Script
49
Refactoring a Fusion Web Application
49.1
About Refactoring a Fusion Web Application
49.1.1
Refactoring Use Cases and Examples
49.1.2
Additional Functionality for Refactoring
49.2
Renaming Files
49.3
Moving JSF Pages
49.4
Refactoring pagedef.xml Bindings Objects
49.5
Refactoring ADF Business Components
49.6
Refactoring ADF Business Component Object Attributes
49.7
Refactoring Named Elements
49.8
Refactoring ADF Task Flows
49.9
Refactoring the DataBindings.cpx File
49.10
Refactoring Limitations
49.11
Moving the ADF Business Components Project Configuration File (.jpx)
50
Reusing Application Components
50.1
About Reusable Components
50.1.1
Creating Reusable Components
50.1.1.1
Naming Conventions
50.1.1.1.1
Naming Considerations for Packages
50.1.1.1.2
Naming Considerations for Connections
50.1.1.1.3
Naming Considerations for Applications with EJB Projects
50.1.1.2
The Naming Process for the ADF Library JAR Deployment Profile
50.1.1.3
Keeping the Relevant Project
50.1.1.4
Selecting the Relevant Feature
50.1.1.5
Selecting Paths and Folders
50.1.1.6
Including Connections Within Reusable Components
50.1.2
Reusable ADF Components Use Cases and Examples
50.1.3
Additional Functionality for Reusable ADF Components
50.1.4
Common Functionality of Reusable ADF Components
50.1.4.1
Using Extension Libraries
50.1.4.2
Using the Resources Window
50.2
Packaging a Reusable ADF Component into an ADF Library
50.2.1
How to Package a Component into an ADF Library JAR
50.2.2
What Happens When You Package a Project to an ADF Library JAR
50.2.2.1
Application Modules Files Packaged into a JAR
50.2.2.2
Data Controls Files Packaged into a JAR
50.2.2.3
Task Flows Files Packaged into a JAR
50.2.2.4
Page Templates Files Packaged into a JAR
50.2.2.5
Declarative Components Files Packaged into a JAR
50.2.3
How to Place and Access JDeveloper JAR Files
50.3
Adding ADF Library Components into Projects
50.3.1
How to Add an ADF Library JAR into a Project using the Resources Window
50.3.2
How to Add an ADF Library JAR into a Project Manually
50.3.3
What Happens When You Add an ADF Library JAR to a Project
50.3.4
What You May Need to Know About Using ADF Library Components
50.3.4.1
Using Data Controls
50.3.4.2
Using Application Modules
50.3.4.3
Using Business Components
50.3.4.4
Using Task Flows
50.3.4.5
Using Page Templates
50.3.4.6
Using Declarative Components
50.3.5
What You May Need to Know About Differentiating ADF Library Components
50.3.6
What Happens at Runtime: How ADF Libraries are Added to a Project
50.4
Removing an ADF Library JAR from a Project
50.4.1
How to Remove an ADF Library JAR from a Project Using the Resources Window
50.4.2
How to Remove an ADF Library JAR from a Project Manually
51
Customizing Applications with MDS
51.1
About Customization and MDS
51.1.1
Customization and Layers: Use Cases and Examples
51.1.2
Static and Dynamic Customization Content
51.1.3
Additional Functionality for Customization
51.2
Developing a Customizable Application
51.2.1
How to Create Customization Classes
51.2.1.1
Customization Classes
51.2.1.2
Implementing the getValue() Method in Your Customization Class
51.2.1.3
Creating a Customization Class
51.2.2
What You May Need to Know About Customization Classes
51.2.3
How to Consume Customization Classes
51.2.3.1
Making Customization Classes Available to JDeveloper at Design Time
51.2.3.2
Making Customization Classes Available to the Application at Runtime
51.2.4
How to Enable Seeded Customizations for User Interface Projects
51.2.5
How to Enable Seeded Customizations in Existing Pages
51.2.6
How to Enable Customizations in Resource Bundles
51.2.7
How to Configure the adf-config.xml File
51.2.8
What Happens When You Create a Customizable Application
51.2.9
What You May Need to Know About Customizable Objects and Applications
51.3
Customizing an Application
51.3.1
Introducing the Customization Developer Role
51.3.2
How to Switch to the Customization Developer Role in JDeveloper
51.3.3
Introducing the Tip Layer
51.3.4
How to Configure Customization Layers
51.3.4.1
Configuring Layer Values Globally
51.3.4.2
Configuring Workspace-Level Layer Values from the Studio Developer Role
51.3.4.3
Configuring Workspace-Level Layer Values from the Customization Developer Role
51.3.5
How to Customize Metadata in JDeveloper
51.3.6
What Happens When You Customize an Application
51.3.7
How to Customize ADF Library Artifacts in JDeveloper
51.3.7.1
Customizing an ADF Library Artifact
51.3.7.2
Specifying a Location for ADF Library Customizations
51.3.8
How to View ADF Library Runtime Customizations from Exported JARs
51.3.9
What Happens When You Customize ADF Library Artifacts
51.3.10
What Happens at Runtime: How Customizations are Applied
51.3.11
What You May Need to Know About Customized Applications
51.3.11.1
Customization and Integrated Source Control
51.3.11.2
Editing Resource Bundles in Customized Applications
51.4
How to Package and Deploy Customized Applications
51.4.1
Implicitly Creating a MAR Profile
51.4.2
Explicitly Creating a MAR Profile
51.5
Extended Metadata Properties
51.5.1
How to Edit Extended Metadata Properties
51.5.2
How to Enable Customization for Design Time at Runtime
51.5.2.1
Editing Customization Properties in the Properties window
51.5.2.2
Using a Standalone Annotations File to Specify Type-Level Customization Properties
51.6
Enabling Runtime Modification of Customization Configuration
52
Allowing User Customizations at Runtime
52.1
About User Customizations
52.1.1
Runtime User Customization Use Cases and Examples
52.1.2
Additional Functionality for Runtime User Customization
52.2
Enabling Runtime User Customizations for a Fusion Web Application
52.2.1
How to Enable User Customizations
52.2.2
What Happens When You Enable User Customizations
52.3
Configuring User Customizations
52.3.1
How to Configure Change Persistence
52.3.2
What Happens When You Configure Change Persistence
52.4
Controlling User Customizations in Individual JSF Pages
52.4.1
How to Control User Customizations on a JSF Page
52.4.2
What Happens at Runtime: How Changes are Persisted
52.4.3
What You May Need to Know About Using Change Persistence on Templates and Regions
52.5
Implementing Custom User Customizations
52.5.1
What You May Need to Know About the Change Persistence Framework API
52.5.2
How to Create Code for Custom User Customizations
52.6
Creating Implicit Change Persistence in Custom Components
52.6.1
How to Set Implicit Change Persistence For Attribute Values that Use Events
52.6.2
How to Set Implicit Change Persistence For Other Attribute Values
53
Using the Active Data Service
53.1
About the Active Data Service
53.1.1
Active Data Service Use Cases and Examples
53.1.2
Limitations of the Active Data Service Framework
53.1.3
Active Data Service Framework
53.1.4
Data Transport Modes
53.2
Configuring the Active Data Service
53.2.1
How to Configure the Active Data Service
53.2.2
What You May Need to Know About Configuring an ADS Transport Mode
53.2.3
How to Configure Session Timeout for Active Data Service
53.3
Configuring Components to Use the Active Data Service
53.3.1
How to Configure Components to Use the Active Data Service Without the Active Data Proxy
53.3.2
How to Configure Components to Use the Active Data Service with the Active Data Proxy
53.3.3
What You May Need to Know About Displaying Active Data in ADF Trees
53.3.4
What Happens at Runtime: How Components Render When Bound to Active Data
53.3.5
What You May Need to Know About Running ADS in a Google Chrome Browser
53.4
Using the Active Data Proxy
53.4.1
How to Use the Active Data Proxy
53.5
What You May Need to Know About Maintaining Read Consistency
53.6
Using the Active Data with a Scalar Model
53.6.1
How to Use the Active Data with a Scalar Model
54
Configuring High Availability for Fusion Web Applications
54.1
About Oracle ADF High Availability
54.1.1
Oracle ADF Scope and Session State Considerations
54.1.2
Oracle ADF Failover and Expected Behavior Considerations
54.1.2.1
Session Failover Requirements
54.1.2.2
Expected Behavior for Application Failover
54.1.3
ADF Application Module for Oracle RAC Considerations
54.2
Configuring Oracle ADF for High Availability
54.2.1
How to Configure Application Modules for High Availability
54.2.2
How to Enable Support for Replicating HTTP Session State
54.2.3
How to Ensure Oracle ADF Receives Notifications From Managed Bean Changes
54.2.4
What You May Need to Know About Using Application Scoped Managed Beans in a Clustered Environment
54.2.5
How to Disable Design Time Optimizations
54.3
Troubleshooting Fusion Web Applications for High Availability
54.3.1
How to Test the Fusion Web Application With Failover Mode Enabled
54.3.2
How to Troubleshoot High Availability Issues at Design Time
54.3.3
How to Troubleshoot High Availability Issues After Deployment
54.3.3.1
Verifying the JRF Runtime Installation
54.3.3.2
Verifying the Success of All Application Deployments
54.3.4
How to Troubleshoot Oracle ADF Replication and Failover Issues
55
Deploying Fusion Web Applications
55.1
About Deploying Fusion Web Applications
55.1.1
Developing Applications with Integrated WebLogic Server
55.1.2
Developing Applications to Deploy to Standalone Application Server
55.2
Running a Fusion Web Application in Integrated WebLogic Server
55.2.1
How to Run an Application in Integrated WebLogic Server
55.2.2
How to Run an Application with Metadata in Integrated WebLogic Server
55.3
Preparing the Application
55.3.1
How to Create a Connection to the Target Application Server
55.3.2
How to Create Deployment Profiles
55.3.2.1
Creating a WAR Deployment Profile
55.3.2.2
Creating a MAR Deployment Profile
55.3.2.3
Creating an Application Level EAR Deployment Profile
55.3.2.4
Adding Customization Classes into a JAR
55.3.2.5
Delivering Customization Classes as a Shared Library
55.3.2.6
Viewing and Changing Deployment Profile Properties
55.3.3
How to Create and Edit Deployment Descriptors
55.3.3.1
Creating Deployment Descriptors
55.3.3.2
Viewing or Modifying Deployment Descriptor Properties
55.3.3.3
Configuring the application.xml File for Application Server Compatibility
55.3.3.4
Configuring the web.xml File for Application Server Compatibility
55.3.3.5
Enabling the Application for RUEI and Click History
55.3.4
How to Deploy Applications with ADF Security Enabled
55.3.4.1
Applications That Will Run Using Oracle Single Sign-On (SSO)
55.3.4.2
Configuring Security for Weblogic Server
55.3.4.2.1
Applications with JDBC URL for WebLogic
55.3.4.2.2
Applications with JDBC Data Source for WebLogic
55.3.4.3
Configuring Security for Websphere Application Server
55.3.4.3.1
Applications with JDBC URL for WebSphere
55.3.4.3.2
Applications with JDBC Data Source for WebSphere
55.3.4.3.3
Editing the web.xml File to Protect the Application Root for WebSphere
55.3.5
How to Replicate Memory Scopes in a Clustered Environment
55.3.6
How to Enable the Application for ADF MBeans
55.3.7
What You May Need to Know About JDBC Data Source for Oracle WebLogic Server
55.4
Deploying the Application
55.4.1
How to Deploy to the Application Server from JDeveloper
55.4.2
How to Create an EAR File for Deployment
55.4.3
How to Deploy New Customizations Applied to ADF Library
55.4.3.1
Exporting Customization to a Deployed Application
55.4.3.2
Deploying Customizations to a JAR
55.4.4
What You May Need to Know About ADF Libraries
55.4.5
What You May Need to Know About EAR Files and Packaging
55.4.6
How to Deploy the Application Using Scripts and Ant
55.4.7
How to Deploy ADF Faces Library JARs with the Application
55.4.8
What You May Need to Know About JDeveloper Runtime Libraries
55.5
Postdeployment Configuration
55.5.1
How to Migrate an Application
55.5.2
How to Configure the Application Using ADF MBeans
55.5.3
How to Configure WebSphere for Result Set Reuse
55.6
Testing the Application and Verifying Deployment
56
Using State Management in a Fusion Web Application
56.1
About Fusion Web Application State Management
56.1.1
What You May Need to Know About Multi-Step Tasks
56.1.2
What You May Need to Know About the Stateless HTTP Protocol
56.1.3
What You May Need to Know About Session Cookies
56.1.4
What You May Need to Know About Using HttpSession
56.2
Managing When Passivation and Activation Occurs
56.2.1
How to Confirm That Fusion Web Applications Use Optimistic Locking
56.2.2
What You May Need to Know About Pending Changes Across HTTP Requests
56.2.3
What You May Need to Know About Release Levels and postChanges() Method
56.3
Testing to Ensure Your Application Module is Activation-Safe
56.3.1
How To Disable Application Module Pooling to Test Activation
56.3.2
What You May Need to Know About the jbo.ampool.doampooling Configuration Parameter
56.3.3
What You May Need to Know About State Management and Data Consistency
56.3.4
What You May Need to Know About State Management and Subclassed Entity Objects
56.4
Controlling Where Model State Is Saved
56.4.1
How to Control the Schema Where the State Management Table Resides
56.4.2
How to Configure the Passivation Store
56.4.3
What Happens at Runtime: What Model State Is Saved and When It Is Cleaned Up
56.5
Cleaning Up the Model State
56.5.1
How to Clean Up Temporary Storage Tables Resulting from Passivation
56.5.2
What Happens at Runtime: When a Passivation Record Is Updated
56.5.3
What Happens at Runtime: When a Passivation Snapshot is Removed on Unmanaged Release
56.5.4
What Happens at Runtime: Passivation Snapshot Retained in Failover Mode
56.6
Managing the HttpSession in Fusion Web Applications
56.6.1
How to Configure the Implicit Timeout Due to User Inactivity
56.6.2
How to Code an Explicit HttpSession Timeout
56.6.3
What Happens at Runtime: How Application Modules are Handled When the HTTP Times Out
56.7
Managing Custom User-Specific Information During Passivation
56.7.1
How to Passivate Custom User-Specific Information
56.7.2
What Happens When You Passivate Custom Information
56.7.3
What You May Need to Know About Activating Custom Information
56.8
Managing the State of View Objects During Passivation
56.8.1
How to Manage the State of View Objects
56.8.2
What You May Need to Know About Passivating View Objects
56.8.3
How to Manage the State of Transient View Objects and Attributes
56.8.4
What You May Need to Know About Passivating Transient View Objects
56.8.5
How to Use Transient View Objects to Store Session-level Global Variables
57
Tuning Application Module Pools
57.1
About Application Module Pooling
57.1.1
Application Module Pools
57.1.2
Deployment Environment Scenarios and Pooling
57.1.2.1
Single Oracle WebLogic Server Domain, Single Oracle WebLogic Server Instance, Single JVM
57.1.2.2
Multiple Oracle WebLogic Server Domains, Multiple Oracle WebLogic Server Instance, Multiple JVMs
57.2
Setting Pool Configuration Parameters
57.2.1
How to Set Configuration Properties Declaratively
57.2.2
What Happens When You Set Configuration Properties Declaratively
57.2.3
How to Programmatically Set Configuration Properties
57.2.4
What You May Need to Know About Configuration Property Scopes
57.2.5
What You May Need to Know About Application Module Pool Configuration Parameters
57.2.5.1
Pool Behavior Parameters
57.2.5.2
Pool Sizing Parameters
57.2.5.3
Pool Cleanup Parameters
57.2.6
What You May Need to Know About Optimizing Application Module Pooling
57.3
Initializing Database State and Pooling Considerations
57.3.1
How to Set Database State Per User
Appendixes
A
Oracle ADF XML Files
A.1
About ADF Metadata Files
A.2
ADF File Overview Diagram
A.2.1
Oracle ADF Data Control Files
A.2.2
Oracle ADF Data Binding Files
A.2.3
Web Configuration Files
A.3
ADF File Syntax Diagram
A.4
adfm.xml
A.5
modelProjectName.jpx
A.6
bc4j.xcfg
A.7
DataBindings.cpx
A.7.1
DataBindings.cpx Syntax
A.7.2
DataBindings.cpx Sample
A.8
pageNamePageDef.xml
A.8.1
PageDef.xml Syntax
A.9
adfc-config.xml
A.10
task-flow-definition.xml
A.11
adf-config.xml
A.12
adf-settings.xml
A.13
web.xml
A.14
logging.xml
B
Oracle ADF Binding Properties
C
ADF Security Permission Grants
D
Most Commonly Used ADF Business Components Methods
D.1
Methods for Creating Your Own Layer of Framework Base Classes
D.2
Methods Used in the Client Tier
D.2.1
ApplicationModule Interface
D.2.2
Transaction Interface
D.2.3
ViewObject Interface
D.2.4
RowSet Interface
D.2.5
RowSetIterator Interface
D.2.6
Row Interface
D.2.7
StructureDef Interface
D.2.8
AttributeDef Interface
D.2.9
AttributeHints Interface
D.3
Methods Used in the Business Service Tier
D.3.1
Controlling Custom Java Files for Your Components
D.3.2
ApplicationModuleImpl Class
D.3.2.1
Methods You Typically Call on ApplicationModuleImpl
D.3.2.2
Methods You Typically Write in Your Custom ApplicationModuleImpl Subclass
D.3.2.3
Methods You Typically Override in Your Custom ApplicationModuleImpl Subclass
D.3.3
DBTransactionImpl2 Class
D.3.3.1
Methods You Typically Call on DBTransaction
D.3.3.2
Methods You Typically Override in Your Custom DBTransactionImpl2 Subclass
D.3.4
EntityImpl Class
D.3.4.1
Methods You Typically Call on EntityImpl
D.3.4.2
Methods You Typically Write in Your Custom EntityImpl Subclass
D.3.4.3
Methods You Typically Override in Your Custom EntityImpl Subclass
D.3.5
EntityDefImpl Class
D.3.5.1
Methods You Typically Call on EntityDefImpl
D.3.5.2
Methods You Typically Write in Your Custom EntityDefImpl Class
D.3.5.3
Methods You Typically Override in Your Custom EntityDefImpl
D.3.6
ViewObjectImpl Class
D.3.6.1
Methods You Typically Call on ViewObjectImpl
D.3.6.2
Methods You Typically Write in Your Custom ViewObjectImpl Subclass
D.3.6.3
Methods You Typically Override in Your Custom ViewObjectImpl Subclass
D.3.7
ViewRowImpl Class
D.3.7.1
Methods You Typically Call on ViewRowImpl
D.3.7.2
Methods You Typically Write in Your Custom ViewRowImpl Class
D.3.7.3
Methods You Typically Override in Your Custom ViewRowImpl Subclass
E
ADF Business Components Java EE Design Pattern Catalog
F
ADF Equivalents of Common Oracle Forms Triggers
F.1
Validation and Defaulting (Business Logic)
F.2
Query Processing
F.3
Database Connection
F.4
Transaction "Post" Processing (Record Cache)
F.5
Error Handling
G
Performing Common Oracle Forms Tasks in Oracle ADF
G.1
Concepts Familiar to Oracle Forms Developers
G.2
Performing Tasks Related to Data
G.2.1
How to Retrieve Lookup Display Values for Foreign Keys
G.2.2
How to Get the Sysdate from the Database
G.2.3
How to Implement an Isolation Mode That Is Not Read Consistent
G.2.4
How to Implement Calculated Fields
G.2.5
How to Implement Mirrored Items
G.2.6
How to Use Database Columns of Type CLOB or BLOB
G.3
Performing Tasks Related to the User Interface
G.3.1
How to Lay Out a Page
G.3.2
How to Stack Canvases
G.3.3
How to Implement a Master-Detail Screen
G.3.4
How to Implement an Enter Query Screen
G.3.5
How to Implement an Updatable Multi-Record Table
G.3.6
How to Create a Popup List of Values
G.3.7
How to Implement a Dropdown List as a List of Values
G.3.8
How to Implement a Dropdown List with Values from Another Table
G.3.9
How to Implement Immediate Locking
G.3.10
How to Throw an Error When a Record Is Locked
H
Deploying ADF Applications to GlassFish
H.1
About Deploying ADF Applications to GlassFish Server
H.1.1
Developing Applications with Integrated WebLogic Server
H.1.2
Developing Applications to Deploy to Standalone GlassFish Server
H.2
Running an ADF Application in Integrated WebLogic Server
H.2.1
How to Run an Application in Integrated WebLogic Server
H.3
Preparing the Application
H.3.1
How to Create a Connection to the Target Application Server
H.3.2
How to Create Deployment Profiles
H.3.2.1
Creating a WAR Deployment Profile
H.3.2.2
Creating an Application-Level EAR Deployment Profile
H.3.2.3
Viewing and Changing Deployment Profile Properties
H.3.3
How to Create and Edit Deployment Descriptors
H.3.3.1
Creating Deployment Descriptors
H.3.3.2
Viewing or Modifying Deployment Descriptor Properties
H.3.3.3
Configuring the application.xml File for Application Server Compatibility
H.3.3.4
Configuring the web.xml File for GlassFish Server Compatibility
H.3.4
How to Enable JDBC Data Source for GlassFish
H.3.5
How to Change Initial Context Factory
H.4
Deploying the Application
H.4.1
How to Deploy to the Application Server from JDeveloper
H.4.2
What You May Need to Know About Deploying from JDeveloper
H.4.3
How to Create an EAR File for Deployment
H.4.4
What You May Need to Know About ADF Libraries
H.4.5
What You May Need to Know About EAR Files and Packaging
H.4.6
How to Deploy to the Application Server using asadmin Commands
H.4.7
How to Deploy the Application Using Scripts and Ant
H.5
Testing the Application and Verifying Deployment
Scripting on this page enhances content navigation, but does not change the content in any way.