Skip Headers
Oracle® Fusion Applications Extensibility Guide
11g Release 1 (11.1.3)

Part Number E16691-04
Go to Documentation Home
Home
Go to Book List
Book List
Go to Table of Contents
Contents
Go to Feedback page
Contact Us

Go to previous page
Previous
Go to next page
Next
PDF · Mobi · ePub

11 Customizing and Extending ADF Application Artifacts

This chapter describes how to use Oracle JDeveloper to customize and extend application artifacts defined by Oracle Application Development Framework (Oracle ADF) in Oracle Fusion applications.

This chapter includes the following sections:

11.1 About Customizing Oracle ADF Application Artifacts

With the customization features provided by Oracle Metadata Services (MDS), developers can customize Oracle Fusion Applications using JDeveloper, making modifications to suit the needs of a particular group, such as a specific country or site.

Using JDeveloper, you can implement customizations on existing artifacts that are stored in a metadata repository and retrieved at run time to reveal the customized application. You can also extend you application with new custom artifacts that are packaged into a JAR file, and integrated using customizations on the existing application.

Note that many kinds of customization can be performed in the runtime environment using CRM Application Composer, which allows you to customize existing objects and extend an application with new objects for the following CRM applications:

For more information about using CRM Application Composer to customize these applications, see Chapter 4, "Customizing Objects."

However some kinds of customization (including all customizations to applications other than those listed above) require a lower level approach, for which you will need to use JDeveloper.

11.1.1 Before You Begin Customizing Oracle ADF Application Artifacts

Before you customize application artifacts (such as entity objects, view objects, application modules, and pages) using JDeveloper, you should be familiar with the Oracle Fusion application architecture that enables customization, as described in Chapter 1, "Customizing and Extending Oracle Fusion Applications." You should also understand the typical workflows for working with customizations, as described in Chapter 2, "Understanding the Customization Development Lifecycle."

Before you make any changes to the data model such as adding entity objects or attributes, first check to see if there are existing flexfields that meet your needs. For more information, see Chapter 5, "Using Flexfields for Custom Attributes."

In addition, you will need to perform the following tasks before you can begin customizing your application:

  • Set up a test environment.

    All application artifact customizations should be deployed to a test environment. For more information, see Chapter 2, "Understanding the Customization Development Lifecycle."

  • Determine which artifacts you want to customize.

    Before you can implement customizations using JDeveloper, you must first determine which business objects you want to customize, so that you can create a workspace that imports the necessary parts of the application. For more information, see Section 10.2, "Customizing Oracle ADF Artifacts with JDeveloper."

  • Create an application workspace.

    Before you can implement customizations using JDeveloper, you must create a workspace that imports the necessary parts of the application you want to customize. For more information, see Section 10.2.1, "Creating the Customization Application Workspace."

  • Launch JDeveloper in the appropriate role.

    If you are implementing customizations on existing application artifacts, you must select the Oracle Fusion Applications Administrator Customization role when you launch JDeveloper.

    If you are creating new custom application artifacts (such as, entity objects, view objects, and pages), you must select the Oracle Fusion Applications Developer role when you launch JDeveloper.

  • Select a layer value.

    When customizing application artifacts in JDeveloper, you first need to select the layer and layer value to work in. You use the Customization Context window to make this selection. When customizing business components, such as entity objects and view objects, you must use the global layer. For more information about customization layers, see Section 1.2, "Understanding Customization Layers."

11.2 Editing Existing Business Components

When customizing an application in JDeveloper, be aware that the layer in which you choose to implement customizations has an impact on what kinds of customizations you can perform. If you want to customize an ADF Business Components object, such as an entity object or view object, you must use the global layer.

Before You Begin

Before you start customizing business objects, you'll need to determine which business objects you want to customize and create an application customization workspace. For more information, see Section 11.1.1, "Before You Begin Customizing Oracle ADF Application Artifacts."

Then when customizing ADF artifacts, you need to launch JDeveloper in the Oracle Fusion Applications Administrator Customization role, and select the global layer.

Task: Edit Attributes

You can customize the properties of an attribute from an entity object or view object using JDeveloper. When you open an entity object or view object in the overview editor, you click the Attributes tab to see the attributes of the object. When you select an attribute, its properties are displayed in the Property Inspector.

It is not necessary to modify the page after customizing the properties of an existing attribute. Customizations to existing attributes are automatically reflected on the pages that show them.

However, if you modify an attribute so that it requires a different UI component, you must also update the page. For example, if you add a list of values (LOV) to an attribute, you will need to edit the page to hide the existing UI component that displays the attribute, and add a new UI component that can display the LOV.

Note that some attribute properties defined in the entity object can be overridden in the view object. For example, you can define the label text for a field in an entity object and subsequently give it a different label in the consuming view object. Then pages that use the view object display the label from the view object.

For more information about attributes in entity objects, see the "Creating a Business Domain Layer Using Entity Objects" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

Task: Add Attributes

You can add custom attributes to an entity object or view object using JDeveloper. To do this, you must launch JDeveloper in the Oracle Fusion Applications Administrator Customization role, and select the global layer. When you open an entity object or view object in the overview editor, you click the Attributes tab to see the attributes of the object. To add a custom attribute, click the Add icon.

If you want your custom attribute to be stored in the database, you must first create the column that will be use to store it.

If you want your custom attributes to be displayed in the application, you must also customize the pages to display them. For more information, see Section 11.4, "Editing Pages."

For more information about attributes in entity objects, see the "Creating a Business Domain Layer Using Entity Objects" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

Task: Edit Entity Objects

In JDeveloper, you edit entity objects using the overview editor. In the Application Navigator, right-click an entity object, and choose Open. Then click on the navigator tabs to view and edit the various features of the entity object.

For more information about entity objects, see the "Creating a Business Domain Layer Using Entity Objects" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

For more information about using entity objects in Fusion applications, see the "Getting Started with Business Services" chapter in the Oracle Fusion Applications Developer's Guide.

Task: Edit View Objects

In JDeveloper, you edit view objects using the overview editor. In the Application Navigator, right-click a view object, and choose Open. Then click on the navigator tabs to view and edit the various features of the view object.

For more information about view objects, see the "Defining SQL Queries Using View Objects" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

For more information about using view objects in Fusion applications, see the "Getting Started with Business Services" chapter in the Oracle Fusion Applications Developer's Guide.

Task: Edit Validation

In JDeveloper, you edit declarative validation rules for entity objects and view objects using the overview editor. In the Application Navigator, right-click an entity object or view object, and choose Open. Then click the Business Rules navigator tab to view and edit the validation rules.

When implementing customizations on validation rules, you can add rules, modify the error message, and make rules more restrictive. But you should avoid removing rules or making rules less restrictive, because this can cause unpredictable results. Also, you can edit only declarative validation rules; programmatic validation rules cannot be customized.

For more information, see the "Defining Validation and Business Rules Declaratively" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

Task: Edit Application Modules

In JDeveloper, you edit application modules using the overview editor. In the Application Navigator, right-click an application module, and choose Open.

In JDeveloper, you can make the following kinds of customizations on an application module:

It is important to note that you cannot modify the web service interface for a service-enabled application module. You can, for example, add an attribute in a view object that is included in a service-enabled application module, but that attribute cannot be added to the web service interface.

For more information about working with application modules, see the "Implementing Business Services with Application Modules" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

Task: Add Customizations to Existing Reports

After you have implemented customizations on your application, you can use Oracle Business Intelligence Publisher to include these customizations in your reports. For more information, see Chapter 8, "Customizing Reports and Analytics."

11.3 Editing Task Flows

You can use JDeveloper to implement customizations on the task flows that are used in your application. A task flow is a set of ADF Controller activities, control flow rules, and managed beans that interact to allow a user to complete a task. Although conceptually similar, a task flow is not the same as a human task, a task in the worklist, or a process flow.

A bounded task flow can be rendered in a JSF page or page fragment (.jsff) by using an ADF region. This is typically done to allow reuse of the task flow, as necessary, throughout the application. If you modify a bounded task flow, the changes apply to any ADF region that uses the task flow. For more information, see the "Using Task Flows as Regions" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

Before You Begin

Before you start editing task flows, you'll need to determine which task flows you want to customize, and create an application customization workspace. For more information, see Section 11.1.1, "Before You Begin Customizing Oracle ADF Application Artifacts."

When editing a task flow in JDeveloper, you must launch JDeveloper in the Oracle Fusion Applications Administrator Customization role.

Task: Edit Task Flows

In JDeveloper, you use the task flow diagram editor to implement customizations on existing task flows. In the Application Navigator, right-click the task flow you want to customize, and choose Open. The page is displayed in the diagram editor, where you can make changes to the existing activities and control flow cases, or create new custom ones. For more information, see the "Getting Started with ADF Task Flows" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

11.4 Editing Pages

You can use JDeveloper to implement customizations on the pages that are used in your application. When editing a page in JDeveloper, you must launch JDeveloper in the Oracle Fusion Applications Administrator Customization role.

Before You Begin

Before you start editing pages, you'll need to determine which pages you want to customize, and create an application customization workspace. For more information, see Section 11.1.1, "Before You Begin Customizing Oracle ADF Application Artifacts."

Task: Edit Pages

In JDeveloper, you use the visual editor to implement customizations on existing pages. In the Application Navigator, right-click the page you want to customize, and choose Open. The page is displayed in the visual editor (accessed by clicking the Design tab). Then you can edit the page as you typically would using this editor. For more information about editing pages in JDeveloper, see the Oracle Fusion Middleware Web User Interface Developer's Guide for Oracle Application Development Framework.

11.5 Creating Custom Business Components

You can use JDeveloper to extend your application by creating custom business components. When creating custom business components in JDeveloper, you must launch JDeveloper in the Oracle Fusion Applications Developer role. This role is used for creating new custom objects that you want to add to the application. You can use the same workspace that you created for customization. Then after you have created the custom business components, you switch to the Oracle Fusion Applications Administrator Customization role, to make changes to existing artifacts to integrate the new custom artifacts into the application.

Before You Begin

Before you start creating business objects, you'll need to determine which business objects you want to create, and create an application customization workspace. For more information, see Section 11.1.1, "Before You Begin Customizing Oracle ADF Application Artifacts."

Task: Create Custom Entity Objects

An entity object represents a row in a database table, and encapsulates the business logic and database storage details of your business entities.

In JDeveloper, you can create entity objects using the Create Entity Object wizard, which you can launch from the New Gallery. In the Application Navigator, right-click the project you want to add the entity object to, and choose New. Then in the New Gallery, expand Business Tier, click ADF Business Components, choose Entity Object, and click OK. Follow the prompts in the wizard to create an entity object.

For more information about creating entity objects, see the "Creating a Business Domain Layer Using Entity Objects" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

For more information about using entity objects and view objects in Fusion applications, see the "Getting Started with Business Services" chapter in the Oracle Fusion Applications Developer's Guide.

Task: Create Custom View Objects

A view object represents a SQL query and also collaborates with entity objects to consistently validate and save the changes when end users modify data in the UI.

In JDeveloper, you can create view objects using the Create View Object wizard, which you can launch from the New Gallery. In the Application Navigator, right-click the project you want to add the view object to, and choose New. Then in the New Gallery, expand Business Tier, click ADF Business Components, choose View Object, and click OK. Follow the prompts in the wizard to create a view object.

For more information about creating view objects, see the "Defining SQL Queries Using View Objects" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

For more information about using entity objects and view objects in Fusion applications, see the "Getting Started with Business Services" chapter in the Oracle Fusion Applications Developer's Guide.

Task: Create Custom Application Modules

An application module encapsulates an active data model and the business functions for a logical unit of work related to an end-user task.

In JDeveloper, you can create application modules using the Create Application Module wizard, which you can launch from the New Gallery. In the Application Navigator, right-click the project you want to add the application module to, and choose New. Then in the New Gallery, expand Business Tier, click ADF Business Components, choose Application Module, and click OK. Follow the prompts in the wizard to create an application module.

For more information about creating application modules, see the "Implementing Business Services with Application Modules" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

For more information about using application modules in Fusion applications, see the "Getting Started with Business Services" chapter in the Oracle Fusion Applications Developer's Guide.

Task: Create a Web Service Interface for a Custom Application Module

In JDeveloper, you can edit a custom application module to create a web service interface that exposes the top-level view objects and defines the available service operations it supports. To do this, open the application module in the overview editor, click the Service Interface navigation tab, and click the Enable support for Service Interface icon. Then use the Create Service Interface wizard to configure the desired options.

It is important to note that the new web service cannot be deployed to the Fusion application. You can deploy it only to a new application.

For more information about creating a web service interface for an application module, see the "Integrating Service-Enabled Application Modules" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

For more information about using application modules in Fusion applications, see the "Getting Started with Business Services" chapter in the Oracle Fusion Applications Developer's Guide.

Task: Add Validation

In JDeveloper, you can create declarative validation rules for entity objects and view objects to help ensure the integrity of the data. To do this, open the entity object or view object in the overview editor, and click the Business Rules navigation tab. Then select the attribute you want to provide validation for, click the Create new validator icon, and use the Add Validation Rule dialog to configure the rule. For more information, see the "Defining Validation and Business Rules Declaratively" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

Task: Enforce Data Security for a Custom Business Object

You can use JDeveloper to enforce row and attribute security for custom ADF Business Components objects. This is done using data security policies to secure data from business objects based on the grants made to roles.

When you need to expose data records in an extended application, you can use JDeveloper to create entity objects based on secured database resources, and then opt into data security policies by enabling row-level privilege checking for specific operations on the entity objects. For more information, see Section 15.5, "Enforcing Data Security in the Data Model Project."

Task: Add a Business Object to an Existing Report

After you have extended your application with custom business objects, you can use Oracle Business Intelligence Publisher to include these extensions in your reports. For more information, see Chapter 8, "Customizing Reports and Analytics."

11.6 Creating Custom Task Flows

You can use JDeveloper to create custom task flows that you can include in your application. A task flow is a set of ADF Controller activities, control flow rules, and managed beans that interact to allow a user to complete a task. Although conceptually similar, a task flow is not the same as a human task, a task in the worklist, or a process flow.

Before You Begin

Before you start creating custom task flows, you'll need to determine which task flows you want to create, and create an application customization workspace. For more information, see Section 11.1.1, "Before You Begin Customizing Oracle ADF Application Artifacts."

When extending your application with custom task flows in JDeveloper, you must launch JDeveloper in the Oracle Fusion Applications Developer role.

Task: Create a Custom Task Flow

You can create a custom task flow in JDeveloper using the New Gallery, and then define its activities using the task flow diagram editor. In the Application Navigator, right-click the project you want to add the task flow to, and choose New. Then in the New Gallery, expand Web Tier, and click JSF/Facelets. Then select ADF Task Flow, and click OK. In the Create Task Flow dialog, you'll specify the details about the type of task flow you want to create. When you click OK, the task flow is created and displayed in the diagram editor.

For information about creating and designing task flows, see the "Getting Started with ADF Task Flows" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework

11.7 Creating Custom Pages

You can use JDeveloper to create custom pages that you can include in your application. When creating custom pages in JDeveloper, you must launch JDeveloper in the Oracle Fusion Applications Developer role.

When creating the page (or dropping a view activity onto a task flow), you can create the page either as a JSF JSP or as a JSF JSP fragment. JSF fragments provide a simple way to create reusable page content in a project, and are what you use when you want to use task flows as regions on a page. When you modify a JSF page fragment, the JSF pages that consume the page fragment are automatically updated.

After extending your application with custom pages, you will need to make sure that security for the new pages is implemented appropriately and that the new pages are deployed so that they are accessible from the application. For more information about updating security, see Chapter 15, "Customizing Security for ADF Application Artifacts." For more information about deployment, see Section 11.13, "Deploying ADF Customizations and Extensions."

For more information about creating pages in JDeveloper, see the following resources:

Before You Begin

Before you start creating custom pages, you'll need to determine which pages you want to create, and create an application customization workspace. For more information, see Section 11.1.1, "Before You Begin Customizing Oracle ADF Application Artifacts."

When creating custom pages in JDeveloper, you must launch JDeveloper in the Oracle Fusion Applications Developer role.

Task: Create a Custom Page

In JDeveloper, you can create pages either by double-clicking a view activity in a task flow or by using the New Gallery. In the Application Navigator, right-click the project you want to add the page to, and choose New. Then in the New Gallery, expand Web Tier, and click JSF/Facelets. Then select either Page or ADF Page Fragment, and click OK.

Task: Add a Custom Page to a Task Flow

If you created the page by double-clicking a view activity in a task flow, it is already added to the task flow. If you created it using the New Gallery, you can add it to a task flow by dragging the page from the Application Navigator and dropping it in the task flow diagram editor. Then you can connect the page using a control flow. For more information, see the "Getting Started with ADF Task Flows" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

Task: Enable Runtime Customization for a Custom Page

To enable a custom page to be customized at runtime, you must make sure that the page and the project that contains it are set to allow runtime customizations. For information on how to do this, see the "Authorizing Runtime Customization of Pages and Task Flows" section in the Oracle Fusion Applications Developer's Guide.

11.8 Customizing and Extending the Oracle Fusion Applications Schemas

Using the database tools of your choice, you can customize and extend the Oracle Fusion Applications schemas to suit the needs of your organization. However, you should first consider using CRM Application Composer or flexfields to satisfy your additional data storage requirements. For more information about using CRM Application Composer, see Chapter 4, "Customizing Objects." For more information about using flexfields, see Chapter 5, "Using Flexfields for Custom Attributes."

11.8.1 About Customizing and Extending the Oracle Fusion Applications Schemas

If you need to extend the preconfigured Oracle Fusion Applications schemas to address additional data storage needs, you should create a custom schema. In your custom schema, you can create tables, columns, and all the necessary additional schema objects that you need. This approach allows you to contain and maintain all of your custom data storage objects separately from the preconfigured Oracle Fusion Applications schemas.

If necessary, you can extend the preconfigured schemas within certain constraints. With the exception of customizing a preconfigured table to include new custom objects, such as columns, you must not make any customizations to preconfigured schema objects. Instead, you can extend the schema by adding new custom objects that you can configure as needed.

When making amendments to the schema, such as adding tables or columns, prefix the name of the table or column with a unique identifier (for example, XX_) to prevent collisions with existing objects.

Any code that accesses the new custom schema objects should use fully qualified table names (for example, SCHEMA_NAME.TABLE_NAME). If your code does not use fully qualified table names, you will need to create synonyms for the custom tables. The synonym must be created in the FUSION schema, and associated privileges must be granted in the FUSION_RUNTIME schema. At runtime, Oracle Fusion applications connect to the FUSION_RUNTIME schema, so privileges must be granted there. However, because the schema context is set to FUSION, the synonym must be created there. This convention applies in all cases, whether you create custom schema objects in a custom schema or a preconfigured schema.

For information about creating database objects, see the Designing Databases topics in the JDeveloper online help.

11.8.2 What You Can Do With Schema Modifications

Using the SQL Worksheet in JDeveloper or the database tools of your choice, you can issue commands to the database to customize and extend it. When making changes to the database, you can do the following:

  • Add a custom schema

  • Add or modify tables

  • Add columns to preconfigured or custom tables

  • Add indexes to custom columns

  • Add sequences

  • Add PL/SQL packages, procedures, functions and abstract data types

11.8.3 What You Cannot Do With Schema Modifications

When making changes to the database, you cannot do any of the following:

  • Modify preconfigured columns or sequences.

  • Modify preconfigured PL/SQL packages, procedures, functions and abstract data types (unless explicitly directed to do so by product documentation).

  • Delete preconfigured schema objects.

  • Add indexes to preconfigured columns (unless explicitly directed to do so by product documentation).

11.8.4 Before You Begin Extending the Oracle Fusion Applications Schemas

Before you modify the Oracle Fusion Applications schema, you should first see if you can address your additional data storage requirements using flexfields, as described in Chapter 5, "Using Flexfields for Custom Attributes."

11.8.5 Extending the Schemas Using a Custom Schema

Using the SQL Worksheet in JDeveloper, you can issue commands to the database to customize and extend it. In a custom schema, you can add tables, columns, indexes, and other schema objects to support the customizations and extensions you want to implement in the application (such as, adding an attribute to an entity object).

To access the SQL Worksheet, right-click the database connection (under the Connections node in the Application Resources panel of the Application Navigator), and choose Database Navigator from the context menu. This will open the selected database connection in the Database Navigator and display the SQL Worksheet.

Before You Begin

Before you attempt to extend the schema, you should be familiar with the guidelines described in Section 11.8.1, "About Customizing and Extending the Oracle Fusion Applications Schemas."

Task: Create a Custom Schema

When making creating a custom schema, prefix the name of the schema with a unique identifier (for example, XX_) to prevent collisions with existing schemas. You must grant the privileges to the custom schema that are necessary for it to function properly and for any supporting code to compile (for example, objects referenced in PL/SQL code).

Task: Create Custom Database Tables, Columns, Indexes, and Sequences

Within a custom schema, you can create custom database tables, columns, indexes, and sequences to address your additional data storage needs. When adding custom objects, prefix the name of the object with a unique identifier (for example, XX_) to prevent collisions with existing objects. New custom indexes and sequences should adhere to this convention as well.

After creating a custom table, you will need to grant the necessary object privileges to the FUSION_RUNTIME schema, which Oracle Fusion Applications uses at run time. You can grant privileges directly to the schema, or through a custom database role, but do not use the preconfigured FUSION_APPS_READ_AND_WRITE database role.

Any code that accesses the new custom schema objects should use fully qualified table names (for example, SCHEMA_NAME.TABLE_NAME). If your code does not use fully qualified table names, you will need to create synonyms for the custom tables, as described in Section 11.8.1, "About Customizing and Extending the Oracle Fusion Applications Schemas."

Task: Create Custom PL/SQL Packages, Procedures, Functions, and Abstract Data Types

When adding PL/SQL objects and abstract data types to a custom schema, prefix the name of the object or data type with a unique identifier (for example, XX_) to prevent collisions with existing objects.

Your PL/SQL code should contain the AUTHID INVOKER clause so that the code is executed within the context of the privilege set of the FUSION_RUNTIME user. Additionally, the FUSION_RUNTIME user must be granted the EXECUTE privilege on the PL/SQL object or type, either directly or through a database role.

If you need to create synonyms to support your PL/SQL code, create your synonyms in the FUSION schema, as described in Section 11.8.1, "About Customizing and Extending the Oracle Fusion Applications Schemas."

11.8.6 Extending a Preconfigured Schema

Using the SQL Worksheet in JDeveloper, you can issue commands to the database to customize and extend it. When making changes to the schema, you can add tables or columns to support the customizations and extensions you want to implement in the application (such as, adding an attribute to an entity object). However, do not remove tables or columns, as this can have adverse affects in other parts of the application.

With the exception of customizing a preconfigured table to include new custom objects, such as columns, you must not make any customizations to preconfigured schema objects.

To access the SQL Worksheet, right-click the database connection (under the Connections node in the Application Resources panel of the Application Navigator), and choose Database Navigator from the context menu. This will open the selected database connection in the Database Navigator and display the SQL Worksheet.

Before You Begin

Before you implement extensions to a preconfigured schema, consider creating your extensions in a custom schema. This approach provides greater flexibility and modularity.

Also, you should be familiar with the guidelines described in Section 11.8.1, "About Customizing and Extending the Oracle Fusion Applications Schemas."

Task: Edit Database Tables

With the exception of customizing a preconfigured table to include new custom objects, such as columns, you must not make any customizations to preconfigured schema objects.

When adding columns to a preconfigured table, prefix the name of the column with a unique identifier (for example, XX_) to prevent collisions with existing columns.

Task: Create Custom Database Tables, Columns, Sequences, and Indexes

You can create custom database tables and columns to address your additional data storage needs. When adding custom tables and columns, prefix the name of the table and columns with a unique identifier (for example, XX_) to prevent collisions with existing tables and columns.

After creating a custom table, you will need to grant the necessary object privileges to the FUSION_RUNTIME schema, which Oracle Fusion Applications uses at run time. You can grant privileges directly to the schema, or through a custom database role, but do not use the preconfigured FUSION_APPS_READ_AND_WRITE database role.

Any code that accesses the new custom schema objects should use fully qualified table names (for example, SCHEMA_NAME.TABLE_NAME). If your code does not use fully qualified table names, you will need to create synonyms for the custom tables, as described in Section 11.8.1, "About Customizing and Extending the Oracle Fusion Applications Schemas."

You can create new custom indexes on custom columns, but do not attempt to create an index on a preconfigured column, unless explicitly directed to do so by product documentation.

Task: Create Custom PL/SQL Packages, Procedures, Functions, and Abstract Data Types

When adding PL/SQL objects and abstract data types, prefix the name of the object or data type with a unique identifier (for example, XX_) to prevent collisions with existing objects.

Your PL/SQL code should contain the AUTHID INVOKER clause so that the code is executed within the context of the privilege set of the FUSION_RUNTIME user. Additionally, the FUSION_RUNTIME user must be granted the EXECUTE privilege on the PL/SQL object or type, either directly or through a database role.

If you need to create synonyms to support your PL/SQL code, create your synonyms in the FUSION schema, as described in Section 11.8.1, "About Customizing and Extending the Oracle Fusion Applications Schemas."

11.9 Customizing or Creating a Custom Search Object

In JDeveloper, you can customize and create saved searches and search forms for your application. To customize a search form or saved search in JDeveloper, you'll need to set up an application workspace as described in Section 10.2.1, "Creating the Customization Application Workspace." Then, locate and open the object you want to customize. To create a new search form, you open or create the page that will display the form and select a data collection from the Data Controls panel. For more information, see the "Creating ADF Databound Search Forms" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

11.10 Editing the UI Shell Template

For CRM applications, you can use Page Composer to edit the UI shell template, as described in Section 3.4, "Editing the UI Shell Template Used by All Pages." For other Oracle Fusion Applications, you will need to use JDeveloper.

To edit the UI Shell template in JDeveloper, you'll need to set up an application workspace as described in Section 10.2.1, "Creating the Customization Application Workspace." Then, in the Oracle Fusion Applications Administrator Customization role, expand the contents of the Applications Core (ViewController) library and drill down to the file oracle/apps/fnd/applcore/templates/UIShell.jspx. This is the UI Shell template, which you can customize as necessary.

Alternatively, you can access the UI Shell template from any page in the library. Open the page in JDeveloper, right-click on the view ID of the pageTemplate tag (/oracle/apps/fnd/applcore/templates/UIShell.jspx), and then choose Go to Declaration to open the UI Shell template.

You can also customize the Oracle Fusion Applications skin (for both CRM and non-CRM applications) as described in Chapter 19, "Customizing the Oracle Fusion Applications Skin."

11.11 Customizing Menus

Using JDeveloper you can customize the menus in your Oracle Fusion applications. Customizing the tasklist menu follows the same pattern as editing most artifacts (such as, pages or business components) from the EAR connection. However, customizing the home page, preferences and navigator menus is slightly different. For these menus, you will need to export the menu's XML file from the MDS repository and copy them into your customization workspace before you can implement customizations.

Note:

You can also customize the navigator menu at runtime from the Setup and Maintenance work area, as described in Chapter 6, "Customizing the Navigator Menu."

When exporting the menu XML files from the MDS repository, as described in Section 10.2.4, "Importing Customizations into Your Workspace," you can find them in the oracle/apps/menu directory in the repository. The following are their file names:

Then you copy the files to the same directory (under project source path) in your local workspace (for example, CUSTOMIZATION_APP_PATH/PROJECT_NAME/src/oracle/apps/menu). After you have copied them into your local customization workspace, you can customize the menus as necessary.

After you have implemented customizations on a menu, you will need to update the MAR profile to make sure they are included during deployment. In the MAR profile, under User Metadata > Directories, select the customizations you implemented that correspond to the menu files. For more information about deploying customizations, see Section 11.13, "Deploying ADF Customizations and Extensions."

For more information about menus in Oracle Fusion Applications, see the "Working with the Global Menu Model" section in Oracle Fusion Applications Developer's Guide.

11.12 Customizing or Adding Resource Bundles

One method of customizing text is defining a new key in the resource bundle. There is a single override resource bundle for Oracle Fusion Applications. You can use this resource bundle to override values for existing keys, but you cannot add new keys.

Because you cannot define a new key in the shipped resource bundle, you need to create a new override bundle. You can accomplish this in JDeveloper by creating an XLIFF file from the New Gallery. After the file is generated, you can then enter new keys and their associated text in the XLIFF file.

To make the newly created resource bundle available for customization, you need to register the resource bundle with the customization project. You can do this from the Resource Bundle page of the Project Properties dialog.

You can also extend your application by creating a new resource bundle for a project if, for example, you want to customize the text for a label and you don't want to change the value in the global override bundle. To do this, create an XLIFF file from the New Gallery, package it into an ADF Library JAR file, and import the JAR file into the customization project.

Note:

All custom JAR file names must begin with the prefix Xx, for example XxMyJar.jar

To test your customizations locally in JDeveloper Integrated WebLogic Server, you must also include the ADF Library JAR file in the APP-INF/lib directory.

For information about translating custom resource bundle strings, see Section 16.2, "Translating Resource Bundles from Metadata Services Metadata Repository."

For more information about working with resource bundles, see the "Creating a Business Domain Layer Using Entity Objects" chapter in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

11.13 Deploying ADF Customizations and Extensions

After you have customized existing artifacts, you can use JDeveloper to deploy the customizations to a sandbox or to the Fusion application. For more information on how to use sandboxes to isolate changes from the mainline so you can test and validate the changes, see Section 2.2.2, "Setting Up Sandboxes."

When you create a customization workspace as described in Section 10.2.1, "Creating the Customization Application Workspace," the wizard generates a MAR profile. By default, the name of the MAR profile is application_name_customizations. It will automatically include the customizations that you implement. You can use this profile to package your customizations for deployment.

When you package customizations from the customization workspace, the MAR file should include only library customizations. Do not include the User Metadata or HTML Root Dir for Project in the MAR profile, unless explicitly directed to do so by product documentation.

If you extend your application with new custom artifacts, you can use JDeveloper to package them into an ADF Library JAR and place them into the proper location within the application directory structure.

Task: Deploy the Customizations

You can use JDeveloper to deploy the customizations directly or you can use JDeveloper to create a MAR, and then load the MAR using WLST commands or the WebLogic Server Administration Console.

Tip:

You can also use Oracle Enterprise Manager Fusion Applications Control to import and export customization files. For more information, see the "Transferring Metadata Using Fusion Middleware Control" section of the Oracle Fusion Middleware Administrator's Guide. The referenced procedure describes using Fusion Middleware Control, but also applies to Fusion Applications Control.

If you are using JDeveloper to deploy directly, you have a choice to deploy to available sandboxes or into the already deployed Fusion application.

When you deploy customizations on ADF Business Component objects (such as entity objects and view objects), the server must be restarted for the customizations to be picked up.

For instructions on deploying customizations, see the section on "How to Deploy New Customizations Applied to ADF LIbrary" in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.

Task: Package New Artifacts into ADF Library

If you have extended your application with new custom artifacts (or you are supplied with new artifacts), you must package these artifacts into an ADF library JAR and place the JAR files in the proper location within the application.

Note:

All custom JAR files must begin with the prefix Xx, for example XxMyJar.jar

The ADF library JAR for the new model artifacts (such as entity objects and view objects) should be placed into the ExplodedEarDirectory/APP-INF/lib directory (for example, /fusionapps/applications/fin/deploy/ EarFinPayables.ear/APP-INF/lib/XxMyJar.jar). The ADF Library JAR for the new user interface artifacts (such as pages) should be placed in the ExploadedWarDirectory/WEB-INF/lib directory.

For instructions on creating ADF Library, see the section on "Packaging a Reusable ADF Component into an ADF Library" in the Oracle Fusion Middleware Fusion Developer's Guide for Oracle Application Development Framework.