Você está na página 1de 11

Documentacin para la generacin de archivos DBF desde Oracle eBusiness Suite

Septiembre 2012

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

Tabla de contenido
Definiendo Programas Concurrentes y Ejecutables en la EBS utilizando programas JAVA 3 Existen diferentes formas de trabajar con programas Java en la EBS, describimos algunas de stas. .......................................................................................................................... 3 Escribiendo un Programa Concurrente en Java ....................................................................... 3 Formato genrico para escribir un Programa Concurrente Java ....................................... 3 Recomendaciones ..................................................................................................................... 4 Trasladando Libreras ................................................................................................................... 5 Registrar Pograma Concurrente y Ejecutable ....................................................................... 5 Programa Concurrente .................................................................................................... 5

Navegue a la pantalla ............................................................................................................... 6 Utilizando Wappers ....................................................................................................................... 7 Creacin de Objetos Java en la Base de datos Oracle ........................................................ 7 Ejecucin de programas Java con PL/SQL ............................................................................ 8 Trasladando Libreras ................................................................................................................. 10 Registrar Programa Concurrente y Ejecutable ................................................................... 10 Programa Concurrente .................................................................................................. 11

Navegue a la pantalla ............................................................................................................. 11

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

Definiendo Programas Concurrentes y Ejecutables en la EBS utilizando programas JAVA


Existen diferentes formas de trabajar con programas Java en la EBS, describimos algunas de stas.

Escribiendo un Programa Concurrente en Java


Se proporciona una interfaz JavaConcurrentProgram con un mtodo abstracto runProgram () que pasa por procesamiento concurrente CpContext. CpContext tendr el id de solicitudes especfico, las salidas log y output. El nombre de la clase con el mtodo runProgram () se registrar como el nombre del archivo ejecutable de java en la pantalla de registro. Formato genrico para escribir un Programa Concurrente Java
package oracle.apps.yourpackage.subpackage; import oracle.apps.fnd.common.Context; import oracle.apps.fnd.common.VersionInfo; import oracle.apps.fnd.cp.request.*; import oracle.apps.fnd.util.*;

public class HelloWorldApp implements JavaConcurrentProgram{ public void runProgram(CpContext ctx){

//Obtiene la referencia del archive Output para el programa (Visualiza Output en pantalla Solicitudes) OutFile out = ctx.getOutFile();

//Obtiene la refencia para el log del programa concurrente (Visualizar Registro en pantalla Solicitudes) LogFile log = ctx.getLogFile();

try{

//Leer los parmetros definidos en el Programa Concurrente String myName = null;

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

ParameterList lPara = ctx.getParameterList(); while (lPara.hasMoreElements()) { NameValueType aNVT = lPara.nextParameter(); if ( aNVT.getName().equalsIgnoreCase("My Name") ) myName = aNVT.getValue();); }

//AQUI IRIA LA LOGIGA DEL POOGRAMA YA CREADO

out.writeln("Lo que se escibe con out.writeln es mostrado en Visualizar Output");

log.writeln("Lo que se envie con log.writeln es mostrado en Visualiza Registro", 0);

//Solicita completion de este programa concurrente //Este paso envia la senal de final de ejecucin del programa concurrente ctx.getReqCompletion().setCompletion(ReqCompletion.NORMAL, "Completed."); } //Manejo de excepciones catch(Exception e){ StackTraceElement ste[] = e.getStackTrace(); for(int i=0; i<ste.length; i++){ log.writeln(ste[i].toString(), 0); } } } }

Recomendaciones
Recomiendan usar Jdeveloper con la version de Patched Number: 6012619. Se puede bajar de Metalink. Esta version tiene todas los package FND y otros requisites usados para crear pogramas concurentes en Java. Se pueden utiliza otras herramientas como Eclipse,

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

pero esas no tienen todo los package FND, y tendan que copiarse manualmente de Oracle Apps Server y referenciarlas en el Project.

Trasladando Libreras
Se debe solicitar al DBA que ubique las libreras en la ruta $JAVA_TOP. Para asegurar que las libreras estn disponibles para su JCP.

Registrar Pograma Concurrente y Ejecutable

Ejecutable Programa Concurrente

Navegue a la pantalla: Responsabilidad: Desarrollador de Aplicaciones Opcin: Concurrente Ejecutable

Ingrese los siguientes datos:


Ejecutable Abreviatura Aplicacion Metodo de Ejecucin Nombre de Archivo de Ejecucin Camino Acceso Archivo Ejecucin : : : : : : HelloWorld HelloWorld Custom Applications Java Concurrent Program HelloWorldApp (main class ) oracle.apps.yourpackage.subpackage

Programa Concurrente
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

Navegue a la pantalla Responsabilidad: Desarrollador de Aplicaciones Opcin: Concurrente Programa

Ingrese los siguientes datos:


Programa Abreviatura Applicacion Descripcion Ejecutable Nombre Executable Metodo Opciones : : : : : : : HelloWorld Java Concurrent Program HELLOWORLDJCP Custom Applications Hello World Program HelloWorld Java Concurrent Program -classpath

/dv00/oracle/product/DEV1110/java:/dv00/oracle/apps/DEV1110/11.5/au/11.5.0/java/apps borg.zip:/dv00/oracle/product/DEV1110/java/thirdParty1.jar:/dv00/oracle/product/DEV1110 /java/thirdParty2.jar Nota:- Si su JCP no usa ninguna librera de terceros , No ingrese informacin aqu Las opciones que se especifiquen deben estar completas.

/dv00/oracle/product/DEV1110/java Este es el path de mi $JAVA_TOP /dv00/oracle/apps/DEV1110/11.5/au/11.5.0/java/appsborg.zip Este es el path para mi desarrollo $AU_TOP/java/appsborg.zip /dv00/oracle/product/DEV1110/java/thirdParty1.jar Este es el path JAR referenciado para la primera dependencia de libreras. /dv00/oracle/product/DEV1110/java/thirdParty2.jar El path de las segunda librera Los parmetros deben estar bien referenciados y separados por dos puntos :

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

Utilizando Wappers
Crear el programa Java y cargarlo en la base de datos. (Ya lo tienen) Crear un programa de recubrimiento (Wrapper) de PL/SQL.

Creacin de Objetos Java en la Base de datos Oracle


ORACLE incorpora su propia versin de la mquina virtual Java y del JRE. Esta versin de Java se instala conjuntamente con ORACLE. Para crear objetos Java en la base de datos podemos utilizar la uitlidad LoadJava de ORACLE desde linea de comandos o bien crear objetos JAVA SOURCE en la propia base de datos. La sintaxis para la creacin de JAVA SOURCE en ORACLE es la siguiente.

CREATE [OR REPLACE] AND COMPILE JAVA SOURCE NAMED <JavaSourceName> AS public class <className> { <java code> ... };

El siguiente ejemplo crea y compila una clase Java OracleJavaClass en el interior de JAVA SOURCE FuentesJava. Un aspecto muy a tener en cuenta es que los mtodos de la clase java que queramos invocar desde PL/SQL deben ser estaticos.

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED FuentesJava AS public class OracleJavaClass { public static String Saluda(String nombre) { return ("Hola desde Java" + nombre); }

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

} ;

Un mismo JAVA SOURCE puede contener varias clases de Java.

CREATE OR REPLACE AND COMPILE JAVA SOURCE NAMED FuentesJava AS public class OracleJavaClass { public static String Saluda(String nombre) { return ("Hola desde Java" + nombre); } } public class OracleJavaMejorada { public static String SaludoMejorado(String nombre) { return ("Saludo mejorado desde Java para:" + nombre); } } ;

La otra opcin sera guardar el cdigo java en el archivo OracleJavaClass.java, compilarlo y cargarlo en ORACLE con LoadJava. A continuacin se muestran ejemplos del uso de la utilidad LoadJava

loadJava -help loadJava -u usario/password -v -f -r OracleJavaClass.class loadJava -u usario/password -v -f -r OracleJavaClass.java

Ejecucin de programas Java con PL/SQL


Una vez que tenemos listo el programa de Java debemos integrarlo con PL/SQL. Esto se realiza a travs de subprogramas de recubrimiento llamados Wrappers.

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

No podemos crear un Wrapper en un bloque anonimo. La sintaxis general es la siguiente:

CREATE [OR REPLACE] FUNCTION|PROCEDURE <name> [(<params>,...)] [RETURN <tipo>] IS|AS LANGUAGE JAVA NAME '<clase>.<metodo> [return <tipo>]' ;

El siguiente ejemplo muestra el Wrapper para nuestra funcin Saludo.

CREATE OR REPLACE FUNCTION Saluda_wrap (nombre VARCHAR2) RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'OracleJavaClass.Saluda(java.lang.String) return java.lang.String';

Una vez creado el wrapper, podremos ejecutarlo como cualquier otra function o procedure de PL/SQL. Debemos crear un wrapper por cada funcin java que queramos ejecutar desde PL/SQL. Cuando ejecutemos el wrapper, es decir, la funcin "Saluda_wrap", internamente se ejecutar la clase java y se invocar el mtodo esttico "OracleJavaClass.Saluda". Un aspecto a tener en cuenta es que es necesario proporcionar el nombre del tipo java completo, es decir, debemos especificar java.lang.String en lugar de nicamente String.

SELECT SALUDA_WRAP('DEVJOKER') FROM DUAL;

La ejecucin de este ejemplo en SQL*Plus genera la siguiente salida:

SQL> SELECT SALUDA_WRAP('DEVJOKER') FROM DUAL; SALUDA_WRAP('DEVJOKER') ----------------------------------------------

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

Hola desde JavaDEVJOKER

Una recomendacin de diseo sera agrupar todos los Wrapper en un mismo paquete. En el caso de que el programa Java necesitase de packages Java adicionales, se deberan cargar en la base de datos con la utilidad LoadJava. Despus de esto se debe crear un Package o procedimiento almacenado en la base de datos haciendo el llamado al wrapper principal. O bien crear un scipt .sql

Trasladando Libreras
Se solicita al DBA copiar el script en la ruta XX_TOP/sql (XX depende la aplicacin a la que se asocie el concurrente).

Registrar Programa Concurrente y Ejecutable

Ejecutable Programa Concurrente

Navegue a la pantalla: Responsabilidad: Desarrollador de Aplicaciones Opcin: Concurrente Ejecutable

Ingrese los siguientes datos:


Ejecutable Abreviatura Aplicacion Metodo de Ejecucin programa)
Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

: : : :

HelloWorld HelloWorld Custom Applications Prcmto Almacenado PL/SQL (caso

: Nombre de Archivo de Ejecucin pocedure ) Camino Acceso Archivo Ejecucin : :

SQLP*Plus (Caso script) HelloWorldApp (nombre package o

Programa Concurrente

Navegue a la pantalla Responsabilidad: Desarrollador de Aplicaciones Opcin: Concurrente Programa

Ingrese los siguientes datos:


Programa Abreviatura Applicacion Descripcion Ejecutable Nombre Executable Metodo : : : : : : HelloWorld Java Concurrent Program HELLOWORLDJCP Custom Applications Hello World Program HelloWorld (Depende del Ejecutable, lo despliega el

sistema al seleccionar el ejecutable) Opciones :

Calle 125 # 19-89 oficina 502 PBX: (571) 6582568 - Fax: (571) 6792536 www.axentriacg.com - info@axentriacg.com

Você também pode gostar