Вы находитесь на странице: 1из 7

Document Of Email:

Step 1: Define the item with Attributes whatever you want


Here I need only 1 string message that’s why I have given only one attribute

<itemtype code="AddToWalletProcess"
extends="StoreFrontCustomerProcess" generate="true" autocreate="true">
<attributes>
<attribute type="java.lang.String" qualifier="message">
<persistence type="property" />
</attribute>
</attributes>
</itemtype>

Step 2: Write the Event Class


public class AddToWalletEvent extends
AbstractCommerceUserEvent<BaseSiteModel>
{
private String message;

/**
* @param message
*/
public AddToWalletEvent(final String message)
{
super();
this.message = message;
}

/**
* @return the message
*/
public String getMessage()
{
return message;
}

/**
* @param message
* the message to set
*/
public void setMessage(final String message)
{
this.message = message;
}

}
Step 3: Listener
public class AddToWalletListener extends
AbstractAcceleratorSiteEventListener<AddToWalletEvent>
{

private ModelService modelService;


Logger addListner = Logger.getLogger(AddToWalletListener.class);

private BusinessProcessService businessProcessService;

@Override
protected void onSiteEvent(final AddToWalletEvent event)
{
addListner.info("entered to AddToWalletListener");
// XXX Auto-generated method stub
final AddToWalletProcessModel addToWalletProcessModel =
(AddToWalletProcessModel) getBusinessProcessService().createProcess(
"addToWalletEmail-" + event.getCustomer().getUid()
+ "-" + System.currentTimeMillis(), "addToWalletEmailProcess");
addToWalletProcessModel.setSite(event.getSite());
addToWalletProcessModel.setCustomer(event.getCustomer());
addToWalletProcessModel.setLanguage(event.getLanguage());
addToWalletProcessModel.setCurrency(event.getCurrency());
addToWalletProcessModel.setStore(event.getBaseStore());
addToWalletProcessModel.setMessage(event.getMessage());
getModelService().save(addToWalletProcessModel);

getBusinessProcessService().startProcess(addToWalletProcessModel);

/*
* (non-Javadoc)
*
* @see
*
de.hybris.platform.acceleratorservices.site.AbstractAcceleratorSiteEventLis
tener#getSiteChannelForEvent(de.hybris.
* platform.servicelayer.event.events.AbstractEvent)
*/
@Override
protected SiteChannel getSiteChannelForEvent(final AddToWalletEvent
event)
{
// XXX Auto-generated method stub
final BaseSiteModel site = event.getSite();

ServicesUtil.validateParameterNotNullStandardMessage("event.site",
site);
return site.getChannel();

/**
* @param modelService
* the modelService to set
*/
public void setModelService(final ModelService modelService)
{
this.modelService = modelService;
}

/**
* @param businessProcessService
* the businessProcessService to set
*/
public void setBusinessProcessService(final BusinessProcessService
businessProcessService)
{
this.businessProcessService = businessProcessService;
}

/**
* @return the businessProcessService
*/
public BusinessProcessService getBusinessProcessService()
{
return businessProcessService;
}

/*
* (non-Javadoc)
*
* @see
*
de.hybris.platform.commerceservices.event.AbstractSiteEventListener#onSiteE
vent(de.hybris.platform.servicelayer.
* event.events.AbstractEvent)
*/
/**
* @return the modelService
*/
public ModelService getModelService()
{
return modelService;
}

Step 4:Context file


public class AddToWalletEmailContext extends
AbstractEmailContext<AddToWalletProcessModel>
{

private String message;


@Override
public void init(final AddToWalletProcessModel
addToWalletProcessModel, final EmailPageModel emailPageModel)
{
super.init(addToWalletProcessModel, emailPageModel);
if (addToWalletProcessModel instanceof AddToWalletProcessModel)
{
setMessage(addToWalletProcessModel.getMessage());
}
}

public String getMessage()

{
return message;
}

public void setMessage(final String message)


{
this.message = message;
}

/*
* (non-Javadoc)
*
* @see
de.hybris.platform.acceleratorservices.process.email.context.AbstractEmailC
ontext#getSite(de.hybris.platform.
* processengine.model.BusinessProcessModel)
*/
@Override
protected BaseSiteModel getSite(final AddToWalletProcessModel
businessProcessModel)
{
// XXX Auto-generated method stub
return businessProcessModel.getSite();
}

/*
* (non-Javadoc)
*
* @see
*
de.hybris.platform.acceleratorservices.process.email.context.AbstractEmailC
ontext#getCustomer(de.hybris.platform.
* processengine.model.BusinessProcessModel)
*/
@Override
protected CustomerModel getCustomer(final AddToWalletProcessModel
businessProcessModel)
{
// XXX Auto-generated method stub
return businessProcessModel.getCustomer();
}

/*
* (non-Javadoc)
*
* @see
de.hybris.platform.acceleratorservices.process.email.context.AbstractEmailC
ontext#getEmailLanguage(de.hybris.
* platform.processengine.model.BusinessProcessModel)
*/
@Override
protected LanguageModel getEmailLanguage(final
AddToWalletProcessModel businessProcessModel)
{
// XXX Auto-generated method stub
return businessProcessModel.getLanguage();
}

Step 5:XML file


<?xml version="1.0" encoding="utf-8"?>
<!--
[y] hybris Platform

Copyright (c) 2018 SAP SE or an SAP affiliate company. All rights


reserved.

This software is the confidential and proprietary information of SAP


("Confidential Information"). You shall not disclose such Confidential
Information and shall use it only in accordance with the terms of the
license agreement you entered into with SAP.
-->
<process xmlns="http://www.hybris.de/xsd/processdefinition"
start="generateForgottenPasswordEmail" name="forgottenPasswordEmailProcess"

processClass="de.hybris.platform.commerceservices.model.process.Forgo
ttenPasswordProcessModel" onError="error">

<action id="generateForgottenPasswordEmail"
bean="generateForgottenPasswordEmail">
<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 forgotten password
email.</end>
<end id="success" state="SUCCEEDED">Sent forgotten password
email.</end>

</process>

Step 6:We should create 2 vm file 1 for title,1 for body , We can create only one vm file but
it should body.
Your message :${ctx.getMessage()}.

Step 7:Spring bean entry


Defining listener: core
<bean id="AddToWalletListener"
class="de.hybris.platform.yacceleratorcore.event.AddToWalletListener"
parent="abstractAcceleratorSiteEventListener">
<property name="modelService" ref="modelService"/>
<property name="businessProcessService"
ref="businessProcessService"/>
</bean>

Defining the XML


:core

<bean id="addToWalletEmailProcessDefinitionResource"

class="de.hybris.platform.processengine.definition.ProcessDefinitionResourc
e" >
<property name="resource"
value="classpath:/yacceleratorcore/processes/addToWalletEmailProcess.xml"/>
</bean>
Defining frontend: core
<bean id="generateAddMoneyToWalletEmail"
parent="abstractGenerateEmailAction">
<property name="frontendTemplateName"
value="AddMoneyEmailTemplate"/>
</bean>

Defining context: facade

<bean id="addToWalletEmailContext"
class="de.hybris.platform.yacceleratorfacades.process.email.context.AddToWa
lletEmailContext" parent="abstractEmailContext" scope="prototype" >
</bean>

Вам также может понравиться