Important 重要
The Audit Trail module is not supported by the Entity Framework ORM in the current version of XAF. If you are using EF, please skip this lesson and go to the next one.

当前版本的 XAF 中的实体框架 ORM 不支持审核跟踪模块。如果您使用的是 EF,请跳过本课程并转到下一课。

In this lesson, you will learn how to audit and analyze the changes that are made to business objects while running the application. For this purpose, the Audit Trail module will be added to the application. Changes made to the Contact object will be audited. Two techniques to analyze them will be used.

在本课中,您将学习如何审核和分析在运行应用程序时对业务对象所做的更改。为此,审核跟踪模块将添加到应用程序中。将审核对"联系人"对象所做的更改。将使用两种技术来分析它们。

Note 注意
Before proceeding, take a moment to review the Inherit from the Business Class Library Class (XPO) lesson.

在继续之前,请花点时间复习从商务舱库类 (XPO) 课程继承。

Audit Contact Objects

审核联系人对象

Add the AuditTrail module to your MySolution.Module project. For this purpose, find the Module.cs (Module.vb) file in the MySolution.Module project displayed in the Solution Explorer. Double-click this file to invoke the Module Designer. In the Toolbox, expand the DX.19.2: XAF Modules tab. Drag the AuditTrailModule item to the Designer's Required Modules section.

将审核跟踪模块添加到 MySolution.模块项目中。为此,在解决方案资源管理器中显示的 MySolution.模块项目中查找Module.cs(Module.vb)文件。双击此文件以调用模块设计器。在工具箱中,展开 DX.19.2:XAF 模块选项卡。将 AuditTrail 模块项目拖动到"设计器所需的模块"部分。

Now, all objects that are created in the application are audited. The Audit Trail System logs information on the change type (object was created, changed, etc.), who made this change, the object that was changed, the previous and new property values, etc. When an object is saved to the database, any changes between two sequential events are registered.

现在,将审核在应用程序中创建的所有对象。审核跟踪系统记录有关更改类型(对象已创建、更改等)、进行此更改的人员、已更改的对象、以前的属性值和新属性值等的信息。将对象保存到数据库时,将注册两个顺序事件之间的任何更改。

Analyze Audit Log in the Application

分析应用程序中的审核日志

Use the following approach to view object changes directly in the application.

使用以下方法直接在应用程序中查看对象更改。

  • Add a collection property to the Contact class. The collection's items will provide log information retrieved from the database.

  • 将集合属性添加到联系人类。集合项将提供从数据库中检索到的日志信息。

    [DefaultClassOptions]
    public class Contact : Person {
    //...
    private XPCollection<AuditDataItemPersistent> changeHistory;
    public XPCollection<AuditDataItemPersistent> ChangeHistory {
    get {
    if(changeHistory == null) {
    changeHistory = AuditedObjectWeakReference.GetAuditTrail(Session, this);
    }
    return changeHistory;
    }
    }
    }
  • Run the WinForms or ASP.NET application and invoke a Contact Detail View. Modify the Contact object to test the auditing capability, save the changes and click Refresh (). The Change History collection will contain information on the previous Contact object changes.

  • 运行 WinForms 或ASP.NET应用程序并调用联系人详细信息视图。修改"联系人"对象以测试审核功能,保存更改并单击"刷新(btn_refresh)。"更改历史记录"集合将包含有关以前的联系人对象更改的信息。

Note 注意
As you may remember, the Office property is declared in the Department class, not the Contact class. So, changes to the Office property made using the Contact Detail View are not displayed in the Contact's Change History. Instead, these changes appear in the corresponding Department object's Change History (if changes made to the Department objects are audited). You can acquire the audit log remotely using SQL queries to your database. See the Analyze the Audit Log topic.
您可能还记得,Office 属性在"部门"类中声明,而不是"联系人"类。因此,使用"联系人详细信息"视图对 Office 属性所做的更改不会显示在联系人的更改历史记录中。相反,这些更改将显示在相应的部门对象的更改历史记录中(如果对部门对象所做的更改被审核)。您可以使用对数据库的 SQL 查询远程获取审核日志。请参阅分析审核日志主题。

You can view the code demonstrated here in the Contact.cs (Contact.vb) file of the Main Demo installed with XAF. The MainDemo application is installed in %PUBLIC%\Documents\DevExpress Demos 19.2\Components\eXpressApp Framework\MainDemo by default. The ASP.NET version is available online at http://demos.devexpress.com/XAF/MainDemo/

您可以查看此处演示的带有 XAF 安装的主演示的 Contact.cs (Contact.vb) 文件中演示的代码。主演示应用程序安装在%PUBLIC%\Documents\DevExpress Demos 19.2\Components\eXpressApp Framework\MainDemo by default. The ASP.NET version is available online at http://demos.devexpress.com/XAF/MainDemo/

.

Audit Object Changes 审核对象更改的更多相关文章

  1. Role Object(角色对象)

    Role Object(角色对象) 索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Role Object 的示例实现. 意图 通过明确地附加角色对象到目标对象中,以使对象可以 ...

  2. Vue:对象更改检测注意事项

    还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除: var vm = new Vue({ data: { a: 1 } }) // `vm.a` 现在是响应式的 vm.b ...

  3. DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射

    写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉,但我觉得应该会很爽,博文后面再记录下用过的感受,这边就不多说. 阅读目录: 上一篇回顾 ...

  4. PLSQL_Oracle Object所有数据库对象类型汇总和简解(概念)

    Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE /* Style Definitions */ table.MsoNormalTable ...

  5. Value Object(值对象)如何使用 EF 进行正确映射

    DDD 领域驱动设计-Value Object(值对象)如何使用 EF 进行正确映射 写在前面 首先,这篇博文是用博客园新发布的 MarkDown编辑器 编写的,这也是我第一次使用,语法也不是很熟悉, ...

  6. JSON(JavaScript Object Notation, JS 对象标记)

    JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式.它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言 ...

  7. 小程序的picker的range 是一个 Object Array (对象数组)

    小程序的picker的range 是一个 Object Array (对象数组) 数据: array: [{'id':1,'name':'Android'},{'id':2,'name':'IOS'} ...

  8. ngx-bootstrap使用03 Alerts组件、利用Object.assign复制对象

    1 Alerts 该组件用于给用户操作提供反馈信息或者提供一些警告信息 2 用法 2.1 下载ngx-bootstrap依赖 参考博文:点击前往 2.2 在模块级别导入AlertModule模块 技巧 ...

  9. 组件的通信 :provide / inject 对象进入后,就等于不用props,然后内部对象,直接复制可以接受数组,属性不能直接复制,可以用Object.assgin覆盖对象,或者Vue的set 双向绑定数据

    组件的通信 :provide / inject 对象进入后,就等于不用props,然后内部对象,直接复制可以接受数组,属性不能直接复制,可以用Object.assgin覆盖对象,或者Vue的set 双 ...

随机推荐

  1. Python 中如何实现参数化测试?

    Python 中如何实现参数化测试? 之前,我曾转过一个单元测试框架系列的文章,里面介绍了 unittest.nose/nose2 与 pytest 这三个最受人欢迎的 Python 测试框架. 本文 ...

  2. 三角形列表前缀.html

    发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 发过火刮腹湔肠封官赐爵法规及法规及提供 ...

  3. RocketMq在SparkStreaming中的总结

    其实Rocketmq的给第三方的插件已经全了,如果大家有兴趣的话请移步https://github.com/apache/rocketmq-externals.本文主要是结合笔者已有的rmq在spar ...

  4. luogu P2985 [USACO10FEB]吃巧克力Chocolate Eating

    题目描述 Bessie拿到了N (1 <= N <= 50,000)块巧克力.她决定想个办法吃掉这些巧克力,使得它在吃巧克力的这段时间里,最不开心的一天尽可能的开心.并且一共吃D (1 & ...

  5. Python超简单的爬取网站中图片

    1.首先导入相关库 import requests import bs4 import threading #用于多线程爬虫,爬取速度快,可以完成多页爬取 import os 2.使用bs4获取htm ...

  6. git 使用详解(3)—— 最基本命令 + .gitignore 文件

    Git 基础 本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置:开始或停止跟踪某些文件:暂存或提交某 ...

  7. [TimLinux] selinux sesearch命令详解

    1. 描述 sesearch用于搜索SELinux安全策略规则集,命令来自包:yum install setools-console. 2. 命令 命令使用方法: sesearch [OPTIONS] ...

  8. python数学工具(一)

    python  数学工具包括: 1.函数的逼近 1.1.回归 1.2.插值 2.凸优化3.积分4.符号数学 本文介绍函数的逼近的回归方法 1.作为基函数的单项式 对函数 的拟合 首先定义函数并且可视化 ...

  9. Django对DateTimeField时间字段查询QuerySet为空的解决方案

    今天在用的Django中的filter()方法对DateTimeField字段查询时碰到了问题,抓耳挠腮一下午,终于解决了,我觉得花了一下午的时间怎么着也得记录下吧(无语)...... 问题描述 : ...

  10. 【MyBatis】配置文件提示

    [MyBatis]配置文件提示 官方帮助文档:http://www.mybatis.org/mybatis-3/zh/index.html config配置 http://mybatis.org/dt ...