genexus中的后台流程/任务?

时间:2014-10-21 17:00:56

标签: genexus

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

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

2 个答案:

答案 0 :(得分:2)

您可以使用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

答案 1 :(得分:1)

我做了一些你需要的东西。 我做了一个程序,使它成为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