• No se han encontrado resultados

ADF: Totalizar Columnas en Una Tabla

N/A
N/A
Protected

Academic year: 2021

Share "ADF: Totalizar Columnas en Una Tabla"

Copied!
9
0
0

Texto completo

(1)

Newsletter Junio 2014

5a. Ave. 5-55 Zona14,Edificio Euro Plaza Torre II, Nivel 12 Teléfono: (502)2364-5300Fax: (502)2364-5311

Email.info@datum.com.gt Pagina 1/10

ADF: Totalizar Columnas en Una Tabla

Por Ing. Jonathan Morales

jmorales@datum.com.gt

Un requerimiento muy común en aplicaciones que despliegan tablas con datos numéricos es mostrar la sumatoria de los valores de una columna, para representar el “TOTAL”. En el caso de aplicaciones ADF que utilizan Business Components (BC) para representar el modelo de datos, los View Objects que contienen la estructura de la tabla que luego es mostrada en la aplicación como una tabla. En otras ocasiones, debido a que estos datos pueden ser dinámicos (agregar o eliminar registros a la tabla) es importante poder mostrar la suma de alguna columna.

Para lograr lo anterior con ADF y debido a que los datos de la tabla provienen de un View Object, se hace uso de un atributo que llevará la suma de los valores de la columna con ayuda de una expresión Groovy, tal como se muestra a continuación.

Procedimiento

2. Seleccionar el View Object (1) del cual se obtienen los datos, ir a la opción de atributos y agregar un atributo nuevo (2). Por ser un atributo de sumatoria, el tipo recomendable es BigDecimal.

Contenido

Página:

1 ADF: Totalizar Columnas en Una Tabla 5 Nuevas Características de Oracle Forms 11gR2 8 ADRCI: Limpieza de Directorios de Diagnóstico

Editores Generales

Francisco Barrundia Alejandro Lau Débora Morán

Autores

Contribuyentes

Jonathan Morales Marlon Pérez Francisco Barrundia

(2)

2. Siempre en el View Object, seleccionar la categoría de View Accessors (1), luego en el botón "New" (2). En la ventana que se despliega, seleccionar el View Object que se está trabajando y pasarlo a la derecha con el botón ">" (3).

3. Indicar Expression en el valor del atributo nuevo y luego agregar: EmployeesView1.sum("Salary")

4. En la página donde está la tabla con los datos del View Object, seleccionar la columna que se quiere totalizar (1), hacer click derecho y en el menú contextual elegir la opción Facets column (2) y luego la opción Footer (3).

(3)

5. Una vez agregado el footer a la columna que se desea totalizar, se arrastra el atributo que se creó (TotalSal para este caso) desde Data Controls hacia facet. Esto hará que se despliegue una ventana donde se elige que se creará un Text y luego ADF Output Text.

(4)

6. Debe crearse un binding para el atributo y poderse referenciar desde el footer. Para ello en la pestaña de bindings, se crea un nuevo AttributeBinding, seleccionando como Data Source el que corresponde al View Object y a continuación el atributo de la lista de valores.

7. Agregar la referencia del binding anterior a la propiedad Value del Output Text que se colocó en el footer, donde se mostrará el valor totalizado.

8. Al ejecutar la aplicación, en la página mostrará la tabla y en la columna elegida aparecerá la suma de los valores, tal como se muestra a continuación.

(5)

Nuevas Características de Oracle Forms 11gR2

Por Ing. Marlon Pérez

mperez@datum.com.gt

Oracle Forms es parte de Oracle Fusion Middleware y es una de las tecnologías de Oracle con mayor madurez en el mercado. Permite diseñar y construir aplicaciones empresariales de una manera rápida y eficiente, ofreciendo acceso a través de la Web.

Entre las características ya conocidas se encuentran las siguientes:  Diseñado para soportar alta transaccionalidad

 Desarrollo RAD (Drag-and-Drop, paleta de propiedades, asistentes)  Desarrollo PL/SQL

Integración con Java (PJC y Webservices)

 Administración sencilla de aplicaciones (publicación, configuraciones, etc.)  Applet de java para desplegar la aplicación en el cliente

Ahora bien, con la versión 11gR2 podemos hacer uso de nuevas características, las cuales incluyen:

Eventos Externos

Se refiere a la posibilidad de comunicarse con Oracle Forms desde un módulo externo de forma asincrónica, por ejemplo utilizando Advanced Queuing, JMS o BPEL.

En la forma se programa el evento WHEN-EVENT-RAISED y este se suscribe a una cola de mensajes. Cuando el módulo externo deposita un mensaje en la cola, este evento se dispara y se puede ejecutar alguna acción en la forma, como actualizar un bloque.

(6)

JavaScript

En Oracle Forms ahora se puede invocar código JavaScript que resida en la misma página del applet. La operación inversa también es posible.

Para esto se utilizan las operaciones Web.Javascript_Eval_Expr o Web.Javascript_Eval_Function, que permiten invocar funciones JavaScript en la página HTML.

Una forma en la que podemos utilizar esta característica es compartiendo información entre la página HTML y el applet. Por ejemplo, crear un formulario HTML y cuando el usuario presione un botón, la información es desplegada en la forma.

Soporte para Proxy User

Permite que los clientes se conecten a la base de datos desde el servidor de aplicaciones con un usuario proxy. Un usuario proxy es un usuario con un solo privilegio (create session), que se puede conectar utilizando los permisos de otro usuario. Este tipo de usuarios solo se pueden conectar desde la aplicación (no desde SQL*Plus u otra herramienta).

Para utilizar esta característica es necesario configurar SSO/OID y tener Oracle Forms en modo protegido. Veamos un ejemplo de cómo se conecta un proxy user:

connect midtier[scott]/midtierPW@databaseTnsName En este caso el usuario scott se conecta con privilegios del usuario midtier. Enterprise Manager y Grid Control

Ahora es posible saber qué operación está ejecutando un usuario conectado a la base de datos desde una forma. También es posible ver el consumo de los recursos (CPU, RAM, tiempo de conexión).

(7)

Eventos en Pluggable Java Components

Ahora es posible despachar eventos del servidor de Forms en el código PJC. Mejoramiento del rastreo de Forms

Oracle Forms ahora agrega en los archivos de bitácora, los nombres de funciones y procedimientos PL/SQL, tipos y valores de parámetros utilizados desde la sesión.

JVM integrada con Oracle Reports

Anteriormente, cuando se invocaba a Oracle Reports desde Oracle Forms se instanciaba una nueva JVM. Ahora se utiliza la misma JVM de la sesión de Forms para correr reportes, lo que permite reducir el consumo de recursos (CPU, Memoria).

Pre-instanciar procesos de Forms

Cada vez que un usuario inicia una sesión de Oracle Forms, ocurre más o menos el siguiente proceso:

 La solicitud llega al servicio de Oracle Forms en el servidor.  El servidor inicia un proceso dedicado para el usuario.

 El servicio dedicado busca en el disco la forma que el usuario quiere visualizar.  La forma es leída del disco e instanciada en la memoria del proceso dedicado.  La forma se despacha al cliente y es visualizada en el explorador.

 El proceso dedicado mantiene comunicación con el proceso usuario para atender todas las solicitudes.

Este proceso puede consumir mucho tiempo y hacer que el usuario considere lento el arranque de la forma. Un administrador puede definir una ventana de tiempo en la cual se instancien varios procesos de Oracle Forms de forma anticipada. Cuando el usuario se conecta, la respuesta es más rápida y el inicio de sesión se reduce considerablemente.

(8)

ADRCI: Limpieza de directorios de diagnóstico

Por Lic. Francisco Barrundia

fbarrundia@datum.com.gt

En versiones anteriores a la 11gR2, los archivos de trace que solíamos encontrar en los directorios udump, cdump, dbdump debían depurarse manualmente. En Oracle 11gR2 se puede seguir haciendo esta limpieza manual, aunque es mejor realizarla con la herramienta que nos proporciona ADRCI.

 Los archivos de rastreo, por defecto se encuentran ahora en $ORACLE_BASE/diag/.  Sigue existiendo un alert.log que registra los errores de base de datos.

 Los archivos de alerta ahora tienen formato XML. Ejemplo:

$ORACLE_BASE/diag/rdbms/orcl/orcl/alert/log.xml

Tenemos la herramienta adrci con la que podemos ver y gestionar estos archivos. Ejemplo

adrci> show alert -tail

Uno de los problemas que siempre se nos plantea es el mantenimiento de los logs. Es por ello que nos vamos a centrar en la opción PURGE de ADRCI.

Con el usuario oracle de nuestra máquina ejecutamos el comando adrci. [ora11g@prueba ~]$ adrci

ADRCI: Release 11.2.0.1.0 - Production on Mon Apr 7 10:54:51 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. ADR base = "/oracle11g"

adrci>

Para ver las opciones que nos ofrece PURGE, escribimos en la línea de comandos adrci "help purge".

adrci> help purge

Usage: PURGE [[-i <id1> | <id1> <id2>] |

[-age <mins> [-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]]]: Purpose: Purge the diagnostic data in the current ADR home. If no

option is specified, the default purging policy will be used. Options:

[-i id1 | id1 id2]: Users can input a single incident ID, or a range of incidents to purge.

[-age <mins>]: Users can specify the purging policy either to all the diagnostic data or the specified type. The data older than <mins> ago will be purged

[-type ALERT|INCIDENT|TRACE|CDUMP|HM|UTSCDMP]: Users can specify what type of data to be purged.

Examples: purge

(9)

Tip Técnico del Mes

Consulta Oracle SQL sobre la vista que muestra conexiones actuales a la base de datos. Para visualizarla es necesario tener privilegios de administrador.

select osuser, username, machine, program from v$session

order by osuser; Por Lic. Francisco Barrundia fbarrundia@datum.com.gt purge -i 123 456

purge -age 60 -type incident

Antes de lanzar el comando PURGE, debemos especificar el home donde residen los archivos de rastreo. Esto lo hacemos con un comando "set home". Cuando escribimos el comando adrci nos muestra el ADR base.

[ora11g@sella ~]$ adrci

ADRCI: Release 11.2.0.1.0 - Production on Mon Apr 7 11:02:00 2014

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. ADR base = "/oracle11g"

adrci> set home diag/rdbms/dba11g/dba11g/ adrci>

Como vemos, establecemos la ruta a partir de la base que ya está definida. Una vez establecido el ADR home, podemos lanzar el comando PURGE. Veamos algunos ejemplos.

Para limpiar todos los archivos de rastreo de más de 24 horas de antigüedad (1440 minutos). adrci> purge -age 1440

Nota: incluye los core files: cdmp*. Limpieza de core files mayores a 6 días. adrci> purge -age 8640 -type CDUMP

Puede que para limpiar completamente sea necesario lanzar el siguiente comando. adrci> purge -age 8640 -type UTSCDMP

Para limpiar las alertas (archivos xml) de más de una hora de antigüedad. adrci> purge -age 60 -type ALERT

Referencias

Documento similar

quiero también a Liseo porque en mi alma hay lugar para amar a cuantos veo... tiene mi gusto sujeto, 320 sin que pueda la razón,.. ni mande

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

Pero la realidad se impone por encima de todo; la misma Isidora es consciente del cambio: «Yo misma conozco que soy otra, porque cuando perdí la idea que me hacía ser señora, me

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

(Banco de España) Mancebo, Pascual (U. de Alicante) Marco, Mariluz (U. de València) Marhuenda, Francisco (U. de Alicante) Marhuenda, Joaquín (U. de Alicante) Marquerie,

d) que haya «identidad de órgano» (con identidad de Sala y Sección); e) que haya alteridad, es decir, que las sentencias aportadas sean de persona distinta a la recurrente, e) que

A ello cabría afladir las intensas precipitaciones, generalizadas en todo el antiguo reino valenciano, del año 1756 que provocaron notables inundaciones y, como guinda final,

En la parte central de la línea, entre los planes de gobierno o dirección política, en el extremo izquierdo, y los planes reguladores del uso del suelo (urbanísticos y