lunes, 9 de mayo de 2011

Concurrents Hello World !!!!!

Hace algún tiempo cuando comenzaba a desarrollar para la EBS me pidieron crear un concurrente ("Con que?" fue mi pregunta). por lo que hoy decidí hacer un pequeño manual con el "hola mundo" en los concurrentes.

Así que primero un poco de teoría:

Concurrente: Es el medio que tienen los usuarios para ejecutar procesos en el servidor, sin tener acceso al usuario APPS ( Pon ningun motivo un usuario debe tener acceso a esta cuenta, incluso ni siquiera los desarrolladores deberiamos tener acceso a este usuario). La mayoría de las ejecuciones de concurrente se realizan por medio del menu:
ver->solicitudes->ejecutar nueva solicitud->solicitud unica




Si seleccionan en el recuadro amarillo, nos mostrara la lista de programas a los que tenemos acceso.

Ahora que ya se como ejecutarlo como rayos se crean estas cosas.

5 Pasos:

1.- Se genera un ejecutable, esto quiere decir cualquier cosa que se va a procesar en el servidor , la EBS soporta ejecutables pro C, java, perl, pl/sql,reports, etc. (el ejemplo que les daré esta en pl/sql).
ejemplo:
CREATE OR REPLACE PROCEDURE APPS.XXX_TST (errbuf OUT VARCHAR2
 /*Mensaje que le regresa el procedimiento al adminstrador de concurrente, este mensaje se muestra en el administrador de concurrente*/ , retcode OUT NUMBER/*Codigo de error que el concurrente regresa al administrador de concurrente sobre el estatus de del concurrente: retcode :=0; El concurrente finaliza normal sin color retcode :=1; El concurrente finaliza en ADVERTENCIA color Amarillo retcode :=2; El concurrente finaliza en ERROR color rojo */,oper1 varchar2 ,oper2 NUMBER )
IS BEGIN
/* apps.fnd_file.output & apps.fnd_file.log constantes que represntan sobre que archivo se realizaran las operaciones del paquete fnd_file. apps.fnd_file.put(which,buff); este comando escribe en el archivo seleccionado los datos que se coloquen en el segundo parametro de entrada. apps.fnd_file.new_line(which,lines);este comando escribe en el archivo seleccionado tantos saltos de linea como se indique en el segundo parametro apps.fnd_file.put_line(which,buff);este comando escribe en el archivo seleccionado los datos que se coloquen en el segundo parametro de entrada concatenados con un salto de linea. */
apps.fnd_file.put(apps.fnd_file.output,'Linea 1 Hola Mundo');
apps.fnd_file.new_line(apps.fnd_file.output, 2);
apps.fnd_file.put(apps.fnd_file.output,'Linea 3 Hola Mundo');
apps.fnd_file.put(apps.fnd_file.output,'-Linea 3 Hola Mundo parte 2');
apps.fnd_file.new_line(apps.fnd_file.output, 1);
apps.fnd_file.put_line(apps.fnd_file.output, 'Linea 4 Hola Mundo');
apps.fnd_file.put(apps.fnd_file.output,'Linea 5 Hola Mundo');
apps.fnd_file.put(apps.fnd_file.log,'Linea LOG 1 Hola Mundo');
apps.fnd_file.new_line(apps.fnd_file.log, 2);
apps.fnd_file.put(apps.fnd_file.log,'Linea LOG 3 Hola Mundo');
apps.fnd_file.put(apps.fnd_file.log,'-Linea LOG 3 Hola Mundo parte 2');
apps.fnd_file.new_line(apps.fnd_file.log, 1);
apps.fnd_file.put_line(apps.fnd_file.log, 'Linea LOG 4 Hola Mundo');
apps.fnd_file.put(apps.fnd_file.log,'Linea LOG 5 Hola Mundo'); errbuf:='HAY ALERTAS';
retcode :=1;
errbuf:='HAY ERRORES';
retcode :=2;
errbuf:='NO HAY ERRORES';
retcode :=0;
END;


2.- Se define el ejecutable, desde la responsabilidad Desarrollador de aplicaciones(Application Developer)/Administrador de Sistema(System Administrator) en el menu:Concurrente->Programa->Ejecutable(Concurrent->Program->Executable) se capturan los datos de tu ejecutable. se podría decir que esta pantalla es solo una definición global del ejecutable.

3.- Se define el programa desde la responsabilidad Desarrollador de aplicaciones(Application Developer)/Administrador de Sistema(System Administrator) en el menu:Concurrente->Programa>Definir->(Concurrent->Program->Define) , aquí se capturan los datos que le servirán al usuario para ejecutar su programa, como son : cual es el ejecutable que utilizara?, con que parámetros?, que parámetro es obligatorio? este programa es incompatible con otro? que tipo de salida da este programa?, etc. aqui les dejo un ejemplo de la definición de  programa.


4.- Se define quien va a ejecutar este programa,  en la ebs el primer nivel donde se define que puede hacer un usuario es la responsabilidad que este tiene, a esa responsabilidad se le agregan todas las funcionalidades que el usuario debería ser capaz de realizar, ejemplo:



  
5.- Como se puede observar la responsabilidad tiene asociado un grupo de solicitudes, el grupo de solicitudes es básicamente la lista de programas que el usuario que tiene esa responsabilidad puede ejecutar.

Listo !!!! una vez que ya lograron este paso, ya pueden ejecutar el programa que ustedes realizaron.

Ahora lo ejecutamos y que sucede, dependiendo de la forma en que hayan codificado los códigos de error, el proceso puede finalizar:
a) 2300206  retcode:=0;   ejemplo de proceso normal.
b) 2300210  retcode:=1;  ejemplo  de proceso con advertencias.
c) 2300206  retcode:=2;  ejemplo de proceso con error.

Queda del lado del programador el colocar el retcode que le ayude al usuario a identificar mejor la situación en la que se ejecuto el proceso.
Como detalle adicional si como programador no tocas esa variable, el proceso  se marca como finalizado
correctamente cuando termina su ejecución sin lanzar excepciones.

Un proceso de pl/sql, hereda los datos de la sesión con la que se encuentra conectado, que quiere decir esto: Que no se requiere ejecutar ni APPS.FND_GLOBAL.APPS_INITIALIZE.

Con esto queda el ejemplo de como realizar la creación y ejecución de un proceso concurrente escrito en PL/SQL.


En el próximo articulo daré un ejemplo en reports.

2 comentarios:

  1. Que tal buenas tardes compañero, me encuentro exactamente en la misma situacion por la cual tu pasaste hace tiempo y esta empresa consultora me solicita cosas de las cuales jamas en la vida habia escuchado, me gustaria saber si me hay algun libro en especial que me recomiendes... me dan el programa Toad y me piden integrarlo con PL/SQL, EBS, armar concurrencias, procesos, y colgarlos en la EBS, espero me puedas recomendar algo for Dummies por que la verdad si estoy en pañales aun jajaja.
    Best regards.

    ResponderEliminar
  2. No hay algo asi como que for Dummies peero esta un libro muy bueno que se llama Oracle E-Business Suite R12 Integration and OA Framework Development and Extension Cookbook. PD. Disculpa la tardanza

    ResponderEliminar