- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我创建了一个完美运行的 CronJob。但我想在这个 Cronjob
中生成电子邮件的发送。我关注了tutorial在互联网上。我从创建 ProductsApprovedEmailProcess
的 itemType 开始。
然后我创建了productsApprovedEmailProcess
来定义流程引擎执行的步骤,如下
然后我添加了一个 EmailContext
来保存要传递到电子邮件模板的数据,如下所示
public class ProductsApprovedEmailContext extends CustomerEmailContext
{
private String message;
@Override
public void init(final StoreFrontCustomerProcessModel processModel, final EmailPageModel emailPageModel)
{
super.init(processModel, emailPageModel);
if (processModel instanceof ProductsApprovedEmailProcessModel)
{
setMessage(((ProductsApprovedEmailProcessModel) processModel).getMessage());
}
}
public String getMessage()
{
return message;
}
public void setMessage(final String message)
{
this.message = message;
}
}
我已经将ProductsApprovedEmailContext
注册为Spring中的bean,如下
<bean id="productsApprovedEmailContext" class="com.hybris.training.facades.process.email.context.ProductsApprovedEmailContext"
parent="abstractEmailContext"
scope="prototype" >
</bean>
然后我创建了 2 个 Velocity 模板,一个用于电子邮件主题,另一个用于正文 email-productsapproved-subject.vm
和 email-productsapproved-body.vm
下面的 impex 允许您为主题和正文创建 RendererTemplates,并将它们附加到 EmailPageTemplate,如下所示
$contentCatalog=electronicsContentCatalog
$contentCV=catalogVersion(CatalogVersion.catalog(Catalog.id[default=$contentCatalog]),CatalogVersion.version[default=Online])[default=$contentCatalog:Online]
UPDATE GenericItem[processor=de.hybris.platform.commerceservices.impex.impl.ConfigPropertyImportProcessor];pk[unique=true]
$emailResource=$config-emailResourceValue
$emailPackageName=$config-emailContextPackageName
$lang=en
INSERT_UPDATE RendererTemplate ;code[unique=true] ;contextClass ;templateScript[lang=en,translator=de.hybris.platform.commerceservices.impex.impl.FileLoaderValueTranslator];rendererType(code)[default='velocity']
;email-productsapproved-body ;$emailPackageName.ProductsApprovedEmailContext ;$emailResource/email-productsapproved-body.vm
;email-productsapproved-subject ;$emailPackageName.ProductsApprovedEmailContext ;$emailResource/email-productsapproved-subject.vm
INSERT_UPDATE EmailPage ;$contentCV[unique=true];uid[unique=true] ;masterTemplate(uid,$contentCV) ;approvalStatus(code)[default='approved']
; ;ProductApprovedEmail ;ProductApprovedEmailTemplate ;
在Cronjob
中我添加了这段代码!
final ProductsApprovedEmailProcessModel productsApprovedEmailProcessModel = (ProductsApprovedEmailProcessModel) businessProcessService
.createProcess("productsApprovedEmailProcess" + "-" + System.currentTimeMillis(), "productsApprovedEmailProcess");
productsApprovedEmailProcessModel.setMessage("Products approved in csv file");
productsApprovedEmailProcessModel.setSite(baseSiteService.getBaseSiteForUID("electronics"));
productsApprovedEmailProcessModel.setLanguage(CommerceCommonI18NService.getCurrentLanguage());
modelService.save(productsApprovedEmailProcessModel);
businessProcessService.startProcess(productsApprovedEmailProcessModel);
但是当我使用 HMC 接口(interface)执行 CronJob 时出现此错误:
Error executing ActionNode with ID [generateProductsApprovedEmail]: HtmlTemplate associated with MasterTemplate of EmailPageModel cannot be null
更新:
这是我的业务流程:
<process xmlns="http://www.hybris.de/xsd/processdefinition"
start="generateProductsApprovedEmail"
name="productsApprovedEmailProcess"
processClass="com.hybris.training.core.model.process.ProductsApprovedEmailProcessModel"
onError="error">
<action id="generateProductsApprovedEmail" bean="generateProductsApprovedEmail">
<transition name="OK" to="sendEmail"/>
<transition name="NOK" to="error"/>
</action>
<action id="sendEmail" bean="sendEmail">
<transition name="OK" to="removeSentEmail"/>
<transition name="NOK" to="failed"/>
</action>
<action id="removeSentEmail" bean="removeSentEmail">
<transition name="OK" to="success"/>
<transition name="NOK" to="error"/>
</action>
<end id="error" state="ERROR">Something went wrong.</end>
<end id="failed" state="FAILED">Could not send products approved in csv File email.</end>
<end id="success" state="SUCCEEDED">Sent file in email.</end>
声明 ProductApprovedEmailTemplate
(EmailPageTemplate) 后,我收到此警告,但未生成邮件:
WARN [TaskExecutor-master-264-ProcessTask [8796715713462]] [GenerateEmailAction] Could not retrieve email page model for ProductApprovedEmail and Electronics Content Catalog:Online, cannot generate email content
最佳答案
看起来,您关注的博客,它正确地提到了每个步骤,但您可能会错过一些东西。
确保您已正确执行以下步骤。
frontendTemplateName
应与 EmailPageTemplate
匹配
<bean id="generateProductApprovedEmail" parent="abstractGenerateEmailAction">
<property name="frontendTemplateName" value="ProductApprovedEmail"/>
</bean>
创建电子邮件页面模板
INSERT_UPDATE EmailPageTemplate ;$contentCV[unique=true];uid[unique=true] ;active ;frontendTemplateName ;subject(code) ;htmlTemplate(code) ;restrictedPageTypes(code)
; ;ProductApprovedEmailTemplate ;true ;ProductApprovedEmail ;email-productsapproved-subject ;email-productsapproved-body ;EmailPage
创建电子邮件页面
INSERT_UPDATE EmailPage ;$contentCV[unique=true];uid[unique=true] ;masterTemplate(uid,$contentCV);approvalStatus(code)[default='approved']
; ;ProductApprovedEmail ;ProductApprovedEmailTemplate ;
关于cron - SAP Hybris 电子商务 : Send Email in CronJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49455900/
我正在为客户建立一个 EC 网站,项目经理提出了一些奇怪的想法,我正在努力实际实现他向客户销售的产品。 这是我的主要问题和系统设置的快速总结:产品在类别内,类别可能是另一个类别的子类别。因此,该类别在
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
最近一直在想响应式网站与移动网站,尤其是电子商务网站。我有一个相当大的项目即将开始,看起来它将是一个相对繁重的项目(就模板和功能而言)。因此,立即想到的是做一个移动站点来削减某些可能对性能要求很高但不
我正在为大学考试编写一些 Java 代码,该项目基于“电子商务”。要求之一是将产品插入购物车,我必须使用 Visitor 模式。 这是教授给我的一个例子,我必须“用”它来代表我的购物车。问题是我有一个
我正在尝试确定在数据库中存储订单的最佳方式。 每个产品都可以配置,但并非所有选项都相同。例如: Product A Size: small, medium, large Membership: 1 y
我整天都在苦思冥想,试图找到这个问题的答案;我终其一生都无法弄清楚如何在我为客户建立的 Woocommerce 商店中右对齐价格。这是我所在的位置: .price .woocommerce-Price
我需要有关棘手问题的专家建议。 场景是: 电子商务网站 很多产品 这些产品有很多折扣 产品由唯一的 ProductID 标识并具有销售价格。很经典的剧情。该产品还可以有一个或多个折扣。 折扣可以有不同
我想在用户第一次购买之前将结帐的账单字段的值预填充到数据库存储的值中。 我试过下面的代码: add_filter( 'woocommerce_checkout_fields' , function (
我想了解数据库的可扩展性,所以我刚刚听过一个关于高度可扩展的 Web 应用程序的习惯的演讲 http://techportal.inviqa.com/2010/03/02/habits-of-high
在我的电子商务应用程序(用于咖啡馆/餐馆)中,我目前具有以下数据库结构。 cart 就是购物车,可以在其中添加商品,商品/订单发送到服务器之前的一个临时场所。 ProductCart 是一个行项目,许
我在我的项目中实现了 Google Analytics。在他们要求我启用电子商务之前,一切似乎都很好。 按照所有设置步骤,我已在 GA 仪表板上为我的项目启用电子商务,并且 Unity 中的设置必须正
我想使用 GTM 来跟踪电子商务交易。这是针对客户端环境的测试,其中代码可能位于 GTM 代码片段 之后的 ,这就是为什么使用 Dom Ready 作为事务标签的触发器不可靠的原因。 这是我的测试代码
我需要覆盖我的 spree 商店的标题颜色。我在 ../mystore/vendor/assets/stylesheets/spree/frontend 目录下创建了一个 custom.css。但它不
我正在使用 Odoo 10。在新用户注册后(通过 localhost:8069/web/signup)我希望他自动分配到我在我自己的自定义模块上创建的组中(用户将需要身份验证稍后来自管理员,以便他可以
我希望构建一个用户能够从我的站点购买产品的应用程序。购买将包括他们购买的实物、运输、税收(如果适用)等。我知道 PayPal 有许多付款选项,其中一个是 Web 服务,另一个只是重定向到他们的网站。我
我正在开发一个电子商务网站。我正在尝试使用 ajax 请求设置购物车商品数量。 我明白了 if (isset($_POST['product_id']) && isset($_POST['new_qu
假设用户访问我的网站并购买了一个棚子。棚子将被添加到购物车并完成工作。在我的数据库中,我已经有了棚子的尺寸(以显示给客户)。 假设客户还想要棚子的地毯(你永远不知道)我希望我的网络应用程序自动理解地毯
我正在尝试设置一个 AJAX 函数来清空我的购物车 HTML Go to Product JavaScript function clearCart(d) { jQuery(document)
我正在尝试在我的应用程序中设置 Spree(我愿意使用 Gem 或在供应商模式下运行它)。 我已经查看了文档和 wiki,但对于它如何在我现有的应用程序中工作,我仍然有些困惑。我可以为 Spree 使
目前正在使用 GTag 将购买数据记录到 Google Analytics E-Commerce。我正在使用标准电子商务。现在我要把这个过程作为后期处理。 (即)需要使用 C# 应用程序将购买数据记录
我是一名优秀的程序员,十分优秀!