EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

审计跟踪模块

eXpressApp框架为WinForms和ASP.NET应用程序提供审计跟踪系统。该系统旨在为您提供有关对应用程序的持久对象进行的更改的信息。例如,您可以检索有关更改种类(创建,更改对象等),更改对象,对象,先前和新属性值等的信息。在对象保存到数据存储的两个连续事件之间记录了更改。要在您的应用程序中使用此系统,应使用代表它的Audit Trail模块。本主题说明了跟踪对象更改的机制,并提供了自定义它们的方法。

注意
  • 当前,我们在此模块中不提供对实体框架(EF)的内置支持,因为其实现在很大程度上取决于我们的XPO ORM,并且在这方面,我们没有足够的客户请求。如果您在XAF应用程序中使用EF进行数据访问并需要类似的功能,请随时与我们联系并描述您的业务需求,以便我们为您提供替代解决方案。通常,您可以为Entity Framework集成任何自定义或标准解决方案,将其实施以解决非XAF应用程序中的相同要求。我们还将在这方面继续监视用户需求,并且将来可能会审查我们当前的决定。

  • 我们设计了此模块,以在一个事务中管理多达一百个经审计的更改。保存成千上万的审核数据记录将花费大量时间。我们建议您在应用程序中使用此模块之前,研究此性能特异性是否重要。

AuditTrailModule由表示DevExpress.ExpressApp.AuditTrail.v 19.2的.dll组件。要在应用程序中使用该模块,请分别通过Application DesignerModule Designer将其添加到您的应用程序项目或一个应用程序模块中。此外,请检查您的应用程序中是否引用了DevExpress.Persistent.Base.v 19.2 .dll程序集,因为该程序集包含Audit Trail模块使用的XAF无关服务。

重点

在引用了上面列出的必要程序集之后,将审核应用程序中的所有持久对象。此外,它们的简单,引用和集合属性(它们是持久性的)也将被审核。对这些对象及其属性所做的更改将记录在数据库中。

下表列出了“审核跟踪”模块记录的更改:

改变 描述
创建对象 已审计的对象已创建。
InitialValueAssigned 在第一次保存之前,已将初始值分配给审核的对象。
ObjectChanged 被审核对象的属性已更改。
对象已删除 被审核的对象已被删除。
已添加到收藏集 已审核的对象已添加到集合中。
RemovedFromCollection 已审计的对象已从集合中删除。
CollectionObjectChanged 来自已审核对象的对象已更改。
AggregatedObjectChanged 由审核对象聚合的对象已更改。
自订资料 自定义数据已添加到审核日志中。

在代码中,更改由AuditDataItem类表示。记录此类的属性。默认情况下,它们由AuditDataStore对象保存到数据库中。该对象创建一个AuditDataItemPersistent持久对象并将其保存到数据库。若要将AuditDataItem对象表示的更改保存在另一个存储中,请从AuditDataStore类继承一个自定义类并覆盖Save方法(请参阅自定义Audit Trail系统主题)。

要分析审核日志,您需要知道哪些数据库表代表该日志。使用“审核跟踪”模块,将以下表添加到数据库中:

  • AuditDataItemPersistent

    表示存储AuditDataItemPersistent对象的表。每次进行上面列出的更改之一时,都会向该表中添加一条新记录。该表的AuditedObject字段包含对AuditObjectWeakReference表中相应记录的引用。该的OLDobjectNewObject的字段包含在相应的记录的引用XPWeekReference表。这些字段的字符串表示形式分别存储在OldValueNewValue字段中。

    注意
    • AuditedObject是当删除操作零延迟删除选项是审计类型禁用。使用DeferredDeletionAttribute启用它。
    • 对于集合修改项(AddedToCollection,RemoveedFromCollection,CollectionObjectChanged,AggregatedObjectChanged),对修改后的持久对象的引用以及对象的字符串表示形式始终存储在OldObject / OldValue字段中。
    • 安全系统创建不能访问或更改审计数据记录的默认用户。要允许用户访问这些记录,请为AuditDataItemPersistentAuditedObjectWeakReferenceXPWeakReference授予类型权限。
  • XPWeak参考

    包含有关已更改对象的数据。对象标识符存储为字符串。

  • AuditedObjectWeakReference

    包含有关已更改的对象和参与更改的对象的数据。对象标识符存储在GuidIdIntId字段中,具体取决于它们是存储为Guid还是整​​数值。因此,与通过XPWeakReference表相比,AuditedObjectWeakReference表代表了一种更方便的访问对象数据的方法

如果这些更改是在未经审核的会话中执行的,则可能会丢失某些对象更改。如果您手动创建一个Session或UnitOfWork,则会发生这种情况。为了避免这种故障,当需要创建自己的Session或UnitOfWork时,请使用Application.CreateObjectSpace方法:

IObjectSpace objectSpace = Application.CreateObjectSpace(typeof(MyBusinessClass));

不要写如下语句:

Session session = new Session(...);
相关文章

转载保留此链接,注明出处