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
- Ouvrez HCL Commerce Developer.
-
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 :
-
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> -
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:getDatadans 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.Mapet renvoyer une instance decom.ibm.commerce.oagis9.datatypes.ExpressionType. La valeur par défaut est utilisée dans l'exemple. - param
- L'élément
paramest utilisé pour déclarer des paramètres attendus par le générateur d'expression. Il est affecté parnameetvalue. 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/Wartermn'est pas une expression XPath valide. Cette notation est utilisée pour représenter la valeur des attributsWartermetWartypedans la zone UserData de l'exemple. - Enregistrez et fermez le fichier.