/*
* 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";
/*
* 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
/**
* *
*
* 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
/*
* 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";