Ejemplo: mandato de tarea de elemento de campaña para un desencadenante (tipo de suceso de cliente)

Al crear un desencadenante personalizado para una actividad de marketing, puede hacer referencia a este ejemplo cuando desarrolle el mandato de la tarea del desencadenante.

Ejemplo

A continuación se muestra el código de implementación de mandato de tarea para un desencadenante de ejemplo. En este ejemplo, un sistema externo detecta fraude de crédito. El sistema externo puede detectar fraude de la tarjeta de crédito o fraude de la cuenta de crédito. El sistema externo envía un mensaje a los servicios de marketing indicando que se ha producido una de estas situaciones de fraude para un cliente. Utilizando este desencadenante personalizado, un gestor de marketing podría crear una actividad de diálogo para especificar cómo realizar el seguimiento del cliente en esta situación (por ejemplo, enviando un mensaje de texto al móvil o un correo electrónico, dependiendo de su nivel de cobertura y, a continuación, enviando un mensaje de seguimiento tras un tiempo determinado). El parámetro eventType puede ser uno de los parámetros (CreditCard, CreditAccount) para permitir una gestión distinta, en función del tipo de fraude que se ha producido.

Este ejemplo de mandato de tarea define el método validateParameters para validar los parámetros de desencadenante 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 CustomFraudDetectedTriggerTaskCmdImpl 
extends MarketingCampaignElementTaskCmdImpl 
implements CustomFraudDetectedTriggerTaskCmd {

	private final static String PARAM_EVENT_TYPE = "eventType";
	private final static String PARAM_CREDIT_CARD = "CreditCard";
	private final static String PARAM_CREDIT_ACCOUNT = "CreditAccount";

	private static final Logger LOGGER = LoggingHelper.getLogger(CustomFraudDetectedTriggerTaskCmdImpl.class);
	private final static String CLASSNAME = CustomFraudDetectedTriggerTaskCmdImpl.class.getName();
	
	public CustomFraudDetectedTriggerTaskCmdImpl() {}

	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 eventType = elementParameters.get(PARAM_EVENT_TYPE);
		if (eventType == null || eventType.toString().length() == 0) {
			ApplicationError validateError = new ApplicationError(
					ApplicationError.TYPE_GENERIC_ERROR,
					CustomMarketingMessageKeys._APP_ACTIVITY_FRAUD_EVENT_TYPE_IS_MISSING,
					null, LOGGER.getResourceBundleName());
			validationErrors.add(validateError);

		} else {
			if (PARAM_CREDIT_CARD.equals(eventType.toString()) == false &&
					PARAM_CREDIT_ACCOUNT.equals(eventType.toString()) == false) {
				ApplicationError validateError = new ApplicationError(
						ApplicationError.TYPE_GENERIC_ERROR,
						CustomMarketingMessageKeys._APP_ACTIVITY_FRAUD_EVENT_TYPE_IS_INVALID,
						null, LOGGER.getResourceBundleName());
				validationErrors.add(validateError);
			}
		}

		if (LoggingHelper.isEntryExitTraceEnabled(LOGGER)) {
			LOGGER.exiting(CLASSNAME, METHOD_NAME, validationErrors);
		}		
		return validationErrors;
	}
}