CGI: Creación de bitacora

  • Creamos la tabla
/* 
 * Copyright (C) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 * 
 * Author:  Gustavo Matamoros González
 * Created: 25/10/2022
 */

/********************************************************/
/********************************************************/
/* CREACIÓN DE TABLA                                    */
/********************************************************/
/********************************************************/
CREATE TABLE "PPI"."BITACORA_PAE"
(
    /********************************************************/
    /* CAMPOS: ID                                           */
    /********************************************************/
    "ID_BITACORA_PAE"            number (19,0)       NOT NULL ENABLE,
    
    
    
    /********************************************************/
    /* CAMPOS: FK                                           */
    /********************************************************/
    "PLAN_APORTE_ESTRATEGICO"    number (19,0)       NOT NULL ENABLE,
    "ESTADO_FORMULACION_PAE"     number (19,0)       NOT NULL ENABLE,    
    "USUARIO"                    number (19,0)       NOT NULL ENABLE,        
    
    
    
    /********************************************************/
    /* CAMPOS: GENERALES                                    */
    /********************************************************/
    "FECHA"                 DATE                NOT NULL ENABLE,


    
    /********************************************************/
    /* CAMPOS: FRAMEWORK SDK-UNA                            */
    /********************************************************/
    "FECHA_CREACION"        DATE                NOT NULL ENABLE,
    "USUARIO_CREACION"      NUMBER(19,0)        NOT NULL ENABLE,
    "FECHA_MODIFICACION"    DATE                NOT NULL ENABLE,
    "USUARIO_MODIFICACION"  NUMBER(19,0)        NOT NULL ENABLE,
    "VERSION"               NUMBER(19,0),
    "CAMPO_CONFIGURABLE"    NUMBER(19,0),
    
    
    
    
    /********************************************************/
    /* LLAVE: PRIMARIA                                      */
    /********************************************************/
    CONSTRAINT "PK_BITACORA_PAE" PRIMARY KEY("ID_BITACORA_PAE"),
    
    
    
    
    
    /********************************************************/
    /* LLAVE: FORANEAS                                      */
    /********************************************************/
    --BITACORA_PAE->PLAN_APORTE_ESTRATEGICO
    CONSTRAINT FK_BIT_PAE_PAE FOREIGN KEY(PLAN_APORTE_ESTRATEGICO)          REFERENCES PPI.PLAN_APORTE_ESTRATEGICO(ID_PLAN_APORTE_ESTRATEGICO),

    --BITACORA_PAE->ESTADO_FORMULACION_PAE
    CONSTRAINT FK_BIT_PAE_EST_FOR_PAE FOREIGN KEY(ESTADO_FORMULACION_PAE)   REFERENCES PPI.ESTADO_FORMULACION_PAE(ID_ESTADO_FORMULACION_PAE),
    
     --BITACORA_PAE->USUARIO
    CONSTRAINT FK_BIT_PAE_USU FOREIGN KEY(USUARIO)                          REFERENCES SAS.USUARIO (ID_USUARIO),
    
    
    
    
    /********************************************************/
    /* LLAVE: FORANEAS SIGESA                               */
    /********************************************************/
    CONSTRAINT FK_BIT_PAE_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_BIT_PAE_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_BIT_PAE_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)
    
    
);

/********************************************************/
/********************************************************/
/* COMENTARIOS                                          */
/********************************************************/
/********************************************************/
COMMENT ON COLUMN "PPI"."BITACORA_PAE"."PLAN_APORTE_ESTRATEGICO"            IS 'Campo que relaciona la tabla BITACORA_PAE con la tabla PLAN_APORTE_ESTRATEGICO';
COMMENT ON COLUMN "PPI"."BITACORA_PAE"."ESTADO_FORMULACION_PAE"             IS 'Campo que relaciona la tabla BITACORA_PAE con la tabla ESTADO_FORMULACION_PAE';
COMMENT ON COLUMN "PPI"."BITACORA_PAE"."USUARIO"                            IS 'Campo que relaciona la tabla BITACORA_PAE con la tabla USUARIO';
COMMENT ON COLUMN "PPI"."BITACORA_PAE"."FECHA"                              IS 'Fecha y hora en que se realiza la transacción';





/********************************************************/
/********************************************************/
/* SECUENCIA                                            */
/********************************************************/
/********************************************************/
CREATE SEQUENCE PPI.SQ_BITACORA_PAE START WITH 1 INCREMENT BY 1 MINVALUE 1 NOCACHE  NOCYCLE  NOORDER;




/********************************************************/
/********************************************************/
/* SINONIMOS                                            */
/********************************************************/
/********************************************************/
CREATE PUBLIC SYNONYM BITACORA_PAE FOR "PPI"."BITACORA_PAE";
CREATE PUBLIC SYNONYM SQ_BITACORA_PAE FOR PPI.SQ_BITACORA_PAE;




/********************************************************/
/********************************************************/
/* VERIFICACIÓN  EXISTENCIA TABLA                       */
/********************************************************/
/********************************************************/
SELECT * FROM BITACORA_PAE;




/********************************************************/
/********************************************************/
/* ELIMINAR TABLA                                       */
/********************************************************/
/********************************************************/
DROP SEQUENCE "PPI".SQ_BITACORA_PAE;
DROP PUBLIC SYNONYM BITACORA_PAE;
DROP PUBLIC SYNONYM SQ_BITACORA_PAE;
DROP TABLE "PPI".BITACORA_PAE;



/********************************************************/
/********************************************************/
/* GRANT PERMISOS SOBRE LA TABLA                        */
/********************************************************/
/********************************************************/
GRANT DELETE, INSERT, UPDATE, SELECT, REFERENCES ON PPI.BITACORA_PAE TO WWW_SIGESA, WWW_TEUNA;
GRANT SELECT, ALTER ON PPI.SQ_BITACORA_PAE TO WWW_SIGESA, WWW_TEUNA;
GRANT SELECT ON "PPI"."BITACORA_PAE" TO "ANALISTA", "ANALISTA_SIGESA";

Nota adicional mapeo

ARR
// ***************************************
    // MAPEO: ACTIVIDAD_RESPUESTA_RIESGO->BITACORA_ARR
    // ***************************************
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
    @JoinColumn(name = "ACTIVIDAD_RIESGO", nullable = false)
    private List<BitacoraARR> listaBitacoraARR;
    
    
    
Bitacora
@ManyToOne(fetch = FetchType.LAZY, optional = false)
    @JoinColumn(name = "ACTIVIDAD_RIESGO",
            referencedColumnName = "ID_ACTIVIDAD_RESPUESTA_RIESGO",
            nullable = false,
            insertable = false,
            updatable = false)
    private ActividadRespuestaRiesgo actividadRespuestaRiesgo;

BitacoraPAE.java

/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppe.domain;



/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;
import cr.ac.una.cgi.sdkuna.domain.Usuario;
import cr.ac.una.cgi.sdkuna.generic.BaseEntity;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++                BD           ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import javax.persistence.AttributeOverride;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;




// *********************************************************************
// Para hacer mapeos
// *********************************************************************
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;





/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import java.util.Date;





/**********************************************************************/
/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/

/**
 * Entity para la administración de la entidad {@link BitacoraPAE}
 *
 * @author: Gustavo Matamoros González
 * @fechaCreacion:       25/10/2022
 * @fechaModificacion:   25/10/2022
 * @Version: 1.0.0
 */



/**********************************************************************/
/**********************************************************************/
/*********************    CONFIGURACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
@Entity
@Table(name = "BITACORA_PAE")
@AttributeOverride(name = "id", column
        = @Column(name = "ID_BITACORA_PAE"))
@SequenceGenerator(name = "sequence", sequenceName = "SQ_BITACORA_PAE", allocationSize = 1)



/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE CLASE  *****************************/
/**********************************************************************/
/**********************************************************************/
public class BitacoraPAE extends BaseEntity<Usuario, CampoConfigurable> {

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*+++++++++++++      MAPEO: DEFINICIÓN      ++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

    // ***************************************
    // MAPEO: BitacoraPAE->PlanAporteEstrategico
    // ***************************************
    @ManyToOne
    @JoinColumn(name = "PLAN_APORTE_ESTRATEGICO")
    private PlanAporteEstrategico planAporteEstrategico;

    // ***************************************
    // MAPEO: BitacoraPAE->EstadoFormulacionPAE
    // ***************************************
    @ManyToOne
    @JoinColumn(name = "ESTADO_FORMULACION_PAE")
    private EstadoFormulacionPAE estadoFormulacionPAE;

    // ***************************************
    // MAPEO: BitacoraPAE->Usuario
    // ***************************************
    @ManyToOne
    @JoinColumn(name = "USUARIO")
    private Usuario usuario;


    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*+++++++++++++          MAPEO: GET/SET        +++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    
    // ***************************************
    // MAPEO: BitacoraPAE->PlanAporteEstrategico
    // ***************************************
    public PlanAporteEstrategico getPlanAporteEstrategico() {
        return planAporteEstrategico;
    }

    public void setPlanAporteEstrategico(PlanAporteEstrategico planAporteEstrategico) {
        this.planAporteEstrategico = planAporteEstrategico;
    }

    // ***************************************
    // MAPEO: BitacoraPAE->EstadoFormulacionPAE
    // ***************************************
    public EstadoFormulacionPAE getEstadoFormulacionPAE() {
        return estadoFormulacionPAE;
    }

    public void setEstadoFormulacionPAE(EstadoFormulacionPAE estadoFormulacionPAE) {
        this.estadoFormulacionPAE = estadoFormulacionPAE;
    }

    // ***************************************
    // MAPEO: BitacoraPAE->Usuario
    // ***************************************
    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }


    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*+++++++++++++      CAMPOS: DEFINICIÓN     ++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

    // ***************************************
    // CAMPO: FECHA
    // ***************************************
    @Column(name = "FECHA")
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date fecha;

    

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*+++++++++++++      CAMPOS:  GET/SET       ++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

    // ***************************************
    // CAMPO: NOMBRE
    // ***************************************
    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }
   
}
/**********************************************************************/
/**********************************************************************/
/**************** FIN DEFINICIÓN DE CLASE  ****************************/
/**********************************************************************/
/**********************************************************************/

BitacoraPAERepository.java

/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppe.repository;


/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.generic.GenericRepository;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sigesa.ppi.ppe.domain.BitacoraPAE;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import org.springframework.stereotype.Repository;





/**********************************************************************/
/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
/**
 * Repository para la administración de la entidad {@link BitacoraPAE}
 *
 * @author Gustavo Matamoros González
 * @fechaCreacion: 25/10/2022
 * @fechaModificacion: 25/10/2022
 * @Version: 1.0.0
 */


/**********************************************************************/
/**********************************************************************/
/*********************    CONFIGURACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
@Repository


/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE INTERFACE   ************************/
/**********************************************************************/
/**********************************************************************/
public interface BitacoraPAERepository extends GenericRepository<BitacoraPAE> {

}
/**********************************************************************/
/**********************************************************************/
/**********     FIN DEFINICIÓN DE INTERFACE     ***********************/
/**********************************************************************/
/**********************************************************************/

BitacoraPAEService.java

/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppe.service;


/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/



/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.api.service.EntityService;

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sigesa.ppi.ppe.domain.BitacoraPAE;


/**********************************************************************/
/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
/**
 * Interface para la administración de la entidad {@link BitacoraPAE}
 *
 * @author Gustavo Matamoros González
 * @fechaCreacion: 25/10/2022
 * @fechaModificacion: 25/10/2022
 * @Version: 1.0.0.
 */


/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE INTERFACE   ************************/
/**********************************************************************/
/**********************************************************************/
public interface BitacoraPAEService extends EntityService<BitacoraPAE> {

}
/**********************************************************************/
/**********************************************************************/
/**********     FIN DEFINICIÓN DE INTERFACE     ***********************/
/**********************************************************************/
/**********************************************************************/

BitacoraPAEServiceImpl.java

/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppe.service;

/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;



/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sigesa.ppi.ppe.domain.BitacoraPAE;
import cr.ac.una.cgi.sigesa.ppi.ppe.repository.BitacoraPAERepository;

/**********************************************************************/
/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
/**
 * Clase que implementa el servicio {@link BitacoraPAEService} para la entidad
 * {@link BitacoraPAE}
 *
 * @author: Gustavo Matamoros González
 * @fechaCreacion: 25/10/2022
 * @fechaModificacion: 25/10/2022
 * @version: 1.0.0
 */


/**********************************************************************/
/**********************************************************************/
/*********************    CONFIGURACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/

@Service
@Transactional

/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE CLASE  *****************************/
/**********************************************************************/
/**********************************************************************/
public class BitacoraPAEServiceImpl extends EntityServiceImpl<BitacoraPAE, BitacoraPAERepository> implements BitacoraPAEService {

}
/**********************************************************************/
/**********************************************************************/
/***************      FIN DEFINICIÓN DE CLASE   ***********************/
/**********************************************************************/
/**********************************************************************/

PlanAporteEstrategicoServiceImpl.java

  • Todo el proceso anterior de la creación de una bitacora es para poder registrar en la BD e n la tabla BITACORA_PAE, los cambios de estados que se pueden dar en PlanAporteEstrategicoServi ceImpl.java
  • Por esto abrimos el archivo y lo vamos a modificar para:
    • Insertar un nuevo registro cada vez que se modifica el estado (NOTA: estas modificaciones específicas se dan en un FLUJO)
    • Y sobreescritura del método de «actualizarEstado» de FLUJOS ya que es esto lo quer lo dispara
  • Agregamos los import necesarios
// ****************************************
// Proceso: BitacoraPAE
// ****************************************
import cr.ac.una.cgi.sigesa.ppi.ppe.domain.BitacoraPAE;
import cr.ac.una.cgi.sigesa.ppi.ppe.domain.EstadoFormulacionPAE;
import cr.ac.una.cgi.sdkuna.service.UsuarioService;
  • Agregamos los AutoWired
// ****************************************
    // Proceso: BitacoraPAE
    // ****************************************
    @Autowired
    BitacoraPAEService bitacoraPAEService;
    
    @Autowired
    EstadoFormulacionPAEService estadoFormulacionPAEService;

    @Autowired
    UsuarioService usuarioService;
  • El método para insertar registros en la bitacora
/**
     * *
     *
     * Método que inserta registros en la tabla BITACORA_PAE
     * 
     *
     * @param planAporteEstrategico: Plan Aporte Estrategico
     * @param nextStatus: Siguiente estado
     * @param firstSave: Si es la primera vez que se almacena (estadoInicial)
     * @throws Exception
     * @author Gustavo Matamoros González
     * @since 25/10/22
     */
    private BitacoraPAE crearRegistroBitacoraPAE(PlanAporteEstrategico planAporteEstrategico, Long nextStatus, boolean firstSave) {

        EstadoFormulacionPAE estadoFormulacionPAE;

        if (firstSave) {
            estadoFormulacionPAE = estadoFormulacionPAEService.obtenerEstadoBorrador();
        } else {
            estadoFormulacionPAE = estadoFormulacionPAEService.findOne(nextStatus);
        }

        BitacoraPAE bitacoraPAE = new BitacoraPAE();
        bitacoraPAE.setPlanAporteEstrategico(planAporteEstrategico);
        bitacoraPAE.setEstadoFormulacionPAE(estadoFormulacionPAE);
        bitacoraPAE.setFecha(new Date());
        bitacoraPAE.setUsuario(usuarioService.getUsuarioActual());

        return bitacoraPAEService.save(bitacoraPAE);
    }
  • Y el método para la sobreescritura de «actualizaEstado» de flujos
/**
     * *
     *
     * Método de sobreescritura para actualizarEstado, para reportar los cambios de estado de flujos en BITACORA_PAE
     * 
     * 
     *
     * @param entity: Plan Aporte Estrategico
     * @param columnName: nombre de la columna de BD de Bitacora
     * @param serviceClass: ServiceClass
     * @param nextStatus: Estado a registrar
     * @param columnaTablaEstados: nombre de la columna de BD de Estados
     * @throws Exception
     * @author Gustavo Matamoros González
     * @since 25/10/22
     */
    @Override
    public PlanAporteEstrategico actualizarEstado(
                PlanAporteEstrategico entity, 
                String columnName, 
                String serviceClass, 
                Long nextStatus, 
                String columnaTablaEstados
                ) {
  
        this.crearRegistroBitacoraPAE(entity, nextStatus, false);
        return super.actualizarEstado(entity, columnName, serviceClass, nextStatus, columnaTablaEstados);
    }
  • NOTA:
    • Cuando se crea un nuevo registro el método se debe llmar con
this.crearRegistroBitacora(planOperativo, 0L, true);
  • Y en el actualiza se debe llamar con
this.crearRegistroBitacora(entity, nextStatus, false);
  • Ahora debemos ingresar a SIGESA
  • Agregar un nuevo Plan Aporte Estrategico y probar que cada vez que se modifica un estado sea almacenado en la BD
SELECT
    * FROM
    PPI.BITACORA_PAE;

Creación de segunda bitacora (BITACORA_PXE)

  • Esta sección solo esta para alamcenar los Insert de la segunda bitacora por hacer y así almacernar los INSERT’s
Insert into 
ESTADO_FORMULACION_PXE (
            ID_ESTADO_FORMULACION_PXE,
            NOMBRE,ACTIVO,
            FECHA_CREACION,
            USUARIO_CREACION,
            FECHA_MODIFICACION,
            USUARIO_MODIFICACION,
            CAMPO_CONFIGURABLE,
            VERSION) 
values (
            '2',
            'Borrador',
            '1',
            SYSDATE,
            '78176',
            SYSDATE,
            '781761',
            null,
            '0'
);

Insert into 
ESTADO_FORMULACION_PXE (
            ID_ESTADO_FORMULACION_PXE,
            NOMBRE,ACTIVO,
            FECHA_CREACION,
            USUARIO_CREACION,
            FECHA_MODIFICACION,
            USUARIO_MODIFICACION,
            CAMPO_CONFIGURABLE,
            VERSION) 
values (
            '3',
            'Completado',
            '1',
            SYSDATE,
            '78176',
            SYSDATE,
            '781761',
            null,
            '0'
);

Insert into 
ESTADO_FORMULACION_PXE (
            ID_ESTADO_FORMULACION_PXE,
            NOMBRE,ACTIVO,
            FECHA_CREACION,
            USUARIO_CREACION,
            FECHA_MODIFICACION,
            USUARIO_MODIFICACION,
            CAMPO_CONFIGURABLE,
            VERSION) 
values (
            '4',
            'Ratificado',
            '1',
            SYSDATE,
            '78176',
            SYSDATE,
            '781761',
            null,
            '0'
);
Insert into 
ESTADO_FORMULACION_PXE (
            ID_ESTADO_FORMULACION_PXE,
            NOMBRE,ACTIVO,
            FECHA_CREACION,
            USUARIO_CREACION,
            FECHA_MODIFICACION,
            USUARIO_MODIFICACION,
            CAMPO_CONFIGURABLE,
            VERSION) 
values (
            '5',
            'Aprobado',
            '1',
            SYSDATE,
            '78176',
            SYSDATE,
            '781761',
            null,
            '0'
);

Insert into 
ESTADO_FORMULACION_PXE (
            ID_ESTADO_FORMULACION_PXE,
            NOMBRE,ACTIVO,
            FECHA_CREACION,
            USUARIO_CREACION,
            FECHA_MODIFICACION,
            USUARIO_MODIFICACION,
            CAMPO_CONFIGURABLE,
            VERSION) 
values (
            '6',
            'Anulado',
            '1',
            SYSDATE,
            '78176',
            SYSDATE,
            '781761',
            null,
            '0'
);

-- Ejecutar 6 veces
SELECT SQ_ESTADO_FORMULACION_PXE.nextval  from dual; 
  • Tabla segunda bitacora
/* 
 * Copyright (C) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 * 
 * Author:  Gustavo Matamoros González
 * Created: 26/10/2022
 */

/********************************************************/
/********************************************************/
/* CREACIÓN DE TABLA                                    */
/********************************************************/
/********************************************************/
CREATE TABLE "PPI"."BITACORA_PXE"
(
    /********************************************************/
    /* CAMPOS: ID                                           */
    /********************************************************/
    "ID_BITACORA_PXE"            number (19,0)       NOT NULL ENABLE,
    
    
    
    /********************************************************/
    /* CAMPOS: FK                                           */
    /********************************************************/
    "PLAN_ACCION_ESTRATEGICA"    number (19,0)       NOT NULL ENABLE,
    "ESTADO_FORMULACION_PXE"     number (19,0)       NOT NULL ENABLE,    
    "USUARIO"                    number (19,0)       NOT NULL ENABLE,        
    
    
    
    /********************************************************/
    /* CAMPOS: GENERALES                                    */
    /********************************************************/
    "FECHA"                      DATE                NOT NULL ENABLE,


    
    /********************************************************/
    /* CAMPOS: FRAMEWORK SDK-UNA                            */
    /********************************************************/
    "FECHA_CREACION"        DATE                NOT NULL ENABLE,
    "USUARIO_CREACION"      NUMBER(19,0)        NOT NULL ENABLE,
    "FECHA_MODIFICACION"    DATE                NOT NULL ENABLE,
    "USUARIO_MODIFICACION"  NUMBER(19,0)        NOT NULL ENABLE,
    "VERSION"               NUMBER(19,0),
    "CAMPO_CONFIGURABLE"    NUMBER(19,0),
    
    
    
    
    /********************************************************/
    /* LLAVE: PRIMARIA                                      */
    /********************************************************/
    CONSTRAINT "PK_BITACORA_PXE" PRIMARY KEY("ID_BITACORA_PXE"),
    
    
    
    
    
    /********************************************************/
    /* LLAVE: FORANEAS                                      */
    /********************************************************/
    --BITACORA_PXE->PLAN_ACCION_ESTRATEGICA
    CONSTRAINT FK_BIT_PXE_PAE FOREIGN KEY(PLAN_ACCION_ESTRATEGICA)          REFERENCES PPI.PLAN_ACCION_ESTRATEGICA(ID_PLAN_ACCION_ESTRATEGICA),

    --BITACORA_PXE->ESTADO_FORMULACION_PXE
    CONSTRAINT FK_BIT_PXE_EST_FOR_PXE FOREIGN KEY(ESTADO_FORMULACION_PXE)   REFERENCES PPI.ESTADO_FORMULACION_PXE(ID_ESTADO_FORMULACION_PXE),
    
     --BITACORA_PXE->USUARIO
    CONSTRAINT FK_BIT_PXE_USU FOREIGN KEY(USUARIO)                          REFERENCES SAS.USUARIO (ID_USUARIO),
    
    
    
    
    /********************************************************/
    /* LLAVE: FORANEAS SIGESA                               */
    /********************************************************/
    CONSTRAINT FK_BIT_PXE_USU_CRE FOREIGN KEY(USUARIO_CREACION)        REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_BIT_PXE_USU_MOD FOREIGN KEY(USUARIO_MODIFICACION)    REFERENCES SAS.USUARIO(ID_USUARIO),
    CONSTRAINT FK_BIT_PXE_CAM_CON FOREIGN KEY(CAMPO_CONFIGURABLE)      REFERENCES SAS.CAMPO_CONFIGURABLE(ID_CAMPO_CONFIGURABLE)
    
    
);

/********************************************************/
/********************************************************/
/* COMENTARIOS                                          */
/********************************************************/
/********************************************************/
COMMENT ON COLUMN "PPI"."BITACORA_PXE"."PLAN_ACCION_ESTRATEGICA"            IS 'Campo que relaciona la tabla BITACORA_PXE con la tabla PLAN_ACCION_ESTRATEGICA';
COMMENT ON COLUMN "PPI"."BITACORA_PXE"."ESTADO_FORMULACION_PXE"             IS 'Campo que relaciona la tabla BITACORA_PXE con la tabla ESTADO_FORMULACION_PXE';
COMMENT ON COLUMN "PPI"."BITACORA_PXE"."USUARIO"                            IS 'Campo que relaciona la tabla BITACORA_PXE con la tabla USUARIO';
COMMENT ON COLUMN "PPI"."BITACORA_PXE"."FECHA"                              IS 'Fecha y hora en que se realiza la transacción';





/********************************************************/
/********************************************************/
/* SECUENCIA                                            */
/********************************************************/
/********************************************************/
CREATE SEQUENCE PPI.SQ_BITACORA_PXE START WITH 1 INCREMENT BY 1 MINVALUE 1 NOCACHE  NOCYCLE  NOORDER;




/********************************************************/
/********************************************************/
/* SINONIMOS                                            */
/********************************************************/
/********************************************************/
CREATE PUBLIC SYNONYM BITACORA_PXE FOR "PPI"."BITACORA_PXE";
CREATE PUBLIC SYNONYM SQ_BITACORA_PXE FOR PPI.SQ_BITACORA_PXE;




/********************************************************/
/********************************************************/
/* VERIFICACIÓN  EXISTENCIA TABLA                       */
/********************************************************/
/********************************************************/
SELECT * FROM BITACORA_PXE;




/********************************************************/
/********************************************************/
/* ELIMINAR TABLA                                       */
/********************************************************/
/********************************************************/
DROP SEQUENCE "PPI".SQ_BITACORA_PXE;
DROP PUBLIC SYNONYM BITACORA_PXE;
DROP PUBLIC SYNONYM SQ_BITACORA_PXE;
DROP TABLE "PPI".BITACORA_PXE;



/********************************************************/
/********************************************************/
/* GRANT PERMISOS SOBRE LA TABLA                        */
/********************************************************/
/********************************************************/
GRANT SELECT, DELETE, UPDATE, INSERT ON PPI.BITACORA_PXE TO WWW_SIGESA, WWW_TEUNA;
GRANT SELECT, ALTER ON PPI.SQ_BITACORA_PXE TO WWW_SIGESA, WWW_TEUNA;
GRANT SELECT ON "PPI"."BITACORA_PXE" TO "ANALISTA", "ANALISTA_SIGESA";

BitacoraPXE.java

/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppe.domain;



/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.domain.CampoConfigurable;
import cr.ac.una.cgi.sdkuna.domain.Usuario;
import cr.ac.una.cgi.sdkuna.generic.BaseEntity;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++                BD           ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import javax.persistence.AttributeOverride;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;




// *********************************************************************
// Para hacer mapeos
// *********************************************************************
import javax.persistence.ManyToOne;
import javax.persistence.JoinColumn;





/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++      TIPOS DE DATOS         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import java.util.Date;





/**********************************************************************/
/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/

/**
 * Entity para la administración de la entidad {@link BitacoraPXE}
 *
 * @author: Gustavo Matamoros González
 * @fechaCreacion:       26/10/2022
 * @fechaModificacion:   26/10/2022
 * @Version: 1.0.0
 */



/**********************************************************************/
/**********************************************************************/
/*********************    CONFIGURACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
@Entity
@Table(name = "BITACORA_PXE")
@AttributeOverride(name = "id", column
        = @Column(name = "ID_BITACORA_PXE"))
@SequenceGenerator(name = "sequence", sequenceName = "SQ_BITACORA_PXE", allocationSize = 1)



/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE CLASE  *****************************/
/**********************************************************************/
/**********************************************************************/
public class BitacoraPXE extends BaseEntity<Usuario, CampoConfigurable> {

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*+++++++++++++      MAPEO: DEFINICIÓN      ++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

    // ***************************************
    // MAPEO: BitacoraPXE->PlanAccionEstrategica
    // ***************************************
    @ManyToOne
    @JoinColumn(name = "PLAN_ACCION_ESTRATEGICA")
    private PlanAccionEstrategica planAccionEstrategica;

    // ***************************************
    // MAPEO: BitacoraPXE->EstadoFormulacionPXE
    // ***************************************
    @ManyToOne
    @JoinColumn(name = "ESTADO_FORMULACION_PXE")
    private EstadoFormulacionPXE estadoFormulacionPXE;

    // ***************************************
    // MAPEO: BitacoraPXE->Usuario
    // ***************************************
    @ManyToOne
    @JoinColumn(name = "USUARIO")
    private Usuario usuario;


    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*+++++++++++++          MAPEO: GET/SET        +++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    
    // ***************************************
    // MAPEO: BitacoraPXE->PlanAccionEstrategica
    // ***************************************
    public PlanAccionEstrategica getPlanAccionEstrategica() {
        return planAccionEstrategica;
    }

    public void setPlanAccionEstrategica(PlanAccionEstrategica planAccionEstrategica) {
        this.planAccionEstrategica = planAccionEstrategica;
    }

    // ***************************************
    // MAPEO: BitacoraPXE->EstadoFormulacionPXE
    // ***************************************
    public EstadoFormulacionPXE getEstadoFormulacionPXE() {
        return estadoFormulacionPXE;
    }

    public void setEstadoFormulacionPXE(EstadoFormulacionPXE estadoFormulacionPXE) {
        this.estadoFormulacionPXE = estadoFormulacionPXE;
    }

    // ***************************************
    // MAPEO: BitacoraPXE->Usuario
    // ***************************************
    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }


    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*+++++++++++++      CAMPOS: DEFINICIÓN     ++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

    // ***************************************
    // CAMPO: FECHA
    // ***************************************
    @Column(name = "FECHA")
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date fecha;

    

    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*+++++++++++++      CAMPOS:  GET/SET       ++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
    /*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

    // ***************************************
    // CAMPO: NOMBRE
    // ***************************************
    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }
   
}
/**********************************************************************/
/**********************************************************************/
/**************** FIN DEFINICIÓN DE CLASE  ****************************/
/**********************************************************************/
/**********************************************************************/

BitacoraPXERepository.java

/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppe.repository;


/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.generic.GenericRepository;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sigesa.ppi.ppe.domain.BitacoraPXE;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import org.springframework.stereotype.Repository;





/**********************************************************************/
/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
/**
 * Repository para la administración de la entidad {@link BitacoraPXE}
 *
 * @author Gustavo Matamoros González
 * @fechaCreacion: 26/10/2022
 * @fechaModificacion: 25/10/2022
 * @Version: 1.0.0
 */


/**********************************************************************/
/**********************************************************************/
/*********************    CONFIGURACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
@Repository


/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE INTERFACE   ************************/
/**********************************************************************/
/**********************************************************************/
public interface BitacoraPXERepository extends GenericRepository<BitacoraPXE> {

}
/**********************************************************************/
/**********************************************************************/
/**********     FIN DEFINICIÓN DE INTERFACE     ***********************/
/**********************************************************************/
/**********************************************************************/

BitacoraPXEService.java

/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppe.service;


/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/



/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.api.service.EntityService;

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             DOMAIN          ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sigesa.ppi.ppe.domain.BitacoraPXE;


/**********************************************************************/
/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
/**
 * Interface para la administración de la entidad {@link BitacoraPXE}
 *
 * @author Gustavo Matamoros González
 * @fechaCreacion: 26/10/2022
 * @fechaModificacion: 26/10/2022
 * @Version: 1.0.0.
 */


/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE INTERFACE   ************************/
/**********************************************************************/
/**********************************************************************/
public interface BitacoraPXEService extends EntityService<BitacoraPXE> {

}
/**********************************************************************/
/**********************************************************************/
/**********     FIN DEFINICIÓN DE INTERFACE     ***********************/
/**********************************************************************/
/**********************************************************************/

BitacoraPXEServiceImpl.java

/*
 * Copyright (c) 2022.
 *
 * Centro de Gestion Informatica
 * Direccion de Tecnologias de la Informacion y Comunicacion
 * Universidad Nacional - Costa Rica
 * http://www.una.ac.cr
 *
 */

/**********************************************************************/
/**********************************************************************/
/*********************       PACKAGE     ******************************/
/**********************************************************************/
/**********************************************************************/
package cr.ac.una.cgi.sigesa.ppi.ppe.service;

/**********************************************************************/
/**********************************************************************/
/*********************       IMPORT'S    ******************************/
/**********************************************************************/
/**********************************************************************/


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++             SDK-UNA         ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sdkuna.api.service.EntityServiceImpl;



/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*+++++++++++++       SPRING-BOOT           ++++++++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;


/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*++++++++++++         DOMAIN Y REPOSITRY         ++++++++++++++++++++*/
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
import cr.ac.una.cgi.sigesa.ppi.ppe.domain.BitacoraPXE;
import cr.ac.una.cgi.sigesa.ppi.ppe.repository.BitacoraPXERepository;

/**********************************************************************/
/**********************************************************************/
/*********************    DOCUMENTACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/
/**
 * Clase que implementa el servicio {@link BitacoraPXEService} para la entidad
 * {@link BitacoraPXE}
 *
 * @author: Gustavo Matamoros González
 * @fechaCreacion: 26/10/2022
 * @fechaModificacion: 26/10/2022
 * @version: 1.0.0
 */


/**********************************************************************/
/**********************************************************************/
/*********************    CONFIGURACIÓN  ******************************/
/**********************************************************************/
/**********************************************************************/

@Service
@Transactional

/**********************************************************************/
/**********************************************************************/
/****************    DEFINICIÓN DE CLASE  *****************************/
/**********************************************************************/
/**********************************************************************/
public class BitacoraPXEServiceImpl extends EntityServiceImpl<BitacoraPXE, BitacoraPXERepository> implements BitacoraPXEService {

}
/**********************************************************************/
/**********************************************************************/
/***************      FIN DEFINICIÓN DE CLASE   ***********************/
/**********************************************************************/
/**********************************************************************/