2. Building the Business Components

Purpose

In this tutorial you start to create the business services for your application. Business services are the parts of the application that are responsible for persisting the data in your application and implementing business rules in the middle tier. There are different ways to do this. In this tutorial, you use ADF Business Components for the middle tier business services.

Time to Complete

Approximately 30 minutes

Topics

This tutorial covers the following topics:

 

Viewing Screenshots

Show all images

Place the cursor over this icon or hit Alt-a (Alt-Shift-a on Firefox) to load and view all the screenshots for this tutorial. Alternatively, you can place the cursor over an individual icon in the following steps to load and view only the screenshot associated with that step. You can hide an individual screenshot by clicking it.

Note: Alternatively, you can place the cursor over each individual icon in the following steps to load and view only the screenshot associated with that step.

Overview

As a Forms or Designer application developer, you should be familiar with the concept of the data block. You can think of the data block as a component or object that maps to an underlying database table and is responsible for persisting data in the application before committing that data back to the database. Similar functionality is available for developing Java applications by using ADF Business Components: entity objects, view objects, and application modules.

In this tutorial you create a number of entity objects and view objects and add them all to a single application module.

Back to Topic List

Scenario

Having identified the database tables on which to base your application, and having established an idea of the basic flow of the user interface, you now need to identify the actual business services to implement. You need to specify the data that you want to manipulate from the database tables.

Below are rough sketches of the pages you create later in this workshop. They are the browseCustomers, editCustomers and browseCustomerOrders pages. From these sketches you can see that the planned application manipulates data from the CUSTOMERS, ORDERS, ORDER_ITEMS, and PRODUCT_INFORMATION tables. You can see that the pages vary slightly, not all table columns are displayed, and some pages display data from multiple tables.

Browse Customers Edit Customers
Browse Customer orders

 

 

Back to Topic List

Prerequisites

Before starting this tutorial, you should:

  1. Have complied with prerequisites stated in previous hands-on tutorials.

  2. Have completed the previous hands-on tutorials in this tutorial.

Back to Topic List

1. Creating Entity Objects

There are a number of approaches you can take to create ADF Business Components. In this tutorial we use a combination of these.

First you create entity objects, which are data access objects that are responsible for persisting and caching data, validation, and encapsulating business rules. An entity object can be compared to a block's record manager in Forms. Creating an entity object is similar to the Forms task of choosing a table on which to base a data block.

In this first part of the tutorial we use a diagram. To create entity objects on a business components diagram, perform the following steps:

  1. In the OrderEntry application that you have been working on, right-click the Model project and select New... from the context menu.

    Hover to see image

  2. In the New Gallery expand Business Tier in the Categories list and select ADF Business Components, then select Business Components Diagram from the Items list.

    Click OK.

    Hover to see image

  3. In the Create Business Components Diagram dialog, enter the diagram name CustomerAppBC_Diagram and set the package name to model.

    Click OK.

    Hover to see image

  4. There are number of ways of creating entity objects on the diagram. Possibly the easiest is to drag database tables directly onto the diagram to create the entity objects.

    With the CustomerAppBC_Diagram diagram open in the editor, open the Database Navigator.

    Expand the IDE Connections node, the oeconn connection, and the Tables node.

    [Ctrl-click] to multi-select the CUSTOMERS, ORDERS, ORDER_ITEMS and the PRODUCT_INFORMATION tables and drag them onto the diagram.

    Hover to see image

  5. In the Create from Database Object dialog, you are presented with the choice, based on the project technologies. Select Business Component Entity Objects. Click OK to create the entity objects.

    Hover to see image

  6. You should now have four entity objects on your diagram linked by their associations, based on the tables and foreign keys on the database.

    Note: You will also get a few additional domain objects created when you drag the tables from the database. These are created because the CUSTOMERS table uses Oracle Object Types. You can ignore these.

    If you have time, you can work with the layout of these entity objects in the same way you did with the tables in the previous session.

    Hover to see image

  7. Return to the Applications Navigator and expand Model | Application Sources | model. You can now see the objects that were created in your Model project when you dragged the tables onto the ADF Business Components diagram.

    Hover to see image

  8. Click Save All Save All button or select File | Save All to save your work.

Back to Topic List

2. Customizing an Entity Object

Usually an entity object's attributes have a one to one mapping to the columns in the database, and they are reused in a number of view objects in the application. However, there may be circumstances when you want to limit the attributes in the entity objects. In this example, we remove an attribute from an entity object that is never used by the application.

  1. Select the Customers entity object in the diagram. Right-click and select Open Customers... from the context menu to invoke the Entity Object Flat Editor.

    Hover to see image

  2. Selecting Attributes from the list on the left and the CustGeoLocation attribute from the Entity Attributes panel on the right, remove the attribute.

    Hover to see image

    Note: Alternatively you can delete the attribute from the diagram. Be sure to delete just the attribute and not the whole entity.

  3. Click Save All Save All button or select File | Save All to save your work.

Back to Topic List

3. Creating View Objects

Now that you have created entity objects, you create view objects.

View objects, which are based on entity objects and represent the data you want to view and manipulate, are often referred to as the query. Creating a view object in JDeveloper is roughly analogous to the task in Forms of selecting columns to include on a Forms canvas when using the Layout wizard.

In this section you create the view objects CustomersView, OrdersView and OrderItemsView using a wizard. To create view objects using a wizard, perform the following steps:

  1. With the Business Components diagram open, select Customers, Orders and OrderItems, right-click and select Generate | Default Data Model Components from the context menu.

    Hover to see image

  2. The Selected panel now has CustomersView, OrdersView and OrderItemsView listed. These form the basis for each of your query objects. The view objects are related to each other through the underlying relationships between the entity objects. You also need the relationships between these queries, so add these by shuttling the OrderItemsOrderIdFkAssoc and the OrdersCustomerIdFkAssoc across too. These become the view links between the view objects.

    Before you move to the next page, add .queries to the package name. This will ensure the view objects go into their own package.

    Click Next.

    Hover to see image

  3. Step two of the wizard creates an application module with all the view objects in it. You will create the application module in the next section, so for now, uncheck the checkbox Application Module.

    Click Finish to complete the wizard.

    Hover to see image

  4. Note how the Application Navigator now displays two nodes. Expand the queries node to see the objects created.

    Hover to see image

  5. You can also review these objects on the diagram. Select the 3 view objects, CustomersView, OrdersView and OrderItemsView and drag them onto a blank area in the diagram. Notice the view links between each of the view objects. These view links maintain the relationships between the view objects.

    You can lay the objects out as you please. A suggestion is shown below.

    Hover to see image

  6. As mentioned earlier, the view object is a query and does not necessarily mirror all the attributes in the entity object. Using the diagram, double-click OrdersView to invoke the View Object Editor, and select the Attributes node. Select the PromotionId attribute and click Delete Add Instance button

    Hover to see image

  7. Using the diagram, select the ProductInformation entity object and drag it to the OrderItemsView view object.

    Hover to see image

  8. The view object displayed in the diagram should now contain two entity objects, OrderItems and ProductInformation, with their attributes displayed to the left. You may need to resize the view object and move the entity objects to see both of them, because they may initially be stacked on top of one another.

    You can right-click the view object and select Lay Out Shapes | Hierarchical (Bottom to Top)

    Hover to see image

  9. Double-click the OrderItemsView view object on the diagram to open the View Object Editor.

    Select the Entity Objects node in the tree on the left, then select the ProductInformation1 in the Selected list.

    • Change the alias to ProductInformation.

    • Ensure that Updatable is not checked and that Reference is checked. The reason for doing this is because in the Order Items view, you will be displaying information from the Product Information table, but you will not be updating it. This is similar to using a post-query trigger in Forms to retrieve information from another table into a non base table display item in a block.

    Hover to see image

  10. Still in the View Object Editor, select the Attributes node. You only need ProductId1, ProductName, and ProductDescription from the ProductInformation entity object. Shift-click all the other ProductInformation attributes in the Selected list below those, to select them, and click Remove Add Instance button

    Hover to see image

  11. Click Save All Save All button or select File | Save All to save your work.

Back to Topic List

4. Creating the Application Module

An ADF Business Components application module is a service object that coordinates view objects for a specific task in the same way that a form usually encapsulates a single user task. It contains only the business services that the application requires, and can be compared to a Forms module.

You can create an application module using the same wizard you used in the previous section. The wizard adds more pieces than you require, so instead you'll create the application module visually. To create the application module using the diagram, perform the following steps:

  1. Return to the business component diagram, ensure that Business Components is selected in the dropdown list at the top of the Component Palette.

    Drag an Application Module onto the diagram.

    Hover to see image

  2. On the application module enter the name CustomerOrdersBusinessService.

    Hover to see image

  3. Select the CustomersView and OrdersView view objects and drag them onto the CustomerOrdersBusinessService application module.

    Hover to see image

  4. In the same way, select the OrderItemsView view object and drag it onto the CustomerOrdersBusinessService application module below the other view objects.

    Hover to see image

  5. Notice how there is a view link between the CustomersView and OrdersView view objects, but nothing linking them to the OrderItemsView view object.

    Hover to see image

  6. Use the Component Palette and select View Link Instance, click on OrdersView1 and then OrderItemsView1 to add the view link.

    Hover to see image

  7. Double click the CustomerOrdersBusinessService application module to invoke the dialog. Notice the hierarchical relationships between the view objects. This is significant. It means that the service will keep track of what record is selected in each hierarchy and only show the relevant records lower down in the hierarchy, much like a Master-Detail block does in Forms.

    Hover to see image

  8. By using the diagram to create the application module we did not get the opportunity of creating it in a separate project. Projects are very useful for grouping logical pieces of work together. In this last section, you move the application module into its own project, by using refactoring.

    Return to the Applications Navigator and expand Model | Application Sources | model. Select the CustomerOrdersBusinessService application module, right click and select Refactor | Move...

    Hover to see image

  9. Enter model.services in the dialog that appears.

    Click OK. (Click Yes when asked if you'd like to create the specified package.)

    Hover to see image

  10. Notice that you now have three project nodes under Application Services and that the application module CustomerOrdersBusinessService has been moved to the new project model.services.

    Hover to see image

  11. Click Save All Save All button or select File | Save All to save your work.

Back to Topic List

Summary

In this tutorial you learned how to create entity objects based on tables in the database and with the same names as those tables. Using a wizard, you then created view objects that represent the data (specific columns) that you plan to use in the application, and view links, which preserve a master-detail relationship between the view objects. Finally you created an application module to contain and coordinate the view objects and view links to be used for the order entry task.

Back to Topic List

Hide all images Place the cursor over this icon or press Shift-Alt-h to hide all screenshots. Click the icon to show a navigation bar.

false ,,,,,,,,,,,,,,,