Personnalisation du filtre de catalogue : Personnalisation des règles de correspondance

Vous pouvez configurer les règles de correspondance pour les conditions des filtres de catalogue. Les règles de correspondance connectent les types de données des propriétés d'entrée de catalogue ou les attributs de dictionnaire d'attributs à l'aide des types de données String, Integer et Float. A l'aide de la personnalisation, vous pouvez ajouter des règles de correspondance supplémentaires.

Procédure

Cet exemple de procédure décrit les étapes générales de création d'une règle de correspondance, contains. Les conditions sont basées sur les attributs et les propriétés en utilisant le type String ; les correspondances sont partielles.
  1. Définissez la règle de correspondance dans l'interface utilisateur du Centre de gestion :
    • LOBTools\WebContent\config\commerce\price\objectDefinitions\CatalogFilterAttributeReferenceObjectDefinition.def
    • LOBTools\WebContent\config\commerce\price\objectDefinitions\CatalogFilterCatentPropertyChildObjectDefinition.def

    Dans ces fichiers, recherchez le <wcfPropertyDefinition propertyName="operator">.

    Ajoutez le code ci-après.

    <wcfPropertyDefinition propertyName="operator" displayName="${cftCatalogFilterResources.catalogFilterAttributeOperator}" required="true">
    	……
    	// This matching rule only applied to String type property or attribute
    	<PropertyValue displayName="${extCatalogFilterResources.catalogFilterOperatorStringContains}" value="STRING_CONTAINS">
    			<EnablementCondition conditionId="stringCondition" enablementValue="String" propertyName="attrType" />
    	</PropertyValue>	
    </ wcfPropertyDefinition>
  2. Personnalisez le code d'exécution pour prendre en charge la nouvelle règle de correspondance. Le code d'exécution du filtre de catalogue génère une expression de recherche. A partir du filtre de catalogue, la condition est composée dans cette expression. Générez un fragment d'expression spécifique au moteur de recherche pour la nouvelle règle de correspondance.
    Pour faire court :
    1. Créez une classe, telle que com.mycompany.catalogfilter.GetContainsStringExpressionCmdImpl qui implémente l'interface com.ibm.commerce.contract.catalogfilter.command.GetConditionExpressionCmd et étend com.ibm.commerce.command.TaskCommandImpl.
    2. Implémentez la logique de génération de votre expression de condition "contains" dans la méthode performExecute. L'appelant appelle la méthode setCondition pour conditionner les informations et notamment le nom de zone de l'attribut ou de la propriété, la règle de correspondance et les valeurs d'un objet de données de type com.ibm.commerce.contract.catalogfilter.Condition. Fournissez la sortie à l'appelant dans la méthode getExpression (le format est spécifique au moteur de recherche).
    3. En vous aidant de l'instruction SQL suivante, enregistrez l'implémentation de classe dans le registre des commandes :
      insert into CMDREG ("STOREENT_ID", "INTERFACENAME", "DESCRIPTION", "CLASSNAME", "PROPERTIES", "LASTUPDATE", "TARGET", "OPTCOUNTER") 
      values(0, 'com.ibm.commerce.contract.catalogfilter.command.GetConditionExpressionCmd+STRING_CONTAINS', NULL, 'com.mycompany.catalogfilter.GetContainsStringExpressionCmdImpl', NULL, NULL, 'Local', NULL);