Archivo

Posts Tagged ‘Reports’

Integración de códigos DataMatrix – QR en Oracle Reports

noviembre 27, 2017 Deja un comentario

Una de las funcionalidades más interesantes, y muchas veces olvidada de Oracle Reports, es la integración con Java, además de la posibilidad de ser utilizada por Oracle Forms y Reports.

Esta integración nos permite importar cualquier clase de java. Una de las funcionalidades más utilizadas y que permite esta integración es el consumo de un servicio web (WS). Pero no es la única posibilidad, como hableremos a continuación: también podremos incluir un código DataMatrix/QR.

¿Qué es un código QR (según Wikipedia)?

Un código QR (Quick Response)  es un “código de respuesta rápida”, también descrito como la evolución del código de barras. Es una forma de almacenar información en una matriz de puntos o en un código de barras bidimensional. Una vez impresa la información almacenada se puede descifrar con un dispositivo móvil con capacidad de capturar imágenes, como un teléfono móvil, tablet, un lector específico, etc.

 

¿Qué usos tienen los códigos QR?

Los códigos QR tienen infinidad de usos, pero su uso más común suele ser para almacenar la siguiente información:

  • Detalles de un producto/contacto.
  • Url’s.
  • Ofertas.
  • Eventos.
  • ID’s de Red.es sociales (Twitter, Facebook).

¿Cómo leer un código QR?

Para ello necesitaremos una aplicación capaz de leer códigos QR que podemos encontrar en Google Play o en Apple Store, en el caso de que se trate de un dispositivo móvil, p.e.: Barcode scanner.

Leer más…

Categorías:Forms & Reports Etiquetas: , , ,

Disponible Forms&Reports 12.2.1.1

 

avanttic_Oracle_Forms

Desde este mes de Junio ya se encuentra disponible la última release de Oracle Forms&Reports 12c, la 12.2.1.1.

Se trata de una actualización que dota de más estabilidad el producto y resuelve una serie de bugs aparecidos en la release anterior.

Por ahora no se conocen los detalles exactos de los bugs que soluciona. Imaginamos que en breve serán publicados por parte de Oracle.

Hasta entonces, si queréis profundizar en otros temas de esta nueva release y descargaros el producto, os dejo una serie de enlaces:

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.

Leer más…

Oracle Reports – Bursting and Distributing

octubre 28, 2014 Deja un comentario

repbursting

 

Oracle Reports tiene una funcionalidad muy interesante para el reporting de nuestras aplicaciones existente a partir de la versión 10gR2, y totalmente disponible en versión 11gR2, que permite distribuir simultáneamente la salida de un informe a varios destinatarios con una única ejecución.

Destacar que el formato de salida de nuestro informe puede ser a pdf, html, rtf, Spreadsheet, xml, htmlcss y que la distribución puede ser a fichero, a impresora o a mail.

Imaginemos un escenario posible para comprender perfectamente la utilidad de esta funcionalidad:

  • A nuestras manos llega la tarea de crear un informe para la nómina de todos los empleados de la organización. Lo que haríamos sin conocer la utilidad Oracle Reports Bursting sería crear un informe de la manera habitual que reciba como parámetro el identificador del empleado y probablemente el número de mes. Desde el formulario que lanza el informe crearíamos un cursor para recorrer todos los empleados de la organización y para cada empleado se ejecutaría el informe mediante por ejemplo la funcionalidad run_report_object. Es decir, si por ejemplo la organización tiene 1.000 empleados el informe se ejecutará 1.000 veces, 1 informe por empleado.
  • Esto a priori no es un problema, el informe funcionará y las nóminas llegarán a los empleados, pero si lo miramos con detalle sí que puede ser un problema: habrá una cola de Reports Server que estará bloqueada ya que tiene 1000 informes en cola y, dependiendo del número de colas de Reports Server que disponga nuestra infraestructura y del tipo de balanceo configurado, cualquier otro informe que se ejecute justo después de que se hayan encolado los 1.000 informes se quedará a la espera de que estos acaben.
  • El informe 1.001, que en condiciones normales por ejemplo tarda 15 segundos en ser ejecutado y distribuido, ahora deberá esperar a que todos los informes de las nóminas de los empleados sean servidos, provocando probablemente que el usuario que ha lanzado el informe 1.001 llame a nuestro help desk quejándose de que lleva 1 hora esperando cuando lo normal es que tarde 15 segundos.
  • Con Oracle Reports Busting esto no sucederá, ya que sólo existirán 2 informes encolados en la cola de Reports Server, el de la nómina y el informe que tarda 15 segundos que ha lanzado el usuario después de que se haya lanzado el report de la nómina.
  • Con Oracle Reports Busting conseguimos que  con una única ejecución de nuestro informe los 1000 empleados reciban en su cuenta de correo un mail con un fichero PDF de su nómina si la distribución era a mail y la salida a PDF.

Para conseguirlo sólo hemos de seguir los siguientes pasos:

1. Preparar el informe para la distribución:

  • Abrir con Reports Builder el informe rdf.
  • En el “Object Navigator”, debajo del nombre del informe, hacer doble click encima de “Paper Layout” para mostrar la vista de disposición del papel.
  • Eliminar el repeting frame por donde queremos que se realice la distribución.
  • En la propiedad “Repeat on” del “Main Section”, informar el grupo en el que está basada la distribución.

2. Editar el fichero XML para la distribución:

Este fichero se encarga de definir cómo se distribuye la salida del listado. La mejor manera de entenderlo es con el ejemplo que a continuación os detallo. Se trata de una distribución que genera N ficheros pdf (en nuestro ejemplo, 1 para cada nómina) y envía cada uno de los pdf a la dirección de correo del empleado correspondiente:

<destinations>
  <foreach>
    <mail id=”a5″ to=”&<email>” from=”javier.gea@avanttic.com” subject=”Prueba”>
    <body srcType=”text”> Esto es un prueba </body>
      <attach format=”pdf” name=”nómina_&<nombre>.pdf” srcType=”report” instance=”this”>  <include src=”mainSection” />
      </attach>
    </mail>
  </foreach>
</destinations>

Si nos fijamos en el xml de arriba, con &<email> indicamos que el mail ha de ser enviado a la dirección de correo que indica el campo existente en el Data Model de nuestro informe. El mail que se envía lleva adjunto un fichero cuyo nombre está compuesto por “nómina_”  concatenado con el nombre completo del empleado, que también es un campo existente en el Data Model de nuestro informe: nómina_&<nombre>.pdf.

Téngase en cuenta que cualquier campo del xml puede corresponder con una columna de nuestro Data Model.

3. Ejecutar el informe:

Para ejecutar el informe lo único que tenemos que modificar en la llamada es el parámetro REPORT_OTHER. Hay que indicar que la salida del listado tiene que ser distribuida (DISTRIBUTE=YES) y dónde se encuentra el fichero xml con la distribución (DESTINATION). Evidentemente no es necesario crear un cursor para recorrer todos los empleados. A continuación os dejo un ejemplo de cómo hacerlo:

declare
vReportId       report_object;
vReportJobId  varchar2(2000);
BEGIN
vReportId := find_report_object (‘DUMMY’);
set_report_object_property (vReportId, REPORT_FILENAME, ‘lnomina’);

set_report_object_property (vReportId, REPORT_OTHER, ‘DISTRIBUTE=YES DESTINATION=E:\miERP\reports\distribucion.xml‘);

set_report_object_property (vReportId, REPORT_SERVER, ‘micoladeRS’);
set_report_object_property (vReportId, REPORT_COMM_MODE, ASYNCHRONOUS);

vReportJobId := run_report_object (vReportId, ‘params’);
end;

A continuación os dejo este link con más información sobre esta utilidad.

Bug de Reports: REP-52262

septiembre 16, 2014 Deja un comentario

En los últimos proyectos de migración de Forms me he encontrado que al recuperar la ejecución de un report para mostrar el resultado me aparecía el siguiente error:

REP-52262: Diagnostic output is disabled when using reports server 11g on new installation    

Por ejemplo se puede reproducir el error con la siguiente URL:

http://yourhostname:port/reports/rwservlet/showjobs?server=Reports_Server_Name

El error es debido a un bug de Oracle en la instalación del Servidor de Reports, a partir de la versión 11.1.1.1.0 incluida e independientemente de la plataforma de instalación. Nosotros por ejemplo lo hemos vivido en instalaciones tanto Windows, como RedHat como IBM AIX.

Para solucionarlo simplemente es necesario seguir los siguientes pasos:

  1. Realizar una copia de seguridad del fichero rwservlet.properties localizado en: %DOMAIN_HOME%\config\fmwconfig\servers\WLS_REPORTS\applications\reports_11.1.2\configuration
  2. Editar el fichero rwservlet.properties
  3. Localizar la línea: <!–webcommandaccess>L1</webcommandaccess–>
  4. Descomentarla de la siguiente forma: <webcommandaccess>L1</webcommandaccess–>
  5. Modificar el valor L1 por L2: <webcommandaccess>L2</webcommandaccess–>
  6. Guardar el fichero
  7. Reiniciar el Reports Server (WLS_REPORTS)

Las modificaciones arriba descritas pueden realizarse también desde la consola de administración Enterprise Manager 11g Fusion Middleware Control. En este caso los pasos a seguir son los siguientes:

  1. Seleccionamos el link reports(11.1.2)(WLS_REPORTS)
  2. REP52262_11Desde el menú Reports de la parte central superior seleccionamos “Configuración avanzada”
  3. REP52262_22En la parte de seguridad seleccionamos L2

REP52262_33

Para más información podéis revisar el SR de My Oracle Support (Metalink) que habla de este bug:

https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=2265872327770643&id=1242614.1&_afrWindowMode=0&_adf.ctrl-state=114vp4k9m6_4

¿Migramos nuestras aplicaciones Forms a 10gR2 o a 11g?

Cómo todos sabéis el pasado mes de Julio se liberó la versión Forms 11g. Unos meses más tarde, en Noviembre, se liberó una nueva versión que arreglaba las incidencias detectadas en la versión inicial.

La principal novedad que presenta es que Forms&Reports Server corren sobre un servidor de aplicaciones Oracle Weblogic Server 11g.

Forms 11g también ofrece una serie de nuevas funcionalidades que podéis revisar en el siguiente link.

http://www.oracle.com/technology/products/forms/files/11gr1/relwp/new_features.pdf

No quiero entrar en detalle sobre las nuevas funcionalidades, sino poner encima de la mesa la pregunta que muchos de nosotros nos hacemos una vez decidido que lo mejor es migrar nuestros desarrollos Forms:

¿Hacia qué versión de Oracle Forms he de evolucionar y modernizar mis desarrollos con Oracle Forms 4.5, 5, 6i, 9i y 10gR1?

Leer más…