我们正在使用 Genexus EV3 开发一个项目,我们注意到我们可以使用它通过 SMS 或电子邮件轻松提醒用户相关信息。
我想知道是否可以在genexus中创建某种后台进程来检查数据库,以便我们可以根据数据库中存在的信息发送电子邮件。谢谢。
我们正在使用 Genexus EV3 开发一个项目,我们注意到我们可以使用它通过 SMS 或电子邮件轻松提醒用户相关信息。
我想知道是否可以在genexus中创建某种后台进程来检查数据库,以便我们可以根据数据库中存在的信息发送电子邮件。谢谢。
您可以使用该submit
方法对过程对象进行异步调用,例如:
// Some code...
prAnyProcedure.submit(&parm1, &parm2)
// Some code...
// Some code...
在这种情况下,主程序流程将立即继续处理。
但是,如果您需要在没有任何用户干预的情况下不时调用一个过程,您应该使用像 ant 或 cron/crontab linux 实用程序这样的服务器端工具。
我做了一些你需要的。我制作了一个程序,将其设为 MAIN 并使用 de squeduler 任务启动(它每天早上 9 点运行)。在表格中,我有提醒和邮件地址、要发送的消息等。这是主要程序
for each empresa
where EmpresaEstado=1
&Empresanombre=EmpresaNombre
&EmpresaEmail=EmpresaEmail
&EmpresaServidorSalida=EmpresaServidorSalida
&EmpresaServidorPassword=EmpresaServidorPassword
endfor
for each recordatorios
where RecordatoriosEstado=1
where RecordatoriosDiaEnvio=day(today())
&smtp.Host = 'smtp.gmail.com'
&smtp.Port = 25
&smtp.Sender.Address = TRIM(&EmpresaEmail)
&smtp.Sender.Name = TRIM(&empresanombre)
&smtp.Authentication = 1
&smtp.Secure=1
&smtp.UserName = TRIM(&empresaEmail)
&smtp.Password = trim(&EmpresaServidorPassword)
&recordatoriosasunto=RecordatoriosAsunto
&recordatoriostexto=RecordatoriosTexto
&mail.To.New('Mauricio','mlopez.informatica@gmail.com')
&smtp.ErrDisplay = 0
&smtp.Login()
for each
where RecordatoriosClienteEstado=1
&mail.BCC.new(RecordatoriosClienteMail1,trim(RecordatoriosClienteMail1))
if RecordatoriosClienteMail2<>''
&mail.BCC.new(RecordatoriosClienteMail2,trim(RecordatoriosClienteMail2))
endif
endfor
&mail.Subject = &recordatoriosasunto
&mail.Text = &recordatoriostexto
&smtp.Send(&mail)
&mail.Clear()
&smtp.Logout()
endfor