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
- Abra HCL Commerce Developer.
-
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:
-
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> -
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:getDatadel 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.Mapy devolver una instancia decom.ibm.commerce.oagis9.datatypes.ExpressionType. En este ejemplo se utiliza el valor predeterminado. - param
- El elemento
paramse utiliza para declarar parámetros que espera el generador de expresiones. Se asigna mediantenameyvalue. 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/Wartermno es una XPath válida. Esta notación se utiliza para representar el valor de los atributosWartermyWartypeen el campo UserData del ejemplo. - Guarde y cierre el archivo.