Archive for January, 2009

Mensajes de ayuda en caja “pop-up”

Monday, January 19th, 2009

Una de las cosas más importantes en toda aplicación, es proporcionar al usuario final, la mayor ayuda posible, de la manera más sencilla. Es por eso que en esta ocasión, les ofrezco una alternativa para mostrar al usuario mensajes de ayuda en una ventana que se levanta al pasar el puntero del mouse sobre un enlace, el cual puede ser del tipo texto, o bien, una imagen.

El presente “tip” está diseñado para utilizar en páginas que posean una forma de entrada de datos, más adelante en este artículo encontrará los enlaces a los archivos de código necesarios para realizar está tarea. Espero que les sea de utlidad. Como siempre, pueden ver esta funcionalidad en acción en mi espacio de trabajo en OTN.

He aquí el procedimiento:

  1. Descargue el archivo con el código javascript de aquí: cajatip.js
  2. Descargue la hoja de estilo en cascada para la caja: pista.css
  3. Cargue el archivo pista.css en la aplicación:
    • Ingrese a la aplicación.
    • Luego a Componentes Compartidos
    • Por último a Archivos estáticos y siga el asistente para cargar el archivo.
  4. Ahora cargue el archivo cajatip.js en la aplicación:
    • En Componentes Compartidos.
    • Haga clic en Hojas de Estilo en Cascada y siga el asistente para cargar el archivo.
  5. Si desea utilizar una imagen para levantar la caja de ayuda, utilice esta Imagen de ayuda
    • Nuevamente en Componentes Compartidos
    • Ingrese a Imágenes y complete el asistente para cargar la imagen anterior.
  6. Ahora, para cada página que contenga campos de ingreso de datos y que desee que contenga cajas de ayuda para sus campos:
    • En la definición de la página, en Encabezado HTML ingrese el siguiente código:
    • <script type="text/javascript" src="#WORKSPACE_IMAGES#cajatip.js">
      </script>
      <link rel="stylesheet" type="text/css" href="#WORKSPACE_IMAGES#pista.css">
              
    • En cada elemento al que desee agregarle una caja de ayuda, en el artibuto “Texto posterior al Elemento” agregue el siguiente código:
    • <a href="#" class="enlace_pista" onMouseover="muestrapista(
      'Texto de ayuda.', this, event, '150px')">[?]</a>
      

      Si desea un enlace de texto, o bien:

      <a href="#" class="enlace_pista" onMouseover="muestrapista(
      'Texto de ayuda.', this, event, '150px')">
      <img src="#WORKSPACE_IMAGES#help.png"></a>
      

      Si desea utilizar la imagen para acceder a la caja de ayuda.

    • En el código anterior, en cualquiera de los dos casos, cambie el código “Texto de ayuda” por el mensaje que desea que sea mostrado para cada campo en particular.
    • También puede modificar el tamaño de la caja de ayuda, si cambia el cuarto parámetro de la funcion muestrapista

Y eso es todo, ahora tiene una manera bonita e interesante de presentar al usuario final ayuda de manera sencilla e interesante

Si lo desea, puede modificar el archivo pista.css para cambiar el color de fondo de la caja, el tipo y tamaño de letra o cualquier otra característica de la caja.

Solo me queda invitarlos a probar este procedimiento y a que me continúen acompañando. Los espero en la siguiente entrega, así como sus preguntas y comentarios.

Impresión PDF en Oracle Apex

Tuesday, January 6th, 2009

Introducción y arquitectura

Apex 3.0 introdujo la habilidad de exportar una región de reporte a formato PDF – esencialmente, imprimir un reporte. Esto es definido declarativamente y está disponible para todas las regiones de reporte. Los usuarios de Application Express ahora pueden ver e imprimir reporte con cabeceras de página que se repiten en cada página y contenido que se conforma propiamente a varios tamaños de página. Para lograr esto, los datos del reporte son transformados a formato PDF utilizando un servidor de reportes definido externamente. Otras mejoras de impresión han sido incorporadas en la versión 3.1 de Oracle Application Express, dentro de los Atributos de Impresión de la Región y los Queries de los Reportes. La ilustración de abajo muestra la arquitectura de impresión de Oracle Express:

Arquitectura impresión PDF en APEX

Cuando el usuario final de la aplicación hace clic en el enlace de impresión, la solicitud es enviada al motor de Apex (que es parte de la base de datos Oracle). Luego el motor de Apex genera los datos correspondientes del reporte en formato XML y la plantilla del mismo en formato XSL-FO o RTF. EL motor de reportes externo entonces transforma los datos y la plantilla a PDF, el cual es desplegado al usuario final utilizando el servlet de conversión que viene con BI Publisher 10.1.3.2. Toda esta complejidad de arquitectura es transparente para el usuario final y los desarrolladores. Los usuarios finales solo deben hacer clic en los enlaces de impresión, y los desarrolladores solo deben definir o rellenar declarativamente las regiones para poder utilizar la impresión en PDF.

Existen dos tipos de impresión en PDF, una estándar, la cual voy a tratar en este artículo, y la que se menciona en el párrafo anterior y que es conocida como Avanzada, y que por el momento voy a dejar de lado, debido a que BI Publisher es un producto licenciado de Oracle y que tiene un costo considerable, por lo que no todos podrán contar con esta como parte de sus aplicaciones.

Opciones de configuración

Su servidor de aplicaciones puede ser Oracle BI Publisher (como se mencionó arriba), OC4J con Apache FOP o cualquier otro motor de procesamiento XSL-FO estándar. Lógicamente, si se pudiera utilizar BI Publisher como su servidor de reportes, se tendrá un mayor nivel de funcionalidad, a continuación se presenta una breve descripción de ambas tipos de configuración para que se pueda comparar.

Opción Estándar (Básica)

La configuración estándar puede ser implementada con Apache FOP o cualquier otro motor de procesamiento XSL-FO estándar. A partir de Apex 3.0.1, se incluye dentro de este, una configuración de Apache FOP en conjunto con Oracle Containers para J2EE (10.1.3.2). Esto provee la habilidad de dar formato declarativo de las regiones de reportes y queries de reportes con control básico sobre los atributos de la página. Estos atributos incluyen orientación, tamaño, formato de cabeceras de columnas, encabezado de página y pie de página. Las ilustraciones de abajo muestran los reportes obtenidos con la configuración estándar:

Ejemplo estándar 1Ejemplo estándar 2Ejemplo estándar 3

Opción Avanzada

La configuración avanzada requiere una licencia válida de Oracle BI Publiser. Con esta configuración, usted cuenta con todas las capacidades de la opción estándar más la habilidad de definir y desarrollar trazados de reportes basados en RTF, utilizando para ello el complemento de Plantilla Word de BI Publisher. Esto provee fácil control gráfico sobre cada aspecto de su reporte. Se pueden agregar logotipos a sus páginas, controles de agrupado complejos y tener control total de la paginación. Fácilmente puede empotrar gráficos y crear reportes que luzcan exactamente como formularios estándar de cualquier organización. A continuación algunos ejemplos de reportes que ilustran la configuración avanzada:

Ejemplo avanzado 1Ejemplo avanzado 2Ejemplo avanzado 3

Instalando y configurando Apache FOP

Prerequisitos

Una configuración con soporte de Apache FOP en conjunción con Oracle Containers para J2ee (10.2.3.2) viene como parte de Apex 3.0.1 o superior. La instalación de Apache FOP viene incluida en la distribución de Apex bajo directorio_apex/utilities/fop/fop.war. (directorio_apex, es el directorio desde el que se instala Apex)

Por favor tome nota de que el soporte a Apache FOP en conjunto con OC4J (10.1.3.2) tiene soporte por parte de Oracle SOLO cuando se utilizan los archivos que se proporcionan. Las configuraciones alternas de Apache FOP no tienen ningún tipo de soporte.

Antes de empezar, usted va a necesitar OC4J instalado y ejecutándose. La siguiente versión de OC4J está verificada y trabaja con la solución FOP:

Paso 1: Instalando el archivo WAR

Coloque el archivo fop.war (localizado en directorio_apex/utilities/fop) en una localización accesible de su computadora local. Luego siga las siguientes instrucciones:

  1. Navegue hasta la Consola de OC4J del Enterprise Manager (http://localhost:8888/em) Los datos deben corresponder con sus datos de configuración.
  2. Selecciones la pestaña de Aplicaciones
  3. Haga clic en el botón “Desplegar” (Deploy)
  4. En la página de “Desplegar: Seleccionar archivo” utilice la opción “El archivo está presente en el host local. Cargar el archivo al servidor donde el Control de Servidor de Aplicaciones está ejecutándose” (o algo similar). Use el navegador de archivos para seleccionar el archivo fop.war y haga clic en el botón “Siguiente”.
  5. En la página “Desplegar: Atributos de Aplicación” defina el nombre de la aplicación como “fop” y limpie o desmarque la opción “Context root”, luego haga clic en el botón “Siguiente”.
  6. En “Desplegar: Definiciones de desplegado” haga clic en el botón “Desplegar”.

Paso 2: Configurar Apex para utilizar la impresión PDF y JSP

Una vez que tiene FOP instalado, accese los parámetros de Impresión de Reporte:

  1. Acceda a la página de Administración de Servicios
  2. Seleccione “Administrar Servicio”
  3. Seleccione “Definiciones de Instancia” , bajo Administrar Definiciones de Ambiente
  4. Haga clic en Impresión de Reportes, para enfocarse en los atributos de Impresión de Reportes únicamente

Ahora, especifique los siguientes atributos:

  • Oracle BI Publisher: Soporte Estándar
  • Protocolo Servidor de Impresión: HTTP o HTTPS (dependiendo de su configuración particular)
  • Dirección de host de Servidor de Impresión: el nombre de la computadora donde el contenedor java está ejecutándose – por ejemplo: micompu.micompañia.com
  • Puerto del Servidor de Impresión: el puerto en que el OC4J está escuchando – por ejemplo 8888
  • El script del Servidor de Impresión: /fop/apex_fop.jsp

Asegúrese de ingresar las definiciones del servidor de aplicaciones como se especifica, no use http:// delante de su nombre de computadora, no use dos puntos (:) en el puerto y no utilice “/” después del nombre del JSP, solo por delante: “/fop/apex_fop.jsp”.

Nota:Las imagenes utilizadas en este artículo son propiedad de la Corporación Oracle.

Cualquier consulta, comentario o sugerencia son bien recibidos. Espero verlos pronto por aca con un nuevo artículo.