使用Genexus创建日志功能

时间:2014-02-05 16:07:56

标签: genexus

这是我第一次使用Genexus,我想知道如何创建日志功能。

我创建了一个事务对象“Logs”,但我不需要任何用户界面交互。另外,我想直接在“After Trn”之类的事件中将记录插入“Logs”表。

我怎样才能做到这一点?什么是最好的方法?

我会感激任何帮助。谢谢!

1 个答案:

答案 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

访问新值