如何配置OpenEdge Progress审计功能以记录ERP业务事件?
如何在OpenEdge Progress中审计ERP业务事件(如删除客户)
嘿,我来帮你一步步搞定这个事儿——要把业务事件(比如删除客户)记录到_aud-audit-data-value表,你需要针对业务实体配置字段级审计,毕竟默认的系统审计只覆盖登录、策略变更这类系统操作,业务事件得手动开启对应的审计规则。下面是具体操作步骤:
1. 先确认基础审计配置没问题
- 首先确保全局审计已经启用(你说已经开了默认策略,这步大概率没问题,但可以再确认下):打开
PROENV命令行工具,运行proutil <你的数据库名> -C enableauditing,如果提示审计已启用就OK。 - 检查默认策略的审计级别:可以用SQL查询
_aud-audit-policy表,看看_aud-audit-level字段是否包含field——默认可能只有system,得调整成包含字段级审计的模式。
2. 为目标业务表配置字段级审计
这里以客户表(假设表名是Customer)为例,给你两种配置方式:
- 方式一:用图形界面(Progress Developer Studio)
- 连接上你的数据库,找到
Customer表,右键选Properties。 - 在弹出的窗口切换到Audit标签页,勾选你需要审计的操作(比如
Delete,如果需要新增、修改也可以一起选),然后选择要审计的字段(嫌麻烦直接选「All Fields」就行)。 - 保存配置后,系统会自动把这个规则关联到你的默认审计策略。
- 连接上你的数据库,找到
- 方式二:用ABL代码手动配置
如果你习惯写代码,执行下面的ABL语句就能搞定:
执行完记得重启应用服务,让配置生效。DEFINE VARIABLE hPolicy AS HANDLE NO-UNDO. /* 获取默认审计策略 */ FIND _aud-audit-policy WHERE _aud-audit-policy._aud-policy-name = "Default" NO-LOCK. CREATE hPolicy FROM _aud-audit-policy. /* 配置Customer表的Delete操作审计,?表示审计所有字段,也可以指定字段如"Name,CustID" */ hPolicy:SET-AUDIT-FOR-TABLE("Customer", "Delete", ?). hPolicy:SAVE().
3. 验证审计效果
- 手动执行一次删除客户的操作,然后去查
_aud-audit-data表,会看到一条类型为Table Delete的记录;再关联_aud-audit-data-value表,就能看到被删除客户的具体字段值了。 - 用SQL查询验证的话,可以跑这段:
SELECT d._aud-event-id, d._aud-event-type, v._aud-field-name, v._aud-old-value FROM _aud-audit-data d JOIN _aud-audit-data-value v ON d._aud-event-id = v._aud-event-id WHERE d._aud-event-type = 'Table Delete' AND d._aud-table-name = 'Customer';
4. 结合你正在读的文档的小提示
你看的《Developing an Audit-enabled OpenEdge Application》是核心指南,重点啃这几个章节:
- Configuring Field-Level Auditing:详细讲表和字段的审计配置逻辑
- Audit Data Tables Reference:搞懂
_aud-audit-data和_aud-audit-data-value的字段含义,方便后续查审计记录 - Testing Audit Configurations:教你怎么快速验证配置是否生效
内容的提问来源于stack exchange,提问作者Ezequiel
相关产品推荐
相关产品推荐

