1/67
Contents
Title and Copyright Information
Preface
Audience
Documentation Accessibility
Related Documents
Conventions
What's New in This Guide in Release 11.1.2.4.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.2.1
ADF Business Components
1.2.2
ADF Model Layer
1.2.3
ADF Controller
1.2.4
ADF Faces Rich Client
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 Layer
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
Other Resources for Learning Oracle ADF
1.6
Generation of Complete Web Tier Using Oracle JHeadstart
2
Introduction to the ADF Sample Application
2.1
About the Oracle Fusion Order Demo
2.2
Setting Up the Fusion Order Demo Application
2.2.1
How to Download the Application Resources
2.2.2
How to Install the Fusion Order Demo Schema
2.2.3
Overview of the Fusion Order Demo Schema
2.2.3.1
Translation Support in the Fusion Order Demo Schema
2.2.3.2
Lookup Tables in the Fusion Order Demo Schema
2.3
Running the Fusion Order Demo Application StoreFront Module
2.4
Running the Fusion Order Demo Standalone Applications
2.4.1
How to Run the Standalone Applications
2.4.2
Standalone Applications in the DevGuideExamples Application Workspace
2.4.3
Standalone Applications in the AdvancedExamples Application Workspace
2.4.4
Standalone Applications in the AdvancedEntityExamples Application Workspace
2.4.5
Standalone Applications in the AdvancedViewObjectExamples Application Workspace
2.4.6
Standalone Applications in the AdvancedUIExamples Application Workspaces
2.5
Taking a Look at the Fusion Order Demo Application
2.5.1
Anonymous Browsing
2.5.1.1
Viewing Product Details
2.5.1.2
Browsing the Product Catalog
2.5.1.3
Searching for Products
2.5.2
The Login Process
2.5.3
The Ordering Process
2.5.4
The Customer Registration Process
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 Features
3.1.2
ADF Business Components Core Objects
3.2
Comparison to Familiar 4GL Tools
3.2.1
Familiar Concepts for Oracle Forms Developers
3.2.1.1
Similarities Between the Application Module and a "Headless" Form Module
3.2.1.2
Similarities Between the Entity Object and a Forms Record Manager
3.2.1.3
Similarities Between the View Object and a Data Block
3.2.2
Familiar Concepts for PeopleTools Developers
3.2.2.1
Similarities Between the Application Module and a "Headless" Component
3.2.2.2
Similarities Between the Entity Object and a Record Definition
3.2.2.3
Similarities Between the View Object and a Row Set
3.2.3
Familiar Concepts for Siebel Tools Developers
3.2.3.1
Similarities Between the entity Object and a Table Object
3.2.3.2
Similarities Between the View Object and a Business Component
3.2.3.3
Similarities Between the Application Module and a Business Object
3.2.4
Familiar Functionality for ADO.NET Developers
3.2.4.1
Similarities Between the Application Module and a Data Set
3.2.4.2
Similarities Between the Entity Object and a Data Adapter
3.2.4.3
Similarities Between the View Object and a Data Table
3.3
Overview of Design Time Facilities
3.3.1
Choosing a Connection, SQL Platform, and Data Type Map
3.3.2
What You May Need to Know About Displaying Numeric Values
3.3.3
Creating New Components Using Wizards
3.3.4
Creating New Components Using the Context Menu
3.3.5
Editing Components Using the Component Overview Editor
3.3.6
Displaying Related Components Using Diagrams
3.3.7
Visualizing, Creating, and Editing Components Using UML Diagrams
3.3.8
Testing Application Modules Using the Oracle ADF Model Tester
3.3.9
Refactoring Components
3.4
Overview of the Oracle ADF Active Data Model
3.4.1
A More Generic Business Service Solution
3.4.2
Typical Scenarios for an Active Data Model
3.4.3
Active Data Model Support for Custom Code
3.5
Overview of the ADF Business Components Implementation
3.5.1
Standard Java and XML
3.5.2
Application Server or Database Independence
3.5.3
Java EE Design Pattern Support
3.5.4
Source Code Organization
3.5.5
Package Naming Conventions
3.5.6
Metadata with Optional Custom Java Code
3.5.6.1
Example of an XML-Only Component
3.5.6.2
Example of a Component with Custom Java Class
3.5.7
Basic Data Types
3.5.8
Generic Versus Strongly-Typed APIs
3.5.9
Custom Interface Support for Client-Accessible Components
3.5.9.1
Framework Client Interfaces for Components
3.5.9.2
Custom Client Interfaces for Components
3.6
Overview of Groovy Scripting Language Support
3.6.1
Referencing Business Components Objects in Groovy Expressions
3.6.2
Referencing Custom Business Components Methods and Attributes in Groovy Expressions
3.6.2.1
Referencing Members of the Same Business Component
3.6.2.2
Referencing Members of Other Business Components
3.6.3
Manipulating Business Component Attribute Values in Groovy Expressions
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
What Happens When Tables Have Foreign Key Relationships
4.2.3.2
What Happens 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 an Entity Diagram 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
How to Define Formatters and 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: Invoking a Business Logic Group
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
How to Protect Against Losing Simultaneously Updated Data
4.10.12
How to Track Created and Modified Dates Using the History Column
4.10.13
How to Configure Composition Behavior
4.10.13.1
Orphan-Row Protection for New Composed Entities
4.10.13.2
Ordering of Changes Saved to the Database
4.10.13.3
Cascade Update of Composed Details from Refresh-On-Insert Primary Keys
4.10.13.4
Cascade Delete Support
4.10.13.5
Cascade Update of Foreign Key Attributes When Primary Key Changes
4.10.13.6
Locking of Composite Parent Entities
4.10.13.7
Updating of Composing Parent History Attributes
4.10.14
How to Set the Discriminator Attribute for Entity Object Inheritance Hierarchies
4.10.15
How to Define Alternate Key Values
4.10.16
What Happens When You Define Alternate Key Values
4.10.17
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 Publish 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 Classes
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.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.8.3
Optimizing Entity Accessor Access by Retaining the Row Set
4.15
Creating Custom, Validated Data Types Using Domains
4.15.1
How to Create a Domain
4.15.2
What Happens When You Create a Domain
4.15.3
What You May Need to Know About Domains
4.15.3.1
Domains as Entity and View Object Attributes
4.15.3.2
DataCreationException in Custom validate() Method
4.15.3.3
String Domains and String Value Aggregation
4.15.3.4
Simple Domains and Built-In Types
4.15.3.5
Simple Domains As Immutable Java Classes
4.15.3.6
Creating Domains for Oracle Object Types When Useful
4.15.3.7
Quickly Navigating to the Domain Class
4.15.3.8
Domains Packaged in the Common JAR
4.15.3.9
Custom Domain Properties and Attributes in Entity and View Objects
4.15.3.10
Inherited Restrictive Properties of Domains in Entity and View Objects
4.16
Creating New History Types
4.16.1
How to Create New History Types
4.16.2
How to Remove a History Type
4.17
Basing an Entity Object on a PL/SQL Package API
4.17.1
How to Create an Entity Object Based on a View
4.17.2
What Happens When You Create an Entity Object Based on a View
4.17.3
How to Centralize Details for PL/SQL-Based Entities into a Base Class
4.17.4
How to Implement the Stored Procedure Calls for DML Operations
4.17.5
How to Add Select and Lock Handling
4.17.5.1
Updating PLSQLEntityImpl Base Class to Handle Lock and Select
4.17.5.2
Implementing Lock and Select for the Product Entity
4.17.5.3
Refreshing the Entity Object After RowInconsistentException
4.18
Basing an Entity Object on a Join View or Remote DBLink
4.18.1
How to Disable the Use of the RETURNING Clause
4.18.2
What Happens at Runtime: Disabling the RETURNING Clause
4.19
Using Inheritance in Your Business Domain Layer
4.19.1
Understanding When Inheritance Can Be Useful
4.19.2
How to Create Entity Objects in an Inheritance Hierarchy
4.19.2.1
Identifying the Discriminator Column and Distinct Values
4.19.2.2
Identifying the Subset of Attributes Relevant to Each Kind of Entity
4.19.2.3
Creating the Base Entity Object in an Inheritance Hierarchy
4.19.2.4
Creating a Subtype Entity Object in an Inheritance Hierarchy
4.19.3
How to Add Methods to Entity Objects in an Inheritance Hierarchy
4.19.3.1
Adding Methods Common to All Entity Objects in the Hierarchy
4.19.3.2
Overriding Common Methods in a Subtype Entity Object
4.19.3.3
Adding Methods Specific to a Subtype Entity Object
4.19.4
What You May Need to Know About Using Inheritance
4.19.4.1
When to Introduce a New Base Entity
4.19.4.2
Subtype Entity Objects and the findByPrimaryKey() Method
4.19.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
How to Create an Expert Mode, Read-Only View Object
5.2.4
What Happens When You Create a Read-Only View Object
5.2.5
How to Edit a View Object
5.2.5.1
Overriding the Inherited Properties from Underlying Entity Object Attributes
5.2.5.2
Controlling the Length, Precision, and Scale of View Object Attributes
5.2.5.3
Converting a Read-Only View Object to Allow Attribute Updates
5.2.5.4
Customizing View Object Attribute Display in the Overview Editor
5.2.5.5
Modifying the Order of Attributes in the View Object Source File
5.2.6
How to Show View Objects in a Business Components Diagram
5.3
Populating View Object Rows with Static Data
5.3.1
How to Create Static View Objects with Data You Enter
5.3.2
How to Create Static View Objects with Data You Import
5.3.3
What Happens When You Create a Static List View Object
5.3.4
How to Edit Static List View Objects
5.3.5
What You May Need to Know About Static List View Objects
5.4
Limiting View Object Rows Using Effective Date Ranges
5.4.1
How to Create a Date-Effective View Object
5.4.2
How to Create New View Rows Using Date-Effective View Objects
5.4.3
How to Update Date-Effective View Rows
5.4.4
How to Delete Date-Effective View Rows
5.4.5
What Happens When You Create a Date-Effective View Object
5.4.6
What You May Need to Know About Date-Effective View Objects and View Links
5.5
Working with Multiple Tables in Join Query Results
5.5.1
How to Create Joins for Entity-Based View Objects
5.5.2
How to Select Additional Attributes from Reference Entity Usages
5.5.3
How to Remove Unnecessary Key Attributes from Reference Entity Usages
5.5.4
How to Hide the Primary Key Attributes from Reference Entity Usages
5.5.5
How to Modify a Default Join Clause to Be an Outer Join When Appropriate
5.5.6
What Happens When You Reference Entities in a View Object
5.5.7
How to Create Joins for Read-Only View Objects
5.5.8
How to Test the Join View
5.5.9
How to Use the SQL Statement Dialog with Read-Only View Objects
5.5.10
What You May Need to Know About Join View Objects
5.6
Working with Multiple Tables in a Master-Detail Hierarchy
5.6.1
How to Create a Master-Detail Hierarchy for Entity-Based View Objects
5.6.2
How to Create a Master-Detail Hierarchy Based on View Objects Alone
5.6.3
What Happens When You Create Master-Detail Hierarchies Using View Links
5.6.4
How to Enable Active Master-Detail Coordination in the Data Model
5.6.5
How to Test Master-Detail Coordination
5.6.6
How to Access the Detail Collection Using the View Link Accessor
5.6.6.1
Accessing Attributes of Row by Name
5.6.6.2
Programmatically Accessing a Detail Collection Using the View Link Accessor
5.6.6.3
Optimizing View Link Accessor Access to Display Master-Detail Data
5.6.7
How to Create a Master-Detail Hierarchy for Entity Objects Consisting of Transient-Only Attributes
5.7
Working with a Single Table in a Recursive Master-Detail Hierarchy
5.7.1
How to Create a Recursive Master-Detail Hierarchy for an Entity-Based View Object
5.7.1.1
Creating an Association-Based, Self-Referential View Link
5.7.1.2
Exposing the View Instance and Filter with a View Criteria
5.7.2
What Happens When You Create a Recursive Master-Detail Hierarchy
5.8
Working with View Objects in Declarative SQL Mode
5.8.1
How to Create Declarative SQL View Objects
5.8.1.1
Enabling Declarative SQL Mode for All New View Objects
5.8.1.2
Enabling Declarative SQL Mode for Specific View Objects
5.8.2
How to Filter Declarative SQL-Based View Objects When Table Joins Apply
5.8.3
How to Filter Master-Detail Related View Objects with Declarative SQL Mode
5.8.4
How to Support Programmatic Execution of Declarative SQL Mode View Objects
5.8.4.1
Forcing Attribute Queries for All Declarative SQL Mode View Objects
5.8.4.2
Forcing Attribute Queries for Specific Declarative SQL Mode View Objects
5.8.5
What Happens When You Create a View Object in Declarative SQL Mode
5.8.6
What Happens at Runtime: Declarative SQL Mode Queries
5.8.7
What You May Need to Know About Overriding Declarative SQL Mode Defaults
5.8.8
What You May Need to Know About Working Programmatically with Declarative SQL Mode View Objects
5.9
Working with View Objects in Expert Mode
5.9.1
How to Customize SQL Statements in Expert Mode
5.9.2
How to Name Attributes in Expert Mode
5.9.3
What Happens When You Enable Expert Mode
5.9.4
What You May Need to Know About Expert Mode
5.9.4.1
Expert Mode Provides Limited Attribute Mapping Assistance
5.9.4.2
Expert Mode Drops Custom Edits
5.9.4.3
Expert Mode Ignores Changes to SQL Expressions
5.9.4.4
Expert Mode Returns Error for SQL Calculations that Change Entity Attributes
5.9.4.5
Formatting of the SQL Statement in Expert Mode
5.9.4.6
Expert Mode Wraps Queries as Inline Views
5.9.4.7
Limitation of Inline View Wrapping at Runtime
5.9.4.8
Expert Mode Changes May Affect Dependent Objects
5.10
Working with Bind Variables
5.10.1
How to Add Bind Variables to a View Object Definition
5.10.2
How to Reference the Current User in a Named Bind Variable Using Groovy
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 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
An Error Related to Clearing Bind Variables
5.10.8.2
Errors Related to the Names of Bind Variables
5.10.8.3
Default Value of NULL for Bind Variables
5.11
Working with Named View Criteria
5.11.1
How to Create Named View Criteria Declaratively
5.11.2
What Happens When You Create a Named View Criteria
5.11.3
What You May Need to Know About Bind Variable Options
5.11.4
What You May Need to Know About Nested Expressions
5.11.5
How to Set User Interface Hints on View Criteria to Support Search Forms
5.11.6
How to Test View Criteria Using the Oracle ADF Model Tester
5.11.7
How to Create View Criteria Programmatically
5.11.8
What Happens at Runtime: How the View Criteria Is Applied to a View Object
5.11.9
What You May Need to Know About the View Criteria API
5.11.9.1
Referencing Attribute Names in View Criteria
5.11.9.2
Referencing Bind Variables in View Criteria
5.11.9.3
Altering Compound Search Conditions Using Multiple View Criteria
5.11.9.4
Searching for a Row Whose Attribute Value Is NULL
5.11.9.5
Searching for Rows Whose Attribute Value Matches a Value in a List
5.11.9.6
Searching Case-Insensitively
5.11.9.7
Clearing View Criteria in Effect
5.11.10
What You May Need to Know About Query-by-Example Criteria
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 an 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
5.14
Adding Calculated and Transient Attributes to a View Object
5.14.1
How to Add a SQL-Calculated Attribute
5.14.2
What Happens When You Add a SQL-Calculated Attribute
5.14.3
How to Add a Transient Attribute
5.14.4
How to Add a Validation Rule to a Transient Attribute
5.14.5
What Happens When You Add a Transient Attribute
5.14.6
Adding Java Code in the View Row Class to Perform Calculation
5.14.7
What You May Need to Know About Transient Attributes
6
Testing View Instance Queries
6.1
About View Instance Queries
6.1.1
View Instance Use Cases and Examples
6.1.2
Additional Functionality for View Instances
6.2
Creating an Application Module to Test View Instances
6.2.1
How to Create the Application Module with Individual View Object Instances
6.2.2
How to Create the Application Module with Master-Detail View Object Instances
6.3
Testing View Object Instances Using the Oracle ADF Model Tester
6.3.1
How to Run the Oracle ADF Model Tester
6.3.2
How to Test Entity-Based View Objects Interactively
6.3.3
How to Update the Oracle ADF Model Tester to Display Project Changes
6.3.4
What Happens When You Use the Oracle ADF Model Tester
6.3.5
How to Simulate End-User Interaction in the Oracle ADF Model Tester
6.3.5.1
Testing Master-Detail Coordination
6.3.5.2
Testing UI Hints
6.3.5.3
Testing Business Domain Layer Validation
6.3.5.4
Testing Alternate Language Message Bundles and UI Hints
6.3.5.5
Testing View Objects That Reference Entity Usages
6.3.5.6
Testing Row Creation and Default Value Generation
6.3.5.7
Testing That New Detail Rows Have Correct Foreign Keys
6.3.6
How to Test Multiuser Scenarios in the Oracle ADF Model Tester
6.3.7
How to Customize Configuration Options Before Running the Tester
6.3.8
How to Enable ADF Business Components Debug Diagnostics
6.3.9
What Happens at Runtime: How View Objects and Entity Objects Cooperate
6.3.9.1
What Happens at Runtime: After a View Object Executes Its Query
6.3.9.2
What Happens at Runtime: After a View Row Attribute Is Modified
6.3.9.3
What Happens at Runtime: After a Foreign Key Attribute is Changed
6.3.9.4
What Happens at Runtime: After a Transaction is Committed
6.3.9.5
What Happens at Runtime: After a View Object Requeries Data
6.3.10
What You May Need to Know About Optimizing View Object Runtime Performance
6.4
Testing View Object Instances Programmatically
6.4.1
ViewObject Interface Methods for Working with the View Object's Default RowSet
6.4.1.1
The Role of the Key Object in a View Row or Entity Row
6.4.1.2
The Role of the Entity Cache in the Transaction
6.4.2
How to Create a Command-Line Java Test Client
6.4.2.1
Generating a Test Client with Skeleton Code
6.4.2.2
Modifying the Skeleton Code to Create the Test Client
6.4.3
What Happens When You Run a Test Client Program
6.4.4
What You May Need to Know About Running a Test Client
6.4.5
How to Count the Number of Rows in a Row Set
6.4.6
How to Access a Detail Collection Using the View Link Accessor
6.4.7
How to Iterate Over a Master-Detail-Detail Hierarchy
6.4.8
How to Find a Row and Update a Foreign Key Value
6.4.9
How to Create a New Row for a View Object Instance
6.4.10
How to Retrieve the Row Key Identifying a Row
6.4.11
How to Authenticate Test Users in the Test Client
7
Defining Validation and Business Rules Declaratively
7.1
About Declarative Validation
7.1.1
Declarative Validation Use Cases and Examples
7.1.2
Additional Functionality for Declarative Validation
7.2
Understanding the Validation Cycle
7.2.1
Types of Entity Object Validation Rules
7.2.1.1
Attribute-Level Validation Rules
7.2.1.2
Entity-Level Validation Rules
7.2.2
Understanding Commit Processing and Validation
7.2.3
Understanding the Impact of Composition on Validation Order
7.2.4
Avoiding Infinite Validation Cycles
7.2.5
What Happens When Validations Fail
7.2.6
Understanding Entity Objects Row States
7.2.7
Understanding Bundled Exception Mode
7.3
Adding Validation Rules to Entity Objects and Attributes
7.3.1
How to Add a Validation Rule to an Entity or Attribute
7.3.2
How to View and Edit a Validation Rule on an Entity Object or Attribute
7.3.3
What Happens When You Add a Validation Rule
7.3.4
What You May Need to Know About Entity and Attribute Validation Rules
7.3.5
What You May Need to Know About List of Values and Attribute Validation Rules
7.4
Using the Built-in Declarative Validation Rules
7.4.1
How to Ensure That Key Values Are Unique
7.4.2
What Happens When You Use a Unique Key Validator
7.4.3
How to Validate Based on a Comparison
7.4.4
What Happens When You Validate Based on a Comparison
7.4.5
How to Validate Using a List of Values
7.4.6
What Happens When You Validate Using a List of Values
7.4.7
What You May Need to Know About the List Validator
7.4.8
How to Make Sure a Value Falls Within a Certain Range
7.4.9
What Happens When You Use a Range Validator
7.4.10
How to Validate Against a Number of Bytes or Characters
7.4.11
What Happens When You Validate Against a Number of Bytes or Characters
7.4.12
How to Validate Using a Regular Expression
7.4.13
What Happens When You Validate Using a Regular Expression
7.4.14
How to Use the Average, Count, or Sum to Validate a Collection
7.4.15
What Happens When You Use Collection Validation
7.4.16
How to Determine Whether a Key Exists
7.4.17
What Happens When You Use a Key Exists Validator
7.4.18
What You May Need to Know About Declarative Validators and View Accessors
7.5
Using Groovy Expressions For Validation and Business Rules
7.5.1
How to Reference Entity Object Methods in Groovy Validation Expressions
7.5.2
How to Validate Using a True/False Expression
7.5.3
What Happens When You Add a Groovy Expression
7.6
Triggering Validation Execution
7.6.1
How to Specify Which Attributes Fire Validation
7.6.2
What Happens When You Constrain Validation Execution with Triggering Attributes
7.6.3
How to Set Preconditions for Validation
7.6.4
How to Set Transaction-Level Validation
7.6.5
What You May Need to Know About the Order of Validation Execution
7.7
Creating Validation Error Messages
7.7.1
How to Create Validation Error Messages
7.7.2
How to Localize Validation Messages
7.7.3
How to Conditionally Raise Error Messages Using Groovy
7.7.4
How to Embed a Groovy Expression in an Error Message
7.8
Setting the Severity Level for Validation Exceptions
7.9
Bulk Validation in SQL
8
Implementing Validation and Business Rules Programmatically
8.1
About Programmatic Business Rules
8.1.1
Programmatic Business Rules Use Cases and Examples
8.1.2
Additional Functionality for Programmatic Business Rules
8.2
Using Method Validators
8.2.1
How to Create an Attribute-Level Method Validator
8.2.2
What Happens When You Create an Attribute-Level Method Validator
8.2.3
How to Create an Entity-Level Method Validator
8.2.4
What Happens When You Create an Entity-Level Method Validator
8.2.5
What You May Need to Know About Translating Validation Rule Error Messages
8.3
Assigning Programmatically Derived Attribute Values
8.3.1
How to Provide Default Values for New Rows at Create Time
8.3.1.1
Choosing Between create() and initDefaultExpressionAttributes() Methods
8.3.1.2
Eagerly Defaulting an Attribute Value from a Database Sequence
8.3.2
How to Assign Derived Values Before Saving
8.3.3
How to Assign Derived Values When an Attribute Value Is Set
8.4
Undoing Pending Changes to an Entity Using the Refresh Method
8.4.1
How to Control What Happens to New Rows During a Refresh
8.4.2
How to Cascade Refresh to Composed Children Entity Rows
8.5
Using View Objects for Validation
8.5.1
How to Use View Accessors for Validation Against View Objects
8.5.2
How to Validate Conditions Related to All Entities of a Given Type
8.5.3
What You May Need to Know About Row Set Access with View Accessors
8.6
Accessing Related Entity Rows Using Association Accessors
8.6.1
How to Access Related Entity Rows
8.6.2
How to Access Related Entity Row Sets
8.7
Referencing Information About the Authenticated User
8.8
Accessing Original Attribute Values
8.9
Storing Information About the Current User Session
8.9.1
How to Store Information About the Current User Session
8.9.2
How to Use Groovy to Access Information About the Current User Session
8.10
Accessing the Current Date and Time
8.11
Sending Notifications Upon a Successful Commit
8.12
Conditionally Preventing an Entity Row from Being Removed
8.13
Determining Conditional Updatability for Attributes
8.14
Implementing Custom Validation Rules
8.14.1
How to Create a Custom Validation Rule
8.14.2
Adding a Design Time Bean Customizer for Your Rule
8.14.3
How to Register and Using a Custom Rule in JDeveloper
8.14.3.1
Registering a Custom Validator at the Project Level
8.14.3.2
Registering a Custom Validator at the IDE Level
9
Implementing Business Services with Application Modules
9.1
About Application Modules
9.1.1
Application Module Use Cases and Examples
9.1.2
Additional Functionality for Application Modules
9.2
Creating and Modifying an Application Module
9.2.1
How to Create an Application Module
9.2.2
What Happens When You Create an Application Module
9.2.3
How to Add a View Object Instance to an Application Module
9.2.3.1
Adding a View Object Instance to an Existing Application Module
9.2.3.2
Adding Master-Detail View Object Instances to an Application Module
9.2.3.3
Customizing a View Object Instance that You Add to an Application Module
9.2.4
What Happens When You Add a View Object Instance to an Application Module
9.2.5
How to Edit an Existing Application Module
9.2.6
How to Change the Data Control Name Before You Begin Building Pages
9.2.7
What You May Need to Know About Application Module Granularity
9.2.8
What You May Need to Know About View Object Components and View Object Instances
9.3
Configuring Your Application Module Database Connection
9.3.1
How to Use a JDBC Data Source Connection Type
9.3.2
How to Use a JDBC URL Connection Type
9.3.3
What Happens When You Create an Application Module Database Connection
9.3.4
How to Change Your Application Module's Runtime Configuration
9.3.5
How to Change the Database Connection for Your Project
9.4
Defining Nested Application Modules
9.4.1
How to Define a Nested Application Module
9.4.2
What You May Need to Know About Root Application Modules Versus Nested Application Module Usages
9.5
Creating an Application Module Diagram for Your Business Service
9.5.1
How to Create an Application Module Diagram
9.5.2
What Happens When You Create an Application Module Diagram
9.5.3
How to Use the Diagram to Edit the Application Module
9.5.4
How to Control Diagram Display Options
9.5.5
How to Filter Method Names Displayed in the Diagram
9.5.6
How to Show Related Objects and Implementation Files in the Diagram
9.5.7
How to Publish the Application Module Diagram
9.5.8
How to Test the Application Module from the Diagram
9.6
Supporting Multipage Units of Work
9.6.1
How to Simulate State Management in the Oracle ADF Model Tester
9.6.2
What Happens at Runtime: How the Application Uses Application Module Pooling and State Management
9.7
Customizing an Application Module with Service Methods
9.7.1
How to Generate a Custom Class for an Application Module
9.7.2
What Happens When You Generate a Custom Class for an Application Module
9.7.3
What You May Need to Know About Default Code Generation
9.7.4
How to Add a Custom Service Method to an Application Module
9.7.5
How to Test the Custom Application Module Using a Static Main Method
9.7.6
What You May Need to Know About Programmatic Row Set Iteration
9.8
Customizing Application Module Message Strings
9.8.1
How to Add a Resource Bundle to an Application Module
9.8.2
What Happens When You Add a Resource Bundle to an Application Module
9.9
Publishing Custom Service Methods to UI Clients
9.9.1
How to Publish a Custom Method on the Application Module's Client Interface
9.9.2
What Happens When You Publish Custom Service Methods
9.9.3
How to Generate Client Interfaces for View Objects and View Rows
9.9.4
How to Test Custom Service Methods Using the Oracle ADF Model Tester
9.9.5
What You May Need to Know About Method Signatures on the Client Interface
9.9.6
What You May Need to Know About Passing Information from the Data Model
9.10
Working Programmatically with an Application Module's Client Interface
9.10.1
How to Work Programmatically with an Application Module's Client Interface
9.10.2
What Happens at Runtime: How the Application Module's Client Interface is Accessed
9.10.3
How to Access an Application Module Client Interface in a Fusion Web Application
9.11
Overriding Built-in Framework Methods
9.11.1
How to Override a Built-in Framework Method
9.11.2
What Happens When You Override a Built-in Framework Method
9.11.3
How to Override prepareSession() to Set Up an Application Module for a New User Session
9.12
Calling a Web Service from an Application Module
9.12.1
How to Call an External Service Programmatically
9.12.1.1
Creating a Web Service Proxy Class to Programmatically Access the Service
9.12.1.2
Calling the Web Service Proxy Template to Invoke the Service
9.12.1.3
Calling a Web Service Method Using the Proxy Class in an Application Module
9.12.2
What Happens When You Create the Web Service Proxy
9.12.3
What Happens at Runtime: When You Call a Web Service Using a Web Service Proxy Class
9.12.4
What You May Need to Know About Web Service Proxies
9.12.4.1
Using a Try-Catch Block to Handle Web Service Exceptions
9.12.4.2
Separating Application Module and Web Services Transactions
9.12.4.3
Setting Browser Proxy Information
9.12.4.4
Invoking Application Modules with a Web Service Proxy Class
10
Sharing Application Module View Instances
10.1
About Shared Application Modules
10.1.1
Shared Application Module Use Cases and Examples
10.1.2
Additional Functionality for Shared Application Modules
10.2
Sharing an Application Module Instance
10.2.1
How to Create a Shared Application Module Instance
10.2.2
What Happens When You Define a Shared Application Module
10.2.3
What You May Need to Know About Design Time Scope of the Shared Application Module
10.2.4
What You May Need to Know About the Design Time Scope of View Instances of the Shared Application Module
10.2.5
What You May Need to Know About Managing the Number of Shared Query Collections
10.2.6
What You May Need to Know About Shared Application Modules and Connection Pooling
10.3
Defining a Base View Object for Use with Lookup Tables
10.3.1
How to Create a Base View Object Definition for a Lookup Table
10.3.2
What Happens When You Create a Base View Object
10.3.3
How to Define the WHERE Clause of the Lookup View Object Using View Criteria
10.3.4
What Happens When You Create a View Criteria with the Editor
10.3.5
What Happens at Runtime: How a View Instance Accesses Lookup Data
10.4
Accessing View Instances of the Shared Service
10.4.1
How to Create a View Accessor for an Entity Object or View Object
10.4.2
How to Validate Against the Attribute Values Specified by a View Accessor
10.4.3
What Happens When You Define a View Accessor Validator
10.4.4
What You May Need to Know About Dynamic Filtering with View Accessors
10.4.5
How to Create an LOV Based on a Lookup Table
10.4.6
What Happens When You Define an LOV for a View Object Attribute
10.4.7
How to Automatically Refresh the View Object of the View Accessor
10.4.8
What Happens at Runtime: How the Attribute Displays the List of Values
10.4.9
What You May Need to Know About Displaying List of Values From a Lookup Table
10.4.10
What You May Need to Know About Programmatically Invoking Database Change Notifications
10.4.11
What You May Need to Know About Inheritance of AttributeDef Properties
10.4.12
What You May Need to Know About Using Validators
10.5
Testing View Object Instances in a Shared Application Module
10.5.1
How to Test the Base View Object Using the Oracle ADF Model Tester
10.5.2
How to Test LOV-Enabled Attributes Using the Oracle ADF Model Tester
10.5.3
What Happens When You Use the Oracle ADF Model Tester
10.5.4
What Happens at Runtime: How Another Service Accesses the Shared Application Module Cache
11
Integrating Service-Enabled Application Modules
11.1
About Service-Enabled Application Modules
11.1.1
Service-Enabled Application Module Use Cases and Examples
11.1.2
Additional Functionality for Service-Enabled Application Modules
11.2
Publishing Service-Enabled Application Modules
11.2.1
How to Enable the Application Module Service Interface
11.2.2
What Happens When You Create an Application Module Service Interface
11.2.2.1
Annotations Generated in the Remote Common Interface
11.2.2.2
Web Service Schema Generated in the Remote Service Schema File
11.2.2.3
WSDL Generated in the Remote Service Definition File
11.2.2.4
Stateless Session Bean Specified by the Remote Server Class
11.2.2.5
Lookup Defined in the connections.xml File
11.2.3
What You May Need to Know About Method Signatures on the ADF Web Service Interface
11.2.4
How to Service-Enable Individual View Objects
11.2.5
How to Customize the SDO Properties of Service-Enabled View Objects
11.2.5.1
Excluding Individual SDO Properties in a Generated SDO Component
11.2.5.2
Associating Related SDO Properties Using Complex Data Types
11.2.6
How to Support Nested Processing in Service-Enabled Master-Detail View Objects
11.2.7
What Happens When You Create SDO Classes
11.2.7.1
Property Accessors Generated in the SDO Interface
11.2.7.2
View Object Interface Implemented by SDO Class
11.2.7.3
View Object Schema Generated in the SDO Schema File
11.2.7.4
Container Object Implemented by SDO Result Class and Interface
11.2.8
How to Expose a Declarative Find Operation Filtered By a Required Bind Variable
11.2.9
How to Expose a Custom Find Method Filtered By a Required Bind Variable
11.2.10
How to Generate Asynchronous ADF Web Service Methods
11.2.11
What Happens When You Generate Asynchronous ADF Web Service Methods
11.2.12
What Happens at Runtime: How the Asynchronous Call Is Made
11.2.13
How to Set Preferences for Generating the ADF Web Service Interface
11.2.14
How to Secure the ADF Web Service for Access By SOAP Clients
11.2.15
How to Secure the ADF Web Service for Access By RMI Clients
11.2.15.1
Enabling Authentication for RMI Clients
11.2.15.2
Configuring Authorization for RMI Clients
11.2.16
How to Grant Test Users Access to the Service
11.2.17
How to Enable Support for Binary Attachments for SOAP Clients
11.2.18
How to Test the Web Service Using Integrated WebLogic Server
11.2.19
How to Prevent Custom Service Methods from Timing Out
11.2.20
How to Deploy Web Services to Oracle WebLogic Server
11.3
Accessing Remote Data Over the Service-Enabled Application Module
11.3.1
How to Use Service-Enabled Entity Objects and View Objects
11.3.1.1
Creating Entity Objects Backed by SDO Services
11.3.1.2
Using Complex Data Types with Service-Backed Entity Object Attributes
11.3.1.3
Creating View Objects Backed by SDO Services
11.3.2
What Happens When You Create Service-Backed Business Components
11.3.3
How to Update the Data Model for Service-Backed Business Components
11.3.4
How to Configure the Service-Backed Business Components Runtime
11.3.4.1
Adding the SDO Client Library to the Classpath
11.3.4.2
Registering the ADF Business Components Service in the Consuming Application's connections.xml for the EJB RMI Protocol
11.3.4.3
Registering the ADF Business Components Service in the Consuming Application's connections.xml for the SOAP Protocol
11.3.4.4
Registering the ADF Business Components Service in the Consuming Application's connections.xml for Fabric SDO Binding
11.3.5
How to Test the Service-Backed Components in the Oracle ADF Model Tester
11.3.6
How to Invoke Operations of the Service-Backed Components in the Consuming Application
11.3.7
What You May Need to Know About Creating Service Data Objects in the Consuming Application
11.3.8
What Happens at Runtime: How the Application Accesses the Published Application Module
11.3.9
What You May Need to Know About Service-Backed Entity Objects and View Objects
12
Extending Business Components Functionality
12.1
About Extending Business Components Functionality
12.1.1
Extending Business Components Use Cases and Examples
12.1.2
Additional Functionality for Extending Business Components
12.2
Creating ADF Business Components Extension Classes
12.2.1
How To Create a Framework Extension Class
12.2.2
What Happens When You Create a Framework Extension Class
12.2.3
What You May Need to Know About Customizing Framework Extension Bases Classes
12.2.4
How to Base an ADF Component on a Framework Extension Class
12.2.5
How to Define Framework Extension Classes for All New Components
12.2.6
How to Define Framework Extension Classes for All New Projects
12.2.7
What Happens When You Base a Component on a Framework Extension Class
12.2.7.1
XML-Only Components
12.2.7.2
Components with Custom Java Classes
12.2.8
What You May Need to Know About Updating the Extends Clause in Custom Component Java Files
12.2.9
How to Package Your Framework Extension Layer in a JAR File
12.2.10
How to Create a Library Definition for Your Framework Extension JAR File
12.3
Customizing Framework Behavior with Extension Classes
12.3.1
How to Access Runtime Metadata For View Objects and Entity Objects
12.3.2
How to Implement Generic Functionality Using Runtime Metadata
12.3.3
How to Implement Generic Functionality Driven by Custom Properties
12.3.4
What You May Need to Know About the Kinds of Attributes
12.3.5
What You May Need to Know About Custom Properties
12.4
Creating Generic Extension Interfaces
12.5
Invoking Stored Procedures and Functions
12.5.1
How to Invoke Stored Procedures with No Arguments
12.5.2
How to Invoke Stored Procedure with Only IN Arguments
12.5.3
How to Invoke Stored Function with Only IN Arguments
12.5.4
How to Call Other Types of Stored Procedures
12.6
Accessing the Current Database Transaction
12.7
Customizing Business Components Error Messages
12.7.1
How to Customize Base ADF Business Components Error Messages
12.7.2
What Happens When You Customize Base ADF Business Components Error Messages
12.7.3
How to Display Customize Error Messages as Nested Exceptions
12.7.4
How to Customize Error Messages for Database Constraint Violations
12.7.5
How to Implement a Custom Constraint Error Handling Routine
12.7.5.1
Creating a Custom Database Transaction Framework Extension Class
12.7.5.2
Configuring an Application Module to Use a Custom Database Transaction Class
12.8
Creating Extended Components Using Inheritance
12.8.1
How To Create a Component That Extends Another
12.8.2
How To Extend a Component After Creation
12.8.3
What Happens When You Create a Component That Extends Another
12.8.3.1
Understanding an Extended Component's XML Descriptor
12.8.3.2
Understanding Java Code Generation for an Extended Component
12.8.4
What You May Need to Know
12.8.4.1
You Can Use Parent Classes and Interfaces to Work with Extended Components
12.8.4.2
Class Extends is Disabled for Extended Components
12.8.4.3
Interesting Aspects You Can Extend for Key Component Types
12.8.4.4
Extended Components Have Attribute Indices Relative to Parent
12.9
Substituting Extended Components in a Delivered Application
12.9.1
How To Substitute an Extended Component
12.9.2
What Happens When You Substitute
12.9.3
How to Enable the Substituted Components in the Base Application
Part III Using the ADF Model Layer
13
Using ADF Model in a Fusion Web Application
13.1
About ADF Data Binding
13.2
Additional Functionality
13.3
Exposing Application Modules with Oracle ADF Data Controls
13.3.1
How an Application Module Data Control Appears in the Data Controls Panel
13.3.1.1
How the Data Model and Service Methods Appear in the Data Controls Panel
13.3.1.2
How Transaction Control Operations Appear in the Data Controls Panel
13.3.1.3
How View Objects Appear in the Data Controls Panel
13.3.1.4
How Nested Application Modules Appear in the Data Controls Panel
13.3.2
How to Open the Data Controls Panel
13.3.3
How to Refresh the Data Controls Panel
13.3.4
Packaging a Data Control for Use in Another Project
13.4
Using the Data Controls Panel
13.4.1
How to Use the Data Controls Panel
13.4.2
What Happens When You Use the Data Controls Panel
13.4.3
What Happens at Runtime: How the Binding Context Works
13.5
Working with the DataBindings.cpx File
13.5.1
How JDeveloper Creates a DataBindings.cpx File
13.5.2
What Happens When JDeveloper Creates a DataBindings.cpx File
13.6
Configuring the ADF Binding Filter
13.6.1
How JDeveloper Configures the ADF Binding Filter
13.6.2
What Happens When JDeveloper Configures an ADF Binding Filter
13.6.3
What Happens at Runtime: How the ADF Binding Filter Works
13.7
Working with Page Definition Files
13.7.1
How JDeveloper Creates a Page Definition File
13.7.2
What Happens When JDeveloper Creates a Page Definition File
13.7.2.1
Bindings Binding Objects Defined in the Page Definition File
13.7.2.2
Executable Binding Objects Defined in the Page Definition File
13.8
Creating ADF Data Binding EL Expressions
13.8.1
How to Create an ADF Data Binding EL Expression
13.8.1.1
Opening the Expression Builder from the Property Inspector
13.8.1.2
Using the Expression Builder
13.8.2
What You May Need to Know About ADF Binding Properties
13.9
Using Simple UI First Development
13.9.1
How to Apply ADF Model Data Binding to Existing UI Components
13.9.2
What Happens When You Apply ADF Model Data Binding to UI Components
14
Exposing Web Services Using the ADF Model Layer
14.1
About Web Services in Fusion Web Applications
14.1.1
Web Services Use Cases and Examples
14.1.2
Additional Functionality for Web Services in Fusion Applications
14.2
Creating Web Service Data Controls
14.2.1
How to Create a Web Service Data Control
14.2.2
How to Include a Header Parameter for a Web Service Data Control
14.2.3
How to Adjust the Endpoint for a Web Service Data Control
14.2.4
How to Refresh a Web Service Data Control
14.2.5
What You May Need to Know About Primary Keys in Web Service Data Controls
14.2.6
What You May Need to Know About Web Service Data Controls
14.3
Creating a New Web Service Connection
14.3.1
How to Create a New Web Service Connection
14.4
Securing Web Service Data Controls
14.4.1
WS-Security Specification
14.4.2
Using Key Stores
14.4.3
How to Define Web Service Data Control Security
15
Exposing URL Services Using the ADF Model Layer
15.1
About Using ADF Model with URL Services
15.1.1
URL Services Use Cases and Examples
15.1.2
Additional Functionality for URL Services
15.2
Exposing URL Services with ADF Data Controls
15.2.1
How to Create a URL Connection
15.2.2
How to Create a URL Service Data Control
15.2.3
What Happens When You Create a URL Service Data Control
15.2.4
How to Include a Custom Header Parameter for a URL Service Data Control
15.2.5
What You May Need to Know About Primary Keys in URL Service Data Controls
15.2.6
What You May Need to Know About URL Service Data Controls
15.3
Using URL Service Data Controls
16
Using Validation in the ADF Model Layer
16.1
About ADF Model Layer Validation
16.1.1
ADF Model Layer Validation Use Cases and Examples
16.1.2
Additional Functionality for ADF Model Layer Validation
16.2
Defining Validation Rules in the ADF Model Layer
16.2.1
How to Add Validation
16.2.2
What Happens at Runtime: Model Validation Rules
16.3
Customizing Error Handling
16.3.1
How to Customize the Detail Portion of a Message
16.3.2
How to Write an Error Handler to Deal with Multiple Threads
17
Designing a Page Using Placeholder Data Controls
17.1
About Placeholder Data Controls
17.1.1
Placeholder Data Controls Use Cases and Examples
17.1.2
Additional Functionality for Placeholder Data Controls
17.2
Creating Placeholder Data Controls
17.2.1
How to Create a Placeholder Data Control
17.2.2
What Happens When You Create a Placeholder Data Control
17.3
Creating Placeholder Data Types
17.3.1
How to Create a Placeholder Data Type
17.3.2
What Happens When You Create a Placeholder Data Type
17.3.3
How to Configure a Placeholder Data Type Attribute to Be an LOV
17.3.3.1
Configuring an Attribute to Be a Fixed LOV
17.3.3.2
Configuring an Attribute to Be a Dynamic LOV
17.3.4
How to Create Master-Detail Data Types
17.3.5
What Happens When You Create a Master-Detail Data Type
17.3.6
How to Add Sample Data
17.3.6.1
Adding Sample Data Manually
17.3.6.2
Importing Sample Data
17.3.7
What Happens When You Add Sample Data
17.4
Using Placeholder Data Controls
17.4.1
Limitations of Placeholder Data Controls
17.4.2
Creating Layout
17.4.3
Creating a Search Form
17.4.4
Binding Components
17.4.5
Rebinding Components
17.4.6
Packaging Placeholder Data Controls to ADF Library JARs
Part IV Creating ADF Task Flows
18
Getting Started with ADF Task Flows
18.1
About ADF Task Flows
18.1.1
About Unbounded Task Flows
18.1.2
About Bounded Task Flows
18.1.3
About Control Flows
18.1.4
ADF Task Flow Use Cases and Examples
18.1.5
Additional Functionality for ADF Task Flows
18.2
Creating a Task Flow
18.2.1
How to Create a Task Flow
18.2.2
What Happens When You Create a Task Flow
18.2.3
What You May Need to Know About the Default Activity in a Bounded Task Flow
18.2.4
What You May Need to Know About Memory Scope for Task Flows
18.2.5
What Happens at Runtime: Using Task Flows
18.3
Adding Activities to a Task Flow
18.3.1
How to Add an Activity to a Task Flow
18.3.2
What Happens When You Add an Activity to a Task Flow
18.4
Adding Control Flow Rules to Task Flows
18.4.1
How to Add a Control Flow Rule to a Task Flow
18.4.2
How to Add a Wildcard Control Flow Rule
18.4.3
What Happens When You Create a Control Flow Rule
18.4.4
What Happens at Runtime: Evaluating Control Flow Rules
18.5
Testing Task Flows
18.5.1
How to Run a Bounded Task Flow That Contains Pages
18.5.2
How to Run a Bounded Task Flow That Uses Page Fragments
18.5.3
How to Run a Bounded Task Flow That Has Parameters
18.5.4
How to Run a JSF Page When Testing a Task Flow
18.5.5
How to Run the Unbounded Task Flow
18.5.6
How to Set a Run Configuration for a Project
18.6
Refactoring to Create New Task Flows and Task Flow Templates
18.6.1
How to Create a Bounded Task Flow from Selected Activities
18.6.2
How to Create a Task Flow from JSF Pages
18.6.3
How to Convert Bounded Task Flows
18.7
What You Should Know About Task Flow Constraints
19
Working with Task Flow Activities
19.1
About Task Flow Activities
19.1.1
Task Flow Activities Use Cases and Examples
19.1.2
Additional Functionality for Task Flow Activities
19.2
Using View Activities
19.2.1
Passing Control Between View Activities
19.2.1.1
How to Pass Control Between View Activities
19.2.1.2
What Happens When You Pass Control Between View Activities
19.2.2
Bookmarking View Activities
19.2.2.1
How to Create a Bookmarkable View Activity
19.2.2.2
What Happens When You Designate a View as Bookmarkable
19.2.3
Specifying HTTP Redirect for a View Activity
19.2.3.1
How to Specify HTTP Redirect for a View Activity
19.2.3.2
What Happens When You Specify HTTP Redirect for a View Activity
19.3
Using URL View Activities
19.3.1
How to Add a URL View Activity to a Task Flow
19.3.2
What You May Need to Know About URL View Activities
19.4
Using Router Activities
19.4.1
How to Configure Control Flow Using a Router Activity
19.4.2
What Happens When You Configure Control Flow Using a Router Activity
19.5
Using Method Call Activities
19.5.1
How to Add a Method Call Activity
19.5.2
How to Specify Method Parameters and Return Values
19.5.3
What Happens When You Add a Method Call Activity
19.6
Using Task Flow Call Activities
19.6.1
How to Call a Bounded Task Flow Using a Task Flow Call Activity
19.6.2
What Happens When You Call a Bounded Task Flow Using a Task Flow Call Activity
19.6.3
How to Specify Input Parameters on a Task Flow Call Activity
19.6.4
How to Call a Bounded Task Flow Using a URL
19.6.5
What Happens When You Configure a Bounded Task Flow to be Invoked by a URL
19.6.6
What You May Need to Know About Calling a Bounded Task Flow Using a URL
19.6.7
How to Specify Before and After Listeners
19.6.8
What Happens When You Add a Task Flow Call Activity
19.6.9
What Happens at Runtime When a Task Flow Call Activity Invokes a Task Flow
19.7
Using Task Flow Return Activities
19.8
Using Save Point Restore Activities
19.9
Using Parent Action Activities
19.10
Using Task Flow Activities with Page Definition Files
19.10.1
How to Associate a Page Definition File with a Task Flow Activity
19.10.2
What Happens When You Associate a Page Definition File with a Task Flow Activity
20
Using Parameters in Task Flows
20.1
About Using Parameters in Task Flows
20.1.1
Task Flow Parameters Use Cases and Examples
20.1.2
Additional Functionality for Task Flows Using Parameters
20.2
Passing Parameters to a View Activity
20.2.1
How to Pass Parameters to a View Activity
20.2.2
What Happens When You Pass Parameters to a View Activity
20.2.3
What You May Need to Know About Specifying Parameter Values
20.3
Passing Parameters to a Bounded Task Flow
20.3.1
How to Pass an Input Parameter to a Bounded Task Flow
20.3.2
What Happens When You Pass an Input Parameter to a Bounded Task Flow
20.4
Specifying a Return Value from a Bounded Task Flow
20.4.1
How to Specify a Return Value from a Bounded Task Flow
20.4.2
What Happens When You Specify a Return Value from a Bounded Task Flow
21
Using Task Flows as Regions
21.1
About Using Task Flows in ADF Regions
21.1.1
About Page Fragments and ADF Regions
21.1.2
About View Ports and ADF Regions
21.1.3
Task Flows and ADF Region Use Cases and Examples
21.1.4
Additional Functionality for Task Flows that Render in ADF Regions
21.2
Creating an ADF Region
21.2.1
How to Create an ADF Region
21.2.2
What Happens When You Create an ADF Region
21.3
Specifying Parameters for an ADF Region
21.3.1
How to Specify Parameters for an ADF Region
21.3.2
What Happens When You Specify Parameters for an ADF Region
21.4
Specifying Parameters for ADF Regions Using Parameter Maps
21.4.1
How to Create a Parameter Map to Specify Input Parameters for an ADF Region
21.4.2
What Happens When You Create a Parameter Map to Specify Input Parameters
21.5
Refreshing an ADF Region
21.5.1
How to Configure the Refresh of an ADF Region
21.5.2
What You May Need to Know About Refreshing an ADF Region
21.6
Configuring Activation of an ADF Region
21.6.1
How to Configure Activation of an ADF Region
21.6.2
What Happens When You Configure Activation of an ADF Region
21.7
Navigating Outside an ADF Region's Task Flow
21.7.1
How to Trigger Navigation Outside of an ADF Region's Task Flow
21.7.2
What Happens When You Configure Navigation Outside a Task Flow
21.7.3
What You May Need to Know About How a Page Determines the Capabilities of an ADF Region
21.8
Creating ADF Dynamic Regions
21.8.1
How to Create an ADF Dynamic Region
21.8.2
What Happens When You Create an ADF Dynamic Region
21.9
Adding Additional Task Flows to an ADF Dynamic Region
21.9.1
How to Create an ADF Dynamic Region Link
21.9.2
What Happens When You Create an ADF Dynamic Region
21.10
Configuring a Page To Render an Unknown Number of Regions
21.10.1
How to Configure a Page to Render an Unknown Number of Regions
21.10.2
What Happens When You Configure a Page to Render an Unknown Number of Regions
21.10.3
What You May Need to Know About Configuring a Page to Render an Unknown Number of Regions
22
Creating Complex Task Flows
22.1
About Creating Complex Task Flows
22.1.1
Complex Task Flows Use Cases and Examples
22.1.2
Additional Functionality for Complex Task Flows
22.2
Sharing Data Controls Between Task Flows
22.2.1
How to Share a Data Control Between Task Flows
22.2.2
What Happens When You Share a Data Control Between Task Flows
22.3
Managing Transactions in Task Flows
22.3.1
How to Enable Transactions in a Bounded Task Flow
22.3.2
What Happens When You Specify Transaction Options
22.3.3
What You May Need to Know About Sharing Data Controls and Managing Transactions
22.4
Reentering Bounded Task Flows
22.4.1
How to Set Reentry Behavior
22.4.2
How to Set Outcome-Dependent Options
22.4.3
What You Should Know About Managed Bean Values Upon Task Flow Reentry
22.5
Handling Exceptions in Task Flows
22.5.1
How to Designate an Activity as an Exception Handler
22.5.2
What Happens When You Designate an Activity as an Exception Handler
22.5.3
How to Designate Custom Code as an Exception Handler
22.5.4
What Happens When You Designate Custom Code as an Exception Handler
22.5.5
What You May Need to Know About Handling Exceptions During Transactions
22.5.6
What You May Need to Know About Handling Validation Errors
22.6
Configuring Your Application to Use Save Points
22.6.1
How to Configure Your Fusion Web Application to Use Save Points
22.6.2
What Happens When You Configure a Fusion Web Application to Use Save Points
22.6.3
What You May Need to Know About the Database Table for Save Points
22.7
Using Save Points in Task Flows
22.7.1
How to Add a Save Point to a Task Flow
22.7.2
What Happens When You Add Save Points to a Task Flow
22.7.3
How to Restore a Save Point
22.7.4
What Happens When You Restore a Save Point
22.7.5
How to Use the Save Point Restore Finalizer
22.7.6
What Happens When a Task Flow Invokes a Save Point Restore Finalizer
22.7.7
How to Enable Implicit Save Points
22.7.8
What You May Need to Know About Enabling Implicit Save Points
22.7.9
What You May Need to Know About the Time-to-Live Period for a Save Point
22.8
Using Train Components in Bounded Task Flows
22.8.1
Creating a Task Flow as a Train
22.8.1.1
How to Create a Train in a Bounded Task Flow
22.8.1.2
What Happens When You Create a Task Flow as a Train
22.8.2
Invoking a Child Bounded Task Flow from a Train Stop
22.8.2.1
How to Invoke a Child Bounded Task Flow From a Train Stop
22.8.3
Grouping Task Flow Activities to Execute Between Train Stops
22.8.4
Disabling the Sequential Behavior of Train Stops in a Train
22.8.4.1
How to Disable the Sequential Behavior of a Train
22.8.4.2
What Happens When You Disable the Sequential Behavior a Train Stop
22.8.5
Changing the Label of a Train Stop
22.8.5.1
How to Change the Label of a Train Stop
22.8.5.2
What Happens When You Change the Label of a Train Stop
22.8.6
Configuring a Train to Skip a Train Stop
22.8.6.1
How to Configure a Train to Skip a Train Stop
22.8.6.2
What Happens When You Configure a Train to Skip a Train Stop
22.9
Creating Task Flow Templates
22.9.1
How to Create a Task Flow Template
22.9.2
What Happens When You Create a Task Flow Template
22.9.3
What You May Need to Know About Task Flow Templates
22.10
Creating a Page Hierarchy Using Task Flows
22.10.1
How to Create a Page Hierarchy
22.10.1.1
How to Create an XMLMenuModel Metadata File
22.10.1.2
How to Create a Submenu with a Hierarchy of Group and Child Nodes
22.10.1.3
How to Attach a Menu Hierarchy to Another Menu Hierarchy
22.10.2
What Happens When You Create a Page Hierarchy
23
Using Dialogs in Your Application
23.1
About Using Dialogs in Your Application
23.1.1
Using Dialogs in Your Application Use Cases and Examples
23.1.2
Additional Functionality for Using Dialogs in Your Application
23.2
Running a Bounded Task Flow in a Modal Dialog
23.2.1
How to Run a Bounded Task Flow in a Modal Dialog
23.2.2
How to Return a Value From a Modal Dialog
23.2.3
How to Refresh a Page After a Modal Dialog Returns
23.2.4
What You May Need to Know About Dialogs in an Application that Uses Task Flows
23.3
Using the ADF Faces Dialog Framework
23.3.1
How to Define a JSF Navigation Rule for Opening a Dialog
23.3.2
How to Create the JSF Page That Opens a Dialog
23.3.3
How to Create the Dialog Page and Return a Dialog Value
23.3.4
What Happens at Runtime: Raising the Return Event from the Dialog
23.3.5
How to Pass a Value into a Dialog
23.3.6
What Happens at Runtime: Handling the LaunchEvent
23.3.7
How to Handle the Return Value
23.3.8
What Happens at Runtime: Handling the ReturnEvent on the Launching Component
Part V Creating a Databound Web User Interface
24
Getting Started with Your Web Interface
24.1
About Developing a Web Application with ADF Faces
24.1.1
Page Template and Managed Beans Use Cases and Examples
24.1.2
Additional Functionality for Page Templates and Managed Beans
24.2
Using Page Templates
24.2.1
How to Use ADF Data Binding in ADF Page Templates
24.2.2
What Happens When You Use ADF Model Layer Bindings on a Page Template
24.2.3
How to Add a Databound Page Template to a Page Dynamically
24.2.4
What Happens at Runtime: How Pages Use Templates
24.3
Creating a Web Page
24.4
Using a Managed Bean in a Fusion Web Application
24.4.1
How to Use a Managed Bean to Store Information
24.4.2
What Happens When You Create a Managed Bean
24.4.3
How to Set Managed Bean Memory Scopes in a Server-Cluster Environment
25
Understanding the Fusion Page Lifecycle
25.1
About the Fusion Page Lifecycle
25.2
About the JSF and ADF Page Lifecycles
25.2.1
What You May Need to Know About Partial Page Rendering and Iterator Bindings
25.2.2
What You May Need to Know About Using the Refresh Property Correctly
25.2.3
What You May Need to Know About Task Flows and the Lifecycle
25.3
About Object Scope Lifecycles
25.3.1
What You May Need to Know About Object Scopes and Task Flows
25.4
Customizing the ADF Page Lifecycle
25.4.1
How to Create a Custom Phase Listener
25.4.2
How to Register a Listener Globally
25.4.3
What You May Need to Know About Listener Order
25.4.4
How to Register a Lifecycle Listener for a Single Page
25.4.5
What You May Need to Know About Extending RegionController for Page Fragments
26
Creating a Basic Databound Page
26.1
About Creating a Basic Databound Page
26.1.1
ADF Databound Forms Use Cases and Examples
26.1.2
Additional Functionality for Databound Forms
26.2
Using Attributes to Create Text Fields
26.2.1
How to Create a Text Field
26.2.2
What Happens When You Create a Text Field
26.2.2.1
Creating and Using Iterator Bindings
26.2.2.2
Creating and Using Value Bindings
26.2.2.3
Using EL Expressions to Bind UI Components
26.3
Creating a Basic Form
26.3.1
How to Create a Form
26.3.2
What Happens When You Create a Form
26.4
Incorporating Range Navigation into Forms
26.4.1
How to Insert Navigation Controls into a Form
26.4.2
What Happens When You Create Command Buttons
26.4.2.1
Action Bindings for Built-in Navigation Operations
26.4.2.2
Iterator RangeSize Attribute
26.4.2.3
EL Expressions Used to Bind to Navigation Operations
26.4.3
What Happens at Runtime: How Action Events and Action Listeners Work
26.4.4
What You May Need to Know About the Browser Back Button and Navigating Through Records
26.5
Creating a Form to Edit an Existing Record
26.5.1
How to Create Edit Forms
26.5.2
What Happens When You Use Built-in Operations to Change Data
26.6
Creating an Input Form
26.6.1
How to Create an Input Form Using a Task Flow
26.6.2
What Happens When You Create an Input Form Using a Task Flow
26.6.3
What Happens at Runtime: CreateInsert Action from the Method Activity
26.6.4
What You May Need to Know About Displaying Sequence Numbers
26.7
Using a Dynamic Form to Determine Data to Display at Runtime
26.7.1
How to Use Dynamic Forms
26.7.2
What Happens When You Use Dynamic Components
26.7.3
What Happens at Runtime: How Attribute Values Are Dynamically Determined
26.8
Modifying the UI Components and Bindings on a Form
26.8.1
How to Modify the UI Components and Bindings
26.8.2
What Happens When You Modify Attributes and Bindings
27
Creating ADF Databound Tables
27.1
About Creating ADF Databound Tables
27.1.1
ADF Databound Tables Use Cases and Examples
27.1.2
Additional Functionality for Databound Tables
27.2
Creating a Basic Table
27.2.1
How to Create a Basic Table
27.2.2
What Happens When You Create a Table
27.2.2.1
Iterator and Value Bindings for Tables
27.2.2.2
Code on the JSF Page for an ADF Faces Table
27.2.3
What You May Need to Know About Setting the Current Row in a Table
27.3
Creating an Editable Table
27.3.1
How to Create an Editable Table
27.3.2
What Happens When You Create an Editable Table
27.4
Creating an Input Table
27.4.1
How to Create an Input Table
27.4.2
What Happens When You Create an Input Table
27.4.3
What Happens at Runtime: How CreateInsert and Partial Page Refresh Work
27.4.4
What You May Need to Know About Creating a Row and Sorting Columns
27.4.5
What You May Need to Know About Create and CreateInsert
27.5
Modifying the Attributes Displayed in the Table
27.5.1
How to Modify the Displayed Attributes
27.5.2
How to Change the Binding for a Table
27.5.3
What Happens When You Modify Bindings or Displayed Attributes
28
Command Components to Invoke Functionality in the View Layer
28.1
About Command Components
28.1.1
Command Component Use Cases and Examples
28.1.2
Additional Functionality for Command Components
28.2
Creating Command Components to Execute Methods
28.2.1
How to Create a Command Component Bound to a Custom Method
28.2.2
What Happens When You Create Command Components Using a Method
28.2.2.1
Defining Method Action Binding
28.2.2.2
Using Parameters in a Method
28.2.2.3
Adding ADF Faces Component Code to JSF Page
28.2.2.4
Using EL Expressions to Bind to Methods
28.2.2.5
Using the Return Value from a Method Call
28.2.3
What Happens at Runtime: Command Button Method Bindings
28.3
Setting Parameter Values Using a Command Component
28.3.1
How to Set Parameters Using setPropertyListener Within a Command Component
28.3.2
What Happens When You Set Parameters
28.3.3
What Happens at Runtime: setPropertyListener for a Command Component
28.4
Overriding Declarative Methods
28.4.1
How to Override a Declarative Method
28.4.2
What Happens When You Override a Declarative Method
29
Displaying Master-Detail Data
29.1
About Displaying Master-Detail Data
29.1.1
Master-Detail Tables, Forms, and Trees Use Cases and Examples
29.1.2
Additional Functionality for Master-Detail Tables, Forms, and Trees
29.2
Common Functionality for Master-Detail Tables, Forms, and Trees
29.2.1
Identifying Master-Detail Objects on the Data Controls Panel
29.3
Using Tables and Forms to Display Master-Detail Objects
29.3.1
How to Display Master-Detail Objects in Tables and Forms
29.3.2
What Happens When You Create Master-Detail Tables and Forms
29.3.2.1
Code Generated in the JSF Page
29.3.2.2
Binding Objects Defined in the Page Definition File
29.3.3
What Happens at Runtime: ADF Iterator for Master-Detail Tables and Forms
29.3.4
What You May Need to Know About Displaying Master-Detail Widgets on Separate Pages
29.4
Using Trees to Display Master-Detail Objects
29.4.1
How to Display Master-Detail Objects in Trees
29.4.2
What Happens When You Create an ADF Databound Tree
29.4.2.1
Code Generated in the JSF Page
29.4.2.2
Binding Objects Defined in the Page Definition File
29.4.3
What Happens at Runtime: Displaying an ADF Databound Tree
29.5
Using Tree Tables to Display Master-Detail Objects
29.5.1
How to Display Master-Detail Objects in Tree Tables
29.5.2
What Happens When You Create a Databound Tree Table
29.5.2.1
Code Generated in the JSF Page
29.5.2.2
Binding Objects Defined in the Page Definition File
29.5.3
What Happens at Runtime: Events
29.5.4
How to Use the TargetIterator Property
29.6
Using Selection Events with Trees and Tables
29.6.1
How to Use Selection Events with Trees and Tables
29.6.2
What Happens at Runtime: RowKeySet Objects and SelectionEvent Events
30
Creating Databound Selection Lists and Shuttles
30.1
About Selection Lists and Shuttles
30.1.1
Selection Lists and Shuttles Use Cases and Examples
30.1.2
Additional Functionality for Selection Lists and Shuttles
30.2
Creating List of Values (LOV) Components
30.2.1
How to Create an LOV
30.2.2
What Happens When You Create an LOV
30.2.3
What You May Need to Know About List Validators and LOV
30.3
Creating a Selection List
30.3.1
How to Create a Model-Driven List
30.3.2
How to Create a Selection List Containing Fixed Values
30.3.3
How to Create a Selection List Containing Dynamically Generated Values
30.3.4
What Happens When You Create a Model-Driven Selection List
30.3.5
What Happens When You Create a Fixed Selection List
30.3.6
What You May Need to Know About Values in a Selection List
30.3.7
What Happens When You Create a Dynamic Selection List
30.4
Creating a List with Navigation List Binding
30.5
Creating a Databound Shuttle
31
Creating ADF Databound Search Forms
31.1
About Creating Search Forms
31.1.1
Implicit and Named View Criteria
31.1.2
List of Values (LOV) Input Fields
31.1.3
Search Form Use Cases and Examples
31.1.4
Additional Functionality for Search Forms
31.2
Creating Query Search Forms
31.2.1
Named Bind Variables in Query Search Forms
31.2.2
How to Create a Query Search Form with a Results Table or Tree Table
31.2.3
How to Create a Query Search Form and Add a Results Component Later
31.2.4
How to Persist Saved Searches into MDS
31.2.5
How to Set Default Search Binding Behavior
31.2.6
What You May Need to Know About Dependent Criterion
31.2.7
What Happens When You Create a Query Form
31.2.8
What Happens at Runtime: Search Forms
31.3
Setting Up Search Form Properties
31.3.1
How to Set Search Form Properties on the View Criteria
31.3.2
How to Set Search Form Properties on the Query Component
31.3.3
How to Create Custom Operators or Remove Standard Operators
31.4
Creating Quick Query Search Forms
31.4.1
How to Create a Quick Query Search Form with a Results Table or Tree Table
31.4.2
How to Create a Quick Query Search Form and Add a Results Component Later
31.4.3
How to Set the Quick Query Layout Format
31.4.4
What Happens When You Create a Quick Query Search Form
31.4.5
What Happens at Runtime: Quick Query
31.5
Creating Standalone Filtered Search Tables from Named View Criteria
31.5.1
How to Create Filtered Table and Query-by-Example Searches
32
Using More Complex Databound ADF Faces Components
32.1
About More Complex Databound ADF Faces Components
32.1.1
Complex Databound ADF Faces Components Use Cases and Examples
32.1.2
Additional Functionality of Complex Databound ADF Faces Components
32.2
Using the ADF Faces Calendar Component
32.2.1
How to Use the ADF Faces Calendar
32.2.2
What Happens When You Create a Calendar
32.2.3
What Happens at Runtime: How the Calendar Binding Works
32.3
Using the ADF Faces Carousel Component
32.3.1
How to Create a Databound Carousel Component
32.3.2
What Happens When You Create a Carousel
33
Creating Databound ADF Data Visualization Components
33.1
About ADF Data Visualization Components
33.1.1
End User and Presentation Features
33.1.2
Data Visualization Components Use Cases and Examples
33.1.3
Additional Functionality for Data Visualization Components
33.2
Creating Databound Graphs
33.2.1
How to Create a Graph
33.2.2
What Happens When You Use the Data Controls Panel to Create a Graph
33.2.3
What You May Need to Know About Using a Graph's Row Selection Listener for Master-Detail Processing
33.2.4
What You May Need to Know About Using Name-Value Pairs
33.2.5
How to Create a Graph Using Name-Value Pairs
33.2.6
How to Create a Databound Spark Chart
33.2.7
Configuring Databound Graphs for Drilling
33.2.7.1
How to Configure Databound Graphs for Drilling
33.3
Creating Databound Gauges
33.3.1
How to Create a Databound Dial Gauge
33.3.2
What Happens When You Create a Dial Gauge from a Data Control
33.3.3
How to Create a Databound Status Meter Gauge Set
33.3.4
What Happens When You Create a Status Meter Gauge from a Data Control
33.4
Creating Databound Pivot Tables
33.4.1
How to Create a Pivot Table
33.4.2
What Happens When You Use the Data Controls Panel to Create a Pivot Table
33.4.2.1
Bindings for Pivot Tables
33.4.2.2
Code on the JSF Page for a Pivot Table and Pivot Filter Bar
33.4.3
What You May Need to Know About Aggregating Attributes in the Pivot Table
33.4.3.1
Default Aggregation of Duplicate Data Rows
33.4.3.2
Custom Aggregation of Duplicate Rows
33.4.4
What You May Need to Know About Specifying an Initial Sort for a Pivot Table
33.5
Creating Databound Geographic Maps
33.5.1
How to Create a Geographic Map with a Point Theme
33.5.2
How to Create Point Style Items for a Point Theme
33.5.3
What Happens When You Create a Geographic Map with a Point Theme
33.5.3.1
Binding XML for a Point Theme
33.5.3.2
XML Code on the JSF Page for a Geographic Map and Point Theme
33.5.4
What You May Need to Know About Adding Custom Point Style Items to a Map Point Theme
33.5.5
How to Add a Databound Color Theme to a Geographic Map
33.5.6
What Happens When You Add a Color Theme to a Geographic Map
33.5.6.1
Binding XML for a Color Theme
33.5.6.2
XML Code on the JSF Page for a Color Theme
33.5.7
What You May Need to Know About Customizing Colors in a Map Color Theme
33.5.8
How to Add a Databound Pie Graph Theme to a Geographic Map
33.5.9
What Happens When You Add a Pie Graph Theme to a Geographic Map
33.5.9.1
Binding XML for a Pie Graph Theme
33.5.9.2
Code on the JSF Page for a Pie Graph Theme
33.6
Creating Databound Thematic Maps
33.6.1
How to Create a Thematic Map Using ADF Data Controls
33.6.2
What Happens When You Use Data Controls to Create a Thematic Map
33.6.3
What You May Need to Know About Base Map Location Ids
33.6.4
How to Add Data Layers to Thematic Maps
33.6.5
How to Configure Drilling in Thematic Maps
33.6.6
What You May Need to Know About Configuring Master-Detail Relationships
33.6.7
Styling Areas, Markers, and Images to Display Data
33.6.7.1
How to Style Areas to Display Data
33.6.7.2
How to Style Markers to Display Data
33.6.7.3
What You May Need to Know About Styling Markers
33.6.7.4
What You May Need to Know About Default Style Values for Attribute Groups
33.6.7.5
How to Style Images to Display Data
33.6.7.6
What You May Need to Know About SVG Files
33.6.8
Creating Databound Legends
33.6.9
How to Define a Custom Map Layer
33.7
Creating Databound Gantt Charts
33.7.1
How to Create a Databound Project Gantt Chart
33.7.2
What Happens When You Create a Project Gantt Chart from a Data Control
33.7.3
What You May Need to Know About Summary Tasks in a Project Gantt Chart
33.7.4
What You May Need to Know About Percent Complete in a Project Gantt Chart
33.7.5
What You May Need to Know About Variance in a Project Gantt Chart
33.7.6
How to Create a Databound Resource Utilization Gantt Chart
33.7.7
What Happens When You Create a Resource Utilization Gantt Chart
33.7.8
How to Create a Databound Scheduling Gantt Chart
33.7.9
What Happens When You Create a Scheduling Gantt Chart
33.8
Creating Databound Hierarchy Viewers
33.8.1
How to Create a Hierarchy Viewer Using ADF Data Controls
33.8.2
What Happens When You Create a Databound Hierarchy Viewer
33.8.3
How to Create a Databound Search in a Hierarchy Viewer
34
Using Contextual Events
34.1
About Creating Contextual Events
34.1.1
Contextual Events Use Cases and Examples
34.1.2
Additional Functionality for Contextual Events
34.2
Creating Contextual Events Declaratively
34.2.1
How to Publish Contextual Events
34.2.2
How to Subscribe to and Consume Contextual Events
34.2.3
What Happens When You Create Contextual Events
34.2.4
How to Control Contextual Events Dispatch
34.2.5
What Happens at Runtime: Contextual Events
34.3
Creating Contextual Events Manually
34.3.1
How to Create Contextual Events Manually
34.4
Creating Contextual Events Using Managed Beans
34.5
Creating Contextual Events Using JavaScript
34.6
Creating the Event Map Manually
34.6.1
How to Create the Event Map Manually
34.7
Registering a Custom Dispatcher
34.7.1
How to Register a Custom Dispatcher
Part VI Completing Your Application
35
Enabling ADF Security in a Fusion Web Application
35.1
About ADF Security
35.1.1
Integration of ADF Security and Java Security
35.1.2
ADF Security Use Cases and Examples
35.1.3
Additional Functionality for ADF Security
35.2
ADF Security Process Overview
35.3
Enabling ADF Security
35.3.1
How to Enable ADF Security
35.3.2
What Happens When You Enable ADF Security
35.3.3
What Happens When You Generate a Default Form-Based Login Page
35.3.4
What You May Need to Know About the Configure ADF Security Wizard
35.3.5
What You May Need to Know About ADF Authentication
35.3.6
What You May Need to Know About the Built-In test-all Role
35.3.7
What You May Need to Know About the valid-users Role
35.4
Creating Application Roles
35.4.1
How to Create Application Roles
35.4.2
What Happens When You Create Application Roles
35.4.3
What You May Need to Know About Enterprise Roles and Application Roles
35.5
Defining ADF Security Policies
35.5.1
How to Make an ADF Resource Public
35.5.2
What Happens When You Make an ADF Resource Public
35.5.3
What Happens at Runtime: How the Built-in Roles Are Used
35.5.4
How to Define Policies for ADF Bounded Task Flows
35.5.5
How to Define Policies for Web Pages That Reference a Page Definition
35.5.6
How to Define Policies to Control User Access to ADF Methods
35.5.6.1
Creating a Resource Grant to Control Access to ADF Methods
35.5.6.2
Enforcing the Resource Grant in the User Interface
35.5.7
What Happens When You Define the Security Policy
35.5.8
What Happens at Runtime: How ADF Security Policies Are Enforced
35.5.9
What You May Need to Know About Defining Policies for Pages with No ADF Bindings
35.5.10
How to Use Regular Expressions to Define Policies on Groups of Resources
35.5.11
How to Define Policies for Data
35.5.11.1
Defining Permission Maps on ADF Entity Objects
35.5.11.2
Defining Permission Maps on ADF Entity Object Attributes
35.5.11.3
Granting Permissions on ADF Entity Objects and Entity Attributes
35.5.12
How to Aggregate Resource Grants as Entitlement Grants
35.5.13
What Happens After You Create an Entitlement Grant
35.6
Creating Test Users
35.6.1
How to Create Test Users in JDeveloper
35.6.2
What Happens When You Create Test Users
35.6.3
How to Associate Test Users with Application Roles
35.6.4
What Happens When You Configure Application Roles
35.7
Creating a Login Page
35.7.1
How to Create a Login Link Component and Add it to a Public Web Page for Explicit Authentication
35.7.2
How to Create a Login Page Specifically for Explicit Authentication
35.7.2.1
Creating Login Code for the Backing Bean
35.7.2.2
Creating an ADF Faces-Based Login Page Specifically for Explicit Authentication
35.7.2.3
Ensuring That the Login Page Is Public
35.7.3
How to Ensure That the Custom Login Page's Resources Are Accessible for Explicit Authentication
35.7.4
How to Create a Public Welcome Page
35.7.4.1
Ensuring That the Welcome Page Is Public
35.7.4.2
Adding Login and Logout Links
35.7.4.3
Hiding Links to Secured Pages
35.7.5
How to Redirect a User After Authentication
35.7.6
How to Trigger a Custom Login Page Specifically for Implicit Authentication
35.7.7
What You May Need to Know About ADF Servlet Logout and Browser Caching
35.8
Testing Security in JDeveloper
35.8.1
How to Configure, Deploy, and Run a Secure Application in JDeveloper
35.8.2
What Happens When You Configure Security Deployment Options
35.8.3
How to Use the Built-In test-all Application Role
35.8.4
What Happens at Runtime: How ADF Security Handles Authentication
35.8.5
What Happens at Runtime: How ADF Security Handles Authorization
35.9
Preparing the Secure Application for Deployment
35.9.1
How to Remove the test-all Role from the Application Policy Store
35.9.2
How to Remove Test Users from the Application Identity Store
35.9.3
How to Secure Resource Files Using a URL Constraint
35.10
Disabling ADF Security
35.10.1
How to Disable ADF Security
35.10.2
What Happens When You Disable ADF Security
35.11
Advanced Topics and Best Practices
35.11.1
Using Expression Language (EL) with ADF Security
35.11.1.1
How to Evaluate Policies Using EL
35.11.1.2
What Happens When You Use the Expression Builder Dialog
35.11.1.3
What You May Need to Know About Delayed Evaluation of EL
35.11.2
How to Evaluate Policies Using Custom JAAS Permissions and EL
35.11.2.1
Creating the Custom JAAS Permission Class
35.11.2.2
Creating the ADF Security Policy Using a Custom Permission
35.11.2.3
Associating the Rendering of a UI Component with a Custom Permission
35.11.3
Getting Information from the ADF Security Context
35.11.3.1
How to Determine Whether Security Is Enabled
35.11.3.2
How to Determine Whether the User Is Authenticated
35.11.3.3
How to Determine the Current User Name, Enterprise Name, or Enterprise ID
35.11.3.4
How to Determine Membership of a Java EE Security Role
35.11.3.5
How to Determine Permission Using Java
35.11.4
Best Practices for Working with ADF Security
36
Testing and Debugging ADF Components
36.1
About ADF Debugging
36.2
Correcting Simple Oracle ADF Compilation Errors
36.3
Correcting Simple Oracle ADF Runtime Errors
36.4
Reloading Oracle ADF Metadata in Integrated WebLogic Server
36.5
Validating ADF Controller Metadata
36.6
Using the ADF Logger
36.6.1
How to Set ADF Logging Levels
36.6.2
How to Turn On Diagnostic Logging
36.6.3
How to Create an Oracle ADF Debugging Configuration
36.6.4
How to Use the Log Analyzer to View Log Messages
36.6.4.1
Viewing Diagnostic Messages in the Log Analyzer
36.6.4.2
Using the Log Analyzer to Analyze the ADF Request
36.6.4.3
Sorting Diagnostic Messages By ADF Events
36.6.5
What You May Need to Know About the Logging.xml File
36.6.6
What You May Need to Know About ADF Logging and Oracle WebLogic Server
36.7
Using the Oracle ADF Model Tester for Testing and Debugging
36.7.1
How to Run in Debug Mode and Test with the Oracle ADF Model Tester
36.7.2
How to Run the Oracle ADF Model Tester and Test with a Specific Configuration
36.7.3
What Happens When You Run the Oracle ADF Model Tester in Debug Mode
36.7.4
How to Verify Runtime Artifacts in the Oracle ADF Model Tester
36.7.5
How to Refresh the Oracle ADF Model Tester with Application Changes
36.8
Using the ADF Declarative Debugger
36.8.1
Using ADF Source Code with the Debugger
36.8.2
How to Set Up the ADF Source User Library
36.8.3
How to Add the ADF Source Library to a Project
36.8.4
How to Use the EL Expression Evaluator
36.8.5
How to View and Export Stack Trace Information
36.9
Setting ADF Declarative Breakpoints
36.9.1
How to Set and Use Task Flow Activity Breakpoints
36.9.2
How to Set and Use Page Definition Executable Breakpoints
36.9.3
How to Set and Use Page Definition Action Binding Breakpoints
36.9.4
How to Set and Use Page Definition Value Binding Breakpoints
36.9.5
How to Set and Use Page Definition Contextual Event Breakpoints
36.9.6
How to Set and Use ADF Lifecycle Phase Breakpoints
36.9.7
How to Use the ADF Structure Window
36.9.8
How to Use the ADF Data Window
36.9.9
What Happens When You Set an ADF Declarative Breakpoint
36.10
Setting Java Code Breakpoints
36.10.1
How to Set Java Breakpoints on Classes and Methods
36.10.2
How to Optimize Use of the Source Editor
36.10.3
How to Set Breakpoints and Debug Using ADF Source Code
36.10.4
How to Use Debug Libraries for Symbolic Debugging
36.10.5
How to Use Different Kinds of Java Code Breakpoints
36.10.6
How to Edit Breakpoints for Improved Control
36.10.7
How to Filter Your View of Class Members
36.10.8
How to Use Common Oracle ADF Breakpoints
36.11
Regression Testing with JUnit
36.11.1
How to Obtain the JUnit Extension
36.11.2
How to Create a JUnit Test Case
36.11.3
How to Create a JUnit Test Fixture
36.11.4
How to Create a JUnit Test Suite
36.11.5
How to Create a Business Components Test Suite
36.11.6
How to a Create Business Components Test Fixture
36.11.7
How to Run a JUnit Test Suite as Part of an Ant Build Script
37
Refactoring a Fusion Web Application
37.1
About Refactoring a Fusion Web Application
37.1.1
Refactoring Use Cases and Examples
37.2
Renaming Files
37.3
Moving JSF Pages
37.4
Refactoring pagedef.xml Bindings Objects
37.5
Refactoring ADF Business Components
37.6
Refactoring ADF Business Component Object Attributes
37.7
Refactoring Named Elements
37.8
Refactoring ADF Task Flows
37.9
Refactoring the DataBindings.cpx File
37.10
Refactoring Limitations
37.11
Moving the ADF Business Components Project Configuration File (.jpx)
38
Reusing Application Components
38.1
About Reusable Components
38.1.1
Creating Reusable Components
38.1.1.1
Naming Conventions
38.1.1.2
The Naming Process for the ADF Library JAR Deployment Profile
38.1.1.3
Keeping the Relevant Project
38.1.1.4
Selecting the Relevant Feature
38.1.1.5
Selecting Paths and Folders
38.1.1.6
Including Connections Within Reusable Components
38.1.2
Reusable ADF Components Use Cases and Examples
38.1.3
Additional Functionality for Reusable ADF Components
38.2
Common Functionality of Reusable ADF Components
38.2.1
Using Extension Libraries
38.2.2
Using the Resource Palette
38.3
Packaging a Reusable ADF Component into an ADF Library
38.3.1
How to Package a Component into an ADF Library JAR
38.3.2
What Happens When You Package a Project to an ADF Library JAR
38.3.2.1
Application Modules
38.3.2.2
Data Controls
38.3.2.3
Task Flows
38.3.2.4
Page Templates
38.3.2.5
Declarative Components
38.3.3
How to Place and Access JDeveloper JAR Files
38.4
Adding ADF Library Components into Projects
38.4.1
How to Add an ADF Library JAR into a Project using the Resource Palette
38.4.2
How to Add an ADF Library JAR into a Project Manually
38.4.3
What Happens When You Add an ADF Library JAR to a Project
38.4.4
What You May Need to Know About Using ADF Library Components
38.4.4.1
Using Data Controls
38.4.4.2
Using Application Modules
38.4.4.3
Using Business Components
38.4.4.4
Using Task Flows
38.4.4.5
Using Page Templates
38.4.4.6
Using Declarative Components
38.4.5
What You May Need to Know About Differentiating ADF Library Components
38.4.6
What Happens at Runtime: Adding ADF Libraries
38.5
Removing an ADF Library JAR from a Project
38.5.1
How to Remove an ADF Library JAR from a Project Using the Resource Palette
38.5.2
How to Remove an ADF Library JAR from a Project Manually
39
Customizing Applications with MDS
39.1
About Customization and MDS
39.1.1
Customization and Layers: Use Cases and Examples
39.1.2
Static and Dynamic Customization Content
39.1.3
Additional Functionality for Customization
39.2
Developing a Customizable Application
39.2.1
How to Create Customization Classes
39.2.1.1
Customization Classes
39.2.1.2
Implementing the getValue() Method in Your Customization Class
39.2.1.3
Creating a Customization Class
39.2.2
What You May Need to Know About Customization Classes
39.2.3
How to Consume Customization Classes
39.2.3.1
Making Customization Classes Available to JDeveloper at Design Time
39.2.3.2
Making Customization Classes Available to the Application at Run Time
39.2.4
How to Enable Seeded Customizations for View Projects
39.2.5
How to Enable Seeded Customizations in Existing Pages
39.2.6
How to Enable Customizations in Resource Bundles
39.2.7
How to Configure the adf-config.xml file
39.2.8
What Happens When You Create a Customizable Application
39.2.9
What You May Need to Know About Customizable Objects and Applications
39.3
Customizing an Application
39.3.1
Introducing the Customization Developer Role
39.3.2
How to Switch to the Customization Developer Role in JDeveloper
39.3.3
Introducing the Tip Layer
39.3.4
How to Configure Customization Layers
39.3.4.1
Configuring Layer Values Globally
39.3.4.2
Configuring Workspace-Level Layer Values from the Studio Developer Role
39.3.4.3
Configuring Workspace-Level Layer Values from the Customization Developer Role
39.3.5
How to Customize Metadata in JDeveloper
39.3.6
What Happens When You Customize an Application
39.3.7
How to Customize ADF Library Artifacts in JDeveloper
39.3.7.1
Specifying a Location for ADF Library Customizations
39.3.8
How to View ADF Library Runtime Customizations from Exported JARs
39.3.9
What Happens When You Customize ADF Library Artifacts
39.3.10
How to Package and Deploy Customized Applications
39.3.10.1
Implicitly Creating a MAR Profile
39.3.10.2
Explicitly Creating a MAR Profile
39.3.11
What Happens at Runtime in a Customized Application
39.3.12
What You May Need to Know About Customized Applications
39.3.12.1
Customization and Integrated Source Control
39.3.12.2
Editing Resource Bundles in Customized Applications
39.4
Extended Metadata Properties
39.4.1
How to Edit Extended Metadata Properties
39.4.2
How to Enable Customization for Design Time at Runtime
39.4.2.1
Editing Customization Properties in the Property Inspector
39.4.2.2
Using a Standalone Annotations File to Specify Type-Level Customization Properties
39.5
Enabling Runtime Modification of Customization Configuration
40
Allowing User Customizations at Runtime
40.1
About User Customizations
40.1.1
Runtime User Customization Use Cases and Examples
40.1.2
Additional Functionality for Runtime User Customization
40.2
Enabling Runtime User Customizations for a Fusion Web Application
40.2.1
How to Enable User Customizations
40.2.2
What Happens When You Enable User Customizations
40.3
Configuring User Customizations
40.3.1
How to Configure Change Persistence
40.3.2
What Happens When You Configure Change Persistence
40.4
Controlling User Customizations in Individual JSF Pages
40.4.1
How to Control User Customizations on a JSF Page
40.4.2
What Happens at Runtime
40.4.3
What You May Need to Know About Using Change Persistence on Templates and Regions
40.5
Implementing Custom User Customizations
40.5.1
Change Persistence Framework API
40.5.2
How to Create Code for Custom User Customizations
40.6
Creating Implicit Change Persistence in Custom Components
40.6.1
How to Set Implicit Change Persistence For Attribute Values that Use Events
40.6.2
How to Set Implicit Change Persistence For Other Attribute Values
41
Deploying Fusion Web Applications
41.1
About Deploying Fusion Web Applications
41.1.1
Developing Applications with Integrated WebLogic Server
41.1.2
Developing Applications to Deploy to Standalone Application Server
41.2
Running an ADF Application in Integrated WebLogic Server
41.2.1
How to Run an Application in Integrated WebLogic Server
41.2.2
How to Run an Application with Metadata in Integrated WebLogic Server
41.3
Preparing the Application
41.3.1
How to Create a Connection to the Target Application Server
41.3.2
How to Create Deployment Profiles
41.3.2.1
Creating a WAR Deployment Profile
41.3.2.2
Creating a MAR Deployment Profile
41.3.2.3
Creating an Application-Level EAR Deployment Profile
41.3.2.4
Delivering Customization Classes as a Shared Library
41.3.2.5
Viewing and Changing Deployment Profile Properties
41.3.2.6
Adding Customization Classes into a JAR
41.3.3
How to Create and Edit Deployment Descriptors
41.3.3.1
Creating Deployment Descriptors
41.3.3.2
Viewing or Modifying Deployment Descriptor Properties
41.3.3.3
Configuring the application.xml File for Application Server Compatibility
41.3.3.4
Configuring the web.xml File for Application Server Compatibility
41.3.3.5
Enabling the Application for Real User Experience Insight
41.3.4
How to Deploy Applications with ADF Security Enabled
41.3.4.1
Applications That Will Run Using Oracle Single Sign-On (SSO)
41.3.4.2
Configuring Security for Weblogic Server
41.3.4.3
Configuring Security for Websphere Application Server
41.3.5
How to Replicate Memory Scopes in a Clustered Environment
41.3.6
How to Enable the Application for ADF MBeans
41.3.7
What You May Need to Know About JDBC Data Source for Oracle WebLogic Server
41.4
Deploying the Application
41.4.1
How to Deploy to the Application Server from JDeveloper
41.4.2
How to Create an EAR File for Deployment
41.4.3
How to Deploy New Customizations Applied to ADF Library
41.4.3.1
Exporting Customization to a Deployed Application
41.4.3.2
Deploying Customizations to a JAR
41.4.4
What You May Need to Know About ADF Libraries
41.4.5
What You May Need to Know About EAR Files and Packaging
41.4.6
How to Deploy the Application Using Scripts and Ant
41.4.7
What You May Need to Know About JDeveloper Runtime Libraries
41.5
Postdeployment Configuration
41.5.1
How to Migrate an Application
41.5.2
How to Configure the Application Using ADF MBeans
41.5.3
How to Configure WebSphere for Result Set Reuse
41.6
Testing the Application and Verifying Deployment
Part VII Advanced Topics
42
Advanced View Object Techniques
42.1
Advanced View Object Concepts and Features
42.1.1
Limiting the View Object Max Fetch Size to Fetch the First n Rows
42.1.2
Maintaining New Row Consistency in View Objects Based on the Same Entity
42.1.2.1
What Happens at Runtime When View Link Consistency is Enabled
42.1.2.2
How to Change the Default View Link Consistency Setting
42.1.2.3
How to Use a RowMatch to Qualify Which New, Unposted Rows Get Added to a Row Set
42.1.2.4
What You May Need to Know About the Dynamic WHERE Clause and View Link Consistency
42.1.3
Understanding View Link Accessors Versus Data Model View Link Instances
42.1.3.1
Enabling a Dynamic Detail Row Set with Active Master-Detail Coordination
42.1.3.2
Accessing a Stable Detail Row Set Using View Link Accessor Attributes
42.1.3.3
Accessor Attributes Create Distinct Row Sets Based on an Internal View Object
42.1.4
Presenting and Scrolling Data a Page at a Time Using the Range
42.1.5
Efficiently Scrolling Through Large Result Sets Using Range Paging
42.1.5.1
Understanding How to Oracle Supports "TOP-N" Queries
42.1.5.2
How to Enable Range Paging for a View Object
42.1.5.3
What Happens When You Enable Range Paging
42.1.5.4
What Happens When View Rows are Cached When Using Range Paging
42.1.5.5
How to Scroll to a Given Page Number Using Range Paging
42.1.5.6
Estimating the Number of Pages in the Row Set Using Range Paging
42.1.5.7
Understanding the Tradeoffs of Using a Range Paging Mode
42.1.6
Setting Up a Data Model with Multiple Masters
42.1.7
Understanding When You Can Use Partial Keys with findByKey()
42.1.8
Handling View Object Queries with Primary Keys Defined by Transient Attributes
42.1.9
Creating Dynamic Attributes to Store UI State
42.1.10
Working with Multiple Row Sets and Row Set Iterators
42.1.11
Optimizing View Link Accessor Access By Retaining the Row Set
42.2
Tuning Your View Objects for Best Performance
42.2.1
Use Bind Variables for Parameterized Queries
42.2.1.1
Use Bind Variables to Avoid Re-parsing of Queries
42.2.1.2
Use Bind Variables to Prevent SQL-Injection Attacks
42.2.2
Consider Using Entity-Based View Objects for Read-Only Data
42.2.3
Use SQL Tracing to Identify Ill-Performing Queries
42.2.4
Consider the Appropriate Tuning Settings for Every View Object
42.2.4.1
Set the Database Retrieval Options Appropriately
42.2.4.2
Consider Whether Fetching One Row at a Time is Appropriate
42.2.4.3
Specify a Query Optimizer Hint if Necessary
42.2.5
Using Care When Creating View Objects at Runtime
42.2.6
Use Forward Only Mode to Avoid Caching View Rows
42.3
Generating Custom Java Classes for a View Object
42.3.1
How To Generate Custom Classes
42.3.1.1
Generating Bind Variable Accessors
42.3.1.2
Generating View Row Attribute Accessors
42.3.1.3
Exposing View Row Accessors to Clients
42.3.1.4
Configuring Default Java Generation Preferences
42.3.2
What Happens When You Generate Custom Classes
42.3.2.1
Seeing and Navigating to Custom Java Files
42.3.3
What You May Need to Know About Custom Classes
42.3.3.1
About the Framework Base Classes for a View Object
42.3.3.2
You Can Safely Add Code to the Custom Component File
42.3.3.3
Attribute Indexes and InvokeAccessor Generated Code
42.4
Working Programmatically with Multiple Named View Criteria
42.4.1
Applying One or More Named View Criteria
42.4.2
Removing All Applied Named View Criteria
42.4.3
Using the Named Criteria at Runtime
42.5
Performing In-Memory Sorting and Filtering of Row Sets
42.5.1
Understanding the View Object's SQL Mode
42.5.2
Sorting View Object Rows In Memory
42.5.2.1
Combining setSortBy and setQueryMode for In-Memory Sorting
42.5.2.2
Extensibility Points for In-Memory Sorting
42.5.3
Performing In-Memory Filtering with View Criteria
42.5.4
Performing In-Memory Filtering with RowMatch
42.5.4.1
Applying a RowMatch to a View Object
42.5.4.2
Using RowMatch to Test an Individual Row
42.5.4.3
How a RowMatch Affects Rows Fetched from the Database
42.6
Using View Objects to Work with Multiple Row Types
42.6.1
Working with Polymorphic Entity Usages
42.6.2
How to Create a View Object with a Polymorphic Entity Usage
42.6.3
What Happens When You Create a View Object with a Polymorphic Entity Usage
42.6.4
What You May Need to Know About Entity Usages
42.6.4.1
Your Query Must Limit Rows to Expected Entity Subtypes
42.6.4.2
Exposing Selected Entity Methods in View Rows Using Delegation
42.6.4.3
Creating New Rows With the Desired Entity Subtype
42.6.5
Working with Polymorphic View Rows
42.6.6
How to Create a View Object with Polymorphic View Rows
42.6.7
What You May Need to Know About Polymorphic View Rows
42.6.7.1
Selecting Subtype-Specific Attributes in Extended View Objects
42.6.7.2
Delegating to Subtype-Specific Methods After Overriding the Entity Usage
42.6.7.3
Working with Different View Row Interface Types in Client Code
42.6.7.4
Polymorphic Entity Usage and Polymorphic View Rows Usages
42.7
Reading and Writing XML
42.7.1
How to Produce XML for Queried Data
42.7.2
What Happens When You Produce XML
42.7.3
What You May Need to Know About Reading and Writing XML
42.7.3.1
Controlling XML Element Names
42.7.3.2
Controlling Element Suppression for Null-Valued Attributes
42.7.3.3
Printing or Searching the Generated XML Using XPath
42.7.3.4
Using the Attribute Map For Fine Control Over Generated XML
42.7.3.5
Use the Attribute Map Approach with Bi-Directional View Links
42.7.3.6
Transforming Generated XML Using an XSLT Stylesheet
42.7.3.7
Generating XML for a Single Row
42.7.4
How to Consume XML Documents to Apply Changes
42.7.5
What Happens When You Consume XML Documents
42.7.5.1
How ViewObject.readXML() Processes an XML Document
42.7.5.2
Using readXML() to Processes XML for a Single Row
42.8
Using Programmatic View Objects for Alternative Data Sources
42.8.1
How to Create a Read-Only Programmatic View Object
42.8.2
How to Create an Entity-Based Programmatic View Object
42.8.3
Key Framework Methods to Override for Programmatic View Objects
42.8.4
How to Create a View Object on a REF CURSOR
42.8.4.1
The Overridden create() Method
42.8.4.2
The Overridden executeQueryForCollection() Method
42.8.4.3
The Overridden createRowFromResultSet() Method
42.8.4.4
The Overridden hasNextForCollectionMethod()
42.8.4.5
The Overridden releaseUserDataForCollection() Method
42.8.4.6
The Overridden getQueryHitCount() Method
42.9
Creating a View Object with Multiple Updatable Entities
42.9.1
How to Programmatically Create New Rows With Multiple Updatable Entity Usages
42.9.2
What Happens at Runtime: View Row Creation
42.10
Programmatically Creating View Definitions and View Objects
42.11
Declaratively Preventing Insert, Update, and Delete
43
Application State Management
43.1
Understanding Why State Management is Necessary
43.1.1
Examples of Multi-Step Tasks
43.1.2
Stateless HTTP Protocol Complicates Stateful Applications
43.1.3
How Cookies Are Used to Track a User Session
43.1.4
Performance and Reliability Impact of Using HttpSession
43.2
Introduction to Fusion Web Application State Management
43.2.1
Basic Architecture of the Save for Later Facility
43.2.2
Basic Architecture of the Application Module State Management Facility
43.2.2.1
Understanding When Passivation and Activation Occurs
43.2.2.2
How Passivation Changes When Optional Failover Mode is Enabled
43.2.2.3
About State Management Release Levels
43.2.2.4
State Management and Subclassed Entity Objects
43.3
Using Save For Later
43.4
Setting the Application Module Release Level at Runtime
43.4.1
How to Set Unmanaged Level
43.4.2
How to Set Reserved Level
43.4.3
How to Set Managed Level
43.4.4
How to Set Release Level in a JSF Backing Bean
43.4.5
How to Set Release Level in an ADF PagePhaseListener
43.4.6
How to Set Release Level in an ADF PageController
43.4.7
How to Set Release Level in a Custom ADF PageLifecycle
43.5
What Model State Is Saved and When It Is Cleaned Up
43.5.1
State Information Saved During Passivation
43.5.2
Where the Model State Is Saved
43.5.2.1
How Database-Backed Passivation Works
43.5.2.2
Controlling the Schema Where the State Management Table Resides
43.5.2.3
Configuring the Type of Passivation Store
43.5.3
Cleaning Up the Model State
43.5.3.1
Previous Snapshot Removed When Next One Taken
43.5.3.2
Passivation Snapshot Removed on Unmanaged Release
43.5.3.3
Passivation Snapshot Retained in Failover Mode
43.5.4
Cleaning Up Temporary Storage Tables
43.6
Timing Out the HttpSession
43.6.1
How to Configure the Implicit Timeout Due to User Inactivity
43.6.2
How to Code an Explicit HttpSession Timeout
43.7
Managing Custom User-Specific Information
43.7.1
How to Passivate Custom User-Specific Information
43.7.1.1
What Happens When You Passivate Custom Information
43.8
Managing the State of View Objects
43.8.1
How to Manage the State of View Objects
43.8.2
What You May Need to Know About Passivating View Objects
43.8.3
How to Manage the State of Transient View Objects and Attributes
43.8.4
What You May Need to Know About Passivating Transient View Objects
43.8.5
How to Use Transient View Objects to Store Session-level Global Variables
43.9
Using State Management for Middle-Tier Savepoints
43.9.1
How to Use State Management for Savepoints
43.10
Testing to Ensure Your Application Module is Activation-Safe
43.10.1
Understanding the jbo.ampool.doampooling Configuration Parameter
43.10.2
Disabling Application Module Pooling to Test Activation
43.11
Keeping Pending Changes in the Middle Tier
43.11.1
How to Confirm That Applications Use Optimistic Locking
43.11.2
How to Avoid Clashes Using the postChanges() Method
43.11.3
How to Use the Reserved Level For Pending Database States
44
Tuning Application Module Pools and Connection Pools
44.1
About Application Module Pooling
44.1.1
Types of Pools Created When Running the Fusion Web Application
44.1.1.1
Application Module Pools
44.1.1.2
Database Connection Pools
44.1.2
Understanding Application Module and Connection Pools
44.1.2.1
Single Oracle WebLogic Server Domain, Single Oracle WebLogic Server Instance, Single JVM
44.1.2.2
Multiple Oracle WebLogic Server Domains, Multiple Oracle WebLogic Server Instance, Multiple JVMs
44.2
Setting Pool Configuration Parameters
44.2.1
How to Set Configuration Properties Declaratively
44.2.2
What Happens When You Set Configuration Properties Declaratively
44.2.3
How to Set Configuration Properties as System Parameters
44.2.4
How to Programmatically Set Configuration Properties
44.2.5
What You May Need to Know About Configuration Property Scopes
44.2.6
What You May Need to Know About How Database and Application Module Pools Cooperate
44.2.7
What You May Need to Know About Application Module Pool Parameters
44.2.7.1
Pool Behavior Parameters
44.2.7.2
Pool Sizing Parameters
44.2.7.3
Pool Cleanup Parameters
44.2.8
What You May Need to Know About Data Source Configuration
44.2.9
What You May Need to Know About Database Connection Pool Parameters
44.3
Initializing Database State and Pooling Considerations
44.3.1
How to Set Database State Per User
44.3.2
What You May Need to Know About Database User State and jbo.doconnectionpooling = true
45
Using the Active Data Service
45.1
About the Active Data Service
45.1.1
Active Data Service Use Cases and Examples
45.1.2
Limitations of the Active Data Service Framework
45.1.3
Active Data Service Framework
45.1.4
Data Transport Modes
45.2
Configuring the Active Data Service
45.2.1
How to Configure the Active Data Service
45.2.2
What You May Need to Know About Transport Modes
45.3
Configuring Components to Use the Active Data Service
45.3.1
How to Configure Components to Use the Active Data Service Without the Active Data Proxy
45.3.2
How to Configure Components to Use the Active Data Service with the Active Data Proxy
45.3.3
What You May Need to Know About Displaying Active Data in ADF Trees
45.3.4
What Happens at Runtime: How Components Render When Bound to Active Data
45.3.5
What You May Need to Know About ADS and Google Chrome
45.4
Using the Active Data Proxy
45.4.1
What You May Need to Know About Read Consistency
45.5
Using the Active Data with a Scalar Model
Part VIII Appendices
A
Oracle ADF XML Files
A.1
Introduction to the 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
pageName
PageDef.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
Performing Tasks Related to Data
G.1.1
How to Retrieve Lookup Display Values for Foreign Keys
G.1.2
How to Get the Sysdate from the Database
G.1.3
How to Implement an Isolation Mode That Is Not Read Consistent
G.1.4
How to Implement Calculated Fields
G.1.5
How to Implement Mirrored Items
G.1.6
How to Use Database Columns of Type CLOB or BLOB
G.2
Performing Tasks Related to the User Interface
G.2.1
How to Lay Out a Page
G.2.2
How to Stack Canvases
G.2.3
How to Implement a Master-Detail Screen
G.2.4
How to Implement an Enter Query Screen
G.2.5
How to Implement an Updatable Multi-Record Table
G.2.6
How to Create a Popup List of Values
G.2.7
How to Implement a Dropdown List as a List of Values
G.2.8
How to Implement a Dropdown List with Values from Another Table
G.2.9
How to Implement Immediate Locking
G.2.10
How to Throw an Error When a Record Is Locked
H
Data Controls in Fusion Web Applications
H.1
Introduction to Data Controls
H.2
Data Control Feature Implementation Comparison
H.3
Data Control Objects
I
Deploying ADF Applications to GlassFish
I.1
About Deploying ADF Applications to GlassFish Server
I.1.1
Developing Applications with Integrated WebLogic Server
I.1.2
Developing Applications to Deploy to Standalone GlassFish Server
I.2
Running an ADF Application in Integrated WebLogic Server
I.2.1
How to Run an Application in Integrated WebLogic Server
I.3
Preparing the Application
I.3.1
How to Create a Connection to the Target Application Server
I.3.2
How to Create Deployment Profiles
I.3.2.1
Creating a WAR Deployment Profile
I.3.2.2
Creating an Application-Level EAR Deployment Profile
I.3.2.3
Viewing and Changing Deployment Profile Properties
I.3.3
How to Create and Edit Deployment Descriptors
I.3.3.1
Creating Deployment Descriptors
I.3.3.2
Viewing or Modifying Deployment Descriptor Properties
I.3.3.3
Configuring the application.xml File for Application Server Compatibility
I.3.3.4
Configuring the web.xml File for GlassFish Server Compatibility
I.3.4
How to Enable JDBC Data Source for GlassFish
I.4
Deploying the Application
I.4.1
How to Deploy to the Application Server from JDeveloper
I.4.2
What You May Need to Know About Deploying from JDeveloper
I.4.3
How to Create an EAR File for Deployment
I.4.4
What You May Need to Know About ADF Libraries
I.4.5
What You May Need to Know About EAR Files and Packaging
I.4.6
How to Deploy to the Application Server using asadmin Commands
I.4.7
How to Deploy the Application Using Scripts and Ant
I.5
Testing the Application and Verifying Deployment
Glossary
Scripting on this page enhances content navigation, but does not change the content in any way.