lunes, 22 de julio de 2013

Oracle WorkFlow EBS R12


Oracle Application Framework


Saludos mis amigos, un tiempo atrás me toco modificar el workFlow de OM, así que me vi en la tarea de instalar WF Builder y aprender hacer de esta tecnología, ahora les explicare lo poco que aprendí espero que les sea de utilidad.
Lo primero que debemos hacer es descargar WF Builder de la página de Oracle:



Una vez descargado procedemos a descomprimirlo:





Aquí hay una nota con respecto a la instalación:
Recommended Set Up for Client/Server Products with Oracle E-Business Suite 11i & R12 [ID 277535.1]
How To Download and Install the Latest Oracle Workflow Builder (Client Tool) and XML Gateway Message Designer for E-Business [ID 261028.1]
Para aquellas personas que utilizan Windows 7 X64, les recomiendo que descompriman el instalador en la Unidad “C” para que así no tengan ningún inconveniente al momento de instalarlo.
Cuando se ejecutando la instalación, les saltara el siguiente mensaje:



Le damos click en ignorar, para que la instalación continúe, nos saldrá varias veces, solo hacemos click en ignorar.
Lo siguiente es cambiar el modo de compatibilidad del programa ejecutable, para ello nos vamos a inicio:


Asemos click en propiedades, y nos vamos a la pestaña “Compatibilidad”, ahí marcamos la casilla “Ejecutar este programa en modo de compatibilidad para:” y seleccionamos “Windows XP (Service Pack 3)”


Ahora bien procedemos a ejecutar WF Builder, esta es la pantalla inicial:


Vamos a conectarnos a la Base de Datos:


En la casilla resaltada con rojo ponemos el alias configurado en el TSNAME para poder conectarnos al Motor de Base de Datos.


Ahora vamos a seleccionar el WorkFlow que vamos a modificar, en este ejemplo voy a seleccionar “OM Order Header” tal como se muestra en la figura.


Presionamos el botón “OK”. Veremos que nuestra pantalla muestra la siguiente Información:
1.       En primera instancia se puede observar que los objetos están bloqueados
2.       Podemos Observar los procesos contenidos en el WorkFlow
3.       Podemos Observar las Funciones, etc.




Ahora bien por defecto cuando instalamos WF Builder viene configurado con un nivel de acceso de 1000, esto quiere decir que nadie podrá modificar nada, a continuación un listado de los niveles de acceso que se pueden definir dentro del Work flow
1.       0-9 está reservado para Oracle Workflow
2.       10-19 está reservado para Oracle Application Object Library
3.       20-99 está reservado para Oracle E-Business Suite
4.       100-999 está reservado para extensiones específicas de los clientes
5.       1000 es reservado para el publico
Podemos jugar con estos valores o observar que objetos se habilitan para que podamos modificarlos, en mi caso lo cambie a “0” y asi evitarme cualquier problema, ahora bien deberíamos revisar primero la doc. De WorkFlow Builder:


Ahora observamos cómo cambio la pantalla:





Hasta este punto ya definimos los permisos para poder modificar los objetos en WF Builder, antes de modificar algo vamos hacer una copiar de “Order Header” en nuestro servidor, nos posicionamos en el siguiente directorio, creamos la carpeta “WF”, ingresamos en ella tal como se muestra en la imagen:


En esta carpeta vamos a crear una copia del WF de “OM Order Header” con el siguiente comando:


Ahora verificamos que el archivo ha sido  generado correctamente:


Bien, ahora vamos abrir el proceso “CLOSE_HEADER_PROCESS”, este es el proceso que se ejecuta al momento de cerrar el encabezado de una “SALES ORDER”


Observamos que se nos abre el diagrama del WF:


“CLOSE_HEADER_PROCESS” es el proceso encargado de cerrar las “Order Sales” esto podemos notarlo en el formulario “Sales Orders” en el campo Status del encabezado de nuestra orden, cuando un pedido es registrado inicial mente muestra un estado, como ejemplo sería el de la imagen “Booked”.


Cuando cerramos por completo los pedidos , solo las líneas cambian su estado a “Closed” y el encabezado no cambia su estado, esto se debe a que en el WF está configurado para que el ultimo día del mes cambie todos los pedidos a nivel de encabezado su estado a “Closed”, vamos a cambiar esta funcionalidad de tal manera que el encabezado del pedido se cierre inmediatamente cuando se cierren todas sus líneas, abajo podemos ver cómo queda  actualmente un pedido luego de haber sido cerrado:


 Bueno manos a la obra, lo primero que debemos hacer es identificar la función utilizada para cerrar los encabezado de pedidos, en la imagen puede verse esta función seleccionada:


Hacemos click derecho sobre este icono y seleccionamos “Properties”:


Se nos despliega la siguiente pantalla, en ella se nuestra mucha información importantísima, tal es el caso de “Function Name” el cual viene a ser un método contenido en la base de datos, nos vamos al tap “Node Attributes”:


En este tab están declaradas las variables que el work flo le pasa a la función, en la que tenemos que enfocarnos es en “Wait Mode”, esta variable le indica al EBS el  tiempo que tiene que esperar para cambiar el estado del encabezado de una orden  a “Closed”, por defecto está configurado para cambiar los estados a fin de mes “Day of Month -> Last”, vamos a modificar esto de tal forma que cambie el estado en un minuto, seleccionamos el atributo “Relative Time”


Establecemos el valor a “Relative Time”


Establecemos el valor de “Day of Mont” en “None”


Ahora para el atributo “Wait Mode” seleccionamos “Relative Time”


Luego guardamos el WF.



Ahora bien creamos una nueva “Sales Order”  y ejecutamos el flujo completo hasta cerrar el viaje,


Si por alguna razón su pedido no fuera cerrado al finalizar el viaje, deben correr el siguiente concurrente:
“Workflow Background Process”



Bueno eso es todo amigo, les dejo algunas notas que me ayudaron:

Para descargar el Work Flow de OM
How to Download Workflow file .wft for Order Lines and Headers (OEOL, OEOH) [ID 578248.1]

Para saber qué campo modificar para que las órdenes se completen en el día:
Sales Order Header Does Not Close After ALL Lines Have Closed [ID 133837.1]
Need to Have Sales Order Header Close as Soon as Lines are Closed [ID 338040.1]
Order Header Won't Close Auntomatically After Lines Are All Closed [ID 284799.1]
Changing Wait Mode in Workflow Order Headers For Earlier Closure Than 'Wait 30 Days' [ID 278513.1]
How to create a custom copy of the seeded Purchasing PO Approval Workflow POAPPRV [ID 1270010.1]
No se olviden de dejar sus comentarios.

jueves, 4 de julio de 2013

Creando Programas Concurrentes en EBS R12(Concurrente con java)


Saludos mis queridos amigos, ahora vamos a ver como se crean concurrentes en el EBS R12 utilizando java, en esta ocasión la aplicación que realizaremos comprimirá dos archivos y creara un archivo zip, para ello utilizaremos algunas librerías de java.
Para poder crear concurrentes utilizando código java debemos tener en nuestras maquinas un IDE de desarrollo, lo recomendable es tener JDeveloper de Oracle, ahora bien tenemos que saber exactamente con que versión de JDev. Tenemos que trabajar, para ellos iniciamos sesión en el EBS R12, y hacemos click en el enlace “About this Pague


Se nos abrirá una página, nos desplazamos al tab “Technology Components


En esta página vemos todas las tecnologías utilizadas en EBS R2, la que nos interesa es lo que tenemos resaltado con amarrillo “OA Framework 12.1.3”, en metalink buscamos la versión de JDev. Que tenga incluida esta compilación de OAF, en este artículo podrán encontrar las diferentes versiones de OAF que existen para las diferentes versiones del EBS:
OA Framework - How to find the correct version of JDeveloper to use with eBusiness Suite 11i or Release 12.x [ID 416708.1]


Si se figan en la imagen el parche “Patch 9879989” es aplicado tanto como para la versión 12.1.3 como para 12.1.3.1, así que este será el que descargaremos para instalarlo en nuestro sistema operativo y generar nuestros concurrentes, notaran que es un archivo  zip instalación de JDeveloper consiste solamente en descomprimir el Archivo  en un determinado directorio y configurar unas variables de entorno, esta Versión de JDeveloper nos servirá tanto como generar programas java para utilizarlos como concurrentes como para crear nuevas aplicaciones para el EBS R12(Aplicaciones Web):


Vamos a descomprimir el archivo en la unidad “C” en una carpeta que se llame JDeveloperOAF


Al descomprimir notamos que tenemos tres directorios, debemos crear un acceso directo a “jdevW.exe” el cual se encuentra en la ruta “C:\JDeveloperOAF\jdevbin\jdev\bin”:


Ahora vamos a configurar una variable de entorno llamada “JDEV_USER_HOME”, esta variable se la configura para que JDeveloper sepa donde estarán nuestros proyectos y el archivo que nos servirá para conectarnos a al Base de Datos, esto lo explicare cuando hagamos nuevas páginas en OAF.


Ahora bien esta versión de JDeveloper no proporciona las librerías que necesitamos para crear concurrentes en java para el EBS R12.
Antes de empezar a construir nuestro código Java en JDeveloper, es necesario crear algunas librerías adicionales que son específicas para el desarrollo de concurrentes, para ingresamos a nuestro servidor desde el “PUTTY” y nos dirigimos al directorio $JAVA_TOP


Vamos a crear un archivo zip de la carpeta “oracle” con el siguiente comando:



Ahora vamos a verificar que el archivo “conclib.zip” se haya creado correctamente en el servidor


Copiamos este archivo en una carpeta de nuestra maquina local:


Como último paso solo queda descomprimir el archivo rar en el mismo directorio:


Ahora vamos a ejecutar JDeveloper y crear nuestro primer concurrente (asumo que saben java y JDeveloper, pero si en todo caso necesitan algún tutorial de java con JDeveloper me avisan y con gusto hare un artículo explicando cómo programar en java con JDeveloper):




Si se fijan al iniciar por primera vez JDeveloper nos pide que migremos archivos de versiones anteriores(esto solo si fuese el caso)


Al terminar de cargar JDeveloper, nos mostrara la pantalla inicial:


Ahora vamos a crear un proyecto que le vamos a llamar Concurrentes, hacemos click en el icono nuevo:


En “General “seleccionamos “Applocations”, y en el panel de la derecha seleccionamos “Application”, luego hacemos click en Aceptar


Prestemos atención en la siguiente pantalla, el cuadro marcado con rojo es el nombre de nuestra aplicación java, el cuadro marcado con azul es la estructura de paquetes, tenemos que seguir el standart de Oracle por eso es que como verán la estructura está dada por “Oracle.apps.xdemo.cp”, donde xdemo es el nombre de nuestra aplicación de customizaciones, le damos click en aceptar


En esta pantalla nos pedirá el nombre de nuestro proyecto, le damos click en Aceptar


Ahora notaran que en la paleta “Applications Navigator” se ha creado un árbol con nuestra aplicación y nuestro proyecto:


Ahora vamos a crear una nueva clase, para ello hacemos click derecho sobre nuestro proyecto y seleccionamos “New”

Seleccionamos “Simple Files” y en el panel derecho “Java Class”, le damos click en Aceptar


Nuestra clase se va a llamar “ZipDocs”, tenemos que tomar mucha atención y verificar que el paquete en el cual estará alojada nuestra clase es “Oracle.apps.xdemo.cp” el cual en la imagen esta resaltado con verde:


Ahora le damos click en Aceptar y el ide abrirá de forma automática la clase creada, deberá quedar de la siguiente forma:


Ahora procedemos a importar la librería que creamos en el servidor y que copiamos a nuestra máquina, para ello hacemos click derecho sobre nuestro proyecto,Propiedades


En la pantalla seleccionamos “Libraries” y hacemos click en “Add Jar/Directory”


Seleccionamos nuestra librería y le damos click en “Select”(debemos seleccionar la carpeta descomprimida)


Con esto notaremos que en el panel de la derecha nuestra librería aparece seleccionada, ahora hacemos click en Aceptar.


Ahora vamos a importar todas las clases de los paquetes útil y  request tal y como se observa en la imagen, además de implementar la interface “JavaConcurrentProgram” la cual tiene un solo método llamado “runProgram(CpContext cpContext)”,el código finalde nuestra clase debe quedar de la siguiente forma:


Compilamos nuestro código:


Ahora procedemos a copiar nuestra clase compilada en el servidor, para ello vamos a crear los directorios xdemo y dentro de xdemo crearemos cp, con los siguientes comandos:


Verificamos que estén creados los directorios:


Aquí vamos a copiar nuestra clase junto con su archivo fuente para tenerlo todo en su solo lugar, para ello en nuestras maquinas nos vamos al directorio:


Ahora con WINCSP copiamos el archivo al servidor:


Bien ahora solo nos queda crear el concurrente en el EBS R12, pues manos a la obra:
1.- Creando el ejecutable
Para ello nos dirigimos a “System Administrator/Program/Executable”:


Debemos poner atención al campo “Execute File Path” debemos notar que en este campo se pone la dirección donde se encuentra nuestra clase “ZipDocs”, deben fijarse que la dirección está separada por puntos, que vendría hacer la manera como se hace referencia en java a un determinado paquete.

2.- Creando el Programa Concurrente
Ahora procedemos a crear el programa concurrente, para ello nos dirigimos a “System Administrator/Program/Define”:


Los parámetros que vamos adicionar son los siguientes:

Seq
Parameter
Description
Value Set
Token
Pront
10
Archivo A
Primer Archivo
100 Characters
ARCHIVO_A
Archivo A
20
Archivo B
Segundo Archivo
100 Characters
ARCHIVO_B
Archivo B
30
Nombre Archivo ZIP
Archivo ZIP
100 Characters
SALIDA
Nombre Archivo ZIP

Hay que tomar en cuenta que el “token” de cada parámetro lleva el nombre de los valores que recuperamos en nuestro programa concurrente java.



3.- Agregar ejecutable a Grupo de Solicitudes

Una vez creado el ejecutable solo queda agregarlo a un grupo de solicitudes, para nos dirigimos a “System Administrator/Security/Responsability/Request” :


4.- Ejecutar el Concurrente

Ahora procederemos a ejecutar el concurrente, para ello entramos en la responsabilidad “XDEMO CUSTOMIZACIONES


Vamos a comprimir los archivos file1.txt y file2.txt que están en la carpeta “tmp” del servidor:


Ahora procedemos a ejecutar el concurrente:


Como podrán ver los dos archivos se comprimirán en uno solo llamado “demo.zip”, presionamos el botón “OK” y verificamos la ejecución del concurrente:


Como se puede observar en la imagen el concurrente termino de forma satisfactoria, verificaremos si el archivo se creó en el servidor:


Hasta aquí hemos terminado con la aplicación, como podrán ver es un ejemplo bastante básico, con java se pueden hacer muy buenos concurrentes además que atreves de la clase “CpContext” se puede acceder a mucha información concerniente al entorno de ejecución, entre algunas podemos mencionar:

-          Valores FND GLOBALES
-          Conexión JDBC
-          Valores  de Perfil
-          Y muchos Otros

Es recomendable utilizar el método “getJDBCConnection()” para obtener la conexión al motor Oracle, asi como la utilización de los métodos “commit()” y “rollback()”  para confirmar o deshacer las transacciones, no se olviden siempre de liberar las transacciones con el método “releaseJDBCConnection()” todos estos métodos mencionados los podemos encontrar en la clase “CpContext”.

Algunos articulos que les podrian ser de utilidad serian los siguientes:

How To Create a Java Concurrent Program? [ID 827563.1]
Java Concurrent Program Runs Forever Due To Javacache.Log Locking [ID 1335232.1]

Bueno eso es todo amigos, espero que les haya gustado el artículo, espero sus comentarios.

File sharing system in PHP free code (Veno File Manager v4.2.7)

  File sharing system in PHP free code (Veno File Manager v4.2.7) Download: veno-file-manager-v427 File sharing system in PHP free code ===...