14. CronJobs & Scripting

- 动机

    在5.2版本中,你可以使用脚本引擎在运行时动态地创建cronjobs。在本节中,我们将创建先前定义的sendrankingjob作为脚本。

- Cronjob Scripting 

    - 进入脚本语言控制台HAClocalhost:9001 ,并输入脚本:

import de.hybris.platform.cronjob.enums.CronJobResult
import de.hybris.platform.cronjob.enums.CronJobStatus
import de.hybris.platform.cuppy.services.MailService
import de.hybris.platform.cuppy.services.PlayerService
import de.hybris.platform.servicelayer.cronjob.PerformResult
 
playerService = spring.getBean("playerService")
mailService = spring.getBean("mailService")
 
rankings = playerService.getRankings()
 
if (!rankings.isEmpty()) {
    playerService.getAllPlayers().each {
        println it
        playerRankings = playerService.filterRankingsForPlayer(rankings, it)
        println playerRankings
     
        if (!playerRankings.isEmpty() && it.isSendNewsletter()) {
            mailService.sendRankingMail(it, playerRankings)
            println "Ranking email sent successfully!"
        }
    }
}
 
new PerformResult(CronJobResult.SUCCESS, CronJobStatus.FINISHED)

    - 不要忘记点击Save按钮后执行测试代码sendrankingscript。

            

    - 您可以检查和验证HMC之前创建的脚本。

            

    - 定义ScriptingJob

INSERT_UPDATE ScriptingJob; code[unique=true];scriptURI
;sendRankingScriptingJob;model://sendRankingScript

    - 定义CronJob

INSERT_UPDATE CronJob; code[unique=true];job(code);sessionLanguage(isocode)
;sendRankingScriptingCronJob;sendRankingScriptingJob;en

    - 手动执行cronjob或使用触发器

        

    - 牢记如果你想收到一封电子邮件,你需要的改变球员的电子邮件地址,和设置player.sendNewsletter为true。


- 总结

    在这一步,你已经学会了如何对于CronJobs创建和使用Groovy脚本。



你可能感兴趣的:(14. CronJobs & Scripting)