Java juega un papel importante en el espacio de desarrollo
de aplicaciones de hoy en día.
Se ha vuelto cada vez más popular en los últimos años,
debido a que es multiplataforma, potente y fácil de aprender. Aunque el
desarrollo de Java no está directamente relacionada con PL / SQL, es importante
para un desarrollador de PL / SQL aprender un poco acerca de Java, ya que hay
algunos beneficios de usar java en las tareas de base de datos.
Oracle Database 11g contiene compatibilidad JVM con Java
1.5, que incluye cambios sustanciales en el lenguaje, por lo que es una plataforma
aún más complementaria para el desarrollo. También a partir de Oracle 11g, la
base de datos incluye un compilador Just-in-time, que compila el código de
bytes de Java en instrucciones de lenguaje de máquina.
En este ocasión aprenderemos
a combinar el poder de PL / SQL de con código Java que se almacena en la
base de datos. Aprenderemos cómo crear procedimientos almacenados, funciones y
disparadores utilizando el lenguaje Java, nos centraremos únicamente en el uso
de los tipos de Java junto con las aplicaciones PL / SQL.
Para poder crear los programas java utilizaremos JDeveloper
el cual viene incluido cuando instalamos oracle developer suite 10g (10 1 2 0
2), vamos a realizar una pequeña aplicación con la cual podamos consultar todos
los pedidos de OM junto a sus documentos generados en AR y esta información la vamos a enviar a un correo
determinado.
El formato del correo que enviaremos será HTML para es que
vamos a desarrollar un programa que construya nuestro HTML.
Lo primero que haremos será obtener las tablas, vistas o Sinónimos
que vamos a utilizar para armar el Query que utilizaremos.
Lo primero que haremos será iniciar sesión en el EBS y luego
nos vamos a la responsabilidad “Order Management”, abrimos el formulario “Quick
Sales Orders” buscamos un pedido ya tomado, colocamos el mouse donde dice “Customer”, luego nos vamos al menú
“Help” y seleccionamos la opción “Record History”
Esto nos abrirá la siguiente ventana:
De esta pantalla lo que nos interesa es el dato resaltado
con amarillo, podemos observar que se trata de una vista ya que en Oracle EBS
R12 su standard de nombrado de objetos vistas dice que deben terminar el nombre
con una V esto quiere decir <Modulo>_<Nombre Vista>_V, bueno con
esta vista ya podemos obtener todos los pedidos pero necesitamos obtener los
documentos aplicados a este pedido, para ello hacemos click derecho en
cualquier campo de la cabecera del pedido y seleccionamos “Payment/View
Invoices/Credits” tal como se muestra en al imagen:
Esto nos abrirá la siguiente pantalla:
En esta pantalla podemos observar los campos “Amount y
Balance” los cuales representan el monto real del pedido y el saldo
respectivamente, en este caso el saldo es “0” ya que el pedido fue cancelado en
su totalidad.
Lamentablemente el truco que Aplicamos para ver la tabla o
vista que es utilizada en esta pantalla lo único que nos queda es descargar el
formulario e identificar la tabla mediante su definición de BLOCK, para ellos
nos vamos a “Help/About Oracle Applications” tal y como se muestra en la
siguiente imagen:
Esto nos abrirá la siguiente pantalla:
En esta pantalla podemos observar que el nombre del archivo
que representa al formulario es “OEXOETEL” el cual esta resaltado con
amarrillo, como dato adicional podemos observar la dirección en donde se
encuentra el ejecutable de esta pantalla “/u01/oracle/<Instancia>/apps/apps_st/appl/ont/12.0.0/forms/US/OEXOETEL.fmx”
en esta dirección es en donde se encuentra todos los archivos de los
formularios compilados correspondientes a OM, este archivo no nos sirve necesitamos el
archivo “FMB” para ello lo descargamos de la siguiente dirección tal y como se
muestra en la imagen:
Todos los archivos FMB del EBS están en la dirección:
“/u01/oracle/<Instancia>/apps/apps_st/appl/au/12.0.0/forms/<Idioma>”
Una vez descargado el archivo procedemos abrirlo con form
10g
Necesitamos saber el nombre del bloque al cual queremos
llegar para poder identificar la vista/Tabla que utiliza la pantalla, para ello
volvemos al EBS y nos dirigimos “Help/Diagnostics/Examine” tal y como muestra
la imagen
Esto nos abrirá la siguiente pantalla:
En esta pantalla podemos ver el nombre del block el cual es “VIEW_ORDER_INVOICE”,
ubicamos este nombre en Oracle Developers forms:
Aquí podemos observar que el nombre de la vista es “oe_ra_cust_trx_hdr_perf_v”,
la cual esta resaltado con rojo.
Si ejecutamos un select sobre esta vista en SQL Developer notaremos
que no nos muestra ningún resultado:
Esto es debido a que la vista utiliza los métodos “OE_Invoice_PUB.get_order_number()
y OE_Invoice_PUB.get_order_type()” los cuales obtienen el número de pedido y el
tipo de pedido respectivamente, esta información la obtiene del formulario en
el cual se encuentra actualmente, es por esta razón que cuando lo ejecutamos el
select sobre la vista esta no nos devuelve nada ya que no nos encontramos en el
formulario de toma de pedido.
Ya con toda esta información nuestro script quedaría de la
siguiente forma:
Lo siguiente que
vamos hacer es crear una vista con este query para después poderla utilizar
Presionamos aceptar y la vista será creada:
Ahora vamos a crear nuestras clases java las cuales vamos a
subir luego al motor de Oracle, para ello abrimos JDeveloper:
Procedemos a crear una nueva Aplicación tal como se muestra
en la imagen
Este proceso nos crea un proyecto vacío, lo eliminamos y
creamos uno nuevo:
Nuestro proyecto tendrá la siguiente estructura:
Podemos observar algunos errores, esto es debido a que no
hemos importado el driver de oracle.
Lo primero que vamos hacer es crear el “Deployment Profile”
tal como se muestra en la imagen:
Seleccionamos el tipo “Loadjava and Stored Procedures” ya
que este nos permite generar paquetes y procedimientos almacenados en Oracle,
los cuales estarán directamente relacionados con nuestros métodos java, además también suben las clases
java o Oracle al momento de generar el deploy.
Las propiedades de nuestro archivo deploy deberán quedar de
la siguiente manera:
Con esto nos aseguramos que además de subir los archivos .class
también suba los .java que son en los cuales está el código fuente.
Ahora procederemos a crear un paquete en nuestro deployment:
Una vez creado el paquete vamos a crear un procedimiento almacenado
que apunte al método “Demo_Proc. getPedidoOmAr” el cual explicare más adelante
:
Tal como se puede ver en la imagen el procedimiento recibe
dos parámetros los cuales son vectores el uno es un vector de String y el otro
es un vector de Objetos Double, ambos parámetros los hemos declarado en modo “OUT”,
esto se lo realiza de esta forma ya que vamos a utilizar este procedimiento en
un concurrente del EBS, para poder seleccionar el modo en las propiedades de un
parámetro perteneciente a un método java estso deben declararse como arrays, si
no se lo declarara así solo tendríamos un modo que sería el “IN”, nuestro
deployment quedara así:
Hasta ahora solo hemos armado la estructura de nuestro
proyecto, para poder publicar nuestro paquete en el motor debemos crear una conexión
desde JDeveloper al motor el cual será utilizado para publicar nuestro código en
Oracle.
Ahora vamos a proceder a adicionar el driver de Oracle al
proyecto y asi de esta forma no tengamos errores al probar nuestro código en
JDeveloper, la imagen a continuación muestra los pasos a seguir para importar
el archivo:
Ahora vamos a publicar nuestro código utilizando la conexión
que creamos hace unos momentos, la imagen muestra lo que se debe hacer para publicar los archivos:
Este será nuestro resultado en JDeveloper:
Pues bien si nos dirigimos a la base de datos en el esquema
APPS deberemos encontrar tanto el paquete como los objetos java creados, la
imagen a continuación nos muestra los objetos en el motor:
Bueno vamos a explicar un poco las clases de nuestro
proyecto:
Empecemos con la clase “Demo_Proc”:
Lo primero que debemos notar es que esta clase tiene un solo
método el cual es para el que hemos creado un procedimiento almacenado en
Oracle,tomar en cuenta que también todas las excepciones son capturadas y
lanzadas asía arriba para que aquel que invoque este método las controle.
1.- El primer paso que realiza este meto es el de traer todo
los pedidos con sus documento de OM, para utiliza una instancia de la clase “Datos”,
posteriormente con los pedidos crea un a página HTML con ayuda de las clases “PageHTML
y TablaHTML”.
2.- Una vez creada la página es enviada por correo con ayuda
del método “EnviarMail” de la instancia datos.
Clase Datos:
De esta clase los utilizamos los métodos “getPedidoOmAr y EnviarMail”.
El método “getPedidoOmAr”
es el que trae los pedidos de OM ejecutando el select contenido en la
variable “SQL” y lo devuelve en un objeto ArrayList.
El método “EnviarMail” envía un correo al usuario
especificado en la variable “Destinatario” invocando un procedimiento de la
base de datos creado específicamente con este fin.
Podemos observar que en el método “EnviarMail” hay código comentado:
El código comentado es para conectarnos al motor desde
JDeveloper, desde Oracle la conexión se la obtiene con:
Connection
conn = new OracleDriver().defaultConnection();
Más abajo dejo el enlace de descarga de todo el proyecto
incluyendo el código PL/SQL de procedimiento
“send_mail”.
Ahora procedemos a crear el concurrente en EBS.
1.-Primero creamos el ejecutable tal como se muestra en la
imagen:
2.- Ahora creamos el Concurrente tal como se muestra en la
imagen:
3.-Ahora asignamos el concurrente al grupo de solicitudes
dela responsabilidad del administrador tal como se muestra en la imagen:
4.- Ahora ejecutamos el concurrente:
El formato del correo que llega es asi:
Les dejo un link donde explico cómo crear concurrentes en el
EBS.
Aqui esta el link del Codigo fuente :https://sourceforge.net/projects/javaoracleenebsr12/
Eso es todo amigos espero que les sea de gran ayuda el
Articulo.