Deprecated feature

Creación de un generador de expresiones

La etiqueta wcf:getData utiliza un generador de expresiones en un archivo JSP para construir una expresión XPath que el servicio de HCL Commerce utiliza para recuperar datos.

Por qué y cuándo se efectúa esta tarea

Todos los generadores de expresiones se definen en el archivo get-data-config.xml. El get-data-config.xml archivo base para cada HCL Commerce módulo de servicio se encuentra en \LOBTools\WebContent\WEB-INF\config\com.ibm.commerce.component\get-data-config.xml. No puede modificar este archivo directamente. En su lugar, cree la carpeta de extensión \LOBTools\WebContent\WEB-INF\config\com.ibm.commerce.component-ext para almacenar el archivo get-data-config.xml ampliado.

Procedimiento

  1. Abra HCL Commerce Developer.
  2. Todos los nuevos generadores de expresiones deben añadirse a un archivo personalizado get-data-config.xml. No modifique los archivos predeterminados de HCL Commerce. Si aún no ha creado un archivo get-data-config:
    1. En la vista Enterprise Explorer, vaya a LOBTools > WebContent > WEB-INF > config
    2. Pulse con el botón derecho del ratón config y luego pulse Nueva carpeta.
    3. En el Nombre de carpeta, el texto depende de si trabaja con su propio módulo de servicio o bien con un módulo de servicio predeterminado de HCL Commerce:
      • Para los módulos de servicio HCL Commerce, utilice com.ibm.commerce.component-ext. Por ejemplo, com.ibm.commerce.catalog-ext
      • Para sus propios módulos de servicio personalizados, utilice el nombre del módulo de servicio personalizado. No es necesario ningún sufijo "-ext". Por ejemplo, com.mycompany.commerce.tutorialstore
    4. Pulse Finalizar.
    5. Pulse con el botón derecho del ratón en la carpeta nueva y pulse Nuevo > Otros > Simple > Archivo > Siguiente.
    6. En el campo Nombre de archivo, escriba un nombre exclusivo get-data-config.xml.
    7. Pulse Finalizar. Se abre el archivo get-data-config.xml.
    8. Copie los siguientes elementos en el archivo personalizado get-data-config.xml para iniciar el archivo:
      <?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>
      Todo el código del generador de expresiones se añada entre estos códigos.
  3. Si los generadores de expresiones utilizan algún tipo de datos personalizados, debe incluir un elemento <data-type> y <client-facade> para dar instrucciones al generador de expresiones sobre cómo trabajar con los datos. El elemento <data-type> define la clase Java del tipo de datos personalizados y el elemento <client-facade> define la clase y el método para invocar esa clase, con el fin de recuperar el objeto.
    <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. En el editor de archivo, añada uno o más generadores de expresiones. A modo de ejemplo, se proporciona a continuación un generador de expresiones de ejemplo que realiza la búsqueda de catálogo:
    <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>
    
    En la lista siguiente se describe el significado de los elementos XML:
    name
    El nombre del generador de expresiones. La etiqueta wcf:getData del archivo JSP de controlador hace referencia a este nombre.
    data-type-name
    El nombre del tipo de datos con el que se asociará esta definición de generador de expresiones. En el ejemplo, el generador de expresiones se define para una búsqueda que está asociada a CatalogEntry
    class
    El nombre de clase Java completo del generador de expresiones. El valor predeterminado se utiliza en el ejemplo de búsqueda de catálogo.
    method
    El nombre de método del generador de expresiones. Este método debe aceptar un java.util.Map y devolver una instancia de com.ibm.commerce.oagis9.datatypes.ExpressionType. En este ejemplo se utiliza el valor predeterminado.
    param
    El elemento param se utiliza para declarar parámetros que espera el generador de expresiones. Se asigna mediante name y value. Estos nodos secundarios definen un parámetro que se debe pasar al archivo de plantilla de consulta.
    plantilla
    La plantilla de búsqueda utilizada para generar la clave XPath y localizar la sentencia SQL en el archivo de plantilla de consulta.
    accessProfile
    Cada generador de expresiones está asociado a un perfil de acceso específico. Este perfil de acceso, junto con la consulta XPath definida más arriba, identifica de forma exclusiva una consulta en el archivo de plantilla de consulta.
    Nota: La capa del servicio de datos tiene un convenio especializado para UserData en la correlación de búsqueda, ya que /UserData/UserDataField/Warterm no es una XPath válida. Esta notación se utiliza para representar el valor de los atributos Warterm y Wartype en el campo UserData del ejemplo.
  5. Guarde y cierre el archivo.