0

我们正在使用 Genexus EV3 开发一个项目,我们注意到我们可以使用它通过 SMS 或电子邮件轻松提醒用户相关信息。

我想知道是否可以在genexus中创建某种后台进程来检查数据库,以便我们可以根据数据库中存在的信息发送电子邮件。谢谢。

4

2 回答 2

3

您可以使用该submit方法对过程对象进行异步调用,例如:

// Some code...
prAnyProcedure.submit(&parm1, &parm2)
// Some code...
// Some code...

在这种情况下,主程序流程将立即继续处理。

但是,如果您需要在没有任何用户干预的情况下不时调用一个过程,您应该使用像 ant 或 cron/crontab linux 实用程序这样的服务器端工具。

http://ant.apache.org/faq.html#what-is-ant

http://linux.die.net/man/8/cron

于 2014-10-21T17:14:26.410 回答
2

我做了一些你需要的。我制作了一个程序,将其设为 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
于 2017-11-25T04:28:28.027 回答