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. js中innerHTML和outerHTML的相同与不同

    innerHTML 属性设置或返回表格行的开始和结束标签之间的 HTML,包括标签. outerHTML  设置或获取对象及其内容的HTML形式,也就是标签和文本内容全都显示出来 innerText  ...

  2. Flask 蓝图机制及应用

    我们都知道 flask 是一个轻量级的 web 框架,相对于其他同类型框架更为灵活.轻便.安全且容易上手.开发者可以随意编写自己想要的项目结构,同时还有很多的第三方库供君选择.但是灵活的同时也带来了相 ...

  3. 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)

    [摘要] 集群管理模块cluster浅析 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 概述 cluster模块是node.js中用于实现和管理 ...

  4. 有奖投票丨HC2019开发者关注的TOP10问题你最想听哪个?

    目前,人工智能已经成为广大开发者重点关注的技术领域.然而,随着人工智能技术的快速发展,AI应用场景复杂度在与日俱增,算法调教也亟需不断成熟,这些都为开发者们带来了更多全新的挑战.如何快速把握前沿技术的 ...

  5. 源码分析 RocketMQ DLedger 多副本存储实现

    目录 1.DLedger 存储相关类图 1.1 DLedgerStore 1.2 DLedgerMemoryStore 1.3 DLedgerMmapFileStore 2.DLedger 存储 对标 ...

  6. 学习go语言第二天-变量、常量

    编写测试程序 源码文件以_test结尾;例如:xxx_test.go 测试方法名以Test开头;例如:func TestXXXXX(t *testing.T){} 实现斐波那且数列 package f ...

  7. 洛谷 题解 P1287 【盒子与球】

    题解:P1287 盒子与球 不了解的:stirling数(斯特林数) - 百度百科 分析如下: 设有n个不同的球,分别用b1,b2,--bn表示.从中取出一个球bn,bn的放法有以下两种: 1) bn ...

  8. python 金融应用(三)数据可视化

    matplotlib 库( http://www.matp1otlìb.org )的基本可视化功能. 主要是2-D绘图.金融绘图和3-D绘图 一.2-D绘图 1.1一维数据集 #导入所需要的包impo ...

  9. protobuf-rpm

    ############################################################## # http://www.rpm.org/max-rpm/ch-rpm-i ...

  10. django----多对多三种创建方式 form组件

    目录 多对多三种创建方式 全自动 全手动 半自动 form组件 基本使用 form_obj 及 is_valid() 前端渲染方式 取消前端自动校验 正则校验 钩子函数(Hook方法) cleaned ...