Déploiement de modalités étendues personnalisées
Lorsque vous avez créé l'entrée dans le tableau TCSUBTYPE pour une des modalités étendues, vous avez eu le choix de spécifier sa commande de déploiement. Si vous n'avez pas spécifié la valeur, aucune commande de déploiement n'est appelée pour déployer la modalité étendue pendant le processus de déploiement du contrat.
Pourquoi et quand exécuter cette tâche
Vous pouvez également déployer une nouvelle modalité avec une commande de déploiement personnalisée. La commande personnalisée enregistrée dans le tableau TCSUBTYPE est utilisée pour le déploiement. La commande de déploiement doit implémenter une interface qui étend com.ibm.commerce.contract.commands.DeployExtendedTCCmd, et la commande doit étendre com.ibm.commerce.contract.commands.DeployExtendedTCCmdImpl.
Pour utiliser une commande de déploiement personnalisée pour déployer une modalité étendue :
Procédure
-
Créez une interface, par exemple
DeploySurchargeTCCmddans l'exemple suivant, en étendantcom.ibm.commerce.contract.commands.DeployExtendedTCCmd.Définissez la variabledefaultCommandClassNamede la nouvelle interface pour qu'elle soit le nom de la nouvelle commande de déploiement que vous créez à l'étape suivante.DeploySurchargeTCCmdImpldans l'exemple suivant. -
Créez une commande de déploiement (comme
DeploySurchargeTCCmdImpldans l'exemple suivant) en étendantcom.ibm.commerce.contract.commands.DeployExtendedTCCmdImplet en implémentant la nouvelle interface. - Compiler les classes Java et copier les fichiers de classe dans un nouveau fichier JAR. Ajoutez le nouveau fichier JAR à votre chemin d'accès de classe.
- Facultatif :
Si vous n'avez pas défini une entrée pour la nouvelle modalité dans la table TCSUBTYPE, exécutez l'instruction SQL suivante :
insert into tcsubtype(TCSUBTYPE_ID, TCTYPE_ID, ACCESSBEANNAME, DEPLOYCOMMAND) Values ( 'YourTcSubtypeID','YourTctypeID', null, 'YourDeployCommandName'); - Facultatif :
Si vous avez déjà défini une entrée pour la nouvelle modalité dans la table TCSUBTYPE, exécutez l'instruction SQL suivante :
update tcsubtype set DEPLOYCOMMAND= 'YourDeployCommandName'where tcsubtype_id= 'YourTcSubtypeId';
Exemple
- YourTctypeID comme valeur pour
ExtendedTC - YourTcSubtypeI comme valeur pour
SurChargeTC - YourDeployCommandName comme valeur pour
com.ibm.commerce.sample.contract.commands.DeploySurchargeTCCmd
package com.ibm.commerce.sample.contract.commands;
import java.util.*;
import com.ibm.commerce.command.*;
public interface DeploySurchargeTCCmd extends
com.ibm.commerce.contract.commands.DeployExtendedTCCmd
{
/**
* The fully qualified name of this class.
*/
public final static String NAME =
"com.ibm.commerce.productset.commands.DeploySurchargeTCCmd";
/**
* The fully qualified name of the default implementation
class.
*/
public static String defaultCommandClassName =
"com.ibm.commerce.productset.commands.DeploySurchargeTCCmdImpl";
}
package com.ibm.commerce.sample.contract.commands;
import com.ibm.commerce.contract.objects.*;
import com.ibm.commerce.contract.helper.*;
DeploySurchargeTCCmdImpl.java
public class DeploySurchargeTCCmdImpl extends
com.ibm.commerce.contract.commands.DeployExtendedTCCmdImpl
implements DeploySurchargeTCCmd
{
public void performExecute() throws ECException{
ECTrace.entry(ECTraceIdentifiers.COMPONENT_CONTRACT,
this.CLASSNAME, "performExecute");
try{
if(this.tcId != null){
ExtendedTermConditionAccessBean etcAB = new
ExtendedTermConditionAccessBean();
etcAB.setInitKey_referenceNumber(com.ibm.commerce.base.objects.WCSStringConverter
.LongToString(tcId));
Map properties = etcAB.getProperties();
ECTrace.trace(ECTraceIdentifiers.COMPONENT_CONTRACT,
this.CLASSNAME, "performExecute","The properties of the TC which
TermCond_id='"+
com.ibm.commerce.base.objects.WCSStringConverter.LongToString((Long)tcId)+"'
is:"+ properties.toString());
}
}catch(Exception e){
ECTrace.trace(ECTraceIdentifiers.COMPONENT_CONTRACT,
this.CLASSNAME, "performExecute","An exception was thrown when
deploying the extended TC:");
e.printStackTrace();
}
ECTrace.exit(ECTraceIdentifiers.COMPONENT_CONTRACT,
this.CLASSNAME, "performExecute");
}
}