这是我第一次使用Genexus,我想知道如何创建日志功能。
我创建了一个事务对象“Logs”,但我不需要任何用户界面交互。另外,我想直接在“After Trn”之类的事件中将记录插入“Logs”表。
我怎样才能做到这一点?什么是最好的方法?
我会感激任何帮助。谢谢!
答案 0 :(得分:3)
您需要使用要记录的信息定义过程,例如logAdd
如果是Web应用程序,您可以从websession中提取用户,如果是win应用程序,则需要将其传递给parms。
然后在每次交易的BeforeComplete上调用该程序。
Web示例:
logAdd.Call(&Pgmname, "Clients", CliId.ToString(), &Mode) on BeforeComplete;
logAdd
程序在Commit on exit
中具有false
属性非常重要。
这样,只有在确认交易时才会记录信息。
更新 - 在日志记录过程中获取旧值
要获取事务的先前值,您可以利用业务组件。
将交易设置为Bussiness Component
后,您可以在交易中加入以下规则:
[WEB] {
&Clients.load(CliId) if update on BeforeValidate;
logClients.Call(CliId, &Clients, &Mode) on BeforeComplete;
}
&Clients
是一个基于商务组件类型的变量。
在prc:logClients
中,您可以通过&Clients.Att.GetOldValue()
访问所有旧值,并通过常规For Each