0
这是我第一次与Genexus合作,我想知道如何创建日志功能。用Genexus创建日志功能
我创建了一个事务对象“日志”,但我不需要任何用户界面交互。另外,我想直接在“After Trn”之类的事件中将记录插入“Logs”表中。
我该如何做到这一点?什么是最好的方法?
我会很感激任何帮助。谢谢!
这是我第一次与Genexus合作,我想知道如何创建日志功能。用Genexus创建日志功能
我创建了一个事务对象“日志”,但我不需要任何用户界面交互。另外,我想直接在“After Trn”之类的事件中将记录插入“Logs”表中。
我该如何做到这一点?什么是最好的方法?
我会很感激任何帮助。谢谢!
您需要定义与信息的过程被记录下来,例如logAdd
如果它是一个Web应用程序,你可以从websession提取用户,如果你需要传递一个Windows应用程序在parms。
然后您调用每个事务的BeforeComplete过程。
网站举例:
logAdd.Call(&Pgmname, "Clients", CliId.ToString(), &Mode) on BeforeComplete;
重要的是,该logAdd
程序在false
的Commit on exit
财产。 这种方式只有在交易确认后才会记录信息。
更新 - 你的记录过程中变老值
为了让你可以采取经营业务组件的优势,交易的前值。 设置您的交易为Bussiness Component
后你把下面的规则在您的交易:
[WEB] {
&Clients.load(CliId) if update on BeforeValidate;
logClients.Call(CliId, &Clients, &Mode) on BeforeComplete;
}
&Clients
是基于你的经营业务组件类型的变量。
在prc:logClients
你可以通过一个普通For Each
通过
&Clients.Att.GetOldValue()
访问所有的旧值和新值这正是我需要的。谢谢。当我访问BeforeComplete上的属性时,我得到了新的值。我正在使用“以前的状态”日志表。有没有办法在提交之前获取值? – devdev