Develop > Presentation layer > Customize marketing > Marketing customization: Management Center > Customizing triggers, targets, and actions > Add a new trigger, target or action > Create the campaign element task command


Example: campaign element task command for an action

When creating a custom action for a marketing activity, you can refer to this sample when developing the action's task command.


Sample

Here is the task command implementation code for an example action. In this example, the action is to send a message to a back-end system to send a specific hardcopy catalog to the customer using regular mail.

This task command defines the performExecute method, which tells the back-end system to send the catalog to the customer. In addition this task command defines the validateParameters method to validate the action parameters and return any errors.

package com.mycompany.commerce.marketing.commands.elements; 
import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.logging.Logger; 
import com.ibm.commerce.foundation.common.exception.ApplicationError; import com.ibm.commerce.foundation.common.util.logging.LoggingHelper; import com.ibm.commerce.marketing.commands.elements.MarketingCampaignElementTaskCmdImpl; import com.mycompany.commerce.marketing.logging.CustomMarketingMessageKeys; 
public class CustomSendCatalogActionTaskCmdImpl extends MarketingCampaignElementTaskCmdImpl implements CustomSendCatalogActionTaskCmd {
    
    private final static String PARAM_CATALOG_NAME = "catalogName";     
    private static final Logger LOGGER = LoggingHelper.getLogger(CustomSendCatalogActionTaskCmdImpl.class);     private final static String CLASSNAME = CustomSendCatalogActionTaskCmdImpl.class.getName(); 
    public CustomSendCatalogActionTaskCmdImpl() {}
        
    public void performExecute() {
    final String METHOD_NAME = "performExecute";         if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
            LOGGER.entering(CLASSNAME, METHOD_NAME);         }    

        // to get the parameters set in the DMELEMENTNVP table
          Map parameters = getElementParameters();         // example of getting one of the parameters
          String catalogName = 
            (String)parameters.get(PARAM_CATALOG_NAME); 
        // Execute the action for the customer.
        // Tell the back-end system to send the catalog to the customer.
        // This will get the guest or registered member id, and exclude generic users.
        Long memberId = getMemberId(true); 
        // for an action, return true
        setReturnValue(true); 
        if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
            LOGGER.exiting(CLASSNAME, METHOD_NAME);         }
    }    

    public List validateParameters(Map elementParameters) {
        final String METHOD_NAME = "validateParameters";         if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
            LOGGER.entering(CLASSNAME, METHOD_NAME, elementParameters);         }    
            
        List validationErrors = new ArrayList();         
        Object catalogName = elementParameters.get(PARAM_CATALOG_NAME);         if (catalogName == null || catalogName.toString().length() == 0) {
            ApplicationError validateError = new ApplicationError(
                ApplicationError.TYPE_GENERIC_ERROR,                 CustomMarketingMessageKeys._APP_ACTIVITY_SEND_CATALOG_NAME_IS_MISSING,                 null, LOGGER.getResourceBundleName());             validationErrors.add(validateError);         } 
            
        if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
            LOGGER.exiting(CLASSNAME, METHOD_NAME, validationErrors);         }        
        return validationErrors;     }
    }    


Return information to an e-Marketing Spot

If the action is to return information to an e-Marketing Spot, the performExecute method should create an EMarketingSpotDataBean and call the method addEMarketingSpotDataBean. For example, to return a category recommendation:

EMarketingSpotDataBean emsDataBean = new EMarketingSpotDataBean(
EMarketingSpotDataBean.DISPLAY_TYPE_CATEGORY, categoryId, getActivity(), getElementId(), getExperimentTestElements()); addEMarketingSpotDataBean(emsDataBean); 


Related concepts

Campaign element task commands

Related reference

Example: campaign element task command for a trigger (customer event type)

Example: campaign element task command for a trigger (daily check type)

Example: campaign element task command for a target


+

Search Tips   |   Advanced Search