2008-09-29 11 views
9

que hay que implementar un registro de auditoría para Agregar/Editar/Eliminar en mis objetos, estoy usando un ORM (XPO) para definir mis objetos etc. He implementado un objeto pista de auditoría que se desencadena en¿Cómo se implementa el seguimiento de auditoría para sus objetos (Programación)?

  1. OnSaving
  2. OnDeleting

del objeto base, y almacenar los cambios en Audit-AuditTrail (Mast-Det) de mesa, para los cambios de campo. etc. usando algunos servicios de método llamados.

¿Cómo implementa la pista de auditoría en su código OOP? Por favor comparte tus ideas? ¿Algún patrón, etc.? Las mejores prácticas, etc. Otra cosa es cómo desactivar la auditoría cuando se ejecuta la prueba unitaria, ya que no necesito auditarlos sino que el objeto base tiene el código.

cambios a objeto (editar/añadir/DEL) y en qué área necesitan cambios a auditar

Respuesta

0

Sé que esto no responde a su pregunta, pero para que conste, que prefieren manejar este tipo de lógica de auditoría en la base de datos.

7

Los activadores de base de datos son la forma preferida de acceder aquí, si es posible.

Sin embargo, recientemente tuve que hacer esto en el código del lado del cliente y terminé escribiendo una clase que creó una copia profunda (valor) del objeto cuando se abrió para editar, comparó los dos objetos en el momento de guardar (usando ToString() solamente) y escribió cualquier cambio en una tabla de auditoría.

Editar: Tenía un atributo [Audit] en cada propiedad que quería considerar auditable y usé la reflexión para encontrarlas, lo que hace que el método no sea específico para los objetos auditados.

+2

He votado esta respuesta, pero una cosa a tener en cuenta cuando se utilizan desencadenadores de base de datos es corchetes de transacción. En ocasiones, desea auditar un evento incluso cuando se produce un error y la transacción se retrotrae. – Andrew

1

Vengo más del lado SW que el lado DB, si crea un conjunto de DAO (objetos de acceso a datos) que utiliza para su interacción con la base de datos. Luego insertaba la funcionalidad de auditoría en las funciones respectivas en los DAO que necesitan ser rastreadas.

La solución trigger es también factible, depende de dónde le gusta poner su funcionalidad, en el PP o en el código

Hay una gran cantidad de ORM (mapeo objeto-relacional) herramientas que hay que crean la Capa de DAO para ti.

3

No sé si encajará a la perfección con su ORM, pero utilicé el diseño de base de datos Point-in-Time para una aplicación ERP y realmente lo recomiendo. Obtendrá automáticamente Historial y Auditoría de esta arquitectura, así como otros beneficios.

+0

Estoy tratando con la aplicación Multitenant, donde todos los registros de arrendatarios se almacenarán en una base de datos única con TenantId. Si uso PTA, terminaré con muchísimas filas en la base de datos, especialmente para la actualización :( –

1

Hemos implementado una solución similar, utilizando AOP (implementación de aspectJ). Se puede capturar este punto en particular y se pueden realizar operaciones específicas.

Esto se puede enchufar y enchufar cuando queramos.

Si realmente quieres hacerlo en la capa de la aplicación, sugeriría esto.

creo que sirve ..

+0

¿Tiene alguna muestra o enlace? – DanielV

0

He hecho esto en Hibernate (otro ORM) usando un interceptor de la reunión. De esta forma, el código de auditoría es independiente de su código.

Cuestiones relacionadas