Inicio > Forms & Reports > Oracle Forms 12c – Integración con Oracle BI Publisher

Oracle Forms 12c – Integración con Oracle BI Publisher

Una de las nuevas funcionalidades de Oracle Forms 12c es la integración nativa con Oracle BI Publisher.

biPublisher

Antes de la versión 12c, solamente se podía utilizar Oracle Forms con BI Publisher de estas 4 formas:

  • Llamando a la aplicación BI Publisher via URL
  • Integrando las clases de BI Publisher dentro de Forms y usando las funciones de la API
  • Programando un servlet y usando las funciones de la API
  • Llamando a sus Web Services desde Forms

Gracias a esta nueva funcionalidad podemos combinar en nuestra aplicación el uso de Oracle Reports y de Oracle BI Publisher.

Esta integración se ha diseñado para que sea muy parecida a la que nos ofrece Oracle Reports con RUN_REPORT_OBJECT. Por tanto, para poder diferenciar entre que tipo de informe vamos a ejecutar, Oracle ha creado la nueva propiedad REPORT_OBJECT_TYPE, que podemos encontrar en las propiedades del objeto “Informe en el navegador de objetos de Oracle Forms. Esta propiedad puede tener uno de los siguientes valores:

  • OraReports:  Oracle Reports
  • OraBIP: Oracle BI Publisher

Debemos tener en cuenta que la llamada a BI Publisher, a través de la integración nativa con Forms, siempre es asíncrona.

En nuestro laboratorio hemos podido probar la integración con llamando al listado Salary Report ya existente en Bi Publisher:

salary_report

Como primer paso, dentro del formulario le hemos añadido un nuevo Informe/Report de tipo OraBIP vacío. Los parámetros de la integración los estableceremos en la unidad de programa mas adelante.

Report_object_type

A continuación enumeramos los parámetros que vamos a utilizar en la integración:

  • BIP_SSL_CONNECTION: Indica si SSL es obligatorio u opcional.
  • BIP_SERVICE_LOCATION: La URL del Web Service – WSDL (ScheduleServices) del servidor Oracle BI_Publisher.
  • BIP_REPORT_PATH: Path absoluto del report a ejecutar (en el servidor BI Publisher ).
  • BIP_REPORT_LOCALE: Report Locale.
  • BIP_REPORT_FORMAT: Formato de salida deseado. Para la lista de formatos completa, podemos consultar la documentación de BI Publisher. Los mas usados serían:
    • html
    • pdf
    • rtf
    • xslx
    • csv
  • BIP_USER: Usuario necesario para acceder al servicio Web.
  • BIP_PASSWORD: Password necesario para acceder al servicio web.

El resto de parámetros y sus posibles valores los podemos encontrar en la ayuda.

Ejecución del informe

Con la siguiente unidad de programa en nuestro formulario, podemos ejecutar el informe:

–Servidor BI Publisher
v_xmlpserver := ‘http://servidor:puerto/xmlpserver’;

–Identificar el report
repid := find_report_object (p_bi_name_rep);

— Username & Password.
SET_REPORT_OBJECT_PROPERTY (repid, BIP_USER, bi_username);
SET_REPORT_OBJECT_PROPERTY (repid, BIP_PASSWORD, bi_password);


SET_REPORT_OBJECT_PROPERTY (repid, BIP_SSL_CONNECTION, OPTIONAL);
SET_REPORT_OBJECT_PROPERTY (repid, BIP_SERVICE_LOCATION, v_xmlpserver||’/services/v2/ScheduleService?wsdl’);
SET_REPORT_OBJECT_PROPERTY (repid, BIP_REPORT_PATH, ‘/Samples/1. Overview/Salary Report.xdo’);
SET_REPORT_OBJECT_PROPERTY (repid, BIP_REPORT_LOCALE, ‘ES-es’);
–Tipo de formato de salida, p.e.: html,pdf,rtf,xslx,csv
SET_REPORT_OBJECT_PROPERTY (repid, BIP_REPORT_FORMAT, ‘pdf’);

— Llamada a Run Report Object
v_rep := RUN_REPORT_OBJECT(repid);

Después de ejecutar nuestra pantalla, podemos ver en la consola de BI Publisher la correcta ejecución del listado y verificar el fichero generado siguiendo el enlace:

jobs_publisher

Si queremos avisar al usuario una vez finalice el job planificado, podemos consultar el estado de la siguiente manera:

rep_status := report_object_status(v_rep)

Oracle recomienda usar un timer para hacer este check y desaconseja hacerlo con un bucle.

Entrega/Distribución del Informe

De la entrega del Informe se encargará BI Publisher según le hayamos indicado en la unidad de programa en Oracle Forms, o bien en las propiedades del informe. Para distribuirlo tenemos disponibles los siguientes “Delivery Channels“:

  1. FTP Delivery Channel
  2. Fax Delivery Channel
  3. Mail Delivery Channel
  4. Local File Delivery Channel
  5. Print Delivery Channel
  6. WebDav Delivery Channel

A continuación os mostramos un par de ejemplos de la entrega:

  • Cómo distribuir el informe vía e-mail:

Podemos distribuir el informe adjunto en un e-mail, siempre que lo tengamos configurado en BI Publisher, como se puede ver en la imagen:

bi_email

Podemos establecer los siguientes parámetros antes de ejecutar el informe:

SET_REPORT_OBJECT_PROPERTY (repid, MAIL_TO, ‘mailto@dominio.com‘);
SET_REPORT_OBJECT_PROPERTY (repid, MAIL_FROM, ‘mailfrom@dominio.com’);
SET_REPORT_OBJECT_PROPERTY (repid, MAIL_CC, ‘mailcc@dominio.com’);
SET_REPORT_OBJECT_PROPERTY (repid, MAIL_BCC, ‘mailbcc@dominio.com’);.
SET_REPORT_OBJECT_PROPERTY (repid, MAIL_REPLYTO, ‘mailreplyto@dominio.com’);
SET_REPORT_OBJECT_PROPERTY (repid, MAIL_SUBJECT, ‘Subject’);
SET_REPORT_OBJECT_PROPERTY (repid, MAIL_BODY, ‘Mail body …’);
SET_REPORT_OBJECT_PROPERTY (repid, MAIL_SERVER, ‘server’);

Una vez ejecutado el informe, se envía automáticamente con el fichero adjunto en el e-mail.

  • Cómo generar el informe en fichero:

Si queremos generar el informe en un fichero localizado en el servidor de BI Publisher, podemos usar la siguiente propiedad:

SET_REPORT_OBJECT_PROPERTY (repid, LOCAL_FILE_NAME, ‘/directorio/nombre_fichero.ext‘ );

Si publicamos el directorio donde estamos generando el fichero y construimos la url con el nombre del fichero, podríamos llegar a mostrarlo usando “web.show_document” desde el mismo formulario, una vez finalice la ejecución.

Entendiendo el Job ID de RUN_REPORT_OBJECT  / scheduleReport

Cuando recuperamos el Job ID de la llamada a RUN_REPORT_OBJECT, nos llamó enseguida la atención que el valor recuperado no se correspondía con el valor mostrado en la consola de BI Publisher, ni con el valor de la salida que muestra el informe (outputId). En el ejemplo que hemos usado Oracle Forms nos devolvía el valor 1007, mientras que en la consola veíamos el job 1008 y, al visualizar el documento desde la consola, el id de la salida era el 1004:

http://servidor:puerto/xmlpserver/servlet/outputDocument?outputid=1004&content_type=pdf

Este comportamiento se debe a que Oracle Forms realiza una llamada al ScheduleService programando un Job que nos devuelve el valor del parentJobId y a su vez nos crea un child jobId. Si queremos recuperar el id del hijo, y a su vez la salida, lo podemos hacer vía Web Services, llamando a ScheduleService.getAllScheduledReportHistory() para listar todos los hijos y luego recuperando la salida con ScheduleReport.getScheduledReportOutputInfo(). Podemos ver mas detalles en la siguiente nota: Doc ID 1344535.1

  1. mayo 19, 2016 en 12:13

    Good work Israel. The most complete guide on Forms-BIP integration so far. Have you try to pass parameters to BIP reports?

    • Israel Gatell
      mayo 20, 2016 en 19:38

      Thank you! Not yet,..

  2. mayo 23, 2016 en 12:57

    ok… And one more question if you don’t mind. Does Forms-BIP integration work for you in case when there is a JVM controller configured?

    • Israel Gatell
      julio 4, 2016 en 10:06

      Hi Oleh, sorry i missed this comment. In this lab, we have not configured JVM controller.

      Regards

  3. Joan Massegú
    junio 1, 2016 en 23:14

    Nice one! Keep them coming!

    • Israel Gatell
      julio 4, 2016 en 10:08

      Thanks!

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: