Ejemplo: Mandato de tarea de elemento de campaña para un destino

Al crear un destino personalizado para una actividad de marketing, puede hacer referencia a este ejemplo cuando desarrolle el mandato de la tarea de la acción.

Ejemplo

A continuación se muestra el código de implementación para un destino de ejemplo. En este ejemplo, el destino consiste en determinar si el cliente ha pagado para obtener el nivel de soporte Gold, Silver o Bronze. Esta información se almacena en una tabla de base de datos personalizada. El usuario de empresa puede especificar destinos tales como El cliente tiene soporte de nivel Gold o El cliente tiene soporte de nivel Silver.

Este mandato de tarea define el método performExecute, que realiza el trabajo de evaluación para el destino y devuelve el valor true o false. Además, este mandato de tarea define el método validateParameters para validar los parámetros de destino y devolver posibles errores.

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 CustomLevelOfSupportTargetTaskCmdImpl extends MarketingCampaignElementTaskCmdImpl implements CustomLevelOfSupportTargetTaskCmd {
	
	private final static String PARAM_SUPPORT_LEVEL = "supportLevel";
	
	private static final Logger LOGGER = LoggingHelper.getLogger(CustomLevelOfSupportTargetTaskCmdImpl.class);
	private final static String CLASSNAME = CustomLevelOfSupportTargetTaskCmdImpl.class.getName();

	public CustomLevelOfSupportTargetTaskCmdImpl() {}
		
	public void performExecute() {
	final String METHOD_NAME = "performExecute";
		if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
			LOGGER.entering(CLASSNAME, METHOD_NAME);
		}	
		boolean rc = false;
		// get the parameters set in the DMELEMENTNVP table
	 	Map parameters = getElementParameters();
		// example of getting one of the parameters
	  	String desiredSupportLevel = 
			(String)parameters.get(PARAM_SUPPORT_LEVEL);

		// determine if the customer meets the criteria of the target
		String actualSupportLevel = 
			getSupportLevel(getRegisteredMemberIdForPersonalizationId());
	   	if (desiredSupportLevel.equals(actualSupportLevel)) {
	   		rc = true;
	   	}

		// for a target, return true or false as is appropriate
		setReturnValue(rc);
		if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
			LOGGER.exiting(CLASSNAME, METHOD_NAME, rc);
		}	
	}	

	public String getSupportLevel(Long memberId) {
	// go to the custom database table
	// and return the support level for the customer
		// TODO…
		return "";
	}

	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 supportLevel = elementParameters.get(PARAM_SUPPORT_LEVEL);
		if (supportLevel == null || supportLevel.toString().length() == 0) {
			ApplicationError validateError = new ApplicationError(
					ApplicationError.TYPE_GENERIC_ERROR,
					CustomMarketingMessageKeys._APP_ACTIVITY_LEVEL_OF_SUPPORT_TYPE_IS_MISSING,
					null, LOGGER.getResourceBundleName());
			validationErrors.add(validateError);
		}
			
		if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
			LOGGER.exiting(CLASSNAME, METHOD_NAME, validationErrors);
		}		
		return validationErrors;
	}

	}