如何编写自定义cronjob电子邮件

2020-08-26 04:46发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我需要使用cronjob中的一些其他参数来修改自定义cronjob电子邮件模板。

如果有人有示例代码,请提供。

谢谢

乔西

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我需要使用cronjob中的一些其他参数来修改自定义cronjob电子邮件模板。

如果有人有示例代码,请提供。

谢谢

乔西

付费偷看设置
发送
2条回答
nice_wp
1楼-- · 2020-08-26 05:04

Jyothi,你好

例如-我已将自定义cronjob模型的自定义字段(目录ID)之一添加到自定义电子邮件模板中。

自定义cron作业模型:

 
    <属性>
       
          某些目录
          
          
       
    
  

请在下面检查步骤/示例代码

  • 创建自定义template.vm
 {yourcoreextension}/import/emails/MyCronJobFinishNotificationTemplate_en.vm 
  • 用数据填充您的自定义模板文件
 
    <头>
    
    <身体>
       这是我来自cron作业模型的自定义字段:$ ctx.catalogId
    
  
  • 创建自定义上下文类
 package com.test.core.jalo;

 导入de.hybris.platform.cronjob.jalo.CronJobNotificationTemplateContext;
 导入de.hybris.platform.util.Utilities;

 导入java.util.Date;

 公共类MyCronJobNotificationTemplateContext实现CronJobNotificationTemplateContext {

     私人最终MyCustomCronJob cronJob;

     公共MyCronJobNotificationTemplateContext(MyCustomCronJob cronJob){
         this.cronJob = cronJob;
     }

     公共字符串getCronJobName(){
         返回this.cronJob.getCode();
     }

     公共字符串getEndDate(){
         返回this.cronJob.getEndTime()!= null吗?  Utilities.getDateTimeInstance()。format(this.cronJob.getEndTime()):" n/a";
     }

     公共字符串getDuration(){
         开始日期= this.cronJob.getStartTime();
         日期结束= this.cronJob.getEndTime();
         返回start!= null && end!= null吗?  Utilities.formatTime(end.getTime()-start.getTime()):" n/a";
     }

     公共字符串getResult(){
         返回this.cronJob.getResult()!= null吗?  this.cronJob.getResult()。getCode():" n/a";
     }

     公共字符串getStartDate(){
         开始日期= this.cronJob.getStartTime();
         返回开始!= null?  Utilities.getDateTimeInstance()。format(start):null;
     }

     公共字符串getStatus(){
         返回this.cronJob.getStatus()!= null吗?  this.cronJob.getStatus()。getCode():" n/a";
     }

     公共字符串getCatalogId(){
         返回this.cronJob.getCatalog()!= null吗?  this.cronJob.getCatalog()。getId():"没有运气";
     }
 }
 
  • 创建自定义渲染器模板和媒体的Impex并将其导入
 UPDATE GenericItem [处理器= de.hybris.platform.commerceservices.impex.impl.ConfigPropertyImportProcessor];  pk [unique = true]
 $ emailResource = {您的.vm文件的路径}

 INSERT_UPDATE CatalogUnawareMedia;  code [unique = true]; 哑剧; 真实文件名;  @media [translator = de.hybris.platform.impex.jalo.media.MediaDataTranslator];
                                   ;  MyCronJobFinishNotificationTemplate_en; 文本/普通;  MyCronJobFinishNotificationTemplate_en.vm;  $ emailResource/MyCronJobFinishNotificationTemplate_en.vm;

 INSERT_UPDATE RendererTemplate; 代码[唯一=真,allownull =真];  contextClass;  description [lang = en];  content(code)[lang = en];  outputMimeType;  rendererType(code,itemtype(code))[allownull = true];
                               ;  MyCronJobFinishNotificationTemplate;  com.test.core.jalo.MyCronJobNotificationTemplateContext; 我的自定义通知模板,用于在完成CronJob之后呈现电子邮件;  MyCronJobFinishNotificationTemplate_en; 文本/普通;  velocity:RendererTypeEnum;
 
  • 在自定义cronjob模型的Jalo类中重写getRendererNotificationContext()方法
 package com.test.core.jalo;

 导入de.hybris.platform.cronjob.jalo.CronJobNotificationTemplateContext;
 导入de.hybris.platform.jalo.Item;
 导入de.hybris.platform.jalo.JaloBusinessException;
 导入de.hybris.platform.jalo.SessionContext;
 导入de.hybris.platform.jalo.type.ComposedType;

 公共类MyTestCronJob扩展了GeneratedMyTestCronJob {

     @Override
     受保护的项目createItem(最终SessionContext ctx,最终ComposedType类型,最终ItemAttributeMap allAttributes)引发JaloBusinessException {
        //放置在此处的业务代码将在创建项目之前执行
        //然后创建项目
         final Item item = super.createItem(ctx,type,allAttributes);
        //放置在此处的业务代码将在创建项目后执行
        //并返回项目
         归还物品;
     }

     @Override
     受保护的CronJobNotificationTemplateContext getRendererNotificationContext(){
         返回新的MyCronJobNotificationTemplateContext(this);
     }
 } 
  • 使用ant重建项目
  • 转到后台办公室/hmc,找到您的CronJob
  • 在"任务"标签中,选中"处理后发送通知"复选框,在其中放置emailTo地址,然后选择自定义的RendererTemplate

  • 点击"保存"按钮以保存CronJob更改

cron作业完成后,您将收到包含您自定义模板/放入上下文的数据的通知。

希望这会有所帮助。

伊戈尔。

悻福寶寶
2楼-- · 2020-08-26 04:59

嗨,伊戈尔·扎波罗热茨

感谢上面的建议,我在这里有一个问题,如果我想访问vm文件中的新字段,那么应该如何将其添加到上下文中?

例如:在vm中,我已经完成了
ListOfCronJobs:$ ctx.jobNames

但此行本身未执行。

您能帮我解决以上查询吗?

谢谢

Abhishek Singh

一周热门 更多>