HCL Commerce Enterprise

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

  1. Créez une interface, par exemple DeploySurchargeTCCmd dans l'exemple suivant, en étendant com.ibm.commerce.contract.commands.DeployExtendedTCCmd.Définissez la variable defaultCommandClassName de la nouvelle interface pour qu'elle soit le nom de la nouvelle commande de déploiement que vous créez à l'étape suivante. DeploySurchargeTCCmdImpl dans l'exemple suivant.
  2. Créez une commande de déploiement (comme DeploySurchargeTCCmdImpl dans l'exemple suivant) en étendant com.ibm.commerce.contract.commands.DeployExtendedTCCmdImpl et en implémentant la nouvelle interface.
  3. 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.
  4. 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');
  5. 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

Les exemples de valeurs suivants sont utilisés :
  • YourTctypeID comme valeur pour ExtendedTC
  • YourTcSubtypeI comme valeur pour SurChargeTC
  • YourDeployCommandName comme valeur pour com.ibm.commerce.sample.contract.commands.DeploySurchargeTCCmd
Exemple d'interface :


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";
}
Exemple d'implémentation :


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

}