Exemple : commande de tâche d'élément de campagne pour un déclencheur (type d'événement client)

Lors de la création d'un déclencheur personnalisé pour une activité marketing, vous pouvez vous reporter à cet exemple pour développer la commande de tâche du déclencheur.

Exemple

Ci-dessous figure le code d'implémentation de commande de tâche d'un exemple de déclencheur. Dans cet exemple, un système externe détecte une fraude à la carte de crédit. Le système externe est capable de détecter une fraude à la carte de crédit ou au compte de crédit. Il envoie aux services marketing un message signalant que l'une de ces occurrences de fraude s'est produite pour un client. A l'aide de ce déclencheur personnalisé, un responsable Marketing peut créer une activité Dialogue pour définir la manière d'avertir le client dans cette situation (par exemple, en envoyant un SMS ou un courrier électronique suivant son niveau de couverture, puis en envoyant un message de relance après un certain temps). Le paramètre eventType accepte la valeur CreditCard ou CreditAccount pour permettre la mise en oeuvre d'un traitement différent suivant le type de fraude qui a eu lieu.

Cet exemple de commande de tâche définit la méthode validateParameters pour valider les paramètres du déclencheur et renvoie les erreurs éventuelles.

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;
	}
}