Deprecated feature

Création d'un générateur d'expression

Un générateur d'expression est utilisé par la balise wcf:getData dans un fichier JSP afin de construire une expression XPath utilisée par un service HCL Commerce pour extraire des données.

Pourquoi et quand exécuter cette tâche

Tous les générateurs d'expression sont définis dans le fichier get-data-config.xml. Le fichier de base get-data-config.xml de chaque module de service HCL Commerce se trouve dans \LOBTools\WebContent\WEB-INF\config\com.ibm.commerce.component\get-data-config.xml. Vous ne pouvez pas modifier ce fichier directement. Créez plutôt le dossier d'extension \LOBTools\WebContent\WEB-INF\config\com.ibm.commerce.component-ext pour stocker le fichier étendu get-data-config.xml.

Procédure

  1. Ouvrez HCL Commerce Developer.
  2. Tous les nouveaux générateurs d'expression doivent être ajoutés dans un fichier get-data-config.xml personnalisé. Ne modifiez pas les fichiers HCL Commerce par défaut. Si vous n'avez pas encore créé de fichier get-data-config :
    1. Dans la vue Explorateur d'entreprise, accédez à LOBTools > WebContent > WEB-INF > config.
    2. Cliquez avec le bouton droit de la souris sur config, puis sur Nouveau dossier.
    3. Dans le Nom du dossier, le texte dépend du module de service que vous utilisez, personnalisé ou HCL Commerce par défaut :
      • Pour les modules de service HCL Commerce par défaut, utilisez com.ibm.commerce.component-ext. Par exemple : com.ibm.commerce.catalog-ext
      • Pour vos propres modules de service personnalisé, utilisez le nom du module de service personnalisé. Il n'est pas nécessaire d'ajouter un suffixe "-ext". Par exemple : com.mycompany.commerce.tutorialstore
    4. Cliquez sur Terminer.
    5. Cliquez avec le bouton droit de la souris sur le nouveau dossier, puis cliquez sur Nouveau > Autre > Simple > Fichier > Suivant.
    6. Dans la zone Nom de fichier, entrez get-data-config.xml.
    7. Cliquez sur Terminer. Le fichier get-data-config.xml s'ouvre.
    8. Copiez les éléments suivants dans le fichier personnalisé get-data-config.xml pour démarrer le fichier :
      <?xml version="1.0" encoding="UTF-8"?>
      <wcf:get-data-config
      xmlns:wcf="http://www.ibm.com/xmlns/prod/commerce/foundation"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation ../../xsd/get-data-config.xsd ">
      
      <!-- Define data types here -->
      
      <!-- Define client facades here -->
      
      <!-- Define expression builders here -->
      
      </wcf:get-data-config>
      La totalité du code de générateur d'expression est ajouté entre ces balises.
  3. Si vos générateurs d'expression utilisent des types de données personnalisés, vous devez inclure un élément <data-type> et un élément <client-facade> afin d'indiquer au générateur d'expression comment traiter vos données. L'élément <data-type> définit la classe Java de votre type de données personnalisé, et l'élément <client-facade> définit la classe et la méthode d'appel de cette classe pour extraire les objets.
    <data-type>
    		<name>Project</name>
    		<type>com.mycompany.commerce.project.facade.datatypes.ProjectType</type>
    	</data-type>
    		<client-facade>
    		<data-type-name>Project</data-type-name>
    		<class>com.mycompany.commerce.project.facade.client.ProjectFacadeClient</class>
    		<method>getProject</method>
    	</client-facade>
  4. Dans l'éditeur de fichier, ajoutez un ou plusieurs générateurs d'expression. Exemple de générateur d'expression exécutant une recherche sur le catalogue :
    <expression-builder>
    	<name>findAllCatentriesByWarrantySearchNumeric</name>
    	<data-type-name>CatalogEntry</data-type-name>
    	<class>
    		com.ibm.commerce.catalog.internal.client.taglib.util.CatalogSearchExpressionBuilder
    	</class>
    	<method>formatExpression</method>
    	<param>
    		<name>template</name>
    		<value>
    			/CatalogEntry[(@catalogEntryTypeCode='$catEntryTypes$') and search(UserData/UserDataField/Warterm='$warterm$' or contains(UserData/UserDataField/Wartype,'$wartype$') or contains(Description/Attributes/careinstruction,'$careinstruction$'))]
    		</value>
    	</param>
    	<param>
    		<name>accessProfile</name>
    		<value>MyCompany_All</value>
    	</param>
    </expression-builder>
    
    La signification des éléments XML est décrite dans la liste suivante :
    nom
    Nom du générateur d'expression. La balise wcf:getData dans le fichier JSP contrôleur fait référence à ce nom.
    data-type-name
    Nom du type de données auquel sera associé ce générateur d'expression. Dans l'exemple, le générateur d'expression est défini pour une recherche associée à CatalogEntry
    classe
    Nom de classe Java entièrement qualifié du générateur d'expression. Dans l'exemple de recherche sur le catalogue, la valeur par défaut est utilisée.
    méthode
    Nom de méthode du générateur d'expression. Cette méthode doit accepter un java.util.Map et renvoyer une instance de com.ibm.commerce.oagis9.datatypes.ExpressionType. La valeur par défaut est utilisée dans l'exemple.
    param
    L'élément param est utilisé pour déclarer des paramètres attendus par le générateur d'expression. Il est affecté par name et value. Ces noeuds enfant définissent un paramètre à transmettre au fichier modèle de requête.
    modèle
    Modèle de recherche utilisé pour générer la clé XPath et localiser l'instruction SQL dans le fichier de modèle de requête.
    accessProfile
    Chaque générateur d'expression est associé à un profil d'accès spécifique. Ce profil d'accès, associé à la requête XPath définie ci-dessus, identifie de manière unique une requête dans le fichier modèle de requête.
    Remarque : La couche service de données dispose d'une convention spécialisée pour UserData dans le mappage de recherche, car /UserData/UserDataField/Warterm n'est pas une expression XPath valide. Cette notation est utilisée pour représenter la valeur des attributs Warterm et Wartype dans la zone UserData de l'exemple.
  5. Enregistrez et fermez le fichier.