Personalización del filtro de catálogo: Personalizar reglas de coincidencia

Puede configurar estas reglas de coincidencia para las condiciones de filtro. Las reglas de coincidencia conectan los tipos de datos de las propiedades de entrada de catálogo, o los atributos del diccionario de atributos, utilizando datos de tipo serie, entero y coma flotante. Con la personalización puede añadir reglas de coincidencia adicionales.

Procedimiento

Este procedimiento de ejemplo describe los pasos de alto nivel para crear una regla de coincidencia, contains. Las condiciones se basan en atributos y propiedades que utilizan el tipo String (serie), y las coincidencias son parciales.
  1. Defina la regla de coincidencia en la interfaz de usuario del Centro de gestión:
    • LOBTools\WebContent\config\commerce\price\objectDefinitions\CatalogFilterAttributeReferenceObjectDefinition.def
    • LOBTools\WebContent\config\commerce\price\objectDefinitions\CatalogFilterCatentPropertyChildObjectDefinition.def

    En estos archivos, busque <wcfPropertyDefinition propertyName="operator">.

    Añada el código siguiente:

    <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. Personalice el código de tiempo de ejecución para dar soporte a la nueva regla de coincidencia. El código de ejecución del filtro de catálogo crea una expresión de búsqueda basada en un filtro de catálogo, y la condición se compone en esta expresión. Cree un fragmento de expresión específico del motor de búsqueda para la nueva regla de coincidencia.
    En resumen:
    1. Cree una clase como com.mycompany.catalogfilter.GetContainsStringExpressionCmdImpl que implemente la interfaz com.ibm.commerce.contract.catalogfilter.command.GetConditionExpressionCmd y se amplíe desde com.ibm.commerce.command.TaskCommandImpl.
    2. Implemente la lógica para crear su condición "contiene" con el método performExecute. El emisor de llamadas llama al método setCondition para obtener información de condición que incluye el nombre del atributo o del campo de propiedad, la regla de coincidencia y los valores en un objeto de datos de tipo com.ibm.commerce.contract.catalogfilter.Condition. Proporcione la salida al emisor de la llamada en el método getExpression (el formato es el específico del motor de búsqueda).
    3. Utilizando la siguiente sentencia SQL como guía, registre la implementación de clase en el registro de mandato:
      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);