Historial de Revisiones
Last updated
Was this helpful?
Last updated
Was this helpful?
El historial de revisiones nos permite almacenar el contenido de un documento en otra colección dentro de la misma base de datos o idealmente en otra base de datos.
Es util por ejemplo si deseamos conocer el contenido de un documento que fue eliminado, e identificar la fecha y el usuario que lo realizó, o almacenar un documento antes de ser actualizado. Existen infinidad de situaciones, en nuestro caso JMoordb ofrece una implementación mediante RevisionHistory, RevisionHistoryServices
El usuario debe crear en su proyecto RevisionHistoryFacade e indicar la base de datos y colección donde se almacenarán los documentos.
En el Controller
Agregar el Facade y el Services.
En el método por ejemplo delete(), invocamos getRevisionHistory
Parámetro
Descripción
1
El valor del campo llave del documento
2
Username del usuario que realiza la operación
3
La operación realizada por ejemplo(delete, update,etc)
4
El nombre de la colección donde se almacena el documento
5
Invocar el método toDocument() del Facade para convertir el Entity a un JSon.
Ejemplo de uso
En el Facade indicamos la base de datos y colección donde se almacenarán los datos
Si eliminamos el documento, el contenido sera almacenado en la colección que definimos, y nos funcionara con fines de auditoria. Seria ideal que sea una base de datos diferente a la de producción.
En muchas ocasiones necesitamos realizar operaciones de audito para determinar los cambios realizados por un determinado usuario a un documento.
Mediante revisionhistory , podemos almacenar el valor del entity anterior y guardar otro documento con el documento con todos los cambios de esta manera podemos auditar fácilmente que cambios fueron realizados y cual fue el usuario que los ejecuto.
Ejemplo:
Tenemos un documento sobre el que realizamos actualizaciones.
En revisionhistory, se almacena el documento anterior en description colocamos un mensaje descriptivo como beforeudate, que contendrá el documento con la información original y el siguiente documento en description con update podemos identificarlo como el actualizado y el contenido se almacena con los nuevos cambios. De esta manera en el ejemplo podemos observar que el documento bodega con id: bodega 3 , se modifico el teléfono y la dirección.
Desde consola
db.revisionhistory.find().pretty()
Creamos un documento nuevo mediante revisionHistoryFacade.save( revisionHistoryServices.getRevisionHistory()), del entity que contiene los valores iniciales en el ejemplo bodegaSelected, y luego creamos un nuevo documento con el entity con los datos actualizados.
método edit()