Archivo

Archivo del autor

ADF tips: Reglas de auditoría en JDeveloper – Crea tus propias reglas (Integración continua)

septiembre 2, 2015 Deja un comentario

ADF tips

Siguiendo esta serie de posts sobre reglas de auditoría, donde ya hemos explicado cómo crear nuestra propia regla de auditoría y cómo crear un transform que ayude al programador a codificar correctamente, en este post final explicaremos cómo integrar nuestra auditoría en un entorno de integración continua.

Por ejemplo en un entorno con Jenkins donde nuestra aplicación se genera mediante un job que obtiene el código, lo compila y realiza el deploy en nuestro weblogic, en este job podemos añadir un paso más, antes de realizar el deploy, que lance nuestras reglas de auditoría.

Para ello primero generaremos el fichero xml de nuestras reglas de auditoría, iremos a preferencias/audit:

xml

Generaremos nuestro fichero ReglasAuditoria.xml y después lo importamos para que se instale como opción de auditoría, entonces desde la linea de comandos podremos ejecutar lo siguiente:

C:\Oracle\Middleware12\Oracle_Home\jdeveloper\jdev\bin>ojaudit -profile ReglasAvanttic "C:/JDeveloper/mywork12C13/TestAudit/TestAudit.jws" -output TestAudit_auditoria.html -style audit-html

Esto nos generará el fichero TestAudit_auditoria.html donde podremos ver si nuestro código cumple las reglas o no. El resultado será algo como esto:

audit-html

 

 

También podemos añadir a nuestras reglas, las reglas que ya vienen por defecto en JDeveloper y reglas de terceros como las de ADF EMG.

En resumen, en esta serie de posts hemos visto que utilizando las reglas de auditoría que proporciona JDeveloper podemos aplicar nuestras especificaciones QA en tiempo de compilación, cómo ayudar al programador a que su código cumpla estas especificaciones y cómo evitar que en un entorno de integración continua tengamos un código que no cumpla estas reglas.

Bibliografía utilizada para realizar estos posts:

Categorías:ADF / Java Etiquetas: , ,

ADF tips: Reglas de auditoría en JDeveloper – Crea tus propias reglas (Modificador)

ADF tips

Siguiendo con la serie de posts sobre reglas de auditoria, donde ya hemos explicado cómo crear nuestra propia regla de auditoria creando nuestro analizador, ahora explicaremos cómo crear un Transform que nos sugiera el código que debemos poner.

Siguiendo el ejemplo de nuestra regla de auditoria, que no nos deja tener en el código la sentencia System.out.print porque por ejemplo estamos usando ADFLogger y en nuestras clases todas tienen el siguiente código de inicialización del ADFLogger:

 private static ADFLogger logger = ADFLogger.createADFLogger(TestAudit.class);

Vamos a crear una clase Transform que nos cambiará el código System.out.println(‘texto’); por logger.info(‘texto’);

Para hacer esto modificaremos el fichero Extension.xml definiendo nuestra clase y mapeándola con la clase Analizer definida anteriormente, quedando así:

<extension id="com.avanttic.extension.auditreglas" version="1.0.0" esdk-version="2.0" rsbundle-class="com.avanttic.extension.auditreglas.AuditReglas" xmlns="http://jcp.org/jsr/198/extension-manifest">
 <name>${EXTENSION_NAME}</name>
 <owner>${EXTENSION_OWNER}</owner>
 <trigger-hooks xmlns="http://xmlns.oracle.com/ide/extension">
 <!-- TODO Declare triggering functionality provided by extension: com.avanttic.extension.auditreglas -->
 <triggers>
   <audit-hook id="com.avanttic.extension.auditreglas">
    <trigger>
      <technology>Java</technology>
    </trigger>
    <category-definition id="AuditAvanttic"/>
    <category-definition id="ReglaJava">
       <category>AuditAvanttic</category>
    </category-definition>
    <transform-definition id="transform-system-print">
       <transform-class>com.avanttic.extension.auditreglas.transform.java.JavaTransformImpl</transform-class>
    </transform-definition>
    <rule-definition id="system-print">
      <category>ReglaJava</category>
      <enabled>true</enabled>
      <severity>error</severity>
      <transform-binding>
         <transform>transform-system-print</transform>
      </transform-binding>
    </rule-definition>
    <analyzer-definition>
        <analyzer-class>com.avanttic.extension.auditreglas.analizers.java.JavaAnalizerImpl</analyzer-class>
    </analyzer-definition>
   </audit-hook>
 </triggers>
 </trigger-hooks>
 <hooks>
 <!-- TODO Declare functionality provided by extension: com.avanttic.extension.auditreglas -->
 </hooks>
</extension>

Explicación de los nuevos tags:

  • transform-definition: Define una clase java que extenderá  oracle.jdeveloper.audit.transform.Transform y servirá para hacer la modificación.
  • transform-binding: Mapeamos nuestro modificador con el Analizer.

Después crearemos la clase java:

 package com.avanttic.extension.auditreglas.transform.java;

import oracle.javatools.parser.java.v2.internal.symbol.stmt.ExpressionStmt;

import oracle.jdeveloper.audit.java.JavaTransformAdapter;
import oracle.jdeveloper.audit.java.JavaTransformContext;
import oracle.jdeveloper.audit.transform.Transform;

public class JavaTransformImpl extends Transform {
 public JavaTransformImpl() {
 super(new JavaTransformAdapter());
 }

 public void apply(JavaTransformContext context, ExpressionStmt stmt) {
  // Aqui pondremos el codigo que realiará las modificaciones
 }
}

Una vez tengamos esto haremos el deploy de nuestro proyecto de reglas y comprobaremos cómo nos hace el cambio:

transform1

transform2

Conclusión: Hemos visto cómo en tiempo de codificación podemos controlar que se cumplan nuestras especificaciones QA  y cómo podemos ayudar al programador a cumplirlas, al poder sugerirle el código correcto que tiene que usar.

Categorías:ADF / Java Etiquetas: , ,

ADF tips: Reglas de auditoría en JDeveloper – Crea tus propias reglas (Analizador)

ADF tips

En un post anterior explicamos cómo activar las reglas de auditoría que JDeveloper ya lleva por defecto. En este post explicaremos cómo crear nuestra propia regla de auditoría. JDeveloper nos da una herramienta para poder ampliar e implementar nuestras propias reglas de auditoria, mediante lo que denomina extensiones. Lo primero que haremos será instalar la en nuestro JDeveloper 12c las librerías para poder generar extensiones, realizaremos los siguientes pasos:

Iremos a check for updates:

check

Después instalaremos Extension SDK  y tendremos que reiniciar JDeveloper.

extension

Una vez tengamos Extension SDK instalado comenzaremos a crear nuestras propias reglas, sobre la aplicación que creamos en el post anterior.

Lo primero será crear una aplicación tipo Extension Application:

apExtension

Esta aplicación por ejemplo la llamaremos AuditReglas, Se nos creara una aplicación como vemos en la siguiente imagen:

apliAudit

Aquí podemos ver los dos ficheros de configuración de la extensión MANIFEST.MF y extension.xml, editaremos el fichero extension.xml y iremos a overview desde aquí se ven los dos ficheros.

Lo primero que haremos será  ir a la pestaña dependencias y añadiremos las dependencias necesarias para nuestra extensión:

  1. oracle.ide
  2. oracle.jdeveloper
  3. oracle.ide.audit
  4. oracle.ide.audit.core
  5. oracle.ide.xmlef
  6. oracle.javatools
  7. oracle.javatools-nodeps
  8. oracle.jdeveloper.properties

Leer más…

Categorías:ADF / Java Etiquetas: , ,

ADF tips: Reglas de auditoría en JDeveloper – Introducción

Este post es el primero de una serie dedicados a las reglas de auditoría en JDeveloper, donde veremos las ventajas que nos proporcionan para tener un código que cumpla los requisitos de QA de nuestra empresa.

En este post os mostraré una visión rápida de las auditorías que proporciona JDeveloper, por defecto, para nuestro código. La idea es que en tiempo de codificación ya tengamos una herramienta de calidad del código (QA) y no lo dejemos todo para el final de nuestro proyecto, como ocurre normalmente, para esto JDeveloper nos proporciona las reglas de auditoría.

Utilizaremos JDeveloper 12c versión 12.1.3.0.0. Veremos una compilación de código sin las reglas de auditoría y después activándolas.

Empezaremos creando una aplicación.

Crear aplicación ADF

Ahora crearemos una clase java simple y la compilaremos. Veremos que no tenemos ningún mensaje de compilación.

Clase java

Ahora activaremos las reglas de auditorÍa que están en tools/preferences/audit, marcaremos el check de Code Assist y Audit During Compile.

Leer más…

Categorías:ADF / Java Etiquetas: , ,

ADF tips: Refresco de pantalla automático y periódico en ADF

En este post veremos cómo implementar con ADF una actualización de una parte de nuestra página automáticamente y de forma periódica, por ejemplo los datos de una tabla que estamos mostrando y que son modificados desde fuera de nuestra aplicación.

ADF ofrece una manera sencilla de lograr esto con el tag af:poll, por ejemplo:

<af:poll id="pollId" pollListener="#{javaBean.pollExpired}"/>

Por defecto este tag nos lanzará el pollListener cada 5000 milisegundos, y en él podemos tener el código que queremos que se ejecute periódicamente, por ejemplo el refresco de una tabla o gráfica. A continuación vemos como refrescaríamos una tabla:

BindingContainer bindings = getBindings();
OperationBinding operationBinding = bindings.getOperationBinding("Execute");
Object result = operationBinding.execute();
if  (!operationBinding.getErrors().isEmpty()) {
return null;
}
AdfFacesContext.getCurrentInstance().addPartialTarget(table1);
return null;

En resumen, gracias a af:poll podemos lanzar desde la página, de forma periódica y sin que el usuario tenga intervenir, el código que necesitemos.

Categorías:ADF / Java Etiquetas: ,

Mantenimiento de una tabla n:m en ADF con SelectManyShuttle

Un ejemplo de cómo hacer un mantenimiento de una tabla de forma usable para el usuario seria utilizar el componente SelectManyShuttle. Uno de los casos que podemos utilizarlo es cuando tenemos una tabla que sale de una relación n:m, por ejemplo:

Tablas ejemplo

Imagen 1: Tablas ejemplo

Tenemos la tabla de usuarios, roles y ahora queremos guardar en la tabla usuarioRoles los roles asignados aún usuario. Para realizar esto crearemos una pantalla donde tendremos la tabla de usuarios y seleccionaremos uno de los usuarios y con el componente SelectManyShuttle le asignaremos los roles. En la pantalla también pondremos la tabla UsuariosRoles para ver los cambios.

Pasos a seguir

Creamos una aplicación Fusion Web Application (ADF) y creamos los business components desde nuestra base de datos: nos pedirá la conexión a la base de datos y elegiremos las entidades que queremos utilizar. En este ejemplo: Usuario, Roles y UsuarioRoles. Obtendremos los siguientes business components:

Resultado de crear las entidades

Imagen 2: Resultado de crear las entidades

AppModule

Imagen 3: AppModule

Leer más…

Categorías:ADF / Java Etiquetas: , , ,