ADF Business Components para Oracle OAF
Vas a aprender con un ejercicio ADF completo en la Oracle EBS para hacer personalizaciones Java EE, entendiendo sobre los principales componentes: Business Components Package, Entity Object (EO), View Object (VO), Application Module (AM), Control.
Al aprender sobre los componentes de OAF vamos a conocer también los ADF Business Components, porque ADF se baso en OAF y la arquitectura es la misma.
Este ejercicio es de Departamentos y Empleados, incluyo scripts:
Cualquier duda adicional puede contactarme a [email protected]
Acerca del Autor: Jhon Robert Quintero H.
Propósito
En este tutorial se muestra cómo construir una aplicación que interactúa con una base de datos. Usted va a utilizar Oracle JDeveloper 10g Versión 10.1.3.5.0.3 y el Framework OAF para construir la aplicación, en el proceso va a trabajar con Oracle ADF Business Components.
Descargar la versión correcta de Jdeveloper en My Oracle Support
Verificamos la versión de OAF Framework instalada en nuestra EBS.
Vamos a My Oracle Support
Configuring the JDEV_USER_HOME Environment Variable
Warning: This is a requirement for JDeveloper. Do not skip this task.
Configure the JDEV_USER_HOME environment variable using Windows XP or Windows 2000:
- Go to your desktop and select My Computer, right-click and select Properties.
- On the System Properties dialog, select the Advanced tab.
- On the Advanced page, select the Environment Variables… button.
- On the Environment Variables dialog, select the New… button from the User variables for <username> box.
- On the New User Variable dialog, enter JDEV_USER_HOME in the Variable Name field. Set the Variable Value field to <drive>:\jdevhome\<project> where <drive> is the drive where you installed the JDeveloper OA Extension zip file and <project> is the subdirectory where your project will reside. For example: c:\jdevhome\jdev.
- Select OK in each of the dialogs you opened to save the new user environment variable.
Note: In order to keep projects separate using the same JDeveloper instance, you can modify the JDEV_USER_HOME environment variable before launching JDeveloper each time to point to a different location for a different project. For example, c:\jdevhome\jdevproject1 or c:\jdevhome\jdevproject2.
Warning: The variable value should not contain a leading space before the drive name. If it does, your environment will not work properly.
Obtaining a Database Connection File
Obtain the FND database connection (.dbc) file from the system administrator who installed the OA Framework database where you want to do your development. Place this file in the <JDEV_USER_HOME>\dbc_files\secure directory.
C:\jdev_10G_OAF\jdevhome\jdev\dbc_files\secure
Verificamos la ruta donde debemos descargar el archive dbc
Creating a Desktop Shortcut to JDeveloper
To facilitate launching JDeveloper, Creacion a desktop shortcut to jdevbin\jdev\bin\jdevw.exe.
Alternatively, if you are working on multiple projects, you can Creacion a separate batch file (jdev.cmd or jdev.bat) to set the JDEV_USER_HOME environment variable for each of your projects. The example below illustrates what the content of each batch file should look like:
@echo off
setlocal
set JDEV_HOME=D:\jdeveloper\1213_x5_8919491
set JDEV_USER_HOME=D:\jdevhome\<project>
start «Jdeveloper» %JDEV_HOME%\jdev\bin\jdevw.exe
endlocal
Modify the content of the batch file so that JDEV_HOME is set to the path of your JDeveloper installation and JDEV_USER_HOME is set to your local project directory and use case.
Note: It is convenient to maintain multiple batch scripts that each point to a different JDeveloper project and Creacion separate shortcuts for each of these batch scripts/projects.
Crear Workspace y Project
File> New > General> Workspace Configured for Oracle Applications
Se selecciona el archivo dbc
Creamos el Application Module (AM)
Creamos la pagina (PG)
Creamos una Region: pagina
Attribute | Property |
ID | pagina |
Region Style | pageLayout |
Form Property | True |
Auto Footer | True |
Window Title | Departamentos |
Title | Departamentos |
AM Definition | cvj.oracle.apps.po.portal.departamentos.server.DepartAM |
Creamos una Region: header
Attribute | Property |
ID | header |
Region Style | header |
Creamos otra Region dentro de header
Attribute | Property |
ID | consulta |
Region Style | messageComponentLayout |
Creamos el Item Codigo Departamento
Attribute | Property |
ID | idDepartamentoTxt |
Style Property | messageTextInput |
Prompt | Codigo Departamento |
Length | 20 |
Maximum Length | 50 |
Creamos el contenedor para el botón consultar
Attribute | Property |
ID | region1 |
Region Style | rowLayout |
Horinzontal Alignment | Center |
Creamos el botón consultar dentro region1
Attribute | Property |
ID | btnConsultar |
Item Style | submitButton |
Attribute Set | /oracle/apps/fnd/attributesets/Buttons/Go |
Prompt | Consultar |
Guardar el proyecto y ejecutar la pantallar para probar como va quedando.
Agregamos la Clase Controladora
Editamos la Controladora
Agregamos esta linea en el import
import oracle.apps.fnd.framework.OAException;
Agregamos el siguiente codigo en processFormRequest
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
if (pageContext.getParameter(«btnConsultar») != null)
{
String idDept = pageContext.getParameter(«idDepartamentoTxt»);
String message = «Hemos digitado, » + idDept + «!»;
throw new OAException(message, OAException.INFORMATION);
}
}
Compilar proyecto
Ejecutar y probar la pantalla
Agregamos un separator
Attribute | Property |
ID | item1 |
Item Style | separator |
Creamos conexión a base de datos
Creacion de Entity Object Departamentos
Click derecho > New > ADF Business Components > Entity Object
Name – DepartamentosEO
Package — cvj.oracle.apps.po.portal.departamentos.server
Database Objects – DEPARTMENTS
Verificar que DepartmentId este marcado como Primary Key
Seleccionar: Accessors, Creacion Method, Validation Method and Remove Method
Creacion de Entity Object Empleados
Click derecho > New > ADF Business Components > Entity Object
Name – EmpleadosEO
Package — cvj.oracle.apps.po.portal.departamentos.server
Database Objects – EMPLOYEES
Verificar que EmployeeId este marcado como Primary Key
Seleccionar: Accessors, Creacion Method, Validation Method and Remove Method
Creamos View Object para Departamentos
Click derecho > New > ADF Business Components > View Object
Name — DepartamentosVO
Package — cvj.oracle.apps.po.portal.departamentos.server
En el paso 2 Seleccionamos DepartamentosEO
Seleccionamos todos los items
Creamos un item transitorio que le sirve para controlar la relación maestro detalle
Damos click en New
Name – detFlag
Type — Boolean
Marcar las siguientes propiedades:
Updatable -> Always
Selected in Query
Passivate
Queryable
En el paso 7 de 7 desmarcar Generate Java file (View Object Class: DepartamentosVOImpl)
Creamos View Object para Empleados
Click derecho > New > ADF Business Components > View Object
Name — EmpleadosVO
Package — cvj.oracle.apps.po.portal.departamentos.server
En el paso 2 Seleccionamos EmpleadosEO
Seleccionamos todos los items
En el paso 7 de 7 desmarcar Generate Java file (View Object Class: DepartamentosVOImpl)
Creamos el View Link
Click derecho > New > ADF Business Components > View Link
Name – DeptEmpVL
Package — cvj.oracle.apps.po.portal.departamentos.server
Adicionamos el View Object al Application Module
Click derecho en DepartAM > Application Modules > Data Model >
Seleccionar DepartamentosVO, EmpleadosVO via DetpEmpVL, EmpleadosVO y pasarlos al AM
Creamos una Region para el Encabezado
Seleccionar header > New > Region
ID – encabezado
Region Style — advancedTable
View Instance — DepartamentosVO1
Detail View Attribute – detFlag
Child View Attribute — DepartmentId
View Link Instance — DeptEmpVL1
Width – 100%
Rendered – True
Text – Encabezado
Additional Text – Encabezado
Creacion Column1
Select encabezado > New > column
Select column1 > New > Item
ID – DepartmentId
Item Style – messageStyledText
View Attribute – DepartmentId
Creacion Column2
Select encabezado > New > column
Select column2 > New > Item
ID – DepartmentName
Item Style – messageStyledText
View Attribute – DepartmentName
Creacion una Region para el Detalle
Select encabezado > New > detail
ID – detalle
Region Style – header
Creacion de una Region para la tabla detalle
Select detalle > New > Region
For New region set following Properties
ID – detalleTabla
Region Style – advancedTable
View Instance — EmpleadosVO2
View Link Instance — DeptEmpVL1
Width – 100%
Rendered – True
Creacion de columas e items para detalleTabla
Creacion Column
Select detalleTabla> New > column
Select column3 > New > Item
ID – EmployeeId
Item Style – messageStyledText
View Instance – EmpleadosVO2
View Attribute – EmployeeId
Creacion Column
Select detalleTabla > New > column
Select column4 > New > Item
ID – FirstName
Item Style – messageStyledText
View Instance – EmpleadosVO2
View Attribute – FirstName
Creacion Column
Select detalleTabla > New > column
Select column5 > New > Item
ID – LastName
Item Style – messageStyledText
View Instance – EmpleadosVO2
View Attribute – LastName
Creacion Column
Select detalleTabla > New > column
Select column6 > New > Item
ID – Email
Item Style – messageStyledText
View Instance – EmpleadosVO2
View Attribute – Email
Creacion Column
Select detalleTabla > New > column
Select column7 > New > Item
ID – PhoneNumber
Item Style – messageStyledText
View Instance – EmpleadosVO2
View Attribute – PhoneNumber
Creacion Column
Select detalleTabla > New > column
Select column8 > New > Item
ID – HireDate
Item Style – messageStyledText
View Instance – EmpleadosVO2
View Attribute – HireDate
Creacion Column
Select detalleTabla > New > column
Select column9 > New > Item
ID – JobId
Item Style – messageStyledText
View Instance – EmpleadosVO2
View Attribute – JobId
Creacion Column
Select detalleTabla > New > column
Select column10 > New > Item
ID – Salary
Item Style – messageStyledText
View Instance – EmpleadosVO2
View Attribute – Salary
Estructura Final de la Pagina
Modificar la Clase Controladora (CO)
import java.io.Serializable;
import cvj.oracle.apps.po.portal.departamentos.server.DepartAMImpl;
…
public void processFormRequest(OAPageContext pageContext, OAWebBean webBean)
{
super.processFormRequest(pageContext, webBean);
if (pageContext.getParameter(«btnConsultar») != null)
{
String idDept = pageContext.getParameter(«idDepartamentoTxt»);
DepartAMImpl AM =
(DepartAMImpl)pageContext.getApplicationModule(webBean);
Serializable[] parameters = {idDept};
AM.invokeMethod(«consultar», parameters);
}
}
Modificar la Clase (AM)
public void consultar (String idDept)
{
DepartamentosVOImpl pvo = (DepartamentosVOImpl) getDepartamentosVO1();
pvo.consultar(idDept);
}
Modificar la Clase DepartamentosVOImpl (VO)
public void consultar(String idDept)
{
setWhereClause(«DEPARTMENT_ID = :1»);
setWhereClauseParams(null); // Always reset
setWhereClauseParam(0, idDept);
executeQuery();
}
Compilar y corregir errores de compilacion en las Clases de EO, agregando el siguiente codigo
import oracle.jbo.domain.Date;
import oracle.jbo.domain.Number;
public void setCreatedBy(Number number)
{
}
public void setCreationDate(Date date)
{
}
public void setLastUpdatedBy(Number number)
{
}
public void setLastUpdateDate(Date date)
{
}
public void setLastUpdateLogin(Number number)
{
}
Mas Información:
https://en.wikipedia.org/wiki/Oracle_Application_Framework
https://blogs.oracle.com/stevenchan/jdeveloper-10g-with-oa-extension-now-available